@abyss-project/monitor 2.2.0 → 2.3.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 (79) hide show
  1. package/README.md +36 -0
  2. package/dist/__tests__/alert-log-url.test.d.ts +1 -0
  3. package/dist/__tests__/alert-log-url.test.js +21 -0
  4. package/dist/__tests__/alert-log-url.test.js.map +1 -0
  5. package/dist/__tests__/application-log-bulk-api.test.d.ts +1 -0
  6. package/dist/__tests__/application-log-bulk-api.test.js +125 -0
  7. package/dist/__tests__/application-log-bulk-api.test.js.map +1 -0
  8. package/dist/__tests__/graceful-shutdown-flush.test.d.ts +1 -0
  9. package/dist/__tests__/graceful-shutdown-flush.test.js +253 -0
  10. package/dist/__tests__/graceful-shutdown-flush.test.js.map +1 -0
  11. package/dist/__tests__/log-queue.test.d.ts +1 -0
  12. package/dist/__tests__/log-queue.test.js +97 -0
  13. package/dist/__tests__/log-queue.test.js.map +1 -0
  14. package/dist/__tests__/log-shipper-preconfig.test.d.ts +1 -0
  15. package/dist/__tests__/log-shipper-preconfig.test.js +54 -0
  16. package/dist/__tests__/log-shipper-preconfig.test.js.map +1 -0
  17. package/dist/__tests__/log-shipper.test.d.ts +1 -0
  18. package/dist/__tests__/log-shipper.test.js +1040 -0
  19. package/dist/__tests__/log-shipper.test.js.map +1 -0
  20. package/dist/__tests__/log-spool.test.d.ts +1 -0
  21. package/dist/__tests__/log-spool.test.js +297 -0
  22. package/dist/__tests__/log-spool.test.js.map +1 -0
  23. package/dist/__tests__/logger-body-size.test.d.ts +1 -0
  24. package/dist/__tests__/logger-body-size.test.js +12 -0
  25. package/dist/__tests__/logger-body-size.test.js.map +1 -0
  26. package/dist/__tests__/logger-console-min-level.test.d.ts +1 -0
  27. package/dist/__tests__/logger-console-min-level.test.js +55 -0
  28. package/dist/__tests__/logger-console-min-level.test.js.map +1 -0
  29. package/dist/__tests__/logger-enqueues.test.d.ts +1 -0
  30. package/dist/__tests__/logger-enqueues.test.js +276 -0
  31. package/dist/__tests__/logger-enqueues.test.js.map +1 -0
  32. package/dist/__tests__/logger-returns-promise.test.d.ts +1 -0
  33. package/dist/__tests__/logger-returns-promise.test.js +27 -0
  34. package/dist/__tests__/logger-returns-promise.test.js.map +1 -0
  35. package/dist/__tests__/rate-limit.middleware.test.js +4 -1
  36. package/dist/__tests__/rate-limit.middleware.test.js.map +1 -1
  37. package/dist/__tests__/setconfig-keeps-queued-logs.test.d.ts +1 -0
  38. package/dist/__tests__/setconfig-keeps-queued-logs.test.js +59 -0
  39. package/dist/__tests__/setconfig-keeps-queued-logs.test.js.map +1 -0
  40. package/dist/__tests__/shipper-replay-on-config.test.d.ts +1 -0
  41. package/dist/__tests__/shipper-replay-on-config.test.js +59 -0
  42. package/dist/__tests__/shipper-replay-on-config.test.js.map +1 -0
  43. package/dist/__tests__/utils/setup-global.d.ts +1 -0
  44. package/dist/__tests__/utils/setup-global.js +35 -0
  45. package/dist/__tests__/utils/setup-global.js.map +1 -0
  46. package/dist/__tests__/utils/teardown-global.d.ts +1 -0
  47. package/dist/__tests__/utils/teardown-global.js +36 -0
  48. package/dist/__tests__/utils/teardown-global.js.map +1 -0
  49. package/dist/api/application-log.api.d.ts +5 -1
  50. package/dist/api/application-log.api.js +10 -1
  51. package/dist/api/application-log.api.js.map +1 -1
  52. package/dist/index.d.ts +5 -0
  53. package/dist/index.js +22 -0
  54. package/dist/index.js.map +1 -1
  55. package/dist/models/index.d.ts +3 -0
  56. package/dist/models/index.js +3 -0
  57. package/dist/models/index.js.map +1 -1
  58. package/dist/models/log-queue.model.d.ts +25 -0
  59. package/dist/models/log-queue.model.js +68 -0
  60. package/dist/models/log-queue.model.js.map +1 -0
  61. package/dist/models/log-shipper.model.d.ts +75 -0
  62. package/dist/models/log-shipper.model.js +452 -0
  63. package/dist/models/log-shipper.model.js.map +1 -0
  64. package/dist/models/log-spool.model.d.ts +32 -0
  65. package/dist/models/log-spool.model.js +202 -0
  66. package/dist/models/log-spool.model.js.map +1 -0
  67. package/dist/models/logger.model.d.ts +3 -0
  68. package/dist/models/logger.model.js +59 -70
  69. package/dist/models/logger.model.js.map +1 -1
  70. package/dist/types/interface/api/requests/application-log.request.d.ts +10 -0
  71. package/dist/types/interface/api/responses/application-log.response.d.ts +5 -0
  72. package/dist/utils/alert.utils.d.ts +1 -0
  73. package/dist/utils/alert.utils.js +8 -5
  74. package/dist/utils/alert.utils.js.map +1 -1
  75. package/dist/utils/graceful-shutdown.utils.d.ts +1 -0
  76. package/dist/utils/graceful-shutdown.utils.js +53 -8
  77. package/dist/utils/graceful-shutdown.utils.js.map +1 -1
  78. package/jest.config.ts +5 -0
  79. package/package.json +1 -1
