@volontariapp/post-processors 1.1.0 → 1.2.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - health check diagnostics server
8
+
3
9
  ## 1.1.0
4
10
 
5
11
  ### Minor Changes
@@ -0,0 +1,11 @@
1
+ import type { INestApplicationContext } from '@nestjs/common';
2
+ export declare class DiagnosticServer {
3
+ private readonly app;
4
+ private readonly port;
5
+ private readonly logger;
6
+ private server?;
7
+ constructor(app: INestApplicationContext, port: number);
8
+ start(): void;
9
+ close(): void;
10
+ }
11
+ //# sourceMappingURL=diagnostic-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic-server.d.ts","sourceRoot":"","sources":["../../src/core/diagnostic-server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAQ9D,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IALvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IACtE,OAAO,CAAC,MAAM,CAAC,CAAS;gBAGL,GAAG,EAAE,uBAAuB,EAC5B,IAAI,EAAE,MAAM;IAGxB,KAAK,IAAI,IAAI;IAwDb,KAAK,IAAI,IAAI;CAMrB"}
@@ -0,0 +1,68 @@
1
+ import { createServer } from 'node:http';
2
+ import { PostgresProvider, RedisProvider } from '@volontariapp/bridge';
3
+ import { PostgresBridgeHealthProvider, RedisBridgeHealthProvider, } from '@volontariapp/health-check';
4
+ import { Logger } from '@volontariapp/logger';
5
+ export class DiagnosticServer {
6
+ app;
7
+ port;
8
+ logger = new Logger({ context: 'DiagnosticServer' });
9
+ server;
10
+ constructor(app, port) {
11
+ this.app = app;
12
+ this.port = port;
13
+ }
14
+ start() {
15
+ const dbProvider = this.app.get(PostgresProvider, { strict: false });
16
+ const redisProvider = this.app.get(RedisProvider, { strict: false });
17
+ const pgHealthProvider = new PostgresBridgeHealthProvider(dbProvider);
18
+ const redisHealthProvider = new RedisBridgeHealthProvider(redisProvider);
19
+ this.server = createServer((req, res) => {
20
+ void (async () => {
21
+ if (req.url === '/health' || req.url === '/') {
22
+ try {
23
+ const [pgHealth, redisHealth] = await Promise.all([
24
+ pgHealthProvider.health(),
25
+ redisHealthProvider.health(),
26
+ ]);
27
+ const pgOk = pgHealth.status === 'up';
28
+ const redisOk = redisHealth.status === 'up';
29
+ if (!pgOk || !redisOk) {
30
+ res.writeHead(503, { 'Content-Type': 'application/json' });
31
+ res.end(JSON.stringify({
32
+ status: 'unhealthy',
33
+ postgres: pgHealth.status,
34
+ redis: redisHealth.status,
35
+ }));
36
+ return;
37
+ }
38
+ res.writeHead(200, { 'Content-Type': 'application/json' });
39
+ res.end(JSON.stringify({
40
+ status: 'healthy',
41
+ postProcessor: 'awake',
42
+ uptime: process.uptime(),
43
+ }));
44
+ }
45
+ catch (err) {
46
+ const errorMessage = err instanceof Error ? err.message : String(err);
47
+ res.writeHead(500, { 'Content-Type': 'application/json' });
48
+ res.end(JSON.stringify({ status: 'error', message: errorMessage }));
49
+ }
50
+ }
51
+ else {
52
+ res.writeHead(404, { 'Content-Type': 'application/json' });
53
+ res.end(JSON.stringify({ message: 'Not Found' }));
54
+ }
55
+ })();
56
+ });
57
+ this.server.listen(this.port, () => {
58
+ this.logger.info(`Diagnostic Health Check server listening on port ${String(this.port)}`);
59
+ });
60
+ }
61
+ close() {
62
+ if (this.server) {
63
+ this.server.close();
64
+ this.logger.info('Diagnostic Health Check server stopped.');
65
+ }
66
+ }
67
+ }
68
+ //# sourceMappingURL=diagnostic-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic-server.js","sourceRoot":"","sources":["../../src/core/diagnostic-server.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,5 @@ export { RedisStreamHelper } from './helpers/redis-stream.helper.js';
5
5
  export { RetryHelper } from './helpers/retry.helper.js';
