@trpc/server 9.25.0 → 9.25.3
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/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.d.ts +1 -1
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.dev.js +100 -20
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.prod.js +100 -20
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.esm.js +99 -19
- package/adapters/aws-lambda/package.json +4 -0
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.dev.js +12 -157
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.prod.js +12 -157
- package/adapters/lambda/dist/trpc-server-adapters-lambda.esm.js +12 -157
- package/dist/declarations/src/TRPCError.d.ts.map +1 -1
- package/dist/declarations/src/adapters/aws-lambda/index.d.ts +14 -0
- package/dist/declarations/src/adapters/aws-lambda/index.d.ts.map +1 -0
- package/dist/declarations/src/adapters/{lambda → aws-lambda}/utils.d.ts +4 -4
- package/dist/declarations/src/adapters/aws-lambda/utils.d.ts.map +1 -0
- package/dist/declarations/src/adapters/lambda/index.d.ts +11 -13
- package/dist/declarations/src/adapters/lambda/index.d.ts.map +1 -1
- package/package.json +3 -2
- package/src/TRPCError.ts +3 -1
- package/src/adapters/aws-lambda/index.ts +156 -0
- package/src/adapters/{lambda → aws-lambda}/utils.ts +5 -5
- package/src/adapters/lambda/index.ts +17 -155
- package/dist/declarations/src/adapters/lambda/utils.d.ts.map +0 -1
|
@@ -13,17 +13,17 @@ export type APIGatewayResult =
|
|
|
13
13
|
| APIGatewayProxyResult
|
|
14
14
|
| APIGatewayProxyStructuredResultV2;
|
|
15
15
|
|
|
16
|
-
export type
|
|
16
|
+
export type CreateAWSLambdaContextOptions<T extends APIGatewayEvent> = {
|
|
17
17
|
event: T;
|
|
18
18
|
context: APIGWContext;
|
|
19
19
|
};
|
|
20
|
-
export type
|
|
20
|
+
export type AWSLambdaCreateContextFn<
|
|
21
21
|
TRouter extends AnyRouter,
|
|
22
22
|
TEvent extends APIGatewayEvent,
|
|
23
23
|
> = ({
|
|
24
24
|
event,
|
|
25
25
|
context,
|
|
26
|
-
}:
|
|
26
|
+
}: CreateAWSLambdaContextOptions<TEvent>) =>
|
|
27
27
|
| inferRouterContext<TRouter>
|
|
28
28
|
| Promise<inferRouterContext<TRouter>>;
|
|
29
29
|
|
|
@@ -43,13 +43,13 @@ export type AWSLambdaOptions<
|
|
|
43
43
|
/**
|
|
44
44
|
* @link https://trpc.io/docs/context
|
|
45
45
|
**/
|
|
46
|
-
createContext:
|
|
46
|
+
createContext: AWSLambdaCreateContextFn<TRouter, TEvent>;
|
|
47
47
|
}
|
|
48
48
|
| {
|
|
49
49
|
/**
|
|
50
50
|
* @link https://trpc.io/docs/context
|
|
51
51
|
**/
|
|
52
|
-
createContext?:
|
|
52
|
+
createContext?: AWSLambdaCreateContextFn<TRouter, TEvent>;
|
|
53
53
|
}
|
|
54
54
|
);
|
|
55
55
|
|
|
@@ -1,156 +1,18 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
Context as APIGWContext,
|
|
3
|
-
APIGatewayProxyEvent,
|
|
4
|
-
APIGatewayProxyEventV2,
|
|
5
|
-
APIGatewayProxyResult,
|
|
6
|
-
APIGatewayProxyStructuredResultV2,
|
|
7
|
-
} from 'aws-lambda';
|
|
8
|
-
import { TRPCError, resolveHTTPResponse } from '../..';
|
|
9
|
-
import { HTTPHeaders, HTTPRequest } from '../../http/internals/types';
|
|
10
|
-
import type { HTTPResponse } from '../../http/internals/types';
|
|
11
|
-
import { AnyRouter, inferRouterContext } from '../../router';
|
|
12
1
|
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return {
|
|
34
|
-
method: getHTTPMethod(event),
|
|
35
|
-
query: query,
|
|
36
|
-
headers: event.headers,
|
|
37
|
-
body: event.body,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
function getHTTPMethod(event: APIGatewayEvent) {
|
|
42
|
-
if (isPayloadV1(event)) {
|
|
43
|
-
return event.httpMethod;
|
|
44
|
-
}
|
|
45
|
-
if (isPayloadV2(event)) {
|
|
46
|
-
return event.requestContext.http.method;
|
|
47
|
-
}
|
|
48
|
-
throw new TRPCError({
|
|
49
|
-
code: 'INTERNAL_SERVER_ERROR',
|
|
50
|
-
message: UNKNOWN_PAYLOAD_FORMAT_VERSION_ERROR_MESSAGE,
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
function getPath(event: APIGatewayEvent) {
|
|
54
|
-
if (isPayloadV1(event)) {
|
|
55
|
-
return event.path.slice(1);
|
|
56
|
-
}
|
|
57
|
-
if (isPayloadV2(event)) {
|
|
58
|
-
return event.rawPath.slice(1);
|
|
59
|
-
}
|
|
60
|
-
throw new TRPCError({
|
|
61
|
-
code: 'INTERNAL_SERVER_ERROR',
|
|
62
|
-
message: UNKNOWN_PAYLOAD_FORMAT_VERSION_ERROR_MESSAGE,
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
function transformHeaders(headers: HTTPHeaders): APIGatewayResult['headers'] {
|
|
66
|
-
const obj: APIGatewayResult['headers'] = {};
|
|
67
|
-
|
|
68
|
-
for (const [key, value] of Object.entries(headers)) {
|
|
69
|
-
if (typeof value === 'undefined') {
|
|
70
|
-
continue;
|
|
71
|
-
}
|
|
72
|
-
obj[key] = Array.isArray(value) ? value.join(',') : value;
|
|
73
|
-
}
|
|
74
|
-
return obj;
|
|
75
|
-
}
|
|
76
|
-
function tRPCOutputToAPIGatewayOutput<
|
|
77
|
-
TEvent extends APIGatewayEvent,
|
|
78
|
-
TResult extends APIGatewayResult,
|
|
79
|
-
>(event: TEvent, response: HTTPResponse): TResult {
|
|
80
|
-
if (isPayloadV1(event)) {
|
|
81
|
-
const resp: APIGatewayProxyResult = {
|
|
82
|
-
statusCode: response.status,
|
|
83
|
-
body: response.body ?? '',
|
|
84
|
-
headers: transformHeaders(response.headers ?? {}),
|
|
85
|
-
};
|
|
86
|
-
return resp as TResult;
|
|
87
|
-
} else if (isPayloadV2(event)) {
|
|
88
|
-
const resp: APIGatewayProxyStructuredResultV2 = {
|
|
89
|
-
statusCode: response.status,
|
|
90
|
-
body: response.body ?? undefined,
|
|
91
|
-
headers: transformHeaders(response.headers ?? {}),
|
|
92
|
-
};
|
|
93
|
-
return resp as TResult;
|
|
94
|
-
} else {
|
|
95
|
-
throw new TRPCError({
|
|
96
|
-
code: 'INTERNAL_SERVER_ERROR',
|
|
97
|
-
message: UNKNOWN_PAYLOAD_FORMAT_VERSION_ERROR_MESSAGE,
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/** Will check the createContext of the TRouter and get the parameter of event.
|
|
103
|
-
* @internal
|
|
104
|
-
**/
|
|
105
|
-
type inferAPIGWEvent<
|
|
106
|
-
TRouter extends AnyRouter,
|
|
107
|
-
TEvent extends APIGatewayEvent,
|
|
108
|
-
> = AWSLambdaOptions<TRouter, TEvent>['createContext'] extends NonNullable<
|
|
109
|
-
AWSLambdaOptions<TRouter, TEvent>['createContext']
|
|
110
|
-
>
|
|
111
|
-
? Parameters<AWSLambdaOptions<TRouter, TEvent>['createContext']>[0]['event']
|
|
112
|
-
: APIGatewayEvent;
|
|
113
|
-
|
|
114
|
-
/** 1:1 mapping of v1 or v2 input events, deduces which is which.
|
|
115
|
-
* @internal
|
|
116
|
-
**/
|
|
117
|
-
type inferAPIGWReturn<T> = T extends APIGatewayProxyEvent
|
|
118
|
-
? APIGatewayProxyResult
|
|
119
|
-
: T extends APIGatewayProxyEventV2
|
|
120
|
-
? APIGatewayProxyStructuredResultV2
|
|
121
|
-
: never;
|
|
122
|
-
export function lambdaRequestHandler<
|
|
123
|
-
TRouter extends AnyRouter,
|
|
124
|
-
TEvent extends inferAPIGWEvent<TRouter, TEvent>,
|
|
125
|
-
TResult extends inferAPIGWReturn<TEvent>,
|
|
126
|
-
>(
|
|
127
|
-
opts: AWSLambdaOptions<TRouter, TEvent>,
|
|
128
|
-
): (event: TEvent, context: APIGWContext) => Promise<TResult> {
|
|
129
|
-
return async (event, context) => {
|
|
130
|
-
const req = lambdaEventToHTTPRequest(event);
|
|
131
|
-
const path = getPath(event);
|
|
132
|
-
const createContext = async function _createContext(): Promise<
|
|
133
|
-
inferRouterContext<TRouter>
|
|
134
|
-
> {
|
|
135
|
-
return await opts.createContext?.({ event, context });
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
const response = await resolveHTTPResponse({
|
|
139
|
-
router: opts.router,
|
|
140
|
-
batching: opts.batching,
|
|
141
|
-
responseMeta: opts?.responseMeta,
|
|
142
|
-
createContext,
|
|
143
|
-
req,
|
|
144
|
-
path,
|
|
145
|
-
error: null,
|
|
146
|
-
onError(o) {
|
|
147
|
-
opts?.onError?.({
|
|
148
|
-
...o,
|
|
149
|
-
req: event,
|
|
150
|
-
});
|
|
151
|
-
},
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
return tRPCOutputToAPIGatewayOutput<TEvent, TResult>(event, response);
|
|
155
|
-
};
|
|
156
|
-
}
|
|
2
|
+
CreateAWSLambdaContextOptions,
|
|
3
|
+
awsLambdaRequestHandler,
|
|
4
|
+
} from '../aws-lambda';
|
|
5
|
+
import { APIGatewayEvent } from '../aws-lambda/utils';
|
|
6
|
+
|
|
7
|
+
export * from '../aws-lambda';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated use `aws-lambda` instead
|
|
11
|
+
*/
|
|
12
|
+
export type CreateLambdaContextOptions<T extends APIGatewayEvent> =
|
|
13
|
+
CreateAWSLambdaContextOptions<T>;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @deprecated use `aws-lambda` instead
|
|
17
|
+
*/
|
|
18
|
+
export const lambdaRequestHandler = awsLambdaRequestHandler;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"../../../../../src/adapters/lambda","sources":["utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,IAAI,YAAY,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,iCAAiC,EAClC,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElE,oBAAY,eAAe,GAAG,oBAAoB,GAAG,sBAAsB,CAAC;AAC5E,oBAAY,gBAAgB,GACxB,qBAAqB,GACrB,iCAAiC,CAAC;AAEtC,oBAAY,0BAA0B,CAAC,CAAC,SAAS,eAAe,IAAI;IAClE,KAAK,EAAE,CAAC,CAAC;IACT,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AACF,oBAAY,qBAAqB,CAC/B,OAAO,SAAS,SAAS,EACzB,MAAM,SAAS,eAAe,IAC5B,CAAC,EACH,KAAK,EACL,OAAO,GACR,EAAE,0BAA0B,CAAC,MAAM,CAAC,KACjC,kBAAkB,CAAC,OAAO,CAAC,GAC3B,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AAEzC,oBAAY,gBAAgB,CAC1B,OAAO,SAAS,SAAS,EACzB,MAAM,SAAS,eAAe,IAE9B,CAAE;IACE,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACrD,YAAY,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;CACxC,GAAG,CACA;IACE;;QAEI;IACJ,aAAa,EAAE,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;CACvD,GACD;IACE;;QAEI;IACJ,aAAa,CAAC,EAAE,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;CACxD,CACJ,CAAA,CAAC;AAEN,wBAAgB,WAAW,CACzB,KAAK,EAAE,eAAe,GACrB,KAAK,IAAI,oBAAoB,CAE/B;AACD,wBAAgB,WAAW,CACzB,KAAK,EAAE,eAAe,GACrB,KAAK,IAAI,sBAAsB,CAEjC;AAmBD,oBAAY,+BAA+B,GAAG,KAAK,GAAG,KAAK,CAAC;AAC5D,oBAAY,8BAA8B,GACtC,+BAA+B,GAC/B,QAAQ,CAAC;AAEb,eAAO,MAAM,4CAA4C,QAEiD,CAAC"}
|