25 lines
819 B
JavaScript
25 lines
819 B
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.serialize = serialize;
|
|
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
|
|
});
|
|
return Serializable;
|
|
}
|