ts-deserializable
Version:
Decorator pattern for deserializing unverified data to an instance of a class in typescript.
32 lines (31 loc) • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const ATTRIBUTES_KEY = 'deserializable:attributes';
var DsAttributes;
(function (DsAttributes) {
function get(target) {
const attributes = Reflect.getMetadata(ATTRIBUTES_KEY, target);
if (attributes) {
return Object.keys(attributes)
.reduce((copy, key) => {
copy[key] = Object.assign({}, attributes[key]);
return copy;
}, {});
}
}
DsAttributes.get = get;
function set(target, attributes) {
Reflect.defineMetadata(ATTRIBUTES_KEY, Object.assign({}, attributes), target);
}
DsAttributes.set = set;
function add(target, key, type, fallback) {
let attributes = get(target) || {};
attributes[key] = {
type: type,
fallback: fallback,
};
set(target, attributes);
}
DsAttributes.add = add;
})(DsAttributes = exports.DsAttributes || (exports.DsAttributes = {}));