From a9cc5ed1616e2d03520bd8c22ccc63a8a4a90bb4 Mon Sep 17 00:00:00 2001 From: connorivy <43247197+connorivy@users.noreply.github.com> Date: Mon, 29 Jan 2024 07:53:10 -0600 Subject: [PATCH] fix: CNX-7547 serialize get properties (#56) * serialize get properties * remove unwanted code segment --------- Co-authored-by: Connor Ivy --- src/plugins/BaseObjectSerializer.js | 8 +++++++- src/plugins/BaseObjectSerializer.ts | 10 +++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/plugins/BaseObjectSerializer.js b/src/plugins/BaseObjectSerializer.js index 762dc48..1d791e3 100644 --- a/src/plugins/BaseObjectSerializer.js +++ b/src/plugins/BaseObjectSerializer.js @@ -63,7 +63,13 @@ class BaseObjectSerializer { } async PreserializeEachObjectProperty(o, closures) { const converted = new Map() - for (const key of Object.keys(o)) { + const getters = Object.entries(Object.getOwnPropertyDescriptors(Reflect.getPrototypeOf(o))) + .filter(([key, descriptor]) => typeof descriptor.get === 'function' && key !== '__proto__') + .map(([key]) => key) + const objectKeys = new Array() + objectKeys.push(...Object.keys(o)) + objectKeys.push(...getters) + for (const key of objectKeys) { const objKey = key converted.set( BaseObjectSerializer.CleanKey(key), diff --git a/src/plugins/BaseObjectSerializer.ts b/src/plugins/BaseObjectSerializer.ts index cec7e1d..c1f3e3e 100644 --- a/src/plugins/BaseObjectSerializer.ts +++ b/src/plugins/BaseObjectSerializer.ts @@ -78,7 +78,15 @@ export class BaseObjectSerializer { ): Promise> { const converted = new Map() - for (const key of Object.keys(o)) { + const getters = Object.entries(Object.getOwnPropertyDescriptors(Reflect.getPrototypeOf(o))) + .filter(([key, descriptor]) => typeof descriptor.get === 'function' && key !== '__proto__') + .map(([key]) => key) + + const objectKeys = new Array() + objectKeys.push(...Object.keys(o)) + objectKeys.push(...getters) + + for (const key of objectKeys) { const objKey = key as keyof object converted.set( BaseObjectSerializer.CleanKey(key),