@devmoods/express-extras 0.28.0 → 0.28.1
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 +0 -16
- package/dist/listen.d.ts +1 -1
- package/dist/listen.js +9 -6
- package/package.json +1 -1
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
|
|
8
|
-
const
|
|
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),
|
|
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(
|
|
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
|
-
|
|
112
|
-
|
|
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() {
|