From 8337e840a7bd5237341385b508d651e0dabe672c Mon Sep 17 00:00:00 2001 From: Andrei Date: Fri, 15 Sep 2023 18:46:50 +0700 Subject: [PATCH 1/3] fix: fix bigInt cache --- packages/sdk/src/common/decorators/cache.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/sdk/src/common/decorators/cache.ts b/packages/sdk/src/common/decorators/cache.ts index 781235e2..f7667fc6 100644 --- a/packages/sdk/src/common/decorators/cache.ts +++ b/packages/sdk/src/common/decorators/cache.ts @@ -1,12 +1,16 @@ +import { isBigint } from '../utils/index.js'; + import { callConsoleMessage } from './utils.js'; -const serializeArgs = (...args: any[]) => - args.map((arg: any) => JSON.stringify(arg)).join(':'); +const serializeArgs = (args: any[]) => + args + .map((arg: any) => (isBigint(arg) ? arg.toString() : JSON.stringify(arg))) + .join(':'); const getDecoratorArgsString = function (this: This, args?: string[]) { if (!args) return ''; - const argsString = args.map((arg) => { + const argsStringArr = args.map((arg) => { const field = arg .split('.') .reduce((a, b) => (a as { [key: string]: any })[b], this); @@ -14,7 +18,7 @@ const getDecoratorArgsString = function (this: This, args?: string[]) { return arg && typeof field === 'function' ? field.call(this) : field; }); - return serializeArgs(argsString); + return serializeArgs(argsStringArr); }; export const Cache = function (timeMs = 0, cacheArgs?: string[]) { @@ -60,7 +64,12 @@ export const Cache = function (timeMs = 0, cacheArgs?: string[]) { `Cache for method '${methodName}' set.`, ); const result = originalMethod.call(this, ...args); - cache.set(cacheKey, { data: result, timestamp: Date.now() }); + if (result instanceof Promise) { + result.then((resolvedResult) => + cache.set(cacheKey, { data: resolvedResult, timestamp: Date.now() }), + ); + } else cache.set(cacheKey, { data: result, timestamp: Date.now() }); + return result; }; return replacementMethod; From 723caf049e552f0fed4357b08a86c2661c352d32 Mon Sep 17 00:00:00 2001 From: Andrei Date: Fri, 15 Sep 2023 21:06:49 +0700 Subject: [PATCH 2/3] fix: add stringify for object fields --- packages/sdk/src/common/decorators/cache.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/sdk/src/common/decorators/cache.ts b/packages/sdk/src/common/decorators/cache.ts index f7667fc6..106fb248 100644 --- a/packages/sdk/src/common/decorators/cache.ts +++ b/packages/sdk/src/common/decorators/cache.ts @@ -4,7 +4,13 @@ import { callConsoleMessage } from './utils.js'; const serializeArgs = (args: any[]) => args - .map((arg: any) => (isBigint(arg) ? arg.toString() : JSON.stringify(arg))) + .map((arg: any) => + isBigint(arg) + ? arg.toString() + : JSON.stringify(arg, (_key, value) => { + return isBigint(value) ? value.toString() : value; + }), + ) .join(':'); const getDecoratorArgsString = function (this: This, args?: string[]) { From 3db0adc9893f6ba96b3732fcf2e1903498ab89ad Mon Sep 17 00:00:00 2001 From: Andrei Date: Fri, 15 Sep 2023 21:12:41 +0700 Subject: [PATCH 3/3] refactor: cache serialize --- packages/sdk/src/common/decorators/cache.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/sdk/src/common/decorators/cache.ts b/packages/sdk/src/common/decorators/cache.ts index 106fb248..ca441d71 100644 --- a/packages/sdk/src/common/decorators/cache.ts +++ b/packages/sdk/src/common/decorators/cache.ts @@ -5,11 +5,9 @@ import { callConsoleMessage } from './utils.js'; const serializeArgs = (args: any[]) => args .map((arg: any) => - isBigint(arg) - ? arg.toString() - : JSON.stringify(arg, (_key, value) => { - return isBigint(value) ? value.toString() : value; - }), + JSON.stringify(arg, (_key, value) => { + return isBigint(value) ? value.toString() : value; + }), ) .join(':');