@trpc/server 10.0.0-proxy-alpha.61 → 10.0.0-proxy-alpha.64
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 +1 -1
- package/dist/adapters/aws-lambda/index.js +1 -1
- package/dist/adapters/aws-lambda/index.mjs +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/initTRPC.d.ts +91 -81
- package/dist/core/initTRPC.d.ts.map +1 -1
- package/dist/core/internals/config.d.ts +1 -1
- package/dist/core/internals/procedureBuilder.d.ts +0 -3
- package/dist/core/internals/procedureBuilder.d.ts.map +1 -1
- package/dist/core/middleware.d.ts +37 -23
- package/dist/core/middleware.d.ts.map +1 -1
- package/dist/index.js +22 -10
- package/dist/index.mjs +20 -10
- package/dist/{router-f747db2b.mjs → router-6b03ff5f.mjs} +66 -48
- package/dist/{router-77321794.js → router-da6086c3.js} +68 -47
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/core/index.ts +1 -0
- package/src/core/initTRPC.ts +46 -5
- package/src/core/internals/config.ts +1 -1
- package/src/core/internals/procedureBuilder.ts +8 -63
- package/src/core/middleware.ts +98 -23
- package/src/deprecated/interop.ts +2 -2
- package/src/types.ts +5 -0
package/README.md
CHANGED
|
@@ -52,7 +52,7 @@ function createContext(opts: CreateHTTPContextOptions) {
|
|
|
52
52
|
type Context = inferAsyncReturnType<typeof createContext>;
|
|
53
53
|
|
|
54
54
|
// Initialize tRPC
|
|
55
|
-
const t = initTRPC<
|
|
55
|
+
const t = initTRPC.context<Context>.create();
|
|
56
56
|
|
|
57
57
|
// Create main router
|
|
58
58
|
const appRouter = t.router({
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
require('../../router-
|
|
5
|
+
require('../../router-da6086c3.js');
|
|
6
6
|
var TRPCError = require('../../TRPCError-fe9113e5.js');
|
|
7
7
|
var resolveHTTPResponse = require('../../resolveHTTPResponse-d7a8a210.js');
|
|
8
8
|
require('../../codes-1c24d919.js');
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export type { AnyRouter, ProcedureRecord, ProcedureRouterRecord, } from './router';
|
|
2
2
|
export { callProcedure } from './router';
|
|
3
3
|
export type { Procedure, ProcedureParams, ProcedureArgs, ProcedureOptions, } from './procedure';
|
|
4
|
+
export { createInputMiddleware, createOutputMiddleware } from './middleware';
|
|
4
5
|
export { initTRPC } from './initTRPC';
|
|
5
6
|
export * from './types';
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/server/src/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,SAAS,EACT,eAAe,EACf,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EACV,SAAS,EACT,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/server/src/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,SAAS,EACT,eAAe,EACf,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EACV,SAAS,EACT,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE7E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,cAAc,SAAS,CAAC"}
|
package/dist/core/initTRPC.d.ts
CHANGED
|
@@ -1,95 +1,105 @@
|
|
|
1
1
|
import { mergeRoutersGeneric } from './internals/__generated__/mergeRoutersGeneric';
|
|
2
2
|
import { DefaultErrorShape, ErrorFormatter, ErrorFormatterShape } from '../error/formatter';
|
|
3
3
|
import { CombinedDataTransformer, DataTransformerOptions, DefaultDataTransformer } from '../transformer';
|
|
4
|
-
import { InitGenerics, InitOptions } from './internals/config';
|
|
4
|
+
import { CreateInitGenerics, InitGenerics, InitOptions } from './internals/config';
|
|
5
5
|
import { PickFirstDefined, ValidateShape } from './internals/utils';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
*/
|
|
26
|
-
procedure: import("./internals/procedureBuilder").ProcedureBuilder<{
|
|
27
|
-
_config: {
|
|
28
|
-
ctx: TParams["ctx"] extends undefined ? {} : NonNullable<TParams["ctx"]>;
|
|
29
|
-
meta: PickFirstDefined<TParams["meta"] extends undefined ? {} : NonNullable<TParams["meta"]>, undefined>;
|
|
30
|
-
errorShape: ErrorFormatterShape<PickFirstDefined<TOptions["errorFormatter"], ErrorFormatter<TParams["ctx"] extends undefined ? {} : NonNullable<TParams["ctx"]>, DefaultErrorShape>>>;
|
|
31
|
-
transformer: TOptions["transformer"] extends DataTransformerOptions ? TOptions["transformer"] extends DataTransformerOptions ? CombinedDataTransformer : DefaultDataTransformer : DefaultDataTransformer;
|
|
32
|
-
};
|
|
33
|
-
_ctx_in: TParams["ctx"] extends undefined ? {} : NonNullable<TParams["ctx"]>;
|
|
34
|
-
_ctx_out: TParams["ctx"] extends undefined ? {} : NonNullable<TParams["ctx"]>;
|
|
35
|
-
_input_in: typeof import("./internals/utils").unsetMarker;
|
|
36
|
-
_input_out: typeof import("./internals/utils").unsetMarker;
|
|
37
|
-
_output_in: typeof import("./internals/utils").unsetMarker;
|
|
38
|
-
_output_out: typeof import("./internals/utils").unsetMarker;
|
|
39
|
-
_meta: PickFirstDefined<TParams["meta"] extends undefined ? {} : NonNullable<TParams["meta"]>, undefined>;
|
|
40
|
-
}>;
|
|
41
|
-
/**
|
|
42
|
-
* Create reusable middlewares
|
|
43
|
-
*/
|
|
44
|
-
middleware: <$TNewParams extends import("./procedure").ProcedureParams<{
|
|
45
|
-
transformer: CombinedDataTransformer;
|
|
46
|
-
errorShape: DefaultErrorShape;
|
|
47
|
-
ctx: Record<string, unknown>;
|
|
48
|
-
meta: Record<string, unknown>;
|
|
49
|
-
}, unknown, unknown, unknown, unknown, unknown, unknown, unknown>>(fn: import("./middleware").MiddlewareFunction<{
|
|
50
|
-
_config: {
|
|
51
|
-
ctx: TParams["ctx"] extends undefined ? {} : NonNullable<TParams["ctx"]>;
|
|
52
|
-
meta: PickFirstDefined<TParams["meta"] extends undefined ? {} : NonNullable<TParams["meta"]>, undefined>;
|
|
53
|
-
errorShape: ErrorFormatterShape<PickFirstDefined<TOptions["errorFormatter"], ErrorFormatter<TParams["ctx"] extends undefined ? {} : NonNullable<TParams["ctx"]>, DefaultErrorShape>>>;
|
|
54
|
-
transformer: TOptions["transformer"] extends DataTransformerOptions ? TOptions["transformer"] extends DataTransformerOptions ? CombinedDataTransformer : DefaultDataTransformer : DefaultDataTransformer;
|
|
55
|
-
};
|
|
56
|
-
_ctx_in: TParams["ctx"] extends undefined ? {} : NonNullable<TParams["ctx"]>;
|
|
57
|
-
_ctx_out: TParams["ctx"] extends undefined ? {} : NonNullable<TParams["ctx"]>;
|
|
58
|
-
_input_out: unknown;
|
|
59
|
-
_input_in: unknown;
|
|
6
|
+
declare type PartialInitGenerics = Partial<InitGenerics>;
|
|
7
|
+
declare type CreateInitGenericsFromPartial<T extends PartialInitGenerics> = CreateInitGenerics<{
|
|
8
|
+
ctx: T['ctx'] extends InitGenerics['ctx'] ? T['ctx'] : {};
|
|
9
|
+
meta: T['meta'] extends InitGenerics['meta'] ? T['meta'] : {};
|
|
10
|
+
}>;
|
|
11
|
+
/**
|
|
12
|
+
* TODO: This can be improved:
|
|
13
|
+
* - We should be able to chain `.meta()`/`.context()` only once
|
|
14
|
+
* - Simplify typings
|
|
15
|
+
* - Doesn't need to be a class but it doesn't really hurt either
|
|
16
|
+
*/
|
|
17
|
+
declare class TRPCBuilder<TParams extends Partial<InitGenerics> = {}> {
|
|
18
|
+
context<TNewContext extends InitGenerics['ctx']>(): TRPCBuilder<{ [TKey in "ctx" | keyof TParams]: TKey extends "ctx" ? {
|
|
19
|
+
ctx: TNewContext;
|
|
20
|
+
}[TKey] : TKey extends keyof TParams ? TParams[TKey] : never; }>;
|
|
21
|
+
meta<TNewMeta extends InitGenerics['meta']>(): TRPCBuilder<{ [TKey in "meta" | keyof TParams]: TKey extends "meta" ? {
|
|
22
|
+
meta: TNewMeta;
|
|
23
|
+
}[TKey] : TKey extends keyof TParams ? TParams[TKey] : never; }>;
|
|
24
|
+
create<TOptions extends Partial<InitOptions<CreateInitGenericsFromPartial<TParams>>>>(options?: ValidateShape<TOptions, Partial<InitOptions<CreateInitGenericsFromPartial<TParams>>>> | undefined): {
|
|
60
25
|
/**
|
|
61
26
|
* These are just types, they can't be used
|
|
62
27
|
* @internal
|
|
63
28
|
*/
|
|
64
|
-
_output_in: unknown;
|
|
65
|
-
_output_out: unknown;
|
|
66
|
-
_meta: PickFirstDefined<TParams["meta"] extends undefined ? {} : NonNullable<TParams["meta"]>, undefined>;
|
|
67
|
-
}, $TNewParams>) => import("./middleware").MiddlewareFunction<{
|
|
68
29
|
_config: {
|
|
69
|
-
ctx: TParams["ctx"] extends
|
|
70
|
-
meta:
|
|
71
|
-
errorShape: ErrorFormatterShape<PickFirstDefined<TOptions["errorFormatter"], ErrorFormatter<TParams["ctx"] extends
|
|
30
|
+
ctx: TParams["ctx"] extends Record<string, unknown> ? TParams["ctx"] : {};
|
|
31
|
+
meta: TParams["meta"] extends Record<string, unknown> ? TParams["meta"] : {};
|
|
32
|
+
errorShape: ErrorFormatterShape<PickFirstDefined<TOptions["errorFormatter"], ErrorFormatter<TParams["ctx"] extends Record<string, unknown> ? TParams["ctx"] : {}, DefaultErrorShape>>>;
|
|
72
33
|
transformer: TOptions["transformer"] extends DataTransformerOptions ? TOptions["transformer"] extends DataTransformerOptions ? CombinedDataTransformer : DefaultDataTransformer : DefaultDataTransformer;
|
|
73
34
|
};
|
|
74
|
-
_ctx_in: TParams["ctx"] extends undefined ? {} : NonNullable<TParams["ctx"]>;
|
|
75
|
-
_ctx_out: TParams["ctx"] extends undefined ? {} : NonNullable<TParams["ctx"]>;
|
|
76
|
-
_input_out: unknown;
|
|
77
|
-
_input_in: unknown;
|
|
78
35
|
/**
|
|
79
|
-
*
|
|
80
|
-
|
|
36
|
+
* Builder object for creating procedures
|
|
37
|
+
*/
|
|
38
|
+
procedure: import("./internals/procedureBuilder").ProcedureBuilder<{
|
|
39
|
+
_config: {
|
|
40
|
+
ctx: TParams["ctx"] extends Record<string, unknown> ? TParams["ctx"] : {};
|
|
41
|
+
meta: TParams["meta"] extends Record<string, unknown> ? TParams["meta"] : {};
|
|
42
|
+
errorShape: ErrorFormatterShape<PickFirstDefined<TOptions["errorFormatter"], ErrorFormatter<TParams["ctx"] extends Record<string, unknown> ? TParams["ctx"] : {}, DefaultErrorShape>>>;
|
|
43
|
+
transformer: TOptions["transformer"] extends DataTransformerOptions ? TOptions["transformer"] extends DataTransformerOptions ? CombinedDataTransformer : DefaultDataTransformer : DefaultDataTransformer;
|
|
44
|
+
};
|
|
45
|
+
_ctx_in: TParams["ctx"] extends Record<string, unknown> ? TParams["ctx"] : {};
|
|
46
|
+
_ctx_out: TParams["ctx"] extends Record<string, unknown> ? TParams["ctx"] : {};
|
|
47
|
+
_input_in: typeof import("./internals/utils").unsetMarker;
|
|
48
|
+
_input_out: typeof import("./internals/utils").unsetMarker;
|
|
49
|
+
_output_in: typeof import("./internals/utils").unsetMarker;
|
|
50
|
+
_output_out: typeof import("./internals/utils").unsetMarker;
|
|
51
|
+
_meta: TParams["meta"] extends Record<string, unknown> ? TParams["meta"] : {};
|
|
52
|
+
}>;
|
|
53
|
+
/**
|
|
54
|
+
* Create reusable middlewares
|
|
55
|
+
*/
|
|
56
|
+
middleware: <$TNewParams extends import("./procedure").ProcedureParams<{
|
|
57
|
+
transformer: CombinedDataTransformer;
|
|
58
|
+
errorShape: DefaultErrorShape;
|
|
59
|
+
ctx: Record<string, unknown>;
|
|
60
|
+
meta: Record<string, unknown>;
|
|
61
|
+
}, unknown, unknown, unknown, unknown, unknown, unknown, unknown>>(fn: import("./middleware").MiddlewareFunction<{
|
|
62
|
+
_config: {
|
|
63
|
+
ctx: TParams["ctx"] extends Record<string, unknown> ? TParams["ctx"] : {};
|
|
64
|
+
meta: TParams["meta"] extends Record<string, unknown> ? TParams["meta"] : {};
|
|
65
|
+
errorShape: ErrorFormatterShape<PickFirstDefined<TOptions["errorFormatter"], ErrorFormatter<TParams["ctx"] extends Record<string, unknown> ? TParams["ctx"] : {}, DefaultErrorShape>>>;
|
|
66
|
+
transformer: TOptions["transformer"] extends DataTransformerOptions ? TOptions["transformer"] extends DataTransformerOptions ? CombinedDataTransformer : DefaultDataTransformer : DefaultDataTransformer;
|
|
67
|
+
};
|
|
68
|
+
_ctx_in: TParams["ctx"] extends Record<string, unknown> ? TParams["ctx"] : {};
|
|
69
|
+
_ctx_out: TParams["ctx"] extends Record<string, unknown> ? TParams["ctx"] : {};
|
|
70
|
+
_input_out: unknown;
|
|
71
|
+
_input_in: unknown;
|
|
72
|
+
_output_in: unknown;
|
|
73
|
+
_output_out: unknown;
|
|
74
|
+
_meta: TParams["meta"] extends Record<string, unknown> ? TParams["meta"] : {};
|
|
75
|
+
}, $TNewParams>) => import("./middleware").MiddlewareFunction<{
|
|
76
|
+
_config: {
|
|
77
|
+
ctx: TParams["ctx"] extends Record<string, unknown> ? TParams["ctx"] : {};
|
|
78
|
+
meta: TParams["meta"] extends Record<string, unknown> ? TParams["meta"] : {};
|
|
79
|
+
errorShape: ErrorFormatterShape<PickFirstDefined<TOptions["errorFormatter"], ErrorFormatter<TParams["ctx"] extends Record<string, unknown> ? TParams["ctx"] : {}, DefaultErrorShape>>>;
|
|
80
|
+
transformer: TOptions["transformer"] extends DataTransformerOptions ? TOptions["transformer"] extends DataTransformerOptions ? CombinedDataTransformer : DefaultDataTransformer : DefaultDataTransformer;
|
|
81
|
+
};
|
|
82
|
+
_ctx_in: TParams["ctx"] extends Record<string, unknown> ? TParams["ctx"] : {};
|
|
83
|
+
_ctx_out: TParams["ctx"] extends Record<string, unknown> ? TParams["ctx"] : {};
|
|
84
|
+
_input_out: unknown;
|
|
85
|
+
_input_in: unknown;
|
|
86
|
+
_output_in: unknown;
|
|
87
|
+
_output_out: unknown;
|
|
88
|
+
_meta: TParams["meta"] extends Record<string, unknown> ? TParams["meta"] : {};
|
|
89
|
+
}, $TNewParams>;
|
|
90
|
+
/**
|
|
91
|
+
* Create a router
|
|
92
|
+
*/
|
|
93
|
+
router: <TProcRouterRecord extends import("./router").ProcedureRouterRecord>(opts: TProcRouterRecord) => import("./router").Router<import("./router").RouterDef<TParams["ctx"] extends Record<string, unknown> ? TParams["ctx"] : {}, ErrorFormatterShape<PickFirstDefined<TOptions["errorFormatter"], ErrorFormatter<TParams["ctx"] extends Record<string, unknown> ? TParams["ctx"] : {}, DefaultErrorShape>>>, TParams["meta"] extends Record<string, unknown> ? TParams["meta"] : {}, TProcRouterRecord>> & TProcRouterRecord;
|
|
94
|
+
/**
|
|
95
|
+
* Merge Routers
|
|
81
96
|
*/
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Merge Routers
|
|
92
|
-
*/
|
|
93
|
-
mergeRouters: typeof mergeRoutersGeneric;
|
|
94
|
-
};
|
|
97
|
+
mergeRouters: typeof mergeRoutersGeneric;
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Initialize tRPC - be done exactly once per backend
|
|
102
|
+
*/
|
|
103
|
+
export declare const initTRPC: TRPCBuilder<{}>;
|
|
104
|
+
export {};
|
|
95
105
|
//# sourceMappingURL=initTRPC.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initTRPC.d.ts","sourceRoot":"","sources":["../../../../packages/server/src/core/initTRPC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EAEpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EAGvB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"initTRPC.d.ts","sourceRoot":"","sources":["../../../../packages/server/src/core/initTRPC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EAEpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EAGvB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,kBAAkB,EAElB,YAAY,EACZ,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIpE,aAAK,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAEjD,aAAK,6BAA6B,CAAC,CAAC,SAAS,mBAAmB,IAC9D,kBAAkB,CAAC;IACjB,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAC1D,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;CAC/D,CAAC,CAAC;AAEL;;;;;GAKG;AAEH,cAAM,WAAW,CAAC,OAAO,SAAS,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE;IAC1D,OAAO,CAAC,WAAW,SAAS,YAAY,CAAC,KAAK,CAAC;aACQ,WAAW;;IAElE,IAAI,CAAC,QAAQ,SAAS,YAAY,CAAC,MAAM,CAAC;cACc,QAAQ;;IAEhE,MAAM,CACJ,QAAQ,SAAS,OAAO,CACtB,WAAW,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,CACpD,EAED,OAAO,CAAC,EACJ,aAAa,CACX,QAAQ,EACR,OAAO,CAAC,WAAW,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,CAAC,CAC7D,GACD,SAAS;QAkDX;;;WAGG;;;;;;;QAEH;;WAEG;;;;;;;;;;;;;;;;QAEH;;WAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAEH;;WAEG;;QAKH;;WAEG;;;CApER;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,iBAAoB,CAAC"}
|
|
@@ -21,7 +21,7 @@ export interface InitOptions<T extends InitGenerics> {
|
|
|
21
21
|
*/
|
|
22
22
|
export declare type CreateInitGenerics<T extends InitGenerics> = T;
|
|
23
23
|
/**
|
|
24
|
-
* The config that is resolved after
|
|
24
|
+
* The config that is resolved after `initTRPC.create()` has been called
|
|
25
25
|
* Combination of `InitTOptions` + `InitGenerics`
|
|
26
26
|
* @internal
|
|
27
27
|
*/
|
|
@@ -4,7 +4,6 @@ import { Parser, inferParser } from '../parser';
|
|
|
4
4
|
import { MutationProcedure, ProcedureParams, QueryProcedure, SubscriptionProcedure } from '../procedure';
|
|
5
5
|
import { ProcedureType } from '../types';
|
|
6
6
|
import { RootConfig } from './config';
|
|
7
|
-
import { ParseFn } from './getParseFn';
|
|
8
7
|
import { ResolveOptions } from './utils';
|
|
9
8
|
import { DefaultValue as FallbackValue, Overwrite, UnsetMarker } from './utils';
|
|
10
9
|
declare type CreateProcedureReturnInput<TPrev extends ProcedureParams, TNext extends ProcedureParams> = ProcedureBuilder<{
|
|
@@ -108,8 +107,6 @@ export declare function createBuilder<TConfig extends RootConfig>(initDef?: AnyP
|
|
|
108
107
|
_output_out: UnsetMarker;
|
|
109
108
|
_meta: TConfig['meta'];
|
|
110
109
|
}>;
|
|
111
|
-
export declare function createInputMiddleware<T>(parse: ParseFn<T>): ProcedureBuilderMiddleware;
|
|
112
|
-
export declare function createOutputMiddleware<T>(parse: ParseFn<T>): ProcedureBuilderMiddleware;
|
|
113
110
|
/**
|
|
114
111
|
* @internal
|
|
115
112
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedureBuilder.d.ts","sourceRoot":"","sources":["../../../../../packages/server/src/core/internals/procedureBuilder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"procedureBuilder.d.ts","sourceRoot":"","sources":["../../../../../packages/server/src/core/internals/procedureBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { RootConfig } from './internals/config';
|
|
2
|
+
import { ParseFn } from './internals/getParseFn';
|
|
3
|
+
import { ProcedureBuilderMiddleware } from './internals/procedureBuilder';
|
|
2
4
|
import { MiddlewareMarker } from './internals/utils';
|
|
3
5
|
import { ProcedureParams } from './procedure';
|
|
4
6
|
import { ProcedureType } from './types';
|
|
@@ -33,29 +35,32 @@ export declare type MiddlewareResult<TParams extends ProcedureParams> = Middlewa
|
|
|
33
35
|
/**
|
|
34
36
|
* @internal
|
|
35
37
|
*/
|
|
36
|
-
export declare type MiddlewareFunction<TParams extends ProcedureParams, TParamsAfter extends ProcedureParams> =
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
38
|
+
export declare type MiddlewareFunction<TParams extends ProcedureParams, TParamsAfter extends ProcedureParams> = {
|
|
39
|
+
(opts: {
|
|
40
|
+
ctx: TParams['_ctx_out'];
|
|
41
|
+
type: ProcedureType;
|
|
42
|
+
path: string;
|
|
43
|
+
input: TParams['_input_out'];
|
|
44
|
+
rawInput: unknown;
|
|
45
|
+
meta: TParams['_meta'];
|
|
46
|
+
next: {
|
|
47
|
+
(): Promise<MiddlewareResult<TParams>>;
|
|
48
|
+
<$TContext>(opts: {
|
|
49
|
+
ctx: $TContext;
|
|
50
|
+
}): Promise<MiddlewareResult<{
|
|
51
|
+
_config: any;
|
|
52
|
+
_ctx_in: TParams['_ctx_in'];
|
|
53
|
+
_ctx_out: $TContext;
|
|
54
|
+
_input_in: TParams['_input_in'];
|
|
55
|
+
_input_out: TParams['_input_out'];
|
|
56
|
+
_output_in: TParams['_output_in'];
|
|
57
|
+
_output_out: TParams['_output_out'];
|
|
58
|
+
_meta: TParams['_meta'];
|
|
59
|
+
}>>;
|
|
60
|
+
};
|
|
61
|
+
}): Promise<MiddlewareResult<TParamsAfter>>;
|
|
62
|
+
_type?: string | undefined;
|
|
63
|
+
};
|
|
59
64
|
/**
|
|
60
65
|
* @internal
|
|
61
66
|
*/
|
|
@@ -83,5 +88,14 @@ export declare function createMiddlewareFactory<TConfig extends RootConfig>(): <
|
|
|
83
88
|
_output_out: unknown;
|
|
84
89
|
_meta: TConfig['meta'];
|
|
85
90
|
}, $TNewParams>;
|
|
91
|
+
/**
|
|
92
|
+
* @internal
|
|
93
|
+
* Please note, `trpc-openapi` uses this function.
|
|
94
|
+
*/
|
|
95
|
+
export declare function createInputMiddleware<T>(parse: ParseFn<T>): ProcedureBuilderMiddleware;
|
|
96
|
+
/**
|
|
97
|
+
* @internal
|
|
98
|
+
*/
|
|
99
|
+
export declare function createOutputMiddleware<T>(parse: ParseFn<T>): ProcedureBuilderMiddleware;
|
|
86
100
|
export {};
|
|
87
101
|
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../../packages/server/src/core/middleware.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../../packages/server/src/core/middleware.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var resolveHTTPResponse = require('./resolveHTTPResponse-d7a8a210.js');
|
|
6
|
-
var router = require('./router-
|
|
6
|
+
var router = require('./router-da6086c3.js');
|
|
7
7
|
var TRPCError = require('./TRPCError-fe9113e5.js');
|
|
8
8
|
require('./transformTRPCResponse-11ac69cc.js');
|
|
9
9
|
require('./codes-1c24d919.js');
|
|
@@ -41,15 +41,25 @@ function mergeRoutersGeneric(...args) {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
|
-
*
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
44
|
+
* TODO: This can be improved:
|
|
45
|
+
* - We should be able to chain `.meta()`/`.context()` only once
|
|
46
|
+
* - Simplify typings
|
|
47
|
+
* - Doesn't need to be a class but it doesn't really hurt either
|
|
48
|
+
*/ class TRPCBuilder {
|
|
49
|
+
context() {
|
|
50
|
+
return new TRPCBuilder();
|
|
51
|
+
}
|
|
52
|
+
meta() {
|
|
53
|
+
return new TRPCBuilder();
|
|
54
|
+
}
|
|
55
|
+
create(options) {
|
|
56
|
+
return createTRPCInner()(options);
|
|
57
|
+
}
|
|
50
58
|
}
|
|
51
|
-
|
|
52
|
-
|
|
59
|
+
/**
|
|
60
|
+
* Initialize tRPC - be done exactly once per backend
|
|
61
|
+
*/ const initTRPC = new TRPCBuilder();
|
|
62
|
+
function createTRPCInner() {
|
|
53
63
|
return function initTRPCInner(options) {
|
|
54
64
|
const errorFormatter = options?.errorFormatter ?? router.defaultFormatter;
|
|
55
65
|
const transformer = router.getDataTransformer(options?.transformer ?? router.defaultTransformer);
|
|
@@ -69,7 +79,7 @@ function initTRPC() {
|
|
|
69
79
|
*/ procedure: router.createBuilder(),
|
|
70
80
|
/**
|
|
71
81
|
* Create reusable middlewares
|
|
72
|
-
*/ middleware: createMiddlewareFactory(),
|
|
82
|
+
*/ middleware: router.createMiddlewareFactory(),
|
|
73
83
|
/**
|
|
74
84
|
* Create a router
|
|
75
85
|
*/ router: router.createRouterFactory({
|
|
@@ -86,6 +96,8 @@ function initTRPC() {
|
|
|
86
96
|
exports.assertNotBrowser = resolveHTTPResponse.assertNotBrowser;
|
|
87
97
|
exports.resolveHTTPResponse = resolveHTTPResponse.resolveHTTPResponse;
|
|
88
98
|
exports.callProcedure = router.callProcedure;
|
|
99
|
+
exports.createInputMiddleware = router.createInputMiddleware;
|
|
100
|
+
exports.createOutputMiddleware = router.createOutputMiddleware;
|
|
89
101
|
exports.defaultTransformer = router.defaultTransformer;
|
|
90
102
|
exports.getDataTransformer = router.getDataTransformer;
|
|
91
103
|
exports.procedureTypes = router.procedureTypes;
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { a as assertNotBrowser, r as resolveHTTPResponse } from './resolveHTTPResponse-1b339cff.mjs';
|
|
2
|
-
import { m as mergeWithoutOverrides, d as defaultFormatter, a as defaultTransformer, c as createRouterFactory, g as getDataTransformer, b as createBuilder } from './router-
|
|
3
|
-
export {
|
|
2
|
+
import { m as mergeWithoutOverrides, d as defaultFormatter, a as defaultTransformer, c as createRouterFactory, g as getDataTransformer, b as createBuilder, e as createMiddlewareFactory } from './router-6b03ff5f.mjs';
|
|
3
|
+
export { f as callProcedure, h as createInputMiddleware, i as createOutputMiddleware, a as defaultTransformer, g as getDataTransformer, p as procedureTypes, r as router } from './router-6b03ff5f.mjs';
|
|
4
4
|
export { T as TRPCError } from './TRPCError-281ac25a.mjs';
|
|
5
5
|
import './transformTRPCResponse-c8138d5f.mjs';
|
|
6
6
|
import './codes-aaa7d554.mjs';
|
|
@@ -38,15 +38,25 @@ function mergeRoutersGeneric(...args) {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
|
-
*
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
* TODO: This can be improved:
|
|
42
|
+
* - We should be able to chain `.meta()`/`.context()` only once
|
|
43
|
+
* - Simplify typings
|
|
44
|
+
* - Doesn't need to be a class but it doesn't really hurt either
|
|
45
|
+
*/ class TRPCBuilder {
|
|
46
|
+
context() {
|
|
47
|
+
return new TRPCBuilder();
|
|
48
|
+
}
|
|
49
|
+
meta() {
|
|
50
|
+
return new TRPCBuilder();
|
|
51
|
+
}
|
|
52
|
+
create(options) {
|
|
53
|
+
return createTRPCInner()(options);
|
|
54
|
+
}
|
|
47
55
|
}
|
|
48
|
-
|
|
49
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Initialize tRPC - be done exactly once per backend
|
|
58
|
+
*/ const initTRPC = new TRPCBuilder();
|
|
59
|
+
function createTRPCInner() {
|
|
50
60
|
return function initTRPCInner(options) {
|
|
51
61
|
const errorFormatter = options?.errorFormatter ?? defaultFormatter;
|
|
52
62
|
const transformer = getDataTransformer(options?.transformer ?? defaultTransformer);
|
|
@@ -260,6 +260,71 @@ function getParseFn(procedureParser) {
|
|
|
260
260
|
return newObj;
|
|
261
261
|
}
|
|
262
262
|
|
|
263
|
+
/**
|
|
264
|
+
* @internal
|
|
265
|
+
*/ // FIXME this should use RootConfig
|
|
266
|
+
function createMiddlewareFactory() {
|
|
267
|
+
return function createMiddleware(fn) {
|
|
268
|
+
return fn;
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
function isPlainObject(obj) {
|
|
272
|
+
return obj && typeof obj === 'object' && !Array.isArray(obj);
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* @internal
|
|
276
|
+
* Please note, `trpc-openapi` uses this function.
|
|
277
|
+
*/ function createInputMiddleware(parse) {
|
|
278
|
+
const inputMiddleware = async ({ next , rawInput , input , })=>{
|
|
279
|
+
let parsedInput;
|
|
280
|
+
try {
|
|
281
|
+
parsedInput = await parse(rawInput);
|
|
282
|
+
} catch (cause) {
|
|
283
|
+
throw new TRPCError({
|
|
284
|
+
code: 'BAD_REQUEST',
|
|
285
|
+
cause: getCauseFromUnknown(cause)
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
// Multiple input parsers
|
|
289
|
+
const combinedInput = isPlainObject(input) && isPlainObject(parsedInput) ? {
|
|
290
|
+
...input,
|
|
291
|
+
...parsedInput
|
|
292
|
+
} : parsedInput;
|
|
293
|
+
// TODO fix this typing?
|
|
294
|
+
return next({
|
|
295
|
+
input: combinedInput
|
|
296
|
+
});
|
|
297
|
+
};
|
|
298
|
+
inputMiddleware._type = 'input';
|
|
299
|
+
return inputMiddleware;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* @internal
|
|
303
|
+
*/ function createOutputMiddleware(parse) {
|
|
304
|
+
const outputMiddleware = async ({ next })=>{
|
|
305
|
+
const result = await next();
|
|
306
|
+
if (!result.ok) {
|
|
307
|
+
// pass through failures without validating
|
|
308
|
+
return result;
|
|
309
|
+
}
|
|
310
|
+
try {
|
|
311
|
+
const data = await parse(result.data);
|
|
312
|
+
return {
|
|
313
|
+
...result,
|
|
314
|
+
data
|
|
315
|
+
};
|
|
316
|
+
} catch (cause) {
|
|
317
|
+
throw new TRPCError({
|
|
318
|
+
message: 'Output validation failed',
|
|
319
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
320
|
+
cause: getCauseFromUnknown(cause)
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
outputMiddleware._type = 'output';
|
|
325
|
+
return outputMiddleware;
|
|
326
|
+
}
|
|
327
|
+
|
|
263
328
|
/**
|
|
264
329
|
* @internal
|
|
265
330
|
*/ const middlewareMarker = 'middlewareMarker';
|
|
@@ -341,53 +406,6 @@ function createBuilder(initDef) {
|
|
|
341
406
|
}
|
|
342
407
|
};
|
|
343
408
|
}
|
|
344
|
-
function isPlainObject(obj) {
|
|
345
|
-
return obj && typeof obj === 'object' && !Array.isArray(obj);
|
|
346
|
-
}
|
|
347
|
-
function createInputMiddleware(parse) {
|
|
348
|
-
return async function inputMiddleware({ next , rawInput , input }) {
|
|
349
|
-
let parsedInput;
|
|
350
|
-
try {
|
|
351
|
-
parsedInput = await parse(rawInput);
|
|
352
|
-
} catch (cause) {
|
|
353
|
-
throw new TRPCError({
|
|
354
|
-
code: 'BAD_REQUEST',
|
|
355
|
-
cause: getCauseFromUnknown(cause)
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
// Multiple input parsers
|
|
359
|
-
const combinedInput = isPlainObject(input) && isPlainObject(parsedInput) ? {
|
|
360
|
-
...input,
|
|
361
|
-
...parsedInput
|
|
362
|
-
} : parsedInput;
|
|
363
|
-
// TODO fix this typing?
|
|
364
|
-
return next({
|
|
365
|
-
input: combinedInput
|
|
366
|
-
});
|
|
367
|
-
};
|
|
368
|
-
}
|
|
369
|
-
function createOutputMiddleware(parse) {
|
|
370
|
-
return async function outputMiddleware({ next }) {
|
|
371
|
-
const result = await next();
|
|
372
|
-
if (!result.ok) {
|
|
373
|
-
// pass through failures without validating
|
|
374
|
-
return result;
|
|
375
|
-
}
|
|
376
|
-
try {
|
|
377
|
-
const data = await parse(result.data);
|
|
378
|
-
return {
|
|
379
|
-
...result,
|
|
380
|
-
data
|
|
381
|
-
};
|
|
382
|
-
} catch (cause) {
|
|
383
|
-
throw new TRPCError({
|
|
384
|
-
message: 'Output validation failed',
|
|
385
|
-
code: 'INTERNAL_SERVER_ERROR',
|
|
386
|
-
cause: getCauseFromUnknown(cause)
|
|
387
|
-
});
|
|
388
|
-
}
|
|
389
|
-
};
|
|
390
|
-
}
|
|
391
409
|
function createResolver(_def, resolver) {
|
|
392
410
|
const finalBuilder = createNewBuilder(_def, {
|
|
393
411
|
resolver,
|
|
@@ -890,4 +908,4 @@ function safeObject(...args) {
|
|
|
890
908
|
return new Router();
|
|
891
909
|
}
|
|
892
910
|
|
|
893
|
-
export { defaultTransformer as a, createBuilder as b, createRouterFactory as c, defaultFormatter as d,
|
|
911
|
+
export { defaultTransformer as a, createBuilder as b, createRouterFactory as c, defaultFormatter as d, createMiddlewareFactory as e, callProcedure as f, getDataTransformer$1 as g, createInputMiddleware as h, createOutputMiddleware as i, mergeWithoutOverrides as m, procedureTypes as p, router as r };
|
|
@@ -262,6 +262,71 @@ function getParseFn(procedureParser) {
|
|
|
262
262
|
return newObj;
|
|
263
263
|
}
|
|
264
264
|
|
|
265
|
+
/**
|
|
266
|
+
* @internal
|
|
267
|
+
*/ // FIXME this should use RootConfig
|
|
268
|
+
function createMiddlewareFactory() {
|
|
269
|
+
return function createMiddleware(fn) {
|
|
270
|
+
return fn;
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
function isPlainObject(obj) {
|
|
274
|
+
return obj && typeof obj === 'object' && !Array.isArray(obj);
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* @internal
|
|
278
|
+
* Please note, `trpc-openapi` uses this function.
|
|
279
|
+
*/ function createInputMiddleware(parse) {
|
|
280
|
+
const inputMiddleware = async ({ next , rawInput , input , })=>{
|
|
281
|
+
let parsedInput;
|
|
282
|
+
try {
|
|
283
|
+
parsedInput = await parse(rawInput);
|
|
284
|
+
} catch (cause) {
|
|
285
|
+
throw new TRPCError.TRPCError({
|
|
286
|
+
code: 'BAD_REQUEST',
|
|
287
|
+
cause: TRPCError.getCauseFromUnknown(cause)
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
// Multiple input parsers
|
|
291
|
+
const combinedInput = isPlainObject(input) && isPlainObject(parsedInput) ? {
|
|
292
|
+
...input,
|
|
293
|
+
...parsedInput
|
|
294
|
+
} : parsedInput;
|
|
295
|
+
// TODO fix this typing?
|
|
296
|
+
return next({
|
|
297
|
+
input: combinedInput
|
|
298
|
+
});
|
|
299
|
+
};
|
|
300
|
+
inputMiddleware._type = 'input';
|
|
301
|
+
return inputMiddleware;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* @internal
|
|
305
|
+
*/ function createOutputMiddleware(parse) {
|
|
306
|
+
const outputMiddleware = async ({ next })=>{
|
|
307
|
+
const result = await next();
|
|
308
|
+
if (!result.ok) {
|
|
309
|
+
// pass through failures without validating
|
|
310
|
+
return result;
|
|
311
|
+
}
|
|
312
|
+
try {
|
|
313
|
+
const data = await parse(result.data);
|
|
314
|
+
return {
|
|
315
|
+
...result,
|
|
316
|
+
data
|
|
317
|
+
};
|
|
318
|
+
} catch (cause) {
|
|
319
|
+
throw new TRPCError.TRPCError({
|
|
320
|
+
message: 'Output validation failed',
|
|
321
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
322
|
+
cause: TRPCError.getCauseFromUnknown(cause)
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
};
|
|
326
|
+
outputMiddleware._type = 'output';
|
|
327
|
+
return outputMiddleware;
|
|
328
|
+
}
|
|
329
|
+
|
|
265
330
|
/**
|
|
266
331
|
* @internal
|
|
267
332
|
*/ const middlewareMarker = 'middlewareMarker';
|
|
@@ -343,53 +408,6 @@ function createBuilder(initDef) {
|
|
|
343
408
|
}
|
|
344
409
|
};
|
|
345
410
|
}
|
|
346
|
-
function isPlainObject(obj) {
|
|
347
|
-
return obj && typeof obj === 'object' && !Array.isArray(obj);
|
|
348
|
-
}
|
|
349
|
-
function createInputMiddleware(parse) {
|
|
350
|
-
return async function inputMiddleware({ next , rawInput , input }) {
|
|
351
|
-
let parsedInput;
|
|
352
|
-
try {
|
|
353
|
-
parsedInput = await parse(rawInput);
|
|
354
|
-
} catch (cause) {
|
|
355
|
-
throw new TRPCError.TRPCError({
|
|
356
|
-
code: 'BAD_REQUEST',
|
|
357
|
-
cause: TRPCError.getCauseFromUnknown(cause)
|
|
358
|
-
});
|
|
359
|
-
}
|
|
360
|
-
// Multiple input parsers
|
|
361
|
-
const combinedInput = isPlainObject(input) && isPlainObject(parsedInput) ? {
|
|
362
|
-
...input,
|
|
363
|
-
...parsedInput
|
|
364
|
-
} : parsedInput;
|
|
365
|
-
// TODO fix this typing?
|
|
366
|
-
return next({
|
|
367
|
-
input: combinedInput
|
|
368
|
-
});
|
|
369
|
-
};
|
|
370
|
-
}
|
|
371
|
-
function createOutputMiddleware(parse) {
|
|
372
|
-
return async function outputMiddleware({ next }) {
|
|
373
|
-
const result = await next();
|
|
374
|
-
if (!result.ok) {
|
|
375
|
-
// pass through failures without validating
|
|
376
|
-
return result;
|
|
377
|
-
}
|
|
378
|
-
try {
|
|
379
|
-
const data = await parse(result.data);
|
|
380
|
-
return {
|
|
381
|
-
...result,
|
|
382
|
-
data
|
|
383
|
-
};
|
|
384
|
-
} catch (cause) {
|
|
385
|
-
throw new TRPCError.TRPCError({
|
|
386
|
-
message: 'Output validation failed',
|
|
387
|
-
code: 'INTERNAL_SERVER_ERROR',
|
|
388
|
-
cause: TRPCError.getCauseFromUnknown(cause)
|
|
389
|
-
});
|
|
390
|
-
}
|
|
391
|
-
};
|
|
392
|
-
}
|
|
393
411
|
function createResolver(_def, resolver) {
|
|
394
412
|
const finalBuilder = createNewBuilder(_def, {
|
|
395
413
|
resolver,
|
|
@@ -894,6 +912,9 @@ function safeObject(...args) {
|
|
|
894
912
|
|
|
895
913
|
exports.callProcedure = callProcedure;
|
|
896
914
|
exports.createBuilder = createBuilder;
|
|
915
|
+
exports.createInputMiddleware = createInputMiddleware;
|
|
916
|
+
exports.createMiddlewareFactory = createMiddlewareFactory;
|
|
917
|
+
exports.createOutputMiddleware = createOutputMiddleware;
|
|
897
918
|
exports.createRouterFactory = createRouterFactory;
|
|
898
919
|
exports.defaultFormatter = defaultFormatter;
|
|
899
920
|
exports.defaultTransformer = defaultTransformer;
|
package/dist/types.d.ts
CHANGED
|
@@ -26,6 +26,12 @@ export declare type Maybe<T> = T | undefined | null;
|
|
|
26
26
|
* @internal
|
|
27
27
|
*/
|
|
28
28
|
export declare type ThenArg<T> = T extends PromiseLike<infer U> ? ThenArg<U> : T;
|
|
29
|
+
/**
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
export declare type Simplify<T> = {
|
|
33
|
+
[KeyType in keyof T]: T[KeyType];
|
|
34
|
+
};
|
|
29
35
|
/**
|
|
30
36
|
* @public
|
|
31
37
|
*/
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,oBAAY,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AAEpE;;GAEG;AACH,oBAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAE5B;;GAEG;AACH,oBAAY,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC;KACxC,IAAI,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,SAAS,MAAM,CAAC,GAC7C,CAAC,CAAC,IAAI,CAAC,GACP,IAAI,SAAS,MAAM,CAAC,GACpB,CAAC,CAAC,IAAI,CAAC,GACP,KAAK;CACV,CAAC,CAAC;AAEH;;GAEG;AACH,oBAAY,QAAQ,CAClB,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChC,OAAO,SAAS,MAAM,IACpB;KACD,CAAC,IAAI,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF;;GAEG;AACH,oBAAY,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;AAE5C;;GAEG;AACH,oBAAY,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEzE;;GAEG;AACH,oBAAY,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;AAEpD;;GAEG;AACH,oBAAY,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C;;;;;GAKG;AACH,oBAAY,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAExD;;GAEG;AACH,oBAAY,oBAAoB,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,IACtE,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAEjC,aAAK,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI;KACpC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK;CACpD,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;GAEG;AACH,oBAAY,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEpE;;GAEG;AACH,oBAAY,SAAS,CAAC,CAAC,IAAI;KACxB,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,IAAI,GAAG,KAAK;CACxD,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;GAEG;AACH,oBAAY,aAAa,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,oBAAY,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AAEpE;;GAEG;AACH,oBAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAE5B;;GAEG;AACH,oBAAY,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC;KACxC,IAAI,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,SAAS,MAAM,CAAC,GAC7C,CAAC,CAAC,IAAI,CAAC,GACP,IAAI,SAAS,MAAM,CAAC,GACpB,CAAC,CAAC,IAAI,CAAC,GACP,KAAK;CACV,CAAC,CAAC;AAEH;;GAEG;AACH,oBAAY,QAAQ,CAClB,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChC,OAAO,SAAS,MAAM,IACpB;KACD,CAAC,IAAI,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF;;GAEG;AACH,oBAAY,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;AAE5C;;GAEG;AACH,oBAAY,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEzE;;GAEG;AACH,oBAAY,QAAQ,CAAC,CAAC,IAAI;KAAG,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;CAAE,CAAC;AAE/D;;GAEG;AACH,oBAAY,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;AAEpD;;GAEG;AACH,oBAAY,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C;;;;;GAKG;AACH,oBAAY,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAExD;;GAEG;AACH,oBAAY,oBAAoB,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,IACtE,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAEjC,aAAK,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI;KACpC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK;CACpD,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;GAEG;AACH,oBAAY,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEpE;;GAEG;AACH,oBAAY,SAAS,CAAC,CAAC,IAAI;KACxB,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,IAAI,GAAG,KAAK;CACxD,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;GAEG;AACH,oBAAY,aAAa,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trpc/server",
|
|
3
|
-
"version": "10.0.0-proxy-alpha.
|
|
3
|
+
"version": "10.0.0-proxy-alpha.64",
|
|
4
4
|
"description": "tRPC Server",
|
|
5
5
|
"author": "KATT",
|
|
6
6
|
"license": "MIT",
|
|
@@ -136,5 +136,5 @@
|
|
|
136
136
|
"yup": "^0.32.8",
|
|
137
137
|
"zod": "^3.0.0"
|
|
138
138
|
},
|
|
139
|
-
"gitHead": "
|
|
139
|
+
"gitHead": "0a159a6c4224920090105f6e60a2e6172a750d46"
|
|
140
140
|
}
|
package/src/core/index.ts
CHANGED
package/src/core/initTRPC.ts
CHANGED
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
defaultTransformer,
|
|
13
13
|
getDataTransformer,
|
|
14
14
|
} from '../transformer';
|
|
15
|
+
import { FlatOverwrite } from '../types';
|
|
15
16
|
import {
|
|
16
17
|
CreateInitGenerics,
|
|
17
18
|
CreateRootConfig,
|
|
@@ -23,14 +24,54 @@ import { PickFirstDefined, ValidateShape } from './internals/utils';
|
|
|
23
24
|
import { createMiddlewareFactory } from './middleware';
|
|
24
25
|
import { createRouterFactory } from './router';
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
type PartialInitGenerics = Partial<InitGenerics>;
|
|
28
|
+
|
|
29
|
+
type CreateInitGenericsFromPartial<T extends PartialInitGenerics> =
|
|
30
|
+
CreateInitGenerics<{
|
|
31
|
+
ctx: T['ctx'] extends InitGenerics['ctx'] ? T['ctx'] : {};
|
|
32
|
+
meta: T['meta'] extends InitGenerics['meta'] ? T['meta'] : {};
|
|
30
33
|
}>;
|
|
31
34
|
|
|
35
|
+
/**
|
|
36
|
+
* TODO: This can be improved:
|
|
37
|
+
* - We should be able to chain `.meta()`/`.context()` only once
|
|
38
|
+
* - Simplify typings
|
|
39
|
+
* - Doesn't need to be a class but it doesn't really hurt either
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
class TRPCBuilder<TParams extends Partial<InitGenerics> = {}> {
|
|
43
|
+
context<TNewContext extends InitGenerics['ctx']>() {
|
|
44
|
+
return new TRPCBuilder<FlatOverwrite<TParams, { ctx: TNewContext }>>();
|
|
45
|
+
}
|
|
46
|
+
meta<TNewMeta extends InitGenerics['meta']>() {
|
|
47
|
+
return new TRPCBuilder<FlatOverwrite<TParams, { meta: TNewMeta }>>();
|
|
48
|
+
}
|
|
49
|
+
create<
|
|
50
|
+
TOptions extends Partial<
|
|
51
|
+
InitOptions<CreateInitGenericsFromPartial<TParams>>
|
|
52
|
+
>,
|
|
53
|
+
>(
|
|
54
|
+
options?:
|
|
55
|
+
| ValidateShape<
|
|
56
|
+
TOptions,
|
|
57
|
+
Partial<InitOptions<CreateInitGenericsFromPartial<TParams>>>
|
|
58
|
+
>
|
|
59
|
+
| undefined,
|
|
60
|
+
) {
|
|
61
|
+
return createTRPCInner<TParams>()<TOptions>(options);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Initialize tRPC - be done exactly once per backend
|
|
67
|
+
*/
|
|
68
|
+
export const initTRPC = new TRPCBuilder();
|
|
69
|
+
|
|
70
|
+
function createTRPCInner<TParams extends Partial<InitGenerics>>() {
|
|
71
|
+
type $Generics = CreateInitGenericsFromPartial<TParams>;
|
|
72
|
+
|
|
32
73
|
type $Context = $Generics['ctx'];
|
|
33
|
-
type $Meta =
|
|
74
|
+
type $Meta = $Generics['meta'];
|
|
34
75
|
type $Options = Partial<InitOptions<$Generics>>;
|
|
35
76
|
|
|
36
77
|
return function initTRPCInner<TOptions extends $Options>(
|
|
@@ -27,7 +27,7 @@ export interface InitOptions<T extends InitGenerics> {
|
|
|
27
27
|
export type CreateInitGenerics<T extends InitGenerics> = T;
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
|
-
* The config that is resolved after
|
|
30
|
+
* The config that is resolved after `initTRPC.create()` has been called
|
|
31
31
|
* Combination of `InitTOptions` + `InitGenerics`
|
|
32
32
|
* @internal
|
|
33
33
|
*/
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { TRPCError } from '../../error/TRPCError';
|
|
2
|
-
import {
|
|
3
|
-
getCauseFromUnknown,
|
|
4
|
-
getTRPCErrorFromUnknown,
|
|
5
|
-
} from '../../error/utils';
|
|
2
|
+
import { getTRPCErrorFromUnknown } from '../../error/utils';
|
|
6
3
|
import { FlatOverwrite, MaybePromise } from '../../types';
|
|
7
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
MiddlewareFunction,
|
|
6
|
+
MiddlewareResult,
|
|
7
|
+
createInputMiddleware,
|
|
8
|
+
createOutputMiddleware,
|
|
9
|
+
} from '../middleware';
|
|
8
10
|
import { Parser, inferParser } from '../parser';
|
|
9
11
|
import {
|
|
10
12
|
MutationProcedure,
|
|
@@ -15,7 +17,7 @@ import {
|
|
|
15
17
|
} from '../procedure';
|
|
16
18
|
import { ProcedureType } from '../types';
|
|
17
19
|
import { RootConfig } from './config';
|
|
18
|
-
import {
|
|
20
|
+
import { getParseFn } from './getParseFn';
|
|
19
21
|
import { mergeWithoutOverrides } from './mergeWithoutOverrides';
|
|
20
22
|
import { ResolveOptions, middlewareMarker } from './utils';
|
|
21
23
|
import { DefaultValue as FallbackValue, Overwrite, UnsetMarker } from './utils';
|
|
@@ -261,63 +263,6 @@ export function createBuilder<TConfig extends RootConfig>(
|
|
|
261
263
|
};
|
|
262
264
|
}
|
|
263
265
|
|
|
264
|
-
function isPlainObject(obj: unknown) {
|
|
265
|
-
return obj && typeof obj === 'object' && !Array.isArray(obj);
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
export function createInputMiddleware<T>(
|
|
269
|
-
parse: ParseFn<T>,
|
|
270
|
-
): ProcedureBuilderMiddleware {
|
|
271
|
-
return async function inputMiddleware({ next, rawInput, input }) {
|
|
272
|
-
let parsedInput: ReturnType<typeof parse>;
|
|
273
|
-
try {
|
|
274
|
-
parsedInput = await parse(rawInput);
|
|
275
|
-
} catch (cause) {
|
|
276
|
-
throw new TRPCError({
|
|
277
|
-
code: 'BAD_REQUEST',
|
|
278
|
-
cause: getCauseFromUnknown(cause),
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
// Multiple input parsers
|
|
283
|
-
const combinedInput =
|
|
284
|
-
isPlainObject(input) && isPlainObject(parsedInput)
|
|
285
|
-
? {
|
|
286
|
-
...input,
|
|
287
|
-
...parsedInput,
|
|
288
|
-
}
|
|
289
|
-
: parsedInput;
|
|
290
|
-
|
|
291
|
-
// TODO fix this typing?
|
|
292
|
-
return next({ input: combinedInput } as any);
|
|
293
|
-
};
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
export function createOutputMiddleware<T>(
|
|
297
|
-
parse: ParseFn<T>,
|
|
298
|
-
): ProcedureBuilderMiddleware {
|
|
299
|
-
return async function outputMiddleware({ next }) {
|
|
300
|
-
const result = await next();
|
|
301
|
-
if (!result.ok) {
|
|
302
|
-
// pass through failures without validating
|
|
303
|
-
return result;
|
|
304
|
-
}
|
|
305
|
-
try {
|
|
306
|
-
const data = await parse(result.data);
|
|
307
|
-
return {
|
|
308
|
-
...result,
|
|
309
|
-
data,
|
|
310
|
-
};
|
|
311
|
-
} catch (cause) {
|
|
312
|
-
throw new TRPCError({
|
|
313
|
-
message: 'Output validation failed',
|
|
314
|
-
code: 'INTERNAL_SERVER_ERROR',
|
|
315
|
-
cause: getCauseFromUnknown(cause),
|
|
316
|
-
});
|
|
317
|
-
}
|
|
318
|
-
};
|
|
319
|
-
}
|
|
320
|
-
|
|
321
266
|
function createResolver(
|
|
322
267
|
_def: AnyProcedureBuilderDef,
|
|
323
268
|
resolver: (opts: ResolveOptions<any>) => MaybePromise<any>,
|
package/src/core/middleware.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
import { TRPCError } from '../error/TRPCError';
|
|
2
|
+
import { getCauseFromUnknown } from '../error/utils';
|
|
1
3
|
import { RootConfig } from './internals/config';
|
|
4
|
+
import { ParseFn } from './internals/getParseFn';
|
|
5
|
+
import { ProcedureBuilderMiddleware } from './internals/procedureBuilder';
|
|
2
6
|
import { MiddlewareMarker } from './internals/utils';
|
|
3
7
|
import { ProcedureParams } from './procedure';
|
|
4
8
|
import { ProcedureType } from './types';
|
|
@@ -47,29 +51,32 @@ export type MiddlewareResult<TParams extends ProcedureParams> =
|
|
|
47
51
|
export type MiddlewareFunction<
|
|
48
52
|
TParams extends ProcedureParams,
|
|
49
53
|
TParamsAfter extends ProcedureParams,
|
|
50
|
-
> =
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
54
|
+
> = {
|
|
55
|
+
(opts: {
|
|
56
|
+
ctx: TParams['_ctx_out'];
|
|
57
|
+
type: ProcedureType;
|
|
58
|
+
path: string;
|
|
59
|
+
input: TParams['_input_out'];
|
|
60
|
+
rawInput: unknown;
|
|
61
|
+
meta: TParams['_meta'];
|
|
62
|
+
next: {
|
|
63
|
+
(): Promise<MiddlewareResult<TParams>>;
|
|
64
|
+
<$TContext>(opts: { ctx: $TContext }): Promise<
|
|
65
|
+
MiddlewareResult<{
|
|
66
|
+
_config: any;
|
|
67
|
+
_ctx_in: TParams['_ctx_in'];
|
|
68
|
+
_ctx_out: $TContext;
|
|
69
|
+
_input_in: TParams['_input_in'];
|
|
70
|
+
_input_out: TParams['_input_out'];
|
|
71
|
+
_output_in: TParams['_output_in'];
|
|
72
|
+
_output_out: TParams['_output_out'];
|
|
73
|
+
_meta: TParams['_meta'];
|
|
74
|
+
}>
|
|
75
|
+
>;
|
|
76
|
+
};
|
|
77
|
+
}): Promise<MiddlewareResult<TParamsAfter>>;
|
|
78
|
+
_type?: string | undefined;
|
|
79
|
+
};
|
|
73
80
|
|
|
74
81
|
/**
|
|
75
82
|
* @internal
|
|
@@ -94,3 +101,71 @@ export function createMiddlewareFactory<TConfig extends RootConfig>() {
|
|
|
94
101
|
return fn;
|
|
95
102
|
};
|
|
96
103
|
}
|
|
104
|
+
|
|
105
|
+
function isPlainObject(obj: unknown) {
|
|
106
|
+
return obj && typeof obj === 'object' && !Array.isArray(obj);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* @internal
|
|
111
|
+
* Please note, `trpc-openapi` uses this function.
|
|
112
|
+
*/
|
|
113
|
+
export function createInputMiddleware<T>(parse: ParseFn<T>) {
|
|
114
|
+
const inputMiddleware: ProcedureBuilderMiddleware = async ({
|
|
115
|
+
next,
|
|
116
|
+
rawInput,
|
|
117
|
+
input,
|
|
118
|
+
}) => {
|
|
119
|
+
let parsedInput: ReturnType<typeof parse>;
|
|
120
|
+
try {
|
|
121
|
+
parsedInput = await parse(rawInput);
|
|
122
|
+
} catch (cause) {
|
|
123
|
+
throw new TRPCError({
|
|
124
|
+
code: 'BAD_REQUEST',
|
|
125
|
+
cause: getCauseFromUnknown(cause),
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Multiple input parsers
|
|
130
|
+
const combinedInput =
|
|
131
|
+
isPlainObject(input) && isPlainObject(parsedInput)
|
|
132
|
+
? {
|
|
133
|
+
...input,
|
|
134
|
+
...parsedInput,
|
|
135
|
+
}
|
|
136
|
+
: parsedInput;
|
|
137
|
+
|
|
138
|
+
// TODO fix this typing?
|
|
139
|
+
return next({ input: combinedInput } as any);
|
|
140
|
+
};
|
|
141
|
+
inputMiddleware._type = 'input';
|
|
142
|
+
return inputMiddleware;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* @internal
|
|
147
|
+
*/
|
|
148
|
+
export function createOutputMiddleware<T>(parse: ParseFn<T>) {
|
|
149
|
+
const outputMiddleware: ProcedureBuilderMiddleware = async ({ next }) => {
|
|
150
|
+
const result = await next();
|
|
151
|
+
if (!result.ok) {
|
|
152
|
+
// pass through failures without validating
|
|
153
|
+
return result;
|
|
154
|
+
}
|
|
155
|
+
try {
|
|
156
|
+
const data = await parse(result.data);
|
|
157
|
+
return {
|
|
158
|
+
...result,
|
|
159
|
+
data,
|
|
160
|
+
};
|
|
161
|
+
} catch (cause) {
|
|
162
|
+
throw new TRPCError({
|
|
163
|
+
message: 'Output validation failed',
|
|
164
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
165
|
+
cause: getCauseFromUnknown(cause),
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
outputMiddleware._type = 'output';
|
|
170
|
+
return outputMiddleware;
|
|
171
|
+
}
|
|
@@ -2,11 +2,11 @@ import { CombinedDataTransformer, ProcedureParams, ProcedureType } from '..';
|
|
|
2
2
|
import { CreateRootConfig, RootConfig } from '../core/internals/config';
|
|
3
3
|
import { getParseFnOrPassThrough } from '../core/internals/getParseFn';
|
|
4
4
|
import { mergeWithoutOverrides } from '../core/internals/mergeWithoutOverrides';
|
|
5
|
+
import { createBuilder } from '../core/internals/procedureBuilder';
|
|
5
6
|
import {
|
|
6
|
-
createBuilder,
|
|
7
7
|
createInputMiddleware,
|
|
8
8
|
createOutputMiddleware,
|
|
9
|
-
} from '../core/
|
|
9
|
+
} from '../core/middleware';
|
|
10
10
|
import {
|
|
11
11
|
MutationProcedure,
|
|
12
12
|
Procedure as NewProcedure,
|
package/src/types.ts
CHANGED
|
@@ -41,6 +41,11 @@ export type Maybe<T> = T | undefined | null;
|
|
|
41
41
|
*/
|
|
42
42
|
export type ThenArg<T> = T extends PromiseLike<infer U> ? ThenArg<U> : T;
|
|
43
43
|
|
|
44
|
+
/**
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
export type Simplify<T> = { [KeyType in keyof T]: T[KeyType] };
|
|
48
|
+
|
|
44
49
|
/**
|
|
45
50
|
* @public
|
|
46
51
|
*/
|