@trpc/next 11.0.0-next-beta.248 → 11.0.0-next-beta.249
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/app-dir/create-action-hook.d.ts +14 -3
- package/dist/app-dir/create-action-hook.d.ts.map +1 -1
- package/dist/app-dir/create-action-hook.js +7 -4
- package/dist/app-dir/create-action-hook.mjs +7 -4
- package/dist/app-dir/links/nextCache.d.ts +3 -2
- package/dist/app-dir/links/nextCache.d.ts.map +1 -1
- package/dist/app-dir/links/nextCache.js +5 -3
- package/dist/app-dir/links/nextCache.mjs +5 -3
- package/dist/app-dir/links/nextHttp.d.ts +6 -6
- package/dist/app-dir/links/nextHttp.d.ts.map +1 -1
- package/dist/app-dir/server.d.ts +3 -3
- package/dist/app-dir/server.d.ts.map +1 -1
- package/dist/bundle-analysis.json +26 -26
- package/dist/withTRPC.d.ts +8 -7
- package/dist/withTRPC.d.ts.map +1 -1
- package/dist/withTRPC.js +14 -2
- package/dist/withTRPC.mjs +14 -2
- package/package.json +8 -8
- package/src/app-dir/create-action-hook.tsx +40 -10
- package/src/app-dir/links/nextCache.ts +10 -4
- package/src/app-dir/links/nextHttp.ts +18 -15
- package/src/app-dir/server.ts +4 -3
- package/src/withTRPC.tsx +42 -24
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { CreateTRPCClientOptions, TRPCLink } from '@trpc/client';
|
|
2
2
|
import { TRPCClientError } from '@trpc/client';
|
|
3
|
-
import type {
|
|
3
|
+
import type { TransformerOptions } from '@trpc/client/unstable-internals';
|
|
4
|
+
import type { inferRootTypes, MaybePromise, ProcedureOptions, Simplify, TRPCInferrable, TypeError } from '@trpc/server/unstable-core-do-not-import';
|
|
4
5
|
import type { TRPCActionHandler } from './server';
|
|
5
6
|
import type { ActionHandlerDef } from './shared';
|
|
6
7
|
type MutationArgs<TDef extends ActionHandlerDef> = TDef['input'] extends void ? [input?: undefined | void, opts?: ProcedureOptions] : [input: FormData | TDef['input'], opts?: ProcedureOptions];
|
|
@@ -29,11 +30,21 @@ interface UseTRPCActionLoadingResult<TDef extends ActionHandlerDef> extends UseT
|
|
|
29
30
|
status: 'loading';
|
|
30
31
|
}
|
|
31
32
|
export type UseTRPCActionResult<TDef extends ActionHandlerDef> = UseTRPCActionErrorResult<TDef> | UseTRPCActionIdleResult<TDef> | UseTRPCActionLoadingResult<TDef> | UseTRPCActionSuccessResult<TDef>;
|
|
32
|
-
export declare function experimental_serverActionLink<
|
|
33
|
+
export declare function experimental_serverActionLink<TInferrable extends TRPCInferrable>(...args: TRPCInferrable extends TInferrable ? [
|
|
34
|
+
TypeError<'Generic parameter missing in `experimental_createActionHook<HERE>()` or experimental_serverActionLink<HERE>()'>
|
|
35
|
+
] : inferRootTypes<TInferrable>['transformer'] extends true ? [
|
|
36
|
+
opts: TransformerOptions<{
|
|
37
|
+
transformer: true;
|
|
38
|
+
}>
|
|
39
|
+
] : [
|
|
40
|
+
opts?: TransformerOptions<{
|
|
41
|
+
transformer: false;
|
|
42
|
+
}>
|
|
43
|
+
]): TRPCLink<TInferrable>;
|
|
33
44
|
interface UseTRPCActionOptions<TDef extends ActionHandlerDef> {
|
|
34
45
|
onSuccess?: (result: TDef['output']) => MaybePromise<void> | void;
|
|
35
46
|
onError?: (result: TRPCClientError<TDef['errorShape']>) => MaybePromise<void>;
|
|
36
47
|
}
|
|
37
|
-
export declare function experimental_createActionHook<
|
|
48
|
+
export declare function experimental_createActionHook<TInferrable extends TRPCInferrable>(opts: TRPCInferrable extends TInferrable ? TypeError<'Generic parameter missing in `experimental_createActionHook<HERE>()`'> : CreateTRPCClientOptions<TInferrable>): <TDef extends ActionHandlerDef>(handler: TRPCActionHandler<TDef>, useActionOpts?: UseTRPCActionOptions<Simplify<TDef>> | undefined) => UseTRPCActionResult<TDef>;
|
|
38
49
|
export {};
|
|
39
50
|
//# sourceMappingURL=create-action-hook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-action-hook.d.ts","sourceRoot":"","sources":["../../src/app-dir/create-action-hook.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,QAAQ,EAET,MAAM,cAAc,CAAC;AACtB,OAAO,EAA2B,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"create-action-hook.d.ts","sourceRoot":"","sources":["../../src/app-dir/create-action-hook.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var client = require('@trpc/client');
|
|
4
|
+
var unstableInternals = require('@trpc/client/unstable-internals');
|
|
4
5
|
var observable = require('@trpc/server/observable');
|
|
5
6
|
var unstableCoreDoNotImport = require('@trpc/server/unstable-core-do-not-import');
|
|
6
7
|
var React = require('react');
|
|
7
8
|
var shared = require('./shared.js');
|
|
8
9
|
|
|
9
10
|
// ts-prune-ignore-next
|
|
10
|
-
function experimental_serverActionLink() {
|
|
11
|
-
|
|
11
|
+
function experimental_serverActionLink(...args) {
|
|
12
|
+
const [opts] = args;
|
|
13
|
+
const transformer = unstableInternals.getTransformer(opts?.transformer);
|
|
14
|
+
return ()=>({ op })=>observable.observable((observer)=>{
|
|
12
15
|
const context = op.context;
|
|
13
|
-
context._action(shared.isFormData(op.input) ? op.input :
|
|
14
|
-
const transformed = unstableCoreDoNotImport.transformResult(data,
|
|
16
|
+
context._action(shared.isFormData(op.input) ? op.input : transformer.input.serialize(op.input)).then((data)=>{
|
|
17
|
+
const transformed = unstableCoreDoNotImport.transformResult(data, transformer.output);
|
|
15
18
|
if (!transformed.ok) {
|
|
16
19
|
observer.error(client.TRPCClientError.from(transformed.error, {}));
|
|
17
20
|
return;
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { TRPCClientError, createTRPCUntypedClient } from '@trpc/client';
|
|
2
|
+
import { getTransformer } from '@trpc/client/unstable-internals';
|
|
2
3
|
import { observable } from '@trpc/server/observable';
|
|
3
4
|
import { transformResult } from '@trpc/server/unstable-core-do-not-import';
|
|
4
5
|
import { useRef, useState, useEffect, useCallback, useMemo } from 'react';
|
|
5
6
|
import { isFormData } from './shared.mjs';
|
|
6
7
|
|
|
7
8
|
// ts-prune-ignore-next
|
|
8
|
-
function experimental_serverActionLink() {
|
|
9
|
-
|
|
9
|
+
function experimental_serverActionLink(...args) {
|
|
10
|
+
const [opts] = args;
|
|
11
|
+
const transformer = getTransformer(opts?.transformer);
|
|
12
|
+
return ()=>({ op })=>observable((observer)=>{
|
|
10
13
|
const context = op.context;
|
|
11
|
-
context._action(isFormData(op.input) ? op.input :
|
|
12
|
-
const transformed = transformResult(data,
|
|
14
|
+
context._action(isFormData(op.input) ? op.input : transformer.input.serialize(op.input)).then((data)=>{
|
|
15
|
+
const transformed = transformResult(data, transformer.output);
|
|
13
16
|
if (!transformed.ok) {
|
|
14
17
|
observer.error(TRPCClientError.from(transformed.error, {}));
|
|
15
18
|
return;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { TRPCLink } from '@trpc/client';
|
|
2
|
-
import
|
|
2
|
+
import { type TransformerOptions } from '@trpc/client/unstable-internals';
|
|
3
|
+
import type { AnyRouter, inferRootTypes, inferRouterContext } from '@trpc/server/unstable-core-do-not-import';
|
|
3
4
|
type NextCacheLinkOptions<TRouter extends AnyRouter> = {
|
|
4
5
|
router: TRouter;
|
|
5
6
|
createContext: () => Promise<inferRouterContext<TRouter>>;
|
|
6
7
|
/** how many seconds the cache should hold before revalidating */
|
|
7
8
|
revalidate?: number | false;
|
|
8
|
-
}
|
|
9
|
+
} & TransformerOptions<inferRootTypes<TRouter>>;
|
|
9
10
|
export declare function experimental_nextCacheLink<TRouter extends AnyRouter>(opts: NextCacheLinkOptions<TRouter>): TRPCLink<TRouter>;
|
|
10
11
|
export {};
|
|
11
12
|
//# sourceMappingURL=nextCache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextCache.d.ts","sourceRoot":"","sources":["../../../src/app-dir/links/nextCache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"nextCache.d.ts","sourceRoot":"","sources":["../../../src/app-dir/links/nextCache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,kBAAkB,EACnB,MAAM,0CAA0C,CAAC;AAKlD,KAAK,oBAAoB,CAAC,OAAO,SAAS,SAAS,IAAI;IACrD,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC7B,GAAG,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;AAGhD,wBAAgB,0BAA0B,CAAC,OAAO,SAAS,SAAS,EAClE,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAClC,QAAQ,CAAC,OAAO,CAAC,CA0DnB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var client = require('@trpc/client');
|
|
4
|
+
var unstableInternals = require('@trpc/client/unstable-internals');
|
|
4
5
|
var observable = require('@trpc/server/observable');
|
|
5
6
|
var unstableCoreDoNotImport = require('@trpc/server/unstable-core-do-not-import');
|
|
6
7
|
var cache = require('next/cache');
|
|
@@ -9,7 +10,8 @@ var shared = require('../shared.js');
|
|
|
9
10
|
// import "server-only";
|
|
10
11
|
// ts-prune-ignore-next
|
|
11
12
|
function experimental_nextCacheLink(opts) {
|
|
12
|
-
|
|
13
|
+
const transformer = unstableInternals.getTransformer(opts.transformer);
|
|
14
|
+
return ()=>({ op })=>observable.observable((observer)=>{
|
|
13
15
|
const { path , input , type , context } = op;
|
|
14
16
|
const cacheTag = shared.generateCacheTag(path, input);
|
|
15
17
|
// Let per-request revalidate override global revalidate
|
|
@@ -28,7 +30,7 @@ function experimental_nextCacheLink(opts) {
|
|
|
28
30
|
type
|
|
29
31
|
});
|
|
30
32
|
// We need to serialize cause the cache only accepts JSON
|
|
31
|
-
return
|
|
33
|
+
return transformer.input.serialize(procedureResult);
|
|
32
34
|
};
|
|
33
35
|
if (type === 'query') {
|
|
34
36
|
return cache.unstable_cache(callProc, path.split('.'), {
|
|
@@ -43,7 +45,7 @@ function experimental_nextCacheLink(opts) {
|
|
|
43
45
|
observer.error(client.TRPCClientError.from(cause));
|
|
44
46
|
});
|
|
45
47
|
promise.then((data)=>{
|
|
46
|
-
const transformedResult =
|
|
48
|
+
const transformedResult = transformer.output.deserialize(data);
|
|
47
49
|
observer.next({
|
|
48
50
|
result: {
|
|
49
51
|
data: transformedResult
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TRPCClientError } from '@trpc/client';
|
|
2
|
+
import { getTransformer } from '@trpc/client/unstable-internals';
|
|
2
3
|
import { observable } from '@trpc/server/observable';
|
|
3
4
|
import { callProcedure } from '@trpc/server/unstable-core-do-not-import';
|
|
4
5
|
import { unstable_cache } from 'next/cache';
|
|
@@ -7,7 +8,8 @@ import { generateCacheTag } from '../shared.mjs';
|
|
|
7
8
|
// import "server-only";
|
|
8
9
|
// ts-prune-ignore-next
|
|
9
10
|
function experimental_nextCacheLink(opts) {
|
|
10
|
-
|
|
11
|
+
const transformer = getTransformer(opts.transformer);
|
|
12
|
+
return ()=>({ op })=>observable((observer)=>{
|
|
11
13
|
const { path , input , type , context } = op;
|
|
12
14
|
const cacheTag = generateCacheTag(path, input);
|
|
13
15
|
// Let per-request revalidate override global revalidate
|
|
@@ -26,7 +28,7 @@ function experimental_nextCacheLink(opts) {
|
|
|
26
28
|
type
|
|
27
29
|
});
|
|
28
30
|
// We need to serialize cause the cache only accepts JSON
|
|
29
|
-
return
|
|
31
|
+
return transformer.input.serialize(procedureResult);
|
|
30
32
|
};
|
|
31
33
|
if (type === 'query') {
|
|
32
34
|
return unstable_cache(callProc, path.split('.'), {
|
|
@@ -41,7 +43,7 @@ function experimental_nextCacheLink(opts) {
|
|
|
41
43
|
observer.error(TRPCClientError.from(cause));
|
|
42
44
|
});
|
|
43
45
|
promise.then((data)=>{
|
|
44
|
-
const transformedResult =
|
|
46
|
+
const transformedResult = transformer.output.deserialize(data);
|
|
45
47
|
observer.next({
|
|
46
48
|
result: {
|
|
47
49
|
data: transformedResult
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import type { HTTPBatchLinkOptions, HTTPLinkOptions, TRPCLink } from '@trpc/client';
|
|
2
|
-
import type { AnyRouter } from '@trpc/server/unstable-core-do-not-import';
|
|
2
|
+
import type { AnyRootTypes, AnyRouter } from '@trpc/server/unstable-core-do-not-import';
|
|
3
3
|
interface NextLinkBaseOptions {
|
|
4
4
|
revalidate?: number | false;
|
|
5
5
|
batch?: boolean;
|
|
6
6
|
}
|
|
7
|
-
|
|
7
|
+
type NextLinkSingleOptions<TRoot extends AnyRootTypes> = NextLinkBaseOptions & Omit<HTTPLinkOptions<TRoot>, 'fetch'> & {
|
|
8
8
|
batch?: false;
|
|
9
|
-
}
|
|
10
|
-
|
|
9
|
+
};
|
|
10
|
+
type NextLinkBatchOptions<TRoot extends AnyRootTypes> = NextLinkBaseOptions & Omit<HTTPBatchLinkOptions<TRoot>, 'fetch'> & {
|
|
11
11
|
batch: true;
|
|
12
|
-
}
|
|
13
|
-
export declare function experimental_nextHttpLink<TRouter extends AnyRouter>(opts: NextLinkSingleOptions | NextLinkBatchOptions): TRPCLink<TRouter>;
|
|
12
|
+
};
|
|
13
|
+
export declare function experimental_nextHttpLink<TRouter extends AnyRouter>(opts: NextLinkSingleOptions<TRouter['_def']['_config']['$types']> | NextLinkBatchOptions<TRouter['_def']['_config']['$types']>): TRPCLink<TRouter>;
|
|
14
14
|
export {};
|
|
15
15
|
//# sourceMappingURL=nextHttp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextHttp.d.ts","sourceRoot":"","sources":["../../../src/app-dir/links/nextHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,QAAQ,EACT,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"nextHttp.d.ts","sourceRoot":"","sources":["../../../src/app-dir/links/nextHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,QAAQ,EACT,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACV,MAAM,0CAA0C,CAAC;AAGlD,UAAU,mBAAmB;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,KAAK,qBAAqB,CAAC,KAAK,SAAS,YAAY,IAAI,mBAAmB,GAC1E,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG;IACtC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEJ,KAAK,oBAAoB,CAAC,KAAK,SAAS,YAAY,IAAI,mBAAmB,GACzE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG;IAC3C,KAAK,EAAE,IAAI,CAAC;CACb,CAAC;AAGJ,wBAAgB,yBAAyB,CAAC,OAAO,SAAS,SAAS,EACjE,IAAI,EACA,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,GAC3D,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,GAC7D,QAAQ,CAAC,OAAO,CAAC,CAyCnB"}
|
package/dist/app-dir/server.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AnyProcedure, AnyRootTypes, AnyRouter, inferProcedureInput, MaybePromise, RootConfig, Simplify, TRPCResponse } from '@trpc/server/unstable-core-do-not-import';
|
|
1
|
+
import type { AnyProcedure, AnyRootTypes, AnyRouter, inferProcedureInput, inferRootTypes, MaybePromise, RootConfig, Simplify, TRPCResponse } from '@trpc/server/unstable-core-do-not-import';
|
|
2
2
|
import type { ActionHandlerDef, CreateTRPCNextAppRouterOptions, inferActionDef } from './shared';
|
|
3
3
|
import type { NextAppDirDecorateRouterRecord } from './types';
|
|
4
4
|
export declare function experimental_createTRPCNextAppDirServer<TRouter extends AnyRouter>(opts: CreateTRPCNextAppRouterOptions<TRouter>): NextAppDirDecorateRouterRecord<TRouter["_def"]["_config"]["$types"], TRouter["_def"]["record"]>;
|
|
@@ -9,7 +9,7 @@ export type TRPCActionHandler<TDef extends ActionHandlerDef> = (input: FormData
|
|
|
9
9
|
export declare function experimental_createServerActionHandler<TInstance extends {
|
|
10
10
|
_config: RootConfig<AnyRootTypes>;
|
|
11
11
|
}>(t: TInstance, opts: {
|
|
12
|
-
createContext: () => MaybePromise<TInstance['
|
|
12
|
+
createContext: () => MaybePromise<inferRootTypes<TInstance>['ctx']>;
|
|
13
13
|
/**
|
|
14
14
|
* Transform form data to a `Record` before passing it to the procedure
|
|
15
15
|
* @default true
|
|
@@ -18,7 +18,7 @@ export declare function experimental_createServerActionHandler<TInstance extends
|
|
|
18
18
|
}): <TProc extends AnyProcedure>(proc: TProc) => TRPCActionHandler<{
|
|
19
19
|
input: inferProcedureInput<TProc>;
|
|
20
20
|
output: TProc["_def"]["_output_out"];
|
|
21
|
-
errorShape: TInstance["
|
|
21
|
+
errorShape: inferRootTypes<TInstance>["errorShape"];
|
|
22
22
|
}>;
|
|
23
23
|
export declare function experimental_revalidateEndpoint(req: Request): Promise<Response>;
|
|
24
24
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/app-dir/server.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,YAAY,EACb,MAAM,0CAA0C,CAAC;AAWlD,OAAO,KAAK,EACV,gBAAgB,EAChB,8BAA8B,EAC9B,cAAc,EACf,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,SAAS,CAAC;AAG9D,wBAAgB,uCAAuC,CACrD,OAAO,SAAS,SAAS,EACzB,IAAI,EAAE,8BAA8B,CAAC,OAAO,CAAC,mGA2B9C;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,IAAI,SAAS,gBAAgB,IAAI,CAC7D,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAC5B,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAE/D,wBAAgB,sCAAsC,CACpD,SAAS,SAAS;IAChB,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;CACnC,EAED,CAAC,EAAE,SAAS,EACZ,IAAI,EAAE;IACJ,aAAa,EAAE,MAAM,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/app-dir/server.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,YAAY,EACb,MAAM,0CAA0C,CAAC;AAWlD,OAAO,KAAK,EACV,gBAAgB,EAChB,8BAA8B,EAC9B,cAAc,EACf,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,SAAS,CAAC;AAG9D,wBAAgB,uCAAuC,CACrD,OAAO,SAAS,SAAS,EACzB,IAAI,EAAE,8BAA8B,CAAC,OAAO,CAAC,mGA2B9C;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,IAAI,SAAS,gBAAgB,IAAI,CAC7D,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAC5B,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAE/D,wBAAgB,sCAAsC,CACpD,SAAS,SAAS;IAChB,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;CACnC,EAED,CAAC,EAAE,SAAS,EACZ,IAAI,EAAE;IACJ,aAAa,EAAE,MAAM,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;;;;GAoEF;AAGD,wBAAsB,+BAA+B,CAAC,GAAG,EAAE,OAAO,qBAiBjE"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
-
"bundleSize":
|
|
3
|
-
"bundleOrigSize":
|
|
4
|
-
"bundleReduction":
|
|
2
|
+
"bundleSize": 22745,
|
|
3
|
+
"bundleOrigSize": 34887,
|
|
4
|
+
"bundleReduction": 34.8,
|
|
5
5
|
"modules": [
|
|
6
6
|
{
|
|
7
7
|
"id": "/src/withTRPC.tsx",
|
|
8
|
-
"size":
|
|
9
|
-
"origSize":
|
|
8
|
+
"size": 8219,
|
|
9
|
+
"origSize": 9921,
|
|
10
10
|
"renderedExports": [
|
|
11
11
|
"withTRPC"
|
|
12
12
|
],
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
"/src/index.ts",
|
|
16
16
|
"/src/createTRPCNext.tsx"
|
|
17
17
|
],
|
|
18
|
-
"percent":
|
|
19
|
-
"reduction": 16
|
|
18
|
+
"percent": 36.14,
|
|
19
|
+
"reduction": 17.16
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
"id": "/src/app-dir/server.ts",
|
|
23
23
|
"size": 3822,
|
|
24
|
-
"origSize":
|
|
24
|
+
"origSize": 4911,
|
|
25
25
|
"renderedExports": [
|
|
26
26
|
"experimental_createTRPCNextAppDirServer",
|
|
27
27
|
"experimental_createServerActionHandler",
|
|
@@ -29,13 +29,13 @@
|
|
|
29
29
|
],
|
|
30
30
|
"removedExports": [],
|
|
31
31
|
"dependents": [],
|
|
32
|
-
"percent":
|
|
33
|
-
"reduction": 22.
|
|
32
|
+
"percent": 16.8,
|
|
33
|
+
"reduction": 22.17
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
"id": "/src/app-dir/create-action-hook.tsx",
|
|
37
|
-
"size":
|
|
38
|
-
"origSize":
|
|
37
|
+
"size": 3436,
|
|
38
|
+
"origSize": 6740,
|
|
39
39
|
"renderedExports": [
|
|
40
40
|
"experimental_serverActionLink",
|
|
41
41
|
"experimental_createActionHook"
|
|
@@ -44,20 +44,20 @@
|
|
|
44
44
|
"dependents": [
|
|
45
45
|
"/src/app-dir/client.ts"
|
|
46
46
|
],
|
|
47
|
-
"percent": 15.
|
|
48
|
-
"reduction":
|
|
47
|
+
"percent": 15.11,
|
|
48
|
+
"reduction": 49.02
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
"id": "/src/app-dir/links/nextCache.ts",
|
|
52
|
-
"size":
|
|
53
|
-
"origSize":
|
|
52
|
+
"size": 2571,
|
|
53
|
+
"origSize": 3040,
|
|
54
54
|
"renderedExports": [
|
|
55
55
|
"experimental_nextCacheLink"
|
|
56
56
|
],
|
|
57
57
|
"removedExports": [],
|
|
58
58
|
"dependents": [],
|
|
59
|
-
"percent": 11.
|
|
60
|
-
"reduction":
|
|
59
|
+
"percent": 11.3,
|
|
60
|
+
"reduction": 15.43
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
"id": "/src/app-dir/client.ts",
|
|
@@ -68,20 +68,20 @@
|
|
|
68
68
|
],
|
|
69
69
|
"removedExports": [],
|
|
70
70
|
"dependents": [],
|
|
71
|
-
"percent": 5.
|
|
71
|
+
"percent": 5.62,
|
|
72
72
|
"reduction": 32.47
|
|
73
73
|
},
|
|
74
74
|
{
|
|
75
75
|
"id": "/src/app-dir/links/nextHttp.ts",
|
|
76
76
|
"size": 1192,
|
|
77
|
-
"origSize":
|
|
77
|
+
"origSize": 1973,
|
|
78
78
|
"renderedExports": [
|
|
79
79
|
"experimental_nextHttpLink"
|
|
80
80
|
],
|
|
81
81
|
"removedExports": [],
|
|
82
82
|
"dependents": [],
|
|
83
|
-
"percent": 5.
|
|
84
|
-
"reduction":
|
|
83
|
+
"percent": 5.24,
|
|
84
|
+
"reduction": 39.58
|
|
85
85
|
},
|
|
86
86
|
{
|
|
87
87
|
"id": "/src/createTRPCNext.tsx",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"dependents": [
|
|
95
95
|
"/src/index.ts"
|
|
96
96
|
],
|
|
97
|
-
"percent": 4.
|
|
97
|
+
"percent": 4.72,
|
|
98
98
|
"reduction": 60.23
|
|
99
99
|
},
|
|
100
100
|
{
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
"dependents": [
|
|
109
109
|
"/src/app-dir/server.ts"
|
|
110
110
|
],
|
|
111
|
-
"percent": 3.
|
|
111
|
+
"percent": 3.6,
|
|
112
112
|
"reduction": 0.97
|
|
113
113
|
},
|
|
114
114
|
{
|
|
@@ -124,11 +124,11 @@
|
|
|
124
124
|
],
|
|
125
125
|
"dependents": [
|
|
126
126
|
"/src/app-dir/server.ts",
|
|
127
|
-
"/src/app-dir/links/nextHttp.ts",
|
|
128
127
|
"/src/app-dir/links/nextCache.ts",
|
|
128
|
+
"/src/app-dir/links/nextHttp.ts",
|
|
129
129
|
"/src/app-dir/create-action-hook.tsx"
|
|
130
130
|
],
|
|
131
|
-
"percent": 1.
|
|
131
|
+
"percent": 1.47,
|
|
132
132
|
"reduction": 88.13
|
|
133
133
|
},
|
|
134
134
|
{
|
package/dist/withTRPC.d.ts
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import type { CreateTRPCClientOptions } from '@trpc/client';
|
|
2
|
+
import { type TransformerOptions } from '@trpc/client/unstable-internals';
|
|
2
3
|
import type { TRPCClientError } from '@trpc/react-query';
|
|
3
4
|
import type { CreateTRPCReactOptions, CreateTRPCReactQueryClientConfig } from '@trpc/react-query/shared';
|
|
4
|
-
import type { AnyRouter, ResponseMeta } from '@trpc/server/unstable-core-do-not-import';
|
|
5
|
+
import type { AnyRouter, inferRootTypes, ResponseMeta } from '@trpc/server/unstable-core-do-not-import';
|
|
5
6
|
import type { NextComponentType, NextPageContext } from 'next/dist/shared/lib/utils';
|
|
6
7
|
export type WithTRPCConfig<TRouter extends AnyRouter> = CreateTRPCClientOptions<TRouter> & CreateTRPCReactQueryClientConfig & {
|
|
7
8
|
abortOnUnmount?: boolean;
|
|
8
9
|
};
|
|
9
|
-
|
|
10
|
+
type WithTRPCOptions<TRouter extends AnyRouter> = CreateTRPCReactOptions<TRouter> & {
|
|
10
11
|
config: (info: {
|
|
11
12
|
ctx?: NextPageContext;
|
|
12
13
|
}) => WithTRPCConfig<TRouter>;
|
|
13
|
-
}
|
|
14
|
-
export
|
|
14
|
+
} & TransformerOptions<inferRootTypes<TRouter>>;
|
|
15
|
+
export type WithTRPCSSROptions<TRouter extends AnyRouter> = WithTRPCOptions<TRouter> & {
|
|
15
16
|
ssr: true | ((opts: {
|
|
16
17
|
ctx: NextPageContext;
|
|
17
18
|
}) => boolean | Promise<boolean>);
|
|
@@ -19,10 +20,10 @@ export interface WithTRPCSSROptions<TRouter extends AnyRouter> extends WithTRPCO
|
|
|
19
20
|
ctx: NextPageContext;
|
|
20
21
|
clientErrors: TRPCClientError<TRouter>[];
|
|
21
22
|
}) => ResponseMeta;
|
|
22
|
-
}
|
|
23
|
-
export
|
|
23
|
+
};
|
|
24
|
+
export type WithTRPCNoSSROptions<TRouter extends AnyRouter> = WithTRPCOptions<TRouter> & {
|
|
24
25
|
ssr?: false;
|
|
25
|
-
}
|
|
26
|
+
};
|
|
26
27
|
export declare function withTRPC<TRouter extends AnyRouter, TSSRContext extends NextPageContext = NextPageContext>(opts: WithTRPCNoSSROptions<TRouter> | WithTRPCSSROptions<TRouter>): (AppOrPage: NextComponentType<any, any, any>) => NextComponentType;
|
|
27
28
|
export {};
|
|
28
29
|
//# 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":"AAUA,OAAO,KAAK,EAAE,uBAAuB,EAAqB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"withTRPC.d.ts","sourceRoot":"","sources":["../src/withTRPC.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,uBAAuB,EAAqB,MAAM,cAAc,CAAC;AAG/E,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,mBAAmB,CAAC;AAC9E,OAAO,KAAK,EACV,sBAAsB,EACtB,gCAAgC,EACjC,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EACV,SAAS,EAET,cAAc,EAEd,YAAY,EACb,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAGV,iBAAiB,EACjB,eAAe,EAChB,MAAM,4BAA4B,CAAC;AA0BpC,MAAM,MAAM,cAAc,CAAC,OAAO,SAAS,SAAS,IAClD,uBAAuB,CAAC,OAAO,CAAC,GAC9B,gCAAgC,GAAG;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEN,KAAK,eAAe,CAAC,OAAO,SAAS,SAAS,IAC5C,sBAAsB,CAAC,OAAO,CAAC,GAAG;IAChC,MAAM,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,CAAC,EAAE,eAAe,CAAA;KAAE,KAAK,cAAc,CAAC,OAAO,CAAC,CAAC;CACtE,GAAG,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;AAElD,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,SAAS,IACtD,eAAe,CAAC,OAAO,CAAC,GAAG;IACzB,GAAG,EACC,IAAI,GACJ,CAAC,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,eAAe,CAAA;KAAE,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,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,CAAC;AAEJ,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,SAAS,IACxD,eAAe,CAAC,OAAO,CAAC,GAAG;IACzB,GAAG,CAAC,EAAE,KAAK,CAAC;CACb,CAAC;AAEJ,wBAAgB,QAAQ,CACtB,OAAO,SAAS,SAAS,EACzB,WAAW,SAAS,eAAe,GAAG,eAAe,EACrD,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,eAa9C,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,iBAAiB,CA2MxE"}
|
package/dist/withTRPC.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var reactQuery = require('@tanstack/react-query');
|
|
4
4
|
var client = require('@trpc/client');
|
|
5
|
+
var unstableInternals = require('@trpc/client/unstable-internals');
|
|
5
6
|
var shared = require('@trpc/react-query/shared');
|
|
6
7
|
var React = require('react');
|
|
7
8
|
|
|
@@ -25,6 +26,7 @@ function transformQueryOrMutationCacheErrors(result) {
|
|
|
25
26
|
}
|
|
26
27
|
function withTRPC(opts) {
|
|
27
28
|
const { config: getClientConfig } = opts;
|
|
29
|
+
const transformer = unstableInternals.getTransformer(opts.transformer);
|
|
28
30
|
return (AppOrPage)=>{
|
|
29
31
|
const trpc = shared.createRootHooks(opts);
|
|
30
32
|
const WithTRPC = (props)=>{
|
|
@@ -45,7 +47,17 @@ function withTRPC(opts) {
|
|
|
45
47
|
});
|
|
46
48
|
const { queryClient , trpcClient , ssrState , ssrContext } = prepassProps;
|
|
47
49
|
// allow normal components to be wrapped, not just app/pages
|
|
48
|
-
const
|
|
50
|
+
const trpcState = props.pageProps?.trpcState;
|
|
51
|
+
const hydratedState = React.useMemo(()=>{
|
|
52
|
+
if (!trpcState) {
|
|
53
|
+
return trpcState;
|
|
54
|
+
}
|
|
55
|
+
return transformer.input.deserialize(trpcState);
|
|
56
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
57
|
+
}, [
|
|
58
|
+
trpcState,
|
|
59
|
+
trpcClient
|
|
60
|
+
]);
|
|
49
61
|
return /*#__PURE__*/ React.createElement(trpc.Provider, {
|
|
50
62
|
abortOnUnmount: prepassProps.abortOnUnmount ?? false,
|
|
51
63
|
client: trpcClient,
|
|
@@ -145,7 +157,7 @@ function withTRPC(opts) {
|
|
|
145
157
|
mutations: dehydratedCache.mutations.map(transformQueryOrMutationCacheErrors)
|
|
146
158
|
};
|
|
147
159
|
// dehydrate query client's state and add it to the props
|
|
148
|
-
pageProps['trpcState'] =
|
|
160
|
+
pageProps['trpcState'] = transformer.input.serialize(dehydratedCacheWithErrors);
|
|
149
161
|
const appTreeProps = getAppTreeProps(pageProps);
|
|
150
162
|
if ('responseMeta' in opts) {
|
|
151
163
|
const meta = opts.responseMeta?.({
|
package/dist/withTRPC.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { dehydrate, QueryClientProvider, HydrationBoundary } from '@tanstack/react-query';
|
|
2
2
|
import { createTRPCUntypedClient } from '@trpc/client';
|
|
3
|
+
import { getTransformer } from '@trpc/client/unstable-internals';
|
|
3
4
|
import { createRootHooks, getQueryClient } from '@trpc/react-query/shared';
|
|
4
5
|
import React, { createElement, useState } from 'react';
|
|
5
6
|
|
|
@@ -23,6 +24,7 @@ function transformQueryOrMutationCacheErrors(result) {
|
|
|
23
24
|
}
|
|
24
25
|
function withTRPC(opts) {
|
|
25
26
|
const { config: getClientConfig } = opts;
|
|
27
|
+
const transformer = getTransformer(opts.transformer);
|
|
26
28
|
return (AppOrPage)=>{
|
|
27
29
|
const trpc = createRootHooks(opts);
|
|
28
30
|
const WithTRPC = (props)=>{
|
|
@@ -43,7 +45,17 @@ function withTRPC(opts) {
|
|
|
43
45
|
});
|
|
44
46
|
const { queryClient , trpcClient , ssrState , ssrContext } = prepassProps;
|
|
45
47
|
// allow normal components to be wrapped, not just app/pages
|
|
46
|
-
const
|
|
48
|
+
const trpcState = props.pageProps?.trpcState;
|
|
49
|
+
const hydratedState = React.useMemo(()=>{
|
|
50
|
+
if (!trpcState) {
|
|
51
|
+
return trpcState;
|
|
52
|
+
}
|
|
53
|
+
return transformer.input.deserialize(trpcState);
|
|
54
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
55
|
+
}, [
|
|
56
|
+
trpcState,
|
|
57
|
+
trpcClient
|
|
58
|
+
]);
|
|
47
59
|
return /*#__PURE__*/ React.createElement(trpc.Provider, {
|
|
48
60
|
abortOnUnmount: prepassProps.abortOnUnmount ?? false,
|
|
49
61
|
client: trpcClient,
|
|
@@ -143,7 +155,7 @@ function withTRPC(opts) {
|
|
|
143
155
|
mutations: dehydratedCache.mutations.map(transformQueryOrMutationCacheErrors)
|
|
144
156
|
};
|
|
145
157
|
// dehydrate query client's state and add it to the props
|
|
146
|
-
pageProps['trpcState'] =
|
|
158
|
+
pageProps['trpcState'] = transformer.input.serialize(dehydratedCacheWithErrors);
|
|
147
159
|
const appTreeProps = getAppTreeProps(pageProps);
|
|
148
160
|
if ('responseMeta' in opts) {
|
|
149
161
|
const meta = opts.responseMeta?.({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trpc/next",
|
|
3
|
-
"version": "11.0.0-next-beta.
|
|
3
|
+
"version": "11.0.0-next-beta.249+53c90b2f6",
|
|
4
4
|
"description": "The tRPC Next.js library",
|
|
5
5
|
"author": "KATT",
|
|
6
6
|
"license": "MIT",
|
|
@@ -67,9 +67,9 @@
|
|
|
67
67
|
],
|
|
68
68
|
"peerDependencies": {
|
|
69
69
|
"@tanstack/react-query": "^5.0.0",
|
|
70
|
-
"@trpc/client": "11.0.0-next-beta.
|
|
71
|
-
"@trpc/react-query": "11.0.0-next-beta.
|
|
72
|
-
"@trpc/server": "11.0.0-next-beta.
|
|
70
|
+
"@trpc/client": "11.0.0-next-beta.249+53c90b2f6",
|
|
71
|
+
"@trpc/react-query": "11.0.0-next-beta.249+53c90b2f6",
|
|
72
|
+
"@trpc/server": "11.0.0-next-beta.249+53c90b2f6",
|
|
73
73
|
"next": "*",
|
|
74
74
|
"react": ">=16.8.0",
|
|
75
75
|
"react-dom": ">=16.8.0"
|
|
@@ -84,9 +84,9 @@
|
|
|
84
84
|
},
|
|
85
85
|
"devDependencies": {
|
|
86
86
|
"@tanstack/react-query": "^5.0.0",
|
|
87
|
-
"@trpc/client": "11.0.0-next-beta.
|
|
88
|
-
"@trpc/react-query": "11.0.0-next-beta.
|
|
89
|
-
"@trpc/server": "11.0.0-next-beta.
|
|
87
|
+
"@trpc/client": "11.0.0-next-beta.249+53c90b2f6",
|
|
88
|
+
"@trpc/react-query": "11.0.0-next-beta.249+53c90b2f6",
|
|
89
|
+
"@trpc/server": "11.0.0-next-beta.249+53c90b2f6",
|
|
90
90
|
"@types/express": "^4.17.17",
|
|
91
91
|
"@types/node": "^20.10.0",
|
|
92
92
|
"@types/react": "^18.2.33",
|
|
@@ -106,5 +106,5 @@
|
|
|
106
106
|
"funding": [
|
|
107
107
|
"https://trpc.io/sponsor"
|
|
108
108
|
],
|
|
109
|
-
"gitHead": "
|
|
109
|
+
"gitHead": "53c90b2f66f002e3797a043899f0c9fe34dededb"
|
|
110
110
|
}
|
|
@@ -4,12 +4,19 @@ import type {
|
|
|
4
4
|
TRPCRequestOptions,
|
|
5
5
|
} from '@trpc/client';
|
|
6
6
|
import { createTRPCUntypedClient, TRPCClientError } from '@trpc/client';
|
|
7
|
+
import type {
|
|
8
|
+
CoercedTransformerParameters,
|
|
9
|
+
TransformerOptions,
|
|
10
|
+
} from '@trpc/client/unstable-internals';
|
|
11
|
+
import { getTransformer } from '@trpc/client/unstable-internals';
|
|
7
12
|
import { observable } from '@trpc/server/observable';
|
|
8
13
|
import type {
|
|
9
|
-
|
|
14
|
+
inferRootTypes,
|
|
10
15
|
MaybePromise,
|
|
11
16
|
ProcedureOptions,
|
|
12
17
|
Simplify,
|
|
18
|
+
TRPCInferrable,
|
|
19
|
+
TypeError,
|
|
13
20
|
} from '@trpc/server/unstable-core-do-not-import';
|
|
14
21
|
import { transformResult } from '@trpc/server/unstable-core-do-not-import';
|
|
15
22
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
@@ -67,9 +74,27 @@ type ActionContext = {
|
|
|
67
74
|
|
|
68
75
|
// ts-prune-ignore-next
|
|
69
76
|
export function experimental_serverActionLink<
|
|
70
|
-
|
|
71
|
-
>(
|
|
72
|
-
|
|
77
|
+
TInferrable extends TRPCInferrable,
|
|
78
|
+
>(
|
|
79
|
+
...args: TRPCInferrable extends TInferrable
|
|
80
|
+
? [
|
|
81
|
+
TypeError<'Generic parameter missing in `experimental_createActionHook<HERE>()` or experimental_serverActionLink<HERE>()'>,
|
|
82
|
+
]
|
|
83
|
+
: inferRootTypes<TInferrable>['transformer'] extends true
|
|
84
|
+
? [
|
|
85
|
+
opts: TransformerOptions<{
|
|
86
|
+
transformer: true;
|
|
87
|
+
}>,
|
|
88
|
+
]
|
|
89
|
+
: [
|
|
90
|
+
opts?: TransformerOptions<{
|
|
91
|
+
transformer: false;
|
|
92
|
+
}>,
|
|
93
|
+
]
|
|
94
|
+
): TRPCLink<TInferrable> {
|
|
95
|
+
const [opts] = args as [CoercedTransformerParameters];
|
|
96
|
+
const transformer = getTransformer(opts?.transformer);
|
|
97
|
+
return () =>
|
|
73
98
|
({ op }) =>
|
|
74
99
|
observable((observer) => {
|
|
75
100
|
const context = op.context as ActionContext;
|
|
@@ -78,10 +103,10 @@ export function experimental_serverActionLink<
|
|
|
78
103
|
._action(
|
|
79
104
|
isFormData(op.input)
|
|
80
105
|
? op.input
|
|
81
|
-
:
|
|
106
|
+
: transformer.input.serialize(op.input),
|
|
82
107
|
)
|
|
83
108
|
.then((data) => {
|
|
84
|
-
const transformed = transformResult(data,
|
|
109
|
+
const transformed = transformResult(data, transformer.output);
|
|
85
110
|
|
|
86
111
|
if (!transformed.ok) {
|
|
87
112
|
observer.error(TRPCClientError.from(transformed.error, {}));
|
|
@@ -103,15 +128,20 @@ interface UseTRPCActionOptions<TDef extends ActionHandlerDef> {
|
|
|
103
128
|
onSuccess?: (result: TDef['output']) => MaybePromise<void> | void;
|
|
104
129
|
onError?: (result: TRPCClientError<TDef['errorShape']>) => MaybePromise<void>;
|
|
105
130
|
}
|
|
106
|
-
|
|
107
131
|
// ts-prune-ignore-next
|
|
108
|
-
export function experimental_createActionHook<
|
|
109
|
-
|
|
132
|
+
export function experimental_createActionHook<
|
|
133
|
+
TInferrable extends TRPCInferrable,
|
|
134
|
+
>(
|
|
135
|
+
opts: TRPCInferrable extends TInferrable
|
|
136
|
+
? TypeError<'Generic parameter missing in `experimental_createActionHook<HERE>()`'>
|
|
137
|
+
: CreateTRPCClientOptions<TInferrable>,
|
|
110
138
|
) {
|
|
111
139
|
type ActionContext = {
|
|
112
140
|
_action: (...args: any[]) => Promise<any>;
|
|
113
141
|
};
|
|
114
|
-
const client = createTRPCUntypedClient(
|
|
142
|
+
const client = createTRPCUntypedClient(
|
|
143
|
+
opts as Exclude<typeof opts, TypeError<any>>,
|
|
144
|
+
);
|
|
115
145
|
return function useAction<TDef extends ActionHandlerDef>(
|
|
116
146
|
handler: TRPCActionHandler<TDef>,
|
|
117
147
|
useActionOpts?: UseTRPCActionOptions<Simplify<TDef>>,
|
|
@@ -2,9 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
import type { TRPCLink } from '@trpc/client';
|
|
4
4
|
import { TRPCClientError } from '@trpc/client';
|
|
5
|
+
import {
|
|
6
|
+
getTransformer,
|
|
7
|
+
type TransformerOptions,
|
|
8
|
+
} from '@trpc/client/unstable-internals';
|
|
5
9
|
import { observable } from '@trpc/server/observable';
|
|
6
10
|
import type {
|
|
7
11
|
AnyRouter,
|
|
12
|
+
inferRootTypes,
|
|
8
13
|
inferRouterContext,
|
|
9
14
|
} from '@trpc/server/unstable-core-do-not-import';
|
|
10
15
|
import { callProcedure } from '@trpc/server/unstable-core-do-not-import';
|
|
@@ -16,13 +21,14 @@ type NextCacheLinkOptions<TRouter extends AnyRouter> = {
|
|
|
16
21
|
createContext: () => Promise<inferRouterContext<TRouter>>;
|
|
17
22
|
/** how many seconds the cache should hold before revalidating */
|
|
18
23
|
revalidate?: number | false;
|
|
19
|
-
}
|
|
24
|
+
} & TransformerOptions<inferRootTypes<TRouter>>;
|
|
20
25
|
|
|
21
26
|
// ts-prune-ignore-next
|
|
22
27
|
export function experimental_nextCacheLink<TRouter extends AnyRouter>(
|
|
23
28
|
opts: NextCacheLinkOptions<TRouter>,
|
|
24
29
|
): TRPCLink<TRouter> {
|
|
25
|
-
|
|
30
|
+
const transformer = getTransformer(opts.transformer);
|
|
31
|
+
return () =>
|
|
26
32
|
({ op }) =>
|
|
27
33
|
observable((observer) => {
|
|
28
34
|
const { path, input, type, context } = op;
|
|
@@ -52,7 +58,7 @@ export function experimental_nextCacheLink<TRouter extends AnyRouter>(
|
|
|
52
58
|
});
|
|
53
59
|
|
|
54
60
|
// We need to serialize cause the cache only accepts JSON
|
|
55
|
-
return
|
|
61
|
+
return transformer.input.serialize(procedureResult);
|
|
56
62
|
};
|
|
57
63
|
|
|
58
64
|
if (type === 'query') {
|
|
@@ -70,7 +76,7 @@ export function experimental_nextCacheLink<TRouter extends AnyRouter>(
|
|
|
70
76
|
|
|
71
77
|
promise
|
|
72
78
|
.then((data) => {
|
|
73
|
-
const transformedResult =
|
|
79
|
+
const transformedResult = transformer.output.deserialize(data);
|
|
74
80
|
observer.next({ result: { data: transformedResult } });
|
|
75
81
|
observer.complete();
|
|
76
82
|
})
|
|
@@ -4,7 +4,10 @@ import type {
|
|
|
4
4
|
TRPCLink,
|
|
5
5
|
} from '@trpc/client';
|
|
6
6
|
import { httpBatchLink, httpLink } from '@trpc/client';
|
|
7
|
-
import type {
|
|
7
|
+
import type {
|
|
8
|
+
AnyRootTypes,
|
|
9
|
+
AnyRouter,
|
|
10
|
+
} from '@trpc/server/unstable-core-do-not-import';
|
|
8
11
|
import { generateCacheTag } from '../shared';
|
|
9
12
|
|
|
10
13
|
interface NextLinkBaseOptions {
|
|
@@ -12,21 +15,21 @@ interface NextLinkBaseOptions {
|
|
|
12
15
|
batch?: boolean;
|
|
13
16
|
}
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
18
|
+
type NextLinkSingleOptions<TRoot extends AnyRootTypes> = NextLinkBaseOptions &
|
|
19
|
+
Omit<HTTPLinkOptions<TRoot>, 'fetch'> & {
|
|
20
|
+
batch?: false;
|
|
21
|
+
};
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
23
|
+
type NextLinkBatchOptions<TRoot extends AnyRootTypes> = NextLinkBaseOptions &
|
|
24
|
+
Omit<HTTPBatchLinkOptions<TRoot>, 'fetch'> & {
|
|
25
|
+
batch: true;
|
|
26
|
+
};
|
|
26
27
|
|
|
27
28
|
// ts-prune-ignore-next
|
|
28
29
|
export function experimental_nextHttpLink<TRouter extends AnyRouter>(
|
|
29
|
-
opts:
|
|
30
|
+
opts:
|
|
31
|
+
| NextLinkSingleOptions<TRouter['_def']['_config']['$types']>
|
|
32
|
+
| NextLinkBatchOptions<TRouter['_def']['_config']['$types']>,
|
|
30
33
|
): TRPCLink<TRouter> {
|
|
31
34
|
return (runtime) => {
|
|
32
35
|
return (ctx) => {
|
|
@@ -42,7 +45,7 @@ export function experimental_nextHttpLink<TRouter extends AnyRouter>(
|
|
|
42
45
|
|
|
43
46
|
const revalidate = requestRevalidate ?? opts.revalidate ?? false;
|
|
44
47
|
|
|
45
|
-
const _fetch: NonNullable<HTTPLinkOptions['fetch']> = (
|
|
48
|
+
const _fetch: NonNullable<HTTPLinkOptions<AnyRootTypes>['fetch']> = (
|
|
46
49
|
url,
|
|
47
50
|
fetchOpts,
|
|
48
51
|
) => {
|
|
@@ -57,11 +60,11 @@ export function experimental_nextHttpLink<TRouter extends AnyRouter>(
|
|
|
57
60
|
};
|
|
58
61
|
const link = opts.batch
|
|
59
62
|
? httpBatchLink({
|
|
60
|
-
...opts,
|
|
63
|
+
...(opts as any),
|
|
61
64
|
fetch: _fetch,
|
|
62
65
|
})
|
|
63
66
|
: httpLink({
|
|
64
|
-
...opts,
|
|
67
|
+
...(opts as any),
|
|
65
68
|
fetch: _fetch,
|
|
66
69
|
});
|
|
67
70
|
|
package/src/app-dir/server.ts
CHANGED
|
@@ -8,6 +8,7 @@ import type {
|
|
|
8
8
|
AnyRootTypes,
|
|
9
9
|
AnyRouter,
|
|
10
10
|
inferProcedureInput,
|
|
11
|
+
inferRootTypes,
|
|
11
12
|
MaybePromise,
|
|
12
13
|
RootConfig,
|
|
13
14
|
Simplify,
|
|
@@ -77,7 +78,7 @@ export function experimental_createServerActionHandler<
|
|
|
77
78
|
>(
|
|
78
79
|
t: TInstance,
|
|
79
80
|
opts: {
|
|
80
|
-
createContext: () => MaybePromise<TInstance['
|
|
81
|
+
createContext: () => MaybePromise<inferRootTypes<TInstance>['ctx']>;
|
|
81
82
|
/**
|
|
82
83
|
* Transform form data to a `Record` before passing it to the procedure
|
|
83
84
|
* @default true
|
|
@@ -94,12 +95,12 @@ export function experimental_createServerActionHandler<
|
|
|
94
95
|
return function createServerAction<TProc extends AnyProcedure>(
|
|
95
96
|
proc: TProc,
|
|
96
97
|
): TRPCActionHandler<
|
|
97
|
-
Simplify<inferActionDef<TInstance
|
|
98
|
+
Simplify<inferActionDef<inferRootTypes<TInstance>, TProc>>
|
|
98
99
|
> {
|
|
99
100
|
return async function actionHandler(
|
|
100
101
|
rawInput: FormData | inferProcedureInput<TProc>,
|
|
101
102
|
) {
|
|
102
|
-
const ctx: TInstance['
|
|
103
|
+
const ctx: inferRootTypes<TInstance>['ctx'] | undefined = undefined;
|
|
103
104
|
try {
|
|
104
105
|
const ctx = await createContext();
|
|
105
106
|
if (normalizeFormData && isFormData(rawInput)) {
|
package/src/withTRPC.tsx
CHANGED
|
@@ -10,6 +10,11 @@ import {
|
|
|
10
10
|
} from '@tanstack/react-query';
|
|
11
11
|
import type { CreateTRPCClientOptions, TRPCUntypedClient } from '@trpc/client';
|
|
12
12
|
import { createTRPCUntypedClient } from '@trpc/client';
|
|
13
|
+
import type { CoercedTransformerParameters } from '@trpc/client/unstable-internals';
|
|
14
|
+
import {
|
|
15
|
+
getTransformer,
|
|
16
|
+
type TransformerOptions,
|
|
17
|
+
} from '@trpc/client/unstable-internals';
|
|
13
18
|
import type { TRPCClientError, TRPCClientErrorLike } from '@trpc/react-query';
|
|
14
19
|
import type {
|
|
15
20
|
CreateTRPCReactOptions,
|
|
@@ -19,6 +24,7 @@ import { createRootHooks, getQueryClient } from '@trpc/react-query/shared';
|
|
|
19
24
|
import type {
|
|
20
25
|
AnyRouter,
|
|
21
26
|
Dict,
|
|
27
|
+
inferRootTypes,
|
|
22
28
|
Maybe,
|
|
23
29
|
ResponseMeta,
|
|
24
30
|
} from '@trpc/server/unstable-core-do-not-import';
|
|
@@ -59,29 +65,35 @@ export type WithTRPCConfig<TRouter extends AnyRouter> =
|
|
|
59
65
|
abortOnUnmount?: boolean;
|
|
60
66
|
};
|
|
61
67
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
68
|
+
type WithTRPCOptions<TRouter extends AnyRouter> =
|
|
69
|
+
CreateTRPCReactOptions<TRouter> & {
|
|
70
|
+
config: (info: { ctx?: NextPageContext }) => WithTRPCConfig<TRouter>;
|
|
71
|
+
} & TransformerOptions<inferRootTypes<TRouter>>;
|
|
66
72
|
|
|
67
|
-
export
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
73
|
+
export type WithTRPCSSROptions<TRouter extends AnyRouter> =
|
|
74
|
+
WithTRPCOptions<TRouter> & {
|
|
75
|
+
ssr:
|
|
76
|
+
| true
|
|
77
|
+
| ((opts: { ctx: NextPageContext }) => boolean | Promise<boolean>);
|
|
78
|
+
responseMeta?: (opts: {
|
|
79
|
+
ctx: NextPageContext;
|
|
80
|
+
clientErrors: TRPCClientError<TRouter>[];
|
|
81
|
+
}) => ResponseMeta;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export type WithTRPCNoSSROptions<TRouter extends AnyRouter> =
|
|
85
|
+
WithTRPCOptions<TRouter> & {
|
|
86
|
+
ssr?: false;
|
|
87
|
+
};
|
|
79
88
|
|
|
80
89
|
export function withTRPC<
|
|
81
90
|
TRouter extends AnyRouter,
|
|
82
91
|
TSSRContext extends NextPageContext = NextPageContext,
|
|
83
92
|
>(opts: WithTRPCNoSSROptions<TRouter> | WithTRPCSSROptions<TRouter>) {
|
|
84
93
|
const { config: getClientConfig } = opts;
|
|
94
|
+
const transformer = getTransformer(
|
|
95
|
+
(opts as CoercedTransformerParameters).transformer,
|
|
96
|
+
);
|
|
85
97
|
|
|
86
98
|
type TRPCPrepassProps = {
|
|
87
99
|
config: WithTRPCConfig<TRouter>;
|
|
@@ -106,6 +118,7 @@ export function withTRPC<
|
|
|
106
118
|
const config = getClientConfig({});
|
|
107
119
|
const queryClient = getQueryClient(config);
|
|
108
120
|
const trpcClient = trpc.createClient(config);
|
|
121
|
+
|
|
109
122
|
return {
|
|
110
123
|
abortOnUnmount: config.abortOnUnmount,
|
|
111
124
|
queryClient,
|
|
@@ -118,10 +131,16 @@ export function withTRPC<
|
|
|
118
131
|
const { queryClient, trpcClient, ssrState, ssrContext } = prepassProps;
|
|
119
132
|
|
|
120
133
|
// allow normal components to be wrapped, not just app/pages
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
134
|
+
const trpcState = props.pageProps?.trpcState;
|
|
135
|
+
|
|
136
|
+
const hydratedState: DehydratedState | undefined = React.useMemo(() => {
|
|
137
|
+
if (!trpcState) {
|
|
138
|
+
return trpcState;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return transformer.input.deserialize(trpcState);
|
|
142
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
143
|
+
}, [trpcState, trpcClient]);
|
|
125
144
|
|
|
126
145
|
return (
|
|
127
146
|
<trpc.Provider
|
|
@@ -245,10 +264,9 @@ export function withTRPC<
|
|
|
245
264
|
};
|
|
246
265
|
|
|
247
266
|
// dehydrate query client's state and add it to the props
|
|
248
|
-
pageProps['trpcState'] =
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
);
|
|
267
|
+
pageProps['trpcState'] = transformer.input.serialize(
|
|
268
|
+
dehydratedCacheWithErrors,
|
|
269
|
+
);
|
|
252
270
|
|
|
253
271
|
const appTreeProps = getAppTreeProps(pageProps);
|
|
254
272
|
|