|
1 | | -import type { HasRequiredKeys, Prettify } from "./helper"; |
| 1 | +import type { HasRequiredKeys, InferResultType, Prettify } from "./helper"; |
2 | 2 | import { toResponse } from "./to-response"; |
3 | 3 | import type { Middleware } from "./middleware"; |
4 | 4 | import { |
@@ -368,52 +368,18 @@ export const createEndpoint = <Path extends string, Options extends EndpointOpti |
368 | 368 | } |
369 | 369 | type Context = InputContext<Path, Options>; |
370 | 370 |
|
371 | | - type ResultType< |
372 | | - AsResponse extends boolean, |
373 | | - ReturnHeaders extends boolean, |
374 | | - ReturnStatus extends boolean, |
375 | | - > = AsResponse extends true |
376 | | - ? Response |
377 | | - : ReturnHeaders extends true |
378 | | - ? ReturnStatus extends true |
379 | | - ? { |
380 | | - headers: Headers; |
381 | | - status: number; |
382 | | - response: Awaited<R>; |
383 | | - } |
384 | | - : { |
385 | | - headers: Headers; |
386 | | - response: Awaited<R>; |
387 | | - } |
388 | | - : ReturnStatus extends true |
389 | | - ? { |
390 | | - status: number; |
391 | | - response: Awaited<R>; |
392 | | - } |
393 | | - : Awaited<R>; |
394 | | - |
395 | 371 | const internalHandler = async < |
396 | 372 | AsResponse extends boolean = false, |
397 | 373 | ReturnHeaders extends boolean = false, |
398 | 374 | ReturnStatus extends boolean = false, |
399 | 375 | >( |
400 | | - ...inputCtx: HasRequiredKeys<Context> extends true |
401 | | - ? [ |
402 | | - Context & { |
403 | | - asResponse?: AsResponse; |
404 | | - returnHeaders?: ReturnHeaders; |
405 | | - returnStatus?: ReturnStatus; |
406 | | - }, |
407 | | - ] |
408 | | - : [ |
409 | | - (Context & { |
410 | | - asResponse?: AsResponse; |
411 | | - returnHeaders?: ReturnHeaders; |
412 | | - returnStatus?: ReturnStatus; |
413 | | - })?, |
414 | | - ] |
415 | | - ): Promise<ResultType<AsResponse, ReturnHeaders, ReturnStatus>> => { |
416 | | - const context = (inputCtx[0] || {}) as InputContext<any, any>; |
| 376 | + input?: Context & { |
| 377 | + asResponse?: AsResponse; |
| 378 | + returnHeaders?: ReturnHeaders; |
| 379 | + returnStatus?: ReturnStatus; |
| 380 | + }, |
| 381 | + ): Promise<InferResultType<AsResponse, ReturnHeaders, ReturnStatus, R>> => { |
| 382 | + const context = (input ?? {}) as InputContext<any, any>; |
417 | 383 | const internalContext = await createInternalContext(context, { |
418 | 384 | options, |
419 | 385 | path, |
@@ -453,7 +419,7 @@ export const createEndpoint = <Path extends string, Options extends EndpointOpti |
453 | 419 | : context.returnStatus |
454 | 420 | ? { response, status } |
455 | 421 | : response |
456 | | - ) as ResultType<AsResponse, ReturnHeaders, ReturnStatus>; |
| 422 | + ) as InferResultType<AsResponse, ReturnHeaders, ReturnStatus, R>; |
457 | 423 | }; |
458 | 424 | internalHandler.options = options; |
459 | 425 | internalHandler.path = path; |
|
0 commit comments