@devmoods/express-extras 0.28.0 → 0.28.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -35,19 +35,3 @@ _Extremely opinionated_ set of utilities for cranking out production-ready Node.
35
35
  ## Configure
36
36
 
37
37
  Put environment variables in `.env` at the application will automatically read those on startup. For test configuration in unit and integrations tests, use `.env.test`.
38
-
39
- ```bash
40
- NODE_ENV=development
41
- PORT=3000
42
- READINESS_PROBE_MS=
43
- FORCE_EXIT_TIMEOUT=
44
-
45
- AUTH_JWT_SECRET=123456
46
-
47
- POSTGRES_URL=postgresql://user:pass@localhost:5432/my_database
48
- REDIS_URL=
49
-
50
- SLACK_WEBHOOK_URL=
51
- SENTRY_DSN=
52
- SLACK_WEBHOOK_URL=
53
- ```
package/dist/listen.d.ts CHANGED
@@ -11,7 +11,7 @@ interface ExpressServerOptions {
11
11
  healthCheck?(): Promise<unknown>;
12
12
  }
13
13
  export declare function createExpressServer(app: Application, options?: ExpressServerOptions): {
14
- start(): void;
14
+ start(): Promise<void>;
15
15
  stop(): Promise<boolean>;
16
16
  terminate(): Promise<void>;
17
17
  readonly port: number;
package/dist/listen.js CHANGED
@@ -4,8 +4,8 @@ import { getLogger } from './logger.js';
4
4
  import { route } from './middleware.js';
5
5
  import { envPort, readEnv } from './utils.js';
6
6
  const logger = getLogger('http');
7
- const READINESS_PERIOD_MS = readEnv.number('READINESS_PERIOD_MS', 0);
8
- const FORCE_EXIT_TIMEOUT = readEnv.number('FORCE_EXIT_TIMEOUT', 5000);
7
+ const READINESS_PERIOD = readEnv.number('READINESS_PERIOD_MS', 0);
8
+ const GRACE_PERIOD = readEnv.number('GRACE_PERIOD_MS', 20000);
9
9
  export function stoppable(server, grace = Infinity) {
10
10
  let stopped = false;
11
11
  let gracefully = true;
@@ -69,7 +69,7 @@ export function stoppable(server, grace = Infinity) {
69
69
  return server;
70
70
  }
71
71
  export function createExpressServer(app, options = {}) {
72
- const server = stoppable(http.createServer(app), FORCE_EXIT_TIMEOUT);
72
+ const server = stoppable(http.createServer(app), GRACE_PERIOD);
73
73
  let stopping = false;
74
74
  async function onSignal(signal) {
75
75
  if (stopping) {
@@ -78,7 +78,7 @@ export function createExpressServer(app, options = {}) {
78
78
  stopping = true;
79
79
  try {
80
80
  logger.info(`app shutting down due to ${signal}`);
81
- await delay(READINESS_PERIOD_MS + 1000);
81
+ await delay(READINESS_PERIOD + 1000);
82
82
  await server.stop();
83
83
  await options.onShutdown?.();
84
84
  logger.info('app shut down');
@@ -108,8 +108,11 @@ export function createExpressServer(app, options = {}) {
108
108
  return {
109
109
  start() {
110
110
  const port = app.get('port') ?? envPort(0);
111
- server.listen(port, () => {
112
- logger.info('app listening', { port: this.port });
111
+ return new Promise((resolve) => {
112
+ server.listen(port, () => {
113
+ logger.info('app listening', { port: this.port });
114
+ resolve();
115
+ });
113
116
  });
114
117
  },
115
118
  stop() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devmoods/express-extras",
3
- "version": "0.28.0",
3
+ "version": "0.28.2",
4
4
  "description": "Kubernetes-ready utilities for rapid Node.js application development",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -27,8 +27,8 @@
27
27
  "@types/koa-compose": "^3.2.5",
28
28
  "@types/node": "20.5.9",
29
29
  "@types/supertest": "^2.0.12",
30
- "@typescript-eslint/eslint-plugin": "^6.5.0",
31
- "@typescript-eslint/parser": "^6.5.0",
30
+ "@typescript-eslint/eslint-plugin": "^6.6.0",
31
+ "@typescript-eslint/parser": "^6.6.0",
32
32
  "@vitest/coverage-v8": "^0.34.3",
33
33
  "chalk": "^5.3.0",
34
34
  "eslint": "^8.48.0",
@@ -46,11 +46,11 @@
46
46
  "vitest": "^0.34.3"
47
47
  },
48
48
  "dependencies": {
49
- "@devmoods/fetch": "^3.3.0",
50
- "@sentry/node": "^7.66.0",
49
+ "@devmoods/fetch": "^4.0.1",
50
+ "@sentry/node": "^7.67.0",
51
51
  "@types/bcrypt": "^5.0.0",
52
52
  "@types/body-parser": "^1.19.2",
53
- "@types/cookie-parser": "^1.4.3",
53
+ "@types/cookie-parser": "^1.4.4",
54
54
  "@types/express": "^4.17.17",
55
55
  "@types/jsonwebtoken": "^9.0.2",
56
56
  "@types/nodemailer": "^6.4.9",