UNPKG

@grlt-hub/app-compose

Version:
1 lines 3.17 kB
import{pick as e}from"./chunk-GQZ3QUEZ.js";var i=(e,i)=>({dependencies:i.dependencies.filter((i=>e.includes(i))),optionalDepenencies:i.optionalDependencies.filter((i=>e.includes(i))),transitive:{dependencies:i.transitive.dependencies.filter((i=>e.includes(i.id))),optionalDepenencies:i.transitive.optionalDependencies.filter((i=>e.includes(i.id)))}}),n=(e,i)=>({strict:i.strict.filter((i=>e.includes(i))),optional:i.optional.filter((i=>e.includes(i))),transtivie:{strict:i.transitive.strict.filter((i=>e.includes(i.id))),optional:i.transitive.optional.filter((i=>e.includes(i.id)))}}),t=(t,s)=>{const o=t.stages.map((e=>e.containersToBoot)).flat(),d="domains"===s.view?{id:e=>e.domain,path:e=>`${e.domain}:${e.id}`}:{id:e=>e.id,path:e=>e.id};const p=o.reduce(((e,i)=>{var n,t;const s=(null==(n=i.dependencies)?void 0:n.map(d.id))||[],o=(null==(t=i.optionalDependencies)?void 0:t.map(d.id))||[],p=(({container:e,viewMapper:i})=>{var n,t;const s=new Set,o=[],d=[],p=[];for((e.dependencies||[]).forEach((n=>p.push([n,[i.path(e),i.path(n)],"strict"]))),(e.optionalDependencies||[]).forEach((n=>p.push([n,[i.path(e),i.path(n)],"optional"])));p.length>0;){const[a,c,r]=p.pop();s.has(a.id)||(s.add(a.id),(null==(n=e.dependencies)?void 0:n.includes(a))||(null==(t=e.optionalDependencies)?void 0:t.includes(a))||("strict"===r?o.push({id:i.id(a),path:c.join(" -> ")}):d.push({id:i.id(a),path:c.join(" -> ")})),(a.dependencies||[]).forEach((e=>{p.push([e,[...c,i.path(e)],r])})),(a.optionalDependencies||[]).forEach((e=>{p.push([e,[...c,i.path(e)],"optional"])})))}return{dependencies:o,optionalDependencies:d}})({container:i,viewMapper:d});return e[i.id]={domain:i.domain,dependencies:s,optionalDependencies:o,transitive:{dependencies:p.dependencies,optionalDependencies:p.optionalDependencies}},e}),{}),a="domains"===s.view?(e=>Object.entries(e).reduce(((e,[i,n])=>{const t=n.domain;null!=e[t]||(e[t]={containers:[],strict:[],optional:[],transitive:{strict:[],optional:[]}});const s=n.dependencies.filter((e=>e!==t)),o=n.optionalDependencies.filter((e=>e!==t&&!s.includes(e))),d=n.transitive.dependencies.filter((e=>e.id!==t&&!s.includes(e.id)&&!o.includes(e.id))),p=n.transitive.optionalDependencies.filter((e=>e.id!==t&&!s.includes(e.id)&&!o.includes(e.id)));return e[t].containers.push(i),e[t].strict.push(...s),e[t].optional.push(...o),e[t].transitive.strict.push(...d),e[t].transitive.optional.push(...p),e}),{}))(p):p,c=(i=>n=>"string"==typeof n[0]?e(i,n):e(i,n.map((e=>e.id))))(a),r=(e=>t=>{const s="string"==typeof t[0]?t:t.map((e=>e.id)),o=Object.entries(e),d={};for(const[e,t]of o)if("domain"in t){const{dependencies:n,optionalDepenencies:o,transitive:p}=i(s,t);(n.length||o.length||p.dependencies.length||p.optionalDepenencies.length)&&(d[e]={domain:t.domain,dependencies:n,optionalDepenencies:o,transitive:{dependencies:p.dependencies,optionalDepenencies:p.optionalDepenencies}})}else{const{strict:i,optional:o,transtivie:p}=n(s,t);(i.length||o.length||p.strict.length||p.optional.length)&&(d[e]={containers:t.containers,strict:i,optional:o,transitive:{strict:p.strict,optional:p.optional}})}return d})(a);return{graph:a,dependsOn:c,requiredBy:r}};export{t as graph};