@abyss-project/monitor 4.0.0 → 5.0.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.
Files changed (92) hide show
  1. package/.eslintrc.js +67 -18
  2. package/dist/types/interface/api/requests/application.request.d.ts +0 -8
  3. package/dist/types/interface/api/responses/infrastructure.admin.response.d.ts +2 -4
  4. package/package.json +2 -2
  5. package/tsconfig.build.json +4 -0
  6. package/dist/__tests__/alert-log-url.test.d.ts +0 -1
  7. package/dist/__tests__/alert-log-url.test.js +0 -21
  8. package/dist/__tests__/alert-log-url.test.js.map +0 -1
  9. package/dist/__tests__/application-log-bulk-api.test.d.ts +0 -1
  10. package/dist/__tests__/application-log-bulk-api.test.js +0 -125
  11. package/dist/__tests__/application-log-bulk-api.test.js.map +0 -1
  12. package/dist/__tests__/body-redaction.test.d.ts +0 -1
  13. package/dist/__tests__/body-redaction.test.js +0 -104
  14. package/dist/__tests__/body-redaction.test.js.map +0 -1
  15. package/dist/__tests__/graceful-shutdown-flush.test.d.ts +0 -1
  16. package/dist/__tests__/graceful-shutdown-flush.test.js +0 -253
  17. package/dist/__tests__/graceful-shutdown-flush.test.js.map +0 -1
  18. package/dist/__tests__/graceful-shutdown-logger.test.d.ts +0 -1
  19. package/dist/__tests__/graceful-shutdown-logger.test.js +0 -124
  20. package/dist/__tests__/graceful-shutdown-logger.test.js.map +0 -1
  21. package/dist/__tests__/header-pattern.test.d.ts +0 -1
  22. package/dist/__tests__/header-pattern.test.js +0 -66
  23. package/dist/__tests__/header-pattern.test.js.map +0 -1
  24. package/dist/__tests__/identifier-resolver.test.d.ts +0 -1
  25. package/dist/__tests__/identifier-resolver.test.js +0 -50
  26. package/dist/__tests__/identifier-resolver.test.js.map +0 -1
  27. package/dist/__tests__/latency-bucket.test.d.ts +0 -1
  28. package/dist/__tests__/latency-bucket.test.js +0 -10
  29. package/dist/__tests__/latency-bucket.test.js.map +0 -1
  30. package/dist/__tests__/log-queue.test.d.ts +0 -1
  31. package/dist/__tests__/log-queue.test.js +0 -97
  32. package/dist/__tests__/log-queue.test.js.map +0 -1
  33. package/dist/__tests__/log-shipper-preconfig.test.d.ts +0 -1
  34. package/dist/__tests__/log-shipper-preconfig.test.js +0 -54
  35. package/dist/__tests__/log-shipper-preconfig.test.js.map +0 -1
  36. package/dist/__tests__/log-shipper.test.d.ts +0 -1
  37. package/dist/__tests__/log-shipper.test.js +0 -1040
  38. package/dist/__tests__/log-shipper.test.js.map +0 -1
  39. package/dist/__tests__/log-spool.test.d.ts +0 -1
  40. package/dist/__tests__/log-spool.test.js +0 -297
  41. package/dist/__tests__/log-spool.test.js.map +0 -1
  42. package/dist/__tests__/logger-body-size.test.d.ts +0 -1
  43. package/dist/__tests__/logger-body-size.test.js +0 -12
  44. package/dist/__tests__/logger-body-size.test.js.map +0 -1
  45. package/dist/__tests__/logger-console-min-level.test.d.ts +0 -1
  46. package/dist/__tests__/logger-console-min-level.test.js +0 -55
  47. package/dist/__tests__/logger-console-min-level.test.js.map +0 -1
  48. package/dist/__tests__/logger-debug-critical.test.d.ts +0 -1
  49. package/dist/__tests__/logger-debug-critical.test.js +0 -77
  50. package/dist/__tests__/logger-debug-critical.test.js.map +0 -1
  51. package/dist/__tests__/logger-endpoint-headers.test.d.ts +0 -1
  52. package/dist/__tests__/logger-endpoint-headers.test.js +0 -23
  53. package/dist/__tests__/logger-endpoint-headers.test.js.map +0 -1
  54. package/dist/__tests__/logger-enqueues.test.d.ts +0 -1
  55. package/dist/__tests__/logger-enqueues.test.js +0 -276
  56. package/dist/__tests__/logger-enqueues.test.js.map +0 -1
  57. package/dist/__tests__/logger-returns-promise.test.d.ts +0 -1
  58. package/dist/__tests__/logger-returns-promise.test.js +0 -27
  59. package/dist/__tests__/logger-returns-promise.test.js.map +0 -1
  60. package/dist/__tests__/parse-window.test.d.ts +0 -1
  61. package/dist/__tests__/parse-window.test.js +0 -19
  62. package/dist/__tests__/parse-window.test.js.map +0 -1
  63. package/dist/__tests__/rate-limit.decorator.test.d.ts +0 -1
  64. package/dist/__tests__/rate-limit.decorator.test.js +0 -47
  65. package/dist/__tests__/rate-limit.decorator.test.js.map +0 -1
  66. package/dist/__tests__/rate-limit.middleware.test.d.ts +0 -1
  67. package/dist/__tests__/rate-limit.middleware.test.js +0 -156
  68. package/dist/__tests__/rate-limit.middleware.test.js.map +0 -1
  69. package/dist/__tests__/route-decorator-body-flags.test.d.ts +0 -1
  70. package/dist/__tests__/route-decorator-body-flags.test.js +0 -117
  71. package/dist/__tests__/route-decorator-body-flags.test.js.map +0 -1
  72. package/dist/__tests__/route-flags-loader.test.d.ts +0 -1
  73. package/dist/__tests__/route-flags-loader.test.js +0 -153
  74. package/dist/__tests__/route-flags-loader.test.js.map +0 -1
  75. package/dist/__tests__/sentinel-header-mask.test.d.ts +0 -1
  76. package/dist/__tests__/sentinel-header-mask.test.js +0 -14
  77. package/dist/__tests__/sentinel-header-mask.test.js.map +0 -1
  78. package/dist/__tests__/setconfig-keeps-queued-logs.test.d.ts +0 -1
  79. package/dist/__tests__/setconfig-keeps-queued-logs.test.js +0 -59
  80. package/dist/__tests__/setconfig-keeps-queued-logs.test.js.map +0 -1
  81. package/dist/__tests__/shipper-replay-on-config.test.d.ts +0 -1
  82. package/dist/__tests__/shipper-replay-on-config.test.js +0 -59
  83. package/dist/__tests__/shipper-replay-on-config.test.js.map +0 -1
  84. package/dist/__tests__/token-bucket.store.test.d.ts +0 -1
  85. package/dist/__tests__/token-bucket.store.test.js +0 -99
  86. package/dist/__tests__/token-bucket.store.test.js.map +0 -1
  87. package/dist/__tests__/utils/setup-global.d.ts +0 -1
  88. package/dist/__tests__/utils/setup-global.js +0 -35
  89. package/dist/__tests__/utils/setup-global.js.map +0 -1
  90. package/dist/__tests__/utils/teardown-global.d.ts +0 -1
  91. package/dist/__tests__/utils/teardown-global.js +0 -36
  92. package/dist/__tests__/utils/teardown-global.js.map +0 -1
