UNPKG

@ayka/strukt

Version:

A lightweight TypeScript library that simplifies the creation of structured data objects and classes. It provides a type-safe and flexible way to define classes with custom properties and initialization logic.

2 lines 3.63 kB
var b=Object.defineProperty;var s=(r,t)=>b(r,"name",{value:t,configurable:!0});var l=(r,t)=>{for(var e in t)b(r,e,{get:t[e],enumerable:!0})};var h={};l(h,{klass:()=>A,lazy:()=>v,makeConstructor:()=>K,promiseObject:()=>_,redefineAsAccessors:()=>g,selectKeys:()=>f});var A=s(()=>class{},"klass"),f=s((r,t)=>{let e={};for(let o of t)e[o]=r[o];return e},"selectKeys"),K=s(r=>(...t)=>Reflect.construct(r,t),"makeConstructor"),P=s((r,t,e)=>{Object.defineProperty(r,t,{get(){return e}})},"defineGetter"),g=s((r,t)=>{for(let e of t){let o=r[e];P(r,e,o),Object.defineProperty(r,e,{set(a){P(r,e,a)}})}return r},"redefineAsAccessors"),v=s(r=>{let{useValue:t=!0,configurable:e=!0,writable:o=!0,enumerable:a=!0}=r??{};return(n,c,p)=>{if(p.get==null)return;let I=p.get;p.get=s(function(){let d=I.call(this);return Object.defineProperty(this,c,t?{value:d,writable:o,enumerable:a,configurable:e}:{get(){return d},set(M){d=M},configurable:e,enumerable:a}),d},"lazy")}},"lazy"),_=s(async r=>{let t=Object.entries(r).map(([o,a])=>a.then(n=>[o,n])),e=await Promise.all(t);return Object.fromEntries(e)},"promiseObject");var B={};l(B,{init:()=>S,initBasic:()=>E,isBasicStrukt:()=>O,isStrukt:()=>C});var T={};l(T,{BasicStrukt:()=>u,ExtendedStrukt:()=>i,construct:()=>k});var k=s(r=>{let t={...r.data};return Reflect.deleteProperty(t,"__proto__"),Object.assign(r.target,t),g(r.target,r.hidden),r.target},"construct"),u=class{static{s(this,"BasicStrukt")}constructor(t){k({target:this,data:t.data,hidden:t.hidden})}},i=class extends u{static{s(this,"ExtendedStrukt")}#t;#r;constructor(t){super(t),this.#t=Object.keys(t.data),this.#r=[...t.hidden]}get $$argsType(){}get $$args1Type(){}get $$dataType(){}$dataKeys(){return[...this.#t]}$data(){let t={};return this.#t.forEach(e=>{t[e]=Reflect.get(this,e)}),t}$selectKeys(t){return f(this,t)}$clone(){let t=k({target:{},data:this,hidden:this.#r});return Object.setPrototypeOf(t,Object.getPrototypeOf(this)),t}$update(t){let e=k({target:{},data:{...this,...t},hidden:this.#r});return Object.setPrototypeOf(e,Object.getPrototypeOf(this)),e}$patch(t){let e=t(this.$clone());return this.$update(e)}$create(...t){return new this.constructor(...t)}};var S=s(r=>{let t=r.constructor,e=r.hidden??[];class o extends i{static{s(this,"Strukt")}constructor(...n){let c=t(...n);super({data:c,hidden:e})}}return o},"init"),E=s(r=>{let t=r.constructor,e=r.hidden??[];class o extends u{static{s(this,"Strukt")}constructor(...n){let c=t(...n);super({data:c,hidden:e})}}return o},"initBasic"),C=s(r=>r instanceof i,"isStrukt"),O=s(r=>r instanceof u,"isBasicStrukt");var R={};l(R,{ErrorStruktBase:()=>y,init:()=>j,isErrorStrukt:()=>w,staticError:()=>$});var y=class extends Error{static{s(this,"ErrorStruktBase")}message;meta;constructor(t,e){let o={...e},a=o.message??t;super(a,o.cause==null?void 0:{cause:o.cause}),this.message=a,this.name=this.constructor.name,delete o.cause,delete o.message,this.meta=o}},$=s(r=>{let t=r?.message??"";class e extends y{static{s(this,"StaticStruktError")}constructor(a,n){let c=typeof a=="string"?n:a,p=typeof a=="string"?a:t;super(p,c)}}return e},"staticError"),j=s(r=>{let t=r.constructor;class e extends y{static{s(this,"StruktError")}data;constructor(a,n){let{data:c,message:p}=t(a);super(p??"",n),this.data=c}}return e},"init"),w=s(r=>r instanceof y,"isErrorStrukt");export{u as Basic,R as Error,i as Extended,h as Lib,B as Strukt,T as StruktBase,j as error,S as init,E as initBasic,O as isBasicStrukt,w as isErrorStrukt,C as isStrukt,A as klass,v as lazy,K as makeConstructor,_ as promiseObject,g as redefineAsAccessors,f as selectKeys,$ as staticError}; //# sourceMappingURL=main.js.map