@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.
@@ -1,4 +1,4 @@
1
1
 
2
2
  > @ledgerhq/logs@6.12.0 build /home/runner/work/ledger-live/ledger-live/libs/ledgerjs/packages/logs
3
- > tsc && tsc -m ES6 --outDir lib-es
3
+ > tsc && tsc -m esnext --moduleResolution bundler --outDir lib-es
4
4
 
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;
@@ -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 = Object.assign(Object.assign({}, this.context), contextToAdd);
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, Object.assign(Object.assign({}, this.context), contextToAdd));
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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -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;
@@ -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 = Object.assign(Object.assign({}, this.context), contextToAdd);
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, Object.assign(Object.assign({}, this.context), contextToAdd));
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 {
@@ -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;IACtB,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,mCAAQ,IAAI,CAAC,OAAO,GAAK,YAAY,CAAE,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,kCAAO,IAAI,CAAC,OAAO,GAAK,YAAY,EAAG,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;YACZ,uGAAuG;YACvG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACrD,WAAW,CAAC,GAAG,EAAE,CAAC;SACnB;IACH,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;QAC3C,IAAI;YACF,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SACrB;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClB;KACF;AACH,CAAC;AAUD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,MAAM,CAAC,kBAAkB,GAAG,MAAM,CAAC;CACpC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -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.12.0",
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.0",
26
- "@types/node": "^20.8.10",
25
+ "@types/jest": "^29.5.10",
26
+ "@types/node": "^22.10.10",
27
27
  "documentation": "14.0.2",
28
- "jest": "^28.1.1",
28
+ "jest": "^29.7.0",
29
29
  "rimraf": "^4.4.1",
30
30
  "source-map-support": "^0.5.21",
31
- "ts-jest": "^28.0.5",
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 ES6 --outDir lib-es",
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 {
package/tsconfig.json CHANGED
@@ -2,7 +2,8 @@
2
2
  "extends": "../../tsconfig.json",
3
3
  "compilerOptions": {
4
4
  "outDir": "lib",
5
- "lib": ["DOM", "ES2016"]
5
+ "lib": ["DOM", "ES2016"],
6
+ "module": "NodeNext"
6
7
  },
7
8
  "include": ["src/**/*"]
8
9
  }