UNPKG

@ayka/domistrukt

Version:

A TypeScript library for creating structured data objects with ease.

2 lines 11.6 kB
"use strict";var mt=Object.create;var m=Object.defineProperty;var ot=Object.getOwnPropertyDescriptor;var ft=Object.getOwnPropertyNames;var xt=Object.getPrototypeOf,gt=Object.prototype.hasOwnProperty;var n=(r,t)=>m(r,"name",{value:t,configurable:!0});var i=(r,t)=>{for(var e in t)m(r,e,{get:t[e],enumerable:!0})},ct=(r,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of ft(t))!gt.call(r,a)&&a!==e&&m(r,a,{get:()=>t[a],enumerable:!(s=ot(t,a))||s.enumerable});return r};var j=(r,t,e)=>(e=r!=null?mt(xt(r)):{},ct(t||!r||!r.__esModule?m(e,"default",{value:r,enumerable:!0}):e,r)),bt=r=>ct(m({},"__esModule",{value:!0}),r),ut=(r,t,e,s)=>{for(var a=s>1?void 0:s?ot(t,e):t,o=r.length-1,c;o>=0;o--)(c=r[o])&&(a=(s?c(t,e,a):c(a))||a);return s&&a&&m(t,e,a),a};var wt={};i(wt,{Base:()=>y,Basic:()=>h,DispatchMap:()=>tt,Enum:()=>rt,Error:()=>g,Errors:()=>st,FlatObject:()=>at,Lib:()=>C,Strukt:()=>Q,StruktBase:()=>E,Switch:()=>K,compileSwitch:()=>$,copy:()=>nt,dispatchMap:()=>Z,error:()=>l,init:()=>J,initBasic:()=>G,initEnum:()=>w,initFlatObject:()=>T,isBasicStrukt:()=>H,isErrorStrukt:()=>X,isStrukt:()=>U,isTrueObject:()=>q,klass:()=>lt,lazy:()=>L,makeConstructor:()=>pt,promiseObject:()=>ht,redefineAsAccessors:()=>V,selectKeys:()=>P,staticError:()=>W,switchCase:()=>F,toFlatObject:()=>D});module.exports=bt(wt);var C={};i(C,{klass:()=>lt,lazy:()=>L,makeConstructor:()=>pt,promiseObject:()=>ht,redefineAsAccessors:()=>V,selectKeys:()=>P});var lt=n(()=>class{},"klass"),P=n((r,t)=>{let e={};for(let s of t)e[s]=r[s];return e},"selectKeys"),pt=n(r=>(...t)=>Reflect.construct(r,t),"makeConstructor"),it=n((r,t,e)=>{Object.defineProperty(r,t,{get(){return e}})},"defineGetter"),V=n((r,t)=>{for(let e of t){let s=r[e];it(r,e,s),Object.defineProperty(r,e,{set(a){it(r,e,a)}})}return r},"redefineAsAccessors"),L=n(r=>{let{useValue:t=!0,configurable:e=!0,writable:s=!0,enumerable:a=!0}=r??{};return(o,c,u)=>{if(u.get==null)return;let dt=u.get;u.get=n(function(){let I=dt.call(this);return Object.defineProperty(this,c,t?{value:I,writable:s,enumerable:a,configurable:e}:{get(){return I},set(kt){I=kt},configurable:e,enumerable:a}),I},"lazy")}},"lazy"),ht=n(async r=>{let t=Object.entries(r).map(([s,a])=>a.then(o=>[s,o])),e=await Promise.all(t);return Object.fromEntries(e)},"promiseObject");var Q={};i(Q,{init:()=>J,initBasic:()=>G,isBasicStrukt:()=>H,isStrukt:()=>U});var E={};i(E,{BasicStrukt:()=>h,StruktBase:()=>y,construct:()=>f,t:()=>y});var yt=j(require("immutable"),1);var f=n(r=>{let t={...r.data};return Reflect.deleteProperty(t,"__proto__"),Object.assign(r.target,t),V(r.target,r.hidden),r.target},"construct"),h=class{static{n(this,"BasicStrukt")}constructor(t){f({target:this,data:t.data,hidden:t.hidden})}},y=class extends h{static{n(this,"StruktBase")}#t;#r;constructor(t){super(t),this.#t=yt.List(Object.keys(t.data)),this.#r=[...t.hidden]}get $$argsT(){}get $$args1T(){}get $$dataT(){}$dataKeys(){return this.#t.toArray()}$data(){let t={};return this.#t.forEach(e=>{t[e]=Reflect.get(this,e)}),t}$selectKeys(t){return P(this,t)}$clone(){let t=f({target:{},data:this,hidden:this.#r});return Object.setPrototypeOf(t,Object.getPrototypeOf(this)),t}$update(t){let e=f({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 J=n(r=>{let t=r.constructor,e=r.hidden??[];class s extends y{static{n(this,"Strukt")}constructor(...o){let c=t(...o);super({data:c,hidden:e})}}return s},"init"),G=n(r=>{let t=r.constructor,e=r.hidden??[];class s extends h{static{n(this,"Strukt")}constructor(...o){let c=t(...o);super({data:c,hidden:e})}}return s},"initBasic"),U=n(r=>r instanceof y,"isStrukt"),H=n(r=>r instanceof h,"isBasicStrukt");var K={};i(K,{Switch:()=>O,SwitchContext:()=>B,SwitchNoMatch:()=>d,compileSwitch:()=>$,continueSymbol:()=>Y,switchCase:()=>F,t:()=>O});var A=j(require("immutable"),1);var g={};i(g,{ErrorStruktBase:()=>x,init:()=>l,isErrorStrukt:()=>X,staticError:()=>W});var x=class extends Error{static{n(this,"ErrorStruktBase")}message;meta;constructor(t,e){let s={...e},a=s.message??t;super(a,s.cause==null?void 0:{cause:s.cause}),this.message=a,this.name=this.constructor.name,delete s.cause,delete s.message,this.meta=s}},W=n(r=>{let t=r?.message??"";class e extends x{static{n(this,"StaticStruktError")}constructor(a,o){let c=typeof a=="string"?o:a,u=typeof a=="string"?a:t;super(u,c)}}return e},"staticError"),l=n(r=>{let t=r.constructor;class e extends x{static{n(this,"StruktError")}data;constructor(a,o){let{data:c,message:u}=t(a);super(u??"",o),this.data=c}}return e},"init"),X=n(r=>r instanceof x,"isErrorStrukt");var Y=Symbol("switch/continue"),B=class{static{n(this,"SwitchContext")}data;target;constructor(t){this.target=t.target,this.data=t.data??{}}continue(){return Y}};var O=class r{static{n(this,"Switch")}target;#t;#r;constructor(t){this.target=t?.target,this.#t=A.List(t?.dispatchers),this.#r=t?.mapper}clone(){return this.#s()}#s(t){return new r({target:t?.target??this.target,dispatchers:t?.dispatchers??this.#t,mapper:t?.mapper??this.#r})}#n(){return this.#s({target:void 0})}save(){let t=this.#n();return(e,s)=>t.run(e,s)}run(t,e){if(t==null)return this.run(this.target,e);let s=new B({data:e,target:t});for(let a of this.#t){if(!a.test(t,s))continue;let o=a.callback(t,s);if(o!==Y)return this.#r!=null?this.#r(o,s):o}throw new d(t)}verify(...t){return this}saveStrict(...t){return this.save()}runStrict(...t){return this.run()}#e(t){return this.#s({dispatchers:this.#t.push(t)})}when(t,e){return typeof t=="boolean"?this.#e({test:n(()=>t,"test"),callback:e}):this.#e({test:t,callback:e})}otherwise(t){return this.#e({test:n(()=>!0,"test"),callback:t})}otherwiseThrow(t){return t==null?this.otherwise(()=>{throw new d(this.target)}):t instanceof Error?this.otherwise(()=>{throw t}):this.otherwise((e,s)=>{let a=new d(this.target);throw t({target:e,ctx:s,cause:a})})}whenValue(t,e){if(!Array.isArray(t))return this.#e({test:n(a=>a===t,"test"),callback:e});let s=A.Set(t);return this.#e({test:n(a=>s.has(a),"test"),callback:e})}whenInstance(t,e){return Array.isArray(t)?this.#e({test:n(s=>t.some(a=>s instanceof a),"test"),callback:e}):this.#e({test:n(s=>s instanceof t,"test"),callback:e})}whenString(t){return this.whenTypeOf("string",t)}whenNumber(t){return this.whenTypeOf("number",t)}whenBoolean(t){return this.whenTypeOf("boolean",t)}whenSymbol(t){return this.whenTypeOf("symbol",t)}whenBigint(t){return this.whenTypeOf("bigint",t)}whenTypeOf(t,e){return this.#e({test:n(s=>typeof s===t,"test"),callback:e})}whenUndefined(t){return this.#e({test:n(e=>e===void 0,"test"),callback:t})}whenNull(t){return this.#e({test:n(e=>e===null,"test"),callback:t})}whenOptional(t){return this.#e({test:n(e=>e==null,"test"),callback:t})}whenTrue(t){return this.#e({test:n(()=>!0,"test"),callback:t})}whenFalse(t){return this.#e({test:n(()=>!1,"test"),callback:t})}map(t){if(this.#r==null)return this.#s({mapper:t});let e=this.#r;return this.#s({mapper:n((s,a)=>t(e(s,a),a),"mapper")})}},F=n(r=>new O({target:r}),"switchCase"),$=n(()=>new O,"compileSwitch"),d=class extends l({constructor(t){return{data:{value:t},message:`No match found and no default provided for ${t}`}}}){static{n(this,"SwitchNoMatch")}};var st={};i(st,{DispatchMapKeyNotFound:()=>b,EnumAssertionError:()=>S,SwitchNoMatch:()=>d});var tt={};i(tt,{DispatchMap:()=>M,DispatchMapKeyNotFound:()=>b,DispatchMapSearchFailed:()=>N,init:()=>Z,t:()=>M});var R=class R{static{n(this,"DispatchMap")}#t;constructor(t){this.#t={...t}}get shape(){return this.#t}get $$key(){}get $$value(){}get $$entry(){}has(t){return t in this.#t}keys(){return Object.keys(this.#t)}values(){return Object.values(this.#t)}entries(){return Object.entries(this.#t).map(([t,e])=>({key:t,value:e}))}get(t){if(!this.has(t))throw new b({key:t,map:this});return this.#t[t]}getSafe(t,e){return this.has(t)?this.get(t):e}index(t){return this.get(t)}indexSafe(t,e){return this.getSafe(t,e)}get reverse(){let t={};for(let{key:e,value:s}of this.entries())s in t||(t[s]=e);return new R(t)}reverseFind(t){return this.entries().find(s=>t(s))?.key}reverseFindOne(t){for(let e of this.entries())if(t(e))return e.key;throw new N({map:this})}reverseFindMany(t){return this.entries().filter(e=>t(e)).map(({key:e})=>e)}};ut([L()],R.prototype,"reverse",1);var M=R,Z=n(r=>new M(r),"init"),b=class extends l({constructor(t){let{key:e,map:s}=t,a=s.keys(),o={key:e,map:s,keys:a},c=a.join(", "),u=`Key not found: ${e}. Available keys: ${c}`;return{data:o,message:u}}}){static{n(this,"DispatchMapKeyNotFound")}},N=class extends l({constructor(t){let{map:e}=t;return{data:{map:e},message:"Search failed"}}}){static{n(this,"DispatchMapSearchFailed")}};var rt={};i(rt,{Enum:()=>_,EnumAssertionError:()=>S,init:()=>w,t:()=>_});var et=j(require("immutable"),1);var _=class{static{n(this,"Enum")}#t;constructor(t){this.#t=et.Set(t);let e={};for(let s of t)e[s]=s;f({target:this,data:e,hidden:[]})}get $$t(){}get $values(){return this.#t}[Symbol.iterator](){return this.#t[Symbol.iterator]()}$has(t){return this.#t.has(t)}$is(t,e){return t===e}$assert(t,e){let s=e?et.Set(e):this.#t;if(!s.has(t))throw new S({target:t,expected:s.toArray()});return t}$toArray(){return this.#t.toArray()}$subEnum(t){return w(t)}$add(...t){return w(this.#t.union(t))}$remove(...t){let e=this.#t.subtract(t);return w(e)}$switchCase(t){return F(t)}$assertSwitchCase(t){return this.$switchCase(this.$assert(t))}$compileSwitch(){return $()}},w=n(r=>new _(r),"init"),S=class extends l({constructor(t){let{target:e,expected:s}=t,a={target:e,expected:s};return{message:`Invalid enum value: ${e}. Expected one of: ${s.join(", ")}`,data:a}}}){static{n(this,"EnumAssertionError")}};var at={};i(at,{FlatObject:()=>z,copy:()=>nt,flatObject:()=>T,fromObject:()=>D,isTrueObject:()=>q,makeKeys:()=>v,t:()=>z,toFlatObject:()=>D});var k=j(require("immutable"),1);var D=n(r=>{let t=k.Map(),e=k.Stack(Object.keys(r).map(s=>v([s])));for(;!e.isEmpty();){let s=e.peek();e=e.pop();let a=s.reduce((c,u)=>c[u],r);if(!q(a)){t=t.set(s,a);continue}let o=Object.keys(a).map(c=>s.push(c));if(o.length===0){t=t.set(s,a);continue}e=e.pushAll(o)}return T(t)},"fromObject"),nt=n(r=>D(r).toJS(),"copy"),T=n(r=>new z(r??k.Map()),"flatObject"),v=n(r=>k.List(r),"makeKeys"),q=n(r=>r!=null&&r.__proto__===Object.prototype,"isTrueObject");var z=class{static{n(this,"FlatObject")}#t;constructor(t){this.#t=t}get index(){return this.#t}get(t){return this.#t.get(v(t))}set(t,e){let s=this.#t.set(v(t),e);return T(s)}setMut(t,e){return this.#t=this.#t.set(v(t),e),this}has(t){return this.#t.has(v(t))}toJS(){let t={};return this.entries().forEach(e=>{let s=t;e.keys.butLast().forEach(o=>{o in s||(s[o]={}),s=s[o]});let a=e.keys.last();a!=null&&(s[a]=e.value)}),t}transform(t){let e=t(this.#t);return T(e)}map(t){return this.transform(e=>e.map(t))}filter(t){return this.transform(e=>e.filter(t))}merge(t){return this.transform(e=>e.merge(t.index))}keys(){return this.#t.keySeq().toList()}values(){return this.#t.valueSeq().toList()}entries(){return this.#t.entrySeq().map(([t,e])=>({value:e,keys:t})).toList()}get size(){return this.#t.size}isEmpty(){return this.#t.isEmpty()}isNotEmpty(){return!this.isEmpty()}};0&&(module.exports={Base,Basic,DispatchMap,Enum,Error,Errors,FlatObject,Lib,Strukt,StruktBase,Switch,compileSwitch,copy,dispatchMap,error,init,initBasic,initEnum,initFlatObject,isBasicStrukt,isErrorStrukt,isStrukt,isTrueObject,klass,lazy,makeConstructor,promiseObject,redefineAsAccessors,selectKeys,staticError,switchCase,toFlatObject}); //# sourceMappingURL=Main.cjs.map