@openhps/core
Version:
Open Hybrid Positioning System - Core component
18 lines (16 loc) • 821 B
text/typescript
import { DataSerializerUtils } from '../DataSerializerUtils';
import { SerializableMemberOptions } from './options';
import { SerializableMember } from './SerializableMember';
/**
* @param {SerializableMemberOptions} [options] Member options
* @returns {PropertyDecorator} Property decorator
*/
export function SerializableMemberFunction(options: SerializableMemberOptions = {}): PropertyDecorator {
return (target: unknown, propertyKey: string) => {
options.serializer = (fn) => fn.toString();
options.deserializer = (fnStr) => eval(fnStr);
const finalOptions = DataSerializerUtils.mergeMemberOptions(target, propertyKey, options);
SerializableMember(finalOptions)(target, propertyKey);
DataSerializerUtils.updateMemberOptions(target, propertyKey, finalOptions);
};
}