syntropylog 0.9.10 → 0.9.12

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 (55) hide show
  1. package/CHANGELOG.md +34 -5
  2. package/README.md +1 -1
  3. package/dist/config/loadLoggerConfig.js +9 -2
  4. package/dist/config/loadLoggerConfig.js.map +1 -1
  5. package/dist/core/LifecycleManager.js +50 -58
  6. package/dist/core/LifecycleManager.js.map +1 -1
  7. package/dist/index.cjs +362 -313
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.d.ts +8 -2
  10. package/dist/index.mjs +362 -313
  11. package/dist/index.mjs.map +1 -1
  12. package/dist/logger/Logger.js +1 -1
  13. package/dist/logger/Logger.js.map +1 -1
  14. package/dist/logger/LoggerFactory.js +102 -81
  15. package/dist/logger/LoggerFactory.js.map +1 -1
  16. package/dist/logger/transports/ColorfulConsoleTransport.js +83 -79
  17. package/dist/logger/transports/ColorfulConsoleTransport.js.map +1 -1
  18. package/dist/logger/transports/PrettyConsoleTransport.js +31 -26
  19. package/dist/logger/transports/PrettyConsoleTransport.js.map +1 -1
  20. package/dist/masking/MaskingEngine.js +27 -6
  21. package/dist/masking/MaskingEngine.js.map +1 -1
  22. package/dist/redis/RedisConnectionManager.js +56 -57
  23. package/dist/redis/RedisConnectionManager.js.map +1 -1
  24. package/dist/redis/index.js +6 -0
  25. package/dist/redis/index.js.map +1 -0
  26. package/dist/sanitization/SanitizationEngine.js +2 -2
  27. package/dist/sanitization/SanitizationEngine.js.map +1 -1
  28. package/dist/serialization/SerializationPipeline.js +10 -3
  29. package/dist/serialization/SerializationPipeline.js.map +1 -1
  30. package/dist/testing/BeaconRedisMock.js +116 -82
  31. package/dist/testing/BeaconRedisMock.js.map +1 -1
  32. package/dist/testing/index.cjs +21494 -67
  33. package/dist/testing/index.cjs.map +1 -1
  34. package/dist/testing/index.d.ts +3 -4
  35. package/dist/testing/index.mjs +21494 -67
  36. package/dist/testing/index.mjs.map +1 -1
  37. package/dist/testing/magic-string.es-Bf6eKFmE.js +2005 -0
  38. package/dist/testing/magic-string.es-Bf6eKFmE.js.map +1 -0
  39. package/dist/testing/magic-string.es-Dl5DFuGU.js +2001 -0
  40. package/dist/testing/magic-string.es-Dl5DFuGU.js.map +1 -0
  41. package/dist/tsconfig.tsbuildinfo +1 -1
  42. package/dist/types/config/loadLoggerConfig.d.ts +5 -0
  43. package/dist/types/core/LifecycleManager.d.ts +9 -1
  44. package/dist/types/logger/LoggerFactory.d.ts +8 -5
  45. package/dist/types/logger/transports/ColorfulConsoleTransport.d.ts +17 -0
  46. package/dist/types/logger/transports/PrettyConsoleTransport.d.ts +11 -0
  47. package/dist/types/masking/MaskingEngine.d.ts +2 -1
  48. package/dist/types/redis/RedisConnectionManager.d.ts +2 -6
  49. package/dist/types/redis/index.d.ts +5 -0
  50. package/dist/types/sanitization/SanitizationEngine.d.ts +1 -1
  51. package/dist/types/testing/BeaconRedisMock.d.ts +3 -3
  52. package/dist/types/utils/createFailingClient.d.ts +1 -0
  53. package/dist/utils/createFailingClient.js +16 -13
  54. package/dist/utils/createFailingClient.js.map +1 -1
  55. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # Changelog
