middleware-io
- BranchMiddlewareCondition
- BranchMiddlewareConditionFunction
- CaughtMiddlewareHandler
- LazyMiddlewareFactory
- Middleware
- MiddlewareReturn
- NextMiddleware
- NextMiddlewareReturn
- UnknownObject
- compose
- getAfterMiddleware
- getBeforeMiddleware
- getBranchMiddleware
- getCaughtMiddleware
- getConcurrencyMiddleware
- getEnforceMiddleware
- getFilterMiddleware
- getForkMiddleware
- getLazyMiddleware
- getOptionalMiddleware
- getTapMiddleware
- noopNext
- skipMiddleware
- stopMiddleware
Renames and re-exports compose
Ƭ BranchMiddlewareCondition<T
>: BranchMiddlewareConditionFunction
<T
> | boolean
Possible types for branch condition
Name |
---|
T |
Ƭ BranchMiddlewareConditionFunction<T
>: (context
: T
) => Promise
<boolean
> | boolean
Asynchronous function for branch condition
Name |
---|
T |
▸ (context
): Promise
<boolean
> | boolean
Name | Type |
---|---|
context |
T |
Promise
<boolean
> | boolean
Ƭ CaughtMiddlewareHandler<T
>: (context
: T
, error
: Error
) => MiddlewareReturn
Handler for catching errors in middleware chains
Name |
---|
T |
▸ (context
, error
): MiddlewareReturn
Name | Type |
---|---|
context |
T |
error |
Error |
Ƭ LazyMiddlewareFactory<T
>: (context
: T
) => Promise
<Middleware
<T
>> | Middleware
<T
>
Asynchronous factory to create middleware
Name |
---|
T |
▸ (context
): Promise
<Middleware
<T
>> | Middleware
<T
>
Name | Type |
---|---|
context |
T |
Promise
<Middleware
<T
>> | Middleware
<T
>
Ƭ Middleware<T
>: (context
: T
, next
: NextMiddleware
) => MiddlewareReturn
Basic middleware
Name |
---|
T |
▸ (context
, next
): MiddlewareReturn
Name | Type |
---|---|
context |
T |
next |
NextMiddleware |
Ƭ MiddlewareReturn: unknown
Returns the type of response middleware
Ƭ NextMiddleware: () => Promise
<NextMiddlewareReturn
>
Call the next middleware from the chain
▸ (): Promise
<NextMiddlewareReturn
>
Promise
<NextMiddlewareReturn
>
Ƭ NextMiddlewareReturn: unknown
Returns the type of response middleware
Ƭ UnknownObject: Record
<string
, unknown
>
Instead of object
▸ compose<T
>(middlewares
): Middleware
<T
>
Compose an array of middleware handlers into a single handler
Name |
---|
T |
Name | Type | Description |
---|---|---|
middlewares |
Middleware <T >[] |
The array of middleware |
Middleware
<T
>
Composed middleware
▸ getAfterMiddleware<T
>(middleware
, afterMiddleware
): Middleware
<T
>
Runs the second middleware after the main
Example:
getAfterMiddleware(
sendSecureData,
clearSecurityData
);
Name |
---|
T |
Name | Type |
---|---|
middleware |
Middleware <T > |
afterMiddleware |
Middleware <T > |
Middleware
<T
>
▸ getBeforeMiddleware<T
>(beforeMiddleware
, middleware
): Middleware
<T
>
Runs the second middleware before the main
Example:
getBeforeMiddleware(
myMockMiddleware,
ouputUserData
);
Name |
---|
T |
Name | Type |
---|---|
beforeMiddleware |
Middleware <T > |
middleware |
Middleware <T > |
Middleware
<T
>
▸ getBranchMiddleware<T
>(condition
, trueMiddleware
, falseMiddleware
): Middleware
<T
>
By condition splits the middleware
Example:
getBranchMiddleware(
async context => context.is('Content-Type', 'json'),
myBodyParser.json(),
myBodyParser.urlencoded()
);
Static condition
getBranchMiddleware(
process.env.NODE_ENV === 'production',
logger.loggedContextToFile(),
logger.loggedContextToConsole()
);
Name |
---|
T |
Name | Type |
---|---|
condition |
BranchMiddlewareCondition <T > |
trueMiddleware |
Middleware <T > |
falseMiddleware |
Middleware <T > |
Middleware
<T
>
▸ getCaughtMiddleware<T
>(errorHandler
): Middleware
<T
>
Catches errors in the middleware chain
Example:
getCaughtMiddleware((context, error) => {
if (error instanceof NetworkError) {
return context.send('Sorry, network issues 😔');
}
throw error;
})
Without a snippet, it would look like this:
async (context, next) => {
try {
await next();
} catch (error) {
if (error instanceof NetworkError) {
return context.send('Sorry, network issues 😔');
}
throw error;
}
};
Name |
---|
T |
Name | Type |
---|---|
errorHandler |
CaughtMiddlewareHandler <T > |
Middleware
<T
>
▸ getConcurrencyMiddleware<T
>(middlewares
): Middleware
<T
>
Concurrently launches middleware,
the chain will continue if next()
is called in all middlewares
Warning: Error interrupts all others
Example:
getConcurrencyMiddleware(
initializeUser,
initializeSession,
initializeDatabase
);
Name |
---|
T |
Name | Type |
---|---|
middlewares |
Middleware <T >[] |
Middleware
<T
>
▸ getEnforceMiddleware<T
>(beforeMiddleware
, middleware
, afterMiddleware
): Middleware
<T
>
Runs middleware before and after the main
Example:
getEnforceMiddleware(
prepareData,
sendData,
clearData
);
#### Type parameters
| Name |
| :------ |
| `T` |
#### Parameters
| Name | Type |
| :------ | :------ |
| `beforeMiddleware` | [`Middleware`](README.md#middleware)\<`T`\> |
| `middleware` | [`Middleware`](README.md#middleware)\<`T`\> |
| `afterMiddleware` | [`Middleware`](README.md#middleware)\<`T`\> |
#### Returns
[`Middleware`](README.md#middleware)\<`T`\>
#### Defined in
[snippets.ts:214](https://github.com/negezor/middleware-io/blob/cfc102d315382709d9f9d43771812ee5ab488e62/src/snippets.ts#L214)
___
### getFilterMiddleware
▸ **getFilterMiddleware**\<`T`\>(`condition`, `filterMiddleware`): [`Middleware`](README.md#middleware)\<`T`\>
Conditionally runs middleware or stops the chain
Example:
```ts
getFilterMiddleware(
context => context.authorized,
middlewareForAuthorized
);
Name |
---|
T |
Name | Type |
---|---|
condition |
BranchMiddlewareCondition <T > |
filterMiddleware |
Middleware <T > |
Middleware
<T
>
▸ getForkMiddleware<T
>(middleware
): Middleware
<T
>
Runs the middleware at the next event loop and force call next()
Example:
getForkMiddleware((context) => {
statisticsMiddlewares(context).catch(console.error);
});
Name |
---|
T |
Name | Type |
---|---|
middleware |
Middleware <T > |
Middleware
<T
>
▸ getLazyMiddleware<T
>(factory
): Middleware
<T
>
Lazily asynchronously gets middleware
Example:
getLazyMiddleware(async (context) => {
const route = await getSomeRoute(context.path) // Promise<Function>;
return route;
});
Name |
---|
T |
Name | Type |
---|---|
factory |
LazyMiddlewareFactory <T > |
Middleware
<T
>
▸ getOptionalMiddleware<T
>(condition
, optionalMiddleware
): Middleware
<T
>
Conditionally runs optional middleware or skips middleware
Example:
getOptionalMiddleware(
context => context.user.isAdmin,
addFieldsForAdmin
);
Name |
---|
T |
Name | Type |
---|---|
condition |
BranchMiddlewareCondition <T > |
optionalMiddleware |
Middleware <T > |
Middleware
<T
>
▸ getTapMiddleware<T
>(middleware
): Middleware
<T
>
Runs the middleware and force call next()
Example:
getTapMiddleware((context) => {
console.log('Context', context);
});
Name |
---|
T |
Name | Type |
---|---|
middleware |
Middleware <T > |
Middleware
<T
>
▸ noopNext(): Promise
<unknown
>
Noop for call next()
in middleware
Promise
<unknown
>
▸ skipMiddleware<T
>(context
, next
): Promise
<unknown
>
Call next()
in middleware
Name |
---|
T |
Name | Type |
---|---|
context |
T |
next |
NextMiddleware |
Promise
<unknown
>
▸ stopMiddleware<T
>(context
, next
): Promise
<void
>
Does not call next()
in middleware
Name |
---|
T |
Name | Type |
---|---|
context |
T |
next |
NextMiddleware |
Promise
<void
>