Skip to content

Commit 3983158

Browse files
committed
feat(http): add a method hook when http/s server is attached to the app, update deps
1 parent b3ccc0c commit 3983158

File tree

4 files changed

+475
-470
lines changed

4 files changed

+475
-470
lines changed

package.json

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -59,50 +59,50 @@
5959
"homepage": "https://github.com/openapi-typescript-infra/service#readme",
6060
"dependencies": {
6161
"@godaddy/terminus": "^4.12.1",
62-
"@opentelemetry/api": "^1.8.0",
63-
"@opentelemetry/exporter-prometheus": "^0.51.0",
64-
"@opentelemetry/instrumentation-dns": "^0.36.0",
65-
"@opentelemetry/instrumentation-express": "^0.38.0",
66-
"@opentelemetry/instrumentation-generic-pool": "^0.36.0",
67-
"@opentelemetry/instrumentation-graphql": "^0.40.0",
68-
"@opentelemetry/instrumentation-http": "^0.51.0",
69-
"@opentelemetry/instrumentation-ioredis": "^0.40.0",
70-
"@opentelemetry/instrumentation-net": "^0.36.0",
71-
"@opentelemetry/instrumentation-pg": "^0.41.0",
72-
"@opentelemetry/instrumentation-pino": "^0.38.0",
73-
"@opentelemetry/instrumentation-undici": "^0.2.0",
74-
"@opentelemetry/resource-detector-container": "^0.3.9",
75-
"@opentelemetry/resource-detector-gcp": "^0.29.9",
76-
"@opentelemetry/sdk-node": "^0.51.0",
77-
"@opentelemetry/semantic-conventions": "^1.24.0",
62+
"@opentelemetry/api": "^1.9.0",
63+
"@opentelemetry/exporter-prometheus": "^0.52.0",
64+
"@opentelemetry/instrumentation-dns": "^0.37.0",
65+
"@opentelemetry/instrumentation-express": "^0.40.0",
66+
"@opentelemetry/instrumentation-generic-pool": "^0.37.0",
67+
"@opentelemetry/instrumentation-graphql": "^0.41.0",
68+
"@opentelemetry/instrumentation-http": "^0.52.0",
69+
"@opentelemetry/instrumentation-ioredis": "^0.41.0",
70+
"@opentelemetry/instrumentation-net": "^0.37.0",
71+
"@opentelemetry/instrumentation-pg": "^0.42.0",
72+
"@opentelemetry/instrumentation-pino": "^0.40.0",
73+
"@opentelemetry/instrumentation-undici": "^0.3.0",
74+
"@opentelemetry/resource-detector-container": "^0.3.10",
75+
"@opentelemetry/resource-detector-gcp": "^0.29.10",
76+
"@opentelemetry/sdk-node": "^0.52.0",
77+
"@opentelemetry/semantic-conventions": "^1.25.0",
7878
"@sesamecare-oss/confit": "^2.2.1",
7979
"@sesamecare-oss/opentelemetry-node-metrics": "^1.0.1",
80-
"ajv": "^8.12.0",
80+
"ajv": "^8.16.0",
8181
"cookie-parser": "^1.4.6",
8282
"dotenv": "^16.4.5",
8383
"express": "^5.0.0-beta.3",
84-
"express-openapi-validator": "^5.1.6",
84+
"express-openapi-validator": "^5.2.0",
8585
"glob": "^8.1.0",
8686
"lodash": "^4.17.21",
8787
"minimist": "^1.2.8",
88-
"pino": "^9.0.0",
88+
"pino": "^9.1.0",
8989
"read-pkg-up": "^7.0.1",
9090
"request-ip": "^3.3.0"
9191
},
9292
"devDependencies": {
9393
"@commitlint/cli": "^19.3.0",
9494
"@commitlint/config-conventional": "^19.2.2",
9595
"@openapi-typescript-infra/coconfig": "^4.4.0",
96-
"@semantic-release/commit-analyzer": "^12.0.0",
96+
"@semantic-release/commit-analyzer": "^13.0.0",
9797
"@semantic-release/exec": "^6.0.3",
98-
"@semantic-release/github": "^10.0.3",
99-
"@semantic-release/release-notes-generator": "^13.0.0",
98+
"@semantic-release/github": "^10.0.6",
99+
"@semantic-release/release-notes-generator": "^14.0.0",
100100
"@types/cookie-parser": "^1.4.7",
101101
"@types/express": "^4.17.21",
102102
"@types/glob": "^8.1.0",
103-
"@types/lodash": "^4.17.0",
103+
"@types/lodash": "^4.17.5",
104104
"@types/minimist": "^1.2.5",
105-
"@types/node": "^20.12.7",
105+
"@types/node": "^20.14.2",
106106
"@types/request-ip": "^0.0.41",
107107
"@types/supertest": "^6.0.2",
108108
"@typescript-eslint/eslint-plugin": "^6.21.0",
@@ -111,13 +111,13 @@
111111
"eslint": "^8.57.0",
112112
"eslint-config-prettier": "^9.1.0",
113113
"eslint-plugin-import": "^2.29.1",
114-
"pino-pretty": "^11.0.0",
114+
"pino-pretty": "^11.1.0",
115115
"pinst": "^3.0.0",
116116
"supertest": "^7.0.0",
117117
"ts-node": "^10.9.2",
118118
"tsconfig-paths": "^4.2.0",
119119
"typescript": "^5.4.5",
120-
"vitest": "^1.5.2"
120+
"vitest": "^1.6.0"
121121
},
122122
"resolutions": {
123123
"qs": "^6.11.0"

src/express-app/app.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,8 @@ export async function listen<SLocals extends AnyServiceLocals = ServiceLocals<Co
303303

304304
const { service, logger } = app.locals;
305305
const server = httpServer(app, config);
306+
await app.locals.service.attachServer?.(server);
307+
306308
let shutdownInProgress = false;
307309
createTerminus(server, {
308310
timeout: 15000,

src/types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,9 @@ export interface Service<
7676
// that are needed during route setup
7777
attach?: (app: ServiceExpress<SLocals>) => void | Promise<void>;
7878

79+
// Called after a server is created but before the server starts listening
80+
attachServer?: (server: Server) => void | Promise<void>;
81+
7982
start(app: ServiceExpress<SLocals>): void | Promise<void>;
8083

8184
stop?: (app: ServiceExpress<SLocals>) => void | Promise<void>;

0 commit comments

Comments
 (0)