From bcba7000397501ce9be4869902807fe972aaa611 Mon Sep 17 00:00:00 2001 From: chad Date: Sat, 5 Aug 2023 14:19:19 -0500 Subject: [PATCH 1/2] feat: added bigint multiformatting --- packages/logger/src/index.ts | 4 ++++ packages/logger/test/index.spec.ts | 31 ++++++++++++++++++++---------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/packages/logger/src/index.ts b/packages/logger/src/index.ts index 9597aa813a..68b5545b17 100644 --- a/packages/logger/src/index.ts +++ b/packages/logger/src/index.ts @@ -42,6 +42,10 @@ debug.formatters.a = (v?: Multiaddr): string => { return v == null ? 'undefined' : v.toString() } +// Add a formatter for stringifying BigInts +debug.formatters.i = (v?: bigint): string => { + return v == null ? 'undefined' : v.toLocaleString() +} export interface Logger { (formatter: any, ...args: any[]): void error: (formatter: any, ...args: any[]) => void diff --git a/packages/logger/test/index.spec.ts b/packages/logger/test/index.spec.ts index 8b8b1b6731..bf6538372b 100644 --- a/packages/logger/test/index.spec.ts +++ b/packages/logger/test/index.spec.ts @@ -1,17 +1,19 @@ -import { peerIdFromString } from '@libp2p/peer-id' -import { multiaddr } from '@multiformats/multiaddr' import { expect } from 'aegir/chai' +import { logger } from '../src/index.js' import debug from 'debug' -import { Key } from 'interface-datastore' -import { base32 } from 'multiformats/bases/base32' +import { multiaddr } from '@multiformats/multiaddr' +import { peerIdFromString } from '@libp2p/peer-id' +import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string' +import { toString as unint8ArrayToString } from 'uint8arrays/to-string' import { base58btc } from 'multiformats/bases/base58' +import { base32 } from 'multiformats/bases/base32' import { base64 } from 'multiformats/bases/base64' +import { Key } from 'interface-datastore' import sinon from 'sinon' -import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string' -import { toString as unint8ArrayToString } from 'uint8arrays/to-string' -import { logger } from '../src/index.js' describe('logger', () => { + const debugSpy = sinon.spy(debug, 'log') + it('creates a logger', () => { const log = logger('hello') @@ -80,13 +82,22 @@ describe('logger', () => { const ma = multiaddr('/ip4/127.0.0.1/tcp/4001') - const debugSpy = sinon.spy(debug, 'log') - log('multiaddr %a', ma) expect(debugSpy.firstCall.args[0], 'Multiaddr formatting not included').to.include(`multiaddr ${ma.toString()}`) }) + it('test printf style formatting for big int', () => { + const log = logger('printf-style') + debug.enable('printf-style') + + const bi = BigInt(12345678901234567168) + + log('big int %i', bi) + + expect(debugSpy.secondCall.args[0], 'Big int formatting not included').to.include(`big int ${bi.toLocaleString()}`) + }) + it('test ma formatter', () => { const ma = multiaddr('/ip4/127.0.0.1/tcp/4001') @@ -131,4 +142,4 @@ describe('logger', () => { expect(debug.formatters.k(key)).to.equal(key.toString()) }) -}) +}) \ No newline at end of file From 8fcf1a489a13d4a2fe6aade4afde7f2f32e234df Mon Sep 17 00:00:00 2001 From: chad Date: Mon, 7 Aug 2023 15:13:34 -0500 Subject: [PATCH 2/2] chore: linting --- packages/logger/test/index.spec.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/logger/test/index.spec.ts b/packages/logger/test/index.spec.ts index bf6538372b..16e2dbcf5f 100644 --- a/packages/logger/test/index.spec.ts +++ b/packages/logger/test/index.spec.ts @@ -1,15 +1,15 @@ +import { peerIdFromString } from '@libp2p/peer-id' +import { multiaddr } from '@multiformats/multiaddr' import { expect } from 'aegir/chai' -import { logger } from '../src/index.js' import debug from 'debug' -import { multiaddr } from '@multiformats/multiaddr' -import { peerIdFromString } from '@libp2p/peer-id' -import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string' -import { toString as unint8ArrayToString } from 'uint8arrays/to-string' -import { base58btc } from 'multiformats/bases/base58' +import { Key } from 'interface-datastore' import { base32 } from 'multiformats/bases/base32' +import { base58btc } from 'multiformats/bases/base58' import { base64 } from 'multiformats/bases/base64' -import { Key } from 'interface-datastore' import sinon from 'sinon' +import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string' +import { toString as unint8ArrayToString } from 'uint8arrays/to-string' +import { logger } from '../src/index.js' describe('logger', () => { const debugSpy = sinon.spy(debug, 'log') @@ -142,4 +142,4 @@ describe('logger', () => { expect(debug.formatters.k(key)).to.equal(key.toString()) }) -}) \ No newline at end of file +})