@trpc/server 10.0.0-proxy-beta.5 → 10.0.0-proxy-beta.7
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/{TRPCError-e99e7cbe.mjs → TRPCError-281ac25a.mjs} +1 -1
- package/dist/adapters/aws-lambda/index.js +2 -2
- package/dist/adapters/aws-lambda/index.mjs +3 -3
- package/dist/adapters/express.js +2 -2
- package/dist/adapters/express.mjs +3 -3
- package/dist/adapters/fastify/index.js +1 -1
- package/dist/adapters/fastify/index.mjs +2 -2
- package/dist/adapters/fetch/index.js +1 -1
- package/dist/adapters/fetch/index.mjs +2 -2
- package/dist/adapters/next.js +2 -2
- package/dist/adapters/next.mjs +3 -3
- package/dist/adapters/node-http/index.js +2 -2
- package/dist/adapters/node-http/index.mjs +3 -3
- package/dist/adapters/standalone.d.ts +1 -1
- package/dist/adapters/standalone.js +3 -3
- package/dist/adapters/standalone.mjs +4 -4
- package/dist/adapters/ws.mjs +1 -1
- package/dist/index.js +6 -6
- package/dist/index.mjs +5 -4
- package/dist/{nodeHTTPRequestHandler-1427713e.mjs → nodeHTTPRequestHandler-b59d2c10.mjs} +2 -2
- package/dist/{nodeHTTPRequestHandler-c3200031.js → nodeHTTPRequestHandler-d30a4185.js} +1 -1
- package/dist/{resolveHTTPResponse-6fecf1e4.js → resolveHTTPResponse-0a8e47b8.js} +1 -273
- package/dist/{resolveHTTPResponse-d922c40d.mjs → resolveHTTPResponse-24d99c94.mjs} +3 -270
- package/dist/{router-239218de.mjs → router-6e04fa44.mjs} +273 -6
- package/dist/{router-cf869ecb.js → router-bf52be2e.js} +279 -8
- package/dist/subscription.mjs +1 -1
- package/package.json +25 -12
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.d.ts +0 -1
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.dev.js +0 -190
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.js +0 -7
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.prod.js +0 -190
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.esm.js +0 -186
- package/adapters/express/dist/trpc-server-adapters-express.cjs.d.ts +0 -1
- package/adapters/express/dist/trpc-server-adapters-express.cjs.dev.js +0 -23
- package/adapters/express/dist/trpc-server-adapters-express.cjs.js +0 -7
- package/adapters/express/dist/trpc-server-adapters-express.cjs.prod.js +0 -23
- package/adapters/express/dist/trpc-server-adapters-express.esm.js +0 -19
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.d.ts +0 -1
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.dev.js +0 -109
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.js +0 -7
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.prod.js +0 -109
- package/adapters/fastify/dist/trpc-server-adapters-fastify.esm.js +0 -104
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.d.ts +0 -1
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.dev.js +0 -25
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.js +0 -7
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.prod.js +0 -25
- package/adapters/lambda/dist/trpc-server-adapters-lambda.esm.js +0 -21
- package/adapters/next/dist/trpc-server-adapters-next.cjs.d.ts +0 -1
- package/adapters/next/dist/trpc-server-adapters-next.cjs.dev.js +0 -56
- package/adapters/next/dist/trpc-server-adapters-next.cjs.js +0 -7
- package/adapters/next/dist/trpc-server-adapters-next.cjs.prod.js +0 -56
- package/adapters/next/dist/trpc-server-adapters-next.esm.js +0 -52
- package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.d.ts +0 -1
- package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.dev.js +0 -13
- package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.js +0 -7
- package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.prod.js +0 -13
- package/adapters/node-http/dist/trpc-server-adapters-node-http.esm.js +0 -5
- package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.d.ts +0 -1
- package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.dev.js +0 -46
- package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.js +0 -7
- package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.prod.js +0 -46
- package/adapters/standalone/dist/trpc-server-adapters-standalone.esm.js +0 -36
- package/adapters/ws/dist/trpc-server-adapters-ws.cjs.d.ts +0 -1
- package/adapters/ws/dist/trpc-server-adapters-ws.cjs.dev.js +0 -363
- package/adapters/ws/dist/trpc-server-adapters-ws.cjs.js +0 -7
- package/adapters/ws/dist/trpc-server-adapters-ws.cjs.prod.js +0 -363
- package/adapters/ws/dist/trpc-server-adapters-ws.esm.js +0 -359
- package/rpc/dist/trpc-server-rpc.cjs.d.ts +0 -1
- package/rpc/dist/trpc-server-rpc.cjs.dev.js +0 -10
- package/rpc/dist/trpc-server-rpc.cjs.js +0 -7
- package/rpc/dist/trpc-server-rpc.cjs.prod.js +0 -10
- package/rpc/dist/trpc-server-rpc.esm.js +0 -1
|
@@ -1,9 +1,276 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var resolveHTTPResponse = require('./resolveHTTPResponse-
|
|
3
|
+
var resolveHTTPResponse = require('./resolveHTTPResponse-0a8e47b8.js');
|
|
4
4
|
var codes = require('./codes-76c38a34.js');
|
|
5
5
|
var TRPCError = require('./TRPCError-fe9113e5.js');
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/ // FIXME this should use RootConfig
|
|
10
|
+
function createMiddlewareFactory() {
|
|
11
|
+
return function createMiddleware(fn) {
|
|
12
|
+
return fn;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function isPlainObject(obj) {
|
|
16
|
+
return obj && typeof obj === 'object' && !Array.isArray(obj);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @internal
|
|
20
|
+
* Please note, `trpc-openapi` uses this function.
|
|
21
|
+
*/ function createInputMiddleware(parse) {
|
|
22
|
+
const inputMiddleware = async ({ next , rawInput , input , })=>{
|
|
23
|
+
let parsedInput;
|
|
24
|
+
try {
|
|
25
|
+
parsedInput = await parse(rawInput);
|
|
26
|
+
} catch (cause) {
|
|
27
|
+
throw new TRPCError.TRPCError({
|
|
28
|
+
code: 'BAD_REQUEST',
|
|
29
|
+
cause: TRPCError.getCauseFromUnknown(cause)
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
// Multiple input parsers
|
|
33
|
+
const combinedInput = isPlainObject(input) && isPlainObject(parsedInput) ? {
|
|
34
|
+
...input,
|
|
35
|
+
...parsedInput
|
|
36
|
+
} : parsedInput;
|
|
37
|
+
// TODO fix this typing?
|
|
38
|
+
return next({
|
|
39
|
+
input: combinedInput
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
inputMiddleware._type = 'input';
|
|
43
|
+
return inputMiddleware;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* @internal
|
|
47
|
+
*/ function createOutputMiddleware(parse) {
|
|
48
|
+
const outputMiddleware = async ({ next })=>{
|
|
49
|
+
const result = await next();
|
|
50
|
+
if (!result.ok) {
|
|
51
|
+
// pass through failures without validating
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
const data = await parse(result.data);
|
|
56
|
+
return {
|
|
57
|
+
...result,
|
|
58
|
+
data
|
|
59
|
+
};
|
|
60
|
+
} catch (cause) {
|
|
61
|
+
throw new TRPCError.TRPCError({
|
|
62
|
+
message: 'Output validation failed',
|
|
63
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
64
|
+
cause: TRPCError.getCauseFromUnknown(cause)
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
outputMiddleware._type = 'output';
|
|
69
|
+
return outputMiddleware;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function getParseFn$1(procedureParser) {
|
|
73
|
+
const parser = procedureParser;
|
|
74
|
+
if (typeof parser === 'function') {
|
|
75
|
+
// ProcedureParserCustomValidatorEsque
|
|
76
|
+
return parser;
|
|
77
|
+
}
|
|
78
|
+
if (typeof parser.parseAsync === 'function') {
|
|
79
|
+
// ProcedureParserZodEsque
|
|
80
|
+
return parser.parseAsync.bind(parser);
|
|
81
|
+
}
|
|
82
|
+
if (typeof parser.parse === 'function') {
|
|
83
|
+
// ProcedureParserZodEsque
|
|
84
|
+
return parser.parse.bind(parser);
|
|
85
|
+
}
|
|
86
|
+
if (typeof parser.validateSync === 'function') {
|
|
87
|
+
// ProcedureParserYupEsque
|
|
88
|
+
return parser.validateSync.bind(parser);
|
|
89
|
+
}
|
|
90
|
+
if (typeof parser.create === 'function') {
|
|
91
|
+
// ProcedureParserSuperstructEsque
|
|
92
|
+
return parser.create.bind(parser);
|
|
93
|
+
}
|
|
94
|
+
throw new Error('Could not find a validator fn');
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* @deprecated only for backwards compat
|
|
98
|
+
* @internal
|
|
99
|
+
*/ function getParseFnOrPassThrough(procedureParser) {
|
|
100
|
+
if (!procedureParser) {
|
|
101
|
+
return (v)=>v;
|
|
102
|
+
}
|
|
103
|
+
return getParseFn$1(procedureParser);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* @internal
|
|
108
|
+
*/ const middlewareMarker$1 = 'middlewareMarker';
|
|
109
|
+
|
|
110
|
+
function createNewBuilder(def1, def2) {
|
|
111
|
+
const { middlewares =[] , inputs , ...rest } = def2;
|
|
112
|
+
// TODO: maybe have a fn here to warn about calls
|
|
113
|
+
return createBuilder({
|
|
114
|
+
...resolveHTTPResponse.mergeWithoutOverrides(def1, rest),
|
|
115
|
+
inputs: [
|
|
116
|
+
...def1.inputs,
|
|
117
|
+
...inputs ?? []
|
|
118
|
+
],
|
|
119
|
+
middlewares: [
|
|
120
|
+
...def1.middlewares,
|
|
121
|
+
...middlewares
|
|
122
|
+
]
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
function createBuilder(initDef) {
|
|
126
|
+
const _def = initDef || {
|
|
127
|
+
inputs: [],
|
|
128
|
+
middlewares: []
|
|
129
|
+
};
|
|
130
|
+
return {
|
|
131
|
+
_def,
|
|
132
|
+
input (input) {
|
|
133
|
+
const parser = getParseFn$1(input);
|
|
134
|
+
return createNewBuilder(_def, {
|
|
135
|
+
inputs: [
|
|
136
|
+
input
|
|
137
|
+
],
|
|
138
|
+
middlewares: [
|
|
139
|
+
createInputMiddleware(parser)
|
|
140
|
+
]
|
|
141
|
+
});
|
|
142
|
+
},
|
|
143
|
+
output (output) {
|
|
144
|
+
const parseOutput = getParseFn$1(output);
|
|
145
|
+
return createNewBuilder(_def, {
|
|
146
|
+
output,
|
|
147
|
+
middlewares: [
|
|
148
|
+
createOutputMiddleware(parseOutput)
|
|
149
|
+
]
|
|
150
|
+
});
|
|
151
|
+
},
|
|
152
|
+
meta (meta) {
|
|
153
|
+
return createNewBuilder(_def, {
|
|
154
|
+
meta: meta
|
|
155
|
+
});
|
|
156
|
+
},
|
|
157
|
+
unstable_concat (builder) {
|
|
158
|
+
return createNewBuilder(_def, builder._def);
|
|
159
|
+
},
|
|
160
|
+
use (middleware) {
|
|
161
|
+
return createNewBuilder(_def, {
|
|
162
|
+
middlewares: [
|
|
163
|
+
middleware
|
|
164
|
+
]
|
|
165
|
+
});
|
|
166
|
+
},
|
|
167
|
+
query (resolver) {
|
|
168
|
+
return createResolver({
|
|
169
|
+
..._def,
|
|
170
|
+
query: true
|
|
171
|
+
}, resolver);
|
|
172
|
+
},
|
|
173
|
+
mutation (resolver) {
|
|
174
|
+
return createResolver({
|
|
175
|
+
..._def,
|
|
176
|
+
mutation: true
|
|
177
|
+
}, resolver);
|
|
178
|
+
},
|
|
179
|
+
subscription (resolver) {
|
|
180
|
+
return createResolver({
|
|
181
|
+
..._def,
|
|
182
|
+
subscription: true
|
|
183
|
+
}, resolver);
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
function createResolver(_def, resolver) {
|
|
188
|
+
const finalBuilder = createNewBuilder(_def, {
|
|
189
|
+
resolver,
|
|
190
|
+
middlewares: [
|
|
191
|
+
async function resolveMiddleware(opts) {
|
|
192
|
+
const data = await resolver(opts);
|
|
193
|
+
return {
|
|
194
|
+
marker: middlewareMarker$1,
|
|
195
|
+
ok: true,
|
|
196
|
+
data,
|
|
197
|
+
ctx: opts.ctx
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
]
|
|
201
|
+
});
|
|
202
|
+
return createProcedureCaller(finalBuilder._def);
|
|
203
|
+
}
|
|
204
|
+
const codeblock = `
|
|
205
|
+
If you want to call this function on the server, you do the following:
|
|
206
|
+
This is a client-only function.
|
|
207
|
+
|
|
208
|
+
const caller = appRouter.createCaller({
|
|
209
|
+
/* ... your context */
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
const result = await caller.call('myProcedure', input);
|
|
213
|
+
`.trim();
|
|
214
|
+
function createProcedureCaller(_def) {
|
|
215
|
+
const procedure = async function resolve(opts) {
|
|
216
|
+
// is direct server-side call
|
|
217
|
+
if (!opts || !('rawInput' in opts)) {
|
|
218
|
+
throw new Error(codeblock);
|
|
219
|
+
}
|
|
220
|
+
// run the middlewares recursively with the resolver as the last one
|
|
221
|
+
const callRecursive = async (callOpts = {
|
|
222
|
+
index: 0,
|
|
223
|
+
ctx: opts.ctx
|
|
224
|
+
})=>{
|
|
225
|
+
try {
|
|
226
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
227
|
+
const middleware = _def.middlewares[callOpts.index];
|
|
228
|
+
const result = await middleware({
|
|
229
|
+
ctx: callOpts.ctx,
|
|
230
|
+
type: opts.type,
|
|
231
|
+
path: opts.path,
|
|
232
|
+
rawInput: opts.rawInput,
|
|
233
|
+
meta: _def.meta,
|
|
234
|
+
input: callOpts.input,
|
|
235
|
+
next: async (nextOpts)=>{
|
|
236
|
+
return await callRecursive({
|
|
237
|
+
index: callOpts.index + 1,
|
|
238
|
+
ctx: nextOpts && 'ctx' in nextOpts ? {
|
|
239
|
+
...callOpts.ctx,
|
|
240
|
+
...nextOpts.ctx
|
|
241
|
+
} : callOpts.ctx,
|
|
242
|
+
input: nextOpts && 'input' in nextOpts ? nextOpts.input : callOpts.input
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
return result;
|
|
247
|
+
} catch (cause) {
|
|
248
|
+
return {
|
|
249
|
+
ok: false,
|
|
250
|
+
error: TRPCError.getTRPCErrorFromUnknown(cause),
|
|
251
|
+
marker: middlewareMarker$1
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
// there's always at least one "next" since we wrap this.resolver in a middleware
|
|
256
|
+
const result = await callRecursive();
|
|
257
|
+
if (!result) {
|
|
258
|
+
throw new TRPCError.TRPCError({
|
|
259
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
260
|
+
message: 'No result from middlewares - did you forget to `return next()`?'
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
if (!result.ok) {
|
|
264
|
+
// re-throw original error
|
|
265
|
+
throw result.error;
|
|
266
|
+
}
|
|
267
|
+
return result.data;
|
|
268
|
+
};
|
|
269
|
+
procedure._def = _def;
|
|
270
|
+
procedure.meta = _def.meta;
|
|
271
|
+
return procedure;
|
|
272
|
+
}
|
|
273
|
+
|
|
7
274
|
resolveHTTPResponse.assertNotBrowser();
|
|
8
275
|
|
|
9
276
|
/**
|
|
@@ -89,7 +356,7 @@ function getParseFn(procedureParser) {
|
|
|
89
356
|
data,
|
|
90
357
|
ctx
|
|
91
358
|
};
|
|
92
|
-
}
|
|
359
|
+
}
|
|
93
360
|
]);
|
|
94
361
|
// run the middlewares recursively with the resolver as the last one
|
|
95
362
|
const callRecursive = async (callOpts = {
|
|
@@ -184,17 +451,17 @@ function createProcedure(opts) {
|
|
|
184
451
|
|
|
185
452
|
function migrateProcedure(oldProc, type) {
|
|
186
453
|
const def = oldProc._def();
|
|
187
|
-
const inputParser =
|
|
188
|
-
const outputParser =
|
|
189
|
-
const inputMiddleware =
|
|
190
|
-
const builder =
|
|
454
|
+
const inputParser = getParseFnOrPassThrough(def.inputParser);
|
|
455
|
+
const outputParser = getParseFnOrPassThrough(def.outputParser);
|
|
456
|
+
const inputMiddleware = createInputMiddleware(inputParser);
|
|
457
|
+
const builder = createBuilder({
|
|
191
458
|
inputs: [
|
|
192
459
|
def.inputParser
|
|
193
460
|
],
|
|
194
461
|
middlewares: [
|
|
195
462
|
...def.middlewares,
|
|
196
463
|
inputMiddleware,
|
|
197
|
-
|
|
464
|
+
createOutputMiddleware(outputParser)
|
|
198
465
|
],
|
|
199
466
|
meta: def.meta,
|
|
200
467
|
output: def.outputParser,
|
|
@@ -298,7 +565,7 @@ function safeObject(...args) {
|
|
|
298
565
|
const duplicates = [
|
|
299
566
|
...duplicateQueries,
|
|
300
567
|
...duplicateMutations,
|
|
301
|
-
...duplicateSubscriptions
|
|
568
|
+
...duplicateSubscriptions
|
|
302
569
|
];
|
|
303
570
|
if (duplicates.length) {
|
|
304
571
|
throw new Error(`Duplicate endpoint(s): ${duplicates.join(', ')}`);
|
|
@@ -450,4 +717,8 @@ function safeObject(...args) {
|
|
|
450
717
|
return new Router();
|
|
451
718
|
}
|
|
452
719
|
|
|
720
|
+
exports.createBuilder = createBuilder;
|
|
721
|
+
exports.createInputMiddleware = createInputMiddleware;
|
|
722
|
+
exports.createMiddlewareFactory = createMiddlewareFactory;
|
|
723
|
+
exports.createOutputMiddleware = createOutputMiddleware;
|
|
453
724
|
exports.router = router;
|
package/dist/subscription.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trpc/server",
|
|
3
|
-
"version": "10.0.0-proxy-beta.
|
|
3
|
+
"version": "10.0.0-proxy-beta.7",
|
|
4
4
|
"description": "tRPC Server",
|
|
5
5
|
"author": "KATT",
|
|
6
6
|
"license": "MIT",
|
|
@@ -11,16 +11,23 @@
|
|
|
11
11
|
"directory": "packages/server"
|
|
12
12
|
},
|
|
13
13
|
"eslintConfig": {
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
"overrides": [
|
|
15
|
+
{
|
|
16
|
+
"files": [
|
|
17
|
+
"src"
|
|
18
|
+
],
|
|
19
|
+
"rules": {
|
|
20
|
+
"explicit-module-boundary-types": "off",
|
|
21
|
+
"no-restricted-imports": [
|
|
22
|
+
"error",
|
|
23
|
+
"@trpc/server"
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
]
|
|
21
28
|
},
|
|
22
29
|
"scripts": {
|
|
23
|
-
"benchmark": "
|
|
30
|
+
"benchmark": "tsc --project tsconfig.benchmark.json",
|
|
24
31
|
"ts-watch": "tsc --project tsconfig.watch.json"
|
|
25
32
|
},
|
|
26
33
|
"main": "dist/index.js",
|
|
@@ -109,11 +116,16 @@
|
|
|
109
116
|
"devDependencies": {
|
|
110
117
|
"@cloudflare/workers-types": "^3.14.1",
|
|
111
118
|
"@fastify/websocket": "^5.0.0",
|
|
112
|
-
"@miniflare/core": "^2.
|
|
113
|
-
"@
|
|
119
|
+
"@miniflare/core": "^2.9.0",
|
|
120
|
+
"@trpc/client": "10.0.0-proxy-beta.7",
|
|
121
|
+
"@trpc/next": "10.0.0-proxy-beta.7",
|
|
122
|
+
"@trpc/react": "10.0.0-proxy-beta.7",
|
|
123
|
+
"@trpc/server": "10.0.0-proxy-beta.7",
|
|
114
124
|
"@types/aws-lambda": "^8.10.97",
|
|
115
125
|
"@types/express": "^4.17.12",
|
|
116
126
|
"@types/hash-sum": "^1.0.0",
|
|
127
|
+
"@types/node": "^18.7.20",
|
|
128
|
+
"@types/node-fetch": "^2.5.11",
|
|
117
129
|
"@types/ws": "^8.2.0",
|
|
118
130
|
"abort-controller": "^3.0.0",
|
|
119
131
|
"aws-lambda": "^1.0.7",
|
|
@@ -130,11 +142,12 @@
|
|
|
130
142
|
"myzod": "^1.3.1",
|
|
131
143
|
"next": "^12.3.1",
|
|
132
144
|
"node-fetch": "^2.6.1",
|
|
145
|
+
"superjson": "^1.7.4",
|
|
133
146
|
"superstruct": "^0.15.2",
|
|
134
147
|
"typescript": "^4.8.3",
|
|
135
148
|
"ws": "^8.0.0",
|
|
136
149
|
"yup": "^0.32.8",
|
|
137
150
|
"zod": "^3.0.0"
|
|
138
151
|
},
|
|
139
|
-
"gitHead": "
|
|
152
|
+
"gitHead": "5e39af089a59fe695a38662cac7775b01c65a16e"
|
|
140
153
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "../../../dist/declarations/src/adapters/aws-lambda/index";
|
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var transformTRPCResponse = require('../../../dist/transformTRPCResponse-36a41418.cjs.dev.js');
|
|
6
|
-
require('../../../dist/router-ee876044.cjs.dev.js');
|
|
7
|
-
require('events');
|
|
8
|
-
require('http');
|
|
9
|
-
require('url');
|
|
10
|
-
require('../../../dist/nodeHTTPRequestHandler-9a93c255.cjs.dev.js');
|
|
11
|
-
var resolveHTTPResponse = require('../../../dist/resolveHTTPResponse-ab01e4b9.cjs.dev.js');
|
|
12
|
-
require('../../../dist/codes-130e62df.cjs.dev.js');
|
|
13
|
-
|
|
14
|
-
function isPayloadV1(event) {
|
|
15
|
-
return determinePayloadFormat(event) == '1.0';
|
|
16
|
-
}
|
|
17
|
-
function isPayloadV2(event) {
|
|
18
|
-
return determinePayloadFormat(event) == '2.0';
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function determinePayloadFormat(event) {
|
|
22
|
-
// https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html
|
|
23
|
-
// According to AWS support, version is is extracted from the version property in the event.
|
|
24
|
-
// If there is no version property, then the version is implied as 1.0
|
|
25
|
-
const unknownEvent = event;
|
|
26
|
-
|
|
27
|
-
if (typeof unknownEvent.version === 'undefined') {
|
|
28
|
-
return '1.0';
|
|
29
|
-
} else {
|
|
30
|
-
if (['1.0', '2.0'].includes(unknownEvent.version)) {
|
|
31
|
-
return unknownEvent.version;
|
|
32
|
-
} else {
|
|
33
|
-
return 'custom';
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const UNKNOWN_PAYLOAD_FORMAT_VERSION_ERROR_MESSAGE = 'Custom payload format version not handled by this adapter. Please use either 1.0 or 2.0. More information here' + 'https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html';
|
|
39
|
-
|
|
40
|
-
function lambdaEventToHTTPRequest(event) {
|
|
41
|
-
const query = new URLSearchParams();
|
|
42
|
-
|
|
43
|
-
for (const [key, value] of Object.entries((_event$queryStringPar = event.queryStringParameters) !== null && _event$queryStringPar !== void 0 ? _event$queryStringPar : {})) {
|
|
44
|
-
var _event$queryStringPar;
|
|
45
|
-
|
|
46
|
-
if (typeof value !== 'undefined') {
|
|
47
|
-
query.append(key, value);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return {
|
|
52
|
-
method: getHTTPMethod(event),
|
|
53
|
-
query: query,
|
|
54
|
-
headers: event.headers,
|
|
55
|
-
body: event.body
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
function getHTTPMethod(event) {
|
|
60
|
-
if (isPayloadV1(event)) {
|
|
61
|
-
return event.httpMethod;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (isPayloadV2(event)) {
|
|
65
|
-
return event.requestContext.http.method;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
throw new transformTRPCResponse.TRPCError({
|
|
69
|
-
code: 'INTERNAL_SERVER_ERROR',
|
|
70
|
-
message: UNKNOWN_PAYLOAD_FORMAT_VERSION_ERROR_MESSAGE
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
function getPath(event) {
|
|
75
|
-
if (isPayloadV1(event)) {
|
|
76
|
-
const matches = event.resource.matchAll(/\{(.*?)\}/g);
|
|
77
|
-
|
|
78
|
-
for (const match of matches) {
|
|
79
|
-
const group = match[1];
|
|
80
|
-
|
|
81
|
-
if (group.includes('+') && event.pathParameters) {
|
|
82
|
-
return event.pathParameters[group.replace('+', '')] || '';
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return event.path.slice(1);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if (isPayloadV2(event)) {
|
|
90
|
-
const matches = event.routeKey.matchAll(/\{(.*?)\}/g);
|
|
91
|
-
|
|
92
|
-
for (const match of matches) {
|
|
93
|
-
const group = match[1];
|
|
94
|
-
|
|
95
|
-
if (group.includes('+') && event.pathParameters) {
|
|
96
|
-
return event.pathParameters[group.replace('+', '')] || '';
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return event.rawPath.slice(1);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
throw new transformTRPCResponse.TRPCError({
|
|
104
|
-
code: 'INTERNAL_SERVER_ERROR',
|
|
105
|
-
message: UNKNOWN_PAYLOAD_FORMAT_VERSION_ERROR_MESSAGE
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
function transformHeaders(headers) {
|
|
110
|
-
const obj = {};
|
|
111
|
-
|
|
112
|
-
for (const [key, value] of Object.entries(headers)) {
|
|
113
|
-
if (typeof value === 'undefined') {
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
obj[key] = Array.isArray(value) ? value.join(',') : value;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return obj;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
function tRPCOutputToAPIGatewayOutput(event, response) {
|
|
124
|
-
if (isPayloadV1(event)) {
|
|
125
|
-
var _response$body, _response$headers;
|
|
126
|
-
|
|
127
|
-
const resp = {
|
|
128
|
-
statusCode: response.status,
|
|
129
|
-
body: (_response$body = response.body) !== null && _response$body !== void 0 ? _response$body : '',
|
|
130
|
-
headers: transformHeaders((_response$headers = response.headers) !== null && _response$headers !== void 0 ? _response$headers : {})
|
|
131
|
-
};
|
|
132
|
-
return resp;
|
|
133
|
-
} else if (isPayloadV2(event)) {
|
|
134
|
-
var _response$body2, _response$headers2;
|
|
135
|
-
|
|
136
|
-
const resp = {
|
|
137
|
-
statusCode: response.status,
|
|
138
|
-
body: (_response$body2 = response.body) !== null && _response$body2 !== void 0 ? _response$body2 : undefined,
|
|
139
|
-
headers: transformHeaders((_response$headers2 = response.headers) !== null && _response$headers2 !== void 0 ? _response$headers2 : {})
|
|
140
|
-
};
|
|
141
|
-
return resp;
|
|
142
|
-
} else {
|
|
143
|
-
throw new transformTRPCResponse.TRPCError({
|
|
144
|
-
code: 'INTERNAL_SERVER_ERROR',
|
|
145
|
-
message: UNKNOWN_PAYLOAD_FORMAT_VERSION_ERROR_MESSAGE
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
/** Will check the createContext of the TRouter and get the parameter of event.
|
|
150
|
-
* @internal
|
|
151
|
-
**/
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
function awsLambdaRequestHandler(opts) {
|
|
155
|
-
return async (event, context) => {
|
|
156
|
-
const req = lambdaEventToHTTPRequest(event);
|
|
157
|
-
const path = getPath(event);
|
|
158
|
-
|
|
159
|
-
const createContext = async function _createContext() {
|
|
160
|
-
var _opts$createContext;
|
|
161
|
-
|
|
162
|
-
return await ((_opts$createContext = opts.createContext) === null || _opts$createContext === void 0 ? void 0 : _opts$createContext.call(opts, {
|
|
163
|
-
event,
|
|
164
|
-
context
|
|
165
|
-
}));
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
const response = await resolveHTTPResponse.resolveHTTPResponse({
|
|
169
|
-
router: opts.router,
|
|
170
|
-
batching: opts.batching,
|
|
171
|
-
responseMeta: opts === null || opts === void 0 ? void 0 : opts.responseMeta,
|
|
172
|
-
createContext,
|
|
173
|
-
req,
|
|
174
|
-
path,
|
|
175
|
-
error: null,
|
|
176
|
-
|
|
177
|
-
onError(o) {
|
|
178
|
-
var _opts$onError;
|
|
179
|
-
|
|
180
|
-
opts === null || opts === void 0 ? void 0 : (_opts$onError = opts.onError) === null || _opts$onError === void 0 ? void 0 : _opts$onError.call(opts, { ...o,
|
|
181
|
-
req: event
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
});
|
|
186
|
-
return tRPCOutputToAPIGatewayOutput(event, response);
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
exports.awsLambdaRequestHandler = awsLambdaRequestHandler;
|