import PolymorphicSchema from './Polymorphic.js'; import { IDenormalizeDelegate, INormalizeDelegate } from '../interface.js'; /** * Represents variably sized objects * @see https://dataclient.io/rest/api/Values */ export default class ValuesSchema extends PolymorphicSchema { normalize(input: any, parent: any, key: any, delegate: INormalizeDelegate) { const output: Record = {}; const keys = Object.keys(input); for (let i = 0; i < keys.length; i++) { const k = keys[i]; const value = input[k]; if (value !== undefined && value !== null) { output[k] = this.normalizeValue(value, input, k, delegate); } } return output; } denormalize(input: {}, delegate: IDenormalizeDelegate): any { const output: Record = {}; const keys = Object.keys(input); for (let i = 0; i < keys.length; i++) { const k = keys[i]; const entityOrId = (input as any)[k]; const value = this.denormalizeValue(entityOrId, delegate.unvisit); // remove empty or deleted values if (value && typeof value !== 'symbol') { output[k] = value; } } return output; } queryKey(args: any, unvisit: unknown, delegate: unknown) { return undefined; } }