@api-ts/express-wrapper
Advanced tools
Comparing version 1.0.22 to 1.0.23-beta.1
@@ -8,3 +8,3 @@ import express from 'express'; | ||
export { routeHandler, ServiceFunction } from './request'; | ||
declare type CreateRouterProps<Spec extends ApiSpec> = { | ||
type CreateRouterProps<Spec extends ApiSpec> = { | ||
spec: Spec; | ||
@@ -11,0 +11,0 @@ routeHandlers: { |
import * as express from 'express'; | ||
export declare const MiddlewareBrand: unique symbol; | ||
export declare type MiddlewareBrand = typeof MiddlewareBrand; | ||
export declare type MiddlewareFn<T extends {}> = (req: express.Request, res: express.Response) => Promise<T>; | ||
export declare type MiddlewareHandler<T extends {} = {}> = { | ||
export type MiddlewareBrand = typeof MiddlewareBrand; | ||
export type MiddlewareFn<T extends {}> = (req: express.Request, res: express.Response) => Promise<T>; | ||
export type MiddlewareHandler<T extends {} = {}> = { | ||
(req: express.Request, res: express.Response, next: express.NextFunction): void; | ||
[MiddlewareBrand]: T; | ||
}; | ||
export declare type MiddlewareRequestHandler = express.RequestHandler | MiddlewareHandler; | ||
declare type MiddlewareOutput<T extends MiddlewareRequestHandler> = T extends { | ||
export type MiddlewareRequestHandler = express.RequestHandler | MiddlewareHandler; | ||
type MiddlewareOutput<T extends MiddlewareRequestHandler> = T extends { | ||
[MiddlewareBrand]: infer R; | ||
} ? R : {}; | ||
export declare function middlewareFn<T extends {}>(fn: MiddlewareFn<T>): MiddlewareHandler<T>; | ||
declare type MiddlewareResult<Input extends {}, T> = T extends MiddlewareRequestHandler ? Omit<Input, keyof MiddlewareOutput<T>> & MiddlewareOutput<T> : never; | ||
export declare type MiddlewareChain = [] | [MiddlewareRequestHandler] | [MiddlewareRequestHandler, MiddlewareRequestHandler] | [MiddlewareRequestHandler, MiddlewareRequestHandler, MiddlewareRequestHandler] | [ | ||
type MiddlewareResult<Input extends {}, T> = T extends MiddlewareRequestHandler ? Omit<Input, keyof MiddlewareOutput<T>> & MiddlewareOutput<T> : never; | ||
export type MiddlewareChain = [] | [MiddlewareRequestHandler] | [MiddlewareRequestHandler, MiddlewareRequestHandler] | [MiddlewareRequestHandler, MiddlewareRequestHandler, MiddlewareRequestHandler] | [ | ||
MiddlewareRequestHandler, | ||
@@ -42,3 +42,3 @@ MiddlewareRequestHandler, | ||
]; | ||
export declare type MiddlewareChainOutput<Input, Chain extends MiddlewareChain> = Chain extends [] ? Input : Chain extends [infer A] ? MiddlewareResult<Input, A> : Chain extends [infer A, infer B] ? MiddlewareResult<MiddlewareResult<Input, A>, B> : Chain extends [infer A, infer B, infer C] ? MiddlewareResult<MiddlewareResult<MiddlewareResult<Input, A>, B>, C> : Chain extends [infer A, infer B, infer C, infer D] ? MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<Input, A>, B>, C>, D> : Chain extends [infer A, infer B, infer C, infer D, infer E] ? MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<Input, A>, B>, C>, D>, E> : Chain extends [infer A, infer B, infer C, infer D, infer E, infer F] ? MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<Input, A>, B>, C>, D>, E>, F> : Chain extends [infer A, infer B, infer C, infer D, infer E, infer F, infer G] ? MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<Input, A>, B>, C>, D>, E>, F>, G> : never; | ||
export type MiddlewareChainOutput<Input extends {}, Chain extends MiddlewareChain> = Chain extends [] ? Input : Chain extends [infer A] ? MiddlewareResult<Input, A> : Chain extends [infer A, infer B] ? MiddlewareResult<MiddlewareResult<Input, A>, B> : Chain extends [infer A, infer B, infer C] ? MiddlewareResult<MiddlewareResult<MiddlewareResult<Input, A>, B>, C> : Chain extends [infer A, infer B, infer C, infer D] ? MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<Input, A>, B>, C>, D> : Chain extends [infer A, infer B, infer C, infer D, infer E] ? MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<Input, A>, B>, C>, D>, E> : Chain extends [infer A, infer B, infer C, infer D, infer E, infer F] ? MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<Input, A>, B>, C>, D>, E>, F> : Chain extends [infer A, infer B, infer C, infer D, infer E, infer F, infer G] ? MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<MiddlewareResult<Input, A>, B>, C>, D>, E>, F>, G> : never; | ||
export declare function runMiddlewareChain<Input extends {}, Chain extends MiddlewareChain>(input: Input, chain: Chain, req: express.Request, res: express.Response): Promise<MiddlewareChainOutput<Input, Chain>>; | ||
@@ -45,0 +45,0 @@ export declare function runMiddlewareChainIgnoringResults<Input, Chain extends MiddlewareChain>(input: Input, chain: Chain, req: express.Request, res: express.Response): Promise<Input>; |
@@ -5,4 +5,4 @@ import { ApiSpec, HttpRoute, RequestType, ResponseType } from '@api-ts/io-ts-http'; | ||
import type { KeyedResponseType, ResponseEncoder } from './response'; | ||
export declare type ServiceFunction<R extends HttpRoute, Input = RequestType<R>> = ((input: Input) => ResponseType<R> | Promise<ResponseType<R>>) | ((input: Input) => KeyedResponseType<R> | Promise<KeyedResponseType<R>>); | ||
export declare type RouteHandler<R extends HttpRoute> = ServiceFunction<R> | { | ||
export type ServiceFunction<R extends HttpRoute, Input = RequestType<R>> = ((input: Input) => ResponseType<R> | Promise<ResponseType<R>>) | ((input: Input) => KeyedResponseType<R> | Promise<KeyedResponseType<R>>); | ||
export type RouteHandler<R extends HttpRoute> = ServiceFunction<R> | { | ||
middleware: MiddlewareChain; | ||
@@ -22,4 +22,4 @@ handler: ServiceFunction<R, MiddlewareChainOutput<RequestType<R>, MiddlewareChain>>; | ||
}): RouteHandler<R>; | ||
export declare const getServiceFunction: <R extends HttpRoute<"get" | "post" | "put" | "delete" | "patch">>(routeHandler: RouteHandler<R>) => ServiceFunction<R, RequestType<R>>; | ||
export declare const getMiddleware: <R extends HttpRoute<"get" | "post" | "put" | "delete" | "patch">>(routeHandler: RouteHandler<R>) => MiddlewareChain; | ||
export declare const getServiceFunction: <R extends HttpRoute>(routeHandler: RouteHandler<R>) => ServiceFunction<R, RequestType<R>>; | ||
export declare const getMiddleware: <R extends HttpRoute>(routeHandler: RouteHandler<R>) => MiddlewareChain; | ||
export declare const onDecodeError: OnDecodeErrorFn; | ||
@@ -26,0 +26,0 @@ export declare const onEncodeError: OnEncodeErrorFn; |
import express from 'express'; | ||
import * as t from 'io-ts'; | ||
import { HttpRoute, HttpToKeyStatus, ResponseType } from '@api-ts/io-ts-http'; | ||
export declare type KeyedResponseType<R extends HttpRoute> = { | ||
export type KeyedResponseType<R extends HttpRoute> = { | ||
[Key in keyof R['response'] & keyof HttpToKeyStatus]: { | ||
@@ -10,4 +10,4 @@ type: HttpToKeyStatus[Key]; | ||
}[keyof R['response'] & keyof HttpToKeyStatus]; | ||
export declare type ResponseEncoder = (route: HttpRoute, serviceFnResponse: ResponseType<HttpRoute>) => express.RequestHandler; | ||
export type ResponseEncoder = (route: HttpRoute, serviceFnResponse: ResponseType<HttpRoute>) => express.RequestHandler; | ||
export declare const defaultResponseEncoder: ResponseEncoder; | ||
//# sourceMappingURL=response.d.ts.map |
{ | ||
"name": "@api-ts/express-wrapper", | ||
"version": "1.0.22", | ||
"version": "1.0.23-beta.1", | ||
"description": "Implement an HTTP specification with Express", | ||
@@ -20,4 +20,4 @@ "author": "Eric Crosson <ericcrosson@bitgo.com>", | ||
"dependencies": { | ||
"@api-ts/io-ts-http": "2.4.0", | ||
"@api-ts/typed-express-router": "1.1.2", | ||
"@api-ts/io-ts-http": "2.4.1-beta.1", | ||
"@api-ts/typed-express-router": "1.1.3-beta.1", | ||
"express": "4.18.2", | ||
@@ -28,7 +28,7 @@ "fp-ts": "^2.0.0", | ||
"devDependencies": { | ||
"@api-ts/superagent-wrapper": "1.1.13", | ||
"@api-ts/superagent-wrapper": "1.1.14-beta.1", | ||
"@swc-node/register": "1.6.8", | ||
"@types/express": "4.17.18", | ||
"c8": "8.0.1", | ||
"typescript": "4.7.4" | ||
"typescript": "5.2.2" | ||
}, | ||
@@ -35,0 +35,0 @@ "publishConfig": { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
29532
2
+ Added@api-ts/io-ts-http@2.4.1-beta.1(transitive)
+ Added@api-ts/response@2.1.1-beta.1(transitive)
+ Added@api-ts/typed-express-router@1.1.3-beta.1(transitive)
- Removed@api-ts/io-ts-http@2.4.0(transitive)
- Removed@api-ts/response@2.1.0(transitive)
- Removed@api-ts/typed-express-router@1.1.2(transitive)