syntropylog 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.9.1] - Unreleased
9
+
10
+ ### 🛡️ Security
11
+ - Eliminated obfuscated code patterns in Redis module to comply with security scanner requirements (Socket.dev).
12
+
13
+ ### 🔧 Maintenance
14
+ - Refactored `executeScript` in `RedisCommandExecutor` to use native `sendCommand`.
15
+
8
16
  ## [0.9.0] - 2026-03-01
9
17
 
10
18
  ### ⚠️ BREAKING CHANGES
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-84.64%25-brightgreen" alt="Test Coverage"></a>
20
- <a href="#"><img src="https://img.shields.io/badge/status-v0.9.0-brightgreen.svg" alt="Version 0.9.0"></a>
20
+ <a href="#"><img src="https://img.shields.io/badge/status-v0.9.1-brightgreen.svg" alt="Version 0.9.1"></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
 
@@ -52,7 +52,7 @@ SyntropyLog was designed with the constraints of **banking, healthcare, and fina
52
52
 
53
53
  Traditional loggers (and even modern ones) share a common weakness: **serialization is a blocking operation**. If you log a massive, deeply nested, or circular object, the Node.js Event Loop stops. Your API stops responding. Your service might even crash with a `TypeError`.
54
54
 
55
- SyntropyLog v0.9.0 introduces the **Log Resilience Engine**, making your application immune to "Death by Log":
55
+ SyntropyLog v0.9.1 introduces the **Log Resilience Engine**, making your application immune to "Death by Log":
56
56
 
57
57
  1. **Event Loop Protection**: Every serialization step is wrapped in a mandatory timeout (default: **50ms**). If serialization takes too long, it is aborted via `Promise.race`, and a safe subset of the data is logged instead. Your app keeps running.
58
58
  2. **Circular Reference Immunity**: Built-in hygiene automatically detects and neutralizes circular references. No more `TypeError: Converting circular structure to JSON`.
@@ -31,6 +31,13 @@ export class SyntropyLog extends EventEmitter {
31
31
  }
32
32
  return SyntropyLog.instance;
33
33
  }
34
+ /**
35
+ * Internal test helper to reset the singleton instance.
36
+ * DO NOT USE in production code.
37
+ */
38
+ static resetInstance() {
39
+ SyntropyLog.instance = undefined;
40
+ }
34
41
  getState() {
35
42
  return this.lifecycleManager.getState();
36
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SyntropyLog.js","sourceRoot":"","sources":["../src/SyntropyLog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SyntropyLog.js","sourceRoot":"","sources":["../src/SyntropyLog.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAMtC,OAAO,EAAE,gBAAgB,EAAoB,MAAM,yBAAyB,CAAC;AAO7E;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,YAAY;IACnC,MAAM,CAAC,QAAQ,CAAc;IACpB,gBAAgB,CAAmB;IAEpD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAEnD,+DAA+D;QAC/D,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpE,CAAC;IAEM,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC1B,WAAW,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,WAAW,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,aAAa;QACzB,WAAW,CAAC,QAAQ,GAAG,SAAgB,CAAC;IAC1C,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAyB;QACzC,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAEM,SAAS,CAAC,IAAI,GAAG,SAAS,EAAE,QAA8B;QAC/D,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvE,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,IAAY;QAChC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAEM,OAAO,CAAC,IAAY;QACzB,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IAEM,SAAS,CAAC,IAAY;QAC3B,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IAEM,iBAAiB;QACtB,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC;IAC9C,CAAC;IAEM,SAAS;QACd,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;IACtC,CAAC;IAEM,kBAAkB,CAAC,KAAe;QACvC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC;IAED;;;;;OAKG;IACI,wBAAwB,CAAC,MAAqB;QACnD,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAEM,SAAS;QACd,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;IAC7C,CAAC;IAEM,aAAa;QAClB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;IACpD,CAAC;IAEM,gBAAgB;QACrB,wEAAwE;QACxE,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;QAC1C,IAAY,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpE,CAAC;CACF;AAED,2DAA2D;AAC3D,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC"}
package/dist/index.cjs CHANGED
@@ -3088,6 +3088,13 @@ class SyntropyLog extends events.EventEmitter {
3088
3088
  }
3089
3089
  return SyntropyLog.instance;
3090
3090
  }
3091
+ /**
3092
+ * Internal test helper to reset the singleton instance.
3093
+ * DO NOT USE in production code.
3094
+ */
3095
+ static resetInstance() {
3096
+ SyntropyLog.instance = undefined;
3097
+ }
3091
3098
  getState() {
3092
3099
  return this.lifecycleManager.getState();
3093
3100
  }
@@ -4981,15 +4988,16 @@ class RedisCommandExecutor {
4981
4988
  * @returns {Promise<any>} The result of the script execution.
4982
4989
  */
4983
4990
  async executeScript(script, keys, args) {
4984
- // This calls the Redis EVAL command (Lua scripting on the server side).
4985
- // The method name is constructed dynamically to avoid false-positive detection
4986
- // by static analysis tools that flag the literal string "eval" as dangerous JS eval().
4987
- // No JavaScript dynamic code execution occurs here.
4988
- const redisEvalCommand = ['ev', 'al'].join('');
4989
- const result = await this.client[redisEvalCommand](script, {
4990
- keys,
4991
- arguments: args,
4992
- });
4991
+ // We use sendCommand to call the Redis EVAL command.
4992
+ // This avoids any direct or obfuscated reference to the "eval" method name in JavaScript,
4993
+ // which prevents false-positive security warnings from static analysis tools.
4994
+ const result = await this.client.sendCommand([
4995
+ 'EVAL',
4996
+ script,
4997
+ keys.length.toString(),
4998
+ ...keys,
4999
+ ...args,
5000
+ ]);
4993
5001
  return result;
4994
5002
  }
4995
5003
  /**