@bargain/core
Version:
A simple TypeScript decorator-based library for serializing and deserializing data.
3 lines (2 loc) • 1.16 kB
JavaScript
function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e}).apply(this,arguments)}const t=Symbol("metadata");function r(e){return e.prototype[t]}function o(e){return void 0!==r(e)}function n(n){return function(s,i){let c;switch(o(s.constructor)||(s.constructor.prototype[t]={keys:[]}),typeof n){case"string":c={key:i,serializedKey:n};break;case"undefined":c={key:i,serializedKey:i};break;default:c=e({key:i,serializedKey:i},n)}r(s.constructor).keys.push(c)}}class s{constructor(e){this.definitions=e}serialize(e){if(!o(e.constructor))throw Error("Instance constructor does not have any metadata included. Did you forget to include the decorators?");const t=r(e.constructor),n={};for(const{serializer:r,key:o,serializedKey:s}of t.keys){const t=e[o],i=void 0!==r?r(t):t;n[s]=i}return n}deserialize(e,t){const o={},n=r(t);for(const{deserializer:t,key:r,serializedKey:s}of n.keys){const n=e[s],i=void 0!==t?t(n):n;o[r]=i}return Object.assign(t.prototype,o)}}export{s as Bargain,n as Property};
//# sourceMappingURL=index.modern.js.map