From 1053aed74d2dcb5018a9647f21dd05e2902528fd Mon Sep 17 00:00:00 2001 From: Remco Bloemen Date: Thu, 16 Aug 2018 12:54:23 -0700 Subject: Set curstom inspect printer in BigNumber --- packages/utils/src/configured_bignumber.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/utils/src/configured_bignumber.ts b/packages/utils/src/configured_bignumber.ts index 2b22b6938..977042f1e 100644 --- a/packages/utils/src/configured_bignumber.ts +++ b/packages/utils/src/configured_bignumber.ts @@ -11,4 +11,15 @@ BigNumber.config({ DECIMAL_PLACES: 78, }); +// Set a debug print function for NodeJS +if (typeof window === 'undefined') { // Check if running in NodeJS + const util = require('util'); + + // Set a custom util.inspect function + (BigNumber.prototype as any)[util.inspect.custom] = function() { + // Return the readable string representation + return this.toString(); + }; +} + export { BigNumber }; -- cgit v1.2.3 From 71a61a4dc331912cc015347d5cd22691ef9cd51b Mon Sep 17 00:00:00 2001 From: Remco Bloemen Date: Tue, 21 Aug 2018 14:28:21 -0700 Subject: Use detect-node --- packages/utils/src/configured_bignumber.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/utils/src/configured_bignumber.ts b/packages/utils/src/configured_bignumber.ts index 977042f1e..f97452337 100644 --- a/packages/utils/src/configured_bignumber.ts +++ b/packages/utils/src/configured_bignumber.ts @@ -12,7 +12,8 @@ BigNumber.config({ }); // Set a debug print function for NodeJS -if (typeof window === 'undefined') { // Check if running in NodeJS +import isNode = require('detect-node'); +if (!isNode) { const util = require('util'); // Set a custom util.inspect function -- cgit v1.2.3 From 9b4f5dfddae9defbd797dbd416868aa381c44b2c Mon Sep 17 00:00:00 2001 From: Remco Bloemen Date: Tue, 21 Aug 2018 14:32:31 -0700 Subject: Fix tslint issues --- packages/utils/src/configured_bignumber.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/utils/src/configured_bignumber.ts b/packages/utils/src/configured_bignumber.ts index f97452337..a838b1e3b 100644 --- a/packages/utils/src/configured_bignumber.ts +++ b/packages/utils/src/configured_bignumber.ts @@ -14,11 +14,12 @@ BigNumber.config({ // Set a debug print function for NodeJS import isNode = require('detect-node'); if (!isNode) { - const util = require('util'); + import util = require('util'); // Set a custom util.inspect function - (BigNumber.prototype as any)[util.inspect.custom] = function() { + (BigNumber.prototype as any)[util.inspect.custom] = function(): string { // Return the readable string representation + // tslint:disable-next-line: no-invalid-this return this.toString(); }; } -- cgit v1.2.3 From ad0fe2f0799100e305f437c38e657f668d74670b Mon Sep 17 00:00:00 2001 From: Remco Bloemen Date: Tue, 21 Aug 2018 14:45:14 -0700 Subject: Use const require instead of import --- packages/utils/src/configured_bignumber.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/utils/src/configured_bignumber.ts b/packages/utils/src/configured_bignumber.ts index a838b1e3b..b7de1b1fc 100644 --- a/packages/utils/src/configured_bignumber.ts +++ b/packages/utils/src/configured_bignumber.ts @@ -14,7 +14,11 @@ BigNumber.config({ // Set a debug print function for NodeJS import isNode = require('detect-node'); if (!isNode) { - import util = require('util'); + // Dynamically load a NodeJS specific module. + // Typescript requires all imports to be global, so we need to use + // `const` here and disable the tslint warning. + // tslint:disable-next-line: no-var-requires + const util = require('util'); // Set a custom util.inspect function (BigNumber.prototype as any)[util.inspect.custom] = function(): string { -- cgit v1.2.3 From e40a4addc9998d637896d6f7145bef8f77a512ca Mon Sep 17 00:00:00 2001 From: Remco Bloemen Date: Tue, 21 Aug 2018 15:00:13 -0700 Subject: Add upstream issue --- packages/utils/src/configured_bignumber.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/utils/src/configured_bignumber.ts b/packages/utils/src/configured_bignumber.ts index b7de1b1fc..56e925c41 100644 --- a/packages/utils/src/configured_bignumber.ts +++ b/packages/utils/src/configured_bignumber.ts @@ -12,6 +12,7 @@ BigNumber.config({ }); // Set a debug print function for NodeJS +// Upstream issue: https://github.com/MikeMcl/bignumber.js/issues/188 import isNode = require('detect-node'); if (!isNode) { // Dynamically load a NodeJS specific module. -- cgit v1.2.3 From a5665a68756c905637c551fc48c9b7011a55c237 Mon Sep 17 00:00:00 2001 From: Remco Bloemen Date: Thu, 8 Nov 2018 18:31:22 +0100 Subject: Fix isNode --- packages/utils/src/configured_bignumber.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utils/src/configured_bignumber.ts b/packages/utils/src/configured_bignumber.ts index 56e925c41..8e1491796 100644 --- a/packages/utils/src/configured_bignumber.ts +++ b/packages/utils/src/configured_bignumber.ts @@ -14,7 +14,7 @@ BigNumber.config({ // Set a debug print function for NodeJS // Upstream issue: https://github.com/MikeMcl/bignumber.js/issues/188 import isNode = require('detect-node'); -if (!isNode) { +if (isNode) { // Dynamically load a NodeJS specific module. // Typescript requires all imports to be global, so we need to use // `const` here and disable the tslint warning. -- cgit v1.2.3 From dfef33bc41221c3f0f38d7e1c3e4163455b98b79 Mon Sep 17 00:00:00 2001 From: Remco Bloemen Date: Fri, 9 Nov 2018 00:19:11 +0100 Subject: Added more comments --- packages/utils/src/configured_bignumber.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/utils/src/configured_bignumber.ts b/packages/utils/src/configured_bignumber.ts index 8e1491796..34b57d303 100644 --- a/packages/utils/src/configured_bignumber.ts +++ b/packages/utils/src/configured_bignumber.ts @@ -22,7 +22,12 @@ if (isNode) { const util = require('util'); // Set a custom util.inspect function + // HACK: We add a function to the BigNumber class by assigning to the + // prototype. The function name is a symbol provided by Node. (BigNumber.prototype as any)[util.inspect.custom] = function(): string { + // HACK: When executed, `this` will refer to the BigNumber instance. + // This is also why we need a function expression instead of an + // arrow function, as the latter does not have a `this`. // Return the readable string representation // tslint:disable-next-line: no-invalid-this return this.toString(); -- cgit v1.2.3