"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.serialize = serialize; const decorator_1 = require("../decorator"); const impl_1 = require("./impl"); const interface_1 = require("./interface"); function serialize(constructor) { class Serializable extends constructor { serialize(serializer) { // shortcut for serializers with only the serializeAny method if ((0, interface_1.isGenericSerializer)(serializer)) { return serializer.serializeAny(this); } else { return (0, impl_1.serializeWith)(serializer, this); } } } Object.defineProperty(Serializable, "name", { enumerable: true, configurable: true, writable: true, value: constructor.name }); Serializable[decorator_1.Serde] = constructor[decorator_1.Serde]; return Serializable; }