Files
OAI-Proxy/src/shared/key-management/key-serializer-base.ts
T
2023-10-09 00:03:46 -05:00

32 lines
789 B
TypeScript

import { Key, KeySerializer, SerializedKey } from "./types";
export abstract class KeySerializerBase<K extends Key>
implements KeySerializer<K>
{
protected constructor(protected serializableFields: (keyof K)[]) {}
serialize(keyObj: K): SerializedKey {
return {
...Object.fromEntries(
this.serializableFields
.map((f) => [f, keyObj[f]])
.filter(([, v]) => v !== undefined)
),
key: keyObj.key,
};
}
partialSerialize(key: string, update: Partial<K>): Partial<SerializedKey> {
return {
...Object.fromEntries(
this.serializableFields
.map((f) => [f, update[f]])
.filter(([, v]) => v !== undefined)
),
key,
};
}
abstract deserialize(serializedKey: SerializedKey): K;
}