OpenHPS/openhps-core

View on GitHub
src/data/decorators/SerializableSetMember.ts

Summary

Maintainability
A
3 hrs
Test Coverage
import { jsonSetMember, Constructor } from 'typedjson';
import { SerializableSetMemberOptions } from './options';
import { mergeMemberOptions, updateSerializableMember } from './utils';

/**
 * @param {Constructor} elementConstructor Element constructor
 * @param {SerializableSetMemberOptions} options Member options
 * @returns {PropertyDecorator} Property decorator
 */
export function SerializableSetMember<T>(
    elementConstructor: Constructor<T>,
    options?: SerializableSetMemberOptions,
): PropertyDecorator {
    return (target: unknown, propertyKey: string) => {
        const finalOptions = mergeMemberOptions(target, propertyKey, options);
        jsonSetMember(elementConstructor, finalOptions)(target, propertyKey);
        updateSerializableMember(target, propertyKey, finalOptions);
    };
}