@@ -0,0 +1,276 @@
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 logger_model_1 = require("../models/logger.model");
27
+ const __1 = require("..");
28
+ const alertUtils = __importStar(require("../utils/alert.utils"));
29
+ describe('Logger -> LogShipper', () => {
30
+ afterEach(() => {
31
+ delete process.env.ABYSS_LOGGER_CONSOLE_MIN_LEVEL;
32
+ });
33
+ it('empile au lieu de POSTer une ligne à la fois', async () => {
34
+ __1.AbyssMonitorCore.setConfig({ applicationId: 'app-1', secretPublishToken: 'secret' });
35
+ const enqueue = jest
36
+ .spyOn(__1.AbyssMonitorCore.getShipper(), 'enqueue')
37
+ .mockImplementation(() => undefined);
38
+ const post = jest.spyOn(__1.AbyssMonitorCore.axios, 'post');
39
+ const logger = new logger_model_1.Logger({ shouldDisableConsoleLogging: true });
40
+ await logger.info('coucou');
41
+ expect(enqueue).toHaveBeenCalledTimes(1);
42
+ expect(post).not.toHaveBeenCalled();
43
+ enqueue.mockRestore();
44
+ post.mockRestore();
45
+ });
46
+ it('tronque les corps de requête et de réponse au-delà de MAXIMUM_BODY_SIZE', async () => {
47
+ __1.AbyssMonitorCore.setConfig({ applicationId: 'app-1', secretPublishToken: 'secret' });
48
+ const enqueue = jest
49
+ .spyOn(__1.AbyssMonitorCore.getShipper(), 'enqueue')
50
+ .mockImplementation(() => undefined);
51
+ const logger = new logger_model_1.Logger({ shouldDisableConsoleLogging: true });
52
+ await logger.info('gros', {
53
+ applicationLogEndpoint: {
54
+ controller: 'C',
55
+ endpoint: '/e',
56
+ ip: [],
57
+ method: 1,
58
+ responseTime: 1,
59
+ responseHttpCode: 200,
60
+ requestBody: 'x'.repeat(2 * 1024 * 1024),
61
+ responseBody: 'y'.repeat(2 * 1024 * 1024),
62
+ },
63
+ });
64
+ const enqueued = enqueue.mock.calls[0][0];
65
+ expect(enqueued.applicationLogEndpoint?.requestBody).toBe('Payload Too Large');
66
+ expect(enqueued.applicationLogEndpoint?.responseBody).toBe('Payload Too Large');
67
+ enqueue.mockRestore();
68
+ });
69
+ it("refuse d'empiler et le dit sur stderr quand la charge dépasse encore la limite après troncature", async () => {
70
+ __1.AbyssMonitorCore.setConfig({ applicationId: 'app-1', secretPublishToken: 'secret' });
71
+ const enqueue = jest
72
+ .spyOn(__1.AbyssMonitorCore.getShipper(), 'enqueue')
73
+ .mockImplementation(() => undefined);
74
+ const errorSink = jest.spyOn(console, 'error').mockImplementation(() => undefined);
75
+ const logger = new logger_model_1.Logger({ shouldDisableConsoleLogging: true });
76
+ await logger.info('x'.repeat(2 * 1024 * 1024));
77
+ expect(enqueue).not.toHaveBeenCalled();
78
+ expect(errorSink).toHaveBeenCalledTimes(1);
79
+ expect(errorSink.mock.calls[0][0]).toEqual(expect.stringContaining('Unable to queue log'));
80
+ enqueue.mockRestore();
81
+ errorSink.mockRestore();
82
+ });
83
+ it("A7 : un log sous ABYSS_LOGGER_CONSOLE_MIN_LEVEL n'écrit pas en console mais est quand même empilé", async () => {
84
+ __1.AbyssMonitorCore.setConfig({ applicationId: 'app-1', secretPublishToken: 'secret' });
85
+ process.env.ABYSS_LOGGER_CONSOLE_MIN_LEVEL = 'WARN';
86
+ const sink = jest.spyOn(console, 'log').mockImplementation(() => undefined);
87
+ const enqueue = jest
88
+ .spyOn(__1.AbyssMonitorCore.getShipper(), 'enqueue')
89
+ .mockImplementation(() => undefined);
90
+ const logger = new logger_model_1.Logger({});
91
+ await logger.info('sous le seuil');
92
+ expect(sink).not.toHaveBeenCalled();
93
+ expect(enqueue).toHaveBeenCalledTimes(1);
94
+ sink.mockRestore();
95
+ enqueue.mockRestore();
96
+ });
97
+ it("n'empile pas quand shouldDisableRemoteLogging est actif", async () => {
98
+ __1.AbyssMonitorCore.setConfig({ applicationId: 'app-1', secretPublishToken: 'secret' });
99
+ const enqueue = jest
100
+ .spyOn(__1.AbyssMonitorCore.getShipper(), 'enqueue')
101
+ .mockImplementation(() => undefined);
102
+ const logger = new logger_model_1.Logger({
103
+ shouldDisableConsoleLogging: true,
104
+ shouldDisableRemoteLogging: true,
105
+ });
106
+ await logger.info('pas de shipper');
107
+ expect(enqueue).not.toHaveBeenCalled();
108
+ enqueue.mockRestore();
109
+ });
110
+ describe('Controller ruling 12 — la garde de sendLogAlert', () => {
111
+ it('(a) shouldDisableRemoteLogging: ni alerte ni empilement', async () => {
112
+ __1.AbyssMonitorCore.setConfig({ applicationId: 'app-1', secretPublishToken: 'secret' });
113
+ const enqueue = jest
114
+ .spyOn(__1.AbyssMonitorCore.getShipper(), 'enqueue')
115
+ .mockImplementation(() => undefined);
116
+ const alert = jest
117
+ .spyOn(alertUtils, 'sendLogAlert')
118
+ .mockImplementation(async () => undefined);
119
+ const logger = new logger_model_1.Logger({
120
+ shouldDisableConsoleLogging: true,
121
+ shouldDisableRemoteLogging: true,
122
+ });
123
+ await logger.error('boom');
124
+ expect(enqueue).not.toHaveBeenCalled();
125
+ expect(alert).not.toHaveBeenCalled();
126
+ enqueue.mockRestore();
127
+ alert.mockRestore();
128
+ });
129
+ it('(b) configuré + remote logging actif : alerte envoyée sans application_log_id=, ligne empilée', async () => {
130
+ __1.AbyssMonitorCore.setConfig({ applicationId: 'app-1', secretPublishToken: 'secret' });
131
+ const enqueue = jest
132
+ .spyOn(__1.AbyssMonitorCore.getShipper(), 'enqueue')
133
+ .mockImplementation(() => undefined);
134
+ const alert = jest
135
+ .spyOn(alertUtils, 'sendLogAlert')
136
+ .mockImplementation(async () => undefined);
137
+ const logger = new logger_model_1.Logger({ shouldDisableConsoleLogging: true });
138
+ await logger.error('boom');
139
+ expect(enqueue).toHaveBeenCalledTimes(1);
140
+ expect(alert).toHaveBeenCalledTimes(1);
141
+ const alertParams = alert.mock.calls[0][0];
142
+ expect(alertParams.applicationLogId).toBeNull();
143
+ enqueue.mockRestore();
144
+ alert.mockRestore();
145
+ });
146
+ it('(c) application non configurée : ligne empilée quand même, aucune alerte', async () => {
147
+ __1.AbyssMonitorCore.setConfig({ applicationId: '', secretPublishToken: '' });
148
+ const enqueue = jest
149
+ .spyOn(__1.AbyssMonitorCore.getShipper(), 'enqueue')
150
+ .mockImplementation(() => undefined);
151
+ const alert = jest
152
+ .spyOn(alertUtils, 'sendLogAlert')
153
+ .mockImplementation(async () => undefined);
154
+ const logger = new logger_model_1.Logger({ shouldDisableConsoleLogging: true });
155
+ await logger.error('boom');
156
+ expect(enqueue).toHaveBeenCalledTimes(1);
157
+ expect(alert).not.toHaveBeenCalled();
158
+ enqueue.mockRestore();
159
+ alert.mockRestore();
160
+ });
161
+ });
162
+ describe("T9 — l'alerte du bloc catch garde la garde de la ruling 12", () => {
163
+ const circularData = () => {
164
+ const data = {};
165
+ data.self = data;
166
+ return data;
167
+ };
168
+ afterEach(() => {
169
+ jest.restoreAllMocks();
170
+ });
171
+ it('remote logging coupé : un échec de publication ne part pas sur Discord', async () => {
172
+ __1.AbyssMonitorCore.setConfig({ applicationId: 'app-1', secretPublishToken: 'secret' });
173
+ const alert = jest
174
+ .spyOn(alertUtils, 'sendLogAlert')
175
+ .mockImplementation(async () => undefined);
176
+ jest.spyOn(console, 'error').mockImplementation(() => undefined);
177
+ const logger = new logger_model_1.Logger({
178
+ shouldDisableRemoteLogging: true,
179
+ customConsoleLogger: (data) => {
180
+ JSON.stringify(data);
181
+ },
182
+ });
183
+ await logger.error('boom', { data: circularData() });
184
+ expect(console.error).toHaveBeenCalledWith(expect.stringContaining('Unable to publish log'));
185
+ expect(alert).not.toHaveBeenCalled();
186
+ });
187
+ it('application non configurée : une charge impossible à sérialiser ne part pas sur Discord', async () => {
188
+ __1.AbyssMonitorCore.setConfig({ applicationId: '', secretPublishToken: '' });
189
+ const alert = jest
190
+ .spyOn(alertUtils, 'sendLogAlert')
191
+ .mockImplementation(async () => undefined);
192
+ jest.spyOn(console, 'error').mockImplementation(() => undefined);
193
+ const logger = new logger_model_1.Logger({ shouldDisableConsoleLogging: true });
194
+ await logger.error('boom', { data: circularData() });
195
+ expect(console.error).toHaveBeenCalledWith(expect.stringContaining('Unable to publish log'));
196
+ expect(alert).not.toHaveBeenCalled();
197
+ });
198
+ it("configurée, remote logging actif : l'échec de publication alerte, une fois", async () => {
199
+ __1.AbyssMonitorCore.setConfig({ applicationId: 'app-1', secretPublishToken: 'secret' });
200
+ const alert = jest
201
+ .spyOn(alertUtils, 'sendLogAlert')
202
+ .mockImplementation(async () => undefined);
203
+ jest.spyOn(console, 'error').mockImplementation(() => undefined);
204
+ const logger = new logger_model_1.Logger({ shouldDisableConsoleLogging: true });
205
+ await logger.error('boom', { data: circularData() });
206
+ expect(alert).toHaveBeenCalledTimes(1);
207
+ expect(alert.mock.calls[0][0]).toMatchObject({ author: 'AbyssMonitor Logger' });
208
+ });
209
+ });
210
+ describe('M2 — une ligne mesurée une fois, et seulement si elle part', () => {
211
+ afterEach(() => {
212
+ jest.restoreAllMocks();
213
+ });
214
+ it('remote logging coupé : la ligne n est jamais sérialisée', async () => {
215
+ __1.AbyssMonitorCore.setConfig({ applicationId: 'app-1', secretPublishToken: 'secret' });
216
+ const enqueue = jest
217
+ .spyOn(__1.AbyssMonitorCore.getShipper(), 'enqueue')
218
+ .mockImplementation(() => undefined);
219
+ const stringify = jest.spyOn(JSON, 'stringify');
220
+ const logger = new logger_model_1.Logger({
221
+ shouldDisableConsoleLogging: true,
222
+ shouldDisableRemoteLogging: true,
223
+ });
224
+ await logger.info('locale seulement', { data: { big: 'x'.repeat(10_000) } });
225
+ expect(stringify).not.toHaveBeenCalled();
226
+ expect(enqueue).not.toHaveBeenCalled();
227
+ });
228
+ it('sérialise la ligne une seule fois et passe sa taille au shipper', async () => {
229
+ __1.AbyssMonitorCore.setConfig({ applicationId: '', secretPublishToken: '' });
230
+ const enqueue = jest
231
+ .spyOn(__1.AbyssMonitorCore.getShipper(), 'enqueue')
232
+ .mockImplementation(() => undefined);
233
+ const stringify = jest.spyOn(JSON, 'stringify');
234
+ const logger = new logger_model_1.Logger({ shouldDisableConsoleLogging: true });
235
+ await logger.info('mesurée');
236
+ expect(stringify).toHaveBeenCalledTimes(1);
237
+ const [queued, size] = enqueue.mock.calls[0];
238
+ stringify.mockRestore();
239
+ expect(size).toBe(Buffer.byteLength(JSON.stringify(queued)));
240
+ });
241
+ it('mesure sans Buffer, comme dans un navigateur', async () => {
242
+ __1.AbyssMonitorCore.setConfig({ applicationId: '', secretPublishToken: '' });
243
+ const enqueue = jest
244
+ .spyOn(__1.AbyssMonitorCore.getShipper(), 'enqueue')
245
+ .mockImplementation(() => undefined);
246
+ const errorSink = jest.spyOn(console, 'error').mockImplementation(() => undefined);
247
+ const logger = new logger_model_1.Logger({ shouldDisableConsoleLogging: true });
248
+ const globals = globalThis;
249
+ const originalBuffer = globals.Buffer;
250
+ globals.Buffer = undefined;
251
+ try {
252
+ await logger.info('é');
253
+ }
254
+ finally {
255
+ globals.Buffer = originalBuffer;
256
+ }
257
+ expect(errorSink).not.toHaveBeenCalled();
258
+ const [queued, size] = enqueue.mock.calls[0];
259
+ expect(size).toBe(Buffer.byteLength(JSON.stringify(queued)));
260
+ });
261
+ });
262
+ it('setConfig({ shipper }) reconfigure le singleton existant au lieu de le remplacer', () => {
263
+ __1.AbyssMonitorCore.setConfig({ applicationId: 'app-1', secretPublishToken: 'secret' });
264
+ const first = __1.AbyssMonitorCore.getShipper();
265
+ const stop = jest.spyOn(first, 'stop');
266
+ const reconfigure = jest.spyOn(first, 'reconfigure');
267
+ __1.AbyssMonitorCore.setConfig({ shipper: { flushIntervalMs: 1000 } });
268
+ expect(reconfigure).toHaveBeenCalledWith({ flushIntervalMs: 1000 });
269
+ expect(stop).not.toHaveBeenCalled();
270
+ expect(__1.AbyssMonitorCore.getShipper()).toBe(first);
271
+ stop.mockRestore();
272
+ reconfigure.mockRestore();
273
+ __1.AbyssMonitorCore.getShipper().stop();
274
+ });
275
+ });
276
+ //# sourceMappingURL=logger-enqueues.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-enqueues.test.js","sourceRoot":"","sources":["../../src/__tests__/logger-enqueues.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const logger_model_1 = require("../models/logger.model");
4
+ describe('Logger — les méthodes attendent la publication', () => {
5
+ const buildLogger = (order) => new logger_model_1.Logger({
6
+ shouldDisableConsoleLogging: true,
7
+ customPublishLog: async () => {
8
+ await new Promise((resolve) => setTimeout(resolve, 20));
9
+ order.push('published');
10
+ },
11
+ });
12
+ it.each(['log', 'info', 'warn', 'error', 'debug'])('%s() résout après la publication', async (method) => {
13
+ const order = [];
14
+ const logger = buildLogger(order);
15
+ await logger[method]('message');
16
+ order.push('awaited');
17
+ expect(order).toEqual(['published', 'awaited']);
18
+ });
19
+ it('error(Error instance) résout après la publication (Error branch)', async () => {
20
+ const order = [];
21
+ const logger = buildLogger(order);
22
+ await logger.error(new Error('boom'));
23
+ order.push('awaited');
24
+ expect(order).toEqual(['published', 'awaited']);
25
+ });
26
+ });
27
+ //# sourceMappingURL=logger-returns-promise.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-returns-promise.test.js","sourceRoot":"","sources":["../../src/__tests__/logger-returns-promise.test.ts"],"names":[],"mappings":";;AAAA,yDAAgD;AAEhD,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC9D,MAAM,WAAW,GAAG,CAAC,KAAe,EAAU,EAAE,CAC9C,IAAI,qBAAM,CAAC;QACT,2BAA2B,EAAE,IAAI;QACjC,gBAAgB,EAAE,KAAK,IAAI,EAAE;YAC3B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1B,CAAC;KACF,CAAC,CAAC;IAEL,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC,CACzD,kCAAkC,EAClC,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAElC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtB,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;IAEF,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAElC,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtB,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -143,7 +143,10 @@ describe('createRouteRateLimiter (per-route, scope- and param-aware)', () => {
143
143
  expect(captured(res).headers['RateLimit-Limit']).toBe(2);