2
2
 
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ _Nothing at the moment._
11
+
12
+ ## [0.9.12] - 2026-03-07
13
+
14
+ ### Security
15
+
16
+ - **loadLoggerConfig**: Use js-yaml's `JSON_SCHEMA` when parsing YAML files to avoid prototype pollution and dangerous types. Use only with configuration files under deployment team control.
17
+
18
+ ### Fixed
19
+
20
+ - **LifecycleManager**: `MaskingEngine.shutdown()` is now invoked during framework shutdown so the regex-test worker is cleaned up and process leaks are avoided. Defensive optional chaining used when the manager is not in READY state.
21
+ - **RedisConnectionManager**: Call `removeAllListeners()` on the Redis client before `quit()` in `disconnect()` for clean teardown and to avoid retaining listener references.
22
+
23
+ ### Documentation
24
+
25
+ - **Audit reports**: Added `INFORME_TECH_LEAD_AUDITORIA_LIBRERIA.md` with full audit for enterprise adoption (security, memory, performance, dependencies). Complements existing `INFORME_AUDITORIA_SEGURIDAD_RENDIMIENTO.md`.
26
+
27
+ ## 0.9.11
28
+
29
+ ### Patch Changes
30
+
31
+ - Fix memory leak in LoggerFactory, improve process management in LifecycleManager, and fix zombie timers in SerializationPipeline. Refactor core components to use pure functions.
32
+ - Security: Patched a potential ReDoS vulnerability in `MaskingEngine` by enforcing a timeout on regex execution using `regex-test`. Masking operations are now asynchronous to support this safety mechanism.
33
+ - MaskingEngine: Circular reference protection during recursive masking (WeakSet); cleanup of `regex-test` worker on `shutdown()` to avoid process leaks.
34
+ - Build: Rollup type declarations bundle now treats Node.js builtins (`child_process`, etc.) as external, eliminating "Unresolved dependencies" warnings.
35
+ - Types: Extended `declarations.d.ts` for `regex-test` with `test()` and `cleanWorker()` for correct typing and lint compliance.
36
+
3
37
  ## 0.9.10
4
38
 
5
39
  ### Patch Changes
@@ -32,11 +66,6 @@
32
66
  - Security: Removed example IPs and URLs (e.g. 192.168.1.1, example.com) from source code, tests, and documentation to resolve Socket.dev supply chain security warnings.
33
67
  Docs: Updated test coverage badge to 92.48%.
34
68
 
35
- All notable changes to this project will be documented in this file.
36
-
37
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
38
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
39
-
40
69
  ## [0.9.5] - 2026-03-07
41
70
 
42
71
  ### 🔧 Maintenance
package/README.md CHANGED
@@ -17,7 +17,7 @@
17
17
  <a href="https://github.com/Syntropysoft/SyntropyLog/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/syntropylog.svg" alt="License"></a>
18
18
  <a href="https://github.com/Syntropysoft/SyntropyLog/actions/workflows/ci.yaml"><img src="https://github.com/Syntropysoft/SyntropyLog/actions/workflows/ci.yaml/badge.svg" alt="CI Status"></a>
19
19
  <a href="#"><img src="https://img.shields.io/badge/coverage-92.47%25-brightgreen" alt="Test Coverage"></a>
20
- <a href="#"><img src="https://img.shields.io/badge/status-v0.9.10-brightgreen.svg" alt="Version 0.9.10"></a>
20
+ <a href="#"><img src="https://img.shields.io/badge/status-v0.9.12-brightgreen.svg" alt="Version 0.9.12"></a>
21
21
  <a href="https://socket.dev/npm/package/syntropylog"><img src="https://socket.dev/api/badge/npm/package/syntropylog" alt="Socket Badge"></a>
22
22
  </p>
23
23
 
@@ -10,6 +10,11 @@ import path from 'path';
10
10
  *
11
11
  * It does NOT read environment variables directly; all state must be passed via `opts`.
12
12
  * If no file is found, it returns an empty object, making the config file optional.
13
+ *
14
+ * **Security:** A restricted schema (JSON_SCHEMA) is used to avoid prototype pollution
15
+ * and dangerous types. Only use with configuration files under deployment team
16
+ * control (controlled paths and permissions).
17
+ *
13
18
  * @param opts - Options to customize the loading behavior.
14
19
  * @returns A partial `LoggerOptions` object, or an empty object if no file is found.
15
20
  * @throws An error if a config file is found but fails to be read or parsed.
@@ -40,9 +45,11 @@ export function loadLoggerConfig(opts) {
40
45
  return {};
41
46
  }
