@launchsecure/launch-kit 0.0.22 → 0.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/deck-client/assets/{_baseUniq-DsfOm3t_.js → _baseUniq-2gclQXo7.js} +1 -1
- package/dist/deck-client/assets/{arc-NJuvkBv1.js → arc-DcMY5Wm0.js} +1 -1
- package/dist/deck-client/assets/{architectureDiagram-Q4EWVU46-BgrcgZs0.js → architectureDiagram-Q4EWVU46-B8iirmmJ.js} +1 -1
- package/dist/deck-client/assets/{blockDiagram-DXYQGD6D-C3XoLi15.js → blockDiagram-DXYQGD6D-B4JBLjmJ.js} +1 -1
- package/dist/deck-client/assets/{c4Diagram-AHTNJAMY-FX2PjLfb.js → c4Diagram-AHTNJAMY-CojrJAk8.js} +1 -1
- package/dist/deck-client/assets/channel-ERh5jKXV.js +1 -0
- package/dist/deck-client/assets/{chunk-4BX2VUAB-D0aqsJV0.js → chunk-4BX2VUAB-Bmb_BMDo.js} +1 -1
- package/dist/deck-client/assets/{chunk-4TB4RGXK-7qRCCAgK.js → chunk-4TB4RGXK-CumBy8qe.js} +1 -1
- package/dist/deck-client/assets/{chunk-55IACEB6-DfHG-iqb.js → chunk-55IACEB6-Ka8Hb1wD.js} +1 -1
- package/dist/deck-client/assets/{chunk-EDXVE4YY-DrR52j3B.js → chunk-EDXVE4YY-B3sIPiQo.js} +1 -1
- package/dist/deck-client/assets/{chunk-FMBD7UC4-D5KSGATB.js → chunk-FMBD7UC4-C1tYkaqu.js} +1 -1
- package/dist/deck-client/assets/{chunk-OYMX7WX6-M7hsLRNU.js → chunk-OYMX7WX6-D7Wacbky.js} +1 -1
- package/dist/deck-client/assets/{chunk-QZHKN3VN-1ynAWO2m.js → chunk-QZHKN3VN-ChXI0vO3.js} +1 -1
- package/dist/deck-client/assets/{chunk-YZCP3GAM-S2-nGw3D.js → chunk-YZCP3GAM-BXhiqf8u.js} +1 -1
- package/dist/deck-client/assets/classDiagram-6PBFFD2Q-CMi1Gaev.js +1 -0
- package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-CMi1Gaev.js +1 -0
- package/dist/deck-client/assets/clone-DfWhlD4X.js +1 -0
- package/dist/deck-client/assets/{cose-bilkent-S5V4N54A-BcMwozS2.js → cose-bilkent-S5V4N54A-Bqp3p68D.js} +1 -1
- package/dist/deck-client/assets/{dagre-KV5264BT-DtKMhl_1.js → dagre-KV5264BT-BS-rtyhZ.js} +1 -1
- package/dist/deck-client/assets/{diagram-5BDNPKRD-1plH69us.js → diagram-5BDNPKRD-BIrj9YGI.js} +1 -1
- package/dist/deck-client/assets/{diagram-G4DWMVQ6-D_o-BHO3.js → diagram-G4DWMVQ6-noHWPIg4.js} +1 -1
- package/dist/deck-client/assets/{diagram-MMDJMWI5-ClZ1LIx6.js → diagram-MMDJMWI5-C2qHxvqV.js} +1 -1
- package/dist/deck-client/assets/{diagram-TYMM5635-B8dKHfRh.js → diagram-TYMM5635-BytnGQr-.js} +1 -1
- package/dist/deck-client/assets/{erDiagram-SMLLAGMA-CY2aCH7-.js → erDiagram-SMLLAGMA-BfK5m2YQ.js} +1 -1
- package/dist/deck-client/assets/{flowDiagram-DWJPFMVM-DZZWHti8.js → flowDiagram-DWJPFMVM-Cq925G1Z.js} +1 -1
- package/dist/deck-client/assets/{ganttDiagram-T4ZO3ILL-OwGGa6Lu.js → ganttDiagram-T4ZO3ILL-DhhHPAmj.js} +1 -1
- package/dist/deck-client/assets/{gitGraphDiagram-UUTBAWPF-GKyWD4Qt.js → gitGraphDiagram-UUTBAWPF-B3Lc0h9q.js} +1 -1
- package/dist/deck-client/assets/{graph-CORzYQdB.js → graph-RTawgVWm.js} +1 -1
- package/dist/deck-client/assets/{index-hiIpM7EP.js → index-BfIfJXmS.js} +3 -3
- package/dist/deck-client/assets/{infoDiagram-42DDH7IO-DmgqJCcF.js → infoDiagram-42DDH7IO-BlR584kX.js} +1 -1
- package/dist/deck-client/assets/{ishikawaDiagram-UXIWVN3A-D-1v7knu.js → ishikawaDiagram-UXIWVN3A-DygKoNGY.js} +1 -1
- package/dist/deck-client/assets/{journeyDiagram-VCZTEJTY-CYrGQE7b.js → journeyDiagram-VCZTEJTY-BnaiYp9N.js} +1 -1
- package/dist/deck-client/assets/{kanban-definition-6JOO6SKY-BJFDWiH-.js → kanban-definition-6JOO6SKY-BQBUBzJC.js} +1 -1
- package/dist/deck-client/assets/{layout-BTFFcaxF.js → layout-DeZ8HI1T.js} +1 -1
- package/dist/deck-client/assets/{linear-DAbl6COS.js → linear-C6roLi_9.js} +1 -1
- package/dist/deck-client/assets/{min-oWHBrFBm.js → min-CbUksbuI.js} +1 -1
- package/dist/deck-client/assets/{mindmap-definition-QFDTVHPH-BTCB0VLO.js → mindmap-definition-QFDTVHPH-iNxV62yN.js} +1 -1
- package/dist/deck-client/assets/{pieDiagram-DEJITSTG-CUZChWNA.js → pieDiagram-DEJITSTG-DHVA0jaG.js} +1 -1
- package/dist/deck-client/assets/{quadrantDiagram-34T5L4WZ-4M1Um_e4.js → quadrantDiagram-34T5L4WZ-DBeKKLUQ.js} +1 -1
- package/dist/deck-client/assets/{requirementDiagram-MS252O5E-DLzQZ0B3.js → requirementDiagram-MS252O5E-CBwITx7p.js} +1 -1
- package/dist/deck-client/assets/{sankeyDiagram-XADWPNL6-DcNgzV3E.js → sankeyDiagram-XADWPNL6-BtE-1YTU.js} +1 -1
- package/dist/deck-client/assets/{sequenceDiagram-FGHM5R23-CAcI2vC9.js → sequenceDiagram-FGHM5R23-DN96yPP2.js} +1 -1
- package/dist/deck-client/assets/{stateDiagram-FHFEXIEX-CntjTTm5.js → stateDiagram-FHFEXIEX-VUkKC2uJ.js} +1 -1
- package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-CA0IjulK.js +1 -0
- package/dist/deck-client/assets/{timeline-definition-GMOUNBTQ-D8zrit4U.js → timeline-definition-GMOUNBTQ-oUeZhRns.js} +1 -1
- package/dist/deck-client/assets/{vennDiagram-DHZGUBPP-C4SuFPgo.js → vennDiagram-DHZGUBPP-D87fK90n.js} +1 -1
- package/dist/deck-client/assets/wardley-RL74JXVD-DYbYcpDp.js +162 -0
- package/dist/deck-client/assets/{wardleyDiagram-NUSXRM2D-kj73r6f-.js → wardleyDiagram-NUSXRM2D-Ca_i0QRA.js} +1 -1
- package/dist/deck-client/assets/{xychartDiagram-5P7HB3ND-CC_d_Ey3.js → xychartDiagram-5P7HB3ND-CUOJVIvq.js} +1 -1
- package/dist/deck-client/index.html +1 -1
- package/dist/server/chart-serve.js +39 -4
- package/dist/server/cli.js +39 -4
- package/dist/server/graph-mcp-entry.js +39 -4
- package/package.json +1 -1
- package/dist/deck-client/assets/channel-ChQjD1T1.js +0 -1
- package/dist/deck-client/assets/classDiagram-6PBFFD2Q-B_9iqK1S.js +0 -1
- package/dist/deck-client/assets/classDiagram-v2-HSJHXN6E-B_9iqK1S.js +0 -1
- package/dist/deck-client/assets/clone-BYt1AMfz.js +0 -1
- package/dist/deck-client/assets/stateDiagram-v2-QKLJ7IA2-YiaphOU_.js +0 -1
- package/dist/deck-client/assets/wardley-RL74JXVD-B3F-Olcq.js +0 -162
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{s as zt,g as Lt,q as Xt,p as At,a as Ct,b as Et,_ as y,l as et,I as Tt,e as Yt,z as Bt,c as H,i as Rt}from"./index-
|
|
1
|
+
import{s as zt,g as Lt,q as Xt,p as At,a as Ct,b as Et,_ as y,l as et,I as Tt,e as Yt,z as Bt,c as H,i as Rt}from"./index-BfIfJXmS.js";import{p as Ft}from"./chunk-4BX2VUAB-Bmb_BMDo.js";import{p as It}from"./wardley-RL74JXVD-DYbYcpDp.js";import"./min-CbUksbuI.js";import"./_baseUniq-2gclQXo7.js";var q=y((a,r)=>{const e=a<=1?a*100:a;if(e<0||e>100)throw new Error(`${r} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${a}`);return e},"toPercent"),Y=y((a,r,e)=>({x:q(r,`${e} evolution`),y:q(a,`${e} visibility`)}),"toCoordinates"),tt=y(a=>{if(a){if(a==="+<>")return"bidirectional";if(a==="+<")return"backward";if(a==="+>")return"forward"}},"getFlowFromPort"),Ot=y(a=>{if(!(a!=null&&a.startsWith("+")))return{};const r=/^\+'([^']*)'/.exec(a),e=r==null?void 0:r[1];return a.includes("<>")?{flow:"bidirectional",label:e}:a.includes("<")?{flow:"backward",label:e}:a.includes(">")?{flow:"forward",label:e}:{label:e}},"extractFlowFromArrow"),Wt=y((a,r)=>{if(Ft(a,r),a.size&&r.setSize(a.size.width,a.size.height),a.evolution){const e=a.evolution.stages.map(o=>o.secondName?`${o.name.trim()} / ${o.secondName.trim()}`:o.name.trim()),h=a.evolution.stages.filter(o=>o.boundary!==void 0).map(o=>o.boundary);r.updateAxes({stages:e,stageBoundaries:h})}if(a.anchors.forEach(e=>{const h=Y(e.visibility,e.evolution,`Anchor "${e.name}"`);r.addNode(e.name,e.name,h.x,h.y,"anchor")}),a.components.forEach(e=>{var v;const h=Y(e.visibility,e.evolution,`Component "${e.name}"`),o=e.label?(e.label.negX?-1:1)*e.label.offsetX:void 0,d=e.label?(e.label.negY?-1:1)*e.label.offsetY:void 0,m=(v=e.decorator)==null?void 0:v.strategy;r.addNode(e.name,e.name,h.x,h.y,"component",o,d,e.inertia,m)}),a.notes.forEach(e=>{const h=Y(e.visibility,e.evolution,`Note "${e.text}"`);r.addNote(e.text,h.x,h.y)}),a.pipelines.forEach(e=>{const h=r.getNode(e.parent);if(!h||typeof h.y!="number")throw new Error(`Pipeline "${e.parent}" must reference an existing component with coordinates.`);const o=h.y;r.startPipeline(e.parent),e.components.forEach(d=>{const m=`${e.parent}_${d.name}`,v=d.label?(d.label.negX?-1:1)*d.label.offsetX:void 0,g=d.label?(d.label.negY?-1:1)*d.label.offsetY:void 0,A=q(d.evolution,`Pipeline component "${d.name}" evolution`);r.addNode(m,d.name,A,o,"pipeline-component",v,g),r.addPipelineComponent(e.parent,m)})}),a.links.forEach(e=>{const h=!!e.arrow&&(e.arrow.includes("-.->")||e.arrow.includes(".-."));let o=tt(e.fromPort)??tt(e.toPort);const{flow:d,label:m}=Ot(e.arrow);!o&&d&&(o=d);const v=e.linkLabel,g=m??v;r.addLink(e.from,e.to,h,g,o)}),a.evolves.forEach(e=>{const h=r.getNode(e.component);if((h==null?void 0:h.y)!==void 0){const o=q(e.target,`Evolve target for "${e.component}"`);r.addTrend(e.component,o,h.y)}}),a.annotations.length>0){const e=a.annotations[0],h=Y(e.x,e.y,"Annotations box");r.setAnnotationsBox(h.x,h.y)}a.annotation.forEach(e=>{const h=Y(e.x,e.y,`Annotation ${e.number}`);r.addAnnotation(e.number,[{x:h.x,y:h.y}],e.text)}),a.accelerators.forEach(e=>{const h=Y(e.x,e.y,`Accelerator "${e.name}"`);r.addAccelerator(e.name,h.x,h.y)}),a.deaccelerators.forEach(e=>{const h=Y(e.x,e.y,`Deaccelerator "${e.name}"`);r.addDeaccelerator(e.name,h.x,h.y)})},"populateDb"),at={parser:{yy:void 0},parse:y(async a=>{var h;const r=await It("wardley",a);et.debug(r);const e=(h=at.parser)==null?void 0:h.yy;if(!e||typeof e.addNode!="function")throw new Error("parser.parser?.yy was not a WardleyDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");Wt(r,e)},"parse")},R,Dt=(R=class{constructor(){this.nodes=new Map,this.links=[],this.trends=new Map,this.pipelines=new Map,this.annotations=[],this.notes=[],this.accelerators=[],this.deaccelerators=[],this.axes={}}addNode(r){const e=this.nodes.get(r.id)??{id:r.id,label:r.label},h={...e,...r,className:r.className??e.className,labelOffsetX:r.labelOffsetX??e.labelOffsetX,labelOffsetY:r.labelOffsetY??e.labelOffsetY};this.nodes.set(r.id,h)}addLink(r){this.links.push(r)}addTrend(r){this.trends.set(r.nodeId,r)}startPipeline(r){this.pipelines.set(r,{nodeId:r,componentIds:[]});const e=this.nodes.get(r);e&&(e.isPipelineParent=!0)}addPipelineComponent(r,e){const h=this.pipelines.get(r);h&&h.componentIds.push(e);const o=this.nodes.get(e);o&&(o.inPipeline=!0)}addAnnotation(r){this.annotations.push(r)}addNote(r){this.notes.push(r)}addAccelerator(r){this.accelerators.push(r)}addDeaccelerator(r){this.deaccelerators.push(r)}setAnnotationsBox(r,e){this.annotationsBox={x:r,y:e}}setAxes(r){this.axes={...this.axes,...r}}setSize(r,e){this.size={width:r,height:e}}getNode(r){return this.nodes.get(r)}build(){const r=[];for(const e of this.nodes.values()){if(typeof e.x!="number"||typeof e.y!="number")throw new Error(`Node "${e.label}" is missing coordinates`);r.push(e)}return{nodes:r,links:[...this.links],trends:[...this.trends.values()],pipelines:[...this.pipelines.values()],annotations:[...this.annotations],notes:[...this.notes],accelerators:[...this.accelerators],deaccelerators:[...this.deaccelerators],annotationsBox:this.annotationsBox,axes:{...this.axes},size:this.size}}clear(){this.nodes.clear(),this.links=[],this.trends.clear(),this.pipelines.clear(),this.annotations=[],this.notes=[],this.accelerators=[],this.deaccelerators=[],this.annotationsBox=void 0,this.axes={},this.size=void 0}},y(R,"WardleyBuilder"),R),P=new Dt;function N(a){const r=H();return Rt(a.trim(),r)}y(N,"textSanitizer");function rt(){return H()["wardley-beta"]}y(rt,"getConfig");function ot(a,r,e,h,o,d,m,v,g){P.addNode({id:a,label:N(r),x:e,y:h,className:o,labelOffsetX:d,labelOffsetY:m,inertia:v,sourceStrategy:g})}y(ot,"addNode");function st(a,r,e=!1,h,o){P.addLink({source:a,target:r,dashed:e,label:h,flow:o})}y(st,"addLink");function nt(a,r,e){P.addTrend({nodeId:a,targetX:r,targetY:e})}y(nt,"addTrend");function it(a,r,e){P.addAnnotation({number:a,coordinates:r,text:e?N(e):void 0})}y(it,"addAnnotation");function dt(a,r,e){P.addNote({text:N(a),x:r,y:e})}y(dt,"addNote");function lt(a,r,e){P.addAccelerator({name:N(a),x:r,y:e})}y(lt,"addAccelerator");function ct(a,r,e){P.addDeaccelerator({name:N(a),x:r,y:e})}y(ct,"addDeaccelerator");function pt(a,r){P.setAnnotationsBox(a,r)}y(pt,"setAnnotationsBox");function ht(a,r){P.setSize(a,r)}y(ht,"setSize");function xt(a){P.startPipeline(a)}y(xt,"startPipeline");function ft(a,r){P.addPipelineComponent(a,r)}y(ft,"addPipelineComponent");function gt(a){const r={};a.xLabel&&(r.xLabel=N(a.xLabel)),a.yLabel&&(r.yLabel=N(a.yLabel)),a.stages&&(r.stages=a.stages.map(e=>N(e))),a.stageBoundaries&&(r.stageBoundaries=a.stageBoundaries),P.setAxes(r)}y(gt,"updateAxes");function ut(a){return P.getNode(a)}y(ut,"getNode");function yt(){return P.build()}y(yt,"getWardleyData");function mt(){P.clear(),Bt()}y(mt,"clear");var Gt={getConfig:rt,addNode:ot,addLink:st,addTrend:nt,addAnnotation:it,addNote:dt,addAccelerator:lt,addDeaccelerator:ct,setAnnotationsBox:pt,setSize:ht,startPipeline:xt,addPipelineComponent:ft,updateAxes:gt,getNode:ut,getWardleyData:yt,clear:mt,setAccTitle:Et,getAccTitle:Ct,setDiagramTitle:At,getDiagramTitle:Xt,getAccDescription:Lt,setAccDescription:zt},qt=["Genesis","Custom Built","Product","Commodity"],Ht=y(()=>{var r,e,h,o,d,m,v,g,A,M,b,z;const{themeVariables:a}=H();return{backgroundColor:((r=a.wardley)==null?void 0:r.backgroundColor)??a.background??"#fff",axisColor:((e=a.wardley)==null?void 0:e.axisColor)??"#000",axisTextColor:((h=a.wardley)==null?void 0:h.axisTextColor)??a.primaryTextColor??"#222",gridColor:((o=a.wardley)==null?void 0:o.gridColor)??"rgba(100, 100, 100, 0.2)",componentFill:((d=a.wardley)==null?void 0:d.componentFill)??"#fff",componentStroke:((m=a.wardley)==null?void 0:m.componentStroke)??"#000",componentLabelColor:((v=a.wardley)==null?void 0:v.componentLabelColor)??a.primaryTextColor??"#222",linkStroke:((g=a.wardley)==null?void 0:g.linkStroke)??"#000",evolutionStroke:((A=a.wardley)==null?void 0:A.evolutionStroke)??"#dc3545",annotationStroke:((M=a.wardley)==null?void 0:M.annotationStroke)??"#000",annotationTextColor:((b=a.wardley)==null?void 0:b.annotationTextColor)??a.primaryTextColor??"#222",annotationFill:((z=a.wardley)==null?void 0:z.annotationFill)??a.background??"#fff"}},"getTheme"),jt=y(()=>{const a=H()["wardley-beta"];return{width:(a==null?void 0:a.width)??900,height:(a==null?void 0:a.height)??600,padding:(a==null?void 0:a.padding)??48,nodeRadius:(a==null?void 0:a.nodeRadius)??6,nodeLabelOffset:(a==null?void 0:a.nodeLabelOffset)??8,axisFontSize:(a==null?void 0:a.axisFontSize)??12,labelFontSize:(a==null?void 0:a.labelFontSize)??10,showGrid:(a==null?void 0:a.showGrid)??!1,useMaxWidth:(a==null?void 0:a.useMaxWidth)??!0}},"getConfigValues"),_t=y((a,r,e,h)=>{var K,Q;et.debug(`Rendering Wardley map
|
|
2
2
|
`+a);const o=jt(),d=Ht(),m=o.nodeRadius*1.6,v=h.db,g=v.getWardleyData(),A=v.getDiagramTitle(),M=((K=g.size)==null?void 0:K.width)??o.width,b=((Q=g.size)==null?void 0:Q.height)??o.height,z=Tt(r);z.selectAll("*").remove(),Yt(z,b,M,o.useMaxWidth),z.attr("viewBox",`0 0 ${M} ${b}`);const S=z.append("g").attr("class","wardley-map"),j=z.append("defs");j.append("marker").attr("id",`arrow-${r}`).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("fill",d.evolutionStroke).attr("stroke","none"),j.append("marker").attr("id",`link-arrow-end-${r}`).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerWidth",5).attr("markerHeight",5).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("fill",d.linkStroke).attr("stroke","none"),j.append("marker").attr("id",`link-arrow-start-${r}`).attr("viewBox","0 0 10 10").attr("refX",1).attr("refY",5).attr("markerWidth",5).attr("markerHeight",5).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z").attr("fill",d.linkStroke).attr("stroke","none"),S.append("rect").attr("class","wardley-background").attr("width",M).attr("height",b).attr("fill",d.backgroundColor);const F=M-o.padding*2,I=b-o.padding*2;A&&S.append("text").attr("class","wardley-title").attr("x",M/2).attr("y",o.padding/2).attr("fill",d.axisTextColor).attr("font-size",o.axisFontSize*1.05).attr("font-weight","bold").attr("text-anchor","middle").attr("dominant-baseline","middle").text(A);const C=y(t=>o.padding+t/100*F,"projectX"),E=y(t=>b-o.padding-t/100*I,"projectY"),W=S.append("g").attr("class","wardley-axes");W.append("line").attr("x1",o.padding).attr("x2",M-o.padding).attr("y1",b-o.padding).attr("y2",b-o.padding).attr("stroke",d.axisColor).attr("stroke-width",1),W.append("line").attr("x1",o.padding).attr("x2",o.padding).attr("y1",o.padding).attr("y2",b-o.padding).attr("stroke",d.axisColor).attr("stroke-width",1);const wt=g.axes.xLabel??"Evolution",bt=g.axes.yLabel??"Visibility";W.append("text").attr("class","wardley-axis-label wardley-axis-label-x").attr("x",o.padding+F/2).attr("y",b-o.padding/4).attr("fill",d.axisTextColor).attr("font-size",o.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").text(wt),W.append("text").attr("class","wardley-axis-label wardley-axis-label-y").attr("x",o.padding/3).attr("y",o.padding+I/2).attr("fill",d.axisTextColor).attr("font-size",o.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").attr("transform",`rotate(-90 ${o.padding/3} ${o.padding+I/2})`).text(bt);const O=g.axes.stages&&g.axes.stages.length>0?g.axes.stages:qt;if(O.length>0){const t=S.append("g").attr("class","wardley-stages"),n=g.axes.stageBoundaries,s=[];if(n&&n.length===O.length){let i=0;n.forEach(p=>{s.push({start:i,end:p}),i=p})}else{const i=1/O.length;O.forEach((p,l)=>{s.push({start:l*i,end:(l+1)*i})})}O.forEach((i,p)=>{const l=s[p],x=o.padding+l.start*F,f=o.padding+l.end*F,u=(x+f)/2;p>0&&t.append("line").attr("x1",x).attr("x2",x).attr("y1",o.padding).attr("y2",b-o.padding).attr("stroke","#000").attr("stroke-width",1).attr("stroke-dasharray","5 5").attr("opacity",.8),t.append("text").attr("class","wardley-stage-label").attr("x",u).attr("y",b-o.padding/1.5).attr("fill",d.axisTextColor).attr("font-size",o.axisFontSize-2).attr("text-anchor","middle").text(i)})}if(o.showGrid){const t=S.append("g").attr("class","wardley-grid");for(let n=1;n<4;n++){const s=n/4,i=o.padding+F*s;t.append("line").attr("x1",i).attr("x2",i).attr("y1",o.padding).attr("y2",b-o.padding).attr("stroke",d.gridColor).attr("stroke-dasharray","2 6"),t.append("line").attr("x1",o.padding).attr("x2",M-o.padding).attr("y1",b-o.padding-I*s).attr("y2",b-o.padding-I*s).attr("stroke",d.gridColor).attr("stroke-dasharray","2 6")}}const c=new Map;if(g.nodes.forEach(t=>{c.set(t.id,{x:C(t.x),y:E(t.y),node:t})}),g.pipelines.length>0){const t=S.append("g").attr("class","wardley-pipelines"),n=S.append("g").attr("class","wardley-pipeline-links");g.pipelines.forEach(s=>{if(s.componentIds.length===0)return;const i=s.componentIds.map(f=>({id:f,pos:c.get(f),node:g.nodes.find(u=>u.id===f)})).filter(f=>f.pos&&f.node).sort((f,u)=>f.node.x-u.node.x);for(let f=0;f<i.length-1;f++){const u=i[f],w=i[f+1];n.append("line").attr("class","wardley-pipeline-evolution-link").attr("x1",u.pos.x).attr("y1",u.pos.y).attr("x2",w.pos.x).attr("y2",w.pos.y).attr("stroke",d.linkStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4")}let p=1/0,l=-1/0,x=0;if(s.componentIds.forEach(f=>{const u=c.get(f);u&&(p=Math.min(p,u.x),l=Math.max(l,u.x),x=u.y)}),p!==1/0&&l!==-1/0){const u=o.nodeRadius*4,w=x-u/2,$=c.get(s.nodeId);if($){const X=(p+l)/2;$.x=X,$.y=w-m/6}t.append("rect").attr("class","wardley-pipeline-box").attr("x",p-15).attr("y",w).attr("width",l-p+15*2).attr("height",u).attr("fill","none").attr("stroke",d.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}})}const Z=S.append("g").attr("class","wardley-links"),U=new Map;g.pipelines.forEach(t=>{U.set(t.nodeId,new Set(t.componentIds))});const J=g.links.filter(t=>{if(!c.has(t.source)||!c.has(t.target))return!1;const n=U.get(t.target);return!(n!=null&&n.has(t.source))});Z.selectAll("line").data(J).enter().append("line").attr("class",t=>`wardley-link${t.dashed?" wardley-link--dashed":""}`).attr("x1",t=>{const n=c.get(t.source),s=c.get(t.target),p=g.nodes.find(u=>u.id===t.source).isPipelineParent?m/Math.sqrt(2):o.nodeRadius,l=s.x-n.x,x=s.y-n.y,f=Math.sqrt(l*l+x*x);return n.x+l/f*p}).attr("y1",t=>{const n=c.get(t.source),s=c.get(t.target),p=g.nodes.find(u=>u.id===t.source).isPipelineParent?m/Math.sqrt(2):o.nodeRadius,l=s.x-n.x,x=s.y-n.y,f=Math.sqrt(l*l+x*x);return n.y+x/f*p}).attr("x2",t=>{const n=c.get(t.source),s=c.get(t.target),p=g.nodes.find(u=>u.id===t.target).isPipelineParent?m/Math.sqrt(2):o.nodeRadius,l=n.x-s.x,x=n.y-s.y,f=Math.sqrt(l*l+x*x);return s.x+l/f*p}).attr("y2",t=>{const n=c.get(t.source),s=c.get(t.target),p=g.nodes.find(u=>u.id===t.target).isPipelineParent?m/Math.sqrt(2):o.nodeRadius,l=n.x-s.x,x=n.y-s.y,f=Math.sqrt(l*l+x*x);return s.y+x/f*p}).attr("stroke",d.linkStroke).attr("stroke-width",1).attr("stroke-dasharray",t=>t.dashed?"6 6":null).attr("marker-end",t=>t.flow==="forward"||t.flow==="bidirectional"?`url(#link-arrow-end-${r})`:null).attr("marker-start",t=>t.flow==="backward"||t.flow==="bidirectional"?`url(#link-arrow-start-${r})`:null),Z.selectAll("text").data(J.filter(t=>t.label)).enter().append("text").attr("class","wardley-link-label").attr("x",t=>{const n=c.get(t.source),s=c.get(t.target),i=(n.x+s.x)/2,p=s.y-n.y,l=s.x-n.x,x=Math.sqrt(l*l+p*p),f=8,u=p/x;return i+u*f}).attr("y",t=>{const n=c.get(t.source),s=c.get(t.target),i=(n.y+s.y)/2,p=s.x-n.x,l=s.y-n.y,x=Math.sqrt(p*p+l*l),f=8,u=-p/x;return i+u*f}).attr("fill",d.axisTextColor).attr("font-size",o.labelFontSize).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("transform",t=>{const n=c.get(t.source),s=c.get(t.target),i=(n.x+s.x)/2,p=(n.y+s.y)/2,l=s.x-n.x,x=s.y-n.y,f=Math.sqrt(l*l+x*x),u=8,w=x/f,$=-l/f,X=i+w*u,D=p+$*u;let B=Math.atan2(x,l)*180/Math.PI;return(B>90||B<-90)&&(B+=180),`rotate(${B} ${X} ${D})`}).text(t=>t.label);const kt=S.append("g").attr("class","wardley-trends"),Pt=g.trends.map(t=>{const n=c.get(t.nodeId);if(!n)return null;const s=C(t.targetX),i=E(t.targetY),p=s-n.x,l=i-n.y,x=Math.sqrt(p*p+l*l),f=o.nodeRadius+2,u=x>f?s-p/x*f:s,w=x>f?i-l/x*f:i;return{origin:n,targetX:s,targetY:i,adjustedX2:u,adjustedY2:w}}).filter(t=>t!==null);kt.selectAll("line").data(Pt).enter().append("line").attr("class","wardley-trend").attr("x1",t=>t.origin.x).attr("y1",t=>t.origin.y).attr("x2",t=>t.adjustedX2).attr("y2",t=>t.adjustedY2).attr("stroke",d.evolutionStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4").attr("marker-end",`url(#arrow-${r})`);const L=S.append("g").attr("class","wardley-nodes").selectAll("g").data(g.nodes).enter().append("g").attr("class",t=>["wardley-node",t.className?`wardley-node--${t.className}`:""].filter(Boolean).join(" "));L.filter(t=>t.sourceStrategy==="outsource").append("circle").attr("class","wardley-outsource-overlay").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",o.nodeRadius*2).attr("fill","#666").attr("stroke",d.componentStroke).attr("stroke-width",1),L.filter(t=>t.sourceStrategy==="buy").append("circle").attr("class","wardley-buy-overlay").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",o.nodeRadius*2).attr("fill","#ccc").attr("stroke",d.componentStroke).attr("stroke-width",1),L.filter(t=>t.sourceStrategy==="build").append("circle").attr("class","wardley-build-overlay").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",o.nodeRadius*2).attr("fill","#eee").attr("stroke","#000").attr("stroke-width",1);const T=L.filter(t=>t.sourceStrategy==="market");T.append("circle").attr("class","wardley-market-overlay").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",o.nodeRadius*2).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",1),L.filter(t=>!t.isPipelineParent&&t.sourceStrategy!=="market"&&t.className!=="anchor").append("circle").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",o.nodeRadius).attr("fill",d.componentFill).attr("stroke",d.componentStroke).attr("stroke-width",1);const _=o.nodeRadius*.7,k=o.nodeRadius*1.2;if(T.append("line").attr("class","wardley-market-line").attr("x1",t=>c.get(t.id).x).attr("y1",t=>c.get(t.id).y-k).attr("x2",t=>c.get(t.id).x-k*Math.cos(Math.PI/6)).attr("y2",t=>c.get(t.id).y+k*Math.sin(Math.PI/6)).attr("stroke",d.componentStroke).attr("stroke-width",1),T.append("line").attr("class","wardley-market-line").attr("x1",t=>c.get(t.id).x-k*Math.cos(Math.PI/6)).attr("y1",t=>c.get(t.id).y+k*Math.sin(Math.PI/6)).attr("x2",t=>c.get(t.id).x+k*Math.cos(Math.PI/6)).attr("y2",t=>c.get(t.id).y+k*Math.sin(Math.PI/6)).attr("stroke",d.componentStroke).attr("stroke-width",1),T.append("line").attr("class","wardley-market-line").attr("x1",t=>c.get(t.id).x+k*Math.cos(Math.PI/6)).attr("y1",t=>c.get(t.id).y+k*Math.sin(Math.PI/6)).attr("x2",t=>c.get(t.id).x).attr("y2",t=>c.get(t.id).y-k).attr("stroke",d.componentStroke).attr("stroke-width",1),T.append("circle").attr("class","wardley-market-dot").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y-k).attr("r",_).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",2),T.append("circle").attr("class","wardley-market-dot").attr("cx",t=>c.get(t.id).x-k*Math.cos(Math.PI/6)).attr("cy",t=>c.get(t.id).y+k*Math.sin(Math.PI/6)).attr("r",_).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",2),T.append("circle").attr("class","wardley-market-dot").attr("cx",t=>c.get(t.id).x+k*Math.cos(Math.PI/6)).attr("cy",t=>c.get(t.id).y+k*Math.sin(Math.PI/6)).attr("r",_).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",2),L.filter(t=>t.isPipelineParent===!0).append("rect").attr("x",t=>c.get(t.id).x-m/2).attr("y",t=>c.get(t.id).y-m/2).attr("width",m).attr("height",m).attr("fill",d.componentFill).attr("stroke",d.componentStroke).attr("stroke-width",1),L.filter(t=>t.inertia===!0).append("line").attr("class","wardley-inertia").attr("x1",t=>{const n=c.get(t.id);let s=t.isPipelineParent?m/2+15:o.nodeRadius+15;return t.sourceStrategy&&(s+=o.nodeRadius+10),n.x+s}).attr("y1",t=>{const n=c.get(t.id),s=t.isPipelineParent?m:o.nodeRadius*2;return n.y-s/2}).attr("x2",t=>{const n=c.get(t.id);let s=t.isPipelineParent?m/2+15:o.nodeRadius+15;return t.sourceStrategy&&(s+=o.nodeRadius+10),n.x+s}).attr("y2",t=>{const n=c.get(t.id),s=t.isPipelineParent?m:o.nodeRadius*2;return n.y+s/2}).attr("stroke",d.componentStroke).attr("stroke-width",6),L.append("text").attr("x",t=>{const n=c.get(t.id);if(t.className==="anchor")return t.labelOffsetX!==void 0?n.x+t.labelOffsetX:n.x;let s=o.nodeLabelOffset;t.sourceStrategy&&t.labelOffsetX===void 0&&(s+=10);const i=t.labelOffsetX??s;return n.x+i}).attr("y",t=>{const n=c.get(t.id);if(t.className==="anchor")return t.labelOffsetY!==void 0?n.y+t.labelOffsetY:n.y-3;let s=-o.nodeLabelOffset;t.sourceStrategy&&t.labelOffsetY===void 0&&(s-=10);const i=t.labelOffsetY??s;return n.y+i}).attr("class","wardley-node-label").attr("fill",t=>t.className==="evolved"?d.evolutionStroke:t.className==="anchor"?"#000":d.componentLabelColor).attr("font-size",o.labelFontSize).attr("font-weight",t=>t.className==="anchor"?"bold":"normal").attr("text-anchor",t=>t.className==="anchor"?"middle":"start").attr("dominant-baseline",t=>t.className==="anchor"?"middle":"auto").text(t=>t.label),g.annotations.length>0){const t=S.append("g").attr("class","wardley-annotations");if(g.annotations.forEach(n=>{const s=n.coordinates.map(i=>({x:C(i.x),y:E(i.y)}));if(s.length>1)for(let i=0;i<s.length-1;i++)t.append("line").attr("class","wardley-annotation-line").attr("x1",s[i].x).attr("y1",s[i].y).attr("x2",s[i+1].x).attr("y2",s[i+1].y).attr("stroke",d.axisColor).attr("stroke-width",1.5).attr("stroke-dasharray","4 4");s.forEach(i=>{const p=t.append("g").attr("class","wardley-annotation");p.append("circle").attr("cx",i.x).attr("cy",i.y).attr("r",10).attr("fill","white").attr("stroke",d.axisColor).attr("stroke-width",1.5),p.append("text").attr("x",i.x).attr("y",i.y).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",10).attr("fill",d.axisTextColor).attr("font-weight","bold").text(n.number)})}),g.annotationsBox){let n=C(g.annotationsBox.x),s=E(g.annotationsBox.y);const i=10,p=16,l=11,x=t.append("g").attr("class","wardley-annotations-box"),f=[...g.annotations].filter(w=>w.text).sort((w,$)=>w.number-$.number),u=[];if(f.forEach((w,$)=>{const X=x.append("text").attr("x",n+i).attr("y",s+i+($+1)*p).attr("font-size",l).attr("fill",d.axisTextColor).attr("text-anchor","start").attr("dominant-baseline","middle").text(`${w.number}. ${w.text}`);u.push(X)}),u.length>0){let w=0,$=0;u.forEach(V=>{const G=V.node(),Mt=G.getComputedTextLength();w=Math.max(w,Mt);const Nt=G.getBBox();$=Math.max($,Nt.height)});const X=w+i*2+105,D=f.length*p+i*2+$/2,B=o.padding,vt=M-o.padding-X,St=o.padding,$t=b-o.padding-D;n=Math.max(B,Math.min(n,vt)),s=Math.max(St,Math.min(s,$t)),u.forEach((V,G)=>{V.attr("x",n+i).attr("y",s+i+(G+1)*p)}),x.insert("rect","text").attr("x",n).attr("y",s).attr("width",X).attr("height",D).attr("fill","white").attr("stroke",d.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}}}if(g.notes.length>0){const t=S.append("g").attr("class","wardley-notes");g.notes.forEach(n=>{const s=C(n.x),i=E(n.y);t.append("text").attr("x",s).attr("y",i).attr("text-anchor","start").attr("font-size",11).attr("fill",d.axisTextColor).attr("font-weight","bold").text(n.text)})}if(g.accelerators.length>0){const t=S.append("g").attr("class","wardley-accelerators");g.accelerators.forEach(n=>{const s=C(n.x),i=E(n.y),p=60,l=30,x=20,f=`
|
|
3
3
|
M ${s} ${i-l/2}
|
|
4
4
|
L ${s+p-x} ${i-l/2}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{s as gi,g as xi,q as Xt,p as di,a as fi,b as pi,_ as a,l as Yt,I as mi,e as yi,z as bi,D as _t,i as Ai,F as Nt,G as wi,K as Ci,aC as Si,R as Wt}from"./index-
|
|
1
|
+
import{s as gi,g as xi,q as Xt,p as di,a as fi,b as pi,_ as a,l as Yt,I as mi,e as yi,z as bi,D as _t,i as Ai,F as Nt,G as wi,K as Ci,aC as Si,R as Wt}from"./index-BfIfJXmS.js";import{i as _i}from"./init-Gi6I4Gst.js";import{o as ki}from"./ordinal-Cboi1Yqb.js";import{l as zt}from"./linear-C6roLi_9.js";import"./defaultLocale-DX6XiGOO.js";function Ri(e,t,i){e=+e,t=+t,i=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+i;for(var s=-1,n=Math.max(0,Math.ceil((t-e)/i))|0,o=new Array(n);++s<n;)o[s]=e+s*i;return o}function bt(){var e=ki().unknown(void 0),t=e.domain,i=e.range,s=0,n=1,o,u,p=!1,f=0,T=0,P=.5;delete e.unknown;function _(){var y=t().length,E=n<s,v=E?n:s,L=E?s:n;o=(L-v)/Math.max(1,y-f+T*2),p&&(o=Math.floor(o)),v+=(L-v-o*(y-f))*P,u=o*(1-f),p&&(v=Math.round(v),u=Math.round(u));var I=Ri(y).map(function(m){return v+o*m});return i(E?I.reverse():I)}return e.domain=function(y){return arguments.length?(t(y),_()):t()},e.range=function(y){return arguments.length?([s,n]=y,s=+s,n=+n,_()):[s,n]},e.rangeRound=function(y){return[s,n]=y,s=+s,n=+n,p=!0,_()},e.bandwidth=function(){return u},e.step=function(){return o},e.round=function(y){return arguments.length?(p=!!y,_()):p},e.padding=function(y){return arguments.length?(f=Math.min(1,T=+y),_()):f},e.paddingInner=function(y){return arguments.length?(f=Math.min(1,y),_()):f},e.paddingOuter=function(y){return arguments.length?(T=+y,_()):T},e.align=function(y){return arguments.length?(P=Math.max(0,Math.min(1,y)),_()):P},e.copy=function(){return bt(t(),[s,n]).round(p).paddingInner(f).paddingOuter(T).align(P)},_i.apply(_(),arguments)}var At=function(){var e=a(function(F,h,c,g){for(c=c||{},g=F.length;g--;c[F[g]]=h);return c},"o"),t=[1,10,12,14,16,18,19,21,23],i=[2,6],s=[1,3],n=[1,5],o=[1,6],u=[1,7],p=[1,5,10,12,14,16,18,19,21,23,34,35,36],f=[1,25],T=[1,26],P=[1,28],_=[1,29],y=[1,30],E=[1,31],v=[1,32],L=[1,33],I=[1,34],m=[1,35],R=[1,36],l=[1,37],W=[1,43],O=[1,42],X=[1,47],Y=[1,50],S=[1,10,12,14,16,18,19,21,23,34,35,36],U=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],b=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],w=[1,64],V={trace:a(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:a(function(h,c,g,x,C,r,rt){var d=r.length-1;switch(C){case 5:x.setOrientation(r[d]);break;case 9:x.setDiagramTitle(r[d].text.trim());break;case 12:x.setLineData({text:"",type:"text"},r[d]);break;case 13:x.setLineData(r[d-1],r[d]);break;case 14:x.setBarData({text:"",type:"text"},r[d]);break;case 15:x.setBarData(r[d-1],r[d]);break;case 16:this.$=r[d].trim(),x.setAccTitle(this.$);break;case 17:case 18:this.$=r[d].trim(),x.setAccDescription(this.$);break;case 19:this.$=r[d-1];break;case 20:this.$=[Number(r[d-2]),...r[d]];break;case 21:this.$=[Number(r[d])];break;case 22:x.setXAxisTitle(r[d]);break;case 23:x.setXAxisTitle(r[d-1]);break;case 24:x.setXAxisTitle({type:"text",text:""});break;case 25:x.setXAxisBand(r[d]);break;case 26:x.setXAxisRangeData(Number(r[d-2]),Number(r[d]));break;case 27:this.$=r[d-1];break;case 28:this.$=[r[d-2],...r[d]];break;case 29:this.$=[r[d]];break;case 30:x.setYAxisTitle(r[d]);break;case 31:x.setYAxisTitle(r[d-1]);break;case 32:x.setYAxisTitle({type:"text",text:""});break;case 33:x.setYAxisRangeData(Number(r[d-2]),Number(r[d]));break;case 37:this.$={text:r[d],type:"text"};break;case 38:this.$={text:r[d],type:"text"};break;case 39:this.$={text:r[d],type:"markdown"};break;case 40:this.$=r[d];break;case 41:this.$=r[d-1]+""+r[d];break}},"anonymous"),table:[e(t,i,{3:1,4:2,7:4,5:s,34:n,35:o,36:u}),{1:[3]},e(t,i,{4:2,7:4,3:8,5:s,34:n,35:o,36:u}),e(t,i,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:n,35:o,36:u}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(p,[2,34]),e(p,[2,35]),e(p,[2,36]),{1:[2,1]},e(t,i,{4:2,7:4,3:21,5:s,34:n,35:o,36:u}),{1:[2,3]},e(p,[2,5]),e(t,[2,7],{4:22,34:n,35:o,36:u}),{11:23,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:39,13:38,24:W,27:O,29:40,30:41,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:45,15:44,27:X,33:46,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:49,17:48,24:Y,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:52,17:51,24:Y,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{20:[1,53]},{22:[1,54]},e(S,[2,18]),{1:[2,2]},e(S,[2,8]),e(S,[2,9]),e(U,[2,37],{40:55,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l}),e(U,[2,38]),e(U,[2,39]),e(b,[2,40]),e(b,[2,42]),e(b,[2,43]),e(b,[2,44]),e(b,[2,45]),e(b,[2,46]),e(b,[2,47]),e(b,[2,48]),e(b,[2,49]),e(b,[2,50]),e(b,[2,51]),e(S,[2,10]),e(S,[2,22],{30:41,29:56,24:W,27:O}),e(S,[2,24]),e(S,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},e(S,[2,11]),e(S,[2,30],{33:60,27:X}),e(S,[2,32]),{31:[1,61]},e(S,[2,12]),{17:62,24:Y},{25:63,27:w},e(S,[2,14]),{17:65,24:Y},e(S,[2,16]),e(S,[2,17]),e(b,[2,41]),e(S,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(S,[2,31]),{27:[1,69]},e(S,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(S,[2,15]),e(S,[2,26]),e(S,[2,27]),{11:59,32:72,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},e(S,[2,33]),e(S,[2,19]),{25:73,27:w},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:a(function(h,c){if(c.recoverable)this.trace(h);else{var g=new Error(h);throw g.hash=c,g}},"parseError"),parse:a(function(h){var c=this,g=[0],x=[],C=[null],r=[],rt=this.table,d="",ct=0,It=0,hi=2,Mt=1,li=r.slice.call(arguments,1),D=Object.create(this.lexer),$={yy:{}};for(var ft in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ft)&&($.yy[ft]=this.yy[ft]);D.setInput(h,$.yy),$.yy.lexer=D,$.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var pt=D.yylloc;r.push(pt);var ci=D.options&&D.options.ranges;typeof $.yy.parseError=="function"?this.parseError=$.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ui(B){g.length=g.length-2*B,C.length=C.length-B,r.length=r.length-B}a(ui,"popStack");function Vt(){var B;return B=x.pop()||D.lex()||Mt,typeof B!="number"&&(B instanceof Array&&(x=B,B=x.pop()),B=c.symbols_[B]||B),B}a(Vt,"lex");for(var M,q,z,mt,G={},ut,N,Bt,gt;;){if(q=g[g.length-1],this.defaultActions[q]?z=this.defaultActions[q]:((M===null||typeof M>"u")&&(M=Vt()),z=rt[q]&&rt[q][M]),typeof z>"u"||!z.length||!z[0]){var yt="";gt=[];for(ut in rt[q])this.terminals_[ut]&&ut>hi&>.push("'"+this.terminals_[ut]+"'");D.showPosition?yt="Parse error on line "+(ct+1)+`:
|
|
2
2
|
`+D.showPosition()+`
|
|
3
3
|
Expecting `+gt.join(", ")+", got '"+(this.terminals_[M]||M)+"'":yt="Parse error on line "+(ct+1)+": Unexpected "+(M==Mt?"end of input":"'"+(this.terminals_[M]||M)+"'"),this.parseError(yt,{text:D.match,token:this.terminals_[M]||M,line:D.yylineno,loc:pt,expected:gt})}if(z[0]instanceof Array&&z.length>1)throw new Error("Parse Error: multiple actions possible at state: "+q+", token: "+M);switch(z[0]){case 1:g.push(M),C.push(D.yytext),r.push(D.yylloc),g.push(z[1]),M=null,It=D.yyleng,d=D.yytext,ct=D.yylineno,pt=D.yylloc;break;case 2:if(N=this.productions_[z[1]][1],G.$=C[C.length-N],G._$={first_line:r[r.length-(N||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(N||1)].first_column,last_column:r[r.length-1].last_column},ci&&(G._$.range=[r[r.length-(N||1)].range[0],r[r.length-1].range[1]]),mt=this.performAction.apply(G,[d,It,ct,$.yy,z[1],C,r].concat(li)),typeof mt<"u")return mt;N&&(g=g.slice(0,-1*N*2),C=C.slice(0,-1*N),r=r.slice(0,-1*N)),g.push(this.productions_[z[1]][0]),C.push(G.$),r.push(G._$),Bt=rt[g[g.length-2]][g[g.length-1]],g.push(Bt);break;case 3:return!0}}return!0},"parse")},k=function(){var F={EOF:1,parseError:a(function(c,g){if(this.yy.parser)this.yy.parser.parseError(c,g);else throw new Error(c)},"parseError"),setInput:a(function(h,c){return this.yy=c||this.yy||{},this._input=h,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:a(function(){var h=this._input[0];this.yytext+=h,this.yyleng++,this.offset++,this.match+=h,this.matched+=h;var c=h.match(/(?:\r\n?|\n).*/g);return c?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),h},"input"),unput:a(function(h){var c=h.length,g=h.split(/(?:\r\n?|\n)/g);this._input=h+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-c),this.offset-=c;var x=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var C=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===x.length?this.yylloc.first_column:0)+x[x.length-g.length].length-g[0].length:this.yylloc.first_column-c},this.options.ranges&&(this.yylloc.range=[C[0],C[0]+this.yyleng-c]),this.yyleng=this.yytext.length,this},"unput"),more:a(function(){return this._more=!0,this},"more"),reject:a(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
|
4
4
|
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:a(function(h){this.unput(this.match.slice(h))},"less"),pastInput:a(function(){var h=this.matched.substr(0,this.matched.length-this.match.length);return(h.length>20?"...":"")+h.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:a(function(){var h=this.match;return h.length<20&&(h+=this._input.substr(0,20-h.length)),(h.substr(0,20)+(h.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:a(function(){var h=this.pastInput(),c=new Array(h.length+1).join("-");return h+this.upcomingInput()+`
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
if (dark) document.documentElement.classList.add('dark');
|
|
13
13
|
})();
|
|
14
14
|
</script>
|
|
15
|
-
<script type="module" crossorigin src="/assets/index-
|
|
15
|
+
<script type="module" crossorigin src="/assets/index-BfIfJXmS.js"></script>
|
|
16
16
|
<link rel="stylesheet" crossorigin href="/assets/index-765AIQ9z.css">
|
|
17
17
|
</head>
|
|
18
18
|
<body>
|
|
@@ -1346,7 +1346,13 @@ function generate(rootDir) {
|
|
|
1346
1346
|
...authWrappers.length > 0 ? { auth: authWrappers } : {},
|
|
1347
1347
|
...dbCalls.length > 0 ? { _dbCalls: dbCalls } : {}
|
|
1348
1348
|
});
|
|
1349
|
-
if (route)
|
|
1349
|
+
if (route) {
|
|
1350
|
+
routeToNodeId.set(route, id);
|
|
1351
|
+
const trimmed = route.replace(/\/\*[^/]+\?$/, "");
|
|
1352
|
+
if (trimmed && trimmed !== route && !routeToNodeId.has(trimmed)) {
|
|
1353
|
+
routeToNodeId.set(trimmed, id);
|
|
1354
|
+
}
|
|
1355
|
+
}
|
|
1350
1356
|
}
|
|
1351
1357
|
}
|
|
1352
1358
|
const uiEdges = [];
|
|
@@ -2388,6 +2394,10 @@ function buildApiPathMap(routes) {
|
|
|
2388
2394
|
const map = /* @__PURE__ */ new Map();
|
|
2389
2395
|
for (const r of routes) {
|
|
2390
2396
|
if (!map.has(r.path)) map.set(r.path, r.nodeId);
|
|
2397
|
+
const trimmed = r.path.replace(/\/\*[^/]+\?$/, "");
|
|
2398
|
+
if (trimmed && trimmed !== r.path && !map.has(trimmed)) {
|
|
2399
|
+
map.set(trimmed, r.nodeId);
|
|
2400
|
+
}
|
|
2391
2401
|
}
|
|
2392
2402
|
return map;
|
|
2393
2403
|
}
|
|
@@ -3374,7 +3384,7 @@ var staticRefScannerParser = {
|
|
|
3374
3384
|
},
|
|
3375
3385
|
generate(rootDir, layerOutputs) {
|
|
3376
3386
|
const staticOutput = layerOutputs.get("static");
|
|
3377
|
-
if (!staticOutput || staticOutput.nodes.length === 0) {
|
|
3387
|
+
if (!staticOutput || !Array.isArray(staticOutput.nodes) || staticOutput.nodes.length === 0) {
|
|
3378
3388
|
return { cross_refs: [], flagged_edges: [], warnings: [] };
|
|
3379
3389
|
}
|
|
3380
3390
|
const valueLookup = /* @__PURE__ */ new Map();
|
|
@@ -3894,6 +3904,9 @@ var GENERIC_ROLE_NAMES_BUILTIN = /* @__PURE__ */ new Set([
|
|
|
3894
3904
|
"__tests__",
|
|
3895
3905
|
"spec",
|
|
3896
3906
|
"specs",
|
|
3907
|
+
"scripts",
|
|
3908
|
+
"bin",
|
|
3909
|
+
"tools",
|
|
3897
3910
|
// Go
|
|
3898
3911
|
"cmd",
|
|
3899
3912
|
"pkg",
|
|
@@ -4320,6 +4333,26 @@ async function generateGraph(rootDir, layer) {
|
|
|
4320
4333
|
invalidateCache(filePath);
|
|
4321
4334
|
invalidateTaggedCache(rootDir, result.layer);
|
|
4322
4335
|
}
|
|
4336
|
+
if (!layer) {
|
|
4337
|
+
const producedLayers = new Set(results.map((r) => r.layer));
|
|
4338
|
+
try {
|
|
4339
|
+
for (const f of (0, import_node_fs15.readdirSync)(dir)) {
|
|
4340
|
+
if (!f.endsWith(".json") || f === "tags.json") continue;
|
|
4341
|
+
const layerName = f.replace(/\.json$/, "");
|
|
4342
|
+
if (producedLayers.has(layerName)) continue;
|
|
4343
|
+
const orphan = (0, import_node_path16.join)(dir, f);
|
|
4344
|
+
try {
|
|
4345
|
+
(0, import_node_fs15.unlinkSync)(orphan);
|
|
4346
|
+
invalidateCache(orphan);
|
|
4347
|
+
invalidateTaggedCache(rootDir, layerName);
|
|
4348
|
+
process.stderr.write(`[launch-chart] removed orphan layer file: ${f} (no parser produced ${layerName} this run)
|
|
4349
|
+
`);
|
|
4350
|
+
} catch {
|
|
4351
|
+
}
|
|
4352
|
+
}
|
|
4353
|
+
} catch {
|
|
4354
|
+
}
|
|
4355
|
+
}
|
|
4323
4356
|
return results;
|
|
4324
4357
|
}
|
|
4325
4358
|
|
|
@@ -4521,7 +4554,7 @@ function checkDeadScreens(rootDir) {
|
|
|
4521
4554
|
const pages = ui.nodes.filter((n) => n.type === "page" || n.type === "layout");
|
|
4522
4555
|
const navTargets = /* @__PURE__ */ new Set();
|
|
4523
4556
|
for (const e of ui.edges) {
|
|
4524
|
-
if (e.type === "navigates" || e.type === "renders" || e.type === "imports") {
|
|
4557
|
+
if (e.type === "navigates" || e.type === "renders" || e.type === "imports" || e.type === "wraps") {
|
|
4525
4558
|
navTargets.add(e.target);
|
|
4526
4559
|
}
|
|
4527
4560
|
}
|
|
@@ -4531,13 +4564,15 @@ function checkDeadScreens(rootDir) {
|
|
|
4531
4564
|
for (const page of pages) {
|
|
4532
4565
|
if (page.id.endsWith("layout.tsx") && page.id.split("/").length <= 2) continue;
|
|
4533
4566
|
if (["error.tsx", "loading.tsx", "not-found.tsx", "template.tsx"].some((s) => page.id.endsWith(s))) continue;
|
|
4567
|
+
const route = page.route;
|
|
4568
|
+
if (route === "/" || route === "") continue;
|
|
4534
4569
|
if (!navTargets.has(page.id)) {
|
|
4535
4570
|
findings.push({
|
|
4536
4571
|
id: `dead:${page.id}`,
|
|
4537
4572
|
severity: "info",
|
|
4538
4573
|
category: "dead_screens",
|
|
4539
4574
|
title: page.name,
|
|
4540
|
-
detail: `Page "${page.id}" has no incoming navigation, render, or
|
|
4575
|
+
detail: `Page "${page.id}" has no incoming navigation, render, import, or layout-wrap edges.`,
|
|
4541
4576
|
file: page.id
|
|
4542
4577
|
});
|
|
4543
4578
|
}
|
package/dist/server/cli.js
CHANGED
|
@@ -7703,7 +7703,13 @@ function generate(rootDir) {
|
|
|
7703
7703
|
...authWrappers.length > 0 ? { auth: authWrappers } : {},
|
|
7704
7704
|
...dbCalls.length > 0 ? { _dbCalls: dbCalls } : {}
|
|
7705
7705
|
});
|
|
7706
|
-
if (route)
|
|
7706
|
+
if (route) {
|
|
7707
|
+
routeToNodeId.set(route, id);
|
|
7708
|
+
const trimmed = route.replace(/\/\*[^/]+\?$/, "");
|
|
7709
|
+
if (trimmed && trimmed !== route && !routeToNodeId.has(trimmed)) {
|
|
7710
|
+
routeToNodeId.set(trimmed, id);
|
|
7711
|
+
}
|
|
7712
|
+
}
|
|
7707
7713
|
}
|
|
7708
7714
|
}
|
|
7709
7715
|
const uiEdges = [];
|
|
@@ -8745,6 +8751,10 @@ function buildApiPathMap(routes) {
|
|
|
8745
8751
|
const map = /* @__PURE__ */ new Map();
|
|
8746
8752
|
for (const r of routes) {
|
|
8747
8753
|
if (!map.has(r.path)) map.set(r.path, r.nodeId);
|
|
8754
|
+
const trimmed = r.path.replace(/\/\*[^/]+\?$/, "");
|
|
8755
|
+
if (trimmed && trimmed !== r.path && !map.has(trimmed)) {
|
|
8756
|
+
map.set(trimmed, r.nodeId);
|
|
8757
|
+
}
|
|
8748
8758
|
}
|
|
8749
8759
|
return map;
|
|
8750
8760
|
}
|
|
@@ -9731,7 +9741,7 @@ var staticRefScannerParser = {
|
|
|
9731
9741
|
},
|
|
9732
9742
|
generate(rootDir, layerOutputs) {
|
|
9733
9743
|
const staticOutput = layerOutputs.get("static");
|
|
9734
|
-
if (!staticOutput || staticOutput.nodes.length === 0) {
|
|
9744
|
+
if (!staticOutput || !Array.isArray(staticOutput.nodes) || staticOutput.nodes.length === 0) {
|
|
9735
9745
|
return { cross_refs: [], flagged_edges: [], warnings: [] };
|
|
9736
9746
|
}
|
|
9737
9747
|
const valueLookup = /* @__PURE__ */ new Map();
|
|
@@ -10251,6 +10261,9 @@ var GENERIC_ROLE_NAMES_BUILTIN = /* @__PURE__ */ new Set([
|
|
|
10251
10261
|
"__tests__",
|
|
10252
10262
|
"spec",
|
|
10253
10263
|
"specs",
|
|
10264
|
+
"scripts",
|
|
10265
|
+
"bin",
|
|
10266
|
+
"tools",
|
|
10254
10267
|
// Go
|
|
10255
10268
|
"cmd",
|
|
10256
10269
|
"pkg",
|
|
@@ -10677,6 +10690,26 @@ async function generateGraph(rootDir, layer) {
|
|
|
10677
10690
|
invalidateCache(filePath);
|
|
10678
10691
|
invalidateTaggedCache(rootDir, result.layer);
|
|
10679
10692
|
}
|
|
10693
|
+
if (!layer) {
|
|
10694
|
+
const producedLayers = new Set(results.map((r) => r.layer));
|
|
10695
|
+
try {
|
|
10696
|
+
for (const f of (0, import_node_fs15.readdirSync)(dir)) {
|
|
10697
|
+
if (!f.endsWith(".json") || f === "tags.json") continue;
|
|
10698
|
+
const layerName = f.replace(/\.json$/, "");
|
|
10699
|
+
if (producedLayers.has(layerName)) continue;
|
|
10700
|
+
const orphan = (0, import_node_path16.join)(dir, f);
|
|
10701
|
+
try {
|
|
10702
|
+
(0, import_node_fs15.unlinkSync)(orphan);
|
|
10703
|
+
invalidateCache(orphan);
|
|
10704
|
+
invalidateTaggedCache(rootDir, layerName);
|
|
10705
|
+
process.stderr.write(`[launch-chart] removed orphan layer file: ${f} (no parser produced ${layerName} this run)
|
|
10706
|
+
`);
|
|
10707
|
+
} catch {
|
|
10708
|
+
}
|
|
10709
|
+
}
|
|
10710
|
+
} catch {
|
|
10711
|
+
}
|
|
10712
|
+
}
|
|
10680
10713
|
return results;
|
|
10681
10714
|
}
|
|
10682
10715
|
|
|
@@ -11099,7 +11132,7 @@ function checkDeadScreens(rootDir) {
|
|
|
11099
11132
|
const pages = ui.nodes.filter((n) => n.type === "page" || n.type === "layout");
|
|
11100
11133
|
const navTargets = /* @__PURE__ */ new Set();
|
|
11101
11134
|
for (const e of ui.edges) {
|
|
11102
|
-
if (e.type === "navigates" || e.type === "renders" || e.type === "imports") {
|
|
11135
|
+
if (e.type === "navigates" || e.type === "renders" || e.type === "imports" || e.type === "wraps") {
|
|
11103
11136
|
navTargets.add(e.target);
|
|
11104
11137
|
}
|
|
11105
11138
|
}
|
|
@@ -11109,13 +11142,15 @@ function checkDeadScreens(rootDir) {
|
|
|
11109
11142
|
for (const page of pages) {
|
|
11110
11143
|
if (page.id.endsWith("layout.tsx") && page.id.split("/").length <= 2) continue;
|
|
11111
11144
|
if (["error.tsx", "loading.tsx", "not-found.tsx", "template.tsx"].some((s) => page.id.endsWith(s))) continue;
|
|
11145
|
+
const route = page.route;
|
|
11146
|
+
if (route === "/" || route === "") continue;
|
|
11112
11147
|
if (!navTargets.has(page.id)) {
|
|
11113
11148
|
findings.push({
|
|
11114
11149
|
id: `dead:${page.id}`,
|
|
11115
11150
|
severity: "info",
|
|
11116
11151
|
category: "dead_screens",
|
|
11117
11152
|
title: page.name,
|
|
11118
|
-
detail: `Page "${page.id}" has no incoming navigation, render, or
|
|
11153
|
+
detail: `Page "${page.id}" has no incoming navigation, render, import, or layout-wrap edges.`,
|
|
11119
11154
|
file: page.id
|
|
11120
11155
|
});
|
|
11121
11156
|
}
|
|
@@ -1414,7 +1414,13 @@ function generate(rootDir) {
|
|
|
1414
1414
|
...authWrappers.length > 0 ? { auth: authWrappers } : {},
|
|
1415
1415
|
...dbCalls.length > 0 ? { _dbCalls: dbCalls } : {}
|
|
1416
1416
|
});
|
|
1417
|
-
if (route)
|
|
1417
|
+
if (route) {
|
|
1418
|
+
routeToNodeId.set(route, id);
|
|
1419
|
+
const trimmed = route.replace(/\/\*[^/]+\?$/, "");
|
|
1420
|
+
if (trimmed && trimmed !== route && !routeToNodeId.has(trimmed)) {
|
|
1421
|
+
routeToNodeId.set(trimmed, id);
|
|
1422
|
+
}
|
|
1423
|
+
}
|
|
1418
1424
|
}
|
|
1419
1425
|
}
|
|
1420
1426
|
const uiEdges = [];
|
|
@@ -2497,6 +2503,10 @@ function buildApiPathMap(routes) {
|
|
|
2497
2503
|
const map = /* @__PURE__ */ new Map();
|
|
2498
2504
|
for (const r of routes) {
|
|
2499
2505
|
if (!map.has(r.path)) map.set(r.path, r.nodeId);
|
|
2506
|
+
const trimmed = r.path.replace(/\/\*[^/]+\?$/, "");
|
|
2507
|
+
if (trimmed && trimmed !== r.path && !map.has(trimmed)) {
|
|
2508
|
+
map.set(trimmed, r.nodeId);
|
|
2509
|
+
}
|
|
2500
2510
|
}
|
|
2501
2511
|
return map;
|
|
2502
2512
|
}
|
|
@@ -3526,7 +3536,7 @@ var init_static_ref_scanner = __esm({
|
|
|
3526
3536
|
},
|
|
3527
3537
|
generate(rootDir, layerOutputs) {
|
|
3528
3538
|
const staticOutput = layerOutputs.get("static");
|
|
3529
|
-
if (!staticOutput || staticOutput.nodes.length === 0) {
|
|
3539
|
+
if (!staticOutput || !Array.isArray(staticOutput.nodes) || staticOutput.nodes.length === 0) {
|
|
3530
3540
|
return { cross_refs: [], flagged_edges: [], warnings: [] };
|
|
3531
3541
|
}
|
|
3532
3542
|
const valueLookup = /* @__PURE__ */ new Map();
|
|
@@ -4133,6 +4143,9 @@ var init_module_tagger = __esm({
|
|
|
4133
4143
|
"__tests__",
|
|
4134
4144
|
"spec",
|
|
4135
4145
|
"specs",
|
|
4146
|
+
"scripts",
|
|
4147
|
+
"bin",
|
|
4148
|
+
"tools",
|
|
4136
4149
|
// Go
|
|
4137
4150
|
"cmd",
|
|
4138
4151
|
"pkg",
|
|
@@ -4522,6 +4535,26 @@ async function generateGraph(rootDir, layer) {
|
|
|
4522
4535
|
invalidateCache(filePath);
|
|
4523
4536
|
invalidateTaggedCache(rootDir, result.layer);
|
|
4524
4537
|
}
|
|
4538
|
+
if (!layer) {
|
|
4539
|
+
const producedLayers = new Set(results.map((r) => r.layer));
|
|
4540
|
+
try {
|
|
4541
|
+
for (const f of (0, import_node_fs16.readdirSync)(dir)) {
|
|
4542
|
+
if (!f.endsWith(".json") || f === "tags.json") continue;
|
|
4543
|
+
const layerName = f.replace(/\.json$/, "");
|
|
4544
|
+
if (producedLayers.has(layerName)) continue;
|
|
4545
|
+
const orphan = (0, import_node_path17.join)(dir, f);
|
|
4546
|
+
try {
|
|
4547
|
+
(0, import_node_fs16.unlinkSync)(orphan);
|
|
4548
|
+
invalidateCache(orphan);
|
|
4549
|
+
invalidateTaggedCache(rootDir, layerName);
|
|
4550
|
+
process.stderr.write(`[launch-chart] removed orphan layer file: ${f} (no parser produced ${layerName} this run)
|
|
4551
|
+
`);
|
|
4552
|
+
} catch {
|
|
4553
|
+
}
|
|
4554
|
+
}
|
|
4555
|
+
} catch {
|
|
4556
|
+
}
|
|
4557
|
+
}
|
|
4525
4558
|
return results;
|
|
4526
4559
|
}
|
|
4527
4560
|
var import_node_fs16, import_node_path17, GRAPHS_DIR2, graphCache, taggedCache;
|
|
@@ -4643,7 +4676,7 @@ function checkDeadScreens(rootDir) {
|
|
|
4643
4676
|
const pages = ui.nodes.filter((n) => n.type === "page" || n.type === "layout");
|
|
4644
4677
|
const navTargets = /* @__PURE__ */ new Set();
|
|
4645
4678
|
for (const e of ui.edges) {
|
|
4646
|
-
if (e.type === "navigates" || e.type === "renders" || e.type === "imports") {
|
|
4679
|
+
if (e.type === "navigates" || e.type === "renders" || e.type === "imports" || e.type === "wraps") {
|
|
4647
4680
|
navTargets.add(e.target);
|
|
4648
4681
|
}
|
|
4649
4682
|
}
|
|
@@ -4653,13 +4686,15 @@ function checkDeadScreens(rootDir) {
|
|
|
4653
4686
|
for (const page of pages) {
|
|
4654
4687
|
if (page.id.endsWith("layout.tsx") && page.id.split("/").length <= 2) continue;
|
|
4655
4688
|
if (["error.tsx", "loading.tsx", "not-found.tsx", "template.tsx"].some((s) => page.id.endsWith(s))) continue;
|
|
4689
|
+
const route = page.route;
|
|
4690
|
+
if (route === "/" || route === "") continue;
|
|
4656
4691
|
if (!navTargets.has(page.id)) {
|
|
4657
4692
|
findings.push({
|
|
4658
4693
|
id: `dead:${page.id}`,
|
|
4659
4694
|
severity: "info",
|
|
4660
4695
|
category: "dead_screens",
|
|
4661
4696
|
title: page.name,
|
|
4662
|
-
detail: `Page "${page.id}" has no incoming navigation, render, or
|
|
4697
|
+
detail: `Page "${page.id}" has no incoming navigation, render, import, or layout-wrap edges.`,
|
|
4663
4698
|
file: page.id
|
|
4664
4699
|
});
|
|
4665
4700
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@launchsecure/launch-kit",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.24",
|
|
4
4
|
"description": "LaunchSecure toolkit — launch-pod (pipeline), launch-chart (project graph MCP), launch-deck (visual playground MCP).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "LaunchSecure - AutomateWithUs",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{aq as o,ar as n}from"./index-hiIpM7EP.js";const t=(r,a)=>o.lang.round(n.parse(r)[a]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-7qRCCAgK.js";import{_ as i}from"./index-hiIpM7EP.js";import"./chunk-FMBD7UC4-D5KSGATB.js";import"./chunk-YZCP3GAM-S2-nGw3D.js";import"./chunk-55IACEB6-DfHG-iqb.js";import"./chunk-EDXVE4YY-DrR52j3B.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-7qRCCAgK.js";import{_ as i}from"./index-hiIpM7EP.js";import"./chunk-FMBD7UC4-D5KSGATB.js";import"./chunk-YZCP3GAM-S2-nGw3D.js";import"./chunk-55IACEB6-DfHG-iqb.js";import"./chunk-EDXVE4YY-DrR52j3B.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as r}from"./graph-CORzYQdB.js";var e=4;function a(o){return r(o,e)}export{a as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as t,b as r,a,S as s}from"./chunk-OYMX7WX6-M7hsLRNU.js";import{_ as i}from"./index-hiIpM7EP.js";import"./chunk-55IACEB6-DfHG-iqb.js";import"./chunk-EDXVE4YY-DrR52j3B.js";var l={parser:a,get db(){return new s(2)},renderer:r,styles:t,init:i(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")};export{l as diagram};
|