UNPKG

@httpx/treeu

Version:
2 lines 2.65 kB
var i=Symbol("@@result"),y={toTreeNodes:{parsedErrorMsg:"Can't convert the flat tree to tree nodes",issues:{ARG_NOT_ARRAY:"Invalid argument: not an array (FlatTreeWs)",ARG_NOT_OBJECT_ARRAY:"Invalid argument: not an array of objects (FlatTreeWs)",NON_STRING_KEY:"Non-string key",EMPTY_KEY:"Empty key given",SPLIT_EMPTY_KEY:"Split an empty key"}},fromTreeNodes:{parsedErrorMsg:"Can't convert the tree to tree nodes to flat with separator",issues:{DUPLICATE_KEY:"Duplicate unique id",INVALID_KEY:"Invalid key found"}}},c=class{toTreeNodes=(r,d)=>{let{separator:a}=d,n={[i]:[]},s=r instanceof Map?r:new Map(Object.entries(r));try{for(let[T,l]of s){let t=T.trim();if(t.length===0)throw new Error(`${y.toTreeNodes.issues.EMPTY_KEY}`);let e=n,o=t.split(a);for(let u of o){if(u.trim().length===0)throw new Error(`${y.toTreeNodes.issues.SPLIT_EMPTY_KEY}`);if(!Object.hasOwn(e,u)){Object.defineProperty(e,u,{value:{[i]:[]},writable:!1});let K=o.slice(0,-1),V=K.length>0?K.join(a):null,m=e[u][i],p={id:t,parentId:V,children:m};if(l!==void 0&&(p.value=l),!Array.isArray(e[i]))throw new TypeError(JSON.stringify(p));e[i].push(p);}e=e[u];}}}catch(T){return {success:false,message:y.toTreeNodes.parsedErrorMsg,issues:[{message:`${T.message}`}]}}return {success:true,treeNodes:n[i]}};toTreeNodesOrThrow=(r,d)=>{let a=this.toTreeNodes(r,d);if(!a.success){let{message:n,issues:s}=a,T=s.length>0?s.map(l=>l.message).join(", "):null;throw new Error(`${n} (${T})`)}return a.treeNodes};fromTreeNodesOrThrow=(r,d)=>{let a=[],n=[];for(r.forEach(t=>n.push(t));;){let t=n.length;if(t===0)break;for(;t>0;){let e=n.shift();a.push(e),e.children?.forEach(o=>n.push(o)),t--;}}let s=new Map,{parsedErrorMsg:T,issues:l}=y.fromTreeNodes;for(let t of a){let e=t.id;if(typeof e!="string"&&typeof e!="number")throw new TypeError(`${T} (${l.INVALID_KEY}: '${e}')`);if(s.has(e))throw new Error(`${T} (${l.DUPLICATE_KEY}: '${e}' of type ${typeof e}')`);s.set(e,t.value);}return s}};var f=class{constructor(r){this.treeNodes=r;}findOne=(r,d)=>{let{includeChildren:a=false,reverse:n=false}={...d};if(!Array.isArray(this.treeNodes)||this.treeNodes.length===0)return;let s,T=typeof r=="string"||typeof r=="number",l=!Array.isArray(r);for(let t of this.treeNodes){let e=[t];for(;e.length>0;){let o=e[n?"pop":"shift"]();if(T?o.id===r:l?r(o):r[0]in o&&o[r[0]]===r[2]){s=o;break}o.children&&e.push(...o.children);}if(s)break}if(a!==true){let{children:t,...e}=s??{};return {...e}}return s}};var N=class{constructor(r){this.treeNodes=r;}getTreeNodes=()=>this.treeNodes};export{f as DfsTreeSearch,c as FlatTreeWsMapper,N as Tree};//# sourceMappingURL=index.mjs.map //# sourceMappingURL=index.mjs.map