Skip to content

Commit fc1d711

Browse files
authored
feat: add custom setup (#92)
1 parent e79da96 commit fc1d711

File tree

3 files changed

+29
-7
lines changed

3 files changed

+29
-7
lines changed

src/expresskit.ts

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import express, {Express} from 'express';
99
import {setupBaseMiddleware} from './base-middleware';
1010
import {setupParsers} from './parsers';
1111
import {setupRoutes} from './router';
12-
import type {AppRoutes} from './types';
12+
import type {AppRoutes, SetupParams} from './types';
1313
import {setupLangMiddleware} from './lang/lang-middleware';
1414
import {setupErrorHandlers} from './error-handlers';
1515

@@ -21,7 +21,7 @@ export class ExpressKit {
2121
express: Express;
2222
httpServer?: Server;
2323

24-
constructor(nodekit: NodeKit, routes: AppRoutes) {
24+
constructor(nodekit: NodeKit, routes: AppRoutes, setup?: (params: SetupParams) => void) {
2525
this.nodekit = nodekit;
2626
this.config = nodekit.config;
2727

@@ -35,11 +35,22 @@ export class ExpressKit {
3535

3636
this.express.get('/__version', (_, res) => res.send({version: this.config.appVersion}));
3737

38-
setupBaseMiddleware(this.nodekit.ctx, this.express);
39-
setupLangMiddleware(this.nodekit.ctx, this.express);
40-
setupParsers(this.nodekit.ctx, this.express);
41-
setupRoutes(this.nodekit.ctx, this.express, routes);
42-
setupErrorHandlers(this.nodekit.ctx, this.express);
38+
if (setup) {
39+
setup({
40+
express: this.express,
41+
setupBaseMiddleware: () => setupBaseMiddleware(this.nodekit.ctx, this.express),
42+
setupLangMiddleware: () => setupLangMiddleware(this.nodekit.ctx, this.express),
43+
setupParsers: () => setupParsers(this.nodekit.ctx, this.express),
44+
setupRoutes: () => setupRoutes(this.nodekit.ctx, this.express, routes),
45+
setupErrorHandlers: () => setupErrorHandlers(this.nodekit.ctx, this.express),
46+
});
47+
} else {
48+
setupBaseMiddleware(this.nodekit.ctx, this.express);
49+
setupLangMiddleware(this.nodekit.ctx, this.express);
50+
setupParsers(this.nodekit.ctx, this.express);
51+
setupRoutes(this.nodekit.ctx, this.express, routes);
52+
setupErrorHandlers(this.nodekit.ctx, this.express);
53+
}
4354

4455
const appSocket = this.getAppSocket();
4556
const listenTarget = this.getListenTarget(appSocket);

src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export type {
1313
AppErrorHandler,
1414
NextFunction,
1515
HttpMethod,
16+
SetupParams,
1617
} from './types';
1718
export {AuthPolicy} from './types';
1819

src/types.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type {AppContext} from '@gravity-ui/nodekit';
22
import type bodyParser from 'body-parser';
33
import type {
44
ErrorRequestHandler,
5+
Express,
56
NextFunction,
67
Request,
78
RequestHandler,
@@ -171,4 +172,13 @@ export interface AppErrorHandler {
171172
): void | Promise<void>;
172173
}
173174

175+
export interface SetupParams {
176+
express: Express;
177+
setupBaseMiddleware: () => void;
178+
setupLangMiddleware: () => void;
179+
setupParsers: () => void;
180+
setupRoutes: () => void;
181+
setupErrorHandlers: () => void;
182+
}
183+
174184
export {Request, Response, NextFunction};

0 commit comments

Comments
 (0)