6
6
  export { CircuitBreaker } from './validators/circuit-breaker.js';
7
7
  export { OptionsValidator } from './validators/options-validator.js';
8
+ export { DiagnosticServer } from './diagnostic-server.js';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -5,4 +5,5 @@ export { RedisStreamHelper } from './helpers/redis-stream.helper.js';
5
5
  export { RetryHelper } from './helpers/retry.helper.js';
6
6
  export { CircuitBreaker } from './validators/circuit-breaker.js';
7
7
  export { OptionsValidator } from './validators/options-validator.js';
8
+ export { DiagnosticServer } from './diagnostic-server.js';
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=diagnostic-server.unit.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic-server.unit.spec.d.ts","sourceRoot":"","sources":["../../../src/test/core/diagnostic-server.unit.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,153 @@
1
+ import { describe, it, expect, beforeAll, afterAll, jest } from '@jest/globals';
2
+ import http from 'node:http';
3
+ import { PostgresProvider, RedisProvider } from '@volontariapp/bridge';
4
+ import { PostgresBridgeHealthProvider, RedisBridgeHealthProvider, } from '@volontariapp/health-check';
5
+ import { createMock } from '@volontariapp/testing';
6
+ import { DiagnosticServer } from '../../core/diagnostic-server.js';
7
+ describe('DiagnosticServer — Unit', () => {
8
+ let appMock;
9
+ let dbProviderMock;
10
+ let redisProviderMock;
11
+ let diagnosticServer;
12
+ const PORT = 4999;
13
+ beforeAll(() => {
14
+ dbProviderMock = createMock();
15
+ redisProviderMock = createMock();
16
+ appMock = createMock();
17
+ jest.spyOn(appMock, 'get').mockImplementation((token) => {
18
+ if (token === PostgresProvider)
19
+ return dbProviderMock;
20
+ if (token === RedisProvider)
21
+ return redisProviderMock;
22
+ throw new Error(`Token ${String(token)} not supported in mock`);
23
+ });
24
+ diagnosticServer = new DiagnosticServer(appMock, PORT);
25
+ diagnosticServer.start();
26
+ });
27
+ afterAll(() => {
28
+ diagnosticServer.close();
29
+ });
30
+ const queryHealth = () => {
31
+ return new Promise((resolve, reject) => {
32
+ http
33
+ .get(`http://localhost:${String(PORT)}/health`, (res) => {
34
+ let data = '';
35
+ res.on('data', (chunk) => {
36
+ data += chunk;
37
+ });
38
+ res.on('end', () => {
39
+ resolve({
40
+ status: res.statusCode ?? 0,
41
+ body: JSON.parse(data),
42
+ });
43
+ });
44
+ })
45
+ .on('error', reject);
46
+ });
47
+ };
48
+ it('should return 200 OK when Postgres and Redis are healthy (up)', async () => {
49
+ jest.spyOn(PostgresBridgeHealthProvider.prototype, 'health').mockResolvedValue({
50
+ name: 'postgres',
51
+ status: 'up',
52
+ message: 'Postgres is healthy',
53
+ });
54
+ jest.spyOn(RedisBridgeHealthProvider.prototype, 'health').mockResolvedValue({
55
+ name: 'redis',
56
+ status: 'up',
57
+ message: 'Redis is healthy',
58
+ });
59
+ const res = await queryHealth();
60
+ expect(res.status).toBe(200);
61
+ expect(res.body).toEqual({
62
+ status: 'healthy',
63
+ postProcessor: 'awake',
64
+ uptime: expect.any(Number),
65
+ });
66
+ });
67
+ it('should return 503 Service Unavailable when Postgres is down', async () => {
68
+ jest.spyOn(PostgresBridgeHealthProvider.prototype, 'health').mockResolvedValue({
69
+ name: 'postgres',
70
+ status: 'down',
71
+ message: 'Postgres is not connected',
72
+ });
73
+ jest.spyOn(RedisBridgeHealthProvider.prototype, 'health').mockResolvedValue({
74
+ name: 'redis',
75
+ status: 'up',
76
+ message: 'Redis is healthy',
77
+ });
78
+ const res = await queryHealth();
79
+ expect(res.status).toBe(503);
80
+ expect(res.body).toEqual({
81
+ status: 'unhealthy',
82
+ postgres: 'down',
83
+ redis: 'up',
84
+ });
85
+ });
86
+ it('should return 503 Service Unavailable when Redis is down', async () => {
87
+ jest.spyOn(PostgresBridgeHealthProvider.prototype, 'health').mockResolvedValue({
88
+ name: 'postgres',
89
+ status: 'up',
90
+ message: 'Postgres is healthy',
91
+ });
92
+ jest.spyOn(RedisBridgeHealthProvider.prototype, 'health').mockResolvedValue({
93
+ name: 'redis',
94
+ status: 'down',
95
+ message: 'Redis connection lost',
96
+ });
97
+ const res = await queryHealth();
98
+ expect(res.status).toBe(503);
99
+ expect(res.body).toEqual({
100
+ status: 'unhealthy',
101
+ postgres: 'up',
102
+ redis: 'down',
103
+ });
104
+ });
105
+ it('should return 500 Internal Server Error if the health check throws an exception', async () => {
106
+ jest
107
+ .spyOn(PostgresBridgeHealthProvider.prototype, 'health')
108
+ .mockRejectedValue(new Error('Network access denied'));
109
+ const res = await queryHealth();
110
+ expect(res.status).toBe(500);
111
+ expect(res.body).toEqual({
112
+ status: 'error',
113
+ message: 'Network access denied',
114
+ });
115
+ });
116
+ it('should return 404 Not Found for an unknown URL', async () => {
117
+ const queryNotFound = () => {
118
+ return new Promise((resolve, reject) => {
119
+ http
120
+ .get(`http://localhost:${String(PORT)}/unknown`, (res) => {
121
+ let data = '';
122
+ res.on('data', (chunk) => {
123
+ data += chunk;
124
+ });
125
+ res.on('end', () => {
126
+ resolve({
127
+ status: res.statusCode ?? 0,
128
+ body: JSON.parse(data),
129
+ });
130
+ });
131
+ })
132
+ .on('error', reject);
133
+ });
134
+ };
135
+ const res = await queryNotFound();
136
+ expect(res.status).toBe(404);
137
+ expect(res.body).toEqual({
138
+ message: 'Not Found',
139
+ });
140
+ });
141
+ it('should return 500 Internal Server Error if the health check throws an exception that is not an instance of Error', async () => {
142
+ jest
143
+ .spyOn(PostgresBridgeHealthProvider.prototype, 'health')
144
+ .mockRejectedValue('Unexpected string error');
145
+ const res = await queryHealth();
146
+ expect(res.status).toBe(500);
147
+ expect(res.body).toEqual({
148
+ status: 'error',
149
+ message: 'Unexpected string error',
150
+ });
151
+ });
152
+ });
153
+ //# sourceMappingURL=diagnostic-server.unit.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic-server.unit.spec.js","sourceRoot":"","sources":["../../../src/test/core/diagnostic-server.unit.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volontariapp/post-processors",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
@@ -38,6 +38,7 @@
38
38
  },
39
39
  "dependencies": {
40
40
  "@volontariapp/database": "2.0.0",
41
+ "@volontariapp/health-check": "1.0.3",
41
42
  "@volontariapp/logger": "0.2.5",
42
43
  "@volontariapp/messaging": "2.0.0",
43
44
  "@volontariapp/outbox": "0.8.0",