@ledgerhq/logs 6.12.0 → 6.13.0-next.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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +6 -0
- package/LICENSE.txt +21 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +35 -3
- package/lib/index.js.map +1 -1
- package/lib/index.test.d.ts +2 -0
- package/lib/index.test.d.ts.map +1 -0
- package/lib/index.test.js +31 -0
- package/lib/index.test.js.map +1 -0
- package/lib-es/index.d.ts +1 -0
- package/lib-es/index.d.ts.map +1 -1
- package/lib-es/index.js +33 -2
- package/lib-es/index.js.map +1 -1
- package/lib-es/index.test.d.ts +2 -0
- package/lib-es/index.test.d.ts.map +1 -0
- package/lib-es/index.test.js +29 -0
- package/lib-es/index.test.js.map +1 -0
- package/package.json +7 -6
- package/src/index.test.ts +34 -0
- package/src/index.ts +31 -0
- package/tsconfig.json +2 -1
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @ledgerhq/logs
|
|
2
2
|
|
|
3
|
+
## 6.13.0-next.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#10419](https://github.com/LedgerHQ/ledger-live/pull/10419) [`f29e4ba`](https://github.com/LedgerHQ/ledger-live/commit/f29e4bae00a4bf470a0c1ca143e505b731543f95) Thanks [@jdabbech-ledger](https://github.com/jdabbech-ledger)! - Use common json replacer for llm and lld errors
|
|
8
|
+
|
|
3
9
|
## 6.12.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
package/LICENSE.txt
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2017-present Ledger https://www.ledger.com/
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
package/lib/index.d.ts
CHANGED
|
@@ -98,6 +98,7 @@ export declare class LocalTracer {
|
|
|
98
98
|
* @return a function that can be called to unsubscribe the listener
|
|
99
99
|
*/
|
|
100
100
|
export declare const listen: (cb: Subscriber) => Unsubscribe;
|
|
101
|
+
export declare const getJSONStringifyReplacer: () => (key: string, value: unknown) => unknown;
|
|
101
102
|
declare global {
|
|
102
103
|
interface Window {
|
|
103
104
|
__ledgerLogsListen: any;
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACnD,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC;AAC1B,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAIX,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AACrC,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;AAK7C;;;;;GAKG;AACH,eAAO,MAAM,GAAG,SAAU,OAAO,YAAY,MAAM,SAAS,OAAO,SASlE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK;UAMV,OAAO;;WAEN,OAAO;;UAcf,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,WAAW;IAEpB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,OAAO,CAAC;gBADR,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,0BAAc;IAGhC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY;IAS1C,UAAU,IAAI,YAAY,GAAG,SAAS;IAItC,UAAU,CAAC,OAAO,CAAC,EAAE,YAAY;IAIjC,aAAa,CAAC,YAAY,EAAE,YAAY;IAIxC,OAAO,IAAI,OAAO;IAIlB,OAAO,CAAC,IAAI,EAAE,OAAO;IAIrB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW;IAIpC;;;;;;;OAOG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,WAAW;IAIhD;;;;;;OAMG;IACH,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,WAAW;CAG5D;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,OAAQ,UAAU,KAAG,WAWvC,CAAC;AAcF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,kBAAkB,EAAE,GAAG,CAAC;KACzB;CACF"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACnD,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC;AAC1B,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAIX,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AACrC,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;AAK7C;;;;;GAKG;AACH,eAAO,MAAM,GAAG,SAAU,OAAO,YAAY,MAAM,SAAS,OAAO,SASlE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK;UAMV,OAAO;;WAEN,OAAO;;UAcf,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,WAAW;IAEpB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,OAAO,CAAC;gBADR,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,0BAAc;IAGhC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY;IAS1C,UAAU,IAAI,YAAY,GAAG,SAAS;IAItC,UAAU,CAAC,OAAO,CAAC,EAAE,YAAY;IAIjC,aAAa,CAAC,YAAY,EAAE,YAAY;IAIxC,OAAO,IAAI,OAAO;IAIlB,OAAO,CAAC,IAAI,EAAE,OAAO;IAIrB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW;IAIpC;;;;;;;OAOG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,WAAW;IAIhD;;;;;;OAMG;IACH,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,WAAW;CAG5D;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,OAAQ,UAAU,KAAG,WAWvC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OA6B7E,CAAC;AAcF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,kBAAkB,EAAE,GAAG,CAAC;KACzB;CACF"}
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.listen = exports.LocalTracer = exports.trace = exports.log = void 0;
|
|
3
|
+
exports.getJSONStringifyReplacer = exports.listen = exports.LocalTracer = exports.trace = exports.log = void 0;
|
|
4
4
|
let id = 0;
|
|
5
5
|
const subscribers = [];
|
|
6
6
|
/**
|
|
@@ -55,6 +55,8 @@ exports.trace = trace;
|
|
|
55
55
|
* @param context Anything representing the context where the log occurred
|
|
56
56
|
*/
|
|
57
57
|
class LocalTracer {
|
|
58
|
+
type;
|
|
59
|
+
context;
|
|
58
60
|
constructor(type, context) {
|
|
59
61
|
this.type = type;
|
|
60
62
|
this.context = context;
|
|
@@ -74,7 +76,7 @@ class LocalTracer {
|
|
|
74
76
|
this.context = context;
|
|
75
77
|
}
|
|
76
78
|
updateContext(contextToAdd) {
|
|
77
|
-
this.context =
|
|
79
|
+
this.context = { ...this.context, ...contextToAdd };
|
|
78
80
|
}
|
|
79
81
|
getType() {
|
|
80
82
|
return this.type;
|
|
@@ -110,7 +112,7 @@ class LocalTracer {
|
|
|
110
112
|
* following a simple builder pattern.
|
|
111
113
|
*/
|
|
112
114
|
withUpdatedContext(contextToAdd) {
|
|
113
|
-
return new LocalTracer(this.type,
|
|
115
|
+
return new LocalTracer(this.type, { ...this.context, ...contextToAdd });
|
|
114
116
|
}
|
|
115
117
|
}
|
|
116
118
|
exports.LocalTracer = LocalTracer;
|
|
@@ -132,6 +134,36 @@ const listen = (cb) => {
|
|
|
132
134
|
};
|
|
133
135
|
};
|
|
134
136
|
exports.listen = listen;
|
|
137
|
+
const getJSONStringifyReplacer = () => {
|
|
138
|
+
const ancestors = [];
|
|
139
|
+
return function (_, value) {
|
|
140
|
+
// format Uint8Array values to more readable format
|
|
141
|
+
if (value instanceof Uint8Array) {
|
|
142
|
+
const bytesHex = Array.from(value).map(x => x.toString(16).padStart(2, "0"));
|
|
143
|
+
return {
|
|
144
|
+
hex: "0x" + bytesHex.join(""),
|
|
145
|
+
readableHex: bytesHex.join(" "),
|
|
146
|
+
value: value.toString(),
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
// format circular references to "[Circular]"
|
|
150
|
+
// Taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value#circular_references
|
|
151
|
+
if (typeof value !== "object" || value === null) {
|
|
152
|
+
return value;
|
|
153
|
+
}
|
|
154
|
+
// `this` is the object that value is contained in,
|
|
155
|
+
// i.e., its direct parent.
|
|
156
|
+
while (ancestors.length > 0 && ancestors.at(-1) !== this) {
|
|
157
|
+
ancestors.pop();
|
|
158
|
+
}
|
|
159
|
+
if (ancestors.includes(value)) {
|
|
160
|
+
return "[Circular]";
|
|
161
|
+
}
|
|
162
|
+
ancestors.push(value);
|
|
163
|
+
return value;
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
exports.getJSONStringifyReplacer = getJSONStringifyReplacer;
|
|
135
167
|
function dispatch(log) {
|
|
136
168
|
for (let i = 0; i < subscribers.length; i++) {
|
|
137
169
|
try {
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAkCA,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,MAAM,WAAW,GAAiB,EAAE,CAAC;AAErC;;;;;GAKG;AACI,MAAM,GAAG,GAAG,CAAC,IAAa,EAAE,OAAgB,EAAE,IAAc,EAAE,EAAE;IACrE,MAAM,GAAG,GAAQ;QACf,IAAI;QACJ,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAChB,IAAI,EAAE,IAAI,IAAI,EAAE;KACjB,CAAC;IACF,IAAI,OAAO;QAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACnC,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC,CAAC;AATW,QAAA,GAAG,OASd;AAEF;;;;;;;GAOG;AACI,MAAM,KAAK,GAAG,CAAC,EACpB,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,OAAO,GAMR,EAAE,EAAE;IACH,MAAM,GAAG,GAAQ;QACf,IAAI;QACJ,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAChB,IAAI,EAAE,IAAI,IAAI,EAAE;KACjB,CAAC;IAEF,IAAI,OAAO;QAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACnC,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IAC1B,IAAI,OAAO;QAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IAEnC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC,CAAC;AAtBW,QAAA,KAAK,SAsBhB;AAEF;;;;;;;;GAQG;AACH,MAAa,WAAW;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const index_1 = require("./index");
|
|
4
|
+
describe("getJSONStringifyReplacer", () => {
|
|
5
|
+
it("should properly format Uint8Array values", () => {
|
|
6
|
+
// given
|
|
7
|
+
const replacer = (0, index_1.getJSONStringifyReplacer)();
|
|
8
|
+
const testObj = { buffer: new Uint8Array([250, 250]) };
|
|
9
|
+
const json = JSON.stringify(testObj, replacer);
|
|
10
|
+
// when
|
|
11
|
+
const parsed = JSON.parse(json);
|
|
12
|
+
// then
|
|
13
|
+
expect(parsed.buffer).toEqual({
|
|
14
|
+
hex: "0xfafa",
|
|
15
|
+
readableHex: "fa fa",
|
|
16
|
+
value: "250,250",
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
it("should replace circular references with '[Circular]'", () => {
|
|
20
|
+
//given
|
|
21
|
+
const replacer = (0, index_1.getJSONStringifyReplacer)();
|
|
22
|
+
const circularObj = { name: "circularObj" };
|
|
23
|
+
circularObj.self = circularObj;
|
|
24
|
+
const json = JSON.stringify(circularObj, replacer);
|
|
25
|
+
// when
|
|
26
|
+
const parsed = JSON.parse(json);
|
|
27
|
+
// then
|
|
28
|
+
expect(parsed.self).toBe("[Circular]");
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":";;AAAA,mCAAmD;AAEnD,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,QAAQ;QACR,MAAM,QAAQ,GAAG,IAAA,gCAAwB,GAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAE/C,OAAO;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhC,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YAC5B,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,OAAO;YACpB,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,OAAO;QACP,MAAM,QAAQ,GAAG,IAAA,gCAAwB,GAAE,CAAC;QAC5C,MAAM,WAAW,GAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QACjD,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAEnD,OAAO;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhC,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/lib-es/index.d.ts
CHANGED
|
@@ -98,6 +98,7 @@ export declare class LocalTracer {
|
|
|
98
98
|
* @return a function that can be called to unsubscribe the listener
|
|
99
99
|
*/
|
|
100
100
|
export declare const listen: (cb: Subscriber) => Unsubscribe;
|
|
101
|
+
export declare const getJSONStringifyReplacer: () => (key: string, value: unknown) => unknown;
|
|
101
102
|
declare global {
|
|
102
103
|
interface Window {
|
|
103
104
|
__ledgerLogsListen: any;
|
package/lib-es/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACnD,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC;AAC1B,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAIX,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AACrC,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;AAK7C;;;;;GAKG;AACH,eAAO,MAAM,GAAG,SAAU,OAAO,YAAY,MAAM,SAAS,OAAO,SASlE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK;UAMV,OAAO;;WAEN,OAAO;;UAcf,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,WAAW;IAEpB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,OAAO,CAAC;gBADR,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,0BAAc;IAGhC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY;IAS1C,UAAU,IAAI,YAAY,GAAG,SAAS;IAItC,UAAU,CAAC,OAAO,CAAC,EAAE,YAAY;IAIjC,aAAa,CAAC,YAAY,EAAE,YAAY;IAIxC,OAAO,IAAI,OAAO;IAIlB,OAAO,CAAC,IAAI,EAAE,OAAO;IAIrB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW;IAIpC;;;;;;;OAOG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,WAAW;IAIhD;;;;;;OAMG;IACH,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,WAAW;CAG5D;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,OAAQ,UAAU,KAAG,WAWvC,CAAC;AAcF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,kBAAkB,EAAE,GAAG,CAAC;KACzB;CACF"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACnD,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC;AAC1B,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAIX,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AACrC,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;AAK7C;;;;;GAKG;AACH,eAAO,MAAM,GAAG,SAAU,OAAO,YAAY,MAAM,SAAS,OAAO,SASlE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK;UAMV,OAAO;;WAEN,OAAO;;UAcf,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,WAAW;IAEpB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,OAAO,CAAC;gBADR,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,0BAAc;IAGhC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY;IAS1C,UAAU,IAAI,YAAY,GAAG,SAAS;IAItC,UAAU,CAAC,OAAO,CAAC,EAAE,YAAY;IAIjC,aAAa,CAAC,YAAY,EAAE,YAAY;IAIxC,OAAO,IAAI,OAAO;IAIlB,OAAO,CAAC,IAAI,EAAE,OAAO;IAIrB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW;IAIpC;;;;;;;OAOG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,WAAW;IAIhD;;;;;;OAMG;IACH,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,WAAW;CAG5D;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,OAAQ,UAAU,KAAG,WAWvC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OA6B7E,CAAC;AAcF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,kBAAkB,EAAE,GAAG,CAAC;KACzB;CACF"}
|
package/lib-es/index.js
CHANGED
|
@@ -50,6 +50,8 @@ export const trace = ({ type, message, data, context, }) => {
|
|
|
50
50
|
* @param context Anything representing the context where the log occurred
|
|
51
51
|
*/
|
|
52
52
|
export class LocalTracer {
|
|
53
|
+
type;
|
|
54
|
+
context;
|
|
53
55
|
constructor(type, context) {
|
|
54
56
|
this.type = type;
|
|
55
57
|
this.context = context;
|
|
@@ -69,7 +71,7 @@ export class LocalTracer {
|
|
|
69
71
|
this.context = context;
|
|
70
72
|
}
|
|
71
73
|
updateContext(contextToAdd) {
|
|
72
|
-
this.context =
|
|
74
|
+
this.context = { ...this.context, ...contextToAdd };
|
|
73
75
|
}
|
|
74
76
|
getType() {
|
|
75
77
|
return this.type;
|
|
@@ -105,7 +107,7 @@ export class LocalTracer {
|
|
|
105
107
|
* following a simple builder pattern.
|
|
106
108
|
*/
|
|
107
109
|
withUpdatedContext(contextToAdd) {
|
|
108
|
-
return new LocalTracer(this.type,
|
|
110
|
+
return new LocalTracer(this.type, { ...this.context, ...contextToAdd });
|
|
109
111
|
}
|
|
110
112
|
}
|
|
111
113
|
/**
|
|
@@ -125,6 +127,35 @@ export const listen = (cb) => {
|
|
|
125
127
|
}
|
|
126
128
|
};
|
|
127
129
|
};
|
|
130
|
+
export const getJSONStringifyReplacer = () => {
|
|
131
|
+
const ancestors = [];
|
|
132
|
+
return function (_, value) {
|
|
133
|
+
// format Uint8Array values to more readable format
|
|
134
|
+
if (value instanceof Uint8Array) {
|
|
135
|
+
const bytesHex = Array.from(value).map(x => x.toString(16).padStart(2, "0"));
|
|
136
|
+
return {
|
|
137
|
+
hex: "0x" + bytesHex.join(""),
|
|
138
|
+
readableHex: bytesHex.join(" "),
|
|
139
|
+
value: value.toString(),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
// format circular references to "[Circular]"
|
|
143
|
+
// Taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value#circular_references
|
|
144
|
+
if (typeof value !== "object" || value === null) {
|
|
145
|
+
return value;
|
|
146
|
+
}
|
|
147
|
+
// `this` is the object that value is contained in,
|
|
148
|
+
// i.e., its direct parent.
|
|
149
|
+
while (ancestors.length > 0 && ancestors.at(-1) !== this) {
|
|
150
|
+
ancestors.pop();
|
|
151
|
+
}
|
|
152
|
+
if (ancestors.includes(value)) {
|
|
153
|
+
return "[Circular]";
|
|
154
|
+
}
|
|
155
|
+
ancestors.push(value);
|
|
156
|
+
return value;
|
|
157
|
+
};
|
|
158
|
+
};
|
|
128
159
|
function dispatch(log) {
|
|
129
160
|
for (let i = 0; i < subscribers.length; i++) {
|
|
130
161
|
try {
|
package/lib-es/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkCA,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,MAAM,WAAW,GAAiB,EAAE,CAAC;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,IAAa,EAAE,OAAgB,EAAE,IAAc,EAAE,EAAE;IACrE,MAAM,GAAG,GAAQ;QACf,IAAI;QACJ,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAChB,IAAI,EAAE,IAAI,IAAI,EAAE;KACjB,CAAC;IACF,IAAI,OAAO;QAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACnC,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EACpB,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,OAAO,GAMR,EAAE,EAAE;IACH,MAAM,GAAG,GAAQ;QACf,IAAI;QACJ,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAChB,IAAI,EAAE,IAAI,IAAI,EAAE;KACjB,CAAC;IAEF,IAAI,OAAO;QAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACnC,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IAC1B,IAAI,OAAO;QAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IAEnC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,OAAO,WAAW;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkCA,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,MAAM,WAAW,GAAiB,EAAE,CAAC;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,IAAa,EAAE,OAAgB,EAAE,IAAc,EAAE,EAAE;IACrE,MAAM,GAAG,GAAQ;QACf,IAAI;QACJ,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAChB,IAAI,EAAE,IAAI,IAAI,EAAE;KACjB,CAAC;IACF,IAAI,OAAO;QAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACnC,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EACpB,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,OAAO,GAMR,EAAE,EAAE;IACH,MAAM,GAAG,GAAQ;QACf,IAAI;QACJ,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAChB,IAAI,EAAE,IAAI,IAAI,EAAE;KACjB,CAAC;IAEF,IAAI,OAAO;QAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACnC,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IAC1B,IAAI,OAAO;QAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IAEnC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,OAAO,WAAW;IAEZ;IACA;IAFV,YACU,IAAa,EACb,OAAsB;QADtB,SAAI,GAAJ,IAAI,CAAS;QACb,YAAO,GAAP,OAAO,CAAe;IAC7B,CAAC;IAEJ,KAAK,CAAC,OAAe,EAAE,IAAmB;QACxC,KAAK,CAAC;YACJ,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO;YACP,IAAI;YACJ,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,UAAU,CAAC,OAAsB;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,aAAa,CAAC,YAA0B;QACtC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC;IACtD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,IAAa;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,IAAa;QACpB,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;OAOG;IACH,WAAW,CAAC,OAAsB;QAChC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;OAMG;IACH,kBAAkB,CAAC,YAA0B;QAC3C,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;IAC1E,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAAc,EAAe,EAAE;IACpD,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrB,OAAO,GAAG,EAAE;QACV,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACb,uGAAuG;YACvG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACrD,WAAW,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAmD,GAAG,EAAE;IAC3F,MAAM,SAAS,GAAc,EAAE,CAAC;IAChC,OAAO,UAAU,CAAS,EAAE,KAAc;QACxC,mDAAmD;QACnD,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7E,OAAO;gBACL,GAAG,EAAE,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC/B,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;aACxB,CAAC;QACJ,CAAC;QAED,6CAA6C;QAC7C,8HAA8H;QAC9H,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,mDAAmD;QACnD,2BAA2B;QAC3B,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAM,IAAgB,EAAE,CAAC;YACtE,SAAS,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,QAAQ,CAAC,GAAQ;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,IAAI,CAAC;YACH,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;AACH,CAAC;AAUD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IAClC,MAAM,CAAC,kBAAkB,GAAG,MAAM,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { getJSONStringifyReplacer } from "./index";
|
|
2
|
+
describe("getJSONStringifyReplacer", () => {
|
|
3
|
+
it("should properly format Uint8Array values", () => {
|
|
4
|
+
// given
|
|
5
|
+
const replacer = getJSONStringifyReplacer();
|
|
6
|
+
const testObj = { buffer: new Uint8Array([250, 250]) };
|
|
7
|
+
const json = JSON.stringify(testObj, replacer);
|
|
8
|
+
// when
|
|
9
|
+
const parsed = JSON.parse(json);
|
|
10
|
+
// then
|
|
11
|
+
expect(parsed.buffer).toEqual({
|
|
12
|
+
hex: "0xfafa",
|
|
13
|
+
readableHex: "fa fa",
|
|
14
|
+
value: "250,250",
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
it("should replace circular references with '[Circular]'", () => {
|
|
18
|
+
//given
|
|
19
|
+
const replacer = getJSONStringifyReplacer();
|
|
20
|
+
const circularObj = { name: "circularObj" };
|
|
21
|
+
circularObj.self = circularObj;
|
|
22
|
+
const json = JSON.stringify(circularObj, replacer);
|
|
23
|
+
// when
|
|
24
|
+
const parsed = JSON.parse(json);
|
|
25
|
+
// then
|
|
26
|
+
expect(parsed.self).toBe("[Circular]");
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAEnD,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,QAAQ;QACR,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAE/C,OAAO;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhC,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YAC5B,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,OAAO;YACpB,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,OAAO;QACP,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QACjD,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAEnD,OAAO;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhC,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/logs",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.13.0-next.0",
|
|
4
4
|
"description": "Ledger logs central point",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ledger"
|
|
@@ -22,20 +22,21 @@
|
|
|
22
22
|
"license": "Apache-2.0",
|
|
23
23
|
"gitHead": "dd0dea64b58e5a9125c8a422dcffd29e5ef6abec",
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@types/jest": "^29.5.
|
|
26
|
-
"@types/node": "^
|
|
25
|
+
"@types/jest": "^29.5.10",
|
|
26
|
+
"@types/node": "^22.10.10",
|
|
27
27
|
"documentation": "14.0.2",
|
|
28
|
-
"jest": "^
|
|
28
|
+
"jest": "^29.7.0",
|
|
29
29
|
"rimraf": "^4.4.1",
|
|
30
30
|
"source-map-support": "^0.5.21",
|
|
31
|
-
"ts-jest": "^
|
|
31
|
+
"ts-jest": "^29.1.1",
|
|
32
32
|
"ts-node": "^10.4.0"
|
|
33
33
|
},
|
|
34
34
|
"scripts": {
|
|
35
35
|
"clean": "rimraf lib lib-es",
|
|
36
|
-
"build": "tsc && tsc -m
|
|
36
|
+
"build": "tsc && tsc -m esnext --moduleResolution bundler --outDir lib-es",
|
|
37
37
|
"prewatch": "pnpm build",
|
|
38
38
|
"watch": "tsc --watch",
|
|
39
|
+
"watch:es": "tsc --watch -m esnext --moduleResolution bundler --outDir lib-es",
|
|
39
40
|
"doc": "documentation readme src/** --section=API --pe ts --re ts --re d.ts",
|
|
40
41
|
"lint": "eslint ./src --no-error-on-unmatched-pattern --ext .ts,.tsx --cache",
|
|
41
42
|
"lint:fix": "pnpm lint --fix",
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { getJSONStringifyReplacer } from "./index";
|
|
2
|
+
|
|
3
|
+
describe("getJSONStringifyReplacer", () => {
|
|
4
|
+
it("should properly format Uint8Array values", () => {
|
|
5
|
+
// given
|
|
6
|
+
const replacer = getJSONStringifyReplacer();
|
|
7
|
+
const testObj = { buffer: new Uint8Array([250, 250]) };
|
|
8
|
+
const json = JSON.stringify(testObj, replacer);
|
|
9
|
+
|
|
10
|
+
// when
|
|
11
|
+
const parsed = JSON.parse(json);
|
|
12
|
+
|
|
13
|
+
// then
|
|
14
|
+
expect(parsed.buffer).toEqual({
|
|
15
|
+
hex: "0xfafa",
|
|
16
|
+
readableHex: "fa fa",
|
|
17
|
+
value: "250,250",
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it("should replace circular references with '[Circular]'", () => {
|
|
22
|
+
//given
|
|
23
|
+
const replacer = getJSONStringifyReplacer();
|
|
24
|
+
const circularObj: any = { name: "circularObj" };
|
|
25
|
+
circularObj.self = circularObj;
|
|
26
|
+
const json = JSON.stringify(circularObj, replacer);
|
|
27
|
+
|
|
28
|
+
// when
|
|
29
|
+
const parsed = JSON.parse(json);
|
|
30
|
+
|
|
31
|
+
// then
|
|
32
|
+
expect(parsed.self).toBe("[Circular]");
|
|
33
|
+
});
|
|
34
|
+
});
|
package/src/index.ts
CHANGED
|
@@ -181,6 +181,37 @@ export const listen = (cb: Subscriber): Unsubscribe => {
|
|
|
181
181
|
};
|
|
182
182
|
};
|
|
183
183
|
|
|
184
|
+
export const getJSONStringifyReplacer: () => (key: string, value: unknown) => unknown = () => {
|
|
185
|
+
const ancestors: unknown[] = [];
|
|
186
|
+
return function (_: string, value: unknown): unknown {
|
|
187
|
+
// format Uint8Array values to more readable format
|
|
188
|
+
if (value instanceof Uint8Array) {
|
|
189
|
+
const bytesHex = Array.from(value).map(x => x.toString(16).padStart(2, "0"));
|
|
190
|
+
return {
|
|
191
|
+
hex: "0x" + bytesHex.join(""),
|
|
192
|
+
readableHex: bytesHex.join(" "),
|
|
193
|
+
value: value.toString(),
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// format circular references to "[Circular]"
|
|
198
|
+
// Taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value#circular_references
|
|
199
|
+
if (typeof value !== "object" || value === null) {
|
|
200
|
+
return value;
|
|
201
|
+
}
|
|
202
|
+
// `this` is the object that value is contained in,
|
|
203
|
+
// i.e., its direct parent.
|
|
204
|
+
while (ancestors.length > 0 && ancestors.at(-1) !== (this as unknown)) {
|
|
205
|
+
ancestors.pop();
|
|
206
|
+
}
|
|
207
|
+
if (ancestors.includes(value)) {
|
|
208
|
+
return "[Circular]";
|
|
209
|
+
}
|
|
210
|
+
ancestors.push(value);
|
|
211
|
+
return value;
|
|
212
|
+
};
|
|
213
|
+
};
|
|
214
|
+
|
|
184
215
|
function dispatch(log: Log) {
|
|
185
216
|
for (let i = 0; i < subscribers.length; i++) {
|
|
186
217
|
try {
|