From cec77508214680405360dabac99f14fd4ba8a7b2 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 15 Dec 2020 10:53:41 +0000 Subject: [PATCH] tendermint-rpc: Add encode method to DateTime --- packages/tendermint-rpc/src/encodings.ts | 6 ++++++ packages/tendermint-rpc/types/encodings.d.ts | 1 + 2 files changed, 7 insertions(+) diff --git a/packages/tendermint-rpc/src/encodings.ts b/packages/tendermint-rpc/src/encodings.ts index 9266fcc1..aaab84a1 100644 --- a/packages/tendermint-rpc/src/encodings.ts +++ b/packages/tendermint-rpc/src/encodings.ts @@ -179,6 +179,12 @@ export class DateTime { (readonlyDate as any).nanoseconds = parseInt(nanoseconds.padEnd(6, "0"), 10); return readonlyDate as ReadonlyDateWithNanoseconds; } + + public static encode(dateTime: ReadonlyDateWithNanoseconds): DateTimeString { + const millisecondIso = dateTime.toISOString(); + const nanoseconds = dateTime.nanoseconds?.toString() ?? ""; + return `${millisecondIso.slice(0, -1)}${nanoseconds.padStart(6, "0")}Z` as DateTimeString; + } } export class Hex { diff --git a/packages/tendermint-rpc/types/encodings.d.ts b/packages/tendermint-rpc/types/encodings.d.ts index cd004f17..83a48433 100644 --- a/packages/tendermint-rpc/types/encodings.d.ts +++ b/packages/tendermint-rpc/types/encodings.d.ts @@ -68,6 +68,7 @@ export declare class Base64 { } export declare class DateTime { static decode(dateTimeString: DateTimeString): ReadonlyDateWithNanoseconds; + static encode(dateTime: ReadonlyDateWithNanoseconds): DateTimeString; } export declare class Hex { static encode(data: Uint8Array): HexString;