@openhps/core
Version:
Open Hybrid Positioning System - Core component
20 lines • 842 B
JavaScript
import { jsonObject } from 'typedjson';
import { DataSerializer } from '../DataSerializer';
import { DataSerializerUtils } from '../DataSerializerUtils';
/**
* Serializable object
* @param {SerializableObjectOptions} [options] Object serialization options
* @returns {ClassDecorator} Class decorator
*/
export function SerializableObject(options) {
return target => {
DataSerializerUtils.createMetadata(target.prototype);
jsonObject(options)(target);
DataSerializer['eventEmitter'].emit('updateSerializableObject', target, options);
const ownMeta = DataSerializerUtils.getMetadata(target);
const rootMeta = DataSerializerUtils.getRootMetadata(target.prototype);
DataSerializerUtils.updateObjectMetadata(target, options, ownMeta, rootMeta);
// (Re)register type
DataSerializer.registerType(target);
};
}