@@ -1,253 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- const graceful_shutdown_utils_1 = require("../utils/graceful-shutdown.utils");
27
- const logger_model_1 = require("../models/logger.model");
28
- const __1 = require("..");
29
- const request_tracker_utils_1 = require("../utils/request-tracker.utils");
30
- const applicationLogApi = __importStar(require("../api/application-log.api"));
31
- const types_1 = require("../types");
32
- const ACK = { data: { created: 1, deduped: 0 } };
33
- const messagesSent = (spy) => spy.mock.calls.flatMap((call) => call[2].logs.map((log) => log.message));
34
- class DelayedErrorLogger extends logger_model_1.Logger {
35
- async error(message, payload, options) {
36
- await new Promise((resolve) => setImmediate(resolve));
37
- return super.error(message, payload, options);
38
- }
39
- }
40
- class HangingErrorLogger extends logger_model_1.Logger {
41
- async error() {
42
- return new Promise(() => undefined);
43
- }
44
- }
45
- const httpError = (status) => Object.assign(new Error(`HTTP ${status}`), { response: { status } });
46
- const removeAllShutdownListeners = () => {
47
- process.removeAllListeners('SIGTERM');
48
- process.removeAllListeners('SIGINT');
49
- process.removeAllListeners('uncaughtException');
50
- process.removeAllListeners('unhandledRejection');
51
- };
52
- describe('setupGracefulShutdown — flush avant process.exit', () => {
53
- afterEach(() => {
54
- removeAllShutdownListeners();
55
- (0, request_tracker_utils_1.setIsShuttingDown)(false);
56
- __1.AbyssMonitorCore.getShipper().stop();
57
- jest.restoreAllMocks();
58
- jest.useRealTimers();
59
- });
60
- it('vide le shipper AVANT process.exit (succès)', async () => {
61
- const order = [];
62
- jest.spyOn(__1.AbyssMonitorCore.getShipper(), 'flush').mockImplementation(async () => {
63
- order.push('flush');
64
- });
65
- const exit = jest.spyOn(process, 'exit').mockImplementation((() => {
66
- order.push('exit');
67
- return undefined;
68
- }));
69
- (0, graceful_shutdown_utils_1.setupGracefulShutdown)({ logger: new logger_model_1.Logger({ shouldDisableConsoleLogging: true }) });
70
- process.emit('SIGTERM');
71
- await new Promise((resolve) => setTimeout(resolve, 50));
72
- expect(order).toEqual(['flush', 'exit']);
73
- expect(exit).toHaveBeenCalledWith(0);
74
- });
75
- it('vide le shipper AVANT process.exit (erreur pendant le shutdown)', async () => {
76
- const order = [];
77
- jest.spyOn(__1.AbyssMonitorCore.getShipper(), 'flush').mockImplementation(async () => {
78
- order.push('flush');
79
- });
80
- const exit = jest.spyOn(process, 'exit').mockImplementation((() => {
81
- order.push('exit');
82
- return undefined;
83
- }));
84
- (0, graceful_shutdown_utils_1.setupGracefulShutdown)({
85
- logger: new logger_model_1.Logger({ shouldDisableConsoleLogging: true }),
86
- httpServer: {
87
- close: (callback) => callback(new Error('close failed')),
88
- },
89
- });
90
- process.emit('SIGTERM');
91
- await new Promise((resolve) => setTimeout(resolve, 50));
92
- expect(order).toEqual(['flush', 'exit']);
93
- expect(exit).toHaveBeenCalledWith(1);
94
- });
95
- it("le timeout de shutdown vide la file sur disque (flush(0)) avant de forcer l'exit", async () => {
96
- const order = [];
97
- const flush = jest
98
- .spyOn(__1.AbyssMonitorCore.getShipper(), 'flush')
99
- .mockImplementation(async () => {
100
- order.push('flush');
101
- });
102
- const exit = jest.spyOn(process, 'exit').mockImplementation((() => {
103
- order.push('exit');
104
- return undefined;
105
- }));
106
- (0, graceful_shutdown_utils_1.setupGracefulShutdown)({
107
- logger: new logger_model_1.Logger({ shouldDisableConsoleLogging: true }),
108
- shutdownTimeout: 20,
109
- otherResources: [{ close: () => new Promise(() => { }) }],
110
- });
111
- process.emit('SIGTERM');
112
- await new Promise((resolve) => setTimeout(resolve, 100));
113
- expect(order).toEqual(['flush', 'exit']);
114
- expect(flush).toHaveBeenCalledWith(0, { ignoreBackoff: true });
115
- expect(exit).toHaveBeenCalledWith(1);
116
- });
117
- it('appelle stop() sur le shipper AVANT le flush', async () => {
118
- const order = [];
119
- const shipper = __1.AbyssMonitorCore.getShipper();
120
- jest.spyOn(shipper, 'stop').mockImplementation(() => {
121
- order.push('stop');
122
- });
123
- jest.spyOn(shipper, 'flush').mockImplementation(async () => {
124
- order.push('flush');
125
- });
126
- jest.spyOn(process, 'exit').mockImplementation((() => undefined));
127
- (0, graceful_shutdown_utils_1.setupGracefulShutdown)({ logger: new logger_model_1.Logger({ shouldDisableConsoleLogging: true }) });
128
- process.emit('SIGTERM');
129
- await new Promise((resolve) => setTimeout(resolve, 50));
130
- expect(order).toEqual(['stop', 'flush']);
131
- });
132
- it('borne un flush qui ne se termine jamais : exit survient quand même après le délai + marge', async () => {
133
- jest.useFakeTimers({ doNotFake: ['nextTick', 'setImmediate', 'queueMicrotask'] });
134
- jest.spyOn(__1.AbyssMonitorCore.getShipper(), 'flush').mockImplementation(() => new Promise(() => {
135
- }));
136
- const exit = jest.spyOn(process, 'exit').mockImplementation((() => undefined));
137
- (0, graceful_shutdown_utils_1.setupGracefulShutdown)({ logger: new logger_model_1.Logger({ shouldDisableConsoleLogging: true }) });
138
- process.emit('SIGTERM');
139
- await jest.advanceTimersByTimeAsync(2_000);
140
- expect(exit).not.toHaveBeenCalled();
141
- await jest.advanceTimersByTimeAsync(1_500);
142
- expect(exit).toHaveBeenCalledWith(0);
143
- });
144
- it('envoie malgré un recul actif (503 puis SIGTERM) — amendement A3', async () => {
145
- const order = [];
146
- __1.AbyssMonitorCore.setConfig({
147
- applicationId: 'app-flush-backoff',
148
- secretPublishToken: 'secret',
149
- shipper: { spoolDirectory: null, flushIntervalMs: 60_000 },
150
- });
151
- const shipper = __1.AbyssMonitorCore.getShipper();
152
- const post = jest
153
- .spyOn(applicationLogApi, 'createBulkApplicationLog')
154
- .mockRejectedValueOnce(httpError(503))
155
- .mockResolvedValue({ data: { created: 1, deduped: 0 } });
156
- shipper.enqueue({
157
- message: 'en attente de recul',
158
- level: types_1.LogLevel.LOG,
159
- processId: '1',
160
- dateValue: new Date(),
161
- clientLogId: 'flush-backoff-1',
162
- });
163
- await shipper.flush(3_000);
164
- expect(post).toHaveBeenCalledTimes(1);
165
- jest.spyOn(process, 'exit').mockImplementation((() => {
166
- order.push('exit');
167
- return undefined;
168
- }));
169
- const flushSpy = jest.spyOn(shipper, 'flush');
170
- (0, graceful_shutdown_utils_1.setupGracefulShutdown)({ logger: new logger_model_1.Logger({ shouldDisableConsoleLogging: true }) });
171
- process.emit('SIGTERM');
172
- await new Promise((resolve) => setTimeout(resolve, 50));
173
- expect(post).toHaveBeenCalledTimes(2);
174
- expect(flushSpy).toHaveBeenCalledWith(3_000, { ignoreBackoff: true });
175
- expect(order).toEqual(['exit']);
176
- });
177
- });
178
- describe.each([
179
- ['uncaughtException', () => process.emit('uncaughtException', new Error('boom'))],
180
- [
181
- 'unhandledRejection',
182
- () => process.emit('unhandledRejection', new Error('boom'), Promise.resolve()),
183
- ],
184
- ])('setupGracefulShutdown — %s : un seul flush par sortie', (eventName, emitCrash) => {
185
- afterEach(() => {
186
- removeAllShutdownListeners();
187
- (0, request_tracker_utils_1.setIsShuttingDown)(false);
188
- __1.AbyssMonitorCore.getShipper().stop();
189
- jest.restoreAllMocks();
190
- jest.useRealTimers();
191
- });
192
- it('pas de shutdown en cours : un seul flush, celui de gracefulShutdown — le log de crash y figure', async () => {
193
- __1.AbyssMonitorCore.setConfig({
194
- applicationId: `app-crash-a-${eventName}`,
195
- secretPublishToken: 'secret',
196
- shipper: { spoolDirectory: null, flushIntervalMs: 60_000 },
197
- });
198
- const shipper = __1.AbyssMonitorCore.getShipper();
199
- const post = jest
200
- .spyOn(applicationLogApi, 'createBulkApplicationLog')
201
- .mockResolvedValue(ACK);
202
- const flushSpy = jest.spyOn(shipper, 'flush');
203
- const exit = jest.spyOn(process, 'exit').mockImplementation((() => undefined));
204
- (0, graceful_shutdown_utils_1.setupGracefulShutdown)({
205
- logger: new DelayedErrorLogger({ shouldDisableConsoleLogging: true }),
206
- });
207
- emitCrash();
208
- await new Promise((resolve) => setTimeout(resolve, 100));
209
- expect(flushSpy).toHaveBeenCalledTimes(1);
210
- expect(exit).toHaveBeenCalledWith(0);
211
- expect(messagesSent(post)).toContain(eventName === 'uncaughtException' ? 'Uncaught Exception' : 'Unhandled Rejection');
212
- });
213
- it(`un log de crash qui ne rend jamais la main ne retient l'arrêt que ${graceful_shutdown_utils_1.CRASH_LOG_TIMEOUT_MS} ms`, async () => {
214
- jest.useFakeTimers({ doNotFake: ['nextTick', 'setImmediate', 'queueMicrotask'] });
215
- const flush = jest
216
- .spyOn(__1.AbyssMonitorCore.getShipper(), 'flush')
217
- .mockImplementation(async () => undefined);
218
- const exit = jest.spyOn(process, 'exit').mockImplementation((() => undefined));
219
- (0, graceful_shutdown_utils_1.setupGracefulShutdown)({
220
- logger: new HangingErrorLogger({ shouldDisableConsoleLogging: true }),
221
- });
222
- emitCrash();
223
- await jest.advanceTimersByTimeAsync(graceful_shutdown_utils_1.CRASH_LOG_TIMEOUT_MS - 1);
224
- expect(flush).not.toHaveBeenCalled();
225
- expect(exit).not.toHaveBeenCalled();
226
- await jest.advanceTimersByTimeAsync(1);
227
- expect(flush).toHaveBeenCalledTimes(1);
228
- expect(exit).toHaveBeenCalledWith(0);
229
- });
230
- it('shutdown déjà en cours : le flush du handler tourne seul, le log y figure, gracefulShutdown ne reflushe pas', async () => {
231
- __1.AbyssMonitorCore.setConfig({
232
- applicationId: `app-crash-b-${eventName}`,
233
- secretPublishToken: 'secret',
234
- shipper: { spoolDirectory: null, flushIntervalMs: 60_000 },
235
- });
236
- const shipper = __1.AbyssMonitorCore.getShipper();
237
- const post = jest
238
- .spyOn(applicationLogApi, 'createBulkApplicationLog')
239
- .mockResolvedValue(ACK);
240
- const flushSpy = jest.spyOn(shipper, 'flush');
241
- const exit = jest.spyOn(process, 'exit').mockImplementation((() => undefined));
242
- (0, graceful_shutdown_utils_1.setupGracefulShutdown)({
243
- logger: new DelayedErrorLogger({ shouldDisableConsoleLogging: true }),
244
- });
245
- (0, request_tracker_utils_1.setIsShuttingDown)(true);
246
- emitCrash();
247
- await new Promise((resolve) => setTimeout(resolve, 100));
248
- expect(flushSpy).toHaveBeenCalledTimes(1);
249
- expect(exit).not.toHaveBeenCalled();
250
- expect(messagesSent(post)).toContain(eventName === 'uncaughtException' ? 'Uncaught Exception' : 'Unhandled Rejection');
251
- });
252
- });
253
- //# sourceMappingURL=graceful-shutdown-flush.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graceful-shutdown-flush.test.js","sourceRoot":"","sources":["../../src/__tests__/graceful-shutdown-flush.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,124 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- const graceful_shutdown_utils_1 = require("../utils/graceful-shutdown.utils");
27
- const logger_model_1 = require("../models/logger.model");
28
- const __1 = require("..");
29
- const requestTracker = __importStar(require("../utils/request-tracker.utils"));
30
- const types_1 = require("../types");
31
- const DRAIN_MESSAGE = 'Waiting for 1 active requests to complete...';
32
- const capturingLogger = (published, options) => new logger_model_1.Logger({
33
- ...options,
34
- customPublishLog: async (payload) => {
35
- published.push(payload);
36
- },
37
- });
38
- const removeAllShutdownListeners = () => {
39
- process.removeAllListeners('SIGTERM');
40
- process.removeAllListeners('SIGINT');
41
- process.removeAllListeners('uncaughtException');
42
- process.removeAllListeners('unhandledRejection');
43
- };
44
- describe("waitForActiveRequests — progression du drainage à l'arrêt", () => {
45
- const originalEnv = process.env.ABYSS_LOGGER_CONSOLE_MIN_LEVEL;
46
- beforeEach(() => {
47
- delete process.env.ABYSS_LOGGER_CONSOLE_MIN_LEVEL;
48
- requestTracker.incrementActiveRequests();
49
- });
50
- afterEach(() => {
51
- requestTracker.decrementActiveRequests();
52
- if (originalEnv === undefined) {
53
- delete process.env.ABYSS_LOGGER_CONSOLE_MIN_LEVEL;
54
- }
55
- else {
56
- process.env.ABYSS_LOGGER_CONSOLE_MIN_LEVEL = originalEnv;
57
- }
58
- jest.restoreAllMocks();
59
- });
60
- it('publie le message de drainage au niveau LOG et le montre en console par défaut', async () => {
61
- const published = [];
62
- const consoleLog = jest.spyOn(console, 'log').mockImplementation(() => undefined);
63
- const logger = capturingLogger(published, { shouldDisableConsoleLogging: false });
64
- await expect(requestTracker.waitForActiveRequests(200, 1, logger)).rejects.toThrow('Timeout waiting for 1 active requests to complete');
65
- const drain = published.filter((log) => log.message === DRAIN_MESSAGE);
66
- expect(drain.length).toBeGreaterThan(0);
67
- expect(drain.every((log) => log.level === types_1.LogLevel.LOG)).toBe(true);
68
- expect(consoleLog.mock.calls.some((call) => String(call[0]).includes(DRAIN_MESSAGE))).toBe(true);
69
- });
70
- });
71
- describe("createGracefulShutdownLogger — critical() porte le contexte de l'arrêt", () => {
72
- afterEach(() => {
73
- removeAllShutdownListeners();
74
- requestTracker.setIsShuttingDown(false);
75
- requestTracker.decrementActiveRequests();
76
- __1.AbyssMonitorCore.getShipper().stop();
77
- jest.restoreAllMocks();
78
- });
79
- const shutdownLogger = async (baseLogger) => {
80
- let received;
81
- jest
82
- .spyOn(requestTracker, 'waitForActiveRequests')
83
- .mockImplementation(async (_timeout, _interval, logger) => {
84
- received = logger;
85
- });
86
- jest.spyOn(__1.AbyssMonitorCore.getShipper(), 'flush').mockResolvedValue(undefined);
87
- jest.spyOn(process, 'exit').mockImplementation((() => undefined));
88
- requestTracker.incrementActiveRequests();
89
- (0, graceful_shutdown_utils_1.setupGracefulShutdown)({ logger: baseLogger });
90
- process.emit('SIGTERM');
91
- await new Promise((resolve) => setTimeout(resolve, 50));
92
- if (!received) {
93
- throw new Error('the drain step never received the shutdown logger');
94
- }
95
- return received;
96
- };
97
- it('critical(message) publie CRITICAL avec le contexte GracefulShutdown et SYSTEM_STARTUP', async () => {
98
- const published = [];
99
- const logger = await shutdownLogger(capturingLogger(published, { shouldDisableConsoleLogging: true }));
100
- await logger.critical('drain impossible', { data: { attempt: 3 } });
101
- const critical = published.filter((log) => log.level === types_1.LogLevel.CRITICAL);
102
- expect(critical).toHaveLength(1);
103
- expect(critical[0]).toMatchObject({
104
- message: 'drain impossible',
105
- context: 'GracefulShutdown',
106
- scenario: types_1.LogScenario.SYSTEM_STARTUP,
107
- data: { attempt: 3 },
108
- });
109
- });
110
- it("critical(Error) garde le contexte de l'arrêt et le nom de l'erreur", async () => {
111
- const published = [];
112
- const logger = await shutdownLogger(capturingLogger(published, { shouldDisableConsoleLogging: true }));
113
- await logger.critical(new Error('pool closed'));
114
- const critical = published.filter((log) => log.level === types_1.LogLevel.CRITICAL);
115
- expect(critical).toHaveLength(1);
116
- expect(critical[0]).toMatchObject({
117
- message: 'Error pool closed',
118
- context: 'GracefulShutdown',
119
- scenario: types_1.LogScenario.SYSTEM_STARTUP,
120
- data: { errorName: 'Error' },
121
- });
122
- });
123
- });
124
- //# sourceMappingURL=graceful-shutdown-logger.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graceful-shutdown-logger.test.js","sourceRoot":"","sources":["../../src/__tests__/graceful-shutdown-logger.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,66 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const header_pattern_1 = require("../utils/header-pattern");
4
- describe('headerMatches', () => {
5
- it('matches exact name (case-insensitive)', () => {
6
- expect((0, header_pattern_1.headerMatches)('Content-Type', ['content-type'])).toBe(true);
7
- });
8
- it('matches wildcard prefix', () => {
9
- expect((0, header_pattern_1.headerMatches)('RateLimit-Limit', ['ratelimit-*'])).toBe(true);
10
- expect((0, header_pattern_1.headerMatches)('RateLimit-Remaining', ['ratelimit-*'])).toBe(true);
11
- });
12
- it('does not match when pattern does not apply', () => {
13
- expect((0, header_pattern_1.headerMatches)('Authorization', ['ratelimit-*'])).toBe(false);
14
- });
15
- });
16
- describe('shouldCaptureHeader', () => {
17
- it('returns true for allowlisted name', () => {
18
- expect((0, header_pattern_1.shouldCaptureHeader)('Content-Type', ['content-type'])).toBe(true);
19
- });
20
- it('returns false for NEVER_CAPTURE even if allowlisted', () => {
21
- expect((0, header_pattern_1.shouldCaptureHeader)('Authorization', ['authorization'])).toBe(false);
22
- expect((0, header_pattern_1.shouldCaptureHeader)('Cookie', ['cookie'])).toBe(false);
23
- });
24
- it('returns false for the mesh admin token even if allowlisted by wildcard', () => {
25
- expect((0, header_pattern_1.shouldCaptureHeader)('abyss-admin-token', ['abyss-*'])).toBe(false);
26
- });
27
- it('returns false when not in allowlist', () => {
28
- expect((0, header_pattern_1.shouldCaptureHeader)('X-Custom', ['content-type'])).toBe(false);
29
- });
30
- });
31
- describe('filterCapturedHeaders', () => {
32
- it('returns null when input config is false', () => {
33
- expect((0, header_pattern_1.filterCapturedHeaders)({ a: '1' }, false)).toBeNull();
34
- });
35
- it('uses default allowlist when config is true', () => {
36
- const out = (0, header_pattern_1.filterCapturedHeaders)({ 'RateLimit-Limit': '10', authorization: 'Bearer x', 'content-type': 'json' }, true);
37
- expect(out).toEqual({ 'ratelimit-limit': '10', 'content-type': 'json' });
38
- });
39
- it('extends default allowlist when config is string[]', () => {
40
- const out = (0, header_pattern_1.filterCapturedHeaders)({ 'X-Custom-Foo': '1', 'ratelimit-limit': '5' }, [
41
- 'x-custom-*',
42
- ]);
43
- expect(out).toEqual({ 'x-custom-foo': '1', 'ratelimit-limit': '5' });
44
- });
45
- it('honors NEVER_CAPTURE even when user lists it', () => {
46
- const out = (0, header_pattern_1.filterCapturedHeaders)({ authorization: 'Bearer x', cookie: 'foo' }, [
47
- 'authorization',
48
- 'cookie',
49
- ]);
50
- expect(out).toEqual({});
51
- });
52
- it('lowercases output keys', () => {
53
- const out = (0, header_pattern_1.filterCapturedHeaders)({ 'Content-Type': 'json' }, true);
54
- expect(out).toEqual({ 'content-type': 'json' });
55
- });
56
- });
57
- describe('constants', () => {
58
- it('default allowlist contains ratelimit wildcard', () => {
59
- expect(header_pattern_1.DEFAULT_HEADER_ALLOWLIST).toContain('ratelimit-*');
60
- });
61
- it('NEVER_CAPTURE contains authorization and cookie', () => {
62
- expect(header_pattern_1.NEVER_CAPTURE_HEADERS.has('authorization')).toBe(true);
63
- expect(header_pattern_1.NEVER_CAPTURE_HEADERS.has('cookie')).toBe(true);
64
- });
65
- });
66
- //# sourceMappingURL=header-pattern.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"header-pattern.test.js","sourceRoot":"","sources":["../../src/__tests__/header-pattern.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const crypto_1 = require("crypto");
4
- const identifier_resolver_1 = require("../middlewares/rate-limit/identifier-resolver");
5
- function expectedApiKeyHash(value) {
6
- return (0, crypto_1.createHash)('sha256').update(value).digest('hex').slice(0, 16);
7
- }
8
- function makeReq(opts = {}) {
9
- return {
10
- ip: opts.ip ?? '1.2.3.4',
11
- headers: opts.apiKey ? { 'abyss-api-key': opts.apiKey } : {},
12
- header: function (name) {
13
- return this.headers[name.toLowerCase()];
14
- },
15
- };
16
- }
17
- function makeRes(locals) {
18
- return { locals };
19
- }
20
- describe('resolveIdentifiers', () => {
21
- it('returns admin scope when isAdmin', () => {
22
- const out = (0, identifier_resolver_1.resolveIdentifiers)(makeReq(), makeRes({ isAdmin: true }));
23
- expect(out).toEqual({ kind: 'admin' });
24
- });
25
- it('returns apikey scope when x-api-key header present', () => {
26
- const out = (0, identifier_resolver_1.resolveIdentifiers)(makeReq({ apiKey: 'key-abc' }), makeRes({}));
27
- expect(out).toEqual({ kind: 'apikey', apiKeyId: expectedApiKeyHash('key-abc') });
28
- });
29
- it('returns user+org when currentUser and organization present', () => {
30
- const out = (0, identifier_resolver_1.resolveIdentifiers)(makeReq(), makeRes({ currentUser: { id: 'u1' }, organization: { id: 'o1' } }));
31
- expect(out).toEqual({ kind: 'userOrg', userId: 'u1', orgId: 'o1' });
32
- });
33
- it('returns user-only when currentUser present without organization', () => {
34
- const out = (0, identifier_resolver_1.resolveIdentifiers)(makeReq(), makeRes({ currentUser: { id: 'u1' } }));
35
- expect(out).toEqual({ kind: 'user', userId: 'u1' });
36
- });
37
- it('falls back to ip scope', () => {
38
- const out = (0, identifier_resolver_1.resolveIdentifiers)(makeReq({ ip: '9.9.9.9' }), makeRes({}));
39
- expect(out).toEqual({ kind: 'ip', ip: '9.9.9.9' });
40
- });
41
- it('apikey takes priority over JWT', () => {
42
- const out = (0, identifier_resolver_1.resolveIdentifiers)(makeReq({ apiKey: 'k' }), makeRes({ currentUser: { id: 'u' } }));
43
- expect(out).toEqual({ kind: 'apikey', apiKeyId: expectedApiKeyHash('k') });
44
- });
45
- it('admin takes priority over apikey', () => {
46
- const out = (0, identifier_resolver_1.resolveIdentifiers)(makeReq({ apiKey: 'k' }), makeRes({ isAdmin: true }));
47
- expect(out).toEqual({ kind: 'admin' });
48
- });
49
- });
50
- //# sourceMappingURL=identifier-resolver.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"identifier-resolver.test.js","sourceRoot":"","sources":["../../src/__tests__/identifier-resolver.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const index_1 = require("../index");
4
- describe('LatencyBucket', () => {
5
- it('is exported from the package root with its wire values', () => {
6
- expect(index_1.LatencyBucket.HOUR).toBe('hour');
7
- expect(index_1.LatencyBucket.DAY).toBe('day');
8
- });
9
- });
10
- //# sourceMappingURL=latency-bucket.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"latency-bucket.test.js","sourceRoot":"","sources":["../../src/__tests__/latency-bucket.test.ts"],"names":[],"mappings":";;AAAA,oCAAyC;AAEzC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,qBAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,qBAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};