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 +8 -0
- package/README.md +2 -2
- package/dist/SyntropyLog.js +7 -0
- package/dist/SyntropyLog.js.map +1 -1
- package/dist/index.cjs +17 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.mjs +17 -9
- package/dist/index.mjs.map +1 -1
- package/dist/redis/RedisCommandExecutor.js +10 -9
- package/dist/redis/RedisCommandExecutor.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/SyntropyLog.d.ts +5 -0
- package/docs/serialization.md +2 -2
- package/package.json +1 -1
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.
|
|
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.
|
|
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`.
|
package/dist/SyntropyLog.js
CHANGED
|
@@ -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
|
}
|
package/dist/SyntropyLog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;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"}
|
|
1
|
+
{"version":3,"file":"SyntropyLog.js","sourceRoot":"","sources":["../src/SyntropyLog.ts"],"names":[],"mappings":"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"}
|
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
|
-
//
|
|
4985
|
-
//
|
|
4986
|
-
//
|
|
4987
|
-
|
|
4988
|
-
|
|
4989
|
-
|
|
4990
|
-
keys,
|
|
4991
|
-
|
|
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
|
/**
|