42
47
  try {
43
- // Load and parse the YAML file.
48
+ // Load and parse the YAML file with restricted schema (avoids prototype pollution / unsafe types).
44
49
  const fileContents = fs.readFileSync(configPath, 'utf8');
45
- const yamlConfig = yaml.load(fileContents);
50
+ const yamlConfig = yaml.load(fileContents, {
51
+ schema: yaml.JSON_SCHEMA,
52
+ });
46
53
  // If the YAML has the config under a 'logger' key, extract it.
47
54
  // Otherwise, assume the root object is the configuration.
48
55
  return yamlConfig?.logger || yamlConfig || {};
@@ -1 +1 @@
1
- {"version":3,"file":"loadLoggerConfig.js","sourceRoot":"","sources":["../../src/config/loadLoggerConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,IAAI,MAAM,MAAM,CAAC;AA8BxB;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAgC;IAEhC,MAAM,EACJ,UAAU,EAAE,kBAAkB,EAC9B,WAAW,EACX,SAAS,GAAG,UAAU,EACtB,WAAW,GAAG,QAAQ,GACvB,GAAG,IAAI,IAAI,EAAE,CAAC;IAEf,yCAAyC;IACzC,IAAI,UAA8B,CAAC;IACnC,IAAI,kBAAkB,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC5D,UAAU,GAAG,kBAAkB,CAAC;IAClC,CAAC;IAED,oEAAoE;IACpE,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAC/B,SAAS,EACT,GAAG,WAAW,IAAI,WAAW,OAAO,CACrC,CAAC;QACF,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,UAAU,GAAG,eAAe,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,WAAW,OAAO,CAAC,CAAC;QAChE,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,UAAU,GAAG,WAAW,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,gCAAgC;QAChC,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAGjC,CAAC;QAET,+DAA+D;QAC/D,0DAA0D;QAC1D,OAAO,UAAU,EAAE,MAAM,IAAI,UAAU,IAAI,EAAE,CAAC;IAChD,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,sDAAsD,UAAU,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC9H,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"loadLoggerConfig.js","sourceRoot":"","sources":["../../src/config/loadLoggerConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,IAAI,MAAM,MAAM,CAAC;AA8BxB;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAgC;IAEhC,MAAM,EACJ,UAAU,EAAE,kBAAkB,EAC9B,WAAW,EACX,SAAS,GAAG,UAAU,EACtB,WAAW,GAAG,QAAQ,GACvB,GAAG,IAAI,IAAI,EAAE,CAAC;IAEf,yCAAyC;IACzC,IAAI,UAA8B,CAAC;IACnC,IAAI,kBAAkB,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC5D,UAAU,GAAG,kBAAkB,CAAC;IAClC,CAAC;IAED,oEAAoE;IACpE,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAC/B,SAAS,EACT,GAAG,WAAW,IAAI,WAAW,OAAO,CACrC,CAAC;QACF,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,UAAU,GAAG,eAAe,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,WAAW,OAAO,CAAC,CAAC;QAChE,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,UAAU,GAAG,WAAW,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,mGAAmG;QACnG,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACzC,MAAM,EAAE,IAAI,CAAC,WAAW;SACzB,CAAmC,CAAC;QAErC,+DAA+D;QAC/D,0DAA0D;QAC1D,OAAO,UAAU,EAAE,MAAM,IAAI,UAAU,IAAI,EAAE,CAAC;IAChD,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,sDAAsD,UAAU,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC9H,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -7,6 +7,32 @@ import { sanitizeConfig } from '../utils/sanitizeConfig';
7
7
  import { SerializationManager } from '../serialization/SerializationManager';
8
8
  import { MaskingEngine } from '../masking/MaskingEngine';
9
9
  import { errorToJsonValue } from '../types';
10
+ // Pure helper function for process termination
11
+ const terminateProcess = async (childProcess, logger) => {
12
+ if (!childProcess.connected && childProcess.exitCode !== null) {
13
+ return;
14
+ }
15
+ const pid = childProcess.pid;
16
+ logger?.debug(`Sending SIGTERM to process ${pid}...`);
17
+ childProcess.kill('SIGTERM');
18
+ // Wait up to 5 seconds for graceful exit
19
+ const gracefulExit = new Promise((resolve) => {
20
+ const onExit = () => {
21
+ resolve();
22
+ childProcess.removeListener('exit', onExit);
23
+ };
24
+ childProcess.on('exit', onExit);
25
+ });
26
+ const timeout = new Promise((resolve) => setTimeout(resolve, 5000));
27
+ await Promise.race([gracefulExit, timeout]);
28
+ if (childProcess.exitCode === null) {
29
+ logger?.warn(`Process ${pid} did not exit after SIGTERM, sending SIGKILL...`);
30
+ childProcess.kill('SIGKILL');
31
+ }
32
+ else {
33
+ logger?.debug(`Process ${pid} exited gracefully`);
34
+ }
35
+ };
10
36
  export class LifecycleManager extends EventEmitter {
11
37
  state = 'NOT_INITIALIZED';
12
38
  config;
@@ -17,6 +43,7 @@ export class LifecycleManager extends EventEmitter {
17
43
  maskingEngine;
18
44
  logger = null;
19
45
  syntropyFacade;
46
+ trackedProcesses = new Set();
20
47
  constructor(syntropyFacade) {
21
48
  super();
22
49
  this.syntropyFacade = syntropyFacade;
@@ -92,6 +119,8 @@ export class LifecycleManager extends EventEmitter {
92
119
  this.logger?.info('🔄 State changed to SHUTTING_DOWN');
93
120
  try {
94
121
  this.logger?.info('Shutting down SyntropyLog framework...');
122
+ // Shutdown MaskingEngine first so regex-test worker is cleaned (avoids process leak)
123
+ this.maskingEngine?.shutdown?.();
95
124
  const shutdownPromises = [
96
125
  this.redisManager?.shutdown(),
97
126
  this.loggerFactory?.shutdown?.(),
@@ -115,70 +144,33 @@ export class LifecycleManager extends EventEmitter {
115
144
  });
116
145
  }
117
146
  }
147
+ /**
148
+ * Registers a child process to be managed by the LifecycleManager.
149
+ * Managed processes will be gracefully terminated during shutdown.
150
+ * @param childProcess The child process to track
151
+ */
152
+ registerChildProcess(childProcess) {
153
+ this.trackedProcesses.add(childProcess);
154
+ // Auto-remove if it exits on its own
155
+ childProcess.on('exit', () => {
156
+ this.trackedProcesses.delete(childProcess);
157
+ });
158
+ }
118
159
  /**
119
160
  * Terminates external processes that might keep the Node.js process active.
120
- * This includes regex-test workers and other child processes.
161
+ * Uses a graceful shutdown strategy (SIGTERM -> wait -> SIGKILL).
121
162
  */
122
163
  async terminateExternalProcesses() {
123
164
  try {
124
- this.logger?.info('🔍 Starting external process termination...');
125
- // Get all active handles
126
- const activeHandles = process._getActiveHandles?.() ?? [];
127
- this.logger?.debug(`Total active handles: ${activeHandles.length}`);
128
- // Filter child processes that need to be terminated
129
- const childProcesses = activeHandles.filter((handle) => {
130
- const h = handle;
131
- const isChildProcess = h.constructor?.name === 'ChildProcess';
132
- const isConnected = h.connected;
133
- const hasRegexTest = h.spawnargs?.some((arg) => arg.includes('regex-test'));
134
- this.logger?.debug(`Handle: ${h.constructor?.name}, connected: ${isConnected}, hasRegexTest: ${hasRegexTest}`);
135
- return Boolean(isChildProcess && isConnected && hasRegexTest);
136
- });
137
- this.logger?.info(`Found ${childProcesses.length} regex-test processes to terminate`);
138
- if (childProcesses.length > 0) {
139
- this.logger?.info(`Terminating ${childProcesses.length} external processes...`);
140
- // Terminate each child process directly with SIGKILL for maximum effectiveness
141
- for (const childProcess of childProcesses) {
142
- try {
143
- this.logger?.debug(`Terminating process ${childProcess.pid} with SIGKILL...`);
144
- childProcess.kill('SIGKILL');
145
- this.logger?.debug(`Process ${childProcess.pid} terminated with SIGKILL`);
146
- }
147
- catch (error) {
148
- this.logger?.warn(`Error terminating process ${childProcess.pid}:`, { error: errorToJsonValue(error) });
149
- }
150
- }
151
- // Wait a bit for processes to terminate
152
- this.logger?.debug('Waiting 200ms for processes to terminate...');
153
- await new Promise((resolve) => setTimeout(resolve, 200));
154
- // Check if processes are still active
155
- const remainingHandles = process._getActiveHandles?.() ?? [];
156
- const remainingChildProcesses = remainingHandles.filter((handle) => {
157
- const h = handle;
158
- return (h.constructor?.name === 'ChildProcess' &&
159
- h.connected &&
160
- h.spawnargs?.some((arg) => arg.includes('regex-test')));
161
- });
162
- if (remainingChildProcesses.length > 0) {
163
- this.logger?.warn(`${remainingChildProcesses.length} regex-test processes still active after SIGKILL`);
164
- // Try to disconnect the processes
165
- for (const childProcess of remainingChildProcesses) {
166
- try {
167
- childProcess.disconnect();
168
- this.logger?.debug(`Process ${childProcess.pid} disconnected`);
169
- }
170
- catch (error) {
171
- this.logger?.warn(`Error disconnecting process ${childProcess.pid}:`, { error: errorToJsonValue(error) });
172
- }
173
- }
174
- }
175
- else {
176
- this.logger?.info('✅ All regex-test processes terminated successfully');
177
- }
178
- }
179
- else {
180
- this.logger?.info('No regex-test processes found to terminate');
165
+ if (this.trackedProcesses.size === 0) {
166
+ this.logger?.info('No tracked external processes to terminate');
167
+ return;
181
168
  }
169
+ this.logger?.info(`Terminating ${this.trackedProcesses.size} external processes...`);
170
+ const terminationPromises = Array.from(this.trackedProcesses).map((childProcess) => terminateProcess(childProcess, this.logger));
171
+ await Promise.allSettled(terminationPromises);
172
+ this.trackedProcesses.clear();
173
+ this.logger?.info('✅ All external processes terminated');
182
174
  }
183
175
  catch (error) {
184
176
  this.logger?.warn('Error terminating external processes:', {
@@ -1 +1 @@
1
- {"version":3,"file":"LifecycleManager.js","sourceRoot":"","sources":["../../src/core/LifecycleManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LifecycleManager.js","sourceRoot":"","sources":["../../src/core/LifecycleManager.ts"],"names":[],"mappings":"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"}