From eb8572ba8e2d49394ba9cd02b2a47e9565469858 Mon Sep 17 00:00:00 2001 From: seajensen Date: Tue, 6 Jul 2021 12:00:30 -0600 Subject: [PATCH 1/5] feat: modified date parsing, added luxon Signed-off-by: seajensen --- package-lock.json | 10 ++++++++++ package.json | 2 ++ src/modules/basic-messages/messages/BasicMessage.ts | 5 ++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 95766e3506..107c1b5384 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1125,6 +1125,11 @@ "@types/node": "*" } }, + "@types/luxon": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-1.27.0.tgz", + "integrity": "sha512-rr2lNXsErnA/ARtgFn46NtQjUa66cuwZYeo/2K7oqqxhJErhXgHBPyNKCo+pfOC3L7HFwtao8ebViiU9h4iAxA==" + }, "@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -5355,6 +5360,11 @@ "yallist": "^4.0.0" } }, + "luxon": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.27.0.tgz", + "integrity": "sha512-VKsFsPggTA0DvnxtJdiExAucKdAnwbCCNlMM5ENvHlxubqWd0xhZcdb4XgZ7QFNhaRhilXCFxHuoObP5BNA4PA==" + }, "macos-release": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.4.1.tgz", diff --git a/package.json b/package.json index 2e44bedde2..400bfcb746 100644 --- a/package.json +++ b/package.json @@ -23,12 +23,14 @@ "prepare": "husky install" }, "dependencies": { + "@types/luxon": "^1.27.0", "bn.js": "^5.2.0", "buffer": "^6.0.3", "class-transformer": "^0.4.0", "class-validator": "^0.13.1", "events": "^3.3.0", "js-sha256": "^0.9.0", + "luxon": "^1.27.0", "reflect-metadata": "^0.1.13", "uuid": "^8.3.0" }, diff --git a/src/modules/basic-messages/messages/BasicMessage.ts b/src/modules/basic-messages/messages/BasicMessage.ts index bf3641bc11..054e35db11 100644 --- a/src/modules/basic-messages/messages/BasicMessage.ts +++ b/src/modules/basic-messages/messages/BasicMessage.ts @@ -1,5 +1,7 @@ import { Equals, IsDate, IsString } from 'class-validator' -import { Expose, Type } from 'class-transformer' +import { Expose, Transform, Type } from 'class-transformer' + +import { DateTime } from 'luxon' import { AgentMessage } from '../../../agent/AgentMessage' import { MessageType } from './BasicMessageMessageType' @@ -27,6 +29,7 @@ export class BasicMessage extends AgentMessage { @Expose({ name: 'sent_time' }) @Type(() => Date) + @Transform(({ value }) => new Date(DateTime.fromSQL(value ?? new Date().toString()).toString())) @IsDate() public sentTime!: Date From eb884d317aa39cd05efb3fa805fddd57e3c29212 Mon Sep 17 00:00:00 2001 From: seajensen Date: Tue, 6 Jul 2021 12:03:09 -0600 Subject: [PATCH 2/5] feat: fixed node engines in package.json Signed-off-by: seajensen --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 400bfcb746..49ecd20cab 100644 --- a/package.json +++ b/package.json @@ -85,6 +85,6 @@ } }, "engines": { - "node": "^12" + "node": ">= 12" } } From adce32677b48a4b89c351e63d76e5f88d65f56ca Mon Sep 17 00:00:00 2001 From: seajensen Date: Tue, 6 Jul 2021 15:28:08 -0600 Subject: [PATCH 3/5] feat: refined date parsing Signed-off-by: seajensen --- .../basic-messages/messages/BasicMessage.ts | 15 +++++++++++++-- yarn.lock | 10 ++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/modules/basic-messages/messages/BasicMessage.ts b/src/modules/basic-messages/messages/BasicMessage.ts index 054e35db11..cfe168d00a 100644 --- a/src/modules/basic-messages/messages/BasicMessage.ts +++ b/src/modules/basic-messages/messages/BasicMessage.ts @@ -28,8 +28,19 @@ export class BasicMessage extends AgentMessage { public static readonly type = MessageType.BasicMessage @Expose({ name: 'sent_time' }) - @Type(() => Date) - @Transform(({ value }) => new Date(DateTime.fromSQL(value ?? new Date().toString()).toString())) + @Transform(({ value }) => { + const parsedDate = new Date(value) + const luxonDate = DateTime.fromSQL(value) + if (parsedDate instanceof Date && !isNaN(parsedDate.getTime())) { + console.log(parsedDate) + return parsedDate + } + if (luxonDate.isValid) { + console.log(luxonDate.toString()) + return new Date(luxonDate.toString()) + } + return new Date() + }) @IsDate() public sentTime!: Date diff --git a/yarn.lock b/yarn.lock index f0f0f30845..8fdc50b695 100644 --- a/yarn.lock +++ b/yarn.lock @@ -817,6 +817,11 @@ dependencies: "@types/node" "*" +"@types/luxon@^1.27.0": + version "1.27.0" + resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-1.27.0.tgz#1e3b5a7f8ca6944349c43498b4442b742c71ab0b" + integrity sha512-rr2lNXsErnA/ARtgFn46NtQjUa66cuwZYeo/2K7oqqxhJErhXgHBPyNKCo+pfOC3L7HFwtao8ebViiU9h4iAxA== + "@types/mime@^1": version "1.3.2" resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz" @@ -4274,6 +4279,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +luxon@^1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.27.0.tgz#ae10c69113d85dab8f15f5e8390d0cbeddf4f00f" + integrity sha512-VKsFsPggTA0DvnxtJdiExAucKdAnwbCCNlMM5ENvHlxubqWd0xhZcdb4XgZ7QFNhaRhilXCFxHuoObP5BNA4PA== + macos-release@^2.2.0: version "2.4.1" resolved "https://registry.npmjs.org/macos-release/-/macos-release-2.4.1.tgz" From 246ff4872b2927357d46232683b01cf7e40e6db6 Mon Sep 17 00:00:00 2001 From: seajensen Date: Tue, 6 Jul 2021 15:29:56 -0600 Subject: [PATCH 4/5] feat: fixed console log errors Signed-off-by: seajensen --- src/modules/basic-messages/messages/BasicMessage.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/modules/basic-messages/messages/BasicMessage.ts b/src/modules/basic-messages/messages/BasicMessage.ts index cfe168d00a..87110762bd 100644 --- a/src/modules/basic-messages/messages/BasicMessage.ts +++ b/src/modules/basic-messages/messages/BasicMessage.ts @@ -32,11 +32,9 @@ export class BasicMessage extends AgentMessage { const parsedDate = new Date(value) const luxonDate = DateTime.fromSQL(value) if (parsedDate instanceof Date && !isNaN(parsedDate.getTime())) { - console.log(parsedDate) return parsedDate } if (luxonDate.isValid) { - console.log(luxonDate.toString()) return new Date(luxonDate.toString()) } return new Date() From 22789e0ee6c0bf480ec91abac05174410a0737b7 Mon Sep 17 00:00:00 2001 From: seajensen Date: Wed, 7 Jul 2021 11:23:37 -0600 Subject: [PATCH 5/5] feat: added util function for date parsing Signed-off-by: seajensen --- package.json | 2 +- .../basic-messages/messages/BasicMessage.ts | 17 +++-------------- src/utils/transformers.ts | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 49ecd20cab..1930e1cf44 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aries-framework", - "version": "0.0.5-unstable.0", + "version": "0.0.5-unstable.0-datatransfer.5", "license": "Apache-2.0", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/src/modules/basic-messages/messages/BasicMessage.ts b/src/modules/basic-messages/messages/BasicMessage.ts index 87110762bd..d765bac423 100644 --- a/src/modules/basic-messages/messages/BasicMessage.ts +++ b/src/modules/basic-messages/messages/BasicMessage.ts @@ -1,9 +1,8 @@ import { Equals, IsDate, IsString } from 'class-validator' -import { Expose, Transform, Type } from 'class-transformer' - -import { DateTime } from 'luxon' +import { Expose, Transform } from 'class-transformer' import { AgentMessage } from '../../../agent/AgentMessage' +import { DateParser } from '../../../utils/transformers' import { MessageType } from './BasicMessageMessageType' export class BasicMessage extends AgentMessage { @@ -28,17 +27,7 @@ export class BasicMessage extends AgentMessage { public static readonly type = MessageType.BasicMessage @Expose({ name: 'sent_time' }) - @Transform(({ value }) => { - const parsedDate = new Date(value) - const luxonDate = DateTime.fromSQL(value) - if (parsedDate instanceof Date && !isNaN(parsedDate.getTime())) { - return parsedDate - } - if (luxonDate.isValid) { - return new Date(luxonDate.toString()) - } - return new Date() - }) + @Transform(({ value }) => DateParser(value)) @IsDate() public sentTime!: Date diff --git a/src/utils/transformers.ts b/src/utils/transformers.ts index 0f2e2d608b..74d99a979d 100644 --- a/src/utils/transformers.ts +++ b/src/utils/transformers.ts @@ -1,6 +1,8 @@ import { Transform, TransformationType } from 'class-transformer' import { JsonTransformer } from './JsonTransformer' +import { DateTime } from 'luxon' + /** * Decorator that transforms json to and from corresponding record. * @@ -36,3 +38,19 @@ export function RecordTransformer(Class: { new (...args: any[]): T }) { } }) } +/* + * Function that parses date from multiple formats + * including SQL formats. + */ + +export function DateParser(value: string): Date { + const parsedDate = new Date(value) + if (parsedDate instanceof Date && !isNaN(parsedDate.getTime())) { + return parsedDate + } + const luxonDate = DateTime.fromSQL(value) + if (luxonDate.isValid) { + return new Date(luxonDate.toString()) + } + return new Date() +}