144
144
  });
145
145
  it('returns next without enforcement when config.enabled is false', async () => {
146
- const mw = (0, rate_limit_middleware_1.createRouteRateLimiter)(undefined, { store, config: { ...baseConfig, enabled: false } });
146
+ const mw = (0, rate_limit_middleware_1.createRouteRateLimiter)(undefined, {
147
+ store,
148
+ config: { ...baseConfig, enabled: false },
149
+ });
147
150
  const { req, res, next } = buildReqRes({ locals: { currentUser: { id: 'u1' } } });
148
151
  await mw(req, res, next);
149
152
  expect(next).toHaveBeenCalled();
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limit.middleware.test.js","sourceRoot":"","sources":["../../src/__tests__/rate-limit.middleware.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rate-limit.middleware.test.js","sourceRoot":"","sources":["../../src/__tests__/rate-limit.middleware.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
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 logger_model_1 = require("../models/logger.model");
27
+ const __1 = require("..");
28
+ const applicationLogApi = __importStar(require("../api/application-log.api"));
29
+ describe('setConfig({ shipper }) — lignes émises avant la configuration', () => {
30
+ afterEach(() => {
31
+ __1.AbyssMonitorCore.getShipper().stop();
32
+ jest.restoreAllMocks();
33
+ });
34
+ it('livre les lignes émises avant setConfig, en plus de celle émise après', async () => {
35
+ const sendBulk = jest
36
+ .spyOn(applicationLogApi, 'createBulkApplicationLog')
37
+ .mockResolvedValue({ data: { created: 3, deduped: 0 } });
38
+ const logger = new logger_model_1.Logger({ shouldDisableConsoleLogging: true });
39
+ await logger.info('avant 1');
40
+ await logger.info('avant 2');
41
+ const shipperBeforeConfig = __1.AbyssMonitorCore.getShipper();
42
+ __1.AbyssMonitorCore.setConfig({
43
+ applicationId: 'app-setconfig',
44
+ secretPublishToken: 'secret',
45
+ shipper: { spoolDirectory: null, flushIntervalMs: 60_000 },
46
+ });
47
+ await logger.info('après');
48
+ await __1.AbyssMonitorCore.getShipper().flush();
49
+ expect(__1.AbyssMonitorCore.getShipper()).toBe(shipperBeforeConfig);
50
+ const bodies = sendBulk.mock.calls.map((call) => call[2]);
51
+ expect(bodies.flatMap((body) => body.logs.map((log) => log.message))).toEqual([
52
+ 'avant 1',
53
+ 'avant 2',
54
+ 'après',
55
+ ]);
56
+ expect(bodies.map((body) => body.droppedCount)).toEqual([null]);
57
+ });
58
+ });
59
+ //# sourceMappingURL=setconfig-keeps-queued-logs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setconfig-keeps-queued-logs.test.js","sourceRoot":"","sources":["../../src/__tests__/setconfig-keeps-queued-logs.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAAgD;AAEhD,0BAAsC;AACtC,8EAAgE;AAShE,QAAQ,CAAC,+DAA+D,EAAE,GAAG,EAAE;IAC7E,SAAS,CAAC,GAAG,EAAE;QACb,oBAAgB,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,QAAQ,GAAG,IAAI;aAClB,KAAK,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;aACpD,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAW,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,IAAI,qBAAM,CAAC,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,CAAC;QAGjE,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,MAAM,mBAAmB,GAAG,oBAAgB,CAAC,UAAU,EAAE,CAAC;QAE1D,oBAAgB,CAAC,SAAS,CAAC;YACzB,aAAa,EAAE,eAAe;YAC9B,kBAAkB,EAAE,QAAQ;YAC5B,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE;SAC3D,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,oBAAgB,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;QAE5C,MAAM,CAAC,oBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAa,CAAC,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5E,SAAS;YACT,SAAS;YACT,OAAO;SACR,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const log_shipper_model_1 = require("../models/log-shipper.model");
4
+ const __1 = require("..");
5
+ describe('setConfig -> rejeu du spool', () => {
6
+ afterEach(() => {
7
+ __1.AbyssMonitorCore.getShipper().stop();
8
+ jest.restoreAllMocks();
9
+ });
10
+ it('rejoue les batches restants une fois la configuration complète', async () => {
11
+ const replay = jest.spyOn(__1.AbyssMonitorCore.getShipper(), 'replaySpool').mockResolvedValue(2);
12
+ __1.AbyssMonitorCore.setConfig({ applicationId: 'app-1', secretPublishToken: 'secret' });
13
+ await new Promise((resolve) => setTimeout(resolve, 10));
14
+ expect(replay).toHaveBeenCalledTimes(1);
15
+ });
16
+ it('ne rejoue pas tant que la configuration est incomplète', async () => {
17
+ const replay = jest.spyOn(__1.AbyssMonitorCore.getShipper(), 'replaySpool').mockResolvedValue(0);
18
+ __1.AbyssMonitorCore.setConfig({ applicationId: 'app-1', secretPublishToken: '' });
19
+ await new Promise((resolve) => setTimeout(resolve, 10));
20
+ expect(replay).not.toHaveBeenCalled();
21
+ });
22
+ it('rejoue sur le shipper reconfiguré, une fois ses nouvelles options appliquées', async () => {
23
+ const shipper = __1.AbyssMonitorCore.getShipper();
24
+ const order = [];
25
+ jest.spyOn(shipper, 'reconfigure').mockImplementation(() => {
26
+ order.push('reconfigure');
27
+ });
28
+ const replay = jest.spyOn(log_shipper_model_1.LogShipper.prototype, 'replaySpool').mockImplementation(async () => {
29
+ order.push('replay');
30
+ return 1;
31
+ });
32
+ __1.AbyssMonitorCore.setConfig({
33
+ applicationId: 'app-1',
34
+ secretPublishToken: 'secret',
35
+ shipper: { flushIntervalMs: 60_000 },
36
+ });
37
+ await new Promise((resolve) => setTimeout(resolve, 10));
38
+ expect(__1.AbyssMonitorCore.getShipper()).toBe(shipper);
39
+ expect(replay).toHaveBeenCalledTimes(1);
40
+ expect(replay.mock.instances[0]).toBe(shipper);
41
+ expect(order).toEqual(['reconfigure', 'replay']);
42
+ });
43
+ it('un second setConfig ne rejoue pas une fois le spool trouvé vide par le premier', async () => {
44
+ const shipper = __1.AbyssMonitorCore.getShipper();
45
+ const pending = jest
46
+ .spyOn(shipper, 'mayHavePendingSpool')
47
+ .mockReturnValueOnce(true)
48
+ .mockReturnValue(false);
49
+ const replay = jest.spyOn(shipper, 'replaySpool').mockResolvedValue(0);
50
+ __1.AbyssMonitorCore.setConfig({ applicationId: 'app-1', secretPublishToken: 'secret' });
51
+ await new Promise((resolve) => setTimeout(resolve, 10));
52
+ expect(replay).toHaveBeenCalledTimes(1);
53
+ __1.AbyssMonitorCore.setConfig({ applicationId: 'app-1', secretPublishToken: 'secret' });
54
+ await new Promise((resolve) => setTimeout(resolve, 10));
55
+ expect(replay).toHaveBeenCalledTimes(1);
56
+ expect(pending).toHaveBeenCalledTimes(2);
57
+ });
58
+ });
59
+ //# sourceMappingURL=shipper-replay-on-config.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shipper-replay-on-config.test.js","sourceRoot":"","sources":["../../src/__tests__/shipper-replay-on-config.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export default function globalSetup(): void;
@@ -0,0 +1,35 @@
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 fs = __importStar(require("fs"));
27
+ const os = __importStar(require("os"));
28
+ const path = __importStar(require("path"));
29
+ const log_shipper_model_1 = require("../../models/log-shipper.model");
30
+ function globalSetup() {
31
+ const sandbox = fs.mkdtempSync(path.join(os.tmpdir(), 'abyss-monitor-sdk-jest-'));
32
+ process.env[log_shipper_model_1.SPOOL_DIRECTORY_ENV] = sandbox;
33
+ }
34
+ exports.default = globalSetup;
35
+ //# sourceMappingURL=setup-global.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-global.js","sourceRoot":"","sources":["../../../src/__tests__/utils/setup-global.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,sEAAqE;AAkBrE,SAAwB,WAAW;IACjC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,uCAAmB,CAAC,GAAG,OAAO,CAAC;AAC7C,CAAC;AAHD,8BAGC"}
@@ -0,0 +1 @@
1
+ export default function globalTeardown(): void;
@@ -0,0 +1,36 @@
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 fs = __importStar(require("fs"));
27
+ const log_shipper_model_1 = require("../../models/log-shipper.model");
28
+ function globalTeardown() {
29
+ const sandbox = process.env[log_shipper_model_1.SPOOL_DIRECTORY_ENV];
30
+ if (sandbox) {
31
+ fs.rmSync(sandbox, { recursive: true, force: true });
32
+ }
33
+ delete process.env[log_shipper_model_1.SPOOL_DIRECTORY_ENV];
34
+ }
35
+ exports.default = globalTeardown;
36
+ //# sourceMappingURL=teardown-global.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teardown-global.js","sourceRoot":"","sources":["../../../src/__tests__/utils/teardown-global.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,sEAAqE;AAMrE,SAAwB,cAAc;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,uCAAmB,CAAC,CAAC;IACjD,IAAI,OAAO,EAAE,CAAC;QACZ,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,uCAAmB,CAAC,CAAC;AAC1C,CAAC;AAND,iCAMC"}
@@ -1,4 +1,8 @@
1
- import { ICreateApplicationLogBody, ICreateApplicationLogParams, ICreateApplicationLogQuery, ICreateApplicationLogResponse, IGetApplicationLogParams, IGetApplicationLogResponse, IPaginateApplicationLogParams, IPaginateApplicationLogQuery, IPaginateApplicationLogResponse } from '..';
1
+ import { ICreateApplicationLogBody, ICreateApplicationLogParams, ICreateApplicationLogQuery, ICreateApplicationLogResponse, ICreateBulkApplicationLogBody, ICreateBulkApplicationLogParams, ICreateBulkApplicationLogQuery, ICreateBulkApplicationLogResponse, IGetApplicationLogParams, IGetApplicationLogResponse, IPaginateApplicationLogParams, IPaginateApplicationLogQuery, IPaginateApplicationLogResponse } from '..';
2
2
  export declare const getApplicationLog: (params: IGetApplicationLogParams) => Promise<IGetApplicationLogResponse>;
3
3
  export declare const paginateApplicationLog: (params: IPaginateApplicationLogParams, query: IPaginateApplicationLogQuery) => Promise<IPaginateApplicationLogResponse>;
4
4
  export declare const createApplicationLog: (params: ICreateApplicationLogParams, query: ICreateApplicationLogQuery, body: ICreateApplicationLogBody) => Promise<ICreateApplicationLogResponse>;
5
+ export declare const BULK_REQUEST_TIMEOUT_MS = 10000;
6
+ export declare const createBulkApplicationLog: (params: ICreateBulkApplicationLogParams, query: ICreateBulkApplicationLogQuery, body: ICreateBulkApplicationLogBody, options?: {
7
+ timeoutMs?: number;
8
+ }) => Promise<ICreateBulkApplicationLogResponse>;