@omfalos/mokosh 0.1.3 → 0.1.5
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/README.md +62 -3
- package/dist/cli.js +66 -26
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +67 -27
- package/dist/cli.mjs.map +1 -1
- package/dist/index.d.mts +124 -3
- package/dist/index.d.ts +124 -3
- package/dist/index.js +16 -16
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +17 -17
- package/dist/index.mjs.map +1 -1
- package/dist/mcp.js +17 -17
- package/dist/mcp.js.map +1 -1
- package/dist/mcp.mjs +17 -17
- package/dist/mcp.mjs.map +1 -1
- package/package.json +4 -2
- package/templates/config/mokosh.config.js +18 -0
- package/templates/skill/SKILL.md +122 -0
- package/templates/skill/mokosh.md +117 -0
package/dist/cli.mjs
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var
|
|
3
|
-
`)}}});var ur=l(()=>{"use strict";fr()});import mr from"fs";import Mo from"path";function st(t,e){let r=t.replace(/^\.\//,"");if(e.nodes.has(r))return r;let s=r.replace(/^dist\//,"src/").replace(/\.(js|mjs|cjs)$/,".ts");return e.nodes.has(s)?s:null}function gr(t,e){if(typeof t=="string")return st(t,e);if(t&&typeof t=="object"){let r=t;for(let s of["import","require","default"]){let n=gr(r[s],e);if(n)return n}}return null}function Do(t){if(!t)return"unknown";let e=t.trimStart();return e.startsWith("interface ")?"interface":e.startsWith("class ")?"class":e.startsWith("enum ")?"enum":e.startsWith("type ")?"type":e.startsWith("namespace ")?"namespace":e.startsWith("const ")||e.startsWith("let ")||e.startsWith("var ")||e.startsWith("readonly ")?"const":e.startsWith("(")||e.startsWith("async ")||e.startsWith("function ")||e.includes("=>")?"function":"unknown"}function Ro(t,e){let r=new Set,s=new Set,n=[...e];for(;n.length;){let o=n.shift();if(s.has(o))continue;s.add(o);let i=t.nodes.get(o);if(i){for(let a of i.exports)r.add(a.name);for(let a of i.imports){if(a.type!=="re-export"||a.isExternal||!a.toPath)continue;if(!a.symbols?.length||a.symbols.includes("*")){let p=t.nodes.get(a.toPath);if(p)for(let u of p.exports)r.add(u.name);n.push(a.toPath)}else for(let p of a.symbols)r.add(p)}}}return r}function nt(t,e){let r=[],s=Mo.join(e,"package.json");if(mr.existsSync(s))try{let n=JSON.parse(mr.readFileSync(s,"utf8"));if(n.exports&&typeof n.exports=="object"&&!Array.isArray(n.exports))for(let o of Object.values(n.exports)){let i=gr(o,t);i&&!r.includes(i)&&r.push(i)}else if(typeof n.exports=="string"){let o=st(n.exports,t);o&&r.push(o)}if(r.length===0)for(let o of[n.main,n.module].filter(Boolean)){let i=st(o,t);i&&!r.includes(i)&&r.push(i)}}catch{}if(r.length===0){for(let n of["src/index.ts","src/index.js","index.ts","index.js"])if(t.nodes.has(n)){r.push(n);break}}return r}function Ao(t,e){let r=new Set(e);for(let s of e)t.traverse(s,n=>(r.add(n.path),!0),{direction:"outgoing"});return r}function Lo(t,e,r){let s=new Map;for(let n of e){if(r.includes(n))continue;let o=t.nodes.get(n);if(!o)continue;let i=o.category==="barrel";for(let a of o.exports){let c=s.get(a.name),p=!!(a.signature||a.doc);(!c||p&&!i)&&s.set(a.name,{file:n,symbol:a})}}return s}function Go(t,e,r,s){let n=[];for(let o of t){let i=e.get(o),a=s.flatMap(m=>r.nodes.get(m)?.exports??[]).find(m=>m.name===o),c=i?.symbol??a,p=i?.file??s.find(m=>r.nodes.get(m)?.exports.some(h=>h.name===o))??s[0],u={name:o,definedIn:p,kind:Do(c?.signature)};c?.doc&&(u.doc=c.doc),c?.signature&&(u.signature=c.signature),n.push(u)}return n.sort((o,i)=>o.name.localeCompare(i.name)),n}function Oo(t,e,r){let s=c=>t.nodes.get(c)?.category==="test",n=[...e].filter(c=>!r.includes(c)&&!s(c)),o=[...t.nodes.keys()].filter(c=>!e.has(c)),i=o.filter(c=>!s(c)),a=o.filter(c=>s(c));return{internalFiles:n,unreachableFromEntry:i,testFiles:a}}function ot(t,e){if(e.length===0)throw new Error("buildApiSurface requires at least one entry point");for(let p of e)if(!t.nodes.has(p))throw new Error(`Entry point not found in graph: ${p}`);let r=Ao(t,e),s=Lo(t,r,e),n=Ro(t,e),o=Go(n,s,t,e),{internalFiles:i,unreachableFromEntry:a,testFiles:c}=Oo(t,r,e);return{entryPoints:e,publicExports:o,internalFiles:i,unreachableFromEntry:a,testFiles:c}}var it=l(()=>{"use strict"});function at(t,e){let r=null,s=[];for(let o of t.nodes.values()){o.exports.some(i=>i.name===e)&&(r=o.path);for(let i of o.callEdges??[])i.to===e&&s.push({file:o.path,callerFunction:i.from})}let n=[];if(r){let o=t.nodes.get(r);for(let i of o?.callEdges??[])i.from===e&&n.push({file:i.toFile,calleeFunction:i.to})}return{functionName:e,definedIn:r,callers:s,callees:n}}var ct=l(()=>{"use strict"});import fp from"fs";import mp from"path";var pt=l(()=>{"use strict"});import Se from"path";function jo(t){let e=new Map;for(let[r,s]of t){let n=s.imports.filter(o=>o.toPath&&!o.isExternal).length;n>0&&e.set(r,n)}return e}function _o(t,e,r){let s=new Map;for(let[n,o]of e){if(o<r)continue;let i=t.get(n);if(!i||i.category==="test"||i.category==="barrel")continue;let a=Se.extname(n),c=Se.basename(n,a),p=c==="index"?Se.basename(Se.dirname(n)):c;s.set(n,{path:n,outDegree:o,tag:`feature:${p}`})}return s}function A(t,e){let r=e?.minOutDegree??5;return _o(t,jo(t),r)}var be=l(()=>{"use strict"});function zo(t,e){let r=new Map;for(let s of e.values()){let n=new Set;t.traverse(s.path,o=>(o.path!==s.path&&n.add(o.path),!0),{direction:"outgoing"}),r.set(s.path,n)}return r}function $o(t,e,r,s){let n=new Map;for(let[o]of t){if(e.has(o))continue;let i=null;for(let a of e.values())r.get(a.path)?.has(o)&&(!i||s(a,i)<0)&&(i=a);i&&n.set(o,i.path)}return n}function Uo(t,e){let r=new Map;for(let s of t.values()){let n=s.tag.replace("feature:",""),o=[];for(let[i,a]of e)a===s.path&&o.push(i);r.set(n,{hub:s.path,outDegree:s.outDegree,files:o})}return r}function Bo(t,e,r){let s=[];for(let n of t.keys())!e.has(n)&&!r.has(n)&&s.push(n);return s}function Z(t,e){let r=e?.detectFn??A,s=e?.hubComparator??Wo,n=r(t.nodes,e),o=zo(t,n),i=$o(t.nodes,n,o,s);return{features:Uo(n,i),unassigned:Bo(t.nodes,n,i)}}var Wo,ve=l(()=>{"use strict";be();Wo=(t,e)=>t.outDegree-e.outDegree});var Y,dr=l(()=>{"use strict";Y=class{constructor(e){this.nodes=e}nodes;findUnusedFiles(e){let r=new Set(this.nodes.keys());return e.filter(s=>!r.has(s))}findHighExportUsage(e){let r=[];for(let s of this.nodes.values()){if(s.maxExportUsage===void 0||s.maxExportUsage<e)continue;let n=s.imports.reduce((o,i)=>(i.exportUsageRatio??0)>(o?.exportUsageRatio??0)?i:o,null);r.push({path:s.path,maxExportUsage:s.maxExportUsage,tightestDep:n?.toPath??""})}return r.sort((s,n)=>n.maxExportUsage-s.maxExportUsage)}findCycles(){let e=[],r=new Set,s=new Set,n=[],o=i=>{r.add(i),s.add(i),n.push(i);let a=this.nodes.get(i);if(a){for(let c of a.imports)if(!(!c.toPath||c.isExternal))if(s.has(c.toPath)){let p=n.indexOf(c.toPath);e.push([...n.slice(p),c.toPath])}else r.has(c.toPath)||o(c.toPath)}s.delete(i),n.pop()};for(let i of this.nodes.keys())r.has(i)||o(i);return e}}});var F,ee=l(()=>{"use strict";dr();F=class t{constructor(e){this.nodes=e}nodes;_incomingEdgesCache=null;_callIncomingCache=null;serialize(){return{nodes:Array.from(this.nodes.values())}}static deserialize(e){let r=new Map;for(let s of e.nodes)r.set(s.path,s);return new t(r)}getIncomingEdgesMap(){if(this._incomingEdgesCache)return this._incomingEdgesCache;let e=new Map;for(let r of this.nodes.values())for(let s of r.imports)if(s.toPath){let n=e.get(s.toPath)||[];n.push(r.path),e.set(s.toPath,n)}return this._incomingEdgesCache=e,e}dfs(e,r,s,n){let o=new Set,i=s.maxDepth??1/0,a=(c,p,u)=>{if(p>i||o.has(c))return;let m=this.nodes.get(c);if(m&&(o.add(c),r(m,p,u)!==!1))for(let h of n(c))a(h,p+1,c)};a(e,0,null)}traverse(e,r,s={}){let n=s.direction??"outgoing",o=n==="incoming"?this.getIncomingEdgesMap():null;this.dfs(e,r,s,i=>n==="outgoing"?this.nodes.get(i)?.imports.map(a=>a.toPath).filter(Boolean)??[]:o?.get(i)??[])}getCallIncomingCache(){if(this._callIncomingCache)return this._callIncomingCache;let e=new Map;for(let r of this.nodes.values())for(let s of r.callEdges??[]){let n=e.get(s.toFile)??[];n.push(r.path),e.set(s.toFile,n)}return this._callIncomingCache=e,e}traverseCalls(e,r,s={}){let n=s.direction??"outgoing",o=n==="incoming"?this.getCallIncomingCache():null;this.dfs(e,r,s,i=>n==="outgoing"?this.nodes.get(i)?.callEdges?.map(a=>a.toFile)??[]:o?.get(i)??[])}getCallers(e){let r=[];return this.traverseCalls(e,s=>(s.path!==e&&r.push(s.path),!0),{direction:"incoming",maxDepth:1}),r}getCallEdgesFor(e){return this.nodes.get(e)?.callEdges??[]}getNeighbors(e){let r=this.nodes.get(e);return r?r.imports.map(s=>this.nodes.get(s.toPath)).filter(s=>s!==void 0):[]}findUnusedFiles(e){return new Y(this.nodes).findUnusedFiles(e)}findCycles(){return new Y(this.nodes).findCycles()}}});function hr(t){if(t.category==="test")return"test";if(t.category==="config")return"config";if(t.category==="type-only")return"types";let e=t.path;return d(e,"component")||d(e,"components")?"component":d(e,"controller")||d(e,"controllers")?"controller":d(e,"middleware")?"middleware":d(e,"router")||d(e,"routes")||d(e,"route")?"router":d(e,"store")||d(e,"stores")?"store":d(e,"service")||d(e,"services")?"service":d(e,"handler")||d(e,"handlers")?"handler":d(e,"adapter")||d(e,"adapters")?"adapter":d(e,"plugin")||d(e,"plugins")?"plugin":d(e,"api")?"api":d(e,"cli")||d(e,"commands")||te(e)==="cli"?"cli":d(e,"util")||d(e,"utils")||d(e,"helper")||d(e,"helpers")?"util":d(e,"model")||d(e,"models")||te(e)==="model"?"model":d(e,"parser")||d(e,"parsers")||te(e)==="parser"?"parser":te(e)==="builder"?"builder":te(e)==="resolver"?"resolver":"other"}function d(t,e){return t.includes(`/${e}/`)||t.includes(`/${e}.`)}function te(t){let e=t.slice(t.lastIndexOf("/")+1);return e.slice(0,e.lastIndexOf("."))||e}var yr=l(()=>{"use strict"});function lt(t,e){let r=Z(t,e),s=new Map;for(let[o,i]of r.features){for(let a of i.files)s.set(a,o);s.set(i.hub,o)}let n=new Map;for(let o of t.nodes.values()){let i=s.get(o.path);n.set(o.path,{path:o.path,role:hr(o),...o.description?{description:o.description}:{},exports:o.exports.map(a=>a.name),...i?{featureHub:i}:{}})}return n}var ft=l(()=>{"use strict";ve();yr()});var re,ut=l(()=>{"use strict";re=class{affectedSymbols=new Map;constructor(e,r){this.affectedSymbols.set(e,new Set(["default",...r]))}updateAffectedSymbols(e,r){let s=this.affectedSymbols.get(r)||new Set,n=e.imports.find(c=>c.toPath===r);if(!n)return!1;let o=n.symbols||["*"],i=new Set;for(let c of o)(c==="*"||s.has("*")||s.has(c))&&i.add("*");if(i.size===0)return!1;let a=this.affectedSymbols.get(e.path)||new Set;for(let c of i)a.add(c);return this.affectedSymbols.set(e.path,a),!0}}});function Jo(t){return t?t.startsWith("interface ")?"interface":t.startsWith("class ")?"class":t.startsWith("enum ")?"enum":"type":"type"}function Ko(t,e){if(e==="type-only")return!0;let r=t.signature??"";return r.startsWith("interface ")||r.startsWith("class ")||r.startsWith("enum ")}function mt(t){let e=new Map;for(let s of t.nodes.values())if(!(s.type!=="typescript"&&s.type!=="javascript"))for(let n of s.exports){if(!Ko(n,s.category))continue;let o=`${s.path}::${n.name}`;e.set(o,{name:n.name,file:s.path,kind:Jo(n.signature),...n.doc?{doc:n.doc}:{}})}let r=[];for(let s of t.nodes.values())if(!(s.type!=="typescript"&&s.type!=="javascript")){for(let n of s.imports)if(!(!n.toPath||n.isExternal||!n.symbols?.length))for(let o of n.symbols)e.has(`${n.toPath}::${o}`)&&r.push({fromFile:s.path,toType:o,toFile:n.toPath})}return{types:e,edges:r}}function gt(t,e){let r=null;for(let o of t.types.values())if(o.name===e){r=o;break}if(!r)return{type:null,usedByFiles:[],uses:[]};let s=new Set,n=new Map;for(let o of t.edges)if(o.toType===e&&o.toFile===r.file&&s.add(o.fromFile),o.fromFile===r.file){let i=t.types.get(`${o.toFile}::${o.toType}`);i&&n.set(`${i.file}::${i.name}`,i)}return{type:r,usedByFiles:Array.from(s),uses:Array.from(n.values())}}var dt=l(()=>{"use strict"});import xr from"fs";import Ip from"path";function Sr(t){try{return xr.statSync(t,{throwIfNoEntry:!1})?.isDirectory()===!0}catch{return!1}}function Ce(t){try{return xr.statSync(t,{throwIfNoEntry:!1})?.isFile()===!0}catch{return!1}}var Ee=l(()=>{"use strict"});import se from"fs";import E from"path";function ht(t,e){let r=E.join(e,"package.json");if(!se.existsSync(r))return null;let s={};try{s=JSON.parse(se.readFileSync(r,"utf-8"))}catch{return null}let n=s.name;return n?{name:n,root:e,relativeRoot:E.relative(t,e),entryPoints:Ho(e,s)}:null}function Ho(t,e){let r=[];if(e.exports){let n=e.exports;if(typeof n=="string")r.push(E.join(t,n));else if(typeof n=="object"&&n!==null){let o=n["."];if(typeof o=="string")r.push(E.join(t,o));else if(typeof o=="object"&&o!==null){let i=o.import??o.require??o.default;typeof i=="string"&&r.push(E.join(t,i))}}}e.main&&r.push(E.join(t,e.main));for(let n of["src/index.ts","src/index.tsx","index.ts","index.tsx","index.js"])r.push(E.join(t,n));let s=r.filter(Ce);return s.length>0?s.slice(0,1):r.slice(0,1)}function j(t,e){let r=[],s=new Set;for(let n of e){let o=n.replace(/\/$/,"").replace(/^\.\//,"");qo(t,o,s,r)}return r}function qo(t,e,r,s){if(!e.includes("*")){Vo(t,e,r,s);return}let n=e.split("/");n.includes("**")?Qo(t,n,r,s):Xo(t,n,r,s)}function Vo(t,e,r,s){let n=E.join(t,e);if(r.has(n)||!Sr(n))return;r.add(n);let o=ht(t,n);o&&s.push(o)}function Qo(t,e,r,s){let n=E.join(t,e[0]==="**"?"":e[0]??"");br(t,n,r,s)}function Xo(t,e,r,s){let n=e.findIndex(a=>a.includes("*")),o=E.join(t,...e.slice(0,n)),i;try{i=se.readdirSync(o,{withFileTypes:!0})}catch{return}for(let a of i){if(!a.isDirectory())continue;let c=E.join(o,a.name);if(r.has(c))continue;r.add(c);let p=ht(t,c);p&&s.push(p)}}function br(t,e,r,s){let n;try{n=se.readdirSync(e,{withFileTypes:!0})}catch{return}for(let o of n){if(!o.isDirectory()||o.name==="node_modules"||o.name.startsWith("."))continue;let i=E.join(e,o.name);if(se.existsSync(E.join(i,"package.json"))&&!r.has(i)){r.add(i);let a=ht(t,i);a&&s.push(a)}else br(t,i,r,s)}}var ke=l(()=>{"use strict";Ee();Ee()});import yt from"fs";import vr from"path";var Cr,Er=l(()=>{"use strict";ke();Cr={type:"npm",detect(t){let e=vr.join(t,"package.json");if(!yt.existsSync(e))return null;let r;try{r=JSON.parse(yt.readFileSync(e,"utf-8")).workspaces}catch{return null}if(!r||yt.existsSync(vr.join(t,"yarn.lock")))return null;let s=Array.isArray(r)?r:r.packages??[];return s.length===0?null:j(t,s)}}});import _ from"fs";import S from"path";function Fr(t,e,r,s){if(s>4)return[];let n;try{n=_.readdirSync(e,{withFileTypes:!0})}catch{return[]}let o=[];for(let i of n){if(!i.isDirectory())continue;let a=i.name;if(a.startsWith(".")||a==="node_modules"||a==="dist"||a===".nx")continue;let c=S.join(e,a);_.existsSync(S.join(c,"project.json"))&&!r.has(c)?(r.add(c),o.push(c)):o.push(...Fr(t,c,r,s+1))}return o}function Zo(t,e,r){let s={};try{s=JSON.parse(_.readFileSync(r,"utf-8"))}catch{return null}let n=s.name,o,i,a=S.join(e,"package.json");if(_.existsSync(a))try{let c=JSON.parse(_.readFileSync(a,"utf-8"));n=c.name??n,o=c.main,i=c.exports}catch{}return n?{name:n,root:e,relativeRoot:S.relative(t,e),entryPoints:Yo(e,s,o,i)}:null}function Yo(t,e,r,s){let n=[],o=e.targets?.build?.options?.main??e.targets?.build?.options?.entryFile;if(o){let a=S.resolve(t,"../..");n.push(S.resolve(a,o)),n.push(S.resolve(t,o))}if(s){let a=s;if(typeof a=="string")n.push(S.join(t,a));else if(typeof a=="object"&&a!==null){let c=a["."];typeof c=="string"&&n.push(S.join(t,c))}}if(r&&n.push(S.join(t,r)),e.sourceRoot){let a=S.resolve(t,"../.."),c=S.resolve(a,e.sourceRoot);n.push(S.join(c,"index.ts"),S.join(c,"index.tsx"))}for(let a of["src/index.ts","src/index.tsx","index.ts","index.tsx"])n.push(S.join(t,a));let i=n.filter(Ce);return i.length>0?i.slice(0,1):n.slice(0,1)}var kr,wr=l(()=>{"use strict";Ee();kr={type:"nx",detect(t){return _.existsSync(S.join(t,"nx.json"))?Fr(t,t,new Set,0).map(r=>Zo(t,r,S.join(r,"project.json"))).filter(r=>r!==null):null}}});import Tr from"fs";import ei from"path";import ti from"js-yaml";var Pr,Nr=l(()=>{"use strict";ke();Pr={type:"pnpm",detect(t){let e=ei.join(t,"pnpm-workspace.yaml");if(!Tr.existsSync(e))return null;let r=[];try{r=ti.load(Tr.readFileSync(e,"utf-8"))?.packages??[]}catch{return null}return j(t,r)}}});import ri from"fs";import si from"path";var Ir,Mr=l(()=>{"use strict";Ir={type:"turborepo",detect(t){return ri.existsSync(si.join(t,"turbo.json"))?[]:null}}});import xt from"fs";import Dr from"path";var Rr,Ar=l(()=>{"use strict";ke();Rr={type:"yarn",detect(t){if(!xt.existsSync(Dr.join(t,"yarn.lock")))return null;let e=Dr.join(t,"package.json");if(!xt.existsSync(e))return null;let r;try{r=JSON.parse(xt.readFileSync(e,"utf-8")).workspaces}catch{return null}if(!r)return null;let s=Array.isArray(r)?r:r.packages??[];return s.length===0?null:j(t,s)}}});function I(t){ni.push(t)}var ni,Fe=l(()=>{"use strict";ni=[]});import al from"path";var St=l(()=>{"use strict";Er();wr();Nr();Mr();Ar();Fe();Fe();I(Ir);I(kr);I(Pr);I(Rr);I(Cr)});var bt=l(()=>{"use strict";ee()});function W(t,e){Lr.set(t,e)}function Gr(t){return Lr.get(t)}var Lr,ne=l(()=>{"use strict";Lr=new Map});function Or(t,e){return e.startsWith("!")?t!==e.slice(1):t===e}function oi(t,e){return e.startsWith("!")?!t.includes(e.slice(1)):t.includes(e)}var ii,ai,ci,pi,li,fi,ui,mi,gi,di,hi,yi,xi,Si,bi,vi,Ci,jr,_r=l(()=>{"use strict";ii=(t,e)=>!e.category||Or(t.category,e.category),ai=(t,e)=>!e.type||Or(t.type,e.type),ci=(t,e)=>!e.path||oi(t.path,e.path),pi=(t,e)=>e.isExternal===void 0?!0:t.imports.some(s=>s.isExternal)===e.isExternal,li=(t,e)=>{if(!e.tags||e.tags.length===0)return!0;let r=e.tags.filter(n=>!n.startsWith("!")),s=e.tags.filter(n=>n.startsWith("!")).map(n=>n.slice(1));return!(r.length>0&&!r.some(n=>t.tags.some(o=>o.name===n))||s.some(n=>t.tags.some(o=>o.name===n)))},fi=(t,e)=>!e.allTags?.length||e.allTags.every(r=>t.tags.some(s=>s.name===r)),ui=(t,e)=>!e.importsFile||t.imports.some(r=>r.toPath?.includes(e.importsFile)),mi=(t,e,r)=>e.importedBy===void 0?!0:(r?.get(t.path)??[]).some(n=>n.includes(e.importedBy)),gi=(t,e)=>e.minImports===void 0||t.imports.length>=e.minImports,di=(t,e)=>e.maxImports===void 0||t.imports.length<=e.maxImports,hi=(t,e)=>e.minSize===void 0||t.size>=e.minSize,yi=(t,e)=>e.maxSize===void 0||t.size<=e.maxSize,xi=(t,e)=>e.hasDocstring===void 0||!!t.description===e.hasDocstring,Si=(t,e)=>e.minCoverage===void 0||(t.coveragePct??101)>=e.minCoverage,bi=(t,e)=>e.maxCoverage===void 0||(t.coveragePct??0)<=e.maxCoverage,vi=(t,e)=>e.minExportUsage===void 0||(t.avgExportUsage??-1)>=e.minExportUsage,Ci=(t,e)=>e.maxExportUsage===void 0||(t.avgExportUsage??0)<=e.maxExportUsage,jr=[ii,ai,ci,pi,li,fi,ui,mi,gi,di,hi,yi,xi,Si,bi,vi,Ci]});function Wr(t,e,r){return jr.every(s=>s(t,e,r))}function we(t,e){let r=new Map;if(e.importedBy!==void 0){for(let i of t.nodes)for(let a of i.imports)if(a.toPath){let c=r.get(a.toPath)??[];c.push(i.path),r.set(a.toPath,c)}}let s=t.nodes.filter(i=>Wr(i,e,r)),n=new Set(s.map(i=>i.path)),o=s.map(i=>({...i,imports:i.imports.filter(a=>!a.toPath||n.has(a.toPath))}));return e.sort&&o.sort((i,a)=>e.sort==="size"?a.size-i.size:e.sort==="imports"?a.imports.length-i.imports.length:e.sort==="commitCount90d"?(a.commitCount90d??0)-(i.commitCount90d??0):e.sort==="exportUsage"?(a.avgExportUsage??0)-(i.avgExportUsage??0):0),e.limit!==void 0&&o.splice(e.limit),{nodes:o,cycles:t.cycles?.filter(i=>i.every(a=>n.has(a)))??void 0}}var zr=l(()=>{"use strict";_r()});function Te(t){let e={},r=t.split(",");for(let s of r){let n=s.indexOf(":");if(n===-1)continue;let o=s.slice(0,n).trim().toLowerCase(),i=s.slice(n+1).trim();if(!(!o||!i))switch(o){case"category":e.category=i;break;case"type":e.type=i;break;case"tag":case"tags":i.includes("+")?e.allTags=[...e.allTags??[],...i.split("+")]:e.tags=[...e.tags??[],i];break;case"path":e.path=i;break;case"external":e.isExternal=i.toLowerCase()==="true";break;case"importsfile":e.importsFile=i;break;case"importedby":e.importedBy=i;break;case"minimports":e.minImports=parseInt(i,10);break;case"maximports":e.maxImports=parseInt(i,10);break;case"minsize":e.minSize=parseInt(i,10);break;case"maxsize":e.maxSize=parseInt(i,10);break;case"sort":e.sort=i;break;case"limit":e.limit=parseInt(i,10);break;case"hasdocstring":e.hasDocstring=i.toLowerCase()!=="false";break;case"mincoverage":e.minCoverage=parseInt(i,10);break;case"maxcoverage":e.maxCoverage=parseInt(i,10);break;case"minexportusage":e.minExportUsage=parseFloat(i);break;case"maxexportusage":e.maxExportUsage=parseFloat(i);break}}return e}var $r=l(()=>{"use strict"});var Ur=l(()=>{"use strict";zr();$r()});import b from"typescript";function z(t){let e=[];for(let r of t.statements){if(!b.isExpressionStatement(r))continue;let s=r.expression;if(!b.isCallExpression(s))continue;let n=s.expression;b.isIdentifier(n)&&Br.has(n.text)&&e.push(s),b.isPropertyAccessExpression(n)&&b.isIdentifier(n.expression)&&Br.has(n.expression.text)&&e.push(s)}return e}function $(t,e,r){for(let s of t.arguments){if(!b.isObjectLiteralExpression(s))continue;let n=s.properties.find(o=>b.isPropertyAssignment(o)&&b.isIdentifier(o.name)&&o.name.text===e);if(!(!n||!b.isArrayLiteralExpression(n.initializer)))return n.initializer.elements.filter(b.isStringLiteral).map(o=>o.text)}return null}function U(t,e,r,s){if(t.arguments.length===0)return null;for(let o=1;o<t.arguments.length;o++){let i=t.arguments[o];if(!b.isObjectLiteralExpression(i))continue;let a=i.properties.find(p=>b.isPropertyAssignment(p)&&b.isIdentifier(p.name)&&p.name.text===e);if(a)return{start:a.initializer.getStart(s),end:a.initializer.getEnd(),text:r};let c=i.getEnd()-1;return{start:c,end:c,text:`${i.properties.length>0?", ":""}${e}: ${r}`}}let n=t.arguments[t.arguments.length-1];return{start:n.getStart(s),end:n.getStart(s),text:`{ ${e}: ${r} }, `}}function B(t,e,r){let s=t.arguments;for(let n=1;n<s.length;n++){let o=s[n];if(!b.isObjectLiteralExpression(o))continue;let i=o.properties.findIndex(c=>b.isPropertyAssignment(c)&&b.isIdentifier(c.name)&&c.name.text===e);if(i<0)continue;if(o.properties.length===1)return{start:s[n-1].getEnd(),end:o.getEnd(),text:""};let a=o.properties[i];return i===o.properties.length-1?{start:o.properties[i-1].getEnd(),end:a.getEnd(),text:""}:{start:a.getStart(r),end:o.properties[i+1].getStart(r),text:""}}return null}function J(t,e){let r=[...e].sort((n,o)=>o.start-n.start),s=t;for(let n of r)s=s.slice(0,n.start)+n.text+s.slice(n.end);return s}function K(t){return`[${t.map(e=>JSON.stringify(e)).join(", ")}]`}var Br,P,H=l(()=>{"use strict";Br=new Set(["describe","test","it"]);P=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"])});import Jr from"path";import Kr from"typescript";function Ei(t){return K(t.map(e=>`@${e}`))}function ki(t){return t.map(e=>e.startsWith("@")?e.slice(1):e)}var Pe,Hr=l(()=>{"use strict";H();Pe=class{name="cypress";canHandle(e){return P.has(Jr.extname(e).toLowerCase())}apply(e,r,s){let n=Kr.createSourceFile(Jr.basename(e),r,Kr.ScriptTarget.Latest,!0),o=z(n);if(o.length===0)return r;let i=$(o[0],"tags",n),a=[...s].sort();if(i!==null&&JSON.stringify(ki(i).sort())===JSON.stringify(a))return r;let c=o.flatMap(p=>{let u=s.length===0?B(p,"tags",n):U(p,"tags",Ei(a),n);return u?[u]:[]});return c.length>0?J(r,c):r}}});import Fi from"path";function wi(t){return["# <mokosh-tags>",...t.map(e=>`@${e}`),"# </mokosh-tags>"].join(`
|
|
2
|
+
var nt=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});var u=(r,e)=>()=>(r&&(e=r(r=0)),e);var zi=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);import $i from"path";import{fileURLToPath as Ui}from"url";var Bi,Ji,f,c=u(()=>{"use strict";Bi=()=>Ui(import.meta.url),Ji=()=>$i.dirname(Bi()),f=Ji()});function Ce(r){$r.push(r)}function Ur(r){return[...Ki,...$r].some(e=>typeof e=="string"?r.includes(e):e instanceof RegExp?e.test(r):e(r))}function ke(r){Br.push(r)}function se(){return[...Hi,...Br]}function Ee(r){Jr.push(r)}function ot(){return[...qi,...Jr]}function it(r){Kr=r}function at(){return Kr}var Ki,$r,Hi,Br,qi,Jr,Kr,$=u(()=>{"use strict";c();Ki=[".config.","biome.json","tsconfig.json","package.json",".prettierrc",".eslintrc"],$r=[];Hi=[".test.",".spec.","-test.","-spec."],Br=[];qi=["jest","vitest","playwright","cypress","@testing-library/"],Jr=[];Kr=.8});import ct from"fs";import Hr from"path";function U(r,{allowJs:e=!0,isExplicitPath:t=!1}={}){if(t){let s=Hr.resolve(r);return ct.existsSync(s)?s.endsWith(".json")?qr(s):e?Vr(s):{}:{}}for(let s of Vi){let n=Hr.resolve(r,s);if(ct.existsSync(n)){if(s.endsWith(".json"))return qr(n);if(e)return Vr(n)}}return{}}function qr(r){return JSON.parse(ct.readFileSync(r,"utf-8"))}function Vr(r){let e=nt(r);return e&&typeof e=="object"&&"default"in e&&(e=e.default),typeof e=="function"?e({}):e}function pt(r){for(let e of r.configMatchers??[])Ce(e);for(let e of r.testPatterns??[])ke(e);for(let e of r.testLibraries??[])Ee(e);r.barrelThreshold!==void 0&&it(r.barrelThreshold)}var Vi,lt=u(()=>{"use strict";c();$();Vi=["mokosh.config.js","mokosh.config.cjs","mokosh.config.json"]});var ft,ut,mt=u(()=>{"use strict";c();ft=["node_modules",".git","dist","build",".next",".cache","mokosh-cache","coverage"],ut=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".css",".scss",".sass",".less",".styl",".coffee",".ls",".lua",".py",".go",".feature"]});import Tl from"fs";import Il from"path";var Qr=u(()=>{"use strict";c()});var we,Xr=u(()=>{"use strict";c();we={serialize(r){let e=["graph TD"],t=new Set;for(let s of r.nodes.values()){let n=`"${s.path}"`;for(let o of s.imports){if(!o.toPath)continue;let i=`"${o.toPath}"`,a=`${s.path} -> ${o.toPath}`;if(!t.has(a)){let p=o.isStyle?"-- styles -->":"-->";e.push(` ${n} ${p} ${i}`),t.add(a)}}}return e.join(`
|
|
3
|
+
`)}}});var Zr=u(()=>{"use strict";c();Xr()});import Yr from"fs";import Xi from"path";function gt(r,e){let t=r.replace(/^\.\//,"");if(e.nodes.has(t))return t;let s=t.replace(/^dist\//,"src/").replace(/\.(js|mjs|cjs)$/,".ts");return e.nodes.has(s)?s:null}function es(r,e){if(typeof r=="string")return gt(r,e);if(r&&typeof r=="object"){let t=r;for(let s of["import","require","default"]){let n=es(t[s],e);if(n)return n}}return null}function Zi(r){if(!r)return"unknown";let e=r.trimStart();return e.startsWith("interface ")?"interface":e.startsWith("class ")?"class":e.startsWith("enum ")?"enum":e.startsWith("type ")?"type":e.startsWith("namespace ")?"namespace":e.startsWith("const ")||e.startsWith("let ")||e.startsWith("var ")||e.startsWith("readonly ")?"const":e.startsWith("(")||e.startsWith("async ")||e.startsWith("function ")||e.includes("=>")?"function":"unknown"}function Yi(r,e){let t=new Set,s=new Set,n=[...e];for(;n.length;){let o=n.shift();if(s.has(o))continue;s.add(o);let i=r.nodes.get(o);if(i){for(let a of i.exports)t.add(a.name);for(let a of i.imports){if(a.type!=="re-export"||a.isExternal||!a.toPath)continue;if(!a.symbols?.length||a.symbols.includes("*")){let l=r.nodes.get(a.toPath);if(l)for(let d of l.exports)t.add(d.name);n.push(a.toPath)}else for(let l of a.symbols)t.add(l)}}}return t}function dt(r,e){let t=[],s=Xi.join(e,"package.json");if(Yr.existsSync(s))try{let n=JSON.parse(Yr.readFileSync(s,"utf8"));if(n.exports&&typeof n.exports=="object"&&!Array.isArray(n.exports))for(let o of Object.values(n.exports)){let i=es(o,r);i&&!t.includes(i)&&t.push(i)}else if(typeof n.exports=="string"){let o=gt(n.exports,r);o&&t.push(o)}if(t.length===0)for(let o of[n.main,n.module].filter(Boolean)){let i=gt(o,r);i&&!t.includes(i)&&t.push(i)}}catch{}if(t.length===0){for(let n of["src/index.ts","src/index.js","index.ts","index.js"])if(r.nodes.has(n)){t.push(n);break}}return t}function ea(r,e){let t=new Set(e);for(let s of e)r.traverse(s,n=>(t.add(n.path),!0),{direction:"outgoing"});return t}function ta(r,e,t){let s=new Map;for(let n of e){if(t.includes(n))continue;let o=r.nodes.get(n);if(!o)continue;let i=o.category==="barrel";for(let a of o.exports){let p=s.get(a.name),l=!!(a.signature||a.doc);(!p||l&&!i)&&s.set(a.name,{file:n,symbol:a})}}return s}function ra(r,e,t,s){let n=[];for(let o of r){let i=e.get(o),a=s.flatMap(h=>t.nodes.get(h)?.exports??[]).find(h=>h.name===o),p=i?.symbol??a,l=i?.file??s.find(h=>t.nodes.get(h)?.exports.some(x=>x.name===o))??s[0],d={name:o,definedIn:l,kind:Zi(p?.signature)};p?.doc&&(d.doc=p.doc),p?.signature&&(d.signature=p.signature),n.push(d)}return n.sort((o,i)=>o.name.localeCompare(i.name)),n}function sa(r,e,t){let s=p=>r.nodes.get(p)?.category==="test",n=[...e].filter(p=>!t.includes(p)&&!s(p)),o=[...r.nodes.keys()].filter(p=>!e.has(p)),i=o.filter(p=>!s(p)),a=o.filter(p=>s(p));return{internalFiles:n,unreachableFromEntry:i,testFiles:a}}function ht(r,e){if(e.length===0)throw new Error("buildApiSurface requires at least one entry point");for(let l of e)if(!r.nodes.has(l))throw new Error(`Entry point not found in graph: ${l}`);let t=ea(r,e),s=ta(r,t,e),n=Yi(r,e),o=ra(n,s,r,e),{internalFiles:i,unreachableFromEntry:a,testFiles:p}=sa(r,t,e);return{entryPoints:e,publicExports:o,internalFiles:i,unreachableFromEntry:a,testFiles:p}}var yt=u(()=>{"use strict";c()});function xt(r,e){let t=null,s=[];for(let o of r.nodes.values()){o.exports.some(i=>i.name===e)&&(t=o.path);for(let i of o.callEdges??[])i.to===e&&s.push({file:o.path,callerFunction:i.from})}let n=[];if(t){let o=r.nodes.get(t);for(let i of o?.callEdges??[])i.from===e&&n.push({file:i.toFile,calleeFunction:i.to})}return{functionName:e,definedIn:t,callers:s,callees:n}}var St=u(()=>{"use strict";c()});import Jl from"fs";import Hl from"path";function ts(r){let e=[...r.nodes.entries()].sort(([s],[n])=>s.localeCompare(n)).map(([s,n])=>`${s}:${n.mtime}:${n.size}`).join("|"),t=2166136261;for(let s=0;s<e.length;s++)t^=e.charCodeAt(s),t=Math.imul(t,16777619)>>>0;return t.toString(16).padStart(8,"0")}function bt(r){let e=new Map;for(let t of r.nodes.keys()){let s=[];r.traverse(t,n=>(n.path!==t&&s.push(n.path),!0),{direction:"incoming"}),e.set(t,s)}return{impact:e,graphHash:ts(r)}}function vt(r,e){return r.impact.get(e)??[]}var Ct=u(()=>{"use strict";c()});import Fe from"path";function na(r){let e=new Map;for(let[t,s]of r){let n=s.imports.filter(o=>o.toPath&&!o.isExternal).length;n>0&&e.set(t,n)}return e}function oa(r,e,t){let s=new Map;for(let[n,o]of e){if(o<t)continue;let i=r.get(n);if(!i||i.category==="test"||i.category==="barrel")continue;let a=Fe.extname(n),p=Fe.basename(n,a),l=p==="index"?Fe.basename(Fe.dirname(n)):p;s.set(n,{path:n,outDegree:o,tag:`feature:${l}`})}return s}function W(r,e){let t=e?.minOutDegree??5;return oa(r,na(r),t)}var Pe=u(()=>{"use strict";c()});function aa(r,e){let t=new Map;for(let s of e.values()){let n=new Set;r.traverse(s.path,o=>(o.path!==s.path&&n.add(o.path),!0),{direction:"outgoing"}),t.set(s.path,n)}return t}function ca(r,e,t,s){let n=new Map;for(let[o]of r){if(e.has(o))continue;let i=null;for(let a of e.values())t.get(a.path)?.has(o)&&(!i||s(a,i)<0)&&(i=a);i&&n.set(o,i.path)}return n}function pa(r,e){let t=new Map;for(let s of r.values()){let n=s.tag.replace("feature:",""),o=[];for(let[i,a]of e)a===s.path&&o.push(i);t.set(n,{hub:s.path,outDegree:s.outDegree,files:o})}return t}function la(r,e,t){let s=[];for(let n of r.keys())!e.has(n)&&!t.has(n)&&s.push(n);return s}function ne(r,e){let t=e?.detectFn??W,s=e?.hubComparator??ia,n=t(r.nodes,e),o=aa(r,n),i=ca(r.nodes,n,o,s);return{features:pa(n,i),unassigned:la(r.nodes,n,i)}}var ia,Te=u(()=>{"use strict";c();Pe();ia=(r,e)=>r.outDegree-e.outDegree});var oe,rs=u(()=>{"use strict";c();oe=class{constructor(e){this.nodes=e}nodes;findUnusedFiles(e){let t=new Set(this.nodes.keys());return e.filter(s=>!t.has(s))}findHighExportUsage(e){let t=[];for(let s of this.nodes.values()){if(s.maxExportUsage===void 0||s.maxExportUsage<e)continue;let n=s.imports.reduce((o,i)=>(i.exportUsageRatio??0)>(o?.exportUsageRatio??0)?i:o,null);t.push({path:s.path,maxExportUsage:s.maxExportUsage,tightestDep:n?.toPath??""})}return t.sort((s,n)=>n.maxExportUsage-s.maxExportUsage)}findCycles(){let e=[],t=new Set,s=new Set,n=[],o=i=>{t.add(i),s.add(i),n.push(i);let a=this.nodes.get(i);if(a){for(let p of a.imports)if(!(!p.toPath||p.isExternal))if(s.has(p.toPath)){let l=n.indexOf(p.toPath);e.push([...n.slice(l),p.toPath])}else t.has(p.toPath)||o(p.toPath)}s.delete(i),n.pop()};for(let i of this.nodes.keys())t.has(i)||o(i);return e}}});var F,ie=u(()=>{"use strict";c();rs();F=class r{constructor(e){this.nodes=e}nodes;_incomingEdgesCache=null;_callIncomingCache=null;serialize(){return{nodes:Array.from(this.nodes.values())}}static deserialize(e){let t=new Map;for(let s of e.nodes)t.set(s.path,s);return new r(t)}getIncomingEdgesMap(){if(this._incomingEdgesCache)return this._incomingEdgesCache;let e=new Map;for(let t of this.nodes.values())for(let s of t.imports)if(s.toPath){let n=e.get(s.toPath)||[];n.push(t.path),e.set(s.toPath,n)}return this._incomingEdgesCache=e,e}dfs(e,t,s,n){let o=new Set,i=s.maxDepth??1/0,a=(p,l,d)=>{if(l>i||o.has(p))return;let h=this.nodes.get(p);if(h&&(o.add(p),t(h,l,d)!==!1))for(let x of n(p))a(x,l+1,p)};a(e,0,null)}traverse(e,t,s={}){let n=s.direction??"outgoing",o=n==="incoming"?this.getIncomingEdgesMap():null;this.dfs(e,t,s,i=>n==="outgoing"?this.nodes.get(i)?.imports.map(a=>a.toPath).filter(Boolean)??[]:o?.get(i)??[])}getCallIncomingCache(){if(this._callIncomingCache)return this._callIncomingCache;let e=new Map;for(let t of this.nodes.values())for(let s of t.callEdges??[]){let n=e.get(s.toFile)??[];n.push(t.path),e.set(s.toFile,n)}return this._callIncomingCache=e,e}traverseCalls(e,t,s={}){let n=s.direction??"outgoing",o=n==="incoming"?this.getCallIncomingCache():null;this.dfs(e,t,s,i=>n==="outgoing"?this.nodes.get(i)?.callEdges?.map(a=>a.toFile)??[]:o?.get(i)??[])}getCallers(e){let t=[];return this.traverseCalls(e,s=>(s.path!==e&&t.push(s.path),!0),{direction:"incoming",maxDepth:1}),t}getCallEdgesFor(e){return this.nodes.get(e)?.callEdges??[]}getNeighbors(e){let t=this.nodes.get(e);return t?t.imports.map(s=>this.nodes.get(s.toPath)).filter(s=>s!==void 0):[]}findUnusedFiles(e){return new oe(this.nodes).findUnusedFiles(e)}findCycles(){return new oe(this.nodes).findCycles()}}});var _,Ne=u(()=>{"use strict";c();_=class{affectedSymbols=new Map;constructor(e,t){this.affectedSymbols.set(e,new Set(["default",...t]))}updateAffectedSymbols(e,t){let s=this.affectedSymbols.get(t)||new Set,n=e.imports.find(p=>p.toPath===t);if(!n)return!1;let o=n.symbols||["*"],i=new Set;for(let p of o)(p==="*"||s.has("*")||s.has(p))&&i.add("*");if(i.size===0)return!1;let a=this.affectedSymbols.get(e.path)||new Set;for(let p of i)a.add(p);return this.affectedSymbols.set(e.path,a),!0}}});function kt(r,e,t=1){let s=[];return r.traverse(e,(n,o,i)=>{if(n.path===e)return!0;let a=i?r.nodes.get(i)?.imports.find(p=>p.toPath===n.path):void 0;return s.push({path:n.path,...a?.symbols?{symbols:a.symbols}:{}}),!0},{direction:"outgoing",maxDepth:t}),s}function Et(r,e){let t=[];return r.traverse(e,s=>{if(s.path===e)return!0;let n=s.imports.find(o=>o.toPath===e);return t.push({path:s.path,...n?.symbols?{symbols:n.symbols}:{}}),!0},{direction:"incoming",maxDepth:1}),t}function wt(r,e,t={}){let{testsOnly:s=!1,changedSymbols:n}=t,o=n?new _(e,n):null,i=[];return r.traverse(e,(a,p,l)=>{if(a.path===e)return!0;if(o&&l&&!o.updateAffectedSymbols(a,l))return!1;let d=a.category==="test"||a.tags.some(h=>h.name==="test");return(!s||d)&&i.push(a.path),!0},{direction:"incoming"}),i}function Ft(r,e,t={}){let{depth:s=1,withEdgeDetail:n=!1}=t,o=[];return r.traverseCalls(e,i=>{if(i.path===e)return!0;let a={file:i.path};return n&&(a.edges=(i.callEdges??[]).filter(p=>p.toFile===e).map(p=>({from:p.from,to:p.to}))),o.push(a),!0},{direction:"incoming",maxDepth:s}),o}function Pt(r,e={}){let{metric:t="cognitiveComplexity",threshold:s=10,limit:n=20}=e;return[...r.nodes.values()].flatMap(o=>(o.functions??[]).filter(i=>i[t]>=s).map(i=>({file:o.path,name:i.name,line:i.line,complexity:i.complexity,cognitiveComplexity:i.cognitiveComplexity}))).sort((o,i)=>i[t]-o[t]).slice(0,n)}function Tt(r){return{nodes:r.nodes.map(t=>({path:t.path,type:t.type,category:t.category,exports:t.exports.map(s=>s.name),tags:t.tags.filter(s=>s.kind==="comment-marker"||s.kind==="import").map(s=>s.name),importsFiles:t.imports.filter(s=>!s.isExternal&&s.toPath).map(s=>s.toPath),...t.description!==void 0&&{description:t.description},...t.testedBy!==void 0&&{testedBy:t.testedBy},...t.coveragePct!==void 0&&{coveragePct:t.coveragePct},...t.avgExportUsage!==void 0&&{avgExportUsage:t.avgExportUsage},...t.maxExportUsage!==void 0&&{maxExportUsage:t.maxExportUsage}})),cycles:r.cycles}}function Nt(r){let e=r.getPackageDependencies(),t=Array.from(r.packages.values()).map(({graph:s,pkg:n})=>({name:n.name,relativeRoot:n.relativeRoot,nodeCount:s.nodes.size,dependsOn:e.get(n.name)??[]}));return{monorepoType:r.type,packageCount:t.length,packages:t}}function It(r){return[...r.nodes.values()].some(e=>e.coveragePct!==void 0)}var ss=u(()=>{"use strict";c();Ne()});function ns(r){if(r.category==="test")return"test";if(r.category==="config")return"config";if(r.category==="type-only")return"types";let e=r.path;return S(e,"component")||S(e,"components")?"component":S(e,"controller")||S(e,"controllers")?"controller":S(e,"middleware")?"middleware":S(e,"router")||S(e,"routes")||S(e,"route")?"router":S(e,"store")||S(e,"stores")?"store":S(e,"service")||S(e,"services")?"service":S(e,"handler")||S(e,"handlers")?"handler":S(e,"adapter")||S(e,"adapters")?"adapter":S(e,"plugin")||S(e,"plugins")?"plugin":S(e,"api")?"api":S(e,"cli")||S(e,"commands")||ae(e)==="cli"?"cli":S(e,"util")||S(e,"utils")||S(e,"helper")||S(e,"helpers")?"util":S(e,"model")||S(e,"models")||ae(e)==="model"?"model":S(e,"parser")||S(e,"parsers")||ae(e)==="parser"?"parser":ae(e)==="builder"?"builder":ae(e)==="resolver"?"resolver":"other"}function S(r,e){return r.includes(`/${e}/`)||r.includes(`/${e}.`)}function ae(r){let e=r.slice(r.lastIndexOf("/")+1);return e.slice(0,e.lastIndexOf("."))||e}var os=u(()=>{"use strict";c()});function Mt(r,e){let t=ne(r,e),s=new Map;for(let[o,i]of t.features){for(let a of i.files)s.set(a,o);s.set(i.hub,o)}let n=new Map;for(let o of r.nodes.values()){let i=s.get(o.path);n.set(o.path,{path:o.path,role:ns(o),...o.description?{description:o.description}:{},exports:o.exports.map(a=>a.name),...i?{featureHub:i}:{}})}return n}var Dt=u(()=>{"use strict";c();Te();os()});function fa(r){return r?r.startsWith("interface ")?"interface":r.startsWith("class ")?"class":r.startsWith("enum ")?"enum":"type":"type"}function ua(r,e){if(e==="type-only")return!0;let t=r.signature??"";return t.startsWith("interface ")||t.startsWith("class ")||t.startsWith("enum ")}function Rt(r){let e=new Map;for(let s of r.nodes.values())if(!(s.type!=="typescript"&&s.type!=="javascript"))for(let n of s.exports){if(!ua(n,s.category))continue;let o=`${s.path}::${n.name}`;e.set(o,{name:n.name,file:s.path,kind:fa(n.signature),...n.doc?{doc:n.doc}:{}})}let t=[];for(let s of r.nodes.values())if(!(s.type!=="typescript"&&s.type!=="javascript")){for(let n of s.imports)if(!(!n.toPath||n.isExternal||!n.symbols?.length))for(let o of n.symbols)e.has(`${n.toPath}::${o}`)&&t.push({fromFile:s.path,toType:o,toFile:n.toPath})}return{types:e,edges:t}}function At(r,e){let t=null;for(let o of r.types.values())if(o.name===e){t=o;break}if(!t)return{type:null,usedByFiles:[],uses:[]};let s=new Set,n=new Map;for(let o of r.edges)if(o.toType===e&&o.toFile===t.file&&s.add(o.fromFile),o.fromFile===t.file){let i=r.types.get(`${o.toFile}::${o.toType}`);i&&n.set(`${i.file}::${i.name}`,i)}return{type:t,usedByFiles:Array.from(s),uses:Array.from(n.values())}}var Ot=u(()=>{"use strict";c()});import is from"fs";import kf from"path";function as(r){try{return is.statSync(r,{throwIfNoEntry:!1})?.isDirectory()===!0}catch{return!1}}function Ie(r){try{return is.statSync(r,{throwIfNoEntry:!1})?.isFile()===!0}catch{return!1}}var Me=u(()=>{"use strict";c()});import ce from"fs";import P from"path";function Gt(r,e){let t=P.join(e,"package.json");if(!ce.existsSync(t))return null;let s={};try{s=JSON.parse(ce.readFileSync(t,"utf-8"))}catch{return null}let n=s.name;return n?{name:n,root:e,relativeRoot:P.relative(r,e),entryPoints:ma(e,s)}:null}function ma(r,e){let t=[];if(e.exports){let n=e.exports;if(typeof n=="string")t.push(P.join(r,n));else if(typeof n=="object"&&n!==null){let o=n["."];if(typeof o=="string")t.push(P.join(r,o));else if(typeof o=="object"&&o!==null){let i=o.import??o.require??o.default;typeof i=="string"&&t.push(P.join(r,i))}}}e.main&&t.push(P.join(r,e.main));for(let n of["src/index.ts","src/index.tsx","index.ts","index.tsx","index.js"])t.push(P.join(r,n));let s=t.filter(Ie);return s.length>0?s.slice(0,1):t.slice(0,1)}function B(r,e){let t=[],s=new Set;for(let n of e){let o=n.replace(/\/$/,"").replace(/^\.\//,"");ga(r,o,s,t)}return t}function ga(r,e,t,s){if(!e.includes("*")){da(r,e,t,s);return}let n=e.split("/");n.includes("**")?ha(r,n,t,s):ya(r,n,t,s)}function da(r,e,t,s){let n=P.join(r,e);if(t.has(n)||!as(n))return;t.add(n);let o=Gt(r,n);o&&s.push(o)}function ha(r,e,t,s){let n=P.join(r,e[0]==="**"?"":e[0]??"");cs(r,n,t,s)}function ya(r,e,t,s){let n=e.findIndex(a=>a.includes("*")),o=P.join(r,...e.slice(0,n)),i;try{i=ce.readdirSync(o,{withFileTypes:!0})}catch{return}for(let a of i){if(!a.isDirectory())continue;let p=P.join(o,a.name);if(t.has(p))continue;t.add(p);let l=Gt(r,p);l&&s.push(l)}}function cs(r,e,t,s){let n;try{n=ce.readdirSync(e,{withFileTypes:!0})}catch{return}for(let o of n){if(!o.isDirectory()||o.name==="node_modules"||o.name.startsWith("."))continue;let i=P.join(e,o.name);if(ce.existsSync(P.join(i,"package.json"))&&!t.has(i)){t.add(i);let a=Gt(r,i);a&&s.push(a)}else cs(r,i,t,s)}}var De=u(()=>{"use strict";c();Me();Me()});import Lt from"fs";import ps from"path";var ls,fs=u(()=>{"use strict";c();De();ls={type:"npm",detect(r){let e=ps.join(r,"package.json");if(!Lt.existsSync(e))return null;let t;try{t=JSON.parse(Lt.readFileSync(e,"utf-8")).workspaces}catch{return null}if(!t||Lt.existsSync(ps.join(r,"yarn.lock")))return null;let s=Array.isArray(t)?t:t.packages??[];return s.length===0?null:B(r,s)}}});import J from"fs";import k from"path";function ms(r,e,t,s){if(s>4)return[];let n;try{n=J.readdirSync(e,{withFileTypes:!0})}catch{return[]}let o=[];for(let i of n){if(!i.isDirectory())continue;let a=i.name;if(a.startsWith(".")||a==="node_modules"||a==="dist"||a===".nx")continue;let p=k.join(e,a);J.existsSync(k.join(p,"project.json"))&&!t.has(p)?(t.add(p),o.push(p)):o.push(...ms(r,p,t,s+1))}return o}function xa(r,e,t){let s={};try{s=JSON.parse(J.readFileSync(t,"utf-8"))}catch{return null}let n=s.name,o,i,a=k.join(e,"package.json");if(J.existsSync(a))try{let p=JSON.parse(J.readFileSync(a,"utf-8"));n=p.name??n,o=p.main,i=p.exports}catch{}return n?{name:n,root:e,relativeRoot:k.relative(r,e),entryPoints:Sa(e,s,o,i)}:null}function Sa(r,e,t,s){let n=[],o=e.targets?.build?.options?.main??e.targets?.build?.options?.entryFile;if(o){let a=k.resolve(r,"../..");n.push(k.resolve(a,o)),n.push(k.resolve(r,o))}if(s){let a=s;if(typeof a=="string")n.push(k.join(r,a));else if(typeof a=="object"&&a!==null){let p=a["."];typeof p=="string"&&n.push(k.join(r,p))}}if(t&&n.push(k.join(r,t)),e.sourceRoot){let a=k.resolve(r,"../.."),p=k.resolve(a,e.sourceRoot);n.push(k.join(p,"index.ts"),k.join(p,"index.tsx"))}for(let a of["src/index.ts","src/index.tsx","index.ts","index.tsx"])n.push(k.join(r,a));let i=n.filter(Ie);return i.length>0?i.slice(0,1):n.slice(0,1)}var us,gs=u(()=>{"use strict";c();Me();us={type:"nx",detect(r){return J.existsSync(k.join(r,"nx.json"))?ms(r,r,new Set,0).map(t=>xa(r,t,k.join(t,"project.json"))).filter(t=>t!==null):null}}});import ds from"fs";import ba from"path";import va from"js-yaml";var hs,ys=u(()=>{"use strict";c();De();hs={type:"pnpm",detect(r){let e=ba.join(r,"pnpm-workspace.yaml");if(!ds.existsSync(e))return null;let t=[];try{t=va.load(ds.readFileSync(e,"utf-8"))?.packages??[]}catch{return null}return B(r,t)}}});import Ca from"fs";import ka from"path";var xs,Ss=u(()=>{"use strict";c();xs={type:"turborepo",detect(r){return Ca.existsSync(ka.join(r,"turbo.json"))?[]:null}}});import jt from"fs";import bs from"path";var vs,Cs=u(()=>{"use strict";c();De();vs={type:"yarn",detect(r){if(!jt.existsSync(bs.join(r,"yarn.lock")))return null;let e=bs.join(r,"package.json");if(!jt.existsSync(e))return null;let t;try{t=JSON.parse(jt.readFileSync(e,"utf-8")).workspaces}catch{return null}if(!t)return null;let s=Array.isArray(t)?t:t.packages??[];return s.length===0?null:B(r,s)}}});function O(r){ks.push(r)}function Es(){return ks}var ks,Re=u(()=>{"use strict";c();ks=[]});import Ea from"path";function Wt(r,e=Es()){let t=Ea.resolve(r),s=new Map,n=[];for(let i of e){let a=i.detect(t);if(a!==null){n.push(i.type);for(let p of a)s.has(p.name)||s.set(p.name,p)}}if(n.length===0)return{root:t,type:"none",types:[],packages:[],packageMap:new Map};let o=Array.from(s.values());return{root:t,type:n[0],types:n,packages:o,packageMap:new Map(o.map(i=>[i.name,i]))}}var _t=u(()=>{"use strict";c();fs();gs();ys();Ss();Cs();Re();Re();O(xs);O(us);O(hs);O(vs);O(ls)});var pe,zt=u(()=>{"use strict";c();ie();pe=class r{constructor(e,t){this.monorepoRoot=e;this.type=t}monorepoRoot;type;packages=new Map;addPackage(e,t){this.packages.set(e.name,{graph:t,pkg:e})}getPackageForFile(e){for(let{pkg:t}of this.packages.values())if(e===t.relativeRoot||e.startsWith(`${t.relativeRoot}/`))return t}getPackageDependencies(){let e=new Map;for(let{graph:t,pkg:s}of this.packages.values()){let n=new Set;for(let o of t.nodes.values())for(let i of o.imports)i.isWorkspace&&i.workspacePackage&&n.add(i.workspacePackage);e.set(s.name,[...n])}return e}getAffectedAcrossPackages(e){let t=this.getPackageForFile(e);if(!t)return[];let s=this.packages.get(t.name);if(!s)return[];let n=[];s.graph.traverse(e,o=>(o.path!==e&&n.push({file:o.path,package:t.name}),!0),{direction:"incoming"});for(let{graph:o,pkg:i}of this.packages.values())if(i.name!==t.name)for(let a of o.nodes.values())a.imports.some(l=>l.isWorkspace&&l.workspacePackage===t.name)&&n.push({file:a.path,package:i.name});return n}serialize(){return{monorepoRoot:this.monorepoRoot,type:this.type,packages:Array.from(this.packages.values()).map(({graph:e,pkg:t})=>({pkg:{name:t.name,relativeRoot:t.relativeRoot,entryPoints:t.entryPoints},nodes:Array.from(e.nodes.values())}))}}static deserialize(e){let t=new r(e.monorepoRoot,e.type);for(let{pkg:s,nodes:n}of e.packages){let o=new Map(n.map(a=>[a.path,a])),i=new F(o);t.packages.set(s.name,{graph:i,pkg:{...s,root:""}})}return t}}});function K(r,e){ws.set(r,e)}function Fs(r){return ws.get(r)}var ws,le=u(()=>{"use strict";c();ws=new Map});function Ps(r,e){return e.startsWith("!")?r!==e.slice(1):r===e}function wa(r,e){return e.startsWith("!")?!r.includes(e.slice(1)):r.includes(e)}var Fa,Pa,Ta,Na,Ia,Ma,Da,Ra,Aa,Oa,Ga,La,ja,Wa,_a,za,$a,Ts,Ns=u(()=>{"use strict";c();Fa=(r,e)=>!e.category||Ps(r.category,e.category),Pa=(r,e)=>!e.type||Ps(r.type,e.type),Ta=(r,e)=>!e.path||wa(r.path,e.path),Na=(r,e)=>e.isExternal===void 0?!0:r.imports.some(s=>s.isExternal)===e.isExternal,Ia=(r,e)=>{if(!e.tags||e.tags.length===0)return!0;let t=e.tags.filter(n=>!n.startsWith("!")),s=e.tags.filter(n=>n.startsWith("!")).map(n=>n.slice(1));return!(t.length>0&&!t.some(n=>r.tags.some(o=>o.name===n))||s.some(n=>r.tags.some(o=>o.name===n)))},Ma=(r,e)=>!e.allTags?.length||e.allTags.every(t=>r.tags.some(s=>s.name===t)),Da=(r,e)=>!e.importsFile||r.imports.some(t=>t.toPath?.includes(e.importsFile)),Ra=(r,e,t)=>e.importedBy===void 0?!0:(t?.get(r.path)??[]).some(n=>n.includes(e.importedBy)),Aa=(r,e)=>e.minImports===void 0||r.imports.length>=e.minImports,Oa=(r,e)=>e.maxImports===void 0||r.imports.length<=e.maxImports,Ga=(r,e)=>e.minSize===void 0||r.size>=e.minSize,La=(r,e)=>e.maxSize===void 0||r.size<=e.maxSize,ja=(r,e)=>e.hasDocstring===void 0||!!r.description===e.hasDocstring,Wa=(r,e)=>e.minCoverage===void 0||(r.coveragePct??101)>=e.minCoverage,_a=(r,e)=>e.maxCoverage===void 0||(r.coveragePct??0)<=e.maxCoverage,za=(r,e)=>e.minExportUsage===void 0||(r.avgExportUsage??-1)>=e.minExportUsage,$a=(r,e)=>e.maxExportUsage===void 0||(r.avgExportUsage??0)<=e.maxExportUsage,Ts=[Fa,Pa,Ta,Na,Ia,Ma,Da,Ra,Aa,Oa,Ga,La,ja,Wa,_a,za,$a]});function Is(r,e,t){return Ts.every(s=>s(r,e,t))}function Ae(r,e){let t=new Map;if(e.importedBy!==void 0){for(let i of r.nodes)for(let a of i.imports)if(a.toPath){let p=t.get(a.toPath)??[];p.push(i.path),t.set(a.toPath,p)}}let s=r.nodes.filter(i=>Is(i,e,t)),n=new Set(s.map(i=>i.path)),o=s.map(i=>({...i,imports:i.imports.filter(a=>!a.toPath||n.has(a.toPath))}));return e.sort&&o.sort((i,a)=>e.sort==="size"?a.size-i.size:e.sort==="imports"?a.imports.length-i.imports.length:e.sort==="commitCount90d"?(a.commitCount90d??0)-(i.commitCount90d??0):e.sort==="exportUsage"?(a.avgExportUsage??0)-(i.avgExportUsage??0):0),e.limit!==void 0&&o.splice(e.limit),{nodes:o,cycles:r.cycles?.filter(i=>i.every(a=>n.has(a)))??void 0}}var Ms=u(()=>{"use strict";c();Ns()});function Oe(r){let e={},t=r.split(",");for(let s of t){let n=s.indexOf(":");if(n===-1)continue;let o=s.slice(0,n).trim().toLowerCase(),i=s.slice(n+1).trim();if(!(!o||!i))switch(o){case"category":e.category=i;break;case"type":e.type=i;break;case"tag":case"tags":i.includes("+")?e.allTags=[...e.allTags??[],...i.split("+")]:e.tags=[...e.tags??[],i];break;case"path":e.path=i;break;case"external":e.isExternal=i.toLowerCase()==="true";break;case"importsfile":e.importsFile=i;break;case"importedby":e.importedBy=i;break;case"minimports":e.minImports=parseInt(i,10);break;case"maximports":e.maxImports=parseInt(i,10);break;case"minsize":e.minSize=parseInt(i,10);break;case"maxsize":e.maxSize=parseInt(i,10);break;case"sort":e.sort=i;break;case"limit":e.limit=parseInt(i,10);break;case"hasdocstring":e.hasDocstring=i.toLowerCase()!=="false";break;case"mincoverage":e.minCoverage=parseInt(i,10);break;case"maxcoverage":e.maxCoverage=parseInt(i,10);break;case"minexportusage":e.minExportUsage=parseFloat(i);break;case"maxexportusage":e.maxExportUsage=parseFloat(i);break}}return e}var Ds=u(()=>{"use strict";c()});var Rs=u(()=>{"use strict";c();Ms();Ds()});import E from"typescript";function H(r){let e=[];for(let t of r.statements){if(!E.isExpressionStatement(t))continue;let s=t.expression;if(!E.isCallExpression(s))continue;let n=s.expression;E.isIdentifier(n)&&As.has(n.text)&&e.push(s),E.isPropertyAccessExpression(n)&&E.isIdentifier(n.expression)&&As.has(n.expression.text)&&e.push(s)}return e}function q(r,e,t){for(let s of r.arguments){if(!E.isObjectLiteralExpression(s))continue;let n=s.properties.find(o=>E.isPropertyAssignment(o)&&E.isIdentifier(o.name)&&o.name.text===e);if(!(!n||!E.isArrayLiteralExpression(n.initializer)))return n.initializer.elements.filter(E.isStringLiteral).map(o=>o.text)}return null}function V(r,e,t,s){if(r.arguments.length===0)return null;for(let o=1;o<r.arguments.length;o++){let i=r.arguments[o];if(!E.isObjectLiteralExpression(i))continue;let a=i.properties.find(l=>E.isPropertyAssignment(l)&&E.isIdentifier(l.name)&&l.name.text===e);if(a)return{start:a.initializer.getStart(s),end:a.initializer.getEnd(),text:t};let p=i.getEnd()-1;return{start:p,end:p,text:`${i.properties.length>0?", ":""}${e}: ${t}`}}let n=r.arguments[r.arguments.length-1];return{start:n.getStart(s),end:n.getStart(s),text:`{ ${e}: ${t} }, `}}function Q(r,e,t){let s=r.arguments;for(let n=1;n<s.length;n++){let o=s[n];if(!E.isObjectLiteralExpression(o))continue;let i=o.properties.findIndex(p=>E.isPropertyAssignment(p)&&E.isIdentifier(p.name)&&p.name.text===e);if(i<0)continue;if(o.properties.length===1)return{start:s[n-1].getEnd(),end:o.getEnd(),text:""};let a=o.properties[i];return i===o.properties.length-1?{start:o.properties[i-1].getEnd(),end:a.getEnd(),text:""}:{start:a.getStart(t),end:o.properties[i+1].getStart(t),text:""}}return null}function X(r,e){let t=[...e].sort((n,o)=>o.start-n.start),s=r;for(let n of t)s=s.slice(0,n.start)+n.text+s.slice(n.end);return s}function Z(r){return`[${r.map(e=>JSON.stringify(e)).join(", ")}]`}var As,D,Y=u(()=>{"use strict";c();As=new Set(["describe","test","it"]);D=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"])});import Os from"path";import Gs from"typescript";function Ua(r){return Z(r.map(e=>`@${e}`))}function Ba(r){return r.map(e=>e.startsWith("@")?e.slice(1):e)}var Ge,Ls=u(()=>{"use strict";c();Y();Ge=class{name="cypress";canHandle(e){return D.has(Os.extname(e).toLowerCase())}apply(e,t,s){let n=Gs.createSourceFile(Os.basename(e),t,Gs.ScriptTarget.Latest,!0),o=H(n);if(o.length===0)return t;let i=q(o[0],"tags",n),a=[...s].sort();if(i!==null&&JSON.stringify(Ba(i).sort())===JSON.stringify(a))return t;let p=o.flatMap(l=>{let d=s.length===0?Q(l,"tags",n):V(l,"tags",Ua(a),n);return d?[d]:[]});return p.length>0?X(t,p):t}}});import Ja from"path";function Ka(r){return["# <mokosh-tags>",...r.map(e=>`@${e}`),"# </mokosh-tags>"].join(`
|
|
4
4
|
`)+`
|
|
5
5
|
|
|
6
|
-
`}function
|
|
7
|
-
`}function
|
|
8
|
-
`+
|
|
6
|
+
`}function Ha(r){let e=new Set;Ut.lastIndex=0;let t=Ut.exec(r);for(;t!==null;)t[1]&&e.add(t[1]),t=Ut.exec(r);return e}var $t,Ut,Le,js=u(()=>{"use strict";c();$t=/# <mokosh-tags>[\s\S]*?# <\/mokosh-tags>\n*/,Ut=/^@([a-zA-Z0-9_-]+)/gm;Le=class{name="gherkin";canHandle(e){return Ja.extname(e).toLowerCase()===".feature"}apply(e,t,s){let n=t.replace($t,""),o=Ha(n),i=s.filter(p=>!o.has(p)),a=i.length>0?Ka(i):"";return $t.test(t)?t.replace($t,a):a?t.replace(/^(Feature:)/m,`${a}$1`):t}}});function Ws(r,e){let t=r.replace(/\\/g,"/"),s=e.replace(/\\/g,"/"),n="";for(let o=0;o<t.length;o++){let i=t[o];i==="*"?t[o+1]==="*"?(n+=".*",o++):n+="[^/]*":i==="?"?n+="[^/]":i!==void 0&&(n+=i.replace(/[.+^${}()|[\]\\]/g,"\\$&"))}return new RegExp(`^${n}$`).test(s)}var _s=u(()=>{"use strict";c()});import qa from"path";function Qa(r){return`//go:build ${r.map(t=>`mokosh_${t}`).join(" || ")}
|
|
7
|
+
`}function Xa(r){let e=Bt.exec(r);if(!e)return null;let t=e[0],s=/mokosh_([a-zA-Z0-9_-]+)/g,n=[],o=s.exec(t);for(;o!==null;)o[1]&&n.push(o[1]),o=s.exec(t);return n}var Bt,Va,je,zs=u(()=>{"use strict";c();Bt=/^\/\/go:build mokosh_[^\n]+\n/m,Va=/^package\s+\S+/m;je=class{name="go";canHandle(e){return qa.basename(e).endsWith("_test.go")}apply(e,t,s){let n=Xa(t),o=[...s].sort();if(n!==null&&JSON.stringify([...n].sort())===JSON.stringify(o))return t;if(s.length===0)return t.replace(Bt,"");let i=Qa(o);if(n!==null)return t.replace(Bt,i);let a=Va.exec(t);if(!a)return t;let p=a.index;return t.slice(0,p)+i+`
|
|
8
|
+
`+t.slice(p)}}});import Za from"path";function ec(r){return["/**",...r.map(e=>` * @group ${e}`)," */"].join(`
|
|
9
9
|
`)+`
|
|
10
10
|
|
|
11
|
-
`}function
|
|
12
|
-
`),
|
|
11
|
+
`}function tc(r){let e=[];Jt.lastIndex=0;let t=Jt.exec(r);for(;t!==null;)t[1]&&e.push(t[1]),t=Jt.exec(r);return e}var Ya,Jt,We,$s=u(()=>{"use strict";c();Y();Ya=/^\/\*\*\n(?: \* @group .+\n)+ \*\/\n+/,Jt=/^ \* @group (.+)$/gm;We=class{name="jest";canHandle(e){return D.has(Za.extname(e).toLowerCase())}apply(e,t,s){let n=Ya.exec(t),o=n?tc(n[0]):null,i=[...s].sort();if(o!==null&&JSON.stringify([...o].sort())===JSON.stringify(i))return t;let a=n?t.slice(n[0].length):t;return s.length===0?a:ec(i)+a}}});import Us from"path";import Bs from"typescript";function rc(r){return Z(r.map(e=>`@${e}`))}function sc(r){return r.map(e=>e.startsWith("@")?e.slice(1):e)}var _e,Js=u(()=>{"use strict";c();Y();_e=class{name="playwright";canHandle(e){return D.has(Us.extname(e).toLowerCase())}apply(e,t,s){let n=Bs.createSourceFile(Us.basename(e),t,Bs.ScriptTarget.Latest,!0),o=H(n);if(o.length===0)return t;let i=q(o[0],"tag",n),a=[...s].sort();if(i!==null&&JSON.stringify(sc(i).sort())===JSON.stringify(a))return t;let p=o.flatMap(l=>{let d=s.length===0?Q(l,"tag",n):V(l,"tag",rc(a),n);return d?[d]:[]});return p.length>0?X(t,p):t}}});import nc from"path";function ic(r){let e=r.map(t=>`pytest.mark.${t}`).join(", ");return r.length===1?`pytestmark = pytest.mark.${r[0]}`:`pytestmark = [${e}]`}function ac(r){let e=Kt.exec(r);if(!e)return null;let t=e[0],s=[],n=/pytest\.mark\.([a-zA-Z0-9_-]+)/g,o=n.exec(t);for(;o!==null;)o[1]&&s.push(o[1]),o=n.exec(t);return s}function cc(r){let e=r.split(`
|
|
12
|
+
`),t=-1;for(let n=0;n<e.length;n++){let o=e[n].trimStart();(o.startsWith("import ")||o.startsWith("from "))&&(t=n)}if(t<0)return 0;let s=0;for(let n=0;n<=t;n++)s+=e[n].length+1;return s}var Kt,oc,ze,Ks=u(()=>{"use strict";c();Kt=/^pytestmark\s*=\s*.+$/m,oc=/^import pytest\s*$/m;ze=class{name="pytest";canHandle(e){return nc.extname(e).toLowerCase()===".py"}apply(e,t,s){let n=ac(t),o=[...s].sort();if(n!==null&&JSON.stringify([...n].sort())===JSON.stringify(o))return t;if(s.length===0)return t.replace(Kt,"").replace(/\n{3,}/g,`
|
|
13
13
|
|
|
14
|
-
`);let i=
|
|
15
|
-
`,
|
|
14
|
+
`);let i=ic(o);if(n!==null)return t.replace(Kt,i);let a=oc.test(t),p=cc(t),l=t.slice(0,p),d=t.slice(p),h=a?"":`import pytest
|
|
15
|
+
`,x=l.endsWith(`
|
|
16
16
|
|
|
17
17
|
`)?"":`
|
|
18
|
-
`;return
|
|
19
|
-
`+
|
|
20
|
-
`).filter(Boolean);return{commitCount90d:s.length,lastAuthor:s[0]}}var
|
|
21
|
-
`).map(o=>o.trim()).filter(o=>o!=="")}catch{return[]}});return Array.from(new Set(
|
|
22
|
-
`).filter(c=>c.trim().length>0&&!c.trim().startsWith("#"));if(s.length<2)continue;let n=s[0];if(!n||n.startsWith(" "))continue;let o=Zi(n);if(o.length===0)continue;let a=s.find(c=>c.trim().startsWith('version "'))?.match(/version "(.*?)"/)?.[1]??"";for(let c of o)e.dependencies[c]={version:a}}return e}function ra(t){let e=je.readFileSync(t,"utf-8"),r=JSON.parse(e),s={dependencies:{}};if(r.packages)for(let[n,o]of Object.entries(r.packages)){if(!n.startsWith("node_modules/"))continue;let i=n.replace("node_modules/","");i.includes("node_modules/")||(s.dependencies[i]={version:o.version,...o.dependencies!==void 0&&{dependencies:o.dependencies}})}else if(r.dependencies)for(let[n,o]of Object.entries(r.dependencies))s.dependencies[n]={version:o.version,...o.dependencies!==void 0&&{dependencies:o.dependencies}};return s}function sa(t){let e=je.readFileSync(t,"utf-8");if(e.includes("__metadata:")){let r=ea(e);if(r!==null)return r}return ta(e)}function na(t){let e=je.readFileSync(t,"utf-8"),r={dependencies:{}};try{let s=gs.load(e);if(s.packages)for(let[n,o]of Object.entries(s.packages)){let{name:i,version:a}=Yi(n,o.version);i&&(r.dependencies[i]={version:a,...o.dependencies!==void 0&&{dependencies:o.dependencies}})}if(s.dependencies)for(let[n,o]of Object.entries(s.dependencies)){if(r.dependencies[n])continue;let i=typeof o=="string"?o:o.version;r.dependencies[n]={version:i||""}}}catch{}return r}function hs(t){let e=[["package-lock.json",ra],["yarn.lock",sa],["pnpm-lock.yaml",na]];for(let[r,s]of e){let n=Xi.join(t,r);if(je.existsSync(n))return s(n)}return null}var ys=l(()=>{"use strict"});import xs from"path";function M(t){switch(xs.extname(t).toLowerCase()){case".js":case".jsx":case".mjs":case".cjs":return"javascript";case".ts":case".tsx":return"typescript";case".css":return"css";case".scss":case".sass":return"scss";case".less":return"less";case".styl":return"stylus";case".coffee":return"coffeescript";case".ls":return"livescript";case".lua":return"lua";case".py":return"python";case".go":return"go";case".java":case".cpp":case".cc":case".cxx":case".c":return"unknown";case".feature":return"gherkin";default:return"unknown"}}function k(t){let e=xs.extname(t).toLowerCase();return[".css",".scss",".sass",".less",".styl"].includes(e)}var D=l(()=>{"use strict"});import oa from"coffeescript";function ia(t){let e=new Set,r=/@tag\s+([a-zA-Z0-9_-]+)/g,s=r.exec(t);for(;s!==null;)s[1]&&e.add(s[1]),s=r.exec(t);return e}function aa(t,e){let r=t.toLowerCase();return r.includes(".test.")||r.includes(".spec.")||e.has("test")?"test":"logic"}function ca(t,e){let r=e.source?.value;return r?{fromPath:t,toPath:"",rawSpecifier:r,isStyle:k(r),type:"static"}:null}function pa(t,e){let r=e.variable?.base?.value==="require",s=e.args?.[0]?.base?.value;return!r||!s?null:{fromPath:t,toPath:"",rawSpecifier:s,isStyle:k(s),type:"require"}}function la(t,e,r){let s=e.constructor?.name;if(s==="ImportDeclaration"){let n=ca(t,e);n&&r.push(n)}else if(s==="Call"){let n=pa(t,e);n&&r.push(n)}}function Mt(t,e,r){if(!(!e||typeof e!="object")){la(t,e,r);for(let s in e){if(s==="locationData")continue;let n=e[s];if(!(!n||typeof n!="object"))if(Array.isArray(n))for(let o of n)Mt(t,o,r);else Mt(t,n,r)}}}function Ss(t,e){let r=ia(e),s=aa(t,r),n=[];try{Mt(t,oa.nodes(e),n)}catch{}return{imports:n,exports:[],tags:Array.from(r).map(o=>({name:o,kind:"comment-marker"})),category:s}}var bs=l(()=>{"use strict";D()});import{AstBuilder as fa,GherkinClassicTokenMatcher as ua,Parser as ma}from"@cucumber/gherkin";import{IdGenerator as ga}from"@cucumber/messages";function Dt(t,e){let r=new Set;try{let s=new fa(da),n=new ua,i=new ma(s,n).parse(e);i.feature&&(i.feature.tags.forEach(a=>{r.add(a.name.startsWith("@")?a.name.slice(1):a.name)}),i.feature.children.forEach(a=>{a.scenario&&(a.scenario.tags.forEach(c=>{r.add(c.name.startsWith("@")?c.name.slice(1):c.name)}),a.scenario.examples.forEach(c=>{c.tags.forEach(p=>{r.add(p.name.startsWith("@")?p.name.slice(1):p.name)})})),a.rule&&a.rule.children.forEach(c=>{c.scenario&&c.scenario.tags.forEach(p=>{r.add(p.name.startsWith("@")?p.name.slice(1):p.name)})})}))}catch(s){console.warn(`[GherkinParser] Failed to parse ${t}:`,s)}return{imports:[],exports:[],tags:Array.from(r).map(s=>({name:s,kind:"comment-marker"})),category:"test"}}var da,vs=l(()=>{"use strict";ne();da=ga.uuid();W("gherkin",Dt)});import ha from"path";import{parser as ya}from"@lezer/go";function Es(t,e){let r=[],s=new Map,n=new Set,o=new Set,a=ya.parse(e).cursor();do switch(a.name){case"LineComment":{let m=e.slice(a.from,a.to),h=m.match(xa);h?.[1]&&n.add(h[1]);let x=m.match(Sa);x&&Cs(x[1],o);let N=m.match(ba);N&&Cs(N[1],o);break}case"ImportSpec":{let m=a.node.getChild("String");if(m){let x=e.slice(m.from,m.to).slice(1,-1);r.push({fromPath:t,toPath:"",rawSpecifier:x,isExternal:!0,isStyle:!1,type:"static"})}break}case"FunctionDecl":case"TypeDecl":case"VarDecl":case"ConstDecl":{let m=a.node.getChild("DefName")??a.node.getChild("TypeSpec")?.getChild("DefName")??a.node.getChild("VarSpec")?.getChild("DefName")??a.node.getChild("ConstSpec")?.getChild("DefName");if(m){let h=e.slice(m.from,m.to);h!=="_"&&/^[A-Z]/.test(h)&&!s.has(h)&&s.set(h,{name:h})}break}}while(a.next());let c=r.some(m=>m.rawSpecifier==="testing"),p=ha.basename(t).endsWith("_test.go")||n.has("test")||c?"test":"logic",u=new Set([...n,...o]);return{imports:r,exports:Array.from(s.values()),tags:Array.from(u).map(m=>({name:m,kind:"comment-marker"})),category:p}}function Cs(t,e){for(let r of t.split(/[\s,&|!()]+/)){let s=r.trim();s&&s!=="ignore"&&e.add(s)}}var xa,Sa,ba,ks=l(()=>{"use strict";xa=/\/\/\s*@tag\s+([a-zA-Z0-9_-]+)/,Sa=/^\/\/go:build\s+(.+)$/,ba=/^\/\/\s*\+build\s+(.+)$/});function q(t){return t.startsWith("'")||t.startsWith('"')?t.slice(1,-1):t}var Rt=l(()=>{"use strict"});import va from"livescript";function Ca(t){let e=new Set,r=/@tag\s+([a-zA-Z0-9_-]+)/g,s=r.exec(t);for(;s!==null;)s[1]&&e.add(s[1]),s=r.exec(t);return e}function Ea(t,e){let r=t.toLowerCase();return r.includes(".test.")||r.includes(".spec.")||e.has("test")?"test":"logic"}function Fa(t,e){let r=t.constructor?.name||t.type;if(r==="Import"){let s=t.right?.value;if(typeof s=="string"){let n=q(s);return{fromPath:e,toPath:"",rawSpecifier:n,isStyle:k(n),type:"static"}}}if(r==="Chain"&&t.head?.value==="require"){let s=t.tails?.[0];if(s?.constructor?.name==="Call"||s?.type==="Call"){let n=s.args?.[0]?.value;if(typeof n=="string"){let o=q(n);return{fromPath:e,toPath:"",rawSpecifier:o,isStyle:k(o),type:"require"}}}}return null}function At(t,e){if(!t||typeof t!="object")return[];let r=[],s=Fa(t,e);s&&r.push(s);for(let n in t){if(ka.has(n))continue;let o=t[n];if(!(!o||typeof o!="object"))if(Array.isArray(o))for(let i of o)r.push(...At(i,e));else r.push(...At(o,e))}return r}function Fs(t,e){let r=Ca(e),s=Ea(t,r),n=[];try{n=At(va.ast(e),t)}catch{}return{imports:n,exports:[],tags:Array.from(r).map(o=>({name:o,kind:"comment-marker"})),category:s}}var ka,ws=l(()=>{"use strict";D();Rt();ka=new Set(["first_line","first_column","last_line","last_column","line","column"])});import wa from"luaparse";function Ta(t){let e=new Set,r=/@tag\s+([a-zA-Z0-9_-]+)/g,s=r.exec(t);for(;s!==null;)s[1]&&e.add(s[1]),s=r.exec(t);return e}function Pa(t,e){let r=t.toLowerCase();return r.includes(".test.")||r.includes(".spec.")||e.has("test")?"test":"logic"}function Na(t,e){let r=[];function s(n){if(!(!n||typeof n!="object")){if((n.type==="CallExpression"||n.type==="StringCallExpression")&&n.base?.type==="Identifier"&&n.base?.name==="require"){let o;if(n.type==="CallExpression"){let i=n.arguments?.[0];i?.type==="StringLiteral"&&(o=q(i.raw))}else if(n.type==="StringCallExpression"){let i=n.argument;i?.type==="StringLiteral"&&(o=q(i.raw))}o&&r.push({fromPath:e,toPath:"",rawSpecifier:o,isStyle:k(o),type:"require"})}for(let o in n){if(o==="loc")continue;let i=n[o];if(i&&typeof i=="object")if(Array.isArray(i))for(let a of i)s(a);else s(i)}}}return s(t),r}function Ts(t,e){let r=Ta(e),s=Pa(t,r),n=[];try{let o=wa.parse(e);n=Na(o,t)}catch{}return{imports:n,exports:[],tags:Array.from(r).map(o=>({name:o,kind:"comment-marker"})),category:s}}var Ps=l(()=>{"use strict";D();Rt()});import Ia from"path";import{parser as Ma}from"@lezer/python";function Ns(t,e){let r=[],s=[],n=new Set,o=Ia.basename(t).toLowerCase(),a=Ma.parse(e).cursor();do switch(a.name){case"Comment":{let p=e.slice(a.from,a.to).match(/#\s*@tag\s+([a-zA-Z0-9_-]+)/);p?.[1]&&n.add(p[1]);break}case"ImportStatement":{for(let p of Ra(a.node,e,t))r.push(p);break}case"FunctionDefinition":case"ClassDefinition":{let p=a.node.parent;if(p?.name==="Script"||p?.name==="DecoratedStatement"&&p.parent?.name==="Script"){let m=a.node.getChild("VariableName");m&&s.push({name:e.slice(m.from,m.to)})}break}case"AssignStatement":{if(a.node.parent?.name==="Script"){let p=a.node.firstChild;p?.name==="VariableName"&&s.push({name:e.slice(p.from,p.to)})}break}}while(a.next());let c=Oa(o,r,n);return c==="test"&&n.add("test"),{imports:r,exports:s,tags:Array.from(n).map(p=>({name:p,kind:"comment-marker"})),category:c}}function Ra(t,e,r){let s=t.firstChild;return s?s.name==="from"?Aa(t,e,r):La(t,e,r):[]}function Aa(t,e,r){let s=t.firstChild;if(!s)return[];let n=s.nextSibling;for(;n&&n.name!=="import";)n=n.nextSibling;if(!n)return[];let o=e.slice(s.to,n.from).trim(),i=Ga(n.nextSibling,e);if(!i.length)return[];let a=0;for(;a<o.length&&o[a]===".";)a++;let c=o.slice(a);if(a===0)return[oe(r,o,i,!0)];let p=a===1?"./":"../".repeat(a-1);return c?[oe(r,p+c.replace(/\./g,"/"),i,!1)]:i[0]==="*"?[oe(r,p.slice(0,-1),["*"],!1)]:i.map(u=>oe(r,p+u,[u],!1))}function La(t,e,r){let s=[],n=t.firstChild?.nextSibling??null;for(;n;){if(n.name==="VariableName"){let o=e.slice(n.from,n.to);for(;n.nextSibling?.name==="."&&n.nextSibling.nextSibling?.name==="VariableName";)n=n.nextSibling.nextSibling,o+=`.${e.slice(n.from,n.to)}`;n.nextSibling?.name==="as"&&(n=n.nextSibling.nextSibling??n.nextSibling),s.push(oe(r,o,["*"],!0))}n=n.nextSibling}return s}function Ga(t,e){let r=[],s=t;for(;s;)s.name==="*"?r.push("*"):s.name==="VariableName"&&(r.push(e.slice(s.from,s.to)),s.nextSibling?.name==="as"&&(s=s.nextSibling.nextSibling??s.nextSibling)),s=s.nextSibling;return r}function oe(t,e,r,s){return{fromPath:t,toPath:"",rawSpecifier:e,isStyle:!1,isExternal:s,type:"static",symbols:r.length>0?r:void 0}}function Oa(t,e,r){return t.startsWith("test_")||t.endsWith("_test.py")?"test":t==="conftest.py"||t==="setup.py"?"config":r.has("test")||e.some(s=>Da.has(s.rawSpecifier))?"test":"logic"}var Da,Is=l(()=>{"use strict";Da=new Set(["pytest","unittest","nose","hypothesis"])});import g from"typescript";function ja(t){let e=1;function r(s){switch(s.kind){case g.SyntaxKind.IfStatement:case g.SyntaxKind.ConditionalExpression:case g.SyntaxKind.ForStatement:case g.SyntaxKind.ForInStatement:case g.SyntaxKind.ForOfStatement:case g.SyntaxKind.WhileStatement:case g.SyntaxKind.DoStatement:case g.SyntaxKind.CatchClause:case g.SyntaxKind.CaseClause:e++;break;case g.SyntaxKind.BinaryExpression:{let n=s.operatorToken.kind;(n===g.SyntaxKind.AmpersandAmpersandToken||n===g.SyntaxKind.BarBarToken||n===g.SyntaxKind.QuestionQuestionToken)&&e++;break}}g.forEachChild(s,r)}return r(t),e}function _a(t){let e=0;function r(s,n,o){if(g.isIfStatement(s)){e+=o?1:1+n;let a=o?n:n+1;r(s.expression,a,!1),r(s.thenStatement,a,!1),s.elseStatement&&(g.isIfStatement(s.elseStatement)?r(s.elseStatement,n,!0):(e+=1,r(s.elseStatement,n+1,!1)));return}if(g.isForStatement(s)||g.isForInStatement(s)||g.isForOfStatement(s)||g.isWhileStatement(s)||g.isDoStatement(s)||g.isSwitchStatement(s)){e+=1+n,g.forEachChild(s,a=>r(a,n+1,!1));return}if(g.isCatchClause(s)){e+=1+n,g.forEachChild(s,a=>r(a,n,!1));return}if(g.isConditionalExpression(s)&&(e+=1),g.isBinaryExpression(s)){let a=s.operatorToken.kind;(a===g.SyntaxKind.AmpersandAmpersandToken||a===g.SyntaxKind.BarBarToken||a===g.SyntaxKind.QuestionQuestionToken)&&(e+=1)}if(n>0&&(g.isFunctionDeclaration(s)||g.isFunctionExpression(s)||g.isArrowFunction(s))){e+=1+n,g.forEachChild(s,a=>r(a,n+1,!1));return}g.forEachChild(s,a=>r(a,n,!1))}return r(t,0,!1),e}function Lt(t){return{complexity:ja(t),cognitiveComplexity:_a(t)}}var Ms=l(()=>{"use strict"});import y from"typescript";function Ds(t,e){Wa(t,e),$a(t,e),Ua(t,e),Ba(t,e)}function Wa(t,e){if((y.isFunctionDeclaration(t)||y.isVariableDeclaration(t))&&t.name&&y.isIdentifier(t.name)&&za(t)){let r;if(y.isFunctionDeclaration(t))r="function";else{let s=t.initializer;r=s&&(y.isArrowFunction(s)||y.isFunctionExpression(s))?"function":"variable"}e.tags.add({name:t.name.text,kind:r})}}function za(t){if(y.isFunctionDeclaration(t))return y.isSourceFile(t.parent);let e=t.parent?.parent;return!!e&&y.isSourceFile(e.parent)}function $a(t,e){if(!y.isStringLiteral(t))return;let r=t.text.match(/@[\w-]+/g);if(r)for(let s of r)e.tags.add({name:s.substring(1),kind:"comment-marker"})}function Ua(t,e){if(!y.isSourceFile(t))return;let r=/@tag\s+([a-zA-Z0-9_-]+)/g,s=t.getFullText(),n=r.exec(s);for(;n!==null;)n[1]&&e.tags.add({name:n[1],kind:"comment-marker"}),n=r.exec(s)}function Ba(t,e){if(y.isCallExpression(t)&&Ja(t.expression))for(let r of t.arguments)y.isObjectLiteralExpression(r)&&Ka(r,e)}function Ja(t){return y.isIdentifier(t)?Gt.has(t.text):!!(y.isPropertyAccessExpression(t)&&(Gt.has(t.name.text)||y.isIdentifier(t.expression)&&Gt.has(t.expression.text)))}function Ka(t,e){for(let r of t.properties){if(!y.isPropertyAssignment(r)||!y.isIdentifier(r.name)||r.name.text!=="tags"&&r.name.text!=="tag")continue;let{initializer:s}=r,n=y.isArrayLiteralExpression(s)?s.elements.filter(y.isStringLiteral):r.name.text==="tag"&&y.isStringLiteral(s)?[s]:[];for(let o of n)e.tags.add({name:o.text.replace(/^@/,""),kind:"comment-marker"})}}var Gt,Rs=l(()=>{"use strict";Gt=new Set(["test","describe","it"])});import As from"path";import f from"typescript";function Ot(t,e,r){let s=[],n=new Map,o=new Set,i=f.createSourceFile(t,e,f.ScriptTarget.Latest,!0,r==="typescript"?f.ScriptKind.TSX:f.ScriptKind.JSX),a={filePath:t,imports:s,exports:n,tags:o,rawCallEdges:[],sourceFile:i,hasUI:!1,hasTypesOnly:!0,totalStatements:0,exportStatements:0},c=Q=>{Qa(Q,a),f.forEachChild(Q,c)};c(i);let p=ac(t,a);(p==="test"||p==="barrel")&&o.add({name:p,kind:"comment-marker"}),p!=="test"&&cc(a,i);let u=i.statements[0],m=u?Gs(u):void 0,{complexity:h,cognitiveComplexity:x}=Lt(i),N=Ha(i);return{imports:s,exports:Array.from(n.values()),tags:Array.from(o),category:p,rawCallEdges:a.rawCallEdges??[],complexity:h,cognitiveComplexity:x,...N.length>0?{functions:N}:{},...m!==void 0?{description:m}:{}}}function Ha(t){let e=[],r=(n,o)=>{let{complexity:i,cognitiveComplexity:a}=Lt(o),c=t.getLineAndCharacterOfPosition(o.getStart(t)).line+1;e.push({name:n,line:c,complexity:i,cognitiveComplexity:a})},s=(n,o)=>{if(f.isFunctionDeclaration(n)&&n.name&&n.body?r(n.name.text,n):f.isVariableDeclaration(n)&&f.isIdentifier(n.name)&&n.initializer&&(f.isArrowFunction(n.initializer)||f.isFunctionExpression(n.initializer))?r(n.name.text,n.initializer):o&&f.isMethodDeclaration(n)&&f.isIdentifier(n.name)&&n.body?r(`${o}.${n.name.text}`,n):o&&f.isConstructorDeclaration(n)&&n.body?r(`${o}.constructor`,n):o&&f.isGetAccessorDeclaration(n)&&f.isIdentifier(n.name)&&n.body?r(`${o}.get ${n.name.text}`,n):o&&f.isSetAccessorDeclaration(n)&&f.isIdentifier(n.name)&&n.body&&r(`${o}.set ${n.name.text}`,n),f.isClassDeclaration(n)&&n.name){let i=n.name.text;f.forEachChild(n,a=>s(a,i));return}f.forEachChild(n,i=>s(i,o))};return s(t,void 0),e}function Ls(t,e,r,s){let n={name:t},o=Gs(r);o!==void 0&&(n.doc=o);let i=qa(e);i!==void 0&&(n.flags=i);let a=Va(e,s);return a!==void 0&&(n.signature=a),n}function Gs(t){let e=f.getJSDocCommentsAndTags(t);for(let r of e)if(f.isJSDoc(r)&&r.comment)return f.getTextOfJSDocComment(r.comment)||void 0}function qa(t){let e=new Set(["deprecated","internal","public","alpha","beta"]),r=f.getJSDocTags(t).map(s=>s.tagName.text).filter(s=>e.has(s));return r.length>0?r:void 0}function Va(t,e){let r=f.createPrinter({removeComments:!0}),s=n=>r.printNode(f.EmitHint.Unspecified,n,e);if(f.isFunctionDeclaration(t)||f.isMethodDeclaration(t)){let n=t.parameters.map(s).join(", "),o=t.type?s(t.type):"void";return`${t.typeParameters?`<${t.typeParameters.map(a=>a.name.text).join(", ")}>`:""}(${n}) => ${o}`}if(f.isVariableDeclaration(t)){if(t.type)return s(t.type);if(t.initializer&&(f.isArrowFunction(t.initializer)||f.isFunctionExpression(t.initializer))){let n=t.initializer,o=n.parameters.map(s).join(", "),i=n.type?s(n.type):"unknown";return`(${o}) => ${i}`}return}if(f.isClassDeclaration(t)&&t.name)return`class ${t.name.text}`;if(f.isInterfaceDeclaration(t))return`interface ${t.name.text}`;if(f.isTypeAliasDeclaration(t))return s(t.type);if(f.isEnumDeclaration(t))return`enum ${t.name.text}`}function Qa(t,e){Xa(t,e),Za(t,e),ec(t,e),tc(t,e),ic(t,e),Ds(t,e)}function Xa(t,e){if(!f.isSourceFile(t))return;let r=t.statements.filter(s=>!f.isEmptyStatement(s));e.totalStatements=r.length,e.exportStatements=r.filter(s=>f.isExportDeclaration(s)||f.isExportAssignment(s)||jt(s)).length}function Za(t,e){if(f.isJsxElement(t)||f.isJsxSelfClosingElement(t)||f.isJsxFragment(t)){e.hasUI=!0,e.hasTypesOnly=!1;return}if(f.isFunctionDeclaration(t)||f.isMethodDeclaration(t)||f.isArrowFunction(t)||f.isClassDeclaration(t)||f.isVariableStatement(t)||f.isEnumDeclaration(t)){e.hasTypesOnly=!1;return}f.isExportDeclaration(t)&&!Ya(t)&&(e.hasTypesOnly=!1)}function Ya(t){return t.isTypeOnly?!0:!t.exportClause||!f.isNamedExports(t.exportClause)?!1:t.exportClause.elements.every(e=>e.isTypeOnly)}function ec(t,e){if(!f.isImportDeclaration(t)||!t.moduleSpecifier||!f.isStringLiteral(t.moduleSpecifier))return;let r=[];if(t.importClause&&(t.importClause.name&&r.push("default"),t.importClause.namedBindings))if(f.isNamedImports(t.importClause.namedBindings))for(let n of t.importClause.namedBindings.elements)r.push(n.name.text);else f.isNamespaceImport(t.importClause.namedBindings)&&r.push("*");let s=r.length>0?"static":"side-effect";e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:t.moduleSpecifier.text,isStyle:k(t.moduleSpecifier.text),type:s,symbols:r.length>0?r:void 0})}function tc(t,e){f.isExportDeclaration(t)?rc(t,e):f.isExportAssignment(t)?e.exports.set("default",{name:"default"}):jt(t)&&oc(t,e)}function rc(t,e){if(t.moduleSpecifier&&f.isStringLiteral(t.moduleSpecifier))sc(t,t.moduleSpecifier.text,e);else if(t.exportClause&&f.isNamedExports(t.exportClause))for(let r of t.exportClause.elements){let s=r.name.text;e.exports.set(s,{name:s})}}function sc(t,e,r){let s=nc(t),n={fromPath:r.filePath,toPath:"",rawSpecifier:e,isStyle:k(e),type:"re-export"};s.length>0&&(n.symbols=s),r.imports.push(n)}function nc(t){return t.exportClause?f.isNamedExports(t.exportClause)?t.exportClause.elements.map(e=>e.name.text):[]:["*"]}function oc(t,e){if((f.isFunctionDeclaration(t)||f.isClassDeclaration(t)||f.isInterfaceDeclaration(t)||f.isTypeAliasDeclaration(t)||f.isEnumDeclaration(t))&&t.name){let s=t.name.text;e.exports.set(s,Ls(s,t,t,e.sourceFile));return}if(f.isVariableStatement(t)){for(let s of t.declarationList.declarations)if(f.isIdentifier(s.name)){let n=s.name.text;e.exports.set(n,Ls(n,s,t,e.sourceFile))}}}function ic(t,e){if(!f.isCallExpression(t))return;let r=t.arguments[0];!r||!f.isStringLiteral(r)||(t.expression.kind===f.SyntaxKind.ImportKeyword?e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:r.text,isStyle:k(r.text),type:"dynamic"}):f.isIdentifier(t.expression)&&t.expression.text==="require"&&e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:r.text,isStyle:k(r.text),type:"require"}))}function ac(t,e){let r=As.basename(t).toLowerCase(),s=As.extname(t).toLowerCase();return X().some(o=>r.includes(o))?"test":sr(r)?"config":e.imports.some(o=>qe().some(i=>o.rawSpecifier.includes(i)))?"test":s===".tsx"||s===".jsx"||e.hasUI?"ui":e.hasTypesOnly&&e.totalStatements>0?"type-only":e.totalStatements>0&&e.exportStatements/e.totalStatements>Qe()?"barrel":"logic"}function jt(t){return f.canHaveModifiers(t)&&f.getModifiers(t)?.some(e=>e.kind===f.SyntaxKind.ExportKeyword)===!0}function cc(t,e){let r=t.rawCallEdges??[];t.rawCallEdges=r;let s=new Map;for(let n of e.statements){if(!f.isImportDeclaration(n)||!f.isStringLiteral(n.moduleSpecifier))continue;let o=n.moduleSpecifier.text,i=n.importClause;if(i&&(i.name&&s.set(i.name.text,o),i.namedBindings&&f.isNamedImports(i.namedBindings)))for(let a of i.namedBindings.elements)s.set(a.name.text,o)}if(s.size!==0)for(let n of e.statements){let o=lc(n);if(o){let i=fc(n);i&&_e(i,o,s,r);continue}f.isClassDeclaration(n)&&n.name&&pc(n,s,r)}}function pc(t,e,r){let s=t.name.text;for(let n of t.members)f.isMethodDeclaration(n)&&n.body&&f.isIdentifier(n.name)?_e(n.body,`${s}.${n.name.text}`,e,r):f.isConstructorDeclaration(n)&&n.body&&_e(n.body,`${s}.constructor`,e,r)}function lc(t){if(jt(t)){if(f.isFunctionDeclaration(t)&&t.name)return t.name.text;if(f.isVariableStatement(t)){for(let e of t.declarationList.declarations)if(f.isIdentifier(e.name)&&e.initializer&&(f.isArrowFunction(e.initializer)||f.isFunctionExpression(e.initializer)))return e.name.text}}}function fc(t){if(f.isFunctionDeclaration(t))return t.body;if(f.isVariableStatement(t)){for(let e of t.declarationList.declarations)if(e.initializer&&(f.isArrowFunction(e.initializer)||f.isFunctionExpression(e.initializer)))return e.initializer}}function _e(t,e,r,s){if(f.isCallExpression(t)&&f.isIdentifier(t.expression)){let n=t.expression.text,o=r.get(n);o&&!s.some(i=>i.from===e&&i.to===n&&i.toSpecifier===o)&&s.push({from:e,to:n,toSpecifier:o})}f.forEachChild(t,n=>_e(n,e,r,s))}var Os=l(()=>{"use strict";G();Ms();D();Rs()});function We(t,e){if(e.length===0)return"ui";let r=!1;return t.walk(s=>{if(s.type==="rule")return r=!0,!1}),r?"ui":"barrel"}var js=l(()=>{"use strict"});import Ws from"postcss";function _s(t){return t.startsWith("~")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")||t.startsWith("data:")}function mc(t){let e=t.trim();return e.length>0&&!e.startsWith("http://")&&!e.startsWith("https://")&&!e.startsWith("//")&&!e.startsWith("data:")&&!e.startsWith("#")}function gc(t,e){let r=t.match(/^\(([^)]+)\)\s+['"]([^'"]+)['"]/);if(r){let o=r[1]?.trim()??"",i=r[2]??"";if(!i)return null;let a=zs.has(o)?"side-effect":"static";return{fromPath:e,toPath:"",rawSpecifier:i,isStyle:!0,type:a,..._s(i)?{isExternal:!0}:{}}}let s=t.match(/^url\(['"]?([^'")]+)['"]?\)/),n=s?s[1]?.trim()??"":t.match(/^['"]([^'"]+)['"]/)?.[1]??"";return n?{fromPath:e,toPath:"",rawSpecifier:n,isStyle:!0,type:"static",..._s(n)?{isExternal:!0}:{}}:null}function dc(t,e){let r=[],s=/url\(['"]?([^'")]+)['"]?\)/g,n=s.exec(t);for(;n!==null;){let o=n[1]?.trim()??"";mc(o)&&r.push({fromPath:e,toPath:"",rawSpecifier:o,isStyle:!0,type:"static"}),n=s.exec(t)}return r}function $s(t,e){let r=[];return t.walk(s=>{if(s.type==="atrule"&&s.name==="import"){let n=gc(s.params,e);n&&r.push(n)}s.type==="decl"&&r.push(...dc(s.value,e))}),r}function hc(t){return t.replace(/(?<!:)\/\/.*/g,"")}function yc(t,e){let r=[],s=/@import\s+(?:\(([^)]+)\)\s+)?['"]([^'"]+)['"]/g,n=s.exec(t);for(;n!==null;){let o=n[1]?.trim()??"",i=n[2]??"";if(i){let a=zs.has(o)?"side-effect":"static";r.push({fromPath:e,toPath:"",rawSpecifier:i,isStyle:!0,type:a})}n=s.exec(t)}return r}function Us(t,e){let r=Ws.parse(hc(t));return{imports:$s(r,e),root:r}}function Bs(t,e){try{let r=uc.parse(t);return{imports:$s(r,e),root:r}}catch{return{imports:yc(t,e),root:Ws.parse("")}}}var uc,zs,Js=l(()=>{"use strict";uc=ge("postcss-less"),zs=new Set(["reference","inline"])});import{parse as xc}from"postcss-scss";function Sc(t){return!!(t.startsWith("sass:")||t.startsWith("~")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")||!t.startsWith(".")&&!t.startsWith("/")&&!t.startsWith("_"))}function bc(t){let e=t.match(/^['"]([^'"]+)['"]/);if(!e?.[1])return{specifier:""};let r=e[1],n=t.match(/\bas\s+(\S+)/)?.[1];return n!==void 0?{specifier:r,alias:n}:{specifier:r}}function Ks(t,e){let r=xc(t),s=[];return r.walk(n=>{if(n.type!=="atrule")return;let{name:o,params:i}=n;if(o!=="import"&&o!=="use"&&o!=="forward")return;let{specifier:a,alias:c}=bc(i);if(!a)return;let p={fromPath:e,toPath:"",rawSpecifier:a,isStyle:!0,type:o==="forward"?"re-export":"static",...Sc(a)?{isExternal:!0}:{}};c&&(p.symbols=[c]),s.push(p)}),{imports:s,root:r}}var Hs=l(()=>{"use strict"});function qs(t,e){let r=[],s=/@require\s+['"]([^'"]+)['"]/g,n=s.exec(t);for(;n!==null;){let i=n[1];i&&r.push({fromPath:e,toPath:"",rawSpecifier:i,isStyle:!0,type:"require"}),n=s.exec(t)}let o=/(?<!@)(?:import|require)\s*\(?\s*['"]([^'"]+)['"]/g;for(n=o.exec(t);n!==null;){let i=n[1];i&&r.push({fromPath:e,toPath:"",rawSpecifier:i,isStyle:!0,type:"static"}),n=o.exec(t)}return r}function Vs(t,e){if(e.length===0)return"ui";try{let r=ge("stylus");return new r.Parser(t).parse().nodes.some(o=>o.constructor.name!=="Import")?"ui":"barrel"}catch{return t.replace(/^\s*@?(?:require|import)\b.*/gm,"").trim().length>0?"ui":"barrel"}}var Qs=l(()=>{"use strict"});function ie(t,e){let r=M(t);if(r==="stylus"){let o=qs(e,t);return{imports:o,exports:[],tags:[],category:Vs(e,o)}}if(r==="scss"){let{imports:o,root:i}=Ks(e,t);return{imports:o,exports:[],tags:[],category:We(i,o)}}if(r==="less"){let{imports:o,root:i}=Bs(e,t);return{imports:o,exports:[],tags:[],category:We(i,o)}}let{imports:s,root:n}=Us(e,t);return{imports:s,exports:[],tags:[],category:We(n,s)}}var Xs=l(()=>{"use strict";D();js();Js();Hs();Qs()});async function Zs(t,e){let r=M(t),s=Gr(r);return s?s(t,e):{imports:[],exports:[],tags:[],category:"other"}}var Ys=l(()=>{"use strict";D();bs();vs();ks();ws();Ps();Is();Os();ne();Xs();G();D();ne();for(let[t,e]of[["javascript",(r,s)=>Ot(r,s,"javascript")],["typescript",(r,s)=>Ot(r,s,"typescript")],["css",ie],["scss",ie],["less",ie],["stylus",ie],["coffeescript",Ss],["livescript",Fs],["lua",Ts],["python",Ns],["go",Es],["gherkin",Dt]])W(t,e)});import _t from"path";function tn(t,e){for(let r of t.values()){let s=e.get(r.path);s!==void 0&&(r.coveragePct=s)}}function rn(t,e){for(let r of t)if(!r.rawSpecifier.startsWith(".")&&!_t.isAbsolute(r.rawSpecifier)){let s=r.rawSpecifier.startsWith("@")?r.rawSpecifier.split("/").slice(0,2).join("/"):r.rawSpecifier.split("/")[0];s&&!e.some(n=>n.name===s)&&e.push({name:s,kind:"library"})}}function sn(t){for(let e of t.values())if(e.category==="test")for(let r of e.imports){if(r.isExternal||!r.toPath)continue;let s=t.get(r.toPath);s&&(s.category!=="logic"&&s.category!=="barrel"||(s.testedBy??=[],s.testedBy.includes(e.path)||s.testedBy.push(e.path)))}}function en(t){return Math.round(t*1e4)/1e4}function nn(t){for(let e of t.values()){let r=[];for(let s of e.imports){if(s.isExternal||!s.toPath)continue;let n=t.get(s.toPath);if(!n||n.exports.length===0)continue;let o;if(s.symbols===void 0){if(s.type==="side-effect")continue;o=1}else s.symbols.includes("*")?o=1:o=s.symbols.length/n.exports.length;s.exportUsageRatio=en(Math.min(1,o)),r.push(s.exportUsageRatio)}r.length>0&&(e.avgExportUsage=en(r.reduce((s,n)=>s+n,0)/r.length),e.maxExportUsage=Math.max(...r))}}function Wt(t,e,r){e&&(t.some(s=>s.name===e&&s.kind===r)||t.push({name:e,kind:r}))}function vc(t,e){let r=e.toPath,s=_t.basename(r,_t.extname(r)).replace(/\.(test|spec)$/,"");Wt(t.tags,s,"import")}function Cc(t,e){if(!(!e.symbols||e.symbols.includes("*")))for(let r of e.symbols)Wt(t.tags,r,"import")}function Ec(t,e,r){let s=r.get(e.toPath);if(!(!s||s.category==="test"))for(let n of s.tags)n.kind==="comment-marker"&&Wt(t.tags,n.name,"comment-marker")}function on(t){for(let e of t.values())if(e.category==="test")for(let r of e.imports)!r.toPath||r.isExternal||(vc(e,r),Cc(e,r),Ec(e,r,t))}var an=l(()=>{"use strict"});import ln from"fs";import V from"path";function kc(t,e){let r=t.split(`
|
|
23
|
-
`),s=null,n=new Map,o=!1;for(let i of
|
|
18
|
+
`;return l+x+h+i+`
|
|
19
|
+
`+d}}});import Hs from"path";import qs from"typescript";var pc,$e,Vs=u(()=>{"use strict";c();Y();pc=/\/\/ <mokosh-tags>[\s\S]*?\/\/ <\/mokosh-tags>\n*/,$e=class{name="vitest";canHandle(e){return D.has(Hs.extname(e).toLowerCase())}apply(e,t,s){let n=t.replace(pc,""),o=qs.createSourceFile(Hs.basename(e),n,qs.ScriptTarget.Latest,!0),i=H(o);if(i.length===0)return n;let a=q(i[0],"tags",o),p=[...s].sort();if(a!==null&&JSON.stringify([...a].sort())===JSON.stringify(p))return n;let l=i.flatMap(d=>{let h=s.length===0?Q(d,"tags",o):V(d,"tags",Z(p),o);return h?[h]:[]});return l.length>0?X(n,l):n}}});import Ht from"path";import Ue from"typescript";function fc(r){let e=Ue.createSourceFile("detect.ts",r,Ue.ScriptTarget.Latest,!0);for(let t of e.statements){if(!Ue.isImportDeclaration(t)||!Ue.isStringLiteral(t.moduleSpecifier))continue;let s=lc[t.moduleSpecifier.text];if(s)return s}return null}function Xs(r="vitest",e={},t=process.cwd()){return[new Le,new ze,new je,new qt(t,r,Object.entries(e))]}function Zs(r,e){return e.find(t=>t.canHandle(r))??null}var Qs,lc,qt,Ys=u(()=>{"use strict";c();Ls();js();_s();zs();$s();Js();Ks();Y();Vs();Qs={vitest:()=>new $e,playwright:()=>new _e,cypress:()=>new Ge,jest:()=>new We},lc={"@playwright/test":"playwright",cypress:"cypress","@jest/globals":"jest",vitest:"vitest"};qt=class{constructor(e,t,s){this.rootDir=e;this.defaultFramework=t;this.frameworkOverrides=s}rootDir;defaultFramework;frameworkOverrides;name="auto";canHandle(e){return D.has(Ht.extname(e).toLowerCase())}apply(e,t,s){let n=fc(t)??this.matchOverride(e)??this.defaultFramework;return(Qs[n]??Qs.vitest)().apply(e,t,s)}matchOverride(e){let t=Ht.relative(this.rootDir,e).split(Ht.sep).join("/");for(let[s,n]of this.frameworkOverrides)if(Ws(s,t))return n;return null}}});import en from"fs/promises";import uc from"path";async function hc(r,e,t,s){let n;try{n=await en.readFile(r,"utf8")}catch(a){return{path:r,status:"error",error:String(a)}}let o=Zs(r,s);if(!o)return{path:r,status:"unchanged"};let i=o.apply(r,n,e);return i===n?{path:r,status:"unchanged"}:(t||await en.writeFile(r,i,"utf8"),{path:r,status:"updated"})}async function Vt(r,e,t){let s=U(e),n=s.tagApplier?.framework??"vitest",o=s.tagApplier?.frameworkOverrides??{},i=Xs(n,o,e),a={updated:0,unchanged:0,errors:0,files:[]};for(let p of r.nodes.values()){if(p.category!=="test")continue;let l=new Set,d=[];for(let v of p.tags)gc.has(v.kind)&&mc.test(v.name)&&(dc.has(v.name.toLowerCase())||l.has(v.name)||(l.add(v.name),d.push(v.name)));d.sort();let h=uc.resolve(e,p.path),x=await hc(h,d,t.dryRun,i);x.path=p.path,a.files.push(x),x.status==="updated"?a.updated++:x.status==="unchanged"?a.unchanged++:a.errors++}return a}var mc,gc,dc,tn=u(()=>{"use strict";c();lt();Ys();mc=/^[a-zA-Z][a-zA-Z0-9_-]{1,}$/,gc=new Set(["import"]),dc=new Set(["common","fixture","fixtures","helper","helpers","index","main","mock","mocks","setup","shared","spec","test","tests","types","util","utils"])});var Be,Qt=u(()=>{"use strict";c();Be=class{isTestNode(e){return e.category==="test"||e.tags.some(t=>t.name==="test")}}});import{execSync as rn}from"child_process";function sn(r,e){let s=rn(`git -C "${r}" log --follow --format="%ae" --since="90 days ago" -- "${e}"`,{encoding:"utf-8",stdio:["ignore","pipe","ignore"]}).split(`
|
|
20
|
+
`).filter(Boolean);return{commitCount90d:s.length,lastAuthor:s[0]}}var Je,Xt=u(()=>{"use strict";c();Je=class{getChangedFiles(){try{let t=["git diff --name-only","git diff --cached --name-only","git ls-files --others --exclude-standard"].flatMap(s=>{try{return rn(s,{encoding:"utf-8",stdio:["ignore","pipe","ignore"]}).split(`
|
|
21
|
+
`).map(o=>o.trim()).filter(o=>o!=="")}catch{return[]}});return Array.from(new Set(t))}catch(e){return console.error("Error getting git diff:",e),[]}}}});import Ke from"fs";import yc from"path";import nn from"js-yaml";function on(r){let e=r.lastIndexOf("@");return e>0?r.substring(0,e):r}function xc(r){return r.replace(/:$/,"").split(",").map(e=>{let t=e.trim();return t.startsWith('"')&&(t=t.slice(1)),t.endsWith('"')&&(t=t.slice(0,-1)),on(t)}).filter(Boolean)}function Sc(r,e){let t=r.startsWith("/")?r.slice(1):r,s=t.lastIndexOf("@");return s>0?{name:t.substring(0,s),version:e||t.substring(s+1)}:{name:t,version:e}}function bc(r){try{let e=nn.load(r),t={dependencies:{}};for(let[s,n]of Object.entries(e))if(!(s==="__metadata"||!n?.version))for(let o of s.split(", ")){let i=on(o);i&&(t.dependencies[i]={version:n.version,...n.dependencies!==void 0&&{dependencies:n.dependencies}})}return t}catch{return null}}function vc(r){let e={dependencies:{}};for(let t of r.split(/\n\n+/)){let s=t.split(`
|
|
22
|
+
`).filter(p=>p.trim().length>0&&!p.trim().startsWith("#"));if(s.length<2)continue;let n=s[0];if(!n||n.startsWith(" "))continue;let o=xc(n);if(o.length===0)continue;let a=s.find(p=>p.trim().startsWith('version "'))?.match(/version "(.*?)"/)?.[1]??"";for(let p of o)e.dependencies[p]={version:a}}return e}function Cc(r){let e=Ke.readFileSync(r,"utf-8"),t=JSON.parse(e),s={dependencies:{}};if(t.packages)for(let[n,o]of Object.entries(t.packages)){if(!n.startsWith("node_modules/"))continue;let i=n.replace("node_modules/","");i.includes("node_modules/")||(s.dependencies[i]={version:o.version,...o.dependencies!==void 0&&{dependencies:o.dependencies}})}else if(t.dependencies)for(let[n,o]of Object.entries(t.dependencies))s.dependencies[n]={version:o.version,...o.dependencies!==void 0&&{dependencies:o.dependencies}};return s}function kc(r){let e=Ke.readFileSync(r,"utf-8");if(e.includes("__metadata:")){let t=bc(e);if(t!==null)return t}return vc(e)}function Ec(r){let e=Ke.readFileSync(r,"utf-8"),t={dependencies:{}};try{let s=nn.load(e);if(s.packages)for(let[n,o]of Object.entries(s.packages)){let{name:i,version:a}=Sc(n,o.version);i&&(t.dependencies[i]={version:a,...o.dependencies!==void 0&&{dependencies:o.dependencies}})}if(s.dependencies)for(let[n,o]of Object.entries(s.dependencies)){if(t.dependencies[n])continue;let i=typeof o=="string"?o:o.version;t.dependencies[n]={version:i||""}}}catch{}return t}function an(r){let e=[["package-lock.json",Cc],["yarn.lock",kc],["pnpm-lock.yaml",Ec]];for(let[t,s]of e){let n=yc.join(r,t);if(Ke.existsSync(n))return s(n)}return null}var cn=u(()=>{"use strict";c()});import pn from"path";function G(r){switch(pn.extname(r).toLowerCase()){case".js":case".jsx":case".mjs":case".cjs":return"javascript";case".ts":case".tsx":return"typescript";case".css":return"css";case".scss":case".sass":return"scss";case".less":return"less";case".styl":return"stylus";case".coffee":return"coffeescript";case".ls":return"livescript";case".lua":return"lua";case".py":return"python";case".go":return"go";case".java":case".cpp":case".cc":case".cxx":case".c":return"unknown";case".feature":return"gherkin";default:return"unknown"}}function T(r){let e=pn.extname(r).toLowerCase();return[".css",".scss",".sass",".less",".styl"].includes(e)}var L=u(()=>{"use strict";c()});import wc from"coffeescript";function Fc(r){let e=new Set,t=/@tag\s+([a-zA-Z0-9_-]+)/g,s=t.exec(r);for(;s!==null;)s[1]&&e.add(s[1]),s=t.exec(r);return e}function Pc(r,e){let t=r.toLowerCase();return t.includes(".test.")||t.includes(".spec.")||e.has("test")?"test":"logic"}function Tc(r,e){let t=e.source?.value;return t?{fromPath:r,toPath:"",rawSpecifier:t,isStyle:T(t),type:"static"}:null}function Nc(r,e){let t=e.variable?.base?.value==="require",s=e.args?.[0]?.base?.value;return!t||!s?null:{fromPath:r,toPath:"",rawSpecifier:s,isStyle:T(s),type:"require"}}function Ic(r,e,t){let s=e.constructor?.name;if(s==="ImportDeclaration"){let n=Tc(r,e);n&&t.push(n)}else if(s==="Call"){let n=Nc(r,e);n&&t.push(n)}}function Zt(r,e,t){if(!(!e||typeof e!="object")){Ic(r,e,t);for(let s in e){if(s==="locationData")continue;let n=e[s];if(!(!n||typeof n!="object"))if(Array.isArray(n))for(let o of n)Zt(r,o,t);else Zt(r,n,t)}}}function ln(r,e){let t=Fc(e),s=Pc(r,t),n=[];try{Zt(r,wc.nodes(e),n)}catch{}return{imports:n,exports:[],tags:Array.from(t).map(o=>({name:o,kind:"comment-marker"})),category:s}}var fn=u(()=>{"use strict";c();L()});import{AstBuilder as Mc,GherkinClassicTokenMatcher as Dc,Parser as Rc}from"@cucumber/gherkin";import{IdGenerator as Ac}from"@cucumber/messages";function Yt(r,e){let t=new Set;try{let s=new Mc(Oc),n=new Dc,i=new Rc(s,n).parse(e);i.feature&&(i.feature.tags.forEach(a=>{t.add(a.name.startsWith("@")?a.name.slice(1):a.name)}),i.feature.children.forEach(a=>{a.scenario&&(a.scenario.tags.forEach(p=>{t.add(p.name.startsWith("@")?p.name.slice(1):p.name)}),a.scenario.examples.forEach(p=>{p.tags.forEach(l=>{t.add(l.name.startsWith("@")?l.name.slice(1):l.name)})})),a.rule&&a.rule.children.forEach(p=>{p.scenario&&p.scenario.tags.forEach(l=>{t.add(l.name.startsWith("@")?l.name.slice(1):l.name)})})}))}catch(s){console.warn(`[GherkinParser] Failed to parse ${r}:`,s)}return{imports:[],exports:[],tags:Array.from(t).map(s=>({name:s,kind:"comment-marker"})),category:"test"}}var Oc,un=u(()=>{"use strict";c();le();Oc=Ac.uuid();K("gherkin",Yt)});import Gc from"path";import{parser as Lc}from"@lezer/go";function gn(r,e){let t=[],s=new Map,n=new Set,o=new Set,a=Lc.parse(e).cursor();do switch(a.name){case"LineComment":{let h=e.slice(a.from,a.to),x=h.match(jc);x?.[1]&&n.add(x[1]);let v=h.match(Wc);v&&mn(v[1],o);let N=h.match(_c);N&&mn(N[1],o);break}case"ImportSpec":{let h=a.node.getChild("String");if(h){let v=e.slice(h.from,h.to).slice(1,-1);t.push({fromPath:r,toPath:"",rawSpecifier:v,isExternal:!0,isStyle:!1,type:"static"})}break}case"FunctionDecl":case"TypeDecl":case"VarDecl":case"ConstDecl":{let h=a.node.getChild("DefName")??a.node.getChild("TypeSpec")?.getChild("DefName")??a.node.getChild("VarSpec")?.getChild("DefName")??a.node.getChild("ConstSpec")?.getChild("DefName");if(h){let x=e.slice(h.from,h.to);x!=="_"&&/^[A-Z]/.test(x)&&!s.has(x)&&s.set(x,{name:x})}break}}while(a.next());let p=t.some(h=>h.rawSpecifier==="testing"),l=Gc.basename(r).endsWith("_test.go")||n.has("test")||p?"test":"logic",d=new Set([...n,...o]);return{imports:t,exports:Array.from(s.values()),tags:Array.from(d).map(h=>({name:h,kind:"comment-marker"})),category:l}}function mn(r,e){for(let t of r.split(/[\s,&|!()]+/)){let s=t.trim();s&&s!=="ignore"&&e.add(s)}}var jc,Wc,_c,dn=u(()=>{"use strict";c();jc=/\/\/\s*@tag\s+([a-zA-Z0-9_-]+)/,Wc=/^\/\/go:build\s+(.+)$/,_c=/^\/\/\s*\+build\s+(.+)$/});function ee(r){return r.startsWith("'")||r.startsWith('"')?r.slice(1,-1):r}var er=u(()=>{"use strict";c()});import zc from"livescript";function $c(r){let e=new Set,t=/@tag\s+([a-zA-Z0-9_-]+)/g,s=t.exec(r);for(;s!==null;)s[1]&&e.add(s[1]),s=t.exec(r);return e}function Uc(r,e){let t=r.toLowerCase();return t.includes(".test.")||t.includes(".spec.")||e.has("test")?"test":"logic"}function Jc(r,e){let t=r.constructor?.name||r.type;if(t==="Import"){let s=r.right?.value;if(typeof s=="string"){let n=ee(s);return{fromPath:e,toPath:"",rawSpecifier:n,isStyle:T(n),type:"static"}}}if(t==="Chain"&&r.head?.value==="require"){let s=r.tails?.[0];if(s?.constructor?.name==="Call"||s?.type==="Call"){let n=s.args?.[0]?.value;if(typeof n=="string"){let o=ee(n);return{fromPath:e,toPath:"",rawSpecifier:o,isStyle:T(o),type:"require"}}}}return null}function tr(r,e){if(!r||typeof r!="object")return[];let t=[],s=Jc(r,e);s&&t.push(s);for(let n in r){if(Bc.has(n))continue;let o=r[n];if(!(!o||typeof o!="object"))if(Array.isArray(o))for(let i of o)t.push(...tr(i,e));else t.push(...tr(o,e))}return t}function hn(r,e){let t=$c(e),s=Uc(r,t),n=[];try{n=tr(zc.ast(e),r)}catch{}return{imports:n,exports:[],tags:Array.from(t).map(o=>({name:o,kind:"comment-marker"})),category:s}}var Bc,yn=u(()=>{"use strict";c();L();er();Bc=new Set(["first_line","first_column","last_line","last_column","line","column"])});import Kc from"luaparse";function Hc(r){let e=new Set,t=/@tag\s+([a-zA-Z0-9_-]+)/g,s=t.exec(r);for(;s!==null;)s[1]&&e.add(s[1]),s=t.exec(r);return e}function qc(r,e){let t=r.toLowerCase();return t.includes(".test.")||t.includes(".spec.")||e.has("test")?"test":"logic"}function Vc(r,e){let t=[];function s(n){if(!(!n||typeof n!="object")){if((n.type==="CallExpression"||n.type==="StringCallExpression")&&n.base?.type==="Identifier"&&n.base?.name==="require"){let o;if(n.type==="CallExpression"){let i=n.arguments?.[0];i?.type==="StringLiteral"&&(o=ee(i.raw))}else if(n.type==="StringCallExpression"){let i=n.argument;i?.type==="StringLiteral"&&(o=ee(i.raw))}o&&t.push({fromPath:e,toPath:"",rawSpecifier:o,isStyle:T(o),type:"require"})}for(let o in n){if(o==="loc")continue;let i=n[o];if(i&&typeof i=="object")if(Array.isArray(i))for(let a of i)s(a);else s(i)}}}return s(r),t}function xn(r,e){let t=Hc(e),s=qc(r,t),n=[];try{let o=Kc.parse(e);n=Vc(o,r)}catch{}return{imports:n,exports:[],tags:Array.from(t).map(o=>({name:o,kind:"comment-marker"})),category:s}}var Sn=u(()=>{"use strict";c();L();er()});import Qc from"path";import{parser as Xc}from"@lezer/python";function bn(r,e){let t=[],s=[],n=new Set,o=Qc.basename(r).toLowerCase(),a=Xc.parse(e).cursor();do switch(a.name){case"Comment":{let l=e.slice(a.from,a.to).match(/#\s*@tag\s+([a-zA-Z0-9_-]+)/);l?.[1]&&n.add(l[1]);break}case"ImportStatement":{for(let l of Yc(a.node,e,r))t.push(l);break}case"FunctionDefinition":case"ClassDefinition":{let l=a.node.parent;if(l?.name==="Script"||l?.name==="DecoratedStatement"&&l.parent?.name==="Script"){let h=a.node.getChild("VariableName");h&&s.push({name:e.slice(h.from,h.to)})}break}case"AssignStatement":{if(a.node.parent?.name==="Script"){let l=a.node.firstChild;l?.name==="VariableName"&&s.push({name:e.slice(l.from,l.to)})}break}}while(a.next());let p=sp(o,t,n);return p==="test"&&n.add("test"),{imports:t,exports:s,tags:Array.from(n).map(l=>({name:l,kind:"comment-marker"})),category:p}}function Yc(r,e,t){let s=r.firstChild;return s?s.name==="from"?ep(r,e,t):tp(r,e,t):[]}function ep(r,e,t){let s=r.firstChild;if(!s)return[];let n=s.nextSibling;for(;n&&n.name!=="import";)n=n.nextSibling;if(!n)return[];let o=e.slice(s.to,n.from).trim(),i=rp(n.nextSibling,e);if(!i.length)return[];let a=0;for(;a<o.length&&o[a]===".";)a++;let p=o.slice(a);if(a===0)return[fe(t,o,i,!0)];let l=a===1?"./":"../".repeat(a-1);return p?[fe(t,l+p.replace(/\./g,"/"),i,!1)]:i[0]==="*"?[fe(t,l.slice(0,-1),["*"],!1)]:i.map(d=>fe(t,l+d,[d],!1))}function tp(r,e,t){let s=[],n=r.firstChild?.nextSibling??null;for(;n;){if(n.name==="VariableName"){let o=e.slice(n.from,n.to);for(;n.nextSibling?.name==="."&&n.nextSibling.nextSibling?.name==="VariableName";)n=n.nextSibling.nextSibling,o+=`.${e.slice(n.from,n.to)}`;n.nextSibling?.name==="as"&&(n=n.nextSibling.nextSibling??n.nextSibling),s.push(fe(t,o,["*"],!0))}n=n.nextSibling}return s}function rp(r,e){let t=[],s=r;for(;s;)s.name==="*"?t.push("*"):s.name==="VariableName"&&(t.push(e.slice(s.from,s.to)),s.nextSibling?.name==="as"&&(s=s.nextSibling.nextSibling??s.nextSibling)),s=s.nextSibling;return t}function fe(r,e,t,s){return{fromPath:r,toPath:"",rawSpecifier:e,isStyle:!1,isExternal:s,type:"static",symbols:t.length>0?t:void 0}}function sp(r,e,t){return r.startsWith("test_")||r.endsWith("_test.py")?"test":r==="conftest.py"||r==="setup.py"?"config":t.has("test")||e.some(s=>Zc.has(s.rawSpecifier))?"test":"logic"}var Zc,vn=u(()=>{"use strict";c();Zc=new Set(["pytest","unittest","nose","hypothesis"])});import y from"typescript";function np(r){let e=1;function t(s){switch(s.kind){case y.SyntaxKind.IfStatement:case y.SyntaxKind.ConditionalExpression:case y.SyntaxKind.ForStatement:case y.SyntaxKind.ForInStatement:case y.SyntaxKind.ForOfStatement:case y.SyntaxKind.WhileStatement:case y.SyntaxKind.DoStatement:case y.SyntaxKind.CatchClause:case y.SyntaxKind.CaseClause:e++;break;case y.SyntaxKind.BinaryExpression:{let n=s.operatorToken.kind;(n===y.SyntaxKind.AmpersandAmpersandToken||n===y.SyntaxKind.BarBarToken||n===y.SyntaxKind.QuestionQuestionToken)&&e++;break}}y.forEachChild(s,t)}return t(r),e}function op(r){let e=0;function t(s,n,o){if(y.isIfStatement(s)){e+=o?1:1+n;let a=o?n:n+1;t(s.expression,a,!1),t(s.thenStatement,a,!1),s.elseStatement&&(y.isIfStatement(s.elseStatement)?t(s.elseStatement,n,!0):(e+=1,t(s.elseStatement,n+1,!1)));return}if(y.isForStatement(s)||y.isForInStatement(s)||y.isForOfStatement(s)||y.isWhileStatement(s)||y.isDoStatement(s)||y.isSwitchStatement(s)){e+=1+n,y.forEachChild(s,a=>t(a,n+1,!1));return}if(y.isCatchClause(s)){e+=1+n,y.forEachChild(s,a=>t(a,n,!1));return}if(y.isConditionalExpression(s)&&(e+=1),y.isBinaryExpression(s)){let a=s.operatorToken.kind;(a===y.SyntaxKind.AmpersandAmpersandToken||a===y.SyntaxKind.BarBarToken||a===y.SyntaxKind.QuestionQuestionToken)&&(e+=1)}if(n>0&&(y.isFunctionDeclaration(s)||y.isFunctionExpression(s)||y.isArrowFunction(s))){e+=1+n,y.forEachChild(s,a=>t(a,n+1,!1));return}y.forEachChild(s,a=>t(a,n,!1))}return t(r,0,!1),e}function rr(r){return{complexity:np(r),cognitiveComplexity:op(r)}}var Cn=u(()=>{"use strict";c()});import C from"typescript";function kn(r,e){ip(r,e),cp(r,e),pp(r,e),lp(r,e)}function ip(r,e){if((C.isFunctionDeclaration(r)||C.isVariableDeclaration(r))&&r.name&&C.isIdentifier(r.name)&&ap(r)){let t;if(C.isFunctionDeclaration(r))t="function";else{let s=r.initializer;t=s&&(C.isArrowFunction(s)||C.isFunctionExpression(s))?"function":"variable"}e.tags.add({name:r.name.text,kind:t})}}function ap(r){if(C.isFunctionDeclaration(r))return C.isSourceFile(r.parent);let e=r.parent?.parent;return!!e&&C.isSourceFile(e.parent)}function cp(r,e){if(!C.isStringLiteral(r))return;let t=r.text.match(/@[\w-]+/g);if(t)for(let s of t)e.tags.add({name:s.substring(1),kind:"comment-marker"})}function pp(r,e){if(!C.isSourceFile(r))return;let t=/@tag\s+([a-zA-Z0-9_-]+)/g,s=r.getFullText(),n=t.exec(s);for(;n!==null;)n[1]&&e.tags.add({name:n[1],kind:"comment-marker"}),n=t.exec(s)}function lp(r,e){if(C.isCallExpression(r)&&fp(r.expression))for(let t of r.arguments)C.isObjectLiteralExpression(t)&&up(t,e)}function fp(r){return C.isIdentifier(r)?sr.has(r.text):!!(C.isPropertyAccessExpression(r)&&(sr.has(r.name.text)||C.isIdentifier(r.expression)&&sr.has(r.expression.text)))}function up(r,e){for(let t of r.properties){if(!C.isPropertyAssignment(t)||!C.isIdentifier(t.name)||t.name.text!=="tags"&&t.name.text!=="tag")continue;let{initializer:s}=t,n=C.isArrayLiteralExpression(s)?s.elements.filter(C.isStringLiteral):t.name.text==="tag"&&C.isStringLiteral(s)?[s]:[];for(let o of n)e.tags.add({name:o.text.replace(/^@/,""),kind:"comment-marker"})}}var sr,En=u(()=>{"use strict";c();sr=new Set(["test","describe","it"])});import wn from"path";import g from"typescript";function nr(r,e,t){let s=[],n=new Map,o=new Set,i=g.createSourceFile(r,e,g.ScriptTarget.Latest,!0,t==="typescript"?g.ScriptKind.TSX:g.ScriptKind.JSX),a={filePath:r,imports:s,exports:n,tags:o,rawCallEdges:[],sourceFile:i,hasUI:!1,hasTypesOnly:!0,totalStatements:0,exportStatements:0},p=R=>{hp(R,a),g.forEachChild(R,p)};p(i);let l=Pp(r,a);(l==="test"||l==="barrel")&&o.add({name:l,kind:"comment-marker"}),l!=="test"&&Tp(a,i);let d=i.statements[0],h=d?Pn(d):void 0,{complexity:x,cognitiveComplexity:v}=rr(i),N=mp(i);return{imports:s,exports:Array.from(n.values()),tags:Array.from(o),category:l,rawCallEdges:a.rawCallEdges??[],complexity:x,cognitiveComplexity:v,...N.length>0?{functions:N}:{},...h!==void 0?{description:h}:{}}}function mp(r){let e=[],t=(n,o)=>{let{complexity:i,cognitiveComplexity:a}=rr(o),p=r.getLineAndCharacterOfPosition(o.getStart(r)).line+1;e.push({name:n,line:p,complexity:i,cognitiveComplexity:a})},s=(n,o)=>{if(g.isFunctionDeclaration(n)&&n.name&&n.body?t(n.name.text,n):g.isVariableDeclaration(n)&&g.isIdentifier(n.name)&&n.initializer&&(g.isArrowFunction(n.initializer)||g.isFunctionExpression(n.initializer))?t(n.name.text,n.initializer):o&&g.isMethodDeclaration(n)&&g.isIdentifier(n.name)&&n.body?t(`${o}.${n.name.text}`,n):o&&g.isConstructorDeclaration(n)&&n.body?t(`${o}.constructor`,n):o&&g.isGetAccessorDeclaration(n)&&g.isIdentifier(n.name)&&n.body?t(`${o}.get ${n.name.text}`,n):o&&g.isSetAccessorDeclaration(n)&&g.isIdentifier(n.name)&&n.body&&t(`${o}.set ${n.name.text}`,n),g.isClassDeclaration(n)&&n.name){let i=n.name.text;g.forEachChild(n,a=>s(a,i));return}g.forEachChild(n,i=>s(i,o))};return s(r,void 0),e}function Fn(r,e,t,s){let n={name:r},o=Pn(t);o!==void 0&&(n.doc=o);let i=gp(e);i!==void 0&&(n.flags=i);let a=dp(e,s);return a!==void 0&&(n.signature=a),n}function Pn(r){let e=g.getJSDocCommentsAndTags(r);for(let t of e)if(g.isJSDoc(t)&&t.comment)return g.getTextOfJSDocComment(t.comment)||void 0}function gp(r){let e=new Set(["deprecated","internal","public","alpha","beta"]),t=g.getJSDocTags(r).map(s=>s.tagName.text).filter(s=>e.has(s));return t.length>0?t:void 0}function dp(r,e){let t=g.createPrinter({removeComments:!0}),s=n=>t.printNode(g.EmitHint.Unspecified,n,e);if(g.isFunctionDeclaration(r)||g.isMethodDeclaration(r)){let n=r.parameters.map(s).join(", "),o=r.type?s(r.type):"void";return`${r.typeParameters?`<${r.typeParameters.map(a=>a.name.text).join(", ")}>`:""}(${n}) => ${o}`}if(g.isVariableDeclaration(r)){if(r.type)return s(r.type);if(r.initializer&&(g.isArrowFunction(r.initializer)||g.isFunctionExpression(r.initializer))){let n=r.initializer,o=n.parameters.map(s).join(", "),i=n.type?s(n.type):"unknown";return`(${o}) => ${i}`}return}if(g.isClassDeclaration(r)&&r.name)return`class ${r.name.text}`;if(g.isInterfaceDeclaration(r))return`interface ${r.name.text}`;if(g.isTypeAliasDeclaration(r))return s(r.type);if(g.isEnumDeclaration(r))return`enum ${r.name.text}`}function hp(r,e){yp(r,e),xp(r,e),bp(r,e),vp(r,e),Fp(r,e),kn(r,e)}function yp(r,e){if(!g.isSourceFile(r))return;let t=r.statements.filter(s=>!g.isEmptyStatement(s));e.totalStatements=t.length,e.exportStatements=t.filter(s=>g.isExportDeclaration(s)||g.isExportAssignment(s)||or(s)).length}function xp(r,e){if(g.isJsxElement(r)||g.isJsxSelfClosingElement(r)||g.isJsxFragment(r)){e.hasUI=!0,e.hasTypesOnly=!1;return}if(g.isFunctionDeclaration(r)||g.isMethodDeclaration(r)||g.isArrowFunction(r)||g.isClassDeclaration(r)||g.isVariableStatement(r)||g.isEnumDeclaration(r)){e.hasTypesOnly=!1;return}g.isExportDeclaration(r)&&!Sp(r)&&(e.hasTypesOnly=!1)}function Sp(r){return r.isTypeOnly?!0:!r.exportClause||!g.isNamedExports(r.exportClause)?!1:r.exportClause.elements.every(e=>e.isTypeOnly)}function bp(r,e){if(!g.isImportDeclaration(r)||!r.moduleSpecifier||!g.isStringLiteral(r.moduleSpecifier))return;let t=[];if(r.importClause&&(r.importClause.name&&t.push("default"),r.importClause.namedBindings))if(g.isNamedImports(r.importClause.namedBindings))for(let n of r.importClause.namedBindings.elements)t.push(n.name.text);else g.isNamespaceImport(r.importClause.namedBindings)&&t.push("*");let s=t.length>0?"static":"side-effect";e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:r.moduleSpecifier.text,isStyle:T(r.moduleSpecifier.text),type:s,symbols:t.length>0?t:void 0})}function vp(r,e){g.isExportDeclaration(r)?Cp(r,e):g.isExportAssignment(r)?e.exports.set("default",{name:"default"}):or(r)&&wp(r,e)}function Cp(r,e){if(r.moduleSpecifier&&g.isStringLiteral(r.moduleSpecifier))kp(r,r.moduleSpecifier.text,e);else if(r.exportClause&&g.isNamedExports(r.exportClause))for(let t of r.exportClause.elements){let s=t.name.text;e.exports.set(s,{name:s})}}function kp(r,e,t){let s=Ep(r),n={fromPath:t.filePath,toPath:"",rawSpecifier:e,isStyle:T(e),type:"re-export"};s.length>0&&(n.symbols=s),t.imports.push(n)}function Ep(r){return r.exportClause?g.isNamedExports(r.exportClause)?r.exportClause.elements.map(e=>e.name.text):[]:["*"]}function wp(r,e){if((g.isFunctionDeclaration(r)||g.isClassDeclaration(r)||g.isInterfaceDeclaration(r)||g.isTypeAliasDeclaration(r)||g.isEnumDeclaration(r))&&r.name){let s=r.name.text;e.exports.set(s,Fn(s,r,r,e.sourceFile));return}if(g.isVariableStatement(r)){for(let s of r.declarationList.declarations)if(g.isIdentifier(s.name)){let n=s.name.text;e.exports.set(n,Fn(n,s,r,e.sourceFile))}}}function Fp(r,e){if(!g.isCallExpression(r))return;let t=r.arguments[0];!t||!g.isStringLiteral(t)||(r.expression.kind===g.SyntaxKind.ImportKeyword?e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:t.text,isStyle:T(t.text),type:"dynamic"}):g.isIdentifier(r.expression)&&r.expression.text==="require"&&e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:t.text,isStyle:T(t.text),type:"require"}))}function Pp(r,e){let t=wn.basename(r).toLowerCase(),s=wn.extname(r).toLowerCase();return se().some(o=>t.includes(o))?"test":Ur(t)?"config":e.imports.some(o=>ot().some(i=>o.rawSpecifier.includes(i)))?"test":s===".tsx"||s===".jsx"||e.hasUI?"ui":e.hasTypesOnly&&e.totalStatements>0?"type-only":e.totalStatements>0&&e.exportStatements/e.totalStatements>at()?"barrel":"logic"}function or(r){return g.canHaveModifiers(r)&&g.getModifiers(r)?.some(e=>e.kind===g.SyntaxKind.ExportKeyword)===!0}function Tp(r,e){let t=r.rawCallEdges??[];r.rawCallEdges=t;let s=new Map;for(let n of e.statements){if(!g.isImportDeclaration(n)||!g.isStringLiteral(n.moduleSpecifier))continue;let o=n.moduleSpecifier.text,i=n.importClause;if(i&&(i.name&&s.set(i.name.text,o),i.namedBindings&&g.isNamedImports(i.namedBindings)))for(let a of i.namedBindings.elements)s.set(a.name.text,o)}if(s.size!==0)for(let n of e.statements){let o=Ip(n);if(o){let i=Mp(n);i&&He(i,o,s,t);continue}g.isClassDeclaration(n)&&n.name&&Np(n,s,t)}}function Np(r,e,t){let s=r.name.text;for(let n of r.members)g.isMethodDeclaration(n)&&n.body&&g.isIdentifier(n.name)?He(n.body,`${s}.${n.name.text}`,e,t):g.isConstructorDeclaration(n)&&n.body&&He(n.body,`${s}.constructor`,e,t)}function Ip(r){if(or(r)){if(g.isFunctionDeclaration(r)&&r.name)return r.name.text;if(g.isVariableStatement(r)){for(let e of r.declarationList.declarations)if(g.isIdentifier(e.name)&&e.initializer&&(g.isArrowFunction(e.initializer)||g.isFunctionExpression(e.initializer)))return e.name.text}}}function Mp(r){if(g.isFunctionDeclaration(r))return r.body;if(g.isVariableStatement(r)){for(let e of r.declarationList.declarations)if(e.initializer&&(g.isArrowFunction(e.initializer)||g.isFunctionExpression(e.initializer)))return e.initializer}}function He(r,e,t,s){if(g.isCallExpression(r)&&g.isIdentifier(r.expression)){let n=r.expression.text,o=t.get(n);o&&!s.some(i=>i.from===e&&i.to===n&&i.toSpecifier===o)&&s.push({from:e,to:n,toSpecifier:o})}g.forEachChild(r,n=>He(n,e,t,s))}var Tn=u(()=>{"use strict";c();$();Cn();L();En()});function qe(r,e){if(e.length===0)return"ui";let t=!1;return r.walk(s=>{if(s.type==="rule")return t=!0,!1}),t?"ui":"barrel"}var Nn=u(()=>{"use strict";c()});import Mn from"postcss";import*as Dp from"postcss-less";function In(r){return r.startsWith("~")||r.startsWith("http://")||r.startsWith("https://")||r.startsWith("//")||r.startsWith("data:")}function Ap(r){let e=r.trim();return e.length>0&&!e.startsWith("http://")&&!e.startsWith("https://")&&!e.startsWith("//")&&!e.startsWith("data:")&&!e.startsWith("#")}function Op(r,e){let t=r.match(/^\(([^)]+)\)\s+['"]([^'"]+)['"]/);if(t){let o=t[1]?.trim()??"",i=t[2]??"";if(!i)return null;let a=Dn.has(o)?"side-effect":"static";return{fromPath:e,toPath:"",rawSpecifier:i,isStyle:!0,type:a,...In(i)?{isExternal:!0}:{}}}let s=r.match(/^url\(['"]?([^'")]+)['"]?\)/),n=s?s[1]?.trim()??"":r.match(/^['"]([^'"]+)['"]/)?.[1]??"";return n?{fromPath:e,toPath:"",rawSpecifier:n,isStyle:!0,type:"static",...In(n)?{isExternal:!0}:{}}:null}function Gp(r,e){let t=[],s=/url\(['"]?([^'")]+)['"]?\)/g,n=s.exec(r);for(;n!==null;){let o=n[1]?.trim()??"";Ap(o)&&t.push({fromPath:e,toPath:"",rawSpecifier:o,isStyle:!0,type:"static"}),n=s.exec(r)}return t}function Rn(r,e){let t=[];return r.walk(s=>{if(s.type==="atrule"&&s.name==="import"){let n=Op(s.params,e);n&&t.push(n)}s.type==="decl"&&t.push(...Gp(s.value,e))}),t}function Lp(r){return r.replace(/(?<!:)\/\/.*/g,"")}function jp(r,e){let t=[],s=/@import\s+(?:\(([^)]+)\)\s+)?['"]([^'"]+)['"]/g,n=s.exec(r);for(;n!==null;){let o=n[1]?.trim()??"",i=n[2]??"";if(i){let a=Dn.has(o)?"side-effect":"static";t.push({fromPath:e,toPath:"",rawSpecifier:i,isStyle:!0,type:a})}n=s.exec(r)}return t}function An(r,e){let t=Mn.parse(Lp(r));return{imports:Rn(t,e),root:t}}function On(r,e){try{let t=Rp.parse(r);return{imports:Rn(t,e),root:t}}catch{return{imports:jp(r,e),root:Mn.parse("")}}}var Rp,Dn,Gn=u(()=>{"use strict";c();Rp=Dp,Dn=new Set(["reference","inline"])});import{parse as Wp}from"postcss-scss";function _p(r){return!!(r.startsWith("sass:")||r.startsWith("~")||r.startsWith("http://")||r.startsWith("https://")||r.startsWith("//")||!r.startsWith(".")&&!r.startsWith("/")&&!r.startsWith("_"))}function zp(r){let e=r.match(/^['"]([^'"]+)['"]/);if(!e?.[1])return{specifier:""};let t=e[1],n=r.match(/\bas\s+(\S+)/)?.[1];return n!==void 0?{specifier:t,alias:n}:{specifier:t}}function Ln(r,e){let t=Wp(r),s=[];return t.walk(n=>{if(n.type!=="atrule")return;let{name:o,params:i}=n;if(o!=="import"&&o!=="use"&&o!=="forward")return;let{specifier:a,alias:p}=zp(i);if(!a)return;let l={fromPath:e,toPath:"",rawSpecifier:a,isStyle:!0,type:o==="forward"?"re-export":"static",..._p(a)?{isExternal:!0}:{}};p&&(l.symbols=[p]),s.push(l)}),{imports:s,root:t}}var jn=u(()=>{"use strict";c()});function Wn(r,e){let t=[],s=/@require\s+['"]([^'"]+)['"]/g,n=s.exec(r);for(;n!==null;){let i=n[1];i&&t.push({fromPath:e,toPath:"",rawSpecifier:i,isStyle:!0,type:"require"}),n=s.exec(r)}let o=/(?<!@)(?:import|require)\s*\(?\s*['"]([^'"]+)['"]/g;for(n=o.exec(r);n!==null;){let i=n[1];i&&t.push({fromPath:e,toPath:"",rawSpecifier:i,isStyle:!0,type:"static"}),n=o.exec(r)}return t}function _n(r,e){if(e.length===0)return"ui";try{let t=nt("stylus");return new t.Parser(r).parse().nodes.some(o=>o.constructor.name!=="Import")?"ui":"barrel"}catch{return r.replace(/^\s*@?(?:require|import)\b.*/gm,"").trim().length>0?"ui":"barrel"}}var zn=u(()=>{"use strict";c()});function ue(r,e){let t=G(r);if(t==="stylus"){let o=Wn(e,r);return{imports:o,exports:[],tags:[],category:_n(e,o)}}if(t==="scss"){let{imports:o,root:i}=Ln(e,r);return{imports:o,exports:[],tags:[],category:qe(i,o)}}if(t==="less"){let{imports:o,root:i}=On(e,r);return{imports:o,exports:[],tags:[],category:qe(i,o)}}let{imports:s,root:n}=An(e,r);return{imports:s,exports:[],tags:[],category:qe(n,s)}}var $n=u(()=>{"use strict";c();L();Nn();Gn();jn();zn()});async function Un(r,e){let t=G(r),s=Fs(t);return s?s(r,e):{imports:[],exports:[],tags:[],category:"other"}}var Bn=u(()=>{"use strict";c();L();fn();un();dn();yn();Sn();vn();Tn();le();$n();$();L();le();for(let[r,e]of[["javascript",(t,s)=>nr(t,s,"javascript")],["typescript",(t,s)=>nr(t,s,"typescript")],["css",ue],["scss",ue],["less",ue],["stylus",ue],["coffeescript",ln],["livescript",hn],["lua",xn],["python",bn],["go",gn],["gherkin",Yt]])K(r,e)});import Jn from"path";function Hn(r,e){for(let t of r.values()){let s=e.get(t.path);s!==void 0&&(t.coveragePct=s)}}function qn(r,e){for(let t of r)if(t.isExternal){let s=t.rawSpecifier.startsWith("@")?t.rawSpecifier.split("/").slice(0,2).join("/"):t.rawSpecifier.split("/")[0];s&&!e.some(n=>n.name===s)&&e.push({name:s,kind:"library"})}}function Vn(r){for(let e of r.values())if(e.category==="test")for(let t of e.imports){if(t.isExternal||!t.toPath)continue;let s=r.get(t.toPath);s&&(s.category!=="logic"&&s.category!=="barrel"||(s.testedBy??=[],s.testedBy.includes(e.path)||s.testedBy.push(e.path)))}}function Kn(r){return Math.round(r*1e4)/1e4}function Qn(r){for(let e of r.values()){let t=[];for(let s of e.imports){if(s.isExternal||!s.toPath)continue;let n=r.get(s.toPath);if(!n||n.exports.length===0)continue;let o;if(s.symbols===void 0){if(s.type==="side-effect")continue;o=1}else s.symbols.includes("*")?o=1:o=s.symbols.length/n.exports.length;s.exportUsageRatio=Kn(Math.min(1,o)),t.push(s.exportUsageRatio)}t.length>0&&(e.avgExportUsage=Kn(t.reduce((s,n)=>s+n,0)/t.length),e.maxExportUsage=Math.max(...t))}}function ir(r,e,t){e&&(r.some(s=>s.name===e&&s.kind===t)||r.push({name:e,kind:t}))}function $p(r,e){let t=e.toPath,s=Jn.basename(t,Jn.extname(t)).replace(/\.(test|spec)$/,"");ir(r.tags,s,"import")}function Up(r,e){if(!(!e.symbols||e.symbols.includes("*")))for(let t of e.symbols)ir(r.tags,t,"import")}function Bp(r,e,t){let s=t.get(e.toPath);if(!(!s||s.category==="test"))for(let n of s.tags)n.kind==="comment-marker"&&ir(r.tags,n.name,"comment-marker")}function Xn(r){for(let e of r.values())if(e.category==="test")for(let t of e.imports)!t.toPath||t.isExternal||($p(e,t),Up(e,t),Bp(e,t,r))}var Zn=u(()=>{"use strict";c()});import to from"fs";import te from"path";function Jp(r,e){let t=r.split(`
|
|
23
|
+
`),s=null,n=new Map,o=!1;for(let i of t){let a=i.trim();if(a.startsWith("module ")){s=a.slice(7).trim();continue}if(/^replace\s*\(/.test(a)){o=!0;continue}if(o&&a===")"){o=!1;continue}if(o&&a.includes("=>")){Yn(a,e,n);continue}!o&&/^replace\s+/.test(a)&&a.includes("=>")&&Yn(a.replace(/^replace\s+/,""),e,n)}return{mod:s,replaces:n}}function Yn(r,e,t){let[s,n]=r.split("=>").map(a=>a.trim());if(!s||!n)return;let o=s.split(/\s+/)[0];if(!n.startsWith(".")&&!n.startsWith("/"))return;let i=te.isAbsolute(n)?n:te.resolve(e,n);t.set(o,i)}function eo(r){let e;try{e=to.readdirSync(r,{withFileTypes:!0})}catch{return null}let t=e.filter(s=>s.isFile()&&s.name.endsWith(".go")&&!s.name.endsWith("_test.go")).map(s=>({path:te.join(r,s.name),isExternal:!1})).sort((s,n)=>s.path.localeCompare(n.path));return t.length>0?t:null}var me,ro=u(()=>{"use strict";c();me=class{extensions=[".go"];goModCache=new Map;resolve(e,t,s,n){let{mod:o,replaces:i}=this.readGoMod(s);if(!o)return null;let a=this.applyReplace(t,i,s);if(a!==void 0)return eo(a);if(t!==o&&!t.startsWith(`${o}/`))return null;let p=t.slice(o.length).replace(/^\//,"");return p?eo(te.join(s,p)):null}readGoMod(e){let t=this.goModCache.get(e);if(t!==void 0)return t;let s={mod:null,replaces:new Map};try{let n=to.readFileSync(te.join(e,"go.mod"),"utf-8"),o=Jp(n,e);return this.goModCache.set(e,o),o}catch{return this.goModCache.set(e,s),s}}applyReplace(e,t,s){for(let[n,o]of t){if(e===n)return o;if(e.startsWith(`${n}/`)){let i=e.slice(n.length+1);return te.join(o,i)}}}}});import Kp from"fs";import ar from"path";var ge,so=u(()=>{"use strict";c();ge=class{extensions=[".lua"];resolve(e,t,s,n){let o=t.replace(/\./g,ar.sep),i=[s,ar.join(s,"lib")];for(let a of i){if(!Kp.existsSync(a))continue;let p=n(ar.join(a,"_dummy.lua"),o);if(p)return[p]}return null}}});import Hp from"fs";import cr from"path";function no(r){try{return Hp.statSync(r,{throwIfNoEntry:!1})?.isFile()===!0}catch{return!1}}var de,oo=u(()=>{"use strict";c();de=class{extensions=[".py"];resolve(e,t,s,n){let o=t.replace(/\./g,cr.sep),i=cr.join(s,`${o}.py`);if(no(i))return[{path:i,isExternal:!1}];let a=cr.join(s,o,"__init__.py");return no(a)?[{path:a,isExternal:!1}]:null}}});import io from"path";var qp,he,ao=u(()=>{"use strict";c();qp=["~","http://","https://","//","data:","sass:"],he=class{extensions=[".css",".scss",".sass",".less",".styl"];resolve(e,t,s,n){if(qp.some(d=>t.startsWith(d)))return null;let o=n(e,t);if(o)return[o];let i=io.dirname(t),a=io.basename(t),p=i==="."?`_${a}`:`${i}/_${a}`,l=n(e,p);return l?[l]:null}}});var co=u(()=>{"use strict";c();ro();so();oo();ao()});import Ve from"fs";import j from"path";var re,pr=u(()=>{"use strict";c();co();re=class{constructor(e,t={}){this.rootDir=e;this.workspaceMap=t.workspaceMap??new Map,this.tsconfigSearchPaths=t.tsconfigSearchPaths??[e],this.langResolvers=t.langResolvers??[new de,new ge,new me,new he]}rootDir;workspaceMap;tsconfigSearchPaths;langResolvers;resolveAll(e,t){let s=this.resolvePathAlias(t);if(s)return[s];if(t.startsWith(".")||t.startsWith("/")){let i=this.resolveLocalPath(e,t);return i?[i]:[]}let n=(i,a)=>this.resolveLocalPath(i,a);for(let i of this.langResolvers)if(i.extensions.some(a=>e.endsWith(a))){let a=i.resolve(e,t,this.rootDir,n);if(a)return a}let o=this.resolveWorkspaceImport(t);return o?[o]:[{path:t,isExternal:!0}]}resolve(e,t){let s=this.resolvePathAlias(t);if(s)return s;if(t.startsWith(".")||t.startsWith("/"))return this.resolveLocalPath(e,t);let n=(i,a)=>this.resolveLocalPath(i,a);for(let i of this.langResolvers)if(i.extensions.some(a=>e.endsWith(a))){let a=i.resolve(e,t,this.rootDir,n);if(a)return a[0]??null}let o=this.resolveWorkspaceImport(t);return o||{path:t,isExternal:!0}}resolveLocalPath(e,t){let s=j.dirname(e),n=t.startsWith("/")?t:j.resolve(s,t),o=!n.startsWith(this.rootDir),i=["",".ts",".tsx",".js",".jsx",".mjs",".cjs",".css",".scss",".sass",".less",".styl",".coffee",".ls",".lua",".py",".feature"],a=n.match(/\.(js|mjs|cjs)$/);if(a){let p=n.slice(0,-a[0].length);for(let l of[".ts",".tsx"]){let d=this.tryExtensions(p,l,o);if(d)return d}}for(let p of i){let l=this.tryExtensions(n,p,o);if(l)return l}return o?{path:n,isExternal:!0}:null}tryExtensions(e,t,s){let n=e+t;if(this.isFile(n))return{path:n,isExternal:s};let o=j.join(e,`index${t}`);if(this.isFile(o))return{path:o,isExternal:s};if(t===".py"){let i=j.join(e,"__init__.py");if(this.isFile(i))return{path:i,isExternal:s}}return null}isFile(e){try{return Ve.statSync(e,{throwIfNoEntry:!1})?.isFile()===!0}catch{return!1}}resolvePathAlias(e){for(let t of this.tsconfigSearchPaths){let s=j.join(t,"tsconfig.json");if(Ve.existsSync(s))try{let o=JSON.parse(Ve.readFileSync(s,"utf-8")).compilerOptions?.paths;if(!o)continue;for(let i in o){let a=this.matchAliasPattern(i,e);if(a){let p=this.tryAliasSubstitutions(o[i],a[1]||"",t);if(p)return p}}}catch{}}return null}aliasRegexCache=new Map;matchAliasPattern(e,t){let s=this.aliasRegexCache.get(e);if(!s){let n=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace("\\*","(.*)");s=new RegExp(`^${n}$`),this.aliasRegexCache.set(e,s)}return t.match(s)}tryAliasSubstitutions(e,t,s=this.rootDir){let n=["",".ts",".tsx",".js",".jsx",".coffee",".ls",".lua",".feature"];for(let o of e){let i=o.replace("*",t),a=j.resolve(s,i);for(let p of n){let l=this.tryExtensions(a,p,!1);if(l)return l}}return null}resolveWorkspaceImport(e){if(this.workspaceMap.size===0)return null;for(let[t,s]of this.workspaceMap){if(e!==t&&!e.startsWith(`${t}/`))continue;let n=e.slice(t.length),o={path:"",isExternal:!1,isWorkspace:!0,workspacePackage:t};if(!n){for(let a of["src/index.ts","src/index.tsx","index.ts","index.tsx","index.js"]){let p=j.join(s,a);try{if(Ve.statSync(p,{throwIfNoEntry:!1})?.isFile())return{...o,path:p}}catch{}}return{...o,path:s}}let i=this.resolveLocalPath(j.join(s,"_dummy"),n.slice(1));return i?{...o,path:i.path}:null}return null}}});import Qe from"fs";import w from"path";function Qp(r,e){if(r.length===0)return e;let t=r.map(i=>w.dirname(i).split(w.sep)),s=t[0];for(let i of t.slice(1)){let a=0;for(;a<s.length&&a<i.length&&s[a]===i[a];)a++;s=s.slice(0,a)}let n=s.join(w.sep)||w.sep,o=w.relative(e,n);return o.startsWith("..")||w.isAbsolute(o)?e:n}var Vp,ye,po=u(()=>{"use strict";c();Xt();$();cn();Bn();Zn();ie();pr();Vp=["tests","test","__tests__","specs","spec"];ye=class{constructor(e,t=null,s,n,o=!1,i=new Map){this.rootDir=e;this.enableGitStats=o;this.coverageMap=i;this.previousGraph=t,this.resolver=s||new re(e),this.lockFile=an(e),n&&(this.progressCallback=n)}rootDir;enableGitStats;coverageMap;graph={nodes:new Map};visited=new Set;previousGraph=null;resolver;lockFile=null;progressCallback;async build(e){let t=e.map(s=>w.isAbsolute(s)?s:w.resolve(this.rootDir,s));for(let s of t)await this.processFile(s);return await this.processTestFiles(Qp(t,this.rootDir)),this.progressCallback&&this.visited.size>=100&&process.stderr.write(`
|
|
24
24
|
Done. Total processed: ${this.visited.size} nodes.
|
|
25
|
-
`),
|
|
26
|
-
Warning: failed to parse ${
|
|
27
|
-
`),null}}makeStubNode(e,
|
|
28
|
-
`))}var
|
|
29
|
-
`):JSON.stringify({file:
|
|
30
|
-
`);for(let s of
|
|
31
|
-
`);process.exit(1)}console.log("No cycles detected.")}var
|
|
32
|
-
`):JSON.stringify({threshold:o,uncovered:i,count:i.length},null,2))}var
|
|
25
|
+
`),Xn(this.graph.nodes),Vn(this.graph.nodes),Qn(this.graph.nodes),this.coverageMap.size>0&&Hn(this.graph.nodes,this.coverageMap),new F(this.graph.nodes)}async processTestFiles(e){let t=se(),s=new Set(["node_modules",".git","dist","build",".next",".cache","mokosh-cache","coverage"]),n=async i=>{let a;try{a=Qe.readdirSync(i,{withFileTypes:!0})}catch{return}for(let p of a){let l=w.join(i,p.name);p.isDirectory()?s.has(p.name)||await n(l):p.isFile()&&t.some(d=>p.name.includes(d))&&await this.processFile(l)}};await n(e);let o=e;for(;o!==this.rootDir;){let i=w.dirname(o);if(i===o)break;for(let a of Vp){let p=w.join(i,a);try{Qe.statSync(p).isDirectory()&&await n(p)}catch{}}o=i}}async processFile(e){if(this.visited.has(e))return;this.visited.add(e),this.showProgress();let t=Qe.statSync(e,{throwIfNoEntry:!1});if(!t?.isFile())return;let s=w.relative(this.rootDir,e),n=await this.getNode(e,s,t);n.imports=await this.resolveImports(e,n.imports),qn(n.imports,n.tags),this.graph.nodes.set(n.path,n)}async getNode(e,t,s){let n=this.previousGraph?.nodes.get(t);if(n&&n.mtime===s.mtimeMs&&n.size===s.size)return{...n};let o=await this.tryParse(e,t);if(!o)return this.makeStubNode(e,t,s);let i=this.resolveCallEdges(e,o.rawCallEdges),a=this.buildNode(e,t,s,o,i);return this.attachGitStats(a,t),a}async tryParse(e,t){let s=Qe.readFileSync(e,"utf-8");try{return await Un(e,s)}catch(n){return process.stderr.write(`
|
|
26
|
+
Warning: failed to parse ${t}: ${n}
|
|
27
|
+
`),null}}makeStubNode(e,t,s){return{path:t,type:G(e),category:"other",imports:[],exports:[],tags:[],mtime:s.mtimeMs,size:s.size}}resolveCallEdges(e,t){let s=[];for(let n of t??[])try{let o=this.resolver.resolve(e,n.toSpecifier);o&&!o.isExternal&&s.push({from:n.from,to:n.to,toFile:w.relative(this.rootDir,o.path)})}catch{}return s}buildNode(e,t,s,n,o){let{imports:i,exports:a,tags:p,category:l,description:d,complexity:h,cognitiveComplexity:x,functions:v}=n;return{path:t,type:G(e),category:l,imports:i,exports:a,tags:p,mtime:s.mtimeMs,size:s.size,...d!==void 0?{description:d}:{},...o.length>0?{callEdges:o}:{},...h!==void 0?{complexity:h}:{},...x!==void 0?{cognitiveComplexity:x}:{},...v!==void 0?{functions:v}:{}}}attachGitStats(e,t){if(this.enableGitStats)try{let s=sn(this.rootDir,t);e.commitCount90d=s.commitCount90d,s.lastAuthor!==void 0&&(e.lastAuthor=s.lastAuthor)}catch{}}async resolveImports(e,t){let s=[];for(let n of t){let o=this.resolver.resolveAll(e,n.rawSpecifier);if(o.length!==0)for(let i of o){let a={...n,toPath:i.isExternal?i.path:w.relative(this.rootDir,i.path),isExternal:i.isExternal};i.isWorkspace&&(a.isWorkspace=!0,a.workspacePackage=i.workspacePackage),i.isExternal?this.attachLockfileVersion(a):await this.processFile(i.path),s.push(a)}}return s}attachLockfileVersion(e){if(!this.lockFile)return;let t=e.rawSpecifier.startsWith("@")?e.rawSpecifier.split("/").slice(0,2).join("/"):e.rawSpecifier.split("/")[0],s=t?this.lockFile.dependencies[t]:void 0;s&&(e.version=s.version)}showProgress(){this.progressCallback&&this.visited.size%100===0&&this.progressCallback(this.visited.size)}}});var lo=u(()=>{"use strict";c();yt();po();St();Ct();Pe();Te();ie();pr();Dt();Ne();Ot();_t();zt()});var lr=u(()=>{"use strict";c();lo()});function fo(r,e){return{identifier:e?.identifier??new Be,featureMap:e?.featureDetection===!1?new Map:W(r.nodes,e?.featureDetection??void 0)}}function uo(r,e,t,s,n){for(let o of e){let i=r.nodes.get(o);if(!i)continue;let a=new _(o,["*",...i.exports.map(p=>p.name)]);r.traverse(o,(p,l,d)=>{if(!d)return!0;if(!a.updateAffectedSymbols(p,d))return!1;if(l>0){let h=t.get(p.path);if(h)return s(h),!1}return n(p),!0},{direction:"incoming"})}}function fr(r,e,t){let{identifier:s,featureMap:n}=fo(r,t),o=new Set;for(let i of e){let a=n.get(i);a&&o.add(a.tag)}return uo(r,e,n,i=>o.add(i.tag),i=>{if(s.isTestNode(i))for(let a of i.tags)o.add(a.name)}),Array.from(o)}function ur(r,e,t){let{identifier:s,featureMap:n}=fo(r,t),o=new Set;return uo(r,e,n,()=>{},i=>{s.isTestNode(i)&&o.add(i.path)}),Array.from(o)}var mo=u(()=>{"use strict";c();lr();Qt()});var go=u(()=>{"use strict";c();tn();Qt();mo()});import Xp from"fs";import xe from"path";async function I(r,e,t=null,s={}){let n=s.silent?void 0:i=>{process.stderr.write(`Processed ${i} files...\r`)};return await new ye(xe.resolve(r),t,void 0,n,s.gitStats??!1,s.coverageMap??new Map).build(e)}async function ho(r,e={}){let t=xe.resolve(r),s=Wt(t),n=e.packages?s.packages.filter(a=>e.packages?.includes(a.name)||e.packages?.includes(a.relativeRoot)):s.packages,o=new Map(s.packages.map(a=>[a.name,a.root])),i=new pe(t,s.type);for(let a of n){let p=e.silent?void 0:h=>{process.stderr.write(`[${a.name}] Processed ${h} files...\r`)},d=await new ye(t,null,new re(t,{workspaceMap:o,tsconfigSearchPaths:[a.root,t]}),p,e.gitStats??!1).build(a.entryPoints);i.addPackage(a,d)}return i}function M(r,e={}){let t=[],s=new Set([...e.ignoreDirs??ft,...e.additionalIgnoreDirs??[]]),n=new Set([...e.extensions??ut,...e.additionalExtensions??[]]);function o(i){try{let a=Xp.readdirSync(i,{withFileTypes:!0});for(let p of a){let l=xe.join(i,p.name);p.isDirectory()?s.has(p.name)||o(l):p.isFile()&&n.has(xe.extname(p.name).toLowerCase())&&t.push(xe.relative(r,l))}}catch{}}return o(r),t}var b=u(()=>{"use strict";c();lt();mt();Qr();Zr();yt();St();Ct();Pe();Te();ie();ss();Dt();Ne();Ot();_t();Re();zt();$();le();Rs();go();mt();lr()});var yo,xo,So=u(()=>{"use strict";c();yo="mokosh-cache",xo="graph.json"});import Se from"path";import{parseArgs as Zp}from"util";function Yp(r){for(let e=0;e<r.length;e++)if(r[e]==="--root"&&r[e+1])return Se.resolve(r[e+1]);return process.cwd()}function tl(r){let e=[];for(let t=0;t<r.length;t++){let s=r[t];if(!s.startsWith("--"))e.push(s);else if(el.has(s)){let n=r[t+1];n!==void 0&&!n.startsWith("--")&&(e.push(s,n),t++)}else s.slice(2)in mr&&e.push(s)}return e}function bo(r){let e=Yp(r),t=Se.join(Se.resolve(e,yo),xo),{values:s,positionals:n}=Zp({args:tl(r),allowPositionals:!0,options:mr}),o=s["feature-threshold"],i=s["min-out-degree"],a=s.paths,p=s.cache,l=s.config,d=s["changed-symbols"],h=s.depth,x=s["complexity-threshold"],v=s.limit,N=s.metric;return{rootDir:e,cachePath:p?Se.resolve(e,p):t,configPath:l?Se.resolve(e,l):void 0,query:s.query,file:s.file,typeFilter:s.type,functionName:s.function,filterPaths:a?a.split(",").map(R=>R.trim()):void 0,featureThreshold:o?parseInt(o,10):void 0,minOutDegree:i?parseInt(i,10):void 0,mermaid:s.mermaid??!1,proposeTags:s["propose-tags"]??!1,plain:s.plain??!1,affectedTests:s["affected-tests"]??!1,detectFeatures:s["detect-features"]??!1,findUnused:s["find-unused"]??!1,excludeTests:s["exclude-tests"]??!1,checkCycles:s["check-cycles"]??!1,findUncovered:s["find-uncovered"]??!1,callers:s.callers??!1,silent:s.silent??!1,queryHelp:s["query-help"]??!1,help:r.length===0||(s.help??!1),typeGraph:s["type-graph"]??!1,moduleResponsibility:s["module-responsibility"]??!1,featureGraph:s["feature-graph"]??!1,callGraph:s["call-graph"]??!1,apiSurface:s["api-surface"]??!1,applyTags:s["apply-tags"]??!1,dryRun:s["dry-run"]??!1,initSkill:s["init-skill"]??!1,initConfig:s["init-config"]??!1,force:s.force??!1,dependencies:s.dependencies??!1,dependents:s.dependents??!1,affected:s.affected??!1,testsOnly:s["tests-only"]??!1,changedSymbols:d?d.split(",").map(R=>R.trim()):void 0,cached:s.cached??!1,depth:h?parseInt(h,10):void 0,withEdgeDetail:s["with-edge-detail"]??!1,findComplexFunctions:s["find-complex-functions"]??!1,metric:N==="complexity"||N==="cognitiveComplexity"?N:void 0,complexityThreshold:x?parseInt(x,10):void 0,limit:v?parseInt(v,10):void 0,workspacePackages:s["workspace-packages"]??!1,workspaceAffected:s["workspace-affected"]??!1,clearCache:s["clear-cache"]??!1,slim:s.slim??!1,watch:s.watch??!1,entryPoints:n}}var mr,el,vo=u(()=>{"use strict";c();So();mr={root:{type:"string"},cache:{type:"string"},config:{type:"string"},query:{type:"string"},file:{type:"string"},type:{type:"string"},paths:{type:"string"},function:{type:"string"},"feature-threshold":{type:"string"},"min-out-degree":{type:"string"},mermaid:{type:"boolean"},"propose-tags":{type:"boolean"},plain:{type:"boolean"},"affected-tests":{type:"boolean"},"detect-features":{type:"boolean"},"find-unused":{type:"boolean"},"exclude-tests":{type:"boolean"},"check-cycles":{type:"boolean"},"find-uncovered":{type:"boolean"},callers:{type:"boolean"},silent:{type:"boolean"},"query-help":{type:"boolean"},help:{type:"boolean"},"type-graph":{type:"boolean"},"module-responsibility":{type:"boolean"},"feature-graph":{type:"boolean"},"call-graph":{type:"boolean"},"api-surface":{type:"boolean"},"apply-tags":{type:"boolean"},"dry-run":{type:"boolean"},"init-skill":{type:"boolean"},"init-config":{type:"boolean"},force:{type:"boolean"},dependencies:{type:"boolean"},dependents:{type:"boolean"},affected:{type:"boolean"},"tests-only":{type:"boolean"},"changed-symbols":{type:"string"},cached:{type:"boolean"},depth:{type:"string"},"with-edge-detail":{type:"boolean"},"find-complex-functions":{type:"boolean"},metric:{type:"string"},"complexity-threshold":{type:"string"},limit:{type:"string"},"workspace-packages":{type:"boolean"},"workspace-affected":{type:"boolean"},"clear-cache":{type:"boolean"},slim:{type:"boolean"},watch:{type:"boolean"}},el=new Set(Object.entries(mr).filter(([,r])=>r.type==="string").map(([r])=>`--${r}`))});async function gr(r){let{graph:e,file:t,testsOnly:s,changedSymbols:n,cached:o}=r;if(t||(console.error("Error: --affected requires --file <path>"),process.exit(1)),o){let a=bt(e),p=vt(a,t),l=s?p.filter(d=>e.nodes.get(d)?.category==="test"):p;console.log(JSON.stringify({file:t,affected:l,count:l.length},null,2));return}let i=wt(e,t,{testsOnly:s,changedSymbols:n});console.log(JSON.stringify({file:t,affected:i,count:i.length},null,2))}var Co=u(()=>{"use strict";c();b()});import dr from"path";function z(r){return r.filter(e=>{let t=dr.basename(e).toLowerCase();return rl.some(s=>t.includes(s))})}function Xe(r){return new Je().getChangedFiles().map(e=>dr.relative(r,dr.resolve(r,e)))}var rl,Ze=u(()=>{"use strict";c();Xt();rl=[".test.",".spec.","-test.","-spec."]});async function ko(r){let{graph:e}=r,{rootDir:t,scanOptions:s,featureThreshold:n}=r,o=Xe(t);if(![...e.nodes.values()].some(p=>z([p.path]).length>0)){let p=M(t,s);e=await I(t,z(p),e)}let a=ur(e,o,{...n!==void 0&&{featureDetection:{minOutDegree:n}}});console.log(a.join(`
|
|
28
|
+
`))}var Eo=u(()=>{"use strict";c();b();Ze()});async function wo(r){let{graph:e,rootDir:t,entryPoints:s}=r,n=s.length?s:dt(e,t);n.length===0&&(console.error("Error: No entry points found. Pass entry points as positional args or ensure package.json has a main/exports field."),process.exit(1));let o=ht(e,n);console.log(JSON.stringify(o,null,2))}var Fo=u(()=>{"use strict";c();b()});async function Po(r){let{graph:e}=r,{rootDir:t,scanOptions:s,dryRun:n,plain:o}=r;if(o||console.log(n?"Dry run: computing tag changes...":"Applying tags to test files..."),e.nodes.size===0){let a=M(t,s);e=await I(t,z(a),e)}let i=await Vt(e,t,{dryRun:n});console.log(JSON.stringify(i,null,2))}var To=u(()=>{"use strict";c();b();Ze()});async function No(r){let{graph:e,functionName:t}=r;t||(console.error("Error: --call-graph requires --function <name>"),process.exit(1));let s=xt(e,t);console.log(JSON.stringify(s,null,2))}var Io=u(()=>{"use strict";c();b()});async function hr(r){let{graph:e,file:t,plain:s,depth:n,withEdgeDetail:o}=r;t||(console.error("Error: --callers requires --file <path>"),process.exit(1));let i=Ft(e,t,{depth:n??1,withEdgeDetail:o});console.log(s?i.map(a=>a.file).join(`
|
|
29
|
+
`):JSON.stringify({file:t,callers:i,count:i.length},null,2))}var Mo=u(()=>{"use strict";c();b()});async function yr(r){let{graph:e}=r,t=e.findCycles();if(t.length>0){process.stderr.write(`Found ${t.length} cycle(s):
|
|
30
|
+
`);for(let s of t)process.stderr.write(` ${s.join(" \u2192 ")}
|
|
31
|
+
`);process.exit(1)}console.log("No cycles detected.")}var Do=u(()=>{"use strict";c()});import Ro from"fs";function Ao(r){Ro.existsSync(r)?(Ro.unlinkSync(r),console.log(`Cache cleared: ${r}`)):console.log(`No cache file present at ${r}`)}var Oo=u(()=>{"use strict";c()});async function xr(r){let{graph:e,file:t,depth:s}=r;t||(console.error("Error: --dependencies requires --file <path>"),process.exit(1));let n=kt(e,t,s??1);console.log(JSON.stringify({file:t,dependencies:n},null,2))}var Go=u(()=>{"use strict";c();b()});async function Sr(r){let{graph:e,file:t}=r;t||(console.error("Error: --dependents requires --file <path>"),process.exit(1));let s=Et(e,t);console.log(JSON.stringify({file:t,dependents:s},null,2))}var Lo=u(()=>{"use strict";c();b()});async function jo(r){let{graph:e}=r,{rootDir:t,scanOptions:s,featureThreshold:n}=r;if(e.nodes.size===0){let a=M(t,s);e=await I(t,a,e)}let o=W(e.nodes,n!==void 0?{minOutDegree:n}:void 0),i=Array.from(o.values()).sort((a,p)=>p.outDegree-a.outDegree);console.log(JSON.stringify({features:i},null,2))}var Wo=u(()=>{"use strict";c();b()});async function _o(r){let{graph:e}=r,{rootDir:t,scanOptions:s,minOutDegree:n}=r;if(e.nodes.size===0){let a=M(t,s);e=await I(t,a,e)}let o=ne(e,n!==void 0?{minOutDegree:n}:void 0),i=Object.fromEntries(o.features);console.log(JSON.stringify({features:i,unassigned:o.unassigned},null,2))}var zo=u(()=>{"use strict";c();b()});async function br(r){let{graph:e,metric:t,complexityThreshold:s,limit:n}=r,o=s??10,i=Pt(e,{metric:t,threshold:o,limit:n});console.log(JSON.stringify({metric:t??"cognitiveComplexity",threshold:o,functions:i,count:i.length},null,2))}var $o=u(()=>{"use strict";c();b()});async function vr(r){let{graph:e,featureThreshold:t,rawConfig:s,plain:n}=r,o=t??s.coverageThreshold??80;if(!It(e)){console.log(JSON.stringify({error:"No coverage data available. Set coverageReportPath in mokosh.config and rebuild the graph."},null,2));return}let i=[...e.nodes.values()].filter(a=>a.category!=="test"&&a.category!=="config").filter(a=>a.coveragePct!==void 0&&a.coveragePct<o).map(a=>({file:a.path,coveragePct:a.coveragePct}));console.log(n?i.map(a=>a.file).join(`
|
|
32
|
+
`):JSON.stringify({threshold:o,uncovered:i,count:i.length},null,2))}var Uo=u(()=>{"use strict";c();b()});import sl from"path";function ol(r){let e=sl.basename(r).toLowerCase();return nl.some(t=>e.includes(t))}async function Bo(r){let{graph:e,rootDir:t,scanOptions:s,excludeTests:n}=r,o=M(t,s),i=e.findUnusedFiles(o);n&&(i=i.filter(a=>!ol(a))),console.log(JSON.stringify({unusedFiles:i},null,2))}var nl,Jo=u(()=>{"use strict";c();b();nl=[".test.",".spec.","-test.","-spec.",".stories."]});async function Cr(r){let{graph:e,queryStr:t,mermaidOutput:s,slim:n}=r,o=e.serialize();if(t){let a=Oe(t);o=Ae(o,a)}if(s){let a=F.deserialize(o);console.log(we.serialize(a));return}let i=e.findCycles();i.length>0&&(o.cycles=i),console.log(JSON.stringify(n?Tt(o):o,null,2))}var Ko=u(()=>{"use strict";c();b()});import il from"fs";import kr from"path";function Ye(r,e,t){let s=r;for(let n=0;n<6;n++){let o=kr.join(s,"templates",...e);if(il.existsSync(kr.join(o,t)))return o;let i=kr.dirname(s);if(i===s)break;s=i}throw new Error(`Could not locate mokosh templates/${e.join("/")}`)}var Er=u(()=>{"use strict";c()});import Ho from"fs";import qo from"path";function Vo(r,e=process.cwd()){let t=Ye(f,["config"],"mokosh.config.js"),s=qo.join(t,"mokosh.config.js"),n=qo.join(e,"mokosh.config.js");if(Ho.existsSync(n)&&!r){console.log("skipped mokosh.config.js (already exists, use --force to overwrite)");return}Ho.copyFileSync(s,n),console.log("wrote mokosh.config.js")}var Qo=u(()=>{"use strict";c();Er()});import wr from"fs";import et from"path";function Xo(r,e=process.cwd()){let t=Ye(f,["skill"],"SKILL.md");for(let s of al){let n=et.join(t,s.templateFile),o=et.join(e,...s.destPath),i=et.join(...s.destPath);if(wr.existsSync(o)&&!r){console.log(`skipped ${i} (already exists, use --force to overwrite)`);continue}wr.mkdirSync(et.dirname(o),{recursive:!0}),wr.copyFileSync(n,o),console.log(`wrote ${i}`)}}var al,Zo=u(()=>{"use strict";c();Er();al=[{templateFile:"SKILL.md",destPath:[".claude","skills","mokosh","SKILL.md"]},{templateFile:"mokosh.md",destPath:[".claude","commands","mokosh.md"]}]});async function Yo(r){let{graph:e,filterPaths:t,minOutDegree:s}=r,n=Mt(e,s!==void 0?{minOutDegree:s}:void 0);if(t?.length){let o=t.map(i=>n.get(i)).filter(Boolean);console.log(JSON.stringify({count:o.length,modules:o},null,2))}else{let o=Array.from(n.values());console.log(JSON.stringify({count:o.length,modules:o},null,2))}}var ei=u(()=>{"use strict";c();b()});async function ti(r){let{graph:e}=r,{rootDir:t,scanOptions:s,featureThreshold:n,plain:o}=r;o||console.log("Proposing test tags based on git diff...");let i=Xe(t);if(e.nodes.size===0){let p=M(t,s);e=await I(t,z(p),e)}let a=fr(e,i,{...n!==void 0&&{featureDetection:{minOutDegree:n}}});console.log(o?a.join(" "):JSON.stringify({proposedTags:a},null,2))}var ri=u(()=>{"use strict";c();b();Ze()});async function si(r){let{graph:e,typeFilter:t}=r,s=Rt(e);if(t){let n=At(s,t);console.log(JSON.stringify(n,null,2))}else{let n=Array.from(s.types.values());console.log(JSON.stringify({count:n.length,types:n},null,2))}}var ni=u(()=>{"use strict";c();b()});function oi(r,e){let t=r.getAffectedAcrossPackages(e);console.log(JSON.stringify({file:e,affected:t,count:t.length},null,2))}var ii=u(()=>{"use strict";c()});function ai(r){console.log(JSON.stringify(Nt(r),null,2))}var ci=u(()=>{"use strict";c();b()});import Fr from"path";function pi(r){let{rootDir:e,entryPoints:t,cachePath:s,configPath:n}=r,o=n?U(n,{isExplicitPath:!0}):U(e),i=Fr.join(Fr.resolve(e,"mokosh-cache"),"graph.json"),a=t.length>0?t:o.entryPoints??[],p=s!==i?s??i:o.cachePath?Fr.resolve(e,o.cachePath):s??i,l={...o.ignoreDirs!==void 0&&{additionalIgnoreDirs:o.ignoreDirs},...o.extensions!==void 0&&{additionalExtensions:o.extensions}};return{rootDir:e,resolvedEntryPoints:a,resolvedCachePath:p,scanOptions:l,rawConfig:o}}var li=u(()=>{"use strict";c();b()});import be from"fs";import cl from"path";function fi(r){if(!be.existsSync(r))return null;let e=be.readFileSync(r,"utf-8");return F.deserialize(JSON.parse(e))}function Pr(r,e){let t=cl.dirname(e);be.existsSync(t)||be.mkdirSync(t,{recursive:!0}),be.writeFileSync(e,JSON.stringify(r.serialize(),null,2))}async function Tr(r,e,t,s=!1,n=!1){return I(r,e,t,{silent:s,gitStats:n})}var ui=u(()=>{"use strict";c();b()});var mi,gi,di=u(()=>{"use strict";c();mi=`
|
|
33
33
|
Usage: mokosh [options] <entry-point1> <entry-point2> ...
|
|
34
34
|
|
|
35
35
|
Options:
|
|
@@ -45,6 +45,9 @@ Options:
|
|
|
45
45
|
--feature-threshold <N> Min internal imports to be a feature hub (default: 5)
|
|
46
46
|
--find-unused Find files that are not reachable from entry points
|
|
47
47
|
--exclude-tests Exclude test files from --find-unused output
|
|
48
|
+
--find-uncovered List non-test files whose coverage is below the threshold (requires coverageReportPath in config)
|
|
49
|
+
--callers List files whose exported functions call into --file
|
|
50
|
+
--file <path> Target file for --callers/--dependencies/--dependents/--affected/--workspace-affected
|
|
48
51
|
--check-cycles Check for circular dependencies; exits non-zero if found (CI gate)
|
|
49
52
|
--type-graph Output type-level graph (interfaces, classes, enums, type aliases)
|
|
50
53
|
--type <name> Filter --type-graph to a single type name
|
|
@@ -58,12 +61,43 @@ Options:
|
|
|
58
61
|
--silent Suppress progress output on stderr
|
|
59
62
|
--query <query> Filter output using a query (e.g., category:logic,tag:auth)
|
|
60
63
|
--query-help Show all supported query filter keys and examples
|
|
64
|
+
--slim Compact node output for default/--query JSON: export names, meaningful
|
|
65
|
+
tags, and a flat importsFiles list instead of full edge metadata
|
|
66
|
+
(default: false \u2014 opt-in, unlike the MCP query tool which defaults slim to true)
|
|
61
67
|
--root <dir> Project root directory (default: current directory)
|
|
68
|
+
--init-skill Scaffold the mokosh Claude Code skill/command into .claude/
|
|
69
|
+
--init-config Scaffold a starter mokosh.config.js in the project root
|
|
70
|
+
--force Overwrite existing files (use with --init-skill/--init-config)
|
|
71
|
+
--clear-cache Delete the cache file at --cache and exit
|
|
62
72
|
--help Show help
|
|
63
73
|
|
|
74
|
+
MCP parity (mirrors the MCP server's tools for use when MCP is unavailable):
|
|
75
|
+
--dependencies List all files that --file imports (transitive; use with --depth)
|
|
76
|
+
--dependents List files that directly import --file (one hop)
|
|
77
|
+
--depth <N> Max traversal depth for --dependencies/--callers (default: 1)
|
|
78
|
+
--affected List all files transitively affected if --file changes
|
|
79
|
+
--tests-only Restrict --affected to test/spec files
|
|
80
|
+
--changed-symbols <a,b,...> Restrict --affected to files that import these specific symbols
|
|
81
|
+
--cached Use a precomputed impact cache for --affected instead of a fresh traversal
|
|
82
|
+
--with-edge-detail Include from/to function names per edge (use with --callers)
|
|
83
|
+
--find-complex-functions List functions/methods at or above a complexity threshold, worst-first
|
|
84
|
+
--metric <name> cognitiveComplexity (default) | complexity \u2014 used by --find-complex-functions
|
|
85
|
+
--complexity-threshold <N> Minimum score to include (default: 10, use with --find-complex-functions)
|
|
86
|
+
--limit <N> Max results for --find-complex-functions (default: 20)
|
|
87
|
+
--workspace-packages List monorepo packages and their cross-package dependencies
|
|
88
|
+
--workspace-affected Cross-package blast-radius for --file in a monorepo
|
|
89
|
+
--watch Re-run on file changes. Supported with the default output, --query,
|
|
90
|
+
--callers, --dependencies, --dependents, --affected, --find-uncovered,
|
|
91
|
+
--find-complex-functions, and --check-cycles only.
|
|
92
|
+
|
|
64
93
|
Notes:
|
|
65
94
|
Add mokosh-cache/ to your .gitignore to avoid committing the cache directory.
|
|
66
|
-
|
|
95
|
+
--check-cycles is CLI-only (CI gate via exit code); it has no MCP equivalent by design.
|
|
96
|
+
--config files may be .js/.cjs and are executed for CLI convenience (allowJs: true); the MCP
|
|
97
|
+
server only loads JSON config (allowJs: false) for security. This is intentional.
|
|
98
|
+
--workspace-packages/--workspace-affected require explicit opt-in (unlike MCP's analyze tool,
|
|
99
|
+
which auto-detects a monorepo when entryPoints is empty); other commands remain single-package.
|
|
100
|
+
`,gi=`
|
|
67
101
|
Query filter reference (--query "key:value,key:value,...")
|
|
68
102
|
All keys are case-insensitive. Multiple keys are AND'd together.
|
|
69
103
|
|
|
@@ -73,8 +107,8 @@ FILTERING
|
|
|
73
107
|
Examples: category:logic category:!test
|
|
74
108
|
|
|
75
109
|
type:<value> Exact match on language. Negate with !.
|
|
76
|
-
Values: typescript | javascript | css | scss | less |
|
|
77
|
-
coffeescript | livescript | lua | gherkin
|
|
110
|
+
Values: typescript | javascript | python | go | css | scss | less |
|
|
111
|
+
stylus | coffeescript | livescript | lua | gherkin
|
|
78
112
|
Example: type:typescript
|
|
79
113
|
|
|
80
114
|
tag:<value> File has this tag (OR across multiple tag: entries).
|
|
@@ -117,6 +151,12 @@ SORTING & LIMITING (applied after all filters)
|
|
|
117
151
|
limit:<N> Return at most N results.
|
|
118
152
|
Example: limit:20
|
|
119
153
|
|
|
154
|
+
OUTPUT SHAPE
|
|
155
|
+
--slim Pass alongside --query (or the default output) for a compact response:
|
|
156
|
+
export names, meaningful tags, and a flat importsFiles path list \u2014 no
|
|
157
|
+
edge objects, no mtime/size. Off by default on the CLI; the MCP query
|
|
158
|
+
tool defaults this on.
|
|
159
|
+
|
|
120
160
|
COMMON PATTERNS
|
|
121
161
|
Token-efficient context (logic only):
|
|
122
162
|
--query "category:logic"
|
|
@@ -135,5 +175,5 @@ COMMON PATTERNS
|
|
|
135
175
|
|
|
136
176
|
Large TypeScript logic files:
|
|
137
177
|
--query "type:typescript,category:logic,sort:size,limit:5"
|
|
138
|
-
`});
|
|
178
|
+
`});var hi,yi=u(()=>{"use strict";c();hi=/(?:^|[/\\])(?:node_modules|\.git|dist|build|coverage)(?:[/\\]|$)/});import pl from"fs";function xi(r,e,t){let s=null,n=!1,o=!1,i=async()=>{if(n){o=!0;return}n=!0;try{await t()}finally{n=!1,o&&(o=!1,i())}};i();let a=null;try{a=pl.watch(r,{recursive:!0},(p,l)=>{!l||hi.test(l)||(s&&clearTimeout(s),s=setTimeout(()=>{i()},e))})}catch(p){console.error(`Warning: unable to watch ${r}: ${p.message}`)}process.on("SIGINT",()=>{s&&clearTimeout(s),a?.close(),process.exit(0)})}var Si=u(()=>{"use strict";c();yi()});async function bi(){let r=process.argv.slice(2),e=bo(r);e.help&&(console.log(mi),process.exit(0)),e.queryHelp&&(console.log(gi),process.exit(0)),e.initSkill&&(Xo(e.force),process.exit(0)),e.initConfig&&(Vo(e.force),process.exit(0)),e.clearCache&&(Ao(e.cachePath),process.exit(0));let t=pi(e);pt(t.rawConfig);let{rootDir:s,resolvedEntryPoints:n,resolvedCachePath:o,scanOptions:i}=t,{proposeTags:a,plain:p,affectedTests:l,detectFeatures:d,findUnused:h,findUncovered:x,excludeTests:v,checkCycles:N,callers:R,dependencies:Nr,dependents:Ir,affected:Mr,file:tt,silent:Dr,featureThreshold:Ci,query:ki,mermaid:Ei,typeGraph:Rr,typeFilter:wi,moduleResponsibility:Ar,filterPaths:Fi,minOutDegree:Pi,featureGraph:Ti,callGraph:Or,functionName:Ni,apiSurface:Gr,applyTags:Lr,dryRun:Ii,depth:Mi,cached:Di,changedSymbols:Ri,withEdgeDetail:Ai,findComplexFunctions:jr,metric:Oi,complexityThreshold:Gi,limit:Li,workspacePackages:Wr,workspaceAffected:ji,slim:Wi,testsOnly:_i,watch:_r}=e;if(Wr||ji){_r&&(console.error("Error: --watch is not supported with --workspace-packages/--workspace-affected"),process.exit(1));let A=await ho(s,{gitStats:t.rawConfig.gitStats??!1});Wr?ai(A):(tt||(console.error("Error: --workspace-affected requires --file <path>"),process.exit(1)),oi(A,tt));return}let zr=a||l||Lr||R||Nr||Ir||Mr||x||jr||Rr||Ar||Or||Gr,ve=fi(o)??new F(new Map);(n.length>0||!zr)&&(n.length===0&&!zr&&!h&&!d&&!N&&(console.error("Error: No entry points provided"),process.exit(1)),ve=await Tr(s,n,ve,Dr,t.rawConfig.gitStats??!1),Pr(ve,o));let rt={graph:ve,rootDir:s,entryPoints:n.map(A=>A.replace(s+"/","")),scanOptions:i,rawConfig:t.rawConfig,featureThreshold:Ci,queryStr:ki,mermaidOutput:Ei,plain:p,excludeTests:v,file:tt,typeFilter:wi,filterPaths:Fi,minOutDegree:Pi,functionName:Ni,dryRun:Ii,depth:Mi,cached:Di,changedSymbols:Ri,withEdgeDetail:Ai,metric:Oi,complexityThreshold:Gi,limit:Li,slim:Wi,testsOnly:_i},st=[[a,ti],[Lr,Po],[l,ko],[d,jo],[h,Bo],[N,yr],[x,vr],[R,hr],[Nr,xr],[Ir,Sr],[Mr,gr],[jr,br],[Rr,si],[Ar,Yo],[Ti,_o],[Or,No],[Gr,wo]].find(([A])=>A)?.[1]??Cr;if(_r){ll.has(st)||(console.error("Error: --watch is only supported with the default output, --query, --callers, --dependencies, --dependents, --affected, --find-uncovered, --find-complex-functions, and --check-cycles"),process.exit(1)),xi(s,300,async()=>{let A=await Tr(s,n,rt.graph,Dr,t.rawConfig.gitStats??!1);Pr(A,o),console.log(`--- rebuilt at ${new Date().toISOString()} ---`),await st({...rt,graph:A})});return}await st(rt)}var ll,vi=u(()=>{"use strict";c();b();vo();Co();Eo();Fo();To();Io();Mo();Do();Oo();Go();Lo();Wo();zo();$o();Uo();Jo();Ko();Qo();Zo();ei();ri();ni();ii();ci();li();ui();di();Si();ll=new Set([Cr,hr,xr,Sr,gr,vr,br,yr])});var fl=zi(()=>{c();vi();bi().catch(r=>{console.error(r),process.exit(1)})});export default fl();
|
|
139
179
|
//# sourceMappingURL=cli.mjs.map
|