@omfalos/mokosh 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.mjs CHANGED
@@ -1,41 +1,45 @@
1
1
  #!/usr/bin/env node
2
- var St=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var m=(t,e)=>()=>(t&&(e=t(t=0)),e);var Xi=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);import Yi from"path";import{fileURLToPath as qi}from"url";var Zi,ea,f,l=m(()=>{"use strict";Zi=()=>qi(import.meta.url),ea=()=>Yi.dirname(Zi()),f=ea()});function Oe(t){Zr.push(t)}function en(t){return[...ta,...Zr].some(e=>typeof e=="string"?t.includes(e):e instanceof RegExp?e.test(t):e(t))}function Ge(t){tn.push(t)}function fe(){return[...ra,...tn]}function je(t){rn.push(t)}function bt(){return[...na,...rn]}function Ct(t){nn=t}function vt(){return nn}var ta,Zr,ra,tn,na,rn,nn,q=m(()=>{"use strict";l();ta=[".config.","biome.json","tsconfig.json","package.json",".prettierrc",".eslintrc"],Zr=[];ra=[".test.",".spec.","-test.","-spec."],tn=[];na=["jest","vitest","playwright","cypress","@testing-library/"],rn=[];nn=.8});import kt from"fs";import sn from"path";function Z(t,{allowJs:e=!0,isExplicitPath:r=!1}={}){if(r){let n=sn.resolve(t);return kt.existsSync(n)?n.endsWith(".json")?on(n):e?an(n):{}:{}}for(let n of sa){let s=sn.resolve(t,n);if(kt.existsSync(s)){if(n.endsWith(".json"))return on(s);if(e)return an(s)}}return{}}function on(t){return JSON.parse(kt.readFileSync(t,"utf-8"))}function an(t){let e=St(t);return e&&typeof e=="object"&&"default"in e&&(e=e.default),typeof e=="function"?e({}):e}function Et(t){for(let e of t.configMatchers??[])Oe(e);for(let e of t.testPatterns??[])Ge(e);for(let e of t.testLibraries??[])je(e);t.barrelThreshold!==void 0&&Ct(t.barrelThreshold)}function w(t){return{gitStats:t?.gitStats??!1,parallelParsing:t?.parallelParsing,pathAliases:t?.pathAliases}}var sa,wt=m(()=>{"use strict";l();q();sa=["mokosh.config.js","mokosh.config.cjs","mokosh.config.json"]});var Nt,Ft,Tt=m(()=>{"use strict";l();Nt=["node_modules",".git","dist","build",".next",".cache","mokosh-cache","coverage"],Ft=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".css",".scss",".sass",".less",".styl",".coffee",".ls",".lua",".py",".go",".feature",".md",".mdx"]});import wf from"fs";import Ff from"path";var cn=m(()=>{"use strict";l()});var _e,ln=m(()=>{"use strict";l();_e={serialize(t){let e=["graph TD"],r=new Set;for(let n of t.nodes.values()){let s=`"${n.path}"`;for(let o of n.imports){if(!o.toPath)continue;let i=`"${o.toPath}"`,a=`${n.path} -> ${o.toPath}`;if(!r.has(a)){let c=o.isStyle?"-- styles -->":"-->";e.push(` ${s} ${c} ${i}`),r.add(a)}}}return e.join(`
3
- `)}}});var pn=m(()=>{"use strict";l();ln()});import fn from"fs";import ia from"path";function Pt(t,e){let r=t.replace(/^\.\//,"");if(e.nodes.has(r))return r;let n=r.replace(/^dist\//,"src/").replace(/\.(js|mjs|cjs)$/,".ts");return e.nodes.has(n)?n:null}function mn(t,e){if(typeof t=="string")return Pt(t,e);if(t&&typeof t=="object"){let r=t;for(let n of["import","require","default"]){let s=mn(r[n],e);if(s)return s}}return null}function aa(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 ca(t,e){let r=new Set,n=new Set,s=[...e];for(;s.length;){let o=s.shift();if(n.has(o))continue;n.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 g of p.exports)r.add(g.name);s.push(a.toPath)}else for(let p of a.symbols)r.add(p)}}}return r}function It(t,e){let r=[],n=ia.join(e,"package.json");if(fn.existsSync(n))try{let s=JSON.parse(fn.readFileSync(n,"utf8"));if(s.exports&&typeof s.exports=="object"&&!Array.isArray(s.exports))for(let o of Object.values(s.exports)){let i=mn(o,t);i&&!r.includes(i)&&r.push(i)}else if(typeof s.exports=="string"){let o=Pt(s.exports,t);o&&r.push(o)}if(r.length===0)for(let o of[s.main,s.module].filter(Boolean)){let i=Pt(o,t);i&&!r.includes(i)&&r.push(i)}}catch{}if(r.length===0){for(let s of["src/index.ts","src/index.js","index.ts","index.js"])if(t.nodes.has(s)){r.push(s);break}}return r}function la(t,e){let r=new Set(e);for(let n of e)t.traverse(n,s=>(r.add(s.path),!0),{direction:"outgoing"});return r}function pa(t,e,r){let n=new Map;for(let s of e){if(r.includes(s))continue;let o=t.nodes.get(s);if(!o)continue;let i=o.category==="barrel";for(let a of o.exports){let c=n.get(a.name),p=!!(a.signature||a.doc);(!c||p&&!i)&&n.set(a.name,{file:s,symbol:a})}}return n}function fa(t,e,r,n){let s=[];for(let o of t){let i=e.get(o),a=n.flatMap(h=>r.nodes.get(h)?.exports??[]).find(h=>h.name===o),c=i?.symbol??a,p=i?.file??n.find(h=>r.nodes.get(h)?.exports.some(y=>y.name===o))??n[0],g={name:o,definedIn:p,kind:aa(c?.signature)};c?.doc&&(g.doc=c.doc),c?.signature&&(g.signature=c.signature),s.push(g)}return s.sort((o,i)=>o.name.localeCompare(i.name)),s}function ma(t,e,r){let n=c=>t.nodes.get(c)?.category==="test",s=[...e].filter(c=>!r.includes(c)&&!n(c)),o=[...t.nodes.keys()].filter(c=>!e.has(c)),i=o.filter(c=>!n(c)),a=o.filter(c=>n(c));return{internalFiles:s,unreachableFromEntry:i,testFiles:a}}function Mt(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=la(t,e),n=pa(t,r,e),s=ca(t,e),o=fa(s,n,t,e),{internalFiles:i,unreachableFromEntry:a,testFiles:c}=ma(t,r,e);return{entryPoints:e,publicExports:o,internalFiles:i,unreachableFromEntry:a,testFiles:c}}var Dt=m(()=>{"use strict";l()});function At(t,e){let r=null,n=[];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&&n.push({file:o.path,callerFunction:i.from})}let s=[];if(r){let o=t.nodes.get(r);for(let i of o?.callEdges??[])i.from===e&&s.push({file:i.toFile,calleeFunction:i.to})}return{functionName:e,definedIn:r,callers:n,callees:s}}var Rt=m(()=>{"use strict";l()});import $f from"fs";import Bf from"path";function un(t){let e=[...t.nodes.entries()].sort(([n],[s])=>n.localeCompare(s)).map(([n,s])=>`${n}:${s.mtime}:${s.size}`).join("|"),r=2166136261;for(let n=0;n<e.length;n++)r^=e.charCodeAt(n),r=Math.imul(r,16777619)>>>0;return r.toString(16).padStart(8,"0")}function Lt(t){let e=new Map;for(let r of t.nodes.keys()){let n=[];t.traverse(r,s=>(s.path!==r&&n.push(s.path),!0),{direction:"incoming"}),e.set(r,n)}return{impact:e,graphHash:un(t)}}function Ot(t,e){return t.impact.get(e)??[]}var Gt=m(()=>{"use strict";l()});import We from"path";function ua(t){let e=new Map;for(let[r,n]of t){let s=n.imports.filter(o=>o.toPath&&!o.isExternal).length;s>0&&e.set(r,s)}return e}function ga(t,e,r){let n=new Map;for(let[s,o]of e){if(o<r)continue;let i=t.get(s);if(!i||i.category==="test"||i.category==="barrel")continue;let a=We.extname(s),c=We.basename(s,a),p=c==="index"?We.basename(We.dirname(s)):c;n.set(s,{path:s,outDegree:o,tag:`feature:${p}`})}return n}function $(t,e){let r=e?.minOutDegree??5;return ga(t,ua(t),r)}var ze=m(()=>{"use strict";l()});function ha(t,e){let r=new Map;for(let n of e.values()){let s=new Set;t.traverse(n.path,o=>(o.path!==n.path&&s.add(o.path),!0),{direction:"outgoing"}),r.set(n.path,s)}return r}function ya(t,e,r,n){let s=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||n(a,i)<0)&&(i=a);i&&s.set(o,i.path)}return s}function xa(t,e){let r=new Map;for(let n of t.values()){let s=n.tag.replace("feature:",""),o=[];for(let[i,a]of e)a===n.path&&o.push(i);r.set(s,{hub:n.path,outDegree:n.outDegree,files:o})}return r}function Sa(t,e,r){let n=[];for(let s of t.keys())!e.has(s)&&!r.has(s)&&n.push(s);return n}function me(t,e){let r=e?.detectFn??$,n=e?.hubComparator??da,s=r(t.nodes,e),o=ha(t,s),i=ya(t.nodes,s,o,n);return{features:xa(s,i),unassigned:Sa(t.nodes,s,i)}}var da,$e=m(()=>{"use strict";l();ze();da=(t,e)=>t.outDegree-e.outDegree});function jt(t){let e=new Map;for(let r of t.nodes.values())e.set(r.type,(e.get(r.type)??0)+1);return[...e.entries()].map(([r,n])=>({type:r,fileCount:n,exportsTracked:gn.has(r),importSymbolsTracked:dn.has(r),callEdgesTracked:Ue.has(r)})).sort((r,n)=>n.fileCount-r.fileCount)}var gn,dn,Ue,_t=m(()=>{"use strict";l();gn=new Set(["typescript","javascript","python","go","scss","less","lua","coffeescript"]),dn=new Set(["typescript","javascript","python"]),Ue=new Set(["typescript","javascript","go","python"])});var ue,hn=m(()=>{"use strict";l();ue=class{constructor(e){this.nodes=e}nodes;findUnusedFiles(e){let r=new Set(this.nodes.keys());return e.filter(n=>!r.has(n))}findHighExportUsage(e){let r=[];for(let n of this.nodes.values()){if(n.maxExportUsage===void 0||n.maxExportUsage<e)continue;let s=n.imports.reduce((o,i)=>(i.exportUsageRatio??0)>(o?.exportUsageRatio??0)?i:o,null);r.push({path:n.path,maxExportUsage:n.maxExportUsage,tightestDep:s?.toPath??""})}return r.sort((n,s)=>s.maxExportUsage-n.maxExportUsage)}findCycles(){let e=[],r=new Set,n=new Set,s=[],o=i=>{r.add(i),n.add(i),s.push(i);let a=this.nodes.get(i);if(a){for(let c of a.imports)if(!(!c.toPath||c.isExternal))if(n.has(c.toPath)){let p=s.indexOf(c.toPath);e.push([...s.slice(p),c.toPath])}else r.has(c.toPath)||o(c.toPath)}n.delete(i),s.pop()};for(let i of this.nodes.keys())r.has(i)||o(i);return e}}});var I,ge=m(()=>{"use strict";l();hn();I=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 n of e.nodes)r.set(n.path,n);return new t(r)}getIncomingEdgesMap(){if(this._incomingEdgesCache)return this._incomingEdgesCache;let e=new Map;for(let r of this.nodes.values())for(let n of r.imports)if(n.toPath){let s=e.get(n.toPath)||[];s.push(r.path),e.set(n.toPath,s)}return this._incomingEdgesCache=e,e}dfs(e,r,n,s){let o=new Set,i=n.maxDepth??1/0,a=(c,p,g)=>{if(p>i||o.has(c))return;let h=this.nodes.get(c);if(h&&(o.add(c),r(h,p,g)!==!1))for(let y of s(c))a(y,p+1,c)};a(e,0,null)}traverse(e,r,n={}){let s=n.direction??"outgoing",o=s==="incoming"?this.getIncomingEdgesMap():null;this.dfs(e,r,n,i=>s==="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 n of r.callEdges??[]){let s=e.get(n.toFile)??[];s.push(r.path),e.set(n.toFile,s)}return this._callIncomingCache=e,e}traverseCalls(e,r,n={}){let s=n.direction??"outgoing",o=s==="incoming"?this.getCallIncomingCache():null;this.dfs(e,r,n,i=>s==="outgoing"?this.nodes.get(i)?.callEdges?.map(a=>a.toFile)??[]:o?.get(i)??[])}getCallers(e){let r=[];return this.traverseCalls(e,n=>(n.path!==e&&r.push(n.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(n=>this.nodes.get(n.toPath)).filter(n=>n!==void 0):[]}findUnusedFiles(e){return new ue(this.nodes).findUnusedFiles(e)}findCycles(){return new ue(this.nodes).findCycles()}}});var U,Be=m(()=>{"use strict";l();U=class{affectedSymbols=new Map;constructor(e,r){this.affectedSymbols.set(e,new Set(["default",...r]))}updateAffectedSymbols(e,r){let n=this.affectedSymbols.get(r)||new Set,s=e.imports.find(c=>c.toPath===r);if(!s)return!1;let o=s.symbols||["*"],i=new Set;for(let c of o)(c==="*"||n.has("*")||n.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 B(t,e){let r=t.nodes.get(e);if(r)return{category:r.category,exports:r.exports.map(n=>n.name)}}function Wt(t,e,r=1){let n=[];return t.traverse(e,(s,o,i)=>{if(s.path===e)return!0;let a=i?t.nodes.get(i)?.imports.find(c=>c.toPath===s.path):void 0;return n.push({path:s.path,...a?.symbols?{symbols:a.symbols}:{}}),!0},{direction:"outgoing",maxDepth:r}),n}function de(t,e){let r=[];return t.traverse(e,n=>{if(n.path===e)return!0;let s=n.imports.find(o=>o.toPath===e);return r.push({path:n.path,...s?.symbols?{symbols:s.symbols}:{}}),!0},{direction:"incoming",maxDepth:1}),r}function zt(t,e,r={}){let{testsOnly:n=!1,changedSymbols:s}=r,o=s?new U(e,s):null,i=[];return t.traverse(e,(a,c,p)=>{if(a.path===e)return!0;if(o&&p&&!o.updateAffectedSymbols(a,p))return!1;let g=a.category==="test"||a.tags.some(h=>h.name==="test");return(!n||g)&&i.push(a.path),!0},{direction:"incoming"}),i}function $t(t,e,r={}){let{depth:n=1,withEdgeDetail:s=!1}=r,o=[];return t.traverseCalls(e,i=>{if(i.path===e)return!0;let a={file:i.path};return s&&(a.edges=(i.callEdges??[]).filter(c=>c.toFile===e).map(c=>({from:c.from,to:c.to}))),o.push(a),!0},{direction:"incoming",maxDepth:n}),o}function Ut(t,e={}){let{metric:r="cognitiveComplexity",threshold:n=10,limit:s=20}=e;return[...t.nodes.values()].flatMap(o=>(o.functions??[]).filter(i=>i[r]>=n).map(i=>({file:o.path,name:i.name,line:i.line,complexity:i.complexity,cognitiveComplexity:i.cognitiveComplexity}))).sort((o,i)=>i[r]-o[r]).slice(0,s)}function Bt(t){return{nodes:t.nodes.map(r=>({path:r.path,type:r.type,category:r.category,exports:r.exports.map(n=>n.name),tags:r.tags.filter(n=>n.kind==="comment-marker"||n.kind==="import").map(n=>n.name),importsFiles:r.imports.filter(n=>!n.isExternal&&n.toPath).map(n=>n.toPath),...r.description!==void 0&&{description:r.description},...r.testedBy!==void 0&&{testedBy:r.testedBy},...r.coveragePct!==void 0&&{coveragePct:r.coveragePct},...r.avgExportUsage!==void 0&&{avgExportUsage:r.avgExportUsage},...r.maxExportUsage!==void 0&&{maxExportUsage:r.maxExportUsage}})),cycles:t.cycles}}function Jt(t){let e=t.getPackageDependencies(),r=Array.from(t.packages.values()).map(({graph:n,pkg:s})=>({name:s.name,relativeRoot:s.relativeRoot,nodeCount:n.nodes.size,dependsOn:e.get(s.name)??[]}));return{monorepoType:t.type,packageCount:r.length,packages:r}}function Kt(t){return[...t.nodes.values()].some(e=>e.coveragePct!==void 0)}var Ht=m(()=>{"use strict";l();Be()});function yn(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 b(e,"component")||b(e,"components")?"component":b(e,"controller")||b(e,"controllers")?"controller":b(e,"middleware")?"middleware":b(e,"router")||b(e,"routes")||b(e,"route")?"router":b(e,"store")||b(e,"stores")?"store":b(e,"service")||b(e,"services")?"service":b(e,"handler")||b(e,"handlers")?"handler":b(e,"adapter")||b(e,"adapters")?"adapter":b(e,"plugin")||b(e,"plugins")?"plugin":b(e,"api")?"api":b(e,"cli")||b(e,"commands")||he(e)==="cli"?"cli":b(e,"util")||b(e,"utils")||b(e,"helper")||b(e,"helpers")?"util":b(e,"model")||b(e,"models")||he(e)==="model"?"model":b(e,"parser")||b(e,"parsers")||he(e)==="parser"?"parser":he(e)==="builder"?"builder":he(e)==="resolver"?"resolver":"other"}function b(t,e){return t.includes(`/${e}/`)||t.includes(`/${e}.`)}function he(t){let e=t.slice(t.lastIndexOf("/")+1);return e.slice(0,e.lastIndexOf("."))||e}var xn=m(()=>{"use strict";l()});function Vt(t,e){let r=me(t,e),n=new Map;for(let[o,i]of r.features){for(let a of i.files)n.set(a,o);n.set(i.hub,o)}let s=new Map;for(let o of t.nodes.values()){let i=n.get(o.path);s.set(o.path,{path:o.path,role:yn(o),...o.description?{description:o.description}:{},exports:o.exports.map(a=>a.name),...i?{featureHub:i}:{}})}return s}var Qt=m(()=>{"use strict";l();$e();xn()});function Xt(t,e){let r=[];for(let n of t.nodes.values())if(n.exports.some(s=>s.name===e))if(Ue.has(n.type)){let s=[];for(let o of t.nodes.values())for(let i of o.callEdges??[])i.to===e&&s.push({file:o.path,callerFunction:i.from});r.push({path:n.path,category:n.category,precision:"call",callers:s})}else{let s=de(t,n.path).map(o=>({file:o.path,...o.symbols?{symbols:o.symbols}:{}}));r.push({path:n.path,category:n.category,precision:"file-level",importers:s})}return r}var Sn=m(()=>{"use strict";l();_t();Ht()});function ba(t){return t?t.startsWith("interface ")?"interface":t.startsWith("class ")?"class":t.startsWith("enum ")?"enum":"type":"type"}function Ca(t,e){if(e==="type-only")return!0;let r=t.signature??"";return r.startsWith("interface ")||r.startsWith("class ")||r.startsWith("enum ")}function Yt(t){let e=new Map;for(let n of t.nodes.values())if(!(n.type!=="typescript"&&n.type!=="javascript"))for(let s of n.exports){if(!Ca(s,n.category))continue;let o=`${n.path}::${s.name}`;e.set(o,{name:s.name,file:n.path,kind:ba(s.signature),...s.doc?{doc:s.doc}:{}})}let r=[];for(let n of t.nodes.values())if(!(n.type!=="typescript"&&n.type!=="javascript")){for(let s of n.imports)if(!(!s.toPath||s.isExternal||!s.symbols?.length))for(let o of s.symbols)e.has(`${s.toPath}::${o}`)&&r.push({fromFile:n.path,toType:o,toFile:s.toPath})}return{types:e,edges:r}}function qt(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 n=new Set,s=new Map;for(let o of t.edges)if(o.toType===e&&o.toFile===r.file&&n.add(o.fromFile),o.fromFile===r.file){let i=t.types.get(`${o.toFile}::${o.toType}`);i&&s.set(`${i.file}::${i.name}`,i)}return{type:r,usedByFiles:Array.from(n),uses:Array.from(s.values())}}var Zt=m(()=>{"use strict";l()});import bn from"fs";import wm from"path";function Cn(t){try{return bn.statSync(t,{throwIfNoEntry:!1})?.isDirectory()===!0}catch{return!1}}function Je(t){try{return bn.statSync(t,{throwIfNoEntry:!1})?.isFile()===!0}catch{return!1}}var Ke=m(()=>{"use strict";l()});import ye from"fs";import M from"path";function er(t,e){let r=M.join(e,"package.json");if(!ye.existsSync(r))return null;let n={};try{n=JSON.parse(ye.readFileSync(r,"utf-8"))}catch{return null}let s=n.name;return s?{name:s,root:e,relativeRoot:M.relative(t,e),entryPoints:va(e,n)}:null}function va(t,e){let r=[];if(e.exports){let s=e.exports;if(typeof s=="string")r.push(M.join(t,s));else if(typeof s=="object"&&s!==null){let o=s["."];if(typeof o=="string")r.push(M.join(t,o));else if(typeof o=="object"&&o!==null){let i=o.import??o.require??o.default;typeof i=="string"&&r.push(M.join(t,i))}}}e.main&&r.push(M.join(t,e.main));for(let s of["src/index.ts","src/index.tsx","index.ts","index.tsx","index.js"])r.push(M.join(t,s));let n=r.filter(Je);return n.length>0?n.slice(0,1):r.slice(0,1)}function ee(t,e){let r=[],n=new Set;for(let s of e){let o=s.replace(/\/$/,"").replace(/^\.\//,"");ka(t,o,n,r)}return r}function ka(t,e,r,n){if(!e.includes("*")){Ea(t,e,r,n);return}let s=e.split("/");s.includes("**")?wa(t,s,r,n):Na(t,s,r,n)}function Ea(t,e,r,n){let s=M.join(t,e);if(r.has(s)||!Cn(s))return;r.add(s);let o=er(t,s);o&&n.push(o)}function wa(t,e,r,n){let s=M.join(t,e[0]==="**"?"":e[0]??"");vn(t,s,r,n)}function Na(t,e,r,n){let s=e.findIndex(a=>a.includes("*")),o=M.join(t,...e.slice(0,s)),i;try{i=ye.readdirSync(o,{withFileTypes:!0})}catch{return}for(let a of i){if(!a.isDirectory())continue;let c=M.join(o,a.name);if(r.has(c))continue;r.add(c);let p=er(t,c);p&&n.push(p)}}function vn(t,e,r,n){let s;try{s=ye.readdirSync(e,{withFileTypes:!0})}catch{return}for(let o of s){if(!o.isDirectory()||o.name==="node_modules"||o.name.startsWith("."))continue;let i=M.join(e,o.name);if(ye.existsSync(M.join(i,"package.json"))&&!r.has(i)){r.add(i);let a=er(t,i);a&&n.push(a)}else vn(t,i,r,n)}}var He=m(()=>{"use strict";l();Ke();Ke()});import tr from"fs";import kn from"path";var En,wn=m(()=>{"use strict";l();He();En={type:"npm",detect(t){let e=kn.join(t,"package.json");if(!tr.existsSync(e))return null;let r;try{r=JSON.parse(tr.readFileSync(e,"utf-8")).workspaces}catch{return null}if(!r||tr.existsSync(kn.join(t,"yarn.lock")))return null;let n=Array.isArray(r)?r:r.packages??[];return n.length===0?null:ee(t,n)}}});import te from"fs";import N from"path";function Fn(t,e,r,n){if(n>4)return[];let s;try{s=te.readdirSync(e,{withFileTypes:!0})}catch{return[]}let o=[];for(let i of s){if(!i.isDirectory())continue;let a=i.name;if(a.startsWith(".")||a==="node_modules"||a==="dist"||a===".nx")continue;let c=N.join(e,a);te.existsSync(N.join(c,"project.json"))&&!r.has(c)?(r.add(c),o.push(c)):o.push(...Fn(t,c,r,n+1))}return o}function Fa(t,e,r){let n={};try{n=JSON.parse(te.readFileSync(r,"utf-8"))}catch{return null}let s=n.name,o,i,a=N.join(e,"package.json");if(te.existsSync(a))try{let c=JSON.parse(te.readFileSync(a,"utf-8"));s=c.name??s,o=c.main,i=c.exports}catch{}return s?{name:s,root:e,relativeRoot:N.relative(t,e),entryPoints:Ta(e,n,o,i)}:null}function Ta(t,e,r,n){let s=[],o=e.targets?.build?.options?.main??e.targets?.build?.options?.entryFile;if(o){let a=N.resolve(t,"../..");s.push(N.resolve(a,o)),s.push(N.resolve(t,o))}if(n){let a=n;if(typeof a=="string")s.push(N.join(t,a));else if(typeof a=="object"&&a!==null){let c=a["."];typeof c=="string"&&s.push(N.join(t,c))}}if(r&&s.push(N.join(t,r)),e.sourceRoot){let a=N.resolve(t,"../.."),c=N.resolve(a,e.sourceRoot);s.push(N.join(c,"index.ts"),N.join(c,"index.tsx"))}for(let a of["src/index.ts","src/index.tsx","index.ts","index.tsx"])s.push(N.join(t,a));let i=s.filter(Je);return i.length>0?i.slice(0,1):s.slice(0,1)}var Nn,Tn=m(()=>{"use strict";l();Ke();Nn={type:"nx",detect(t){return te.existsSync(N.join(t,"nx.json"))?Fn(t,t,new Set,0).map(r=>Fa(t,r,N.join(r,"project.json"))).filter(r=>r!==null):null}}});import Pn from"fs";import Pa from"path";import{load as Ia}from"js-yaml";var In,Mn=m(()=>{"use strict";l();He();In={type:"pnpm",detect(t){let e=Pa.join(t,"pnpm-workspace.yaml");if(!Pn.existsSync(e))return null;let r=[];try{r=Ia(Pn.readFileSync(e,"utf-8"))?.packages??[]}catch{return null}return ee(t,r)}}});import Ma from"fs";import Da from"path";var Dn,An=m(()=>{"use strict";l();Dn={type:"turborepo",detect(t){return Ma.existsSync(Da.join(t,"turbo.json"))?[]:null}}});import rr from"fs";import Rn from"path";var Ln,On=m(()=>{"use strict";l();He();Ln={type:"yarn",detect(t){if(!rr.existsSync(Rn.join(t,"yarn.lock")))return null;let e=Rn.join(t,"package.json");if(!rr.existsSync(e))return null;let r;try{r=JSON.parse(rr.readFileSync(e,"utf-8")).workspaces}catch{return null}if(!r)return null;let n=Array.isArray(r)?r:r.packages??[];return n.length===0?null:ee(t,n)}}});function G(t){Gn.push(t)}function jn(){return Gn}var Gn,Ve=m(()=>{"use strict";l();Gn=[]});import Aa from"path";function nr(t,e=jn()){let r=Aa.resolve(t),n=new Map,s=[];for(let i of e){let a=i.detect(r);if(a!==null){s.push(i.type);for(let c of a)n.has(c.name)||n.set(c.name,c)}}if(s.length===0)return{root:r,type:"none",types:[],packages:[],packageMap:new Map};let o=Array.from(n.values());return{root:r,type:s[0],types:s,packages:o,packageMap:new Map(o.map(i=>[i.name,i]))}}var sr=m(()=>{"use strict";l();wn();Tn();Mn();An();On();Ve();Ve();G(Dn);G(Nn);G(In);G(Ln);G(En)});var xe,or=m(()=>{"use strict";l();ge();xe=class t{constructor(e,r){this.monorepoRoot=e;this.type=r}monorepoRoot;type;packages=new Map;addPackage(e,r){this.packages.set(e.name,{graph:r,pkg:e})}getPackageForFile(e){for(let{pkg:r}of this.packages.values())if(e===r.relativeRoot||e.startsWith(`${r.relativeRoot}/`))return r}getPackageDependencies(){let e=new Map;for(let{graph:r,pkg:n}of this.packages.values()){let s=new Set;for(let o of r.nodes.values())for(let i of o.imports)i.isWorkspace&&i.workspacePackage&&s.add(i.workspacePackage);e.set(n.name,[...s])}return e}getAffectedAcrossPackages(e){let r=this.getPackageForFile(e);if(!r)return[];let n=this.packages.get(r.name);if(!n)return[];let s=[];n.graph.traverse(e,o=>(o.path!==e&&s.push({file:o.path,package:r.name}),!0),{direction:"incoming"});for(let{graph:o,pkg:i}of this.packages.values())if(i.name!==r.name)for(let a of o.nodes.values())a.imports.some(p=>p.isWorkspace&&p.workspacePackage===r.name)&&s.push({file:a.path,package:i.name});return s}serialize(){return{monorepoRoot:this.monorepoRoot,type:this.type,packages:Array.from(this.packages.values()).map(({graph:e,pkg:r})=>({pkg:{name:r.name,relativeRoot:r.relativeRoot,entryPoints:r.entryPoints},nodes:Array.from(e.nodes.values())}))}}static deserialize(e){let r=new t(e.monorepoRoot,e.type);for(let{pkg:n,nodes:s}of e.packages){let o=new Map(s.map(a=>[a.path,a])),i=new I(o);r.packages.set(n.name,{graph:i,pkg:{...n,root:""}})}return r}}});function re(t,e){_n.set(t,e)}function Wn(t){return _n.get(t)}var _n,Se=m(()=>{"use strict";l();_n=new Map});function zn(t,e){return e.startsWith("!")?t!==e.slice(1):t===e}function Ra(t,e){return e.startsWith("!")?!t.includes(e.slice(1)):t.includes(e)}function be(t,e,r){return cc.every(n=>n(t,e,r))}var La,Oa,Ga,ja,_a,Wa,za,$a,Ua,Ba,Ja,Ka,Ha,Va,Qa,Xa,Ya,qa,Za,ec,tc,rc,nc,sc,oc,ic,ac,cc,ir=m(()=>{"use strict";l();La=(t,e)=>!e.category||zn(t.category,e.category),Oa=(t,e)=>!e.type||zn(t.type,e.type),Ga=(t,e)=>e.lastAuthor?e.lastAuthor.startsWith("!")?t.lastAuthor!==e.lastAuthor.slice(1):t.lastAuthor!==void 0&&t.lastAuthor===e.lastAuthor:!0,ja=(t,e)=>!e.path||Ra(t.path,e.path),_a=(t,e)=>e.isExternal===void 0?!0:t.imports.some(n=>n.isExternal)===e.isExternal,Wa=(t,e)=>{if(!e.tags||e.tags.length===0)return!0;let r=e.tags.filter(s=>!s.startsWith("!")),n=e.tags.filter(s=>s.startsWith("!")).map(s=>s.slice(1));return!(r.length>0&&!r.some(s=>t.tags.some(o=>o.name===s))||n.some(s=>t.tags.some(o=>o.name===s)))},za=(t,e)=>!e.allTags?.length||e.allTags.every(r=>t.tags.some(n=>n.name===r)),$a=(t,e)=>!e.importsFile||t.imports.some(r=>r.toPath?.includes(e.importsFile)),Ua=(t,e,r)=>e.importedBy===void 0?!0:(r?.get(t.path)??[]).some(s=>s.includes(e.importedBy)),Ba=(t,e)=>e.minImports===void 0||t.imports.length>=e.minImports,Ja=(t,e)=>e.maxImports===void 0||t.imports.length<=e.maxImports,Ka=(t,e)=>e.minSize===void 0||t.size>=e.minSize,Ha=(t,e)=>e.maxSize===void 0||t.size<=e.maxSize,Va=(t,e)=>e.hasDocstring===void 0||!!t.description===e.hasDocstring,Qa=(t,e)=>e.isDocumented===void 0||!!t.documentedBy?.length===e.isDocumented,Xa=(t,e)=>e.isStale===void 0||!!t.staleFor?.length===e.isStale,Ya=(t,e)=>e.minCoverage===void 0||(t.coveragePct??101)>=e.minCoverage,qa=(t,e)=>e.maxCoverage===void 0||(t.coveragePct??0)<=e.maxCoverage,Za=(t,e)=>e.minExportUsage===void 0||(t.avgExportUsage??-1)>=e.minExportUsage,ec=(t,e)=>e.maxExportUsage===void 0||(t.avgExportUsage??0)<=e.maxExportUsage,tc=(t,e)=>e.minComplexity===void 0||(t.complexity??-1/0)>=e.minComplexity,rc=(t,e)=>e.maxComplexity===void 0||(t.complexity??0)<=e.maxComplexity,nc=(t,e)=>e.minCognitiveComplexity===void 0||(t.cognitiveComplexity??-1/0)>=e.minCognitiveComplexity,sc=(t,e)=>e.maxCognitiveComplexity===void 0||(t.cognitiveComplexity??0)<=e.maxCognitiveComplexity,oc=(t,e)=>e.minCommits===void 0||(t.commitCount90d??-1/0)>=e.minCommits,ic=(t,e)=>e.maxCommits===void 0||(t.commitCount90d??0)<=e.maxCommits,ac=(t,e,r)=>!e.any?.length||e.any.some(n=>be(t,n,r)),cc=[La,Oa,Ga,ja,_a,Wa,za,$a,Ua,Ba,Ja,Ka,Ha,Va,Qa,Xa,Ya,qa,Za,ec,tc,rc,nc,sc,oc,ic,ac]});function Qe(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 n=t.nodes.filter(i=>be(i,e,r)),s=new Set(n.map(i=>i.path)),o=n.map(i=>({...i,imports:i.imports.filter(a=>!a.toPath||s.has(a.toPath))}));if(e.sort){let i=e.sortDir==="asc"?-1:1;o.sort((a,c)=>{let p=0;return e.sort==="size"?p=c.size-a.size:e.sort==="imports"?p=c.imports.length-a.imports.length:e.sort==="commitCount90d"?p=(c.commitCount90d??0)-(a.commitCount90d??0):e.sort==="exportUsage"?p=(c.avgExportUsage??0)-(a.avgExportUsage??0):e.sort==="complexity"?p=(c.complexity??0)-(a.complexity??0):e.sort==="cognitiveComplexity"&&(p=(c.cognitiveComplexity??0)-(a.cognitiveComplexity??0)),p*i})}return e.limit!==void 0&&o.splice(e.limit),{nodes:o,cycles:t.cycles?.filter(i=>i.every(a=>s.has(a)))??void 0}}var $n=m(()=>{"use strict";l();ir();ir()});function Un(t,e){let r=e.indexOf(":");if(r===-1)return;let n=e.slice(0,r).trim().toLowerCase(),s=e.slice(r+1).trim();if(!(!n||!s))switch(n){case"category":t.category=s;break;case"type":t.type=s;break;case"tag":case"tags":s.includes("+")?t.allTags=[...t.allTags??[],...s.split("+")]:t.tags=[...t.tags??[],s];break;case"path":t.path=s;break;case"external":t.isExternal=s.toLowerCase()==="true";break;case"importsfile":t.importsFile=s;break;case"importedby":t.importedBy=s;break;case"minimports":t.minImports=parseInt(s,10);break;case"maximports":t.maxImports=parseInt(s,10);break;case"minsize":t.minSize=parseInt(s,10);break;case"maxsize":t.maxSize=parseInt(s,10);break;case"sort":t.sort=s;break;case"sortdir":t.sortDir=s.toLowerCase()==="asc"?"asc":"desc";break;case"limit":t.limit=parseInt(s,10);break;case"hasdocstring":t.hasDocstring=s.toLowerCase()!=="false";break;case"mincoverage":t.minCoverage=parseInt(s,10);break;case"maxcoverage":t.maxCoverage=parseInt(s,10);break;case"minexportusage":t.minExportUsage=parseFloat(s);break;case"maxexportusage":t.maxExportUsage=parseFloat(s);break;case"mincomplexity":t.minComplexity=parseInt(s,10);break;case"maxcomplexity":t.maxComplexity=parseInt(s,10);break;case"mincognitivecomplexity":t.minCognitiveComplexity=parseInt(s,10);break;case"maxcognitivecomplexity":t.maxCognitiveComplexity=parseInt(s,10);break;case"mincommits":t.minCommits=parseInt(s,10);break;case"maxcommits":t.maxCommits=parseInt(s,10);break;case"isdocumented":t.isDocumented=s.toLowerCase()!=="false";break;case"isstale":t.isStale=s.toLowerCase()!=="false";break;case"lastauthor":t.lastAuthor=s;break}}function lc(t){let e=[];for(let r of t.split("|")){let n=r.trim();if(!n)continue;let s={};Un(s,n),Object.keys(s).length>0&&e.push(s)}return e}function Xe(t){let e={},r=t.split(",");for(let n of r){let s=n.trim();if(s.toLowerCase().startsWith("any(")&&s.endsWith(")")){let o=s.slice(4,-1),i=lc(o);i.length>0&&(e.any=[...e.any??[],...i]);continue}Un(e,n)}return e}var Bn=m(()=>{"use strict";l()});var Jn=m(()=>{"use strict";l();$n();Bn()});import F from"typescript";function ne(t){let e=[];for(let r of t.statements){if(!F.isExpressionStatement(r))continue;let n=r.expression;if(!F.isCallExpression(n))continue;let s=n.expression;F.isIdentifier(s)&&Kn.has(s.text)&&e.push(n),F.isPropertyAccessExpression(s)&&F.isIdentifier(s.expression)&&Kn.has(s.expression.text)&&e.push(n)}return e}function se(t,e,r){for(let n of t.arguments){if(!F.isObjectLiteralExpression(n))continue;let s=n.properties.find(o=>F.isPropertyAssignment(o)&&F.isIdentifier(o.name)&&o.name.text===e);if(!(!s||!F.isArrayLiteralExpression(s.initializer)))return s.initializer.elements.filter(F.isStringLiteral).map(o=>o.text)}return null}function oe(t,e,r,n){if(t.arguments.length===0)return null;for(let o=1;o<t.arguments.length;o++){let i=t.arguments[o];if(!F.isObjectLiteralExpression(i))continue;let a=i.properties.find(p=>F.isPropertyAssignment(p)&&F.isIdentifier(p.name)&&p.name.text===e);if(a)return{start:a.initializer.getStart(n),end:a.initializer.getEnd(),text:r};let c=i.getEnd()-1;return{start:c,end:c,text:`${i.properties.length>0?", ":""}${e}: ${r}`}}let s=t.arguments[t.arguments.length-1];return{start:s.getStart(n),end:s.getStart(n),text:`{ ${e}: ${r} }, `}}function ie(t,e,r){let n=t.arguments;for(let s=1;s<n.length;s++){let o=n[s];if(!F.isObjectLiteralExpression(o))continue;let i=o.properties.findIndex(c=>F.isPropertyAssignment(c)&&F.isIdentifier(c.name)&&c.name.text===e);if(i<0)continue;if(o.properties.length===1)return{start:n[s-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 ae(t,e){let r=[...e].sort((s,o)=>o.start-s.start),n=t;for(let s of r)n=n.slice(0,s.start)+s.text+n.slice(s.end);return n}function ce(t){return`[${t.map(e=>JSON.stringify(e)).join(", ")}]`}var Kn,L,le=m(()=>{"use strict";l();Kn=new Set(["describe","test","it"]);L=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"])});import Hn from"path";import Vn from"typescript";function pc(t){return ce(t.map(e=>`@${e}`))}function fc(t){return t.map(e=>e.startsWith("@")?e.slice(1):e)}var Ye,Qn=m(()=>{"use strict";l();le();Ye=class{name="cypress";canHandle(e){return L.has(Hn.extname(e).toLowerCase())}apply(e,r,n){let s=Vn.createSourceFile(Hn.basename(e),r,Vn.ScriptTarget.Latest,!0),o=ne(s);if(o.length===0)return r;let i=se(o[0],"tags",s),a=[...n].sort();if(i!==null&&JSON.stringify(fc(i).sort())===JSON.stringify(a))return r;let c=o.flatMap(p=>{let g=n.length===0?ie(p,"tags",s):oe(p,"tags",pc(a),s);return g?[g]:[]});return c.length>0?ae(r,c):r}}});import mc from"path";function uc(t){return["# <mokosh-tags>",...t.map(e=>`@${e}`),"# </mokosh-tags>"].join(`
4
- `)+`
5
-
6
- `}function gc(t){let e=new Set;cr.lastIndex=0;let r=cr.exec(t);for(;r!==null;)r[1]&&e.add(r[1]),r=cr.exec(t);return e}var ar,cr,qe,Xn=m(()=>{"use strict";l();ar=/# <mokosh-tags>[\s\S]*?# <\/mokosh-tags>\n*/,cr=/^@([a-zA-Z0-9_-]+)/gm;qe=class{name="gherkin";canHandle(e){return mc.extname(e).toLowerCase()===".feature"}apply(e,r,n){let s=r.replace(ar,""),o=gc(s),i=n.filter(c=>!o.has(c)),a=i.length>0?uc(i):"";return ar.test(r)?r.replace(ar,a):a?r.replace(/^(Feature:)/m,`${a}$1`):r}}});function Yn(t,e){let r=t.replace(/\\/g,"/"),n=e.replace(/\\/g,"/"),s="";for(let o=0;o<r.length;o++){let i=r[o];i==="*"?r[o+1]==="*"?(s+=".*",o++):s+="[^/]*":i==="?"?s+="[^/]":i!==void 0&&(s+=i.replace(/[.+^${}()|[\]\\]/g,"\\$&"))}return new RegExp(`^${s}$`).test(n)}var qn=m(()=>{"use strict";l()});import dc from"path";function yc(t){return`//go:build ${t.map(r=>`mokosh_${r}`).join(" || ")}
7
- `}function xc(t){let e=lr.exec(t);if(!e)return null;let r=e[0],n=/mokosh_([a-zA-Z0-9_-]+)/g,s=[],o=n.exec(r);for(;o!==null;)o[1]&&s.push(o[1]),o=n.exec(r);return s}var lr,hc,Ze,Zn=m(()=>{"use strict";l();lr=/^\/\/go:build mokosh_[^\n]+\n/m,hc=/^package\s+\S+/m;Ze=class{name="go";canHandle(e){return dc.basename(e).endsWith("_test.go")}apply(e,r,n){let s=xc(r),o=[...n].sort();if(s!==null&&JSON.stringify([...s].sort())===JSON.stringify(o))return r;if(n.length===0)return r.replace(lr,"");let i=yc(o);if(s!==null)return r.replace(lr,i);let a=hc.exec(r);if(!a)return r;let c=a.index;return r.slice(0,c)+i+`
8
- `+r.slice(c)}}});import Sc from"path";function Cc(t){return["/**",...t.map(e=>` * @group ${e}`)," */"].join(`
9
- `)+`
10
-
11
- `}function vc(t){let e=[];pr.lastIndex=0;let r=pr.exec(t);for(;r!==null;)r[1]&&e.push(r[1]),r=pr.exec(t);return e}var bc,pr,et,es=m(()=>{"use strict";l();le();bc=/^\/\*\*\n(?: \* @group .+\n)+ \*\/\n+/,pr=/^ \* @group (.+)$/gm;et=class{name="jest";canHandle(e){return L.has(Sc.extname(e).toLowerCase())}apply(e,r,n){let s=bc.exec(r),o=s?vc(s[0]):null,i=[...n].sort();if(o!==null&&JSON.stringify([...o].sort())===JSON.stringify(i))return r;let a=s?r.slice(s[0].length):r;return n.length===0?a:Cc(i)+a}}});import ts from"path";import rs from"typescript";function kc(t){return ce(t.map(e=>`@${e}`))}function Ec(t){return t.map(e=>e.startsWith("@")?e.slice(1):e)}var tt,ns=m(()=>{"use strict";l();le();tt=class{name="playwright";canHandle(e){return L.has(ts.extname(e).toLowerCase())}apply(e,r,n){let s=rs.createSourceFile(ts.basename(e),r,rs.ScriptTarget.Latest,!0),o=ne(s);if(o.length===0)return r;let i=se(o[0],"tag",s),a=[...n].sort();if(i!==null&&JSON.stringify(Ec(i).sort())===JSON.stringify(a))return r;let c=o.flatMap(p=>{let g=n.length===0?ie(p,"tag",s):oe(p,"tag",kc(a),s);return g?[g]:[]});return c.length>0?ae(r,c):r}}});import wc from"path";function Fc(t){let e=t.map(r=>`pytest.mark.${r}`).join(", ");return t.length===1?`pytestmark = pytest.mark.${t[0]}`:`pytestmark = [${e}]`}function Tc(t){let e=fr.exec(t);if(!e)return null;let r=e[0],n=[],s=/pytest\.mark\.([a-zA-Z0-9_-]+)/g,o=s.exec(r);for(;o!==null;)o[1]&&n.push(o[1]),o=s.exec(r);return n}function Pc(t){let e=t.split(`
12
- `),r=-1;for(let s=0;s<e.length;s++){let o=e[s].trimStart();(o.startsWith("import ")||o.startsWith("from "))&&(r=s)}if(r<0)return 0;let n=0;for(let s=0;s<=r;s++)n+=e[s].length+1;return n}var fr,Nc,rt,ss=m(()=>{"use strict";l();fr=/^pytestmark\s*=\s*.+$/m,Nc=/^import pytest\s*$/m;rt=class{name="pytest";canHandle(e){return wc.extname(e).toLowerCase()===".py"}apply(e,r,n){let s=Tc(r),o=[...n].sort();if(s!==null&&JSON.stringify([...s].sort())===JSON.stringify(o))return r;if(n.length===0)return r.replace(fr,"").replace(/\n{3,}/g,`
13
-
14
- `);let i=Fc(o);if(s!==null)return r.replace(fr,i);let a=Nc.test(r),c=Pc(r),p=r.slice(0,c),g=r.slice(c),h=a?"":`import pytest
2
+ var bt=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var u=(t,e)=>()=>(t&&(e=t(t=0)),e);var fa=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);import ma from"path";import{fileURLToPath as ua}from"url";var ga,da,m,l=u(()=>{"use strict";ga=()=>ua(import.meta.url),da=()=>ma.dirname(ga()),m=da()});function Re(t){mn.push(t)}function un(t){return[...ha,...mn].some(e=>typeof e=="string"?t.includes(e):e instanceof RegExp?e.test(t):e(t))}function Le(t){gn.push(t)}function fe(){return[...ya,...gn]}function Oe(t){dn.push(t)}function St(){return[...xa,...dn]}function Ct(t){hn=t}function vt(){return hn}var ha,mn,ya,gn,xa,dn,hn,te=u(()=>{"use strict";l();ha=[".config.","biome.json","tsconfig.json","package.json",".prettierrc",".eslintrc"],mn=[];ya=[".test.",".spec.","-test.","-spec."],gn=[];xa=["jest","vitest","playwright","cypress","@testing-library/"],dn=[];hn=.8});import kt from"fs";import yn from"path";function re(t,{allowJs:e=!0,isExplicitPath:r=!1}={}){if(r){let n=yn.resolve(t);return kt.existsSync(n)?n.endsWith(".json")?xn(n):e?bn(n):{}:{}}for(let n of ba){let o=yn.resolve(t,n);if(kt.existsSync(o)){if(n.endsWith(".json"))return xn(o);if(e)return bn(o)}}return{}}function xn(t){return JSON.parse(kt.readFileSync(t,"utf-8"))}function bn(t){let e=bt(t);return e&&typeof e=="object"&&"default"in e&&(e=e.default),typeof e=="function"?e({}):e}function wt(t){for(let e of t.configMatchers??[])Re(e);for(let e of t.testPatterns??[])Le(e);for(let e of t.testLibraries??[])Oe(e);t.barrelThreshold!==void 0&&Ct(t.barrelThreshold)}function F(t){return{gitStats:t?.gitStats??!1,parallelParsing:t?.parallelParsing,pathAliases:t?.pathAliases}}var ba,Et=u(()=>{"use strict";l();te();ba=["mokosh.config.js","mokosh.config.cjs","mokosh.config.json"]});var B,Nt,Ge=u(()=>{"use strict";l();B=["node_modules",".git","dist","build",".next",".cache","mokosh-cache","coverage"],Nt=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".css",".scss",".sass",".less",".styl",".coffee",".ls",".lua",".py",".go",".feature",".md",".mdx"]});import Hf from"fs";import Qf from"path";var Sn=u(()=>{"use strict";l()});var je,Cn=u(()=>{"use strict";l();je={serialize(t){let e=["graph TD"],r=new Set;for(let n of t.nodes.values()){let o=`"${n.path}"`;for(let s of n.imports){if(!s.toPath)continue;let i=`"${s.toPath}"`,a=`${n.path} -> ${s.toPath}`;if(!r.has(a)){let c=s.isStyle?"-- styles -->":"-->";e.push(` ${o} ${c} ${i}`),r.add(a)}}}return e.join(`
3
+ `)}}});var vn=u(()=>{"use strict";l();Cn()});import kn from"fs";import Ca from"path";function Ft(t,e){let r=t.replace(/^\.\//,"");if(e.nodes.has(r))return r;let n=r.replace(/^dist\//,"src/").replace(/\.(js|mjs|cjs)$/,".ts");return e.nodes.has(n)?n:null}function wn(t,e){if(typeof t=="string")return Ft(t,e);if(t&&typeof t=="object"){let r=t;for(let n of["import","require","default"]){let o=wn(r[n],e);if(o)return o}}return null}function va(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 ka(t,e){let r=new Set,n=new Set,o=[...e];for(;o.length;){let s=o.shift();if(n.has(s))continue;n.add(s);let i=t.nodes.get(s);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 f of p.exports)r.add(f.name);o.push(a.toPath)}else for(let p of a.symbols)r.add(p)}}}return r}function Tt(t,e){let r=[],n=Ca.join(e,"package.json");if(kn.existsSync(n))try{let o=JSON.parse(kn.readFileSync(n,"utf8"));if(o.exports&&typeof o.exports=="object"&&!Array.isArray(o.exports))for(let s of Object.values(o.exports)){let i=wn(s,t);i&&!r.includes(i)&&r.push(i)}else if(typeof o.exports=="string"){let s=Ft(o.exports,t);s&&r.push(s)}if(r.length===0)for(let s of[o.main,o.module].filter(Boolean)){let i=Ft(s,t);i&&!r.includes(i)&&r.push(i)}}catch{}if(r.length===0){for(let o of["src/index.ts","src/index.js","index.ts","index.js"])if(t.nodes.has(o)){r.push(o);break}}return r}function wa(t,e){let r=new Set(e);for(let n of e)t.traverse(n,o=>(r.add(o.path),!0),{direction:"outgoing"});return r}function Ea(t,e,r){let n=new Map;for(let o of e){if(r.includes(o))continue;let s=t.nodes.get(o);if(!s)continue;let i=s.category==="barrel";for(let a of s.exports){let c=n.get(a.name),p=!!(a.signature||a.doc);(!c||p&&!i)&&n.set(a.name,{file:o,symbol:a})}}return n}function Na(t,e,r,n){let o=[];for(let s of t){let i=e.get(s),a=n.flatMap(d=>r.nodes.get(d)?.exports??[]).find(d=>d.name===s),c=i?.symbol??a,p=i?.file??n.find(d=>r.nodes.get(d)?.exports.some(y=>y.name===s))??n[0],f={name:s,definedIn:p,kind:va(c?.signature)};c?.doc&&(f.doc=c.doc),c?.signature&&(f.signature=c.signature),o.push(f)}return o.sort((s,i)=>s.name.localeCompare(i.name)),o}function Fa(t,e,r){let n=c=>t.nodes.get(c)?.category==="test",o=[...e].filter(c=>!r.includes(c)&&!n(c)),s=[...t.nodes.keys()].filter(c=>!e.has(c)),i=s.filter(c=>!n(c)),a=s.filter(c=>n(c));return{internalFiles:o,unreachableFromEntry:i,testFiles:a}}function Pt(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=wa(t,e),n=Ea(t,r,e),o=ka(t,e),s=Na(o,n,t,e),{internalFiles:i,unreachableFromEntry:a,testFiles:c}=Fa(t,r,e);return{entryPoints:e,publicExports:s,internalFiles:i,unreachableFromEntry:a,testFiles:c}}var It=u(()=>{"use strict";l()});function Dt(t,e){let r=null,n=[];for(let s of t.nodes.values()){s.exports.some(i=>i.name===e)&&(r=s.path);for(let i of s.callEdges??[])i.to===e&&n.push({file:s.path,callerFunction:i.from})}let o=[];if(r){let s=t.nodes.get(r);for(let i of s?.callEdges??[])i.from===e&&o.push({file:i.toFile,calleeFunction:i.to})}return{functionName:e,definedIn:r,callers:n,callees:o}}var Mt=u(()=>{"use strict";l()});import pm from"fs";import mm from"path";function En(t){let e=[...t.nodes.entries()].sort(([n],[o])=>n.localeCompare(o)).map(([n,o])=>`${n}:${o.mtime}:${o.size}`).join("|"),r=2166136261;for(let n=0;n<e.length;n++)r^=e.charCodeAt(n),r=Math.imul(r,16777619)>>>0;return r.toString(16).padStart(8,"0")}function At(t){let e=new Map;for(let r of t.nodes.keys()){let n=[];t.traverse(r,o=>(o.path!==r&&n.push(o.path),!0),{direction:"incoming"}),e.set(r,n)}return{impact:e,graphHash:En(t)}}function Rt(t,e){return t.impact.get(e)??[]}var Lt=u(()=>{"use strict";l()});import _e from"fs";import Ta from"path";import{load as Nn}from"js-yaml";function Fn(t){let e=t.lastIndexOf("@");return e>0?t.substring(0,e):t}function Pa(t){return t.replace(/:$/,"").split(",").map(e=>{let r=e.trim();return r.startsWith('"')&&(r=r.slice(1)),r.endsWith('"')&&(r=r.slice(0,-1)),Fn(r)}).filter(Boolean)}function Ia(t,e){let r=t.startsWith("/")?t.slice(1):t,n=r.lastIndexOf("@");return n>0?{name:r.substring(0,n),version:e||r.substring(n+1)}:{name:r,version:e}}function Da(t){try{let e=Nn(t),r={dependencies:{}};for(let[n,o]of Object.entries(e))if(!(n==="__metadata"||!o?.version))for(let s of n.split(", ")){let i=Fn(s);i&&(r.dependencies[i]={version:o.version,...o.dependencies!==void 0&&{dependencies:o.dependencies}})}return r}catch{return null}}function Ma(t){let e={dependencies:{}};for(let r of t.split(/\n\n+/)){let n=r.split(`
4
+ `).filter(c=>c.trim().length>0&&!c.trim().startsWith("#"));if(n.length<2)continue;let o=n[0];if(!o||o.startsWith(" "))continue;let s=Pa(o);if(s.length===0)continue;let a=n.find(c=>c.trim().startsWith('version "'))?.match(/version "(.*?)"/)?.[1]??"";for(let c of s)e.dependencies[c]={version:a}}return e}function Aa(t){let e=_e.readFileSync(t,"utf-8"),r=JSON.parse(e),n={dependencies:{}};if(r.packages)for(let[o,s]of Object.entries(r.packages)){if(!o.startsWith("node_modules/"))continue;let i=o.replace("node_modules/","");i.includes("node_modules/")||(n.dependencies[i]={version:s.version,...s.dependencies!==void 0&&{dependencies:s.dependencies}})}else if(r.dependencies)for(let[o,s]of Object.entries(r.dependencies))n.dependencies[o]={version:s.version,...s.dependencies!==void 0&&{dependencies:s.dependencies}};return n}function Ra(t){let e=_e.readFileSync(t,"utf-8");if(e.includes("__metadata:")){let r=Da(e);if(r!==null)return r}return Ma(e)}function La(t){let e=_e.readFileSync(t,"utf-8"),r={dependencies:{}};try{let n=Nn(e);if(n.packages)for(let[o,s]of Object.entries(n.packages)){let{name:i,version:a}=Ia(o,s.version);i&&(r.dependencies[i]={version:a,...s.dependencies!==void 0&&{dependencies:s.dependencies}})}if(n.dependencies)for(let[o,s]of Object.entries(n.dependencies)){if(r.dependencies[o])continue;let i=typeof s=="string"?s:s.version;r.dependencies[o]={version:i||""}}}catch{}return r}function Tn(t){let e={"package-lock.json":Aa,"yarn.lock":Ra,"pnpm-lock.yaml":La},r=Ot.map(n=>[n,e[n]]);for(let[n,o]of r){let s=Ta.join(t,n);if(_e.existsSync(s))return o(s)}return null}var Ot,Gt=u(()=>{"use strict";l();Ot=["package-lock.json","yarn.lock","pnpm-lock.yaml"]});function Oa(t){let e=5381;for(let r=0;r<t.length;r++)e=e*33+t.charCodeAt(r)>>>0;return e.toString(36)}function Ga(t,e){let r=[];for(let n=0;n<=t.length-e;n++)r.push(Oa(t.slice(n,n+e).map(o=>o.text).join(" ")));return r}function ja(t,e,r){let n=t.get(e.file),o=t.get(r.file);if(!n||!o)return 0;let s=0;for(;e.windowIndex+s+1<n.length&&r.windowIndex+s+1<o.length&&n[e.windowIndex+s+1]===o[r.windowIndex+s+1];)s++;return s}function _a(t,e,r){if(e.windowIndex===0||r.windowIndex===0)return!0;let n=t.get(e.file),o=t.get(r.file);return!n||!o?!0:n[e.windowIndex-1]!==o[r.windowIndex-1]}function Pn(t,e,r){let n=new Map,o=new Map,s=new Map;for(let{file:a,tokens:c}of t){if(c.length<e)continue;o.set(a,c);let p=Ga(c,e);n.set(a,p);for(let f=0;f<p.length;f++){let d={file:a,windowIndex:f},y=s.get(p[f]);y?y.push(d):s.set(p[f],[d])}}let i=[];for(let a of s.values())if(!(a.length<2))for(let c=0;c<a.length;c++)for(let p=c+1;p<a.length;p++){let f=a[c],d=a[p];if(f.file===d.file&&f.windowIndex===d.windowIndex||!_a(n,f,d))continue;let y=ja(n,f,d),x=e+y;if(f.file===d.file){let[j,ee]=f.windowIndex<d.windowIndex?[f,d]:[d,f];if(j.windowIndex+x>ee.windowIndex)continue}let k=o.get(f.file),C=o.get(d.file),E={file:f.file,startLine:k[f.windowIndex].line,endLine:k[f.windowIndex+x-1].line},I={file:d.file,startLine:C[d.windowIndex].line,endLine:C[d.windowIndex+x-1].line},G=Math.min(E.endLine-E.startLine+1,I.endLine-I.startLine+1);G<r||i.push({occurrences:[E,I],lines:G,tokens:x})}return i.sort((a,c)=>c.lines-a.lines)}var In=u(()=>{"use strict";l()});function Dn(t,e,r){let n=t.slice(e,r).replace(/[^\n]/g," ");return t.slice(0,e)+n+t.slice(r)}function za(t,e){if(!e)return t;let r=t;for(let[n,o]of e.block??[]){let s=0;for(;;){let i=r.indexOf(n,s);if(i===-1)break;let a=r.indexOf(o,i+n.length),c=a===-1?r.length:a+o.length;r=Dn(r,i,c),s=c}}for(let n of e.line??[]){let o=0;for(;;){let s=r.indexOf(n,o);if(s===-1)break;let i=r.indexOf(`
5
+ `,s),a=i===-1?r.length:i;r=Dn(r,s,a),o=a}}return r}function An(t,e,r=!0){let n=za(t,Wa[e]),o=[],s=1,i=0;jt.lastIndex=0;let a=jt.exec(n);for(;a!==null;){for(let f=i;f<a.index;f++)n[f]===`
6
+ `&&s++;i=a.index;let c=a[0],p=c;Ua.test(c)&&!Ja.has(c)?p="ID":r&&(Mn.test(c)||Ba.test(c))&&(p=Mn.test(c)?"NUM":"STR"),o.push({text:p,line:s});for(let f=i;f<a.index+c.length;f++)n[f]===`
7
+ `&&s++;i=a.index+c.length,a=jt.exec(n)}return o}var Wa,$a,jt,Ua,Mn,Ba,Ja,Rn=u(()=>{"use strict";l();Wa={typescript:{line:["//"],block:[["/*","*/"]]},javascript:{line:["//"],block:[["/*","*/"]]},go:{line:["//"],block:[["/*","*/"]]},css:{block:[["/*","*/"]]},scss:{line:["//"],block:[["/*","*/"]]},less:{line:["//"],block:[["/*","*/"]]},stylus:{line:["//"],block:[["/*","*/"]]},python:{line:["#"]},gherkin:{line:["#"]},coffeescript:{line:["#"],block:[["###","###"]]},livescript:{line:["#"],block:[["###","###"]]},lua:{line:["--"],block:[["--[[","]]"]]},markdown:{block:[["<!--","-->"]]}};$a=["===","!==","...","=>","==","!=","<=",">=","&&","||","::","->","..","+=","-=","*=","/="],jt=new RegExp(`${$a.map(t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|")}|[A-Za-z_$][A-Za-z0-9_$]*|\\d+(?:\\.\\d+)?|"(?:\\\\.|[^"\\\\])*"|'(?:\\\\.|[^'\\\\])*'|\`(?:\\\\.|[^\`\\\\])*\`|\\S`,"g"),Ua=/^[A-Za-z_$][A-Za-z0-9_$]*$/,Mn=/^\d+(?:\.\d+)?$/,Ba=/^(".*"|'.*'|`.*`)$/s,Ja=new Set(["if","else","elif","for","while","do","switch","case","default","break","continue","return","function","def","class","struct","interface","const","let","var","local","import","export","from","package","try","catch","except","finally","throw","raise","new","this","self","end","then","yield","async","await","nil","null","None","true","false","True","False","and","or","not","in","of","is"])});import{readFile as Ka}from"fs/promises";import _t from"path";function Ha(t){return Ot.includes(_t.basename(t))}function Va(t,e){if(e.length===0)return!1;let r=new Set(e);return t.split(_t.sep).some(n=>r.has(n))}async function Wt(t,e,r={}){let{minLines:n=6,windowSize:o=15,ignoreLiterals:s=!0,limit:i=50,ignoreDirs:a=B}=r,c=[...t.nodes.values()].filter(f=>!Ha(f.path)&&!Va(f.path,a)),p=(await Promise.all(c.map(async f=>{try{let d=await Ka(_t.join(e,f.path),"utf8");return{file:f.path,tokens:An(d,f.type,s)}}catch{return}}))).filter(f=>f!==void 0);return Pn(p,o,n).slice(0,i)}var zt=u(()=>{"use strict";l();Ge();Gt();In();Rn()});import We from"path";function Qa(t){let e=new Map;for(let[r,n]of t){let o=n.imports.filter(s=>s.toPath&&!s.isExternal).length;o>0&&e.set(r,o)}return e}function Xa(t,e,r){let n=new Map;for(let[o,s]of e){if(s<r)continue;let i=t.get(o);if(!i||i.category==="test"||i.category==="barrel")continue;let a=We.extname(o),c=We.basename(o,a),p=c==="index"?We.basename(We.dirname(o)):c;n.set(o,{path:o,outDegree:s,tag:`feature:${p}`})}return n}function J(t,e){let r=e?.minOutDegree??5;return Xa(t,Qa(t),r)}var ze=u(()=>{"use strict";l()});function qa(t,e){let r=new Map;for(let n of e.values()){let o=new Set;t.traverse(n.path,s=>(s.path!==n.path&&o.add(s.path),!0),{direction:"outgoing"}),r.set(n.path,o)}return r}function Za(t,e,r,n){let o=new Map;for(let[s]of t){if(e.has(s))continue;let i=null;for(let a of e.values())r.get(a.path)?.has(s)&&(!i||n(a,i)<0)&&(i=a);i&&o.set(s,i.path)}return o}function ec(t,e){let r=new Map;for(let n of t.values()){let o=n.tag.replace("feature:",""),s=[];for(let[i,a]of e)a===n.path&&s.push(i);r.set(o,{hub:n.path,outDegree:n.outDegree,files:s})}return r}function tc(t,e,r){let n=[];for(let o of t.keys())!e.has(o)&&!r.has(o)&&n.push(o);return n}function me(t,e){let r=e?.detectFn??J,n=e?.hubComparator??Ya,o=r(t.nodes,e),s=qa(t,o),i=Za(t.nodes,o,s,n);return{features:ec(o,i),unassigned:tc(t.nodes,o,i)}}var Ya,$e=u(()=>{"use strict";l();ze();Ya=(t,e)=>t.outDegree-e.outDegree});function $t(t){let e=new Map;for(let r of t.nodes.values())e.set(r.type,(e.get(r.type)??0)+1);return[...e.entries()].map(([r,n])=>({type:r,fileCount:n,exportsTracked:Ln.has(r),importSymbolsTracked:On.has(r),callEdgesTracked:Ue.has(r)})).sort((r,n)=>n.fileCount-r.fileCount)}var Ln,On,Ue,Ut=u(()=>{"use strict";l();Ln=new Set(["typescript","javascript","python","go","scss","less","lua","coffeescript"]),On=new Set(["typescript","javascript","python"]),Ue=new Set(["typescript","javascript","go","python"])});var ue,Gn=u(()=>{"use strict";l();ue=class{constructor(e){this.nodes=e}nodes;findUnusedFiles(e){let r=new Set(this.nodes.keys());return e.filter(n=>!r.has(n))}findHighExportUsage(e){let r=[];for(let n of this.nodes.values()){if(n.maxExportUsage===void 0||n.maxExportUsage<e)continue;let o=n.imports.reduce((s,i)=>(i.exportUsageRatio??0)>(s?.exportUsageRatio??0)?i:s,null);r.push({path:n.path,maxExportUsage:n.maxExportUsage,tightestDep:o?.toPath??""})}return r.sort((n,o)=>o.maxExportUsage-n.maxExportUsage)}findCycles(){let e=[],r=new Set,n=new Set,o=[],s=i=>{r.add(i),n.add(i),o.push(i);let a=this.nodes.get(i);if(a){for(let c of a.imports)if(!(!c.toPath||c.isExternal))if(n.has(c.toPath)){let p=o.indexOf(c.toPath);e.push([...o.slice(p),c.toPath])}else r.has(c.toPath)||s(c.toPath)}n.delete(i),o.pop()};for(let i of this.nodes.keys())r.has(i)||s(i);return e}}});var D,ge=u(()=>{"use strict";l();Gn();D=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 n of e.nodes)r.set(n.path,n);return new t(r)}getIncomingEdgesMap(){if(this._incomingEdgesCache)return this._incomingEdgesCache;let e=new Map;for(let r of this.nodes.values())for(let n of r.imports)if(n.toPath){let o=e.get(n.toPath)||[];o.push(r.path),e.set(n.toPath,o)}return this._incomingEdgesCache=e,e}dfs(e,r,n,o){let s=new Set,i=n.maxDepth??1/0,a=(c,p,f)=>{if(p>i||s.has(c))return;let d=this.nodes.get(c);if(d&&(s.add(c),r(d,p,f)!==!1))for(let y of o(c))a(y,p+1,c)};a(e,0,null)}traverse(e,r,n={}){let o=n.direction??"outgoing",s=o==="incoming"?this.getIncomingEdgesMap():null;this.dfs(e,r,n,i=>o==="outgoing"?this.nodes.get(i)?.imports.map(a=>a.toPath).filter(Boolean)??[]:s?.get(i)??[])}getCallIncomingCache(){if(this._callIncomingCache)return this._callIncomingCache;let e=new Map;for(let r of this.nodes.values())for(let n of r.callEdges??[]){let o=e.get(n.toFile)??[];o.push(r.path),e.set(n.toFile,o)}return this._callIncomingCache=e,e}traverseCalls(e,r,n={}){let o=n.direction??"outgoing",s=o==="incoming"?this.getCallIncomingCache():null;this.dfs(e,r,n,i=>o==="outgoing"?this.nodes.get(i)?.callEdges?.map(a=>a.toFile)??[]:s?.get(i)??[])}getCallers(e){let r=[];return this.traverseCalls(e,n=>(n.path!==e&&r.push(n.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(n=>this.nodes.get(n.toPath)).filter(n=>n!==void 0):[]}findUnusedFiles(e){return new ue(this.nodes).findUnusedFiles(e)}findCycles(){return new ue(this.nodes).findCycles()}}});var K,Be=u(()=>{"use strict";l();K=class{affectedSymbols=new Map;constructor(e,r){this.affectedSymbols.set(e,new Set(["default",...r]))}updateAffectedSymbols(e,r){let n=this.affectedSymbols.get(r)||new Set,o=e.imports.find(c=>c.toPath===r);if(!o)return!1;let s=o.symbols||["*"],i=new Set;for(let c of s)(c==="*"||n.has("*")||n.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 H(t,e){let r=t.nodes.get(e);if(r)return{category:r.category,exports:r.exports.map(n=>n.name)}}function Bt(t,e,r=1){let n=[];return t.traverse(e,(o,s,i)=>{if(o.path===e)return!0;let a=i?t.nodes.get(i)?.imports.find(c=>c.toPath===o.path):void 0;return n.push({path:o.path,...a?.symbols?{symbols:a.symbols}:{}}),!0},{direction:"outgoing",maxDepth:r}),n}function de(t,e){let r=[];return t.traverse(e,n=>{if(n.path===e)return!0;let o=n.imports.find(s=>s.toPath===e);return r.push({path:n.path,...o?.symbols?{symbols:o.symbols}:{}}),!0},{direction:"incoming",maxDepth:1}),r}function Jt(t,e,r={}){let{testsOnly:n=!1,changedSymbols:o}=r,s=o?new K(e,o):null,i=[];return t.traverse(e,(a,c,p)=>{if(a.path===e)return!0;if(s&&p&&!s.updateAffectedSymbols(a,p))return!1;let f=a.category==="test"||a.tags.some(d=>d.name==="test");return(!n||f)&&i.push(a.path),!0},{direction:"incoming"}),i}function Kt(t,e,r={}){let{depth:n=1,withEdgeDetail:o=!1}=r,s=[];return t.traverseCalls(e,i=>{if(i.path===e)return!0;let a={file:i.path};return o&&(a.edges=(i.callEdges??[]).filter(c=>c.toFile===e).map(c=>({from:c.from,to:c.to}))),s.push(a),!0},{direction:"incoming",maxDepth:n}),s}function Ht(t,e={}){let{metric:r="cognitiveComplexity",threshold:n=10,limit:o=20}=e;return[...t.nodes.values()].flatMap(s=>(s.functions??[]).filter(i=>i[r]>=n).map(i=>({file:s.path,name:i.name,line:i.line,complexity:i.complexity,cognitiveComplexity:i.cognitiveComplexity}))).sort((s,i)=>i[r]-s[r]).slice(0,o)}function Vt(t){return{nodes:t.nodes.map(r=>({path:r.path,type:r.type,category:r.category,exports:r.exports.map(n=>n.name),tags:r.tags.filter(n=>n.kind==="comment-marker"||n.kind==="import").map(n=>n.name),importsFiles:r.imports.filter(n=>!n.isExternal&&n.toPath).map(n=>n.toPath),...r.description!==void 0&&{description:r.description},...r.testedBy!==void 0&&{testedBy:r.testedBy},...r.coveragePct!==void 0&&{coveragePct:r.coveragePct},...r.avgExportUsage!==void 0&&{avgExportUsage:r.avgExportUsage},...r.maxExportUsage!==void 0&&{maxExportUsage:r.maxExportUsage}})),cycles:t.cycles}}function Qt(t){let e=t.getPackageDependencies(),r=Array.from(t.packages.values()).map(({graph:n,pkg:o})=>({name:o.name,relativeRoot:o.relativeRoot,nodeCount:n.nodes.size,dependsOn:e.get(o.name)??[]}));return{monorepoType:t.type,packageCount:r.length,packages:r}}function Xt(t){return[...t.nodes.values()].some(e=>e.coveragePct!==void 0)}var Yt=u(()=>{"use strict";l();Be()});function jn(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 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")||he(e)==="cli"?"cli":S(e,"util")||S(e,"utils")||S(e,"helper")||S(e,"helpers")?"util":S(e,"model")||S(e,"models")||he(e)==="model"?"model":S(e,"parser")||S(e,"parsers")||he(e)==="parser"?"parser":he(e)==="builder"?"builder":he(e)==="resolver"?"resolver":"other"}function S(t,e){return t.includes(`/${e}/`)||t.includes(`/${e}.`)}function he(t){let e=t.slice(t.lastIndexOf("/")+1);return e.slice(0,e.lastIndexOf("."))||e}var _n=u(()=>{"use strict";l()});function qt(t,e){let r=me(t,e),n=new Map;for(let[s,i]of r.features){for(let a of i.files)n.set(a,s);n.set(i.hub,s)}let o=new Map;for(let s of t.nodes.values()){let i=n.get(s.path);o.set(s.path,{path:s.path,role:jn(s),...s.description?{description:s.description}:{},exports:s.exports.map(a=>a.name),...i?{featureHub:i}:{}})}return o}var Zt=u(()=>{"use strict";l();$e();_n()});function er(t,e){let r=[];for(let n of t.nodes.values())if(n.exports.some(o=>o.name===e))if(Ue.has(n.type)){let o=[];for(let s of t.nodes.values())for(let i of s.callEdges??[])i.to===e&&o.push({file:s.path,callerFunction:i.from});r.push({path:n.path,category:n.category,precision:"call",callers:o})}else{let o=de(t,n.path).map(s=>({file:s.path,...s.symbols?{symbols:s.symbols}:{}}));r.push({path:n.path,category:n.category,precision:"file-level",importers:o})}return r}var Wn=u(()=>{"use strict";l();Ut();Yt()});function rc(t){return t?t.startsWith("interface ")?"interface":t.startsWith("class ")?"class":t.startsWith("enum ")?"enum":"type":"type"}function nc(t,e){if(e==="type-only")return!0;let r=t.signature??"";return r.startsWith("interface ")||r.startsWith("class ")||r.startsWith("enum ")}function tr(t){let e=new Map;for(let n of t.nodes.values())if(!(n.type!=="typescript"&&n.type!=="javascript"))for(let o of n.exports){if(!nc(o,n.category))continue;let s=`${n.path}::${o.name}`;e.set(s,{name:o.name,file:n.path,kind:rc(o.signature),...o.doc?{doc:o.doc}:{}})}let r=[];for(let n of t.nodes.values())if(!(n.type!=="typescript"&&n.type!=="javascript")){for(let o of n.imports)if(!(!o.toPath||o.isExternal||!o.symbols?.length))for(let s of o.symbols)e.has(`${o.toPath}::${s}`)&&r.push({fromFile:n.path,toType:s,toFile:o.toPath})}return{types:e,edges:r}}function rr(t,e){let r=null;for(let s of t.types.values())if(s.name===e){r=s;break}if(!r)return{type:null,usedByFiles:[],uses:[]};let n=new Set,o=new Map;for(let s of t.edges)if(s.toType===e&&s.toFile===r.file&&n.add(s.fromFile),s.fromFile===r.file){let i=t.types.get(`${s.toFile}::${s.toType}`);i&&o.set(`${i.file}::${i.name}`,i)}return{type:r,usedByFiles:Array.from(n),uses:Array.from(o.values())}}var nr=u(()=>{"use strict";l()});import zn from"fs";import pu from"path";function $n(t){try{return zn.statSync(t,{throwIfNoEntry:!1})?.isDirectory()===!0}catch{return!1}}function Je(t){try{return zn.statSync(t,{throwIfNoEntry:!1})?.isFile()===!0}catch{return!1}}var Ke=u(()=>{"use strict";l()});import ye from"fs";import M from"path";function or(t,e){let r=M.join(e,"package.json");if(!ye.existsSync(r))return null;let n={};try{n=JSON.parse(ye.readFileSync(r,"utf-8"))}catch{return null}let o=n.name;return o?{name:o,root:e,relativeRoot:M.relative(t,e),entryPoints:oc(e,n)}:null}function oc(t,e){let r=[];if(e.exports){let o=e.exports;if(typeof o=="string")r.push(M.join(t,o));else if(typeof o=="object"&&o!==null){let s=o["."];if(typeof s=="string")r.push(M.join(t,s));else if(typeof s=="object"&&s!==null){let i=s.import??s.require??s.default;typeof i=="string"&&r.push(M.join(t,i))}}}e.main&&r.push(M.join(t,e.main));for(let o of["src/index.ts","src/index.tsx","index.ts","index.tsx","index.js"])r.push(M.join(t,o));let n=r.filter(Je);return n.length>0?n.slice(0,1):r.slice(0,1)}function ne(t,e){let r=[],n=new Set;for(let o of e){let s=o.replace(/\/$/,"").replace(/^\.\//,"");sc(t,s,n,r)}return r}function sc(t,e,r,n){if(!e.includes("*")){ic(t,e,r,n);return}let o=e.split("/");o.includes("**")?ac(t,o,r,n):cc(t,o,r,n)}function ic(t,e,r,n){let o=M.join(t,e);if(r.has(o)||!$n(o))return;r.add(o);let s=or(t,o);s&&n.push(s)}function ac(t,e,r,n){let o=M.join(t,e[0]==="**"?"":e[0]??"");Un(t,o,r,n)}function cc(t,e,r,n){let o=e.findIndex(a=>a.includes("*")),s=M.join(t,...e.slice(0,o)),i;try{i=ye.readdirSync(s,{withFileTypes:!0})}catch{return}for(let a of i){if(!a.isDirectory())continue;let c=M.join(s,a.name);if(r.has(c))continue;r.add(c);let p=or(t,c);p&&n.push(p)}}function Un(t,e,r,n){let o;try{o=ye.readdirSync(e,{withFileTypes:!0})}catch{return}for(let s of o){if(!s.isDirectory()||s.name==="node_modules"||s.name.startsWith("."))continue;let i=M.join(e,s.name);if(ye.existsSync(M.join(i,"package.json"))&&!r.has(i)){r.add(i);let a=or(t,i);a&&n.push(a)}else Un(t,i,r,n)}}var He=u(()=>{"use strict";l();Ke();Ke()});import sr from"fs";import Bn from"path";var Jn,Kn=u(()=>{"use strict";l();He();Jn={type:"npm",detect(t){let e=Bn.join(t,"package.json");if(!sr.existsSync(e))return null;let r;try{r=JSON.parse(sr.readFileSync(e,"utf-8")).workspaces}catch{return null}if(!r||sr.existsSync(Bn.join(t,"yarn.lock")))return null;let n=Array.isArray(r)?r:r.packages??[];return n.length===0?null:ne(t,n)}}});import oe from"fs";import T from"path";function Vn(t,e,r,n){if(n>4)return[];let o;try{o=oe.readdirSync(e,{withFileTypes:!0})}catch{return[]}let s=[];for(let i of o){if(!i.isDirectory())continue;let a=i.name;if(a.startsWith(".")||a==="node_modules"||a==="dist"||a===".nx")continue;let c=T.join(e,a);oe.existsSync(T.join(c,"project.json"))&&!r.has(c)?(r.add(c),s.push(c)):s.push(...Vn(t,c,r,n+1))}return s}function lc(t,e,r){let n={};try{n=JSON.parse(oe.readFileSync(r,"utf-8"))}catch{return null}let o=n.name,s,i,a=T.join(e,"package.json");if(oe.existsSync(a))try{let c=JSON.parse(oe.readFileSync(a,"utf-8"));o=c.name??o,s=c.main,i=c.exports}catch{}return o?{name:o,root:e,relativeRoot:T.relative(t,e),entryPoints:pc(e,n,s,i)}:null}function pc(t,e,r,n){let o=[],s=e.targets?.build?.options?.main??e.targets?.build?.options?.entryFile;if(s){let a=T.resolve(t,"../..");o.push(T.resolve(a,s)),o.push(T.resolve(t,s))}if(n){let a=n;if(typeof a=="string")o.push(T.join(t,a));else if(typeof a=="object"&&a!==null){let c=a["."];typeof c=="string"&&o.push(T.join(t,c))}}if(r&&o.push(T.join(t,r)),e.sourceRoot){let a=T.resolve(t,"../.."),c=T.resolve(a,e.sourceRoot);o.push(T.join(c,"index.ts"),T.join(c,"index.tsx"))}for(let a of["src/index.ts","src/index.tsx","index.ts","index.tsx"])o.push(T.join(t,a));let i=o.filter(Je);return i.length>0?i.slice(0,1):o.slice(0,1)}var Hn,Qn=u(()=>{"use strict";l();Ke();Hn={type:"nx",detect(t){return oe.existsSync(T.join(t,"nx.json"))?Vn(t,t,new Set,0).map(r=>lc(t,r,T.join(r,"project.json"))).filter(r=>r!==null):null}}});import Xn from"fs";import fc from"path";import{load as mc}from"js-yaml";var Yn,qn=u(()=>{"use strict";l();He();Yn={type:"pnpm",detect(t){let e=fc.join(t,"pnpm-workspace.yaml");if(!Xn.existsSync(e))return null;let r=[];try{r=mc(Xn.readFileSync(e,"utf-8"))?.packages??[]}catch{return null}return ne(t,r)}}});import uc from"fs";import gc from"path";var Zn,eo=u(()=>{"use strict";l();Zn={type:"turborepo",detect(t){return uc.existsSync(gc.join(t,"turbo.json"))?[]:null}}});import ir from"fs";import to from"path";var ro,no=u(()=>{"use strict";l();He();ro={type:"yarn",detect(t){if(!ir.existsSync(to.join(t,"yarn.lock")))return null;let e=to.join(t,"package.json");if(!ir.existsSync(e))return null;let r;try{r=JSON.parse(ir.readFileSync(e,"utf-8")).workspaces}catch{return null}if(!r)return null;let n=Array.isArray(r)?r:r.packages??[];return n.length===0?null:ne(t,n)}}});function _(t){oo.push(t)}function so(){return oo}var oo,Ve=u(()=>{"use strict";l();oo=[]});import dc from"path";function ar(t,e=so()){let r=dc.resolve(t),n=new Map,o=[];for(let i of e){let a=i.detect(r);if(a!==null){o.push(i.type);for(let c of a)n.has(c.name)||n.set(c.name,c)}}if(o.length===0)return{root:r,type:"none",types:[],packages:[],packageMap:new Map};let s=Array.from(n.values());return{root:r,type:o[0],types:o,packages:s,packageMap:new Map(s.map(i=>[i.name,i]))}}var cr=u(()=>{"use strict";l();Kn();Qn();qn();eo();no();Ve();Ve();_(Zn);_(Hn);_(Yn);_(ro);_(Jn)});var xe,lr=u(()=>{"use strict";l();ge();xe=class t{constructor(e,r){this.monorepoRoot=e;this.type=r}monorepoRoot;type;packages=new Map;addPackage(e,r){this.packages.set(e.name,{graph:r,pkg:e})}getPackageForFile(e){for(let{pkg:r}of this.packages.values())if(e===r.relativeRoot||e.startsWith(`${r.relativeRoot}/`))return r}getPackageDependencies(){let e=new Map;for(let{graph:r,pkg:n}of this.packages.values()){let o=new Set;for(let s of r.nodes.values())for(let i of s.imports)i.isWorkspace&&i.workspacePackage&&o.add(i.workspacePackage);e.set(n.name,[...o])}return e}getAffectedAcrossPackages(e){let r=this.getPackageForFile(e);if(!r)return[];let n=this.packages.get(r.name);if(!n)return[];let o=[];n.graph.traverse(e,s=>(s.path!==e&&o.push({file:s.path,package:r.name}),!0),{direction:"incoming"});for(let{graph:s,pkg:i}of this.packages.values())if(i.name!==r.name)for(let a of s.nodes.values())a.imports.some(p=>p.isWorkspace&&p.workspacePackage===r.name)&&o.push({file:a.path,package:i.name});return o}serialize(){return{monorepoRoot:this.monorepoRoot,type:this.type,packages:Array.from(this.packages.values()).map(({graph:e,pkg:r})=>({pkg:{name:r.name,relativeRoot:r.relativeRoot,entryPoints:r.entryPoints},nodes:Array.from(e.nodes.values())}))}}static deserialize(e){let r=new t(e.monorepoRoot,e.type);for(let{pkg:n,nodes:o}of e.packages){let s=new Map(o.map(a=>[a.path,a])),i=new D(s);r.packages.set(n.name,{graph:i,pkg:{...n,root:""}})}return r}}});function se(t,e){io.set(t,e)}function ao(t){return io.get(t)}var io,be=u(()=>{"use strict";l();io=new Map});function co(t,e){return e.startsWith("!")?t!==e.slice(1):t===e}function hc(t,e){return e.startsWith("!")?!t.includes(e.slice(1)):t.includes(e)}function Se(t,e,r){return Bc.every(n=>n(t,e,r))}var yc,xc,bc,Sc,Cc,vc,kc,wc,Ec,Nc,Fc,Tc,Pc,Ic,Dc,Mc,Ac,Rc,Lc,Oc,Gc,jc,_c,Wc,zc,$c,Uc,Bc,pr=u(()=>{"use strict";l();yc=(t,e)=>!e.category||co(t.category,e.category),xc=(t,e)=>!e.type||co(t.type,e.type),bc=(t,e)=>e.lastAuthor?e.lastAuthor.startsWith("!")?t.lastAuthor!==e.lastAuthor.slice(1):t.lastAuthor!==void 0&&t.lastAuthor===e.lastAuthor:!0,Sc=(t,e)=>!e.path||hc(t.path,e.path),Cc=(t,e)=>e.isExternal===void 0?!0:t.imports.some(n=>n.isExternal)===e.isExternal,vc=(t,e)=>{if(!e.tags||e.tags.length===0)return!0;let r=e.tags.filter(o=>!o.startsWith("!")),n=e.tags.filter(o=>o.startsWith("!")).map(o=>o.slice(1));return!(r.length>0&&!r.some(o=>t.tags.some(s=>s.name===o))||n.some(o=>t.tags.some(s=>s.name===o)))},kc=(t,e)=>!e.allTags?.length||e.allTags.every(r=>t.tags.some(n=>n.name===r)),wc=(t,e)=>!e.importsFile||t.imports.some(r=>r.toPath?.includes(e.importsFile)),Ec=(t,e,r)=>e.importedBy===void 0?!0:(r?.get(t.path)??[]).some(o=>o.includes(e.importedBy)),Nc=(t,e)=>e.minImports===void 0||t.imports.length>=e.minImports,Fc=(t,e)=>e.maxImports===void 0||t.imports.length<=e.maxImports,Tc=(t,e)=>e.minSize===void 0||t.size>=e.minSize,Pc=(t,e)=>e.maxSize===void 0||t.size<=e.maxSize,Ic=(t,e)=>e.hasDocstring===void 0||!!t.description===e.hasDocstring,Dc=(t,e)=>e.isDocumented===void 0||!!t.documentedBy?.length===e.isDocumented,Mc=(t,e)=>e.isStale===void 0||!!t.staleFor?.length===e.isStale,Ac=(t,e)=>e.minCoverage===void 0||(t.coveragePct??101)>=e.minCoverage,Rc=(t,e)=>e.maxCoverage===void 0||(t.coveragePct??0)<=e.maxCoverage,Lc=(t,e)=>e.minExportUsage===void 0||(t.avgExportUsage??-1)>=e.minExportUsage,Oc=(t,e)=>e.maxExportUsage===void 0||(t.avgExportUsage??0)<=e.maxExportUsage,Gc=(t,e)=>e.minComplexity===void 0||(t.complexity??-1/0)>=e.minComplexity,jc=(t,e)=>e.maxComplexity===void 0||(t.complexity??0)<=e.maxComplexity,_c=(t,e)=>e.minCognitiveComplexity===void 0||(t.cognitiveComplexity??-1/0)>=e.minCognitiveComplexity,Wc=(t,e)=>e.maxCognitiveComplexity===void 0||(t.cognitiveComplexity??0)<=e.maxCognitiveComplexity,zc=(t,e)=>e.minCommits===void 0||(t.commitCount90d??-1/0)>=e.minCommits,$c=(t,e)=>e.maxCommits===void 0||(t.commitCount90d??0)<=e.maxCommits,Uc=(t,e,r)=>!e.any?.length||e.any.some(n=>Se(t,n,r)),Bc=[yc,xc,bc,Sc,Cc,vc,kc,wc,Ec,Nc,Fc,Tc,Pc,Ic,Dc,Mc,Ac,Rc,Lc,Oc,Gc,jc,_c,Wc,zc,$c,Uc]});function Qe(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 n=t.nodes.filter(i=>Se(i,e,r)),o=new Set(n.map(i=>i.path)),s=n.map(i=>({...i,imports:i.imports.filter(a=>!a.toPath||o.has(a.toPath))}));if(e.sort){let i=e.sortDir==="asc"?-1:1;s.sort((a,c)=>{let p=0;return e.sort==="size"?p=c.size-a.size:e.sort==="imports"?p=c.imports.length-a.imports.length:e.sort==="commitCount90d"?p=(c.commitCount90d??0)-(a.commitCount90d??0):e.sort==="exportUsage"?p=(c.avgExportUsage??0)-(a.avgExportUsage??0):e.sort==="complexity"?p=(c.complexity??0)-(a.complexity??0):e.sort==="cognitiveComplexity"&&(p=(c.cognitiveComplexity??0)-(a.cognitiveComplexity??0)),p*i})}return e.limit!==void 0&&s.splice(e.limit),{nodes:s,cycles:t.cycles?.filter(i=>i.every(a=>o.has(a)))??void 0}}var lo=u(()=>{"use strict";l();pr();pr()});function po(t,e){let r=e.indexOf(":");if(r===-1)return;let n=e.slice(0,r).trim().toLowerCase(),o=e.slice(r+1).trim();if(!(!n||!o))switch(n){case"category":t.category=o;break;case"type":t.type=o;break;case"tag":case"tags":o.includes("+")?t.allTags=[...t.allTags??[],...o.split("+")]:t.tags=[...t.tags??[],o];break;case"path":t.path=o;break;case"external":t.isExternal=o.toLowerCase()==="true";break;case"importsfile":t.importsFile=o;break;case"importedby":t.importedBy=o;break;case"minimports":t.minImports=parseInt(o,10);break;case"maximports":t.maxImports=parseInt(o,10);break;case"minsize":t.minSize=parseInt(o,10);break;case"maxsize":t.maxSize=parseInt(o,10);break;case"sort":t.sort=o;break;case"sortdir":t.sortDir=o.toLowerCase()==="asc"?"asc":"desc";break;case"limit":t.limit=parseInt(o,10);break;case"hasdocstring":t.hasDocstring=o.toLowerCase()!=="false";break;case"mincoverage":t.minCoverage=parseInt(o,10);break;case"maxcoverage":t.maxCoverage=parseInt(o,10);break;case"minexportusage":t.minExportUsage=parseFloat(o);break;case"maxexportusage":t.maxExportUsage=parseFloat(o);break;case"mincomplexity":t.minComplexity=parseInt(o,10);break;case"maxcomplexity":t.maxComplexity=parseInt(o,10);break;case"mincognitivecomplexity":t.minCognitiveComplexity=parseInt(o,10);break;case"maxcognitivecomplexity":t.maxCognitiveComplexity=parseInt(o,10);break;case"mincommits":t.minCommits=parseInt(o,10);break;case"maxcommits":t.maxCommits=parseInt(o,10);break;case"isdocumented":t.isDocumented=o.toLowerCase()!=="false";break;case"isstale":t.isStale=o.toLowerCase()!=="false";break;case"lastauthor":t.lastAuthor=o;break}}function Jc(t){let e=[];for(let r of t.split("|")){let n=r.trim();if(!n)continue;let o={};po(o,n),Object.keys(o).length>0&&e.push(o)}return e}function Xe(t){let e={},r=t.split(",");for(let n of r){let o=n.trim();if(o.toLowerCase().startsWith("any(")&&o.endsWith(")")){let s=o.slice(4,-1),i=Jc(s);i.length>0&&(e.any=[...e.any??[],...i]);continue}po(e,n)}return e}var fo=u(()=>{"use strict";l()});var mo=u(()=>{"use strict";l();lo();fo()});import Kc from"path";import N from"typescript";function V(t,e){let r=t[e];if(r===void 0)throw new Error(`Index ${e} out of bounds (length ${t.length})`);return r}function fr(t){let e=[];for(let r of t.statements){if(!N.isExpressionStatement(r))continue;let n=r.expression;if(!N.isCallExpression(n))continue;let o=n.expression;N.isIdentifier(o)&&uo.has(o.text)&&e.push(n),N.isPropertyAccessExpression(o)&&N.isIdentifier(o.expression)&&uo.has(o.expression.text)&&e.push(n)}return e}function mr(t,e,r){for(let n of t.arguments){if(!N.isObjectLiteralExpression(n))continue;let o=n.properties.find(s=>N.isPropertyAssignment(s)&&N.isIdentifier(s.name)&&s.name.text===e);if(!(!o||!N.isArrayLiteralExpression(o.initializer)))return o.initializer.elements.filter(N.isStringLiteral).map(s=>s.text)}return null}function ur(t,e,r,n){if(t.arguments.length===0)return null;for(let s=1;s<t.arguments.length;s++){let i=V(t.arguments,s);if(!N.isObjectLiteralExpression(i))continue;let a=i.properties.find(p=>N.isPropertyAssignment(p)&&N.isIdentifier(p.name)&&p.name.text===e);if(a)return{start:a.initializer.getStart(n),end:a.initializer.getEnd(),text:r};let c=i.getEnd()-1;return{start:c,end:c,text:`${i.properties.length>0?", ":""}${e}: ${r}`}}let o=V(t.arguments,t.arguments.length-1);return{start:o.getStart(n),end:o.getStart(n),text:`{ ${e}: ${r} }, `}}function gr(t,e,r){let n=t.arguments;for(let o=1;o<n.length;o++){let s=V(n,o);if(!N.isObjectLiteralExpression(s))continue;let i=s.properties.findIndex(c=>N.isPropertyAssignment(c)&&N.isIdentifier(c.name)&&c.name.text===e);if(i<0)continue;if(s.properties.length===1)return{start:V(n,o-1).getEnd(),end:s.getEnd(),text:""};let a=V(s.properties,i);return i===s.properties.length-1?{start:V(s.properties,i-1).getEnd(),end:a.getEnd(),text:""}:{start:a.getStart(r),end:V(s.properties,i+1).getStart(r),text:""}}return null}function dr(t,e){let r=[...e].sort((o,s)=>s.start-o.start),n=t;for(let o of r)n=n.slice(0,o.start)+o.text+n.slice(o.end);return n}function hr(t){return`[${t.map(e=>JSON.stringify(e)).join(", ")}]`}function Hc(t){return t.map(e=>e.startsWith("@")?e.slice(1):e)}function Ye(t,e,r,n){let o=N.createSourceFile(Kc.basename(t),e,N.ScriptTarget.Latest,!0),s=fr(o),[i]=s;if(!i)return e;let a=mr(i,n,o),c=[...r].sort();if(a!==null&&JSON.stringify(Hc(a).sort())===JSON.stringify(c))return e;let p=hr(c.map(d=>`@${d}`)),f=s.flatMap(d=>{let y=r.length===0?gr(d,n,o):ur(d,n,p,o);return y?[y]:[]});return f.length>0?dr(e,f):e}var uo,O,ie=u(()=>{"use strict";l();uo=new Set(["describe","test","it"]);O=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"])});import Vc from"path";var qe,go=u(()=>{"use strict";l();ie();qe=class{name="cypress";canHandle(e){return O.has(Vc.extname(e).toLowerCase())}apply(e,r,n){return Ye(e,r,n,"tags")}}});import Qc from"path";function Xc(t){return`${["# <mokosh-tags>",...t.map(e=>`@${e}`),"# </mokosh-tags>"].join(`
8
+ `)}
9
+
10
+ `}function Yc(t){let e=new Set;xr.lastIndex=0;let r=xr.exec(t);for(;r!==null;)r[1]&&e.add(r[1]),r=xr.exec(t);return e}var yr,xr,Ze,ho=u(()=>{"use strict";l();yr=/# <mokosh-tags>[\s\S]*?# <\/mokosh-tags>\n*/,xr=/^@([a-zA-Z0-9_-]+)/gm;Ze=class{name="gherkin";canHandle(e){return Qc.extname(e).toLowerCase()===".feature"}apply(e,r,n){let o=r.replace(yr,""),s=Yc(o),i=n.filter(c=>!s.has(c)),a=i.length>0?Xc(i):"";return yr.test(r)?r.replace(yr,a):a?r.replace(/^(Feature:)/m,`${a}$1`):r}}});function yo(t,e){let r=t.replace(/\\/g,"/"),n=e.replace(/\\/g,"/"),o="";for(let s=0;s<r.length;s++){let i=r[s];i==="*"?r[s+1]==="*"?(o+=".*",s++):o+="[^/]*":i==="?"?o+="[^/]":i!==void 0&&(o+=i.replace(/[.+^${}()|[\]\\]/g,"\\$&"))}return new RegExp(`^${o}$`).test(n)}var xo=u(()=>{"use strict";l()});import qc from"path";function el(t){return`//go:build ${t.map(r=>`mokosh_${r}`).join(" || ")}
11
+ `}function tl(t){let e=br.exec(t);if(!e)return null;let r=e[0]??"",n=/mokosh_([a-zA-Z0-9_-]+)/g,o=[],s=n.exec(r);for(;s!==null;)s[1]&&o.push(s[1]),s=n.exec(r);return o}var br,Zc,et,bo=u(()=>{"use strict";l();br=/^\/\/go:build mokosh_[^\n]+\n/m,Zc=/^package\s+\S+/m;et=class{name="go";canHandle(e){return qc.basename(e).endsWith("_test.go")}apply(e,r,n){let o=tl(r),s=[...n].sort();if(o!==null&&JSON.stringify([...o].sort())===JSON.stringify(s))return r;if(n.length===0)return r.replace(br,"");let i=el(s);if(o!==null)return r.replace(br,i);let a=Zc.exec(r);if(!a)return r;let c=a.index;return`${r.slice(0,c)+i}
12
+ ${r.slice(c)}`}}});import rl from"path";function ol(t){return`${["/**",...t.map(e=>` * @group ${e}`)," */"].join(`
13
+ `)}
14
+
15
+ `}function sl(t){let e=[];Sr.lastIndex=0;let r=Sr.exec(t);for(;r!==null;)r[1]&&e.push(r[1]),r=Sr.exec(t);return e}var nl,Sr,tt,So=u(()=>{"use strict";l();ie();nl=/^\/\*\*\n(?: \* @group .+\n)+ \*\/\n+/,Sr=/^ \* @group (.+)$/gm;tt=class{name="jest";canHandle(e){return O.has(rl.extname(e).toLowerCase())}apply(e,r,n){let o=nl.exec(r),s=o?sl(o[0]):null,i=[...n].sort();if(s!==null&&JSON.stringify([...s].sort())===JSON.stringify(i))return r;let a=o?r.slice(o[0].length):r;return n.length===0?a:ol(i)+a}}});import il from"path";var rt,Co=u(()=>{"use strict";l();ie();rt=class{name="playwright";canHandle(e){return O.has(il.extname(e).toLowerCase())}apply(e,r,n){return Ye(e,r,n,"tag")}}});import al from"path";function ll(t){let e=t.map(r=>`pytest.mark.${r}`).join(", ");return t.length===1?`pytestmark = pytest.mark.${t[0]}`:`pytestmark = [${e}]`}function pl(t){let e=Cr.exec(t);if(!e)return null;let r=e[0],n=[],o=/pytest\.mark\.([a-zA-Z0-9_-]+)/g,s=o.exec(r);for(;s!==null;)s[1]&&n.push(s[1]),s=o.exec(r);return n}function fl(t){let e=t.split(`
16
+ `),r=-1;return e.forEach((o,s)=>{(o.trimStart().startsWith("import ")||o.trimStart().startsWith("from "))&&(r=s)}),r<0?0:e.slice(0,r+1).reduce((o,s)=>o+s.length+1,0)}var Cr,cl,nt,vo=u(()=>{"use strict";l();Cr=/^pytestmark\s*=\s*.+$/m,cl=/^import pytest\s*$/m;nt=class{name="pytest";canHandle(e){return al.extname(e).toLowerCase()===".py"}apply(e,r,n){let o=pl(r),s=[...n].sort();if(o!==null&&JSON.stringify([...o].sort())===JSON.stringify(s))return r;if(n.length===0)return r.replace(Cr,"").replace(/\n{3,}/g,`
17
+
18
+ `);let i=ll(s);if(o!==null)return r.replace(Cr,i);let a=cl.test(r),c=fl(r),p=r.slice(0,c),f=r.slice(c),d=a?"":`import pytest
15
19
  `,y=p.endsWith(`
16
20
 
17
21
  `)?"":`
18
- `;return p+y+h+i+`
19
- `+g}}});import os from"path";import is from"typescript";var Ic,nt,as=m(()=>{"use strict";l();le();Ic=/\/\/ <mokosh-tags>[\s\S]*?\/\/ <\/mokosh-tags>\n*/,nt=class{name="vitest";canHandle(e){return L.has(os.extname(e).toLowerCase())}apply(e,r,n){let s=r.replace(Ic,""),o=is.createSourceFile(os.basename(e),s,is.ScriptTarget.Latest,!0),i=ne(o);if(i.length===0)return s;let a=se(i[0],"tags",o),c=[...n].sort();if(a!==null&&JSON.stringify([...a].sort())===JSON.stringify(c))return s;let p=i.flatMap(g=>{let h=n.length===0?ie(g,"tags",o):oe(g,"tags",ce(c),o);return h?[h]:[]});return p.length>0?ae(s,p):s}}});import mr from"path";import st from"typescript";function Dc(t){let e=st.createSourceFile("detect.ts",t,st.ScriptTarget.Latest,!0);for(let r of e.statements){if(!st.isImportDeclaration(r)||!st.isStringLiteral(r.moduleSpecifier))continue;let n=Mc[r.moduleSpecifier.text];if(n)return n}return null}function ls(t="vitest",e={},r=process.cwd()){return[new qe,new rt,new Ze,new ur(r,t,Object.entries(e))]}function ps(t,e){return e.find(r=>r.canHandle(t))??null}var cs,Mc,ur,fs=m(()=>{"use strict";l();Qn();Xn();qn();Zn();es();ns();ss();le();as();cs={vitest:()=>new nt,playwright:()=>new tt,cypress:()=>new Ye,jest:()=>new et},Mc={"@playwright/test":"playwright",cypress:"cypress","@jest/globals":"jest",vitest:"vitest"};ur=class{constructor(e,r,n){this.rootDir=e;this.defaultFramework=r;this.frameworkOverrides=n}rootDir;defaultFramework;frameworkOverrides;name="auto";canHandle(e){return L.has(mr.extname(e).toLowerCase())}apply(e,r,n){let s=Dc(r)??this.matchOverride(e)??this.defaultFramework;return(cs[s]??cs.vitest)().apply(e,r,n)}matchOverride(e){let r=mr.relative(this.rootDir,e).split(mr.sep).join("/");for(let[n,s]of this.frameworkOverrides)if(Yn(n,r))return s;return null}}});import ms from"fs/promises";import Ac from"path";async function Gc(t,e,r,n){let s;try{s=await ms.readFile(t,"utf8")}catch(a){return{path:t,status:"error",error:String(a)}}let o=ps(t,n);if(!o)return{path:t,status:"unchanged"};let i=o.apply(t,s,e);return i===s?{path:t,status:"unchanged"}:(r||await ms.writeFile(t,i,"utf8"),{path:t,status:"updated"})}async function gr(t,e,r){let n=Z(e),s=n.tagApplier?.framework??"vitest",o=n.tagApplier?.frameworkOverrides??{},i=ls(s,o,e),a={updated:0,unchanged:0,errors:0,files:[]};for(let c of t.nodes.values()){if(c.category!=="test")continue;let p=new Set,g=[];for(let x of c.tags)Lc.has(x.kind)&&Rc.test(x.name)&&(Oc.has(x.name.toLowerCase())||p.has(x.name)||(p.add(x.name),g.push(x.name)));g.sort();let h=Ac.resolve(e,c.path),y=await Gc(h,g,r.dryRun,i);y.path=c.path,a.files.push(y),y.status==="updated"?a.updated++:y.status==="unchanged"?a.unchanged++:a.errors++}return a}var Rc,Lc,Oc,us=m(()=>{"use strict";l();wt();fs();Rc=/^[a-zA-Z][a-zA-Z0-9_-]{1,}$/,Lc=new Set(["import"]),Oc=new Set(["common","fixture","fixtures","helper","helpers","index","main","mock","mocks","setup","shared","spec","test","tests","types","util","utils"])});var ot,dr=m(()=>{"use strict";l();ot=class{isTestNode(e){return e.category==="test"||e.tags.some(r=>r.name==="test")}}});import{execFileSync as hr}from"child_process";function hs(t,e){let r="",n=0;for(let s of t.split(`
20
- `)){if(s.startsWith("\0")){let[,c,p]=s.slice(1).split(" ");r=c??"",n=p?Number(p)*1e3:0;continue}if(s==="")continue;let o=s.split(" "),i=o[0];if(!i)continue;let a=i.startsWith("R")||i.startsWith("C")?o[2]:o[1];a&&e(a,r,n)}}function ys(t){let e=new Map;try{let r=hr("git",["-C",t,"log","--since=90 days ago","--name-status","-M",`--format=${gs}`],{encoding:"utf-8",stdio:["ignore","pipe","ignore"],maxBuffer:ds});hs(r,(n,s,o)=>{let i=e.get(n);if(i){i.commitCount90d+=1;return}e.set(n,{commitCount90d:1,lastAuthor:s||void 0,lastCommitAt:o||void 0})})}catch{return e}try{let r=hr("git",["-C",t,"log","--name-status","-M",`--format=${gs}`],{encoding:"utf-8",stdio:["ignore","pipe","ignore"],maxBuffer:ds});hs(r,(n,s,o)=>{e.has(n)||e.set(n,{commitCount90d:0,lastAuthor:void 0,lastCommitAt:o||void 0})})}catch{}return e}var it,gs,ds,yr=m(()=>{"use strict";l();it=class{getChangedFiles(){try{let r=[["diff","--name-only"],["diff","--cached","--name-only"],["ls-files","--others","--exclude-standard"]].flatMap(n=>{try{return hr("git",n,{encoding:"utf-8",stdio:["ignore","pipe","ignore"]}).split(`
21
- `).map(o=>o.trim()).filter(o=>o!=="")}catch{return[]}});return Array.from(new Set(r))}catch(e){return console.error("Error getting git diff:",e),[]}}},gs="%x00%H%x09%ae%x09%at",ds=256*1024*1024});import at from"fs";import jc from"path";import{load as xs}from"js-yaml";function Ss(t){let e=t.lastIndexOf("@");return e>0?t.substring(0,e):t}function _c(t){return t.replace(/:$/,"").split(",").map(e=>{let r=e.trim();return r.startsWith('"')&&(r=r.slice(1)),r.endsWith('"')&&(r=r.slice(0,-1)),Ss(r)}).filter(Boolean)}function Wc(t,e){let r=t.startsWith("/")?t.slice(1):t,n=r.lastIndexOf("@");return n>0?{name:r.substring(0,n),version:e||r.substring(n+1)}:{name:r,version:e}}function zc(t){try{let e=xs(t),r={dependencies:{}};for(let[n,s]of Object.entries(e))if(!(n==="__metadata"||!s?.version))for(let o of n.split(", ")){let i=Ss(o);i&&(r.dependencies[i]={version:s.version,...s.dependencies!==void 0&&{dependencies:s.dependencies}})}return r}catch{return null}}function $c(t){let e={dependencies:{}};for(let r of t.split(/\n\n+/)){let n=r.split(`
22
- `).filter(c=>c.trim().length>0&&!c.trim().startsWith("#"));if(n.length<2)continue;let s=n[0];if(!s||s.startsWith(" "))continue;let o=_c(s);if(o.length===0)continue;let a=n.find(c=>c.trim().startsWith('version "'))?.match(/version "(.*?)"/)?.[1]??"";for(let c of o)e.dependencies[c]={version:a}}return e}function Uc(t){let e=at.readFileSync(t,"utf-8"),r=JSON.parse(e),n={dependencies:{}};if(r.packages)for(let[s,o]of Object.entries(r.packages)){if(!s.startsWith("node_modules/"))continue;let i=s.replace("node_modules/","");i.includes("node_modules/")||(n.dependencies[i]={version:o.version,...o.dependencies!==void 0&&{dependencies:o.dependencies}})}else if(r.dependencies)for(let[s,o]of Object.entries(r.dependencies))n.dependencies[s]={version:o.version,...o.dependencies!==void 0&&{dependencies:o.dependencies}};return n}function Bc(t){let e=at.readFileSync(t,"utf-8");if(e.includes("__metadata:")){let r=zc(e);if(r!==null)return r}return $c(e)}function Jc(t){let e=at.readFileSync(t,"utf-8"),r={dependencies:{}};try{let n=xs(e);if(n.packages)for(let[s,o]of Object.entries(n.packages)){let{name:i,version:a}=Wc(s,o.version);i&&(r.dependencies[i]={version:a,...o.dependencies!==void 0&&{dependencies:o.dependencies}})}if(n.dependencies)for(let[s,o]of Object.entries(n.dependencies)){if(r.dependencies[s])continue;let i=typeof o=="string"?o:o.version;r.dependencies[s]={version:i||""}}}catch{}return r}function bs(t){let e=[["package-lock.json",Uc],["yarn.lock",Bc],["pnpm-lock.yaml",Jc]];for(let[r,n]of e){let s=jc.join(t,r);if(at.existsSync(s))return n(s)}return null}var Cs=m(()=>{"use strict";l()});import vs from"path";function j(t){switch(vs.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";case".md":case".mdx":return"markdown";default:return"unknown"}}function D(t){let e=vs.extname(t).toLowerCase();return[".css",".scss",".sass",".less",".styl"].includes(e)}var _=m(()=>{"use strict";l()});function W(t){return t.startsWith("'")||t.startsWith('"')?t.slice(1,-1):t}var ct=m(()=>{"use strict";l()});import Kc from"coffeescript";function Es(t){if(t){if(typeof t.originalValue=="string")return t.originalValue;if(typeof t.value=="string")return W(t.value)}}function J(t){if(t){if(typeof t.value=="string")return t.value;if(typeof t.base?.value=="string")return t.base.value}}function Hc(t){let e=new Set,r=/@tag\s+([a-zA-Z0-9_-]+)/g,n=r.exec(t);for(;n!==null;)n[1]&&e.add(n[1]),n=r.exec(t);return e}function Vc(t,e){let r=t.toLowerCase();return r.includes(".test.")||r.includes(".spec.")||e.has("test")?"test":"logic"}function Qc(t,e){let r=Es(e.source);return r?{fromPath:t,toPath:"",rawSpecifier:r,isStyle:D(r),type:"static"}:null}function Xc(t,e){let r=e.variable?.base?.value==="require",n=Es(e.args?.[0]?.base);return!r||!n?null:{fromPath:t,toPath:"",rawSpecifier:n,isStyle:D(n),type:"require"}}function ks(t,e){if(e)return[{name:e}];let r=t.value;if(r?.constructor?.name==="Class"){let s=J(r.variable);return s?[{name:s}]:[]}if(r?.base?.constructor?.name==="Obj"&&Array.isArray(r.base.properties))return r.base.properties.map(s=>J(s.variable)??J(s)).filter(s=>!!s).map(s=>({name:s}));let n=J(r);return n?[{name:n}]:[]}function Yc(t){if(Array.isArray(t.specifiers))return t.specifiers.map(r=>r.identifier??r.original?.value).filter(r=>!!r).map(r=>({name:r}));let e=J(t.variable)??J(t.variable?.base);return e?[{name:e}]:[]}function qc(t,e,r,n){let s=e.constructor?.name;if(s==="ImportDeclaration"){let o=Qc(t,e);o&&r.push(o)}else if(s==="Call"){let o=Xc(t,e);o&&r.push(o)}else if(s==="Assign"){let o=J(e.variable?.base),i=e.variable?.properties?.[0]?.name?.value;o==="module"&&i==="exports"?n.push(...ks(e,void 0)):o==="exports"&&typeof i=="string"&&n.push(...ks(e,i))}else s==="ExportNamedDeclaration"&&e.clause?n.push(...Yc(e.clause)):s==="ExportDefaultDeclaration"&&n.push({name:"default"})}function xr(t,e,r,n){if(!(!e||typeof e!="object")){qc(t,e,r,n);for(let s in e){if(s==="locationData")continue;let o=e[s];if(!(!o||typeof o!="object"))if(Array.isArray(o))for(let i of o)xr(t,i,r,n);else xr(t,o,r,n)}}}function ws(t,e){let r=Hc(e),n=Vc(t,r),s=[],o=[];try{xr(t,Kc.nodes(e),s,o)}catch{}let i=new Set,a=o.filter(c=>i.has(c.name)?!1:(i.add(c.name),!0));return{imports:s,exports:a,tags:Array.from(r).map(c=>({name:c,kind:"comment-marker"})),category:n}}var Ns=m(()=>{"use strict";l();_();ct()});import{AstBuilder as Zc,GherkinClassicTokenMatcher as el,Parser as tl}from"@cucumber/gherkin";import{IdGenerator as rl}from"@cucumber/messages";function Sr(t,e){let r=new Set;try{let n=new Zc(nl),s=new el,i=new tl(n,s).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(n){console.warn(`[GherkinParser] Failed to parse ${t}:`,n)}return{imports:[],exports:[],tags:Array.from(r).map(n=>({name:n,kind:"comment-marker"})),category:"test"}}var nl,Fs=m(()=>{"use strict";l();Se();nl=rl.uuid();re("gherkin",Sr)});function K(t){let e=[],r=t.firstChild;for(;r;)e.push(r),r=r.nextSibling;return e}function Ce(t,e){let r=1;for(let n=0;n<e&&n<t.length;n++)t[n]===`
23
- `&&r++;return r}var br=m(()=>{"use strict";l()});function sl(t,e){let r=1;function n(s){switch(s.type.name){case"IfStatement":case"ForStatement":r++;break;case"Case":{s.firstChild?.type.name==="case"&&r++;break}case"LogicOp":{let i=e.slice(s.from,s.to);(i==="&&"||i==="||")&&r++;break}}let o=s.firstChild;for(;o;)n(o),o=o.nextSibling}return n(t),r}function ol(t,e){let r=0;function n(s,o,i){let a=s.type.name;if(a==="IfStatement"){r+=i?1:1+o;let g=K(s),h=i?o:o+1,y=g[1];y&&y.type.name!=="Block"&&n(y,h,!1);let x=g.find(C=>C.type.name==="Block");x&&n(x,h,!1);let E=g.findIndex(C=>C.type.name==="else");if(E>=0){let C=g[E+1];C?.type.name==="IfStatement"?n(C,o,!0):C&&(r+=1,n(C,o+1,!1))}return}if(a==="ForStatement"||a==="SwitchStatement"||a==="SelectStatement"){r+=1+o;let g=s.firstChild;for(;g;)n(g,o+1,!1),g=g.nextSibling;return}if(a==="LogicOp"){let g=e.slice(s.from,s.to);(g==="&&"||g==="||")&&(r+=1)}if(o>0&&a==="FunctionLiteral"){r+=1+o;let g=s.firstChild;for(;g;)n(g,o+1,!1),g=g.nextSibling;return}let p=s.firstChild;for(;p;)n(p,o,!1),p=p.nextSibling}return n(t,0,!1),r}function lt(t,e){return{complexity:sl(t,e),cognitiveComplexity:ol(t,e)}}function Cr(t,e){let n=t.getChild("Parameters")?.getChild("Parameter"),s=n?.getChild("TypeName")??n?.getChild("PointerType")?.getChild("TypeName");return s?e.slice(s.from,s.to):void 0}function Ts(t,e){let r=[],n=t.cursor();do if(n.name==="FunctionDecl"){let s=n.node.getChild("DefName");if(s){let o=e.slice(s.from,s.to),{complexity:i,cognitiveComplexity:a}=lt(n.node,e);r.push({name:o,line:Ce(e,n.from),complexity:i,cognitiveComplexity:a})}}else if(n.name==="MethodDecl"){let s=n.node.getChild("FieldName");if(s){let o=e.slice(s.from,s.to),i=Cr(n.node,e),a=i?`${i}.${o}`:o,{complexity:c,cognitiveComplexity:p}=lt(n.node,e);r.push({name:a,line:Ce(e,n.from),complexity:c,cognitiveComplexity:p})}}while(n.next());return r}var Ps=m(()=>{"use strict";l();br()});import il from"path";import{parser as al}from"@lezer/go";function Ms(t,e){let r=[],n=new Map,s=new Set,o=new Set,i=new Map,a=al.parse(e),c=a.cursor();do switch(c.name){case"LineComment":{let P=e.slice(c.from,c.to),O=P.match(cl);O?.[1]&&s.add(O[1]);let X=P.match(ll);X&&Is(X[1],o);let Y=P.match(pl);Y&&Is(Y[1],o);break}case"ImportSpec":{let P=c.node.getChild("String");if(P){let X=e.slice(P.from,P.to).slice(1,-1);r.push({fromPath:t,toPath:"",rawSpecifier:X,isExternal:!0,isStyle:!1,type:"static"});let Y=c.node.getChild("DefName"),Le=Y?e.slice(Y.from,Y.to):X.split("/").pop();Le&&Le!=="_"&&Le!=="."&&i.set(Le,X)}break}case"FunctionDecl":case"MethodDecl":case"TypeDecl":case"VarDecl":case"ConstDecl":{let P=c.node.getChild("DefName")??c.node.getChild("FieldName")??c.node.getChild("TypeSpec")?.getChild("DefName")??c.node.getChild("VarSpec")?.getChild("DefName")??c.node.getChild("ConstSpec")?.getChild("DefName");if(P){let O=e.slice(P.from,P.to);O!=="_"&&/^[A-Z]/.test(O)&&!n.has(O)&&n.set(O,{name:O})}break}}while(c.next());let p=r.some(P=>P.rawSpecifier==="testing"),g=il.basename(t).endsWith("_test.go")||s.has("test")||p?"test":"logic",h=new Set([...s,...o]),{complexity:y,cognitiveComplexity:x}=lt(a.topNode,e),E=Ts(a,e),C=g==="test"?[]:fl(a,e,i);return{imports:r,exports:Array.from(n.values()),tags:Array.from(h).map(P=>({name:P,kind:"comment-marker"})),category:g,rawCallEdges:C,complexity:y,cognitiveComplexity:x,...E.length>0?{functions:E}:{}}}function fl(t,e,r){let n=[];function s(i,a){if(i.type.name==="CallExpr"){let p=i.firstChild;if(p?.type.name==="SelectorExpr"){let g=p.firstChild,h=p.getChild("FieldName");if(g?.type.name==="VariableName"&&h){let y=e.slice(g.from,g.to),x=r.get(y);if(x){let E=e.slice(h.from,h.to);n.push({from:a,to:E,toSpecifier:x})}}}}let c=i.firstChild;for(;c;)s(c,a),c=c.nextSibling}let o=t.cursor();do if(o.name==="FunctionDecl"){let i=o.node.getChild("DefName"),a=o.node.getChild("Block");if(i&&a){let c=e.slice(i.from,i.to);/^[A-Z]/.test(c)&&s(a,c)}}else if(o.name==="MethodDecl"){let i=o.node.getChild("FieldName"),a=o.node.getChild("Block");if(i&&a){let c=e.slice(i.from,i.to),p=Cr(o.node,e);s(a,p?`${p}.${c}`:c)}}while(o.next());return n}function Is(t,e){for(let r of t.split(/[\s,&|!()]+/)){let n=r.trim();n&&n!=="ignore"&&e.add(n)}}var cl,ll,pl,Ds=m(()=>{"use strict";l();Ps();cl=/\/\/\s*@tag\s+([a-zA-Z0-9_-]+)/,ll=/^\/\/go:build\s+(.+)$/,pl=/^\/\/\s*\+build\s+(.+)$/});import ml from"livescript";function ul(t){let e=new Set,r=/@tag\s+([a-zA-Z0-9_-]+)/g,n=r.exec(t);for(;n!==null;)n[1]&&e.add(n[1]),n=r.exec(t);return e}function gl(t,e){let r=t.toLowerCase();return r.includes(".test.")||r.includes(".spec.")||e.has("test")?"test":"logic"}function H(t){if(t){if(typeof t.value=="string")return t.value;if(typeof t.base?.value=="string")return t.base.value}}function dl(t){if(!t)return[];if(t.constructor?.name==="Class"){let r=H(t.title);return r?[{name:r}]:[]}if(t.constructor?.name==="Obj"&&Array.isArray(t.items))return t.items.map(r=>H(r.key)??H(r.val)).filter(r=>!!r).map(r=>({name:r}));let e=H(t);return e?[{name:e}]:[]}function hl(t){let e=t.constructor?.name||t.type;if(e==="Assign"&&t.left?.constructor?.name==="Chain"){let r=t.left,n=H(r.head),o=r.tails?.[0]?.key?.name;if(n==="module"&&o==="exports")return dl(t.right);if(n==="exports"&&typeof o=="string")return[{name:o}];if(r.head?.verb==="out"&&typeof o=="string")return[{name:o}]}if(e==="Import"&&t.left?.verb==="out"){let r=t.right;if(r?.constructor?.name==="Obj"&&Array.isArray(r.items))return r.items.map(n=>H(n.val)??H(n.key)).filter(n=>!!n).map(n=>({name:n}))}return[]}function xl(t,e){let r=t.constructor?.name||t.type;if(r==="Import"){let n=t.right?.value;if(typeof n=="string"){let s=W(n);return{fromPath:e,toPath:"",rawSpecifier:s,isStyle:D(s),type:"static"}}}if(r==="Chain"&&t.head?.value==="require"){let n=t.tails?.[0];if(n?.constructor?.name==="Call"||n?.type==="Call"){let s=n.args?.[0]?.value;if(typeof s=="string"){let o=W(s);return{fromPath:e,toPath:"",rawSpecifier:o,isStyle:D(o),type:"require"}}}}return null}function vr(t,e,r){if(!t||typeof t!="object")return[];let n=[],s=xl(t,e);s&&n.push(s),r.push(...hl(t));for(let o in t){if(yl.has(o))continue;let i=t[o];if(!(!i||typeof i!="object"))if(Array.isArray(i))for(let a of i)n.push(...vr(a,e,r));else n.push(...vr(i,e,r))}return n}function As(t,e){let r=ul(e),n=gl(t,r),s=[],o=[];try{s=vr(ml.ast(e),t,o)}catch{}let i=new Set,a=o.filter(c=>i.has(c.name)?!1:(i.add(c.name),!0));return{imports:s,exports:a,tags:Array.from(r).map(c=>({name:c,kind:"comment-marker"})),category:n}}var yl,Rs=m(()=>{"use strict";l();_();ct();yl=new Set(["first_line","first_column","last_line","last_column","line","column"])});import Sl from"luaparse";function bl(t){let e=new Set,r=/@tag\s+([a-zA-Z0-9_-]+)/g,n=r.exec(t);for(;n!==null;)n[1]&&e.add(n[1]),n=r.exec(t);return e}function Cl(t,e){let r=t.toLowerCase();return r.includes(".test.")||r.includes(".spec.")||e.has("test")?"test":"logic"}function vl(t,e){let r=[];function n(s){if(!(!s||typeof s!="object")){if((s.type==="CallExpression"||s.type==="StringCallExpression")&&s.base?.type==="Identifier"&&s.base?.name==="require"){let o;if(s.type==="CallExpression"){let i=s.arguments?.[0];i?.type==="StringLiteral"&&(o=W(i.raw))}else if(s.type==="StringCallExpression"){let i=s.argument;i?.type==="StringLiteral"&&(o=W(i.raw))}o&&r.push({fromPath:e,toPath:"",rawSpecifier:o,isStyle:D(o),type:"require"})}for(let o in s){if(o==="loc")continue;let i=s[o];if(i&&typeof i=="object")if(Array.isArray(i))for(let a of i)n(a);else n(i)}}}return n(t),r}function kl(t){let e=new Set;for(let r of t)r.type==="LocalStatement"&&r.variables.forEach((n,s)=>{r.init[s]?.type==="TableConstructorExpression"&&e.add(n.name)});return e}function El(t){let e=t[t.length-1];if(e?.type!=="ReturnStatement")return[];let r=e.arguments[0];if(r?.type!=="TableConstructorExpression")return[];let n=[];for(let s of r.fields)s.type==="TableKeyString"&&n.push({name:s.key.name});return n}function wl(t){let e=t.body,r=kl(e),n=El(e);for(let o of e)if(o.type==="FunctionDeclaration")o.identifier?.type==="MemberExpression"?o.identifier.base.type==="Identifier"&&r.has(o.identifier.base.name)&&n.push({name:o.identifier.identifier.name}):o.identifier?.type==="Identifier"&&!o.isLocal&&n.push({name:o.identifier.name});else if(o.type==="AssignmentStatement")for(let i of o.variables)i.type==="MemberExpression"&&i.base.type==="Identifier"&&r.has(i.base.name)&&n.push({name:i.identifier.name});let s=new Set;return n.filter(o=>s.has(o.name)?!1:(s.add(o.name),!0))}function Ls(t,e){let r=bl(e),n=Cl(t,r),s=[],o=[];try{let i=Sl.parse(e);s=vl(i,t),o=wl(i)}catch{}return{imports:s,exports:o,tags:Array.from(r).map(i=>({name:i,kind:"comment-marker"})),category:n}}var Os=m(()=>{"use strict";l();_();ct()});async function Pl(){return Gs??=(async()=>{let{unified:t}=await import("unified"),e=(await import("remark-parse")).default;return t().use(e)})(),Gs}function Il(t){let e=t.trim();return e.length===0||e.startsWith("#")||Nl.some(r=>e.startsWith(r))}function Ml(t,e){let r=t.match(Tl);return r?r.map(n=>({fromPath:e,toPath:"",rawSpecifier:n,isStyle:!1,type:"static"})):[]}function js(t,e,r){if(t.type==="link"&&typeof t.url=="string"&&!Il(t.url)&&r.push({fromPath:e,toPath:"",rawSpecifier:t.url,isStyle:!1,type:"static"}),(t.type==="code"||t.type==="inlineCode")&&typeof t.value=="string"&&r.push(...Ml(t.value,e)),Array.isArray(t.children))for(let n of t.children)js(n,e,r)}async function _s(t,e){let n=(await Pl()).parse(e),s=[];js(n,t,s);let o=new Set;return{imports:s.filter(a=>o.has(a.rawSpecifier)?!1:(o.add(a.rawSpecifier),!0)),exports:[],tags:[],category:"other"}}var Nl,Fl,Tl,Gs,Ws=m(()=>{"use strict";l();Nl=["http://","https://","mailto:","//"],Fl="ts|tsx|js|jsx|mjs|cjs|py|go|lua|css|scss|less|styl|coffee|ls|feature|md|mdx|json",Tl=new RegExp(`(?:\\.{1,2}/)?[\\w.-]+(?:/[\\w.-]+)*\\.(?:${Fl})\\b`,"g")});function Dl(t){let e=1;function r(n){switch(n.type.name){case"IfStatement":{e+=K(n).filter(o=>o.type.name==="if"||o.type.name==="elif").length;break}case"TryStatement":{e+=K(n).filter(o=>o.type.name==="except").length;break}case"ForStatement":case"WhileStatement":case"ConditionalExpression":e++;break;case"and":case"or":e++;break}let s=n.firstChild;for(;s;)r(s),s=s.nextSibling}return r(t),e}function Al(t){let e=0;function r(n,s){let o=n.type.name;if(o==="IfStatement"){let c=K(n),p=0,g=0;for(;g<c.length;){let h=c[g];if(h?.type.name==="if"||h?.type.name==="elif"){let y=p>0;e+=y?1:1+s;let x=y?s:s+1,E=c[g+1],C=c[g+2];E&&r(E,x),C&&r(C,x),p++,g+=3}else if(h?.type.name==="else"){e+=1;let y=c[g+1];y&&r(y,s+1),g+=2}else g++}return}if(o==="TryStatement"){let c=K(n),p=0;for(;p<c.length;){let g=c[p];if(g?.type.name==="except"){for(e+=1+s,p++;p<c.length&&c[p]?.type.name!=="Body";)r(c[p],s),p++;p<c.length&&(r(c[p],s),p++)}else g?.type.name==="Body"&&r(g,s),p++}return}if(o==="ForStatement"||o==="WhileStatement"){e+=1+s;let c=n.firstChild;for(;c;)r(c,s+1),c=c.nextSibling;return}if((o==="ConditionalExpression"||o==="and"||o==="or")&&(e+=1),s>0&&(o==="FunctionDefinition"||o==="LambdaExpression")){e+=1+s;let c=n.firstChild;for(;c;)r(c,s+1),c=c.nextSibling;return}let a=n.firstChild;for(;a;)r(a,s),a=a.nextSibling}return r(t,0),e}function kr(t){return{complexity:Dl(t),cognitiveComplexity:Al(t)}}function zs(t,e){let r=[];function n(i,a){let{complexity:c,cognitiveComplexity:p}=kr(i);r.push({name:a,line:Ce(e,i.from),complexity:c,cognitiveComplexity:p})}function s(i){let a=i.firstChild;for(;a;)o(a),a=a.nextSibling}function o(i){if(i.type.name==="ClassDefinition"){let a=i.getChild("VariableName"),c=a?e.slice(a.from,a.to):void 0,p=i.getChild("Body");if(p){let g=p.firstChild;for(;g;){if(g.type.name==="FunctionDefinition"){let h=g.getChild("VariableName"),y=h?e.slice(h.from,h.to):void 0;y&&n(g,c?`${c}.${y}`:y),s(g)}else o(g);g=g.nextSibling}}return}if(i.type.name==="FunctionDefinition"){let a=i.getChild("VariableName");a&&n(i,e.slice(a.from,a.to)),s(i);return}s(i)}return o(t.topNode),r}var $s=m(()=>{"use strict";l();br()});import Rl from"path";import{parser as Ll}from"@lezer/python";function Us(t,e){let r=[],n=[],s=new Set,o=Rl.basename(t).toLowerCase(),i=Ll.parse(e),a=i.cursor();do switch(a.name){case"Comment":{let x=e.slice(a.from,a.to).match(/#\s*@tag\s+([a-zA-Z0-9_-]+)/);x?.[1]&&s.add(x[1]);break}case"ImportStatement":{for(let x of Gl(a.node,e,t))r.push(x);break}case"FunctionDefinition":case"ClassDefinition":{let x=a.node.parent;if(x?.name==="Script"||x?.name==="DecoratedStatement"&&x.parent?.name==="Script"){let C=a.node.getChild("VariableName");C&&n.push({name:e.slice(C.from,C.to)})}break}case"AssignStatement":{if(a.node.parent?.name==="Script"){let x=a.node.firstChild;x?.name==="VariableName"&&n.push({name:e.slice(x.from,x.to)})}break}}while(a.next());let c=Ul(o,r,s);c==="test"&&s.add("test");let{complexity:p,cognitiveComplexity:g}=kr(i.topNode),h=zs(i,e),y=c==="test"?[]:$l(i,e);return{imports:r,exports:n,tags:Array.from(s).map(x=>({name:x,kind:"comment-marker"})),category:c,rawCallEdges:y,complexity:p,cognitiveComplexity:g,...h.length>0?{functions:h}:{}}}function Gl(t,e,r){let n=t.firstChild;return n?n.name==="from"?jl(t,e,r):_l(t,e,r):[]}function jl(t,e,r){let n=t.firstChild;if(!n)return[];let s=n.nextSibling;for(;s&&s.name!=="import";)s=s.nextSibling;if(!s)return[];let o=e.slice(n.to,s.from).trim(),i=Wl(s.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[ve(r,o,i,!0)];let p=a===1?"./":"../".repeat(a-1);return c?[ve(r,p+c.replace(/\./g,"/"),i,!1)]:i[0]==="*"?[ve(r,p.slice(0,-1),["*"],!1)]:i.map(g=>ve(r,p+g,[g],!1))}function _l(t,e,r){let n=[],s=t.firstChild?.nextSibling??null;for(;s;){if(s.name==="VariableName"){let o=e.slice(s.from,s.to);for(;s.nextSibling?.name==="."&&s.nextSibling.nextSibling?.name==="VariableName";)s=s.nextSibling.nextSibling,o+=`.${e.slice(s.from,s.to)}`;s.nextSibling?.name==="as"&&(s=s.nextSibling.nextSibling??s.nextSibling),n.push(ve(r,o,["*"],!0))}s=s.nextSibling}return n}function Wl(t,e){let r=[],n=t;for(;n;)n.name==="*"?r.push("*"):n.name==="VariableName"&&(r.push(e.slice(n.from,n.to)),n.nextSibling?.name==="as"&&(n=n.nextSibling.nextSibling??n.nextSibling)),n=n.nextSibling;return r}function zl(t,e){let r=new Map,n=t.cursor();do{if(n.name!=="ImportStatement")continue;let o=n.node.firstChild;if(o?.type.name!=="from")continue;let i=o.nextSibling;for(;i&&i.type.name!=="import";)i=i.nextSibling;if(!i)continue;let a=e.slice(o.to,i.from).trim(),c=0;for(;c<a.length&&a[c]===".";)c++;let p=a.slice(c),g=c<=1?"./":"../".repeat(c-1),h=i.nextSibling;for(;h;){if(h.type.name==="VariableName"){let y=e.slice(h.from,h.to),x=y;if(h.nextSibling?.type.name==="as"){let C=h.nextSibling.nextSibling;C?.type.name==="VariableName"&&(x=e.slice(C.from,C.to),h=C)}let E=c===0?a:p?g+p.replace(/\./g,"/"):g+y;r.set(x,E)}h=h.nextSibling}}while(n.next());return r}function $l(t,e){let r=zl(t,e),n=[];function s(a,c){if(a.type.name==="CallExpression"&&a.firstChild?.type.name==="VariableName"){let g=a.firstChild,h=e.slice(g.from,g.to),y=r.get(h);y&&n.push({from:c,to:h,toSpecifier:y})}let p=a.firstChild;for(;p;)s(p,c),p=p.nextSibling}function o(a){let c=a.firstChild;for(;c;)i(c),c=c.nextSibling}function i(a){if(a.type.name==="ClassDefinition"){let c=a.getChild("VariableName"),p=c?e.slice(c.from,c.to):void 0,g=a.getChild("Body");if(g){let h=g.firstChild;for(;h;){if(h.type.name==="FunctionDefinition"){let y=h.getChild("VariableName"),x=y?e.slice(y.from,y.to):void 0;x&&s(h,p?`${p}.${x}`:x)}else i(h);h=h.nextSibling}}return}if(a.type.name==="FunctionDefinition"){let c=a.getChild("VariableName");c&&s(a,e.slice(c.from,c.to));return}o(a)}return i(t.topNode),n}function ve(t,e,r,n){return{fromPath:t,toPath:"",rawSpecifier:e,isStyle:!1,isExternal:n,type:"static",symbols:r.length>0?r:void 0}}function Ul(t,e,r){return t.startsWith("test_")||t.endsWith("_test.py")?"test":t==="conftest.py"||t==="setup.py"?"config":r.has("test")||e.some(n=>Ol.has(n.rawSpecifier))?"test":"logic"}var Ol,Bs=m(()=>{"use strict";l();$s();Ol=new Set(["pytest","unittest","nose","hypothesis"])});import S from"typescript";function Bl(t){let e=1;function r(n){switch(n.kind){case S.SyntaxKind.IfStatement:case S.SyntaxKind.ConditionalExpression:case S.SyntaxKind.ForStatement:case S.SyntaxKind.ForInStatement:case S.SyntaxKind.ForOfStatement:case S.SyntaxKind.WhileStatement:case S.SyntaxKind.DoStatement:case S.SyntaxKind.CatchClause:case S.SyntaxKind.CaseClause:e++;break;case S.SyntaxKind.BinaryExpression:{let s=n.operatorToken.kind;(s===S.SyntaxKind.AmpersandAmpersandToken||s===S.SyntaxKind.BarBarToken||s===S.SyntaxKind.QuestionQuestionToken)&&e++;break}}S.forEachChild(n,r)}return r(t),e}function Jl(t){let e=0;function r(n,s,o){if(S.isIfStatement(n)){e+=o?1:1+s;let a=o?s:s+1;r(n.expression,a,!1),r(n.thenStatement,a,!1),n.elseStatement&&(S.isIfStatement(n.elseStatement)?r(n.elseStatement,s,!0):(e+=1,r(n.elseStatement,s+1,!1)));return}if(S.isForStatement(n)||S.isForInStatement(n)||S.isForOfStatement(n)||S.isWhileStatement(n)||S.isDoStatement(n)||S.isSwitchStatement(n)){e+=1+s,S.forEachChild(n,a=>r(a,s+1,!1));return}if(S.isCatchClause(n)){e+=1+s,S.forEachChild(n,a=>r(a,s,!1));return}if(S.isConditionalExpression(n)&&(e+=1),S.isBinaryExpression(n)){let a=n.operatorToken.kind;(a===S.SyntaxKind.AmpersandAmpersandToken||a===S.SyntaxKind.BarBarToken||a===S.SyntaxKind.QuestionQuestionToken)&&(e+=1)}if(s>0&&(S.isFunctionDeclaration(n)||S.isFunctionExpression(n)||S.isArrowFunction(n))){e+=1+s,S.forEachChild(n,a=>r(a,s+1,!1));return}S.forEachChild(n,a=>r(a,s,!1))}return r(t,0,!1),e}function Er(t){return{complexity:Bl(t),cognitiveComplexity:Jl(t)}}var Js=m(()=>{"use strict";l()});import k from"typescript";function Ks(t,e){Kl(t,e),Vl(t,e),Ql(t,e),Xl(t,e)}function Kl(t,e){if((k.isFunctionDeclaration(t)||k.isVariableDeclaration(t))&&t.name&&k.isIdentifier(t.name)&&Hl(t)){let r;if(k.isFunctionDeclaration(t))r="function";else{let n=t.initializer;r=n&&(k.isArrowFunction(n)||k.isFunctionExpression(n))?"function":"variable"}e.tags.add({name:t.name.text,kind:r})}}function Hl(t){if(k.isFunctionDeclaration(t))return k.isSourceFile(t.parent);let e=t.parent?.parent;return!!e&&k.isSourceFile(e.parent)}function Vl(t,e){if(!k.isStringLiteral(t))return;let r=t.text.match(/@[\w-]+/g);if(r)for(let n of r)e.tags.add({name:n.substring(1),kind:"comment-marker"})}function Ql(t,e){if(!k.isSourceFile(t))return;let r=/@tag\s+([a-zA-Z0-9_-]+)/g,n=t.getFullText(),s=r.exec(n);for(;s!==null;)s[1]&&e.tags.add({name:s[1],kind:"comment-marker"}),s=r.exec(n)}function Xl(t,e){if(k.isCallExpression(t)&&Yl(t.expression))for(let r of t.arguments)k.isObjectLiteralExpression(r)&&ql(r,e)}function Yl(t){return k.isIdentifier(t)?wr.has(t.text):!!(k.isPropertyAccessExpression(t)&&(wr.has(t.name.text)||k.isIdentifier(t.expression)&&wr.has(t.expression.text)))}function ql(t,e){for(let r of t.properties){if(!k.isPropertyAssignment(r)||!k.isIdentifier(r.name)||r.name.text!=="tags"&&r.name.text!=="tag")continue;let{initializer:n}=r,s=k.isArrayLiteralExpression(n)?n.elements.filter(k.isStringLiteral):r.name.text==="tag"&&k.isStringLiteral(n)?[n]:[];for(let o of s)e.tags.add({name:o.text.replace(/^@/,""),kind:"comment-marker"})}}var wr,Hs=m(()=>{"use strict";l();wr=new Set(["test","describe","it"])});import Vs from"path";import d from"typescript";function Nr(t,e,r){let n=[],s=new Map,o=new Set,i=d.createSourceFile(t,e,d.ScriptTarget.Latest,!0,r==="typescript"?d.ScriptKind.TSX:d.ScriptKind.JSX),a={filePath:t,imports:n,exports:s,tags:o,rawCallEdges:[],sourceFile:i,hasUI:!1,hasTypesOnly:!0,totalStatements:0,exportStatements:0},c=C=>{rp(C,a),d.forEachChild(C,c)};c(i);let p=up(t,a);(p==="test"||p==="barrel")&&o.add({name:p,kind:"comment-marker"}),p!=="test"&&gp(a,i);let g=i.statements[0],h=g?Xs(g):void 0,{complexity:y,cognitiveComplexity:x}=Er(i),E=Zl(i);return{imports:n,exports:Array.from(s.values()),tags:Array.from(o),category:p,rawCallEdges:a.rawCallEdges??[],complexity:y,cognitiveComplexity:x,...E.length>0?{functions:E}:{},...h!==void 0?{description:h}:{}}}function Zl(t){let e=[],r=(s,o)=>{let{complexity:i,cognitiveComplexity:a}=Er(o),c=t.getLineAndCharacterOfPosition(o.getStart(t)).line+1;e.push({name:s,line:c,complexity:i,cognitiveComplexity:a})},n=(s,o)=>{if(d.isFunctionDeclaration(s)&&s.name&&s.body?r(s.name.text,s):d.isVariableDeclaration(s)&&d.isIdentifier(s.name)&&s.initializer&&(d.isArrowFunction(s.initializer)||d.isFunctionExpression(s.initializer))?r(s.name.text,s.initializer):o&&d.isMethodDeclaration(s)&&d.isIdentifier(s.name)&&s.body?r(`${o}.${s.name.text}`,s):o&&d.isConstructorDeclaration(s)&&s.body?r(`${o}.constructor`,s):o&&d.isGetAccessorDeclaration(s)&&d.isIdentifier(s.name)&&s.body?r(`${o}.get ${s.name.text}`,s):o&&d.isSetAccessorDeclaration(s)&&d.isIdentifier(s.name)&&s.body&&r(`${o}.set ${s.name.text}`,s),d.isClassDeclaration(s)&&s.name){let i=s.name.text;d.forEachChild(s,a=>n(a,i));return}d.forEachChild(s,i=>n(i,o))};return n(t,void 0),e}function Qs(t,e,r,n){let s={name:t},o=Xs(r);o!==void 0&&(s.doc=o);let i=ep(e);i!==void 0&&(s.flags=i);let a=tp(e,n);return a!==void 0&&(s.signature=a),s}function Xs(t){let e=d.getJSDocCommentsAndTags(t);for(let r of e)if(d.isJSDoc(r)&&r.comment)return d.getTextOfJSDocComment(r.comment)||void 0}function ep(t){let e=new Set(["deprecated","internal","public","alpha","beta"]),r=d.getJSDocTags(t).map(n=>n.tagName.text).filter(n=>e.has(n));return r.length>0?r:void 0}function tp(t,e){let r=d.createPrinter({removeComments:!0}),n=s=>r.printNode(d.EmitHint.Unspecified,s,e);if(d.isFunctionDeclaration(t)||d.isMethodDeclaration(t)){let s=t.parameters.map(n).join(", "),o=t.type?n(t.type):"void";return`${t.typeParameters?`<${t.typeParameters.map(a=>a.name.text).join(", ")}>`:""}(${s}) => ${o}`}if(d.isVariableDeclaration(t)){if(t.type)return n(t.type);if(t.initializer&&(d.isArrowFunction(t.initializer)||d.isFunctionExpression(t.initializer))){let s=t.initializer,o=s.parameters.map(n).join(", "),i=s.type?n(s.type):"unknown";return`(${o}) => ${i}`}return}if(d.isClassDeclaration(t)&&t.name)return`class ${t.name.text}`;if(d.isInterfaceDeclaration(t))return`interface ${t.name.text}`;if(d.isTypeAliasDeclaration(t))return n(t.type);if(d.isEnumDeclaration(t))return`enum ${t.name.text}`}function rp(t,e){np(t,e),sp(t,e),ip(t,e),ap(t,e),mp(t,e),Ks(t,e)}function np(t,e){if(!d.isSourceFile(t))return;let r=t.statements.filter(n=>!d.isEmptyStatement(n));e.totalStatements=r.length,e.exportStatements=r.filter(n=>d.isExportDeclaration(n)||d.isExportAssignment(n)||Fr(n)).length}function sp(t,e){if(d.isJsxElement(t)||d.isJsxSelfClosingElement(t)||d.isJsxFragment(t)){e.hasUI=!0,e.hasTypesOnly=!1;return}if(d.isFunctionDeclaration(t)||d.isMethodDeclaration(t)||d.isArrowFunction(t)||d.isClassDeclaration(t)||d.isVariableStatement(t)||d.isEnumDeclaration(t)){e.hasTypesOnly=!1;return}d.isExportDeclaration(t)&&!op(t)&&(e.hasTypesOnly=!1)}function op(t){return t.isTypeOnly?!0:!t.exportClause||!d.isNamedExports(t.exportClause)?!1:t.exportClause.elements.every(e=>e.isTypeOnly)}function ip(t,e){if(!d.isImportDeclaration(t)||!t.moduleSpecifier||!d.isStringLiteral(t.moduleSpecifier))return;let r=[];if(t.importClause&&(t.importClause.name&&r.push("default"),t.importClause.namedBindings))if(d.isNamedImports(t.importClause.namedBindings))for(let s of t.importClause.namedBindings.elements)r.push(s.name.text);else d.isNamespaceImport(t.importClause.namedBindings)&&r.push("*");let n=r.length>0?"static":"side-effect";e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:t.moduleSpecifier.text,isStyle:D(t.moduleSpecifier.text),type:n,symbols:r.length>0?r:void 0})}function ap(t,e){d.isExportDeclaration(t)?cp(t,e):d.isExportAssignment(t)?e.exports.set("default",{name:"default"}):Fr(t)&&fp(t,e)}function cp(t,e){if(t.moduleSpecifier&&d.isStringLiteral(t.moduleSpecifier))lp(t,t.moduleSpecifier.text,e);else if(t.exportClause&&d.isNamedExports(t.exportClause))for(let r of t.exportClause.elements){let n=r.name.text;e.exports.set(n,{name:n})}}function lp(t,e,r){let n=pp(t),s={fromPath:r.filePath,toPath:"",rawSpecifier:e,isStyle:D(e),type:"re-export"};n.length>0&&(s.symbols=n),r.imports.push(s)}function pp(t){return t.exportClause?d.isNamedExports(t.exportClause)?t.exportClause.elements.map(e=>e.name.text):[]:["*"]}function fp(t,e){if((d.isFunctionDeclaration(t)||d.isClassDeclaration(t)||d.isInterfaceDeclaration(t)||d.isTypeAliasDeclaration(t)||d.isEnumDeclaration(t))&&t.name){let n=t.name.text;e.exports.set(n,Qs(n,t,t,e.sourceFile));return}if(d.isVariableStatement(t)){for(let n of t.declarationList.declarations)if(d.isIdentifier(n.name)){let s=n.name.text;e.exports.set(s,Qs(s,n,t,e.sourceFile))}}}function mp(t,e){if(!d.isCallExpression(t))return;let r=t.arguments[0];!r||!d.isStringLiteral(r)||(t.expression.kind===d.SyntaxKind.ImportKeyword?e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:r.text,isStyle:D(r.text),type:"dynamic"}):d.isIdentifier(t.expression)&&t.expression.text==="require"&&e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:r.text,isStyle:D(r.text),type:"require"}))}function up(t,e){let r=Vs.basename(t).toLowerCase(),n=Vs.extname(t).toLowerCase();return fe().some(o=>r.includes(o))?"test":en(r)?"config":e.imports.some(o=>bt().some(i=>o.rawSpecifier.includes(i)))?"test":n===".tsx"||n===".jsx"||e.hasUI?"ui":e.hasTypesOnly&&e.totalStatements>0?"type-only":e.totalStatements>0&&e.exportStatements/e.totalStatements>vt()?"barrel":"logic"}function Fr(t){return d.canHaveModifiers(t)&&d.getModifiers(t)?.some(e=>e.kind===d.SyntaxKind.ExportKeyword)===!0}function gp(t,e){let r=t.rawCallEdges??[];t.rawCallEdges=r;let n=new Map;for(let s of e.statements){if(!d.isImportDeclaration(s)||!d.isStringLiteral(s.moduleSpecifier))continue;let o=s.moduleSpecifier.text,i=s.importClause;if(i&&(i.name&&n.set(i.name.text,o),i.namedBindings&&d.isNamedImports(i.namedBindings)))for(let a of i.namedBindings.elements)n.set(a.name.text,o)}if(n.size!==0)for(let s of e.statements){let o=hp(s);if(o){let i=yp(s);i&&pt(i,o,n,r);continue}d.isClassDeclaration(s)&&s.name&&dp(s,n,r)}}function dp(t,e,r){let n=t.name.text;for(let s of t.members)d.isMethodDeclaration(s)&&s.body&&d.isIdentifier(s.name)?pt(s.body,`${n}.${s.name.text}`,e,r):d.isConstructorDeclaration(s)&&s.body&&pt(s.body,`${n}.constructor`,e,r)}function hp(t){if(Fr(t)){if(d.isFunctionDeclaration(t)&&t.name)return t.name.text;if(d.isVariableStatement(t)){for(let e of t.declarationList.declarations)if(d.isIdentifier(e.name)&&e.initializer&&(d.isArrowFunction(e.initializer)||d.isFunctionExpression(e.initializer)))return e.name.text}}}function yp(t){if(d.isFunctionDeclaration(t))return t.body;if(d.isVariableStatement(t)){for(let e of t.declarationList.declarations)if(e.initializer&&(d.isArrowFunction(e.initializer)||d.isFunctionExpression(e.initializer)))return e.initializer}}function pt(t,e,r,n){if(d.isCallExpression(t)&&d.isIdentifier(t.expression)){let s=t.expression.text,o=r.get(s);o&&!n.some(i=>i.from===e&&i.to===s&&i.toSpecifier===o)&&n.push({from:e,to:s,toSpecifier:o})}d.forEachChild(t,s=>pt(s,e,r,n))}var Ys=m(()=>{"use strict";l();q();Js();_();Hs()});function ft(t,e){if(e.length===0)return"ui";let r=!1;return t.walk(n=>{if(n.type==="rule")return r=!0,!1}),r?"ui":"barrel"}var qs=m(()=>{"use strict";l()});import eo from"postcss";import*as xp from"postcss-less";function Zs(t){return t.startsWith("~")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")||t.startsWith("data:")}function bp(t){let e=t.trim();return e.length>0&&!e.startsWith("http://")&&!e.startsWith("https://")&&!e.startsWith("//")&&!e.startsWith("data:")&&!e.startsWith("#")}function Cp(t,e){let r=t.match(/^\(([^)]+)\)\s+['"]([^'"]+)['"]/);if(r){let o=r[1]?.trim()??"",i=r[2]??"";if(!i)return null;let a=to.has(o)?"side-effect":"static";return{fromPath:e,toPath:"",rawSpecifier:i,isStyle:!0,type:a,...Zs(i)?{isExternal:!0}:{}}}let n=t.match(/^url\(['"]?([^'")]+)['"]?\)/),s=n?n[1]?.trim()??"":t.match(/^['"]([^'"]+)['"]/)?.[1]??"";return s?{fromPath:e,toPath:"",rawSpecifier:s,isStyle:!0,type:"static",...Zs(s)?{isExternal:!0}:{}}:null}function vp(t,e){let r=[],n=/url\(['"]?([^'")]+)['"]?\)/g,s=n.exec(t);for(;s!==null;){let o=s[1]?.trim()??"";bp(o)&&r.push({fromPath:e,toPath:"",rawSpecifier:o,isStyle:!0,type:"static"}),s=n.exec(t)}return r}function ro(t,e){let r=[];return t.walk(n=>{if(n.type==="atrule"&&n.name==="import"){let s=Cp(n.params,e);s&&r.push(s)}n.type==="decl"&&r.push(...vp(n.value,e))}),r}function kp(t){return t.replace(/(?<!:)\/\/.*/g,"")}function Ep(t,e){let r=[],n=/@import\s+(?:\(([^)]+)\)\s+)?['"]([^'"]+)['"]/g,s=n.exec(t);for(;s!==null;){let o=s[1]?.trim()??"",i=s[2]??"";if(i){let a=to.has(o)?"side-effect":"static";r.push({fromPath:e,toPath:"",rawSpecifier:i,isStyle:!0,type:a})}s=n.exec(t)}return r}function no(t,e){let r=eo.parse(kp(t));return{imports:ro(r,e),root:r}}function wp(t){let e=[],r=[];for(let n of t.nodes??[]){if(n.type!=="atrule")continue;let{value:s}=n;if(s===void 0)continue;let o=n.name;o&&(e.push({name:o}),r.push({name:o,kind:"variable"}))}return{exports:e,tags:r}}function so(t,e){try{let r=Sp.parse(t),{exports:n,tags:s}=wp(r);return{imports:ro(r,e),root:r,exports:n,tags:s}}catch{return{imports:Ep(t,e),root:eo.parse(""),exports:[],tags:[]}}}var Sp,to,oo=m(()=>{"use strict";l();Sp=xp,to=new Set(["reference","inline"])});import{parse as Np}from"postcss-scss";function io(t){return t.startsWith("_")||t.startsWith("-")}function Fp(t){return!!(t.startsWith("sass:")||t.startsWith("~")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")||!t.startsWith(".")&&!t.startsWith("/")&&!t.startsWith("_"))}function Tp(t){let e=t.match(/^['"]([^'"]+)['"]/);if(!e?.[1])return{specifier:""};let r=e[1],s=t.match(/\bas\s+(\S+)/)?.[1];return s!==void 0?{specifier:r,alias:s}:{specifier:r}}function Pp(t){let e=[],r=[];for(let n of t.nodes??[]){if(n.type==="decl"&&n.prop.startsWith("$")){let s=n.prop.slice(1);if(!s||io(s))continue;e.push({name:s}),r.push({name:s,kind:"variable"});continue}if(n.type==="atrule"&&(n.name==="mixin"||n.name==="function")){let o=n.params.match(/^([\w-]+)/)?.[1];if(!o||io(o))continue;let i=n.params.trim();e.push(i.includes("(")?{name:o,signature:i}:{name:o}),r.push({name:o,kind:"function"})}}return{exports:e,tags:r}}function ao(t,e){let r=Np(t),n=[];r.walk(i=>{if(i.type!=="atrule")return;let{name:a,params:c}=i;if(a!=="import"&&a!=="use"&&a!=="forward")return;let{specifier:p,alias:g}=Tp(c);if(!p)return;let h={fromPath:e,toPath:"",rawSpecifier:p,isStyle:!0,type:a==="forward"?"re-export":"static",...Fp(p)?{isExternal:!0}:{}};g&&(h.symbols=[g]),n.push(h)});let{exports:s,tags:o}=Pp(r);return{imports:n,root:r,exports:s,tags:o}}var co=m(()=>{"use strict";l()});function lo(t,e){let r=[],n=/@require\s+['"]([^'"]+)['"]/g,s=n.exec(t);for(;s!==null;){let i=s[1];i&&r.push({fromPath:e,toPath:"",rawSpecifier:i,isStyle:!0,type:"require"}),s=n.exec(t)}let o=/(?<!@)(?:import|require)\s*\(?\s*['"]([^'"]+)['"]/g;for(s=o.exec(t);s!==null;){let i=s[1];i&&r.push({fromPath:e,toPath:"",rawSpecifier:i,isStyle:!0,type:"static"}),s=o.exec(t)}return r}function po(t,e){if(e.length===0)return"ui";try{let r=St("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 fo=m(()=>{"use strict";l()});function ke(t,e){let r=j(t);if(r==="stylus"){let o=lo(e,t);return{imports:o,exports:[],tags:[],category:po(e,o)}}if(r==="scss"){let{imports:o,root:i,exports:a,tags:c}=ao(e,t);return{imports:o,exports:a,tags:c,category:ft(i,o)}}if(r==="less"){let{imports:o,root:i,exports:a,tags:c}=so(e,t);return{imports:o,exports:a,tags:c,category:ft(i,o)}}let{imports:n,root:s}=no(e,t);return{imports:n,exports:[],tags:[],category:ft(s,n)}}var mo=m(()=>{"use strict";l();_();qs();oo();co();fo()});async function uo(t,e){let r=j(t),n=Wn(r);return n?n(t,e):{imports:[],exports:[],tags:[],category:"other"}}var go=m(()=>{"use strict";l();_();Ns();Fs();Ds();Rs();Os();Ws();Bs();Ys();Se();mo();q();_();Se();for(let[t,e]of[["javascript",(r,n)=>Nr(r,n,"javascript")],["typescript",(r,n)=>Nr(r,n,"typescript")],["css",ke],["scss",ke],["less",ke],["stylus",ke],["coffeescript",ws],["livescript",As],["lua",Ls],["python",Us],["go",Ms],["gherkin",Sr],["markdown",_s]])re(t,e)});import ho from"path";function xo(t,e){for(let r of t.values()){let n=e.get(r.path);n!==void 0&&(r.coveragePct=n)}}function So(t,e){for(let r of t)if(r.isExternal){let n=r.rawSpecifier.startsWith("@")?r.rawSpecifier.split("/").slice(0,2).join("/"):r.rawSpecifier.split("/")[0];n&&!e.some(s=>s.name===n)&&e.push({name:n,kind:"library"})}}function bo(t){for(let e of t.values())if(e.category==="test")for(let r of e.imports){if(r.isExternal||!r.toPath)continue;let n=t.get(r.toPath);n&&(n.category!=="logic"&&n.category!=="barrel"||(n.testedBy??=[],n.testedBy.includes(e.path)||n.testedBy.push(e.path)))}}function Co(t){for(let e of t.values())if(e.type==="markdown")for(let r of e.imports){if(r.isExternal||!r.toPath)continue;let n=t.get(r.toPath);!n||n===e||(n.documentedBy??=[],n.documentedBy.includes(e.path)||n.documentedBy.push(e.path),n.category==="logic"&&(n.lastCommitAt??0)>(e.lastCommitAt??0)&&(e.staleFor??=[],e.staleFor.includes(n.path)||e.staleFor.push(n.path)))}}function yo(t){return Math.round(t*1e4)/1e4}function vo(t){for(let e of t.values()){let r=[];for(let n of e.imports){if(n.isExternal||!n.toPath)continue;let s=t.get(n.toPath);if(!s||s.exports.length===0)continue;let o;if(n.symbols===void 0){if(n.type==="side-effect")continue;o=1}else n.symbols.includes("*")?o=1:o=n.symbols.length/s.exports.length;n.exportUsageRatio=yo(Math.min(1,o)),r.push(n.exportUsageRatio)}r.length>0&&(e.avgExportUsage=yo(r.reduce((n,s)=>n+s,0)/r.length),e.maxExportUsage=Math.max(...r))}}function Tr(t,e,r){e&&(t.some(n=>n.name===e&&n.kind===r)||t.push({name:e,kind:r}))}function Ip(t,e){let r=e.toPath,n=ho.basename(r,ho.extname(r)).replace(/\.(test|spec)$/,"");Tr(t.tags,n,"import")}function Mp(t,e){if(!(!e.symbols||e.symbols.includes("*")))for(let r of e.symbols)Tr(t.tags,r,"import")}function Dp(t,e,r){let n=r.get(e.toPath);if(!(!n||n.category==="test"))for(let s of n.tags)s.kind==="comment-marker"&&Tr(t.tags,s.name,"comment-marker")}function ko(t){for(let e of t.values())if(e.category==="test")for(let r of e.imports)!r.toPath||r.isExternal||(Ip(e,r),Mp(e,r),Dp(e,r,t))}var Eo=m(()=>{"use strict";l()});import Fo from"fs";import pe from"path";function Ap(t,e){let r=t.split(`
24
- `),n=null,s=new Map,o=!1;for(let i of r){let a=i.trim();if(a.startsWith("module ")){n=a.slice(7).trim();continue}if(/^replace\s*\(/.test(a)){o=!0;continue}if(o&&a===")"){o=!1;continue}if(o&&a.includes("=>")){wo(a,e,s);continue}!o&&/^replace\s+/.test(a)&&a.includes("=>")&&wo(a.replace(/^replace\s+/,""),e,s)}return{mod:n,replaces:s}}function wo(t,e,r){let[n,s]=t.split("=>").map(a=>a.trim());if(!n||!s)return;let o=n.split(/\s+/)[0];if(!s.startsWith(".")&&!s.startsWith("/"))return;let i=pe.isAbsolute(s)?s:pe.resolve(e,s);r.set(o,i)}function No(t){let e;try{e=Fo.readdirSync(t,{withFileTypes:!0})}catch{return null}let r=e.filter(n=>n.isFile()&&n.name.endsWith(".go")&&!n.name.endsWith("_test.go")).map(n=>({path:pe.join(t,n.name),isExternal:!1})).sort((n,s)=>n.path.localeCompare(s.path));return r.length>0?r:null}var Ee,To=m(()=>{"use strict";l();Ee=class{extensions=[".go"];goModCache=new Map;resolve(e,r,n,s){let{mod:o,replaces:i}=this.readGoMod(n);if(!o)return null;let a=this.applyReplace(r,i,n);if(a!==void 0)return No(a);if(r!==o&&!r.startsWith(`${o}/`))return null;let c=r.slice(o.length).replace(/^\//,"");return c?No(pe.join(n,c)):null}readGoMod(e){let r=this.goModCache.get(e);if(r!==void 0)return r;let n={mod:null,replaces:new Map};try{let s=Fo.readFileSync(pe.join(e,"go.mod"),"utf-8"),o=Ap(s,e);return this.goModCache.set(e,o),o}catch{return this.goModCache.set(e,n),n}}applyReplace(e,r,n){for(let[s,o]of r){if(e===s)return o;if(e.startsWith(`${s}/`)){let i=e.slice(s.length+1);return pe.join(o,i)}}}}});import Rp from"fs";import Pr from"path";var we,Po=m(()=>{"use strict";l();we=class{extensions=[".lua"];resolve(e,r,n,s){let o=r.replace(/\./g,Pr.sep),i=[n,Pr.join(n,"lib")];for(let a of i){if(!Rp.existsSync(a))continue;let c=s(Pr.join(a,"_dummy.lua"),o);if(c)return[c]}return null}}});import Lp from"path";var Ne,Io=m(()=>{"use strict";l();Ne=class{extensions=[".md",".mdx"];resolve(e,r,n,s){let o=s(Lp.join(n,"_dummy"),`./${r}`);return o?[o]:null}}});import Op from"fs";import Ir from"path";function Mo(t){try{return Op.statSync(t,{throwIfNoEntry:!1})?.isFile()===!0}catch{return!1}}var Fe,Do=m(()=>{"use strict";l();Fe=class{extensions=[".py"];resolve(e,r,n,s){let o=r.replace(/\./g,Ir.sep),i=Ir.join(n,`${o}.py`);if(Mo(i))return[{path:i,isExternal:!1}];let a=Ir.join(n,o,"__init__.py");return Mo(a)?[{path:a,isExternal:!1}]:null}}});import Ao from"path";var Gp,Te,Ro=m(()=>{"use strict";l();Gp=["~","http://","https://","//","data:","sass:"],Te=class{extensions=[".css",".scss",".sass",".less",".styl"];resolve(e,r,n,s){if(Gp.some(g=>r.startsWith(g)))return null;let o=s(e,r);if(o)return[o];let i=Ao.dirname(r),a=Ao.basename(r),c=i==="."?`_${a}`:`${i}/_${a}`,p=s(e,c);return p?[p]:null}}});var Lo=m(()=>{"use strict";l();To();Po();Io();Do();Ro()});import mt from"fs";import z from"path";var V,Mr=m(()=>{"use strict";l();Lo();V=class{constructor(e,r={}){this.rootDir=e;this.workspaceMap=r.workspaceMap??new Map,this.tsconfigSearchPaths=r.tsconfigSearchPaths??[e],this.pathAliases=r.pathAliases,this.langResolvers=r.langResolvers??[new Fe,new we,new Ee,new Te,new Ne]}rootDir;workspaceMap;tsconfigSearchPaths;pathAliases;langResolvers;resolveAll(e,r){let n=this.resolvePathAlias(r);if(n)return[n];if(r.startsWith(".")||r.startsWith("/")){let i=this.resolveLocalPath(e,r);return i?[i]:[]}let s=(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,r,this.rootDir,s);if(a)return a}let o=this.resolveWorkspaceImport(r);return o?[o]:[{path:r,isExternal:!0}]}resolve(e,r){let n=this.resolvePathAlias(r);if(n)return n;if(r.startsWith(".")||r.startsWith("/"))return this.resolveLocalPath(e,r);let s=(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,r,this.rootDir,s);if(a)return a[0]??null}let o=this.resolveWorkspaceImport(r);return o||{path:r,isExternal:!0}}resolveLocalPath(e,r){let n=z.dirname(e),s=r.startsWith("/")?r:z.resolve(n,r),o=!s.startsWith(this.rootDir),i=["",".ts",".tsx",".js",".jsx",".mjs",".cjs",".css",".scss",".sass",".less",".styl",".coffee",".ls",".lua",".py",".feature",".md",".mdx"],a=s.match(/\.(js|mjs|cjs)$/);if(a){let c=s.slice(0,-a[0].length);for(let p of[".ts",".tsx"]){let g=this.tryExtensions(c,p,o);if(g)return g}}for(let c of i){let p=this.tryExtensions(s,c,o);if(p)return p}return o?{path:s,isExternal:!0}:null}tryExtensions(e,r,n){let s=e+r;if(this.isFile(s))return{path:s,isExternal:n};let o=z.join(e,`index${r}`);if(this.isFile(o))return{path:o,isExternal:n};if(r===".py"){let i=z.join(e,"__init__.py");if(this.isFile(i))return{path:i,isExternal:n}}return null}isFile(e){try{return mt.statSync(e,{throwIfNoEntry:!1})?.isFile()===!0}catch{return!1}}resolvePathAlias(e){if(this.pathAliases)for(let r in this.pathAliases){let n=this.matchAliasPattern(r,e),s=this.pathAliases[r];if(n&&s){let o=this.tryAliasSubstitutions(s,n[1]||"");if(o)return o}}for(let r of this.tsconfigSearchPaths){let n=z.join(r,"tsconfig.json");if(mt.existsSync(n))try{let o=JSON.parse(mt.readFileSync(n,"utf-8")).compilerOptions?.paths;if(!o)continue;for(let i in o){let a=this.matchAliasPattern(i,e);if(a){let c=this.tryAliasSubstitutions(o[i],a[1]||"",r);if(c)return c}}}catch{}}return null}aliasRegexCache=new Map;matchAliasPattern(e,r){let n=this.aliasRegexCache.get(e);if(!n){let s=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace("\\*","(.*)");n=new RegExp(`^${s}$`),this.aliasRegexCache.set(e,n)}return r.match(n)}tryAliasSubstitutions(e,r,n=this.rootDir){let s=["",".ts",".tsx",".js",".jsx",".coffee",".ls",".lua",".feature"];for(let o of e){let i=o.replace("*",r),a=z.resolve(n,i);for(let c of s){let p=this.tryExtensions(a,c,!1);if(p)return p}}return null}resolveWorkspaceImport(e){if(this.workspaceMap.size===0)return null;for(let[r,n]of this.workspaceMap){if(e!==r&&!e.startsWith(`${r}/`))continue;let s=e.slice(r.length),o={path:"",isExternal:!1,isWorkspace:!0,workspacePackage:r};if(!s){for(let a of["src/index.ts","src/index.tsx","index.ts","index.tsx","index.js"]){let c=z.join(n,a);try{if(mt.statSync(c,{throwIfNoEntry:!1})?.isFile())return{...o,path:c}}catch{}}return{...o,path:n}}let i=this.resolveLocalPath(z.join(n,"_dummy"),s.slice(1));return i?{...o,path:i.path}:null}return null}}});import Pe from"fs";import T from"path";import jp from"piscina";function zp(t,e){if(t.length===0)return e;let r=t.map(i=>T.dirname(i).split(T.sep)),n=r[0];for(let i of r.slice(1)){let a=0;for(;a<n.length&&a<i.length&&n[a]===i[a];)a++;n=n.slice(0,a)}let s=n.join(T.sep)||T.sep,o=T.relative(e,s);return o.startsWith("..")||T.isAbsolute(o)?e:s}var _p,Oo,Wp,Ie,Go=m(()=>{"use strict";l();yr();q();Cs();go();Eo();ge();Mr();_p=["tests","test","__tests__","specs","spec"],Oo=new Set(["node_modules",".git","dist","build",".next",".cache","mokosh-cache","coverage"]),Wp=20;Ie=class{constructor(e,r=null,n,s,o=!1,i=new Map,a=!0){this.rootDir=e;this.enableGitStats=o;this.coverageMap=i;this.parallelParsing=a;this.previousGraph=r,this.resolver=n||new V(e),this.lockFile=bs(e),s&&(this.progressCallback=s)}rootDir;enableGitStats;coverageMap;parallelParsing;graph={nodes:new Map};visited=new Set;queue=[];previousGraph=null;resolver;lockFile=null;progressCallback;pool=null;gitStatsMap=null;async build(e){let r=e.map(n=>T.isAbsolute(n)?n:T.resolve(this.rootDir,n));await this.initPool(),this.enableGitStats&&(this.gitStatsMap=ys(this.rootDir));try{for(let n of r)this.enqueue(n);return await this.drain(),await this.processTestFiles(zp(r,this.rootDir)),await this.processDocFiles(),this.progressCallback&&this.visited.size>=100&&process.stderr.write(`
22
+ `;return`${p+y+d+i}
23
+ ${f}`}}});import ko from"path";import wo from"typescript";var ml,ot,Eo=u(()=>{"use strict";l();ie();ml=/\/\/ <mokosh-tags>[\s\S]*?\/\/ <\/mokosh-tags>\n*/,ot=class{name="vitest";canHandle(e){return O.has(ko.extname(e).toLowerCase())}apply(e,r,n){let o=r.replace(ml,""),s=wo.createSourceFile(ko.basename(e),o,wo.ScriptTarget.Latest,!0),i=fr(s),[a]=i;if(!a)return o;let c=mr(a,"tags",s),p=[...n].sort();if(c!==null&&JSON.stringify([...c].sort())===JSON.stringify(p))return o;let f=i.flatMap(d=>{let y=n.length===0?gr(d,"tags",s):ur(d,"tags",hr(p),s);return y?[y]:[]});return f.length>0?dr(o,f):o}}});import vr from"path";import st from"typescript";function gl(t){let e=st.createSourceFile("detect.ts",t,st.ScriptTarget.Latest,!0);for(let r of e.statements){if(!st.isImportDeclaration(r)||!st.isStringLiteral(r.moduleSpecifier))continue;let n=ul[r.moduleSpecifier.text];if(n)return n}return null}function Fo(t="vitest",e={},r=process.cwd()){return[new Ze,new nt,new et,new kr(r,t,Object.entries(e))]}function To(t,e){return e.find(r=>r.canHandle(t))??null}var No,ul,kr,Po=u(()=>{"use strict";l();go();ho();xo();bo();So();Co();vo();ie();Eo();No={vitest:()=>new ot,playwright:()=>new rt,cypress:()=>new qe,jest:()=>new tt},ul={"@playwright/test":"playwright",cypress:"cypress","@jest/globals":"jest",vitest:"vitest"};kr=class{constructor(e,r,n){this.rootDir=e;this.defaultFramework=r;this.frameworkOverrides=n}rootDir;defaultFramework;frameworkOverrides;name="auto";canHandle(e){return O.has(vr.extname(e).toLowerCase())}apply(e,r,n){let o=gl(r)??this.matchOverride(e)??this.defaultFramework;return(No[o]??No.vitest)().apply(e,r,n)}matchOverride(e){let r=vr.relative(this.rootDir,e).split(vr.sep).join("/");for(let[n,o]of this.frameworkOverrides)if(yo(n,r))return o;return null}}});import Io from"fs/promises";import dl from"path";async function bl(t,e,r,n){let o;try{o=await Io.readFile(t,"utf8")}catch(a){return{path:t,status:"error",error:String(a)}}let s=To(t,n);if(!s)return{path:t,status:"unchanged"};let i=s.apply(t,o,e);return i===o?{path:t,status:"unchanged"}:(r||await Io.writeFile(t,i,"utf8"),{path:t,status:"updated"})}async function wr(t,e,r){let n=re(e),o=n.tagApplier?.framework??"vitest",s=n.tagApplier?.frameworkOverrides??{},i=Fo(o,s,e),a={updated:0,unchanged:0,errors:0,files:[]};for(let c of t.nodes.values()){if(c.category!=="test")continue;let p=new Set,f=[];for(let x of c.tags)yl.has(x.kind)&&hl.test(x.name)&&(xl.has(x.name.toLowerCase())||p.has(x.name)||(p.add(x.name),f.push(x.name)));f.sort();let d=dl.resolve(e,c.path),y=await bl(d,f,r.dryRun,i);y.path=c.path,a.files.push(y),y.status==="updated"?a.updated++:y.status==="unchanged"?a.unchanged++:a.errors++}return a}var hl,yl,xl,Do=u(()=>{"use strict";l();Et();Po();hl=/^[a-zA-Z][a-zA-Z0-9_-]{1,}$/,yl=new Set(["import"]),xl=new Set(["common","fixture","fixtures","helper","helpers","index","main","mock","mocks","setup","shared","spec","test","tests","types","util","utils"])});var it,Er=u(()=>{"use strict";l();it=class{isTestNode(e){return e.category==="test"||e.tags.some(r=>r.name==="test")}}});import{execFileSync as Nr}from"child_process";function Ro(t,e){let r="",n=0;for(let o of t.split(`
24
+ `)){if(o.startsWith("\0")){let[,c,p]=o.slice(1).split(" ");r=c??"",n=p?Number(p)*1e3:0;continue}if(o==="")continue;let s=o.split(" "),i=s[0];if(!i)continue;let a=i.startsWith("R")||i.startsWith("C")?s[2]:s[1];a&&e(a,r,n)}}function Lo(t){let e=new Map;try{let r=Nr("git",["-C",t,"log","--since=90 days ago","--name-status","-M",`--format=${Mo}`],{encoding:"utf-8",stdio:["ignore","pipe","ignore"],maxBuffer:Ao});Ro(r,(n,o,s)=>{let i=e.get(n);if(i){i.commitCount90d+=1;return}e.set(n,{commitCount90d:1,lastAuthor:o||void 0,lastCommitAt:s||void 0})})}catch{return e}try{let r=Nr("git",["-C",t,"log","--name-status","-M",`--format=${Mo}`],{encoding:"utf-8",stdio:["ignore","pipe","ignore"],maxBuffer:Ao});Ro(r,(n,o,s)=>{e.has(n)||e.set(n,{commitCount90d:0,lastAuthor:void 0,lastCommitAt:s||void 0})})}catch{}return e}var at,Mo,Ao,Fr=u(()=>{"use strict";l();at=class{getChangedFiles(){try{let r=[["diff","--name-only"],["diff","--cached","--name-only"],["ls-files","--others","--exclude-standard"]].flatMap(n=>{try{return Nr("git",n,{encoding:"utf-8",stdio:["ignore","pipe","ignore"]}).split(`
25
+ `).map(s=>s.trim()).filter(s=>s!=="")}catch{return[]}});return Array.from(new Set(r))}catch(e){return console.error("Error getting git diff:",e),[]}}},Mo="%x00%H%x09%ae%x09%at",Ao=256*1024*1024});import Oo from"path";function W(t){switch(Oo.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";case".md":case".mdx":return"markdown";default:return"unknown"}}function A(t){let e=Oo.extname(t).toLowerCase();return[".css",".scss",".sass",".less",".styl"].includes(e)}var z=u(()=>{"use strict";l()});function $(t){return t.startsWith("'")||t.startsWith('"')?t.slice(1,-1):t}function ae(t){let e=new Set,r=/@tag\s+([a-zA-Z0-9_-]+)/g,n=r.exec(t);for(;n!==null;)n[1]&&e.add(n[1]),n=r.exec(t);return e}function ce(t,e){let r=t.toLowerCase();return r.includes(".test.")||r.includes(".spec.")||e.has("test")?"test":"logic"}var ct=u(()=>{"use strict";l()});import Sl from"coffeescript";function jo(t){if(t){if(typeof t.originalValue=="string")return t.originalValue;if(typeof t.value=="string")return $(t.value)}}function Q(t){if(t){if(typeof t.value=="string")return t.value;if(typeof t.base?.value=="string")return t.base.value}}function Cl(t,e){let r=jo(e.source);return r?{fromPath:t,toPath:"",rawSpecifier:r,isStyle:A(r),type:"static"}:null}function vl(t,e){let r=e.variable?.base?.value==="require",n=jo(e.args?.[0]?.base);return!r||!n?null:{fromPath:t,toPath:"",rawSpecifier:n,isStyle:A(n),type:"require"}}function Go(t,e){if(e)return[{name:e}];let r=t.value;if(r?.constructor?.name==="Class"){let o=Q(r.variable);return o?[{name:o}]:[]}if(r?.base?.constructor?.name==="Obj"&&Array.isArray(r.base.properties))return r.base.properties.map(o=>Q(o.variable)??Q(o)).filter(o=>!!o).map(o=>({name:o}));let n=Q(r);return n?[{name:n}]:[]}function kl(t){if(Array.isArray(t.specifiers))return t.specifiers.map(r=>r.identifier??r.original?.value).filter(r=>!!r).map(r=>({name:r}));let e=Q(t.variable)??Q(t.variable?.base);return e?[{name:e}]:[]}function wl(t,e,r,n){let o=e.constructor?.name;if(o==="ImportDeclaration"){let s=Cl(t,e);s&&r.push(s)}else if(o==="Call"){let s=vl(t,e);s&&r.push(s)}else if(o==="Assign"){let s=Q(e.variable?.base),i=e.variable?.properties?.[0]?.name?.value;s==="module"&&i==="exports"?n.push(...Go(e,void 0)):s==="exports"&&typeof i=="string"&&n.push(...Go(e,i))}else o==="ExportNamedDeclaration"&&e.clause?n.push(...kl(e.clause)):o==="ExportDefaultDeclaration"&&n.push({name:"default"})}function Tr(t,e,r,n){if(!(!e||typeof e!="object")){wl(t,e,r,n);for(let o in e){if(o==="locationData")continue;let s=e[o];if(!(!s||typeof s!="object"))if(Array.isArray(s))for(let i of s)Tr(t,i,r,n);else Tr(t,s,r,n)}}}function _o(t,e){let r=ae(e),n=ce(t,r),o=[],s=[];try{Tr(t,Sl.nodes(e),o,s)}catch{}let i=new Set,a=s.filter(c=>i.has(c.name)?!1:(i.add(c.name),!0));return{imports:o,exports:a,tags:Array.from(r).map(c=>({name:c,kind:"comment-marker"})),category:n}}var Wo=u(()=>{"use strict";l();z();ct()});import{AstBuilder as El,GherkinClassicTokenMatcher as Nl,Parser as Fl}from"@cucumber/gherkin";import{IdGenerator as Tl}from"@cucumber/messages";function Pr(t,e){let r=new Set;try{let n=new El(Pl),o=new Nl,i=new Fl(n,o).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(n){console.warn(`[GherkinParser] Failed to parse ${t}:`,n)}return{imports:[],exports:[],tags:Array.from(r).map(n=>({name:n,kind:"comment-marker"})),category:"test"}}var Pl,zo=u(()=>{"use strict";l();be();Pl=Tl.uuid();se("gherkin",Pr)});function X(t){let e=[],r=t.firstChild;for(;r;)e.push(r),r=r.nextSibling;return e}function Ce(t,e){let r=1;for(let n=0;n<e&&n<t.length;n++)t[n]===`
26
+ `&&r++;return r}var Ir=u(()=>{"use strict";l()});function Il(t,e){let r=1;function n(o){switch(o.type.name){case"IfStatement":case"ForStatement":r++;break;case"Case":{o.firstChild?.type.name==="case"&&r++;break}case"LogicOp":{let i=e.slice(o.from,o.to);(i==="&&"||i==="||")&&r++;break}}let s=o.firstChild;for(;s;)n(s),s=s.nextSibling}return n(t),r}function Dl(t,e){let r=0;function n(o,s,i){let a=o.type.name;if(a==="IfStatement"){r+=i?1:1+s;let f=X(o),d=i?s:s+1,y=f[1];y&&y.type.name!=="Block"&&n(y,d,!1);let x=f.find(C=>C.type.name==="Block");x&&n(x,d,!1);let k=f.findIndex(C=>C.type.name==="else");if(k>=0){let C=f[k+1];C?.type.name==="IfStatement"?n(C,s,!0):C&&(r+=1,n(C,s+1,!1))}return}if(a==="ForStatement"||a==="SwitchStatement"||a==="SelectStatement"){r+=1+s;let f=o.firstChild;for(;f;)n(f,s+1,!1),f=f.nextSibling;return}if(a==="LogicOp"){let f=e.slice(o.from,o.to);(f==="&&"||f==="||")&&(r+=1)}if(s>0&&a==="FunctionLiteral"){r+=1+s;let f=o.firstChild;for(;f;)n(f,s+1,!1),f=f.nextSibling;return}let p=o.firstChild;for(;p;)n(p,s,!1),p=p.nextSibling}return n(t,0,!1),r}function lt(t,e){return{complexity:Il(t,e),cognitiveComplexity:Dl(t,e)}}function Dr(t,e){let n=t.getChild("Parameters")?.getChild("Parameter"),o=n?.getChild("TypeName")??n?.getChild("PointerType")?.getChild("TypeName");return o?e.slice(o.from,o.to):void 0}function $o(t,e){let r=[],n=t.cursor();do if(n.name==="FunctionDecl"){let o=n.node.getChild("DefName");if(o){let s=e.slice(o.from,o.to),{complexity:i,cognitiveComplexity:a}=lt(n.node,e);r.push({name:s,line:Ce(e,n.from),complexity:i,cognitiveComplexity:a})}}else if(n.name==="MethodDecl"){let o=n.node.getChild("FieldName");if(o){let s=e.slice(o.from,o.to),i=Dr(n.node,e),a=i?`${i}.${s}`:s,{complexity:c,cognitiveComplexity:p}=lt(n.node,e);r.push({name:a,line:Ce(e,n.from),complexity:c,cognitiveComplexity:p})}}while(n.next());return r}var Uo=u(()=>{"use strict";l();Ir()});import Ml from"path";import{parser as Al}from"@lezer/go";function Jo(t,e){let r=[],n=new Map,o=new Set,s=new Set,i=new Map,a=Al.parse(e),c=a.cursor();do switch(c.name){case"LineComment":{let E=e.slice(c.from,c.to),I=E.match(Rl);I?.[1]&&o.add(I[1]);let G=E.match(Ll);G&&Bo(G[1],s);let j=E.match(Ol);j&&Bo(j[1],s);break}case"ImportSpec":{let E=c.node.getChild("String");if(E){let G=e.slice(E.from,E.to).slice(1,-1);r.push({fromPath:t,toPath:"",rawSpecifier:G,isExternal:!0,isStyle:!1,type:"static"});let j=c.node.getChild("DefName"),ee=j?e.slice(j.from,j.to):G.split("/").pop();ee&&ee!=="_"&&ee!=="."&&i.set(ee,G)}break}case"FunctionDecl":case"MethodDecl":case"TypeDecl":case"VarDecl":case"ConstDecl":{let E=c.node.getChild("DefName")??c.node.getChild("FieldName")??c.node.getChild("TypeSpec")?.getChild("DefName")??c.node.getChild("VarSpec")?.getChild("DefName")??c.node.getChild("ConstSpec")?.getChild("DefName");if(E){let I=e.slice(E.from,E.to);I!=="_"&&/^[A-Z]/.test(I)&&!n.has(I)&&n.set(I,{name:I})}break}}while(c.next());let p=r.some(E=>E.rawSpecifier==="testing"),f=Ml.basename(t).endsWith("_test.go")||o.has("test")||p?"test":"logic",d=new Set([...o,...s]),{complexity:y,cognitiveComplexity:x}=lt(a.topNode,e),k=$o(a,e),C=f==="test"?[]:Gl(a,e,i);return{imports:r,exports:Array.from(n.values()),tags:Array.from(d).map(E=>({name:E,kind:"comment-marker"})),category:f,rawCallEdges:C,complexity:y,cognitiveComplexity:x,...k.length>0?{functions:k}:{}}}function Gl(t,e,r){let n=[];function o(i,a){if(i.type.name==="CallExpr"){let p=i.firstChild;if(p?.type.name==="SelectorExpr"){let f=p.firstChild,d=p.getChild("FieldName");if(f?.type.name==="VariableName"&&d){let y=e.slice(f.from,f.to),x=r.get(y);if(x){let k=e.slice(d.from,d.to);n.push({from:a,to:k,toSpecifier:x})}}}}let c=i.firstChild;for(;c;)o(c,a),c=c.nextSibling}let s=t.cursor();do if(s.name==="FunctionDecl"){let i=s.node.getChild("DefName"),a=s.node.getChild("Block");if(i&&a){let c=e.slice(i.from,i.to);/^[A-Z]/.test(c)&&o(a,c)}}else if(s.name==="MethodDecl"){let i=s.node.getChild("FieldName"),a=s.node.getChild("Block");if(i&&a){let c=e.slice(i.from,i.to),p=Dr(s.node,e);o(a,p?`${p}.${c}`:c)}}while(s.next());return n}function Bo(t,e){for(let r of t.split(/[\s,&|!()]+/)){let n=r.trim();n&&n!=="ignore"&&e.add(n)}}var Rl,Ll,Ol,Ko=u(()=>{"use strict";l();Uo();Rl=/\/\/\s*@tag\s+([a-zA-Z0-9_-]+)/,Ll=/^\/\/go:build\s+(.+)$/,Ol=/^\/\/\s*\+build\s+(.+)$/});import jl from"livescript";function Y(t){if(t){if(typeof t.value=="string")return t.value;if(typeof t.base?.value=="string")return t.base.value}}function _l(t){if(!t)return[];if(t.constructor?.name==="Class"){let r=Y(t.title);return r?[{name:r}]:[]}if(t.constructor?.name==="Obj"&&Array.isArray(t.items))return t.items.map(r=>Y(r.key)??Y(r.val)).filter(r=>!!r).map(r=>({name:r}));let e=Y(t);return e?[{name:e}]:[]}function Wl(t){let e=t.constructor?.name||t.type;if(e==="Assign"&&t.left?.constructor?.name==="Chain"){let r=t.left,n=Y(r.head),s=r.tails?.[0]?.key?.name;if(n==="module"&&s==="exports")return _l(t.right);if(n==="exports"&&typeof s=="string")return[{name:s}];if(r.head?.verb==="out"&&typeof s=="string")return[{name:s}]}if(e==="Import"&&t.left?.verb==="out"){let r=t.right;if(r?.constructor?.name==="Obj"&&Array.isArray(r.items))return r.items.map(n=>Y(n.val)??Y(n.key)).filter(n=>!!n).map(n=>({name:n}))}return[]}function $l(t,e){let r=t.constructor?.name||t.type;if(r==="Import"){let n=t.right?.value;if(typeof n=="string"){let o=$(n);return{fromPath:e,toPath:"",rawSpecifier:o,isStyle:A(o),type:"static"}}}if(r==="Chain"&&t.head?.value==="require"){let n=t.tails?.[0];if(n?.constructor?.name==="Call"||n?.type==="Call"){let o=n.args?.[0]?.value;if(typeof o=="string"){let s=$(o);return{fromPath:e,toPath:"",rawSpecifier:s,isStyle:A(s),type:"require"}}}}return null}function Mr(t,e,r){if(!t||typeof t!="object")return[];let n=[],o=$l(t,e);o&&n.push(o),r.push(...Wl(t));for(let s in t){if(zl.has(s))continue;let i=t[s];if(!(!i||typeof i!="object"))if(Array.isArray(i))for(let a of i)n.push(...Mr(a,e,r));else n.push(...Mr(i,e,r))}return n}function Ho(t,e){let r=ae(e),n=ce(t,r),o=[],s=[];try{o=Mr(jl.ast(e),t,s)}catch{}let i=new Set,a=s.filter(c=>i.has(c.name)?!1:(i.add(c.name),!0));return{imports:o,exports:a,tags:Array.from(r).map(c=>({name:c,kind:"comment-marker"})),category:n}}var zl,Vo=u(()=>{"use strict";l();z();ct();zl=new Set(["first_line","first_column","last_line","last_column","line","column"])});import Ul from"luaparse";function Bl(t,e){let r=[];function n(o){if(!(!o||typeof o!="object")){if((o.type==="CallExpression"||o.type==="StringCallExpression")&&o.base?.type==="Identifier"&&o.base?.name==="require"){let s;if(o.type==="CallExpression"){let i=o.arguments?.[0];i?.type==="StringLiteral"&&(s=$(i.raw))}else if(o.type==="StringCallExpression"){let i=o.argument;i?.type==="StringLiteral"&&(s=$(i.raw))}s&&r.push({fromPath:e,toPath:"",rawSpecifier:s,isStyle:A(s),type:"require"})}for(let s in o){if(s==="loc")continue;let i=o[s];if(i&&typeof i=="object")if(Array.isArray(i))for(let a of i)n(a);else n(i)}}}return n(t),r}function Jl(t){let e=new Set;for(let r of t)r.type==="LocalStatement"&&r.variables.forEach((n,o)=>{r.init[o]?.type==="TableConstructorExpression"&&e.add(n.name)});return e}function Kl(t){let e=t[t.length-1];if(e?.type!=="ReturnStatement")return[];let r=e.arguments[0];if(r?.type!=="TableConstructorExpression")return[];let n=[];for(let o of r.fields)o.type==="TableKeyString"&&n.push({name:o.key.name});return n}function Hl(t){let e=t.body,r=Jl(e),n=Kl(e);for(let s of e)if(s.type==="FunctionDeclaration")s.identifier?.type==="MemberExpression"?s.identifier.base.type==="Identifier"&&r.has(s.identifier.base.name)&&n.push({name:s.identifier.identifier.name}):s.identifier?.type==="Identifier"&&!s.isLocal&&n.push({name:s.identifier.name});else if(s.type==="AssignmentStatement")for(let i of s.variables)i.type==="MemberExpression"&&i.base.type==="Identifier"&&r.has(i.base.name)&&n.push({name:i.identifier.name});let o=new Set;return n.filter(s=>o.has(s.name)?!1:(o.add(s.name),!0))}function Qo(t,e){let r=ae(e),n=ce(t,r),o=[],s=[];try{let i=Ul.parse(e);o=Bl(i,t),s=Hl(i)}catch{}return{imports:o,exports:s,tags:Array.from(r).map(i=>({name:i,kind:"comment-marker"})),category:n}}var Xo=u(()=>{"use strict";l();z();ct()});async function Yl(){return Yo??=(async()=>{let{unified:t}=await import("unified"),e=(await import("remark-parse")).default;return t().use(e)})(),Yo}function ql(t){let e=t.trim();return e.length===0||e.startsWith("#")||Vl.some(r=>e.startsWith(r))}function Zl(t,e){let r=t.match(Xl);return r?r.map(n=>({fromPath:e,toPath:"",rawSpecifier:n,isStyle:!1,type:"static"})):[]}function qo(t,e,r){if(t.type==="link"&&typeof t.url=="string"&&!ql(t.url)&&r.push({fromPath:e,toPath:"",rawSpecifier:t.url,isStyle:!1,type:"static"}),(t.type==="code"||t.type==="inlineCode")&&typeof t.value=="string"&&r.push(...Zl(t.value,e)),Array.isArray(t.children))for(let n of t.children)qo(n,e,r)}async function Zo(t,e){let n=(await Yl()).parse(e),o=[];qo(n,t,o);let s=new Set;return{imports:o.filter(a=>s.has(a.rawSpecifier)?!1:(s.add(a.rawSpecifier),!0)),exports:[],tags:[],category:"other"}}var Vl,Ql,Xl,Yo,es=u(()=>{"use strict";l();Vl=["http://","https://","mailto:","//"],Ql="ts|tsx|js|jsx|mjs|cjs|py|go|lua|css|scss|less|styl|coffee|ls|feature|md|mdx|json",Xl=new RegExp(`(?:\\.{1,2}/)?[\\w.-]+(?:/[\\w.-]+)*\\.(?:${Ql})\\b`,"g")});function ep(t){let e=1;function r(n){switch(n.type.name){case"IfStatement":{e+=X(n).filter(s=>s.type.name==="if"||s.type.name==="elif").length;break}case"TryStatement":{e+=X(n).filter(s=>s.type.name==="except").length;break}case"ForStatement":case"WhileStatement":case"ConditionalExpression":e++;break;case"and":case"or":e++;break}let o=n.firstChild;for(;o;)r(o),o=o.nextSibling}return r(t),e}function tp(t){let e=0;function r(n,o){let s=n.type.name;if(s==="IfStatement"){let c=X(n),p=0,f=0;for(;f<c.length;){let d=c[f];if(d?.type.name==="if"||d?.type.name==="elif"){let y=p>0;e+=y?1:1+o;let x=y?o:o+1,k=c[f+1],C=c[f+2];k&&r(k,x),C&&r(C,x),p++,f+=3}else if(d?.type.name==="else"){e+=1;let y=c[f+1];y&&r(y,o+1),f+=2}else f++}return}if(s==="TryStatement"){let c=X(n),p=0;for(;p<c.length;){let f=c[p];if(f?.type.name==="except"){for(e+=1+o,p++;p<c.length&&c[p]?.type.name!=="Body";)r(c[p],o),p++;p<c.length&&(r(c[p],o),p++)}else f?.type.name==="Body"&&r(f,o),p++}return}if(s==="ForStatement"||s==="WhileStatement"){e+=1+o;let c=n.firstChild;for(;c;)r(c,o+1),c=c.nextSibling;return}if((s==="ConditionalExpression"||s==="and"||s==="or")&&(e+=1),o>0&&(s==="FunctionDefinition"||s==="LambdaExpression")){e+=1+o;let c=n.firstChild;for(;c;)r(c,o+1),c=c.nextSibling;return}let a=n.firstChild;for(;a;)r(a,o),a=a.nextSibling}return r(t,0),e}function Ar(t){return{complexity:ep(t),cognitiveComplexity:tp(t)}}function ts(t,e){let r=[];function n(i,a){let{complexity:c,cognitiveComplexity:p}=Ar(i);r.push({name:a,line:Ce(e,i.from),complexity:c,cognitiveComplexity:p})}function o(i){let a=i.firstChild;for(;a;)s(a),a=a.nextSibling}function s(i){if(i.type.name==="ClassDefinition"){let a=i.getChild("VariableName"),c=a?e.slice(a.from,a.to):void 0,p=i.getChild("Body");if(p){let f=p.firstChild;for(;f;){if(f.type.name==="FunctionDefinition"){let d=f.getChild("VariableName"),y=d?e.slice(d.from,d.to):void 0;y&&n(f,c?`${c}.${y}`:y),o(f)}else s(f);f=f.nextSibling}}return}if(i.type.name==="FunctionDefinition"){let a=i.getChild("VariableName");a&&n(i,e.slice(a.from,a.to)),o(i);return}o(i)}return s(t.topNode),r}var rs=u(()=>{"use strict";l();Ir()});import rp from"path";import{parser as np}from"@lezer/python";function ns(t,e){let r=[],n=[],o=new Set,s=rp.basename(t).toLowerCase(),i=np.parse(e),a=i.cursor();do switch(a.name){case"Comment":{let x=e.slice(a.from,a.to).match(/#\s*@tag\s+([a-zA-Z0-9_-]+)/);x?.[1]&&o.add(x[1]);break}case"ImportStatement":{for(let x of sp(a.node,e,t))r.push(x);break}case"FunctionDefinition":case"ClassDefinition":{let x=a.node.parent;if(x?.name==="Script"||x?.name==="DecoratedStatement"&&x.parent?.name==="Script"){let C=a.node.getChild("VariableName");C&&n.push({name:e.slice(C.from,C.to)})}break}case"AssignStatement":{if(a.node.parent?.name==="Script"){let x=a.node.firstChild;x?.name==="VariableName"&&n.push({name:e.slice(x.from,x.to)})}break}}while(a.next());let c=fp(s,r,o);c==="test"&&o.add("test");let{complexity:p,cognitiveComplexity:f}=Ar(i.topNode),d=ts(i,e),y=c==="test"?[]:pp(i,e);return{imports:r,exports:n,tags:Array.from(o).map(x=>({name:x,kind:"comment-marker"})),category:c,rawCallEdges:y,complexity:p,cognitiveComplexity:f,...d.length>0?{functions:d}:{}}}function sp(t,e,r){let n=t.firstChild;return n?n.name==="from"?ip(t,e,r):ap(t,e,r):[]}function ip(t,e,r){let n=t.firstChild;if(!n)return[];let o=n.nextSibling;for(;o&&o.name!=="import";)o=o.nextSibling;if(!o)return[];let s=e.slice(n.to,o.from).trim(),i=cp(o.nextSibling,e);if(!i.length)return[];let a=0;for(;a<s.length&&s[a]===".";)a++;let c=s.slice(a);if(a===0)return[ve(r,s,i,!0)];let p=a===1?"./":"../".repeat(a-1);return c?[ve(r,p+c.replace(/\./g,"/"),i,!1)]:i[0]==="*"?[ve(r,p.slice(0,-1),["*"],!1)]:i.map(f=>ve(r,p+f,[f],!1))}function ap(t,e,r){let n=[],o=t.firstChild?.nextSibling??null;for(;o;){if(o.name==="VariableName"){let s=e.slice(o.from,o.to);for(;o.nextSibling?.name==="."&&o.nextSibling.nextSibling?.name==="VariableName";)o=o.nextSibling.nextSibling,s+=`.${e.slice(o.from,o.to)}`;o.nextSibling?.name==="as"&&(o=o.nextSibling.nextSibling??o.nextSibling),n.push(ve(r,s,["*"],!0))}o=o.nextSibling}return n}function cp(t,e){let r=[],n=t;for(;n;)n.name==="*"?r.push("*"):n.name==="VariableName"&&(r.push(e.slice(n.from,n.to)),n.nextSibling?.name==="as"&&(n=n.nextSibling.nextSibling??n.nextSibling)),n=n.nextSibling;return r}function lp(t,e){let r=new Map,n=t.cursor();do{if(n.name!=="ImportStatement")continue;let s=n.node.firstChild;if(s?.type.name!=="from")continue;let i=s.nextSibling;for(;i&&i.type.name!=="import";)i=i.nextSibling;if(!i)continue;let a=e.slice(s.to,i.from).trim(),c=0;for(;c<a.length&&a[c]===".";)c++;let p=a.slice(c),f=c<=1?"./":"../".repeat(c-1),d=i.nextSibling;for(;d;){if(d.type.name==="VariableName"){let y=e.slice(d.from,d.to),x=y;if(d.nextSibling?.type.name==="as"){let C=d.nextSibling.nextSibling;C?.type.name==="VariableName"&&(x=e.slice(C.from,C.to),d=C)}let k=c===0?a:p?f+p.replace(/\./g,"/"):f+y;r.set(x,k)}d=d.nextSibling}}while(n.next());return r}function pp(t,e){let r=lp(t,e),n=[];function o(a,c){if(a.type.name==="CallExpression"&&a.firstChild?.type.name==="VariableName"){let f=a.firstChild,d=e.slice(f.from,f.to),y=r.get(d);y&&n.push({from:c,to:d,toSpecifier:y})}let p=a.firstChild;for(;p;)o(p,c),p=p.nextSibling}function s(a){let c=a.firstChild;for(;c;)i(c),c=c.nextSibling}function i(a){if(a.type.name==="ClassDefinition"){let c=a.getChild("VariableName"),p=c?e.slice(c.from,c.to):void 0,f=a.getChild("Body");if(f){let d=f.firstChild;for(;d;){if(d.type.name==="FunctionDefinition"){let y=d.getChild("VariableName"),x=y?e.slice(y.from,y.to):void 0;x&&o(d,p?`${p}.${x}`:x)}else i(d);d=d.nextSibling}}return}if(a.type.name==="FunctionDefinition"){let c=a.getChild("VariableName");c&&o(a,e.slice(c.from,c.to));return}s(a)}return i(t.topNode),n}function ve(t,e,r,n){return{fromPath:t,toPath:"",rawSpecifier:e,isStyle:!1,isExternal:n,type:"static",symbols:r.length>0?r:void 0}}function fp(t,e,r){return t.startsWith("test_")||t.endsWith("_test.py")?"test":t==="conftest.py"||t==="setup.py"?"config":r.has("test")||e.some(n=>op.has(n.rawSpecifier))?"test":"logic"}var op,os=u(()=>{"use strict";l();rs();op=new Set(["pytest","unittest","nose","hypothesis"])});import b from"typescript";function mp(t){let e=1;function r(n){switch(n.kind){case b.SyntaxKind.IfStatement:case b.SyntaxKind.ConditionalExpression:case b.SyntaxKind.ForStatement:case b.SyntaxKind.ForInStatement:case b.SyntaxKind.ForOfStatement:case b.SyntaxKind.WhileStatement:case b.SyntaxKind.DoStatement:case b.SyntaxKind.CatchClause:case b.SyntaxKind.CaseClause:e++;break;case b.SyntaxKind.BinaryExpression:{let o=n.operatorToken.kind;(o===b.SyntaxKind.AmpersandAmpersandToken||o===b.SyntaxKind.BarBarToken||o===b.SyntaxKind.QuestionQuestionToken)&&e++;break}}b.forEachChild(n,r)}return r(t),e}function up(t){let e=0;function r(n,o,s){if(b.isIfStatement(n)){e+=s?1:1+o;let a=s?o:o+1;r(n.expression,a,!1),r(n.thenStatement,a,!1),n.elseStatement&&(b.isIfStatement(n.elseStatement)?r(n.elseStatement,o,!0):(e+=1,r(n.elseStatement,o+1,!1)));return}if(b.isForStatement(n)||b.isForInStatement(n)||b.isForOfStatement(n)||b.isWhileStatement(n)||b.isDoStatement(n)||b.isSwitchStatement(n)){e+=1+o,b.forEachChild(n,a=>r(a,o+1,!1));return}if(b.isCatchClause(n)){e+=1+o,b.forEachChild(n,a=>r(a,o,!1));return}if(b.isConditionalExpression(n)&&(e+=1),b.isBinaryExpression(n)){let a=n.operatorToken.kind;(a===b.SyntaxKind.AmpersandAmpersandToken||a===b.SyntaxKind.BarBarToken||a===b.SyntaxKind.QuestionQuestionToken)&&(e+=1)}if(o>0&&(b.isFunctionDeclaration(n)||b.isFunctionExpression(n)||b.isArrowFunction(n))){e+=1+o,b.forEachChild(n,a=>r(a,o+1,!1));return}b.forEachChild(n,a=>r(a,o,!1))}return r(t,0,!1),e}function Rr(t){return{complexity:mp(t),cognitiveComplexity:up(t)}}var ss=u(()=>{"use strict";l()});import w from"typescript";function is(t,e){gp(t,e),hp(t,e),yp(t,e),xp(t,e)}function gp(t,e){if((w.isFunctionDeclaration(t)||w.isVariableDeclaration(t))&&t.name&&w.isIdentifier(t.name)&&dp(t)){let r;if(w.isFunctionDeclaration(t))r="function";else{let n=t.initializer;r=n&&(w.isArrowFunction(n)||w.isFunctionExpression(n))?"function":"variable"}e.tags.add({name:t.name.text,kind:r})}}function dp(t){if(w.isFunctionDeclaration(t))return w.isSourceFile(t.parent);let e=t.parent?.parent;return!!e&&w.isSourceFile(e.parent)}function hp(t,e){if(!w.isStringLiteral(t))return;let r=t.text.match(/@[\w-]+/g);if(r)for(let n of r)e.tags.add({name:n.substring(1),kind:"comment-marker"})}function yp(t,e){if(!w.isSourceFile(t))return;let r=/@tag\s+([a-zA-Z0-9_-]+)/g,n=t.getFullText(),o=r.exec(n);for(;o!==null;)o[1]&&e.tags.add({name:o[1],kind:"comment-marker"}),o=r.exec(n)}function xp(t,e){if(w.isCallExpression(t)&&bp(t.expression))for(let r of t.arguments)w.isObjectLiteralExpression(r)&&Sp(r,e)}function bp(t){return w.isIdentifier(t)?Lr.has(t.text):!!(w.isPropertyAccessExpression(t)&&(Lr.has(t.name.text)||w.isIdentifier(t.expression)&&Lr.has(t.expression.text)))}function Sp(t,e){for(let r of t.properties){if(!w.isPropertyAssignment(r)||!w.isIdentifier(r.name)||r.name.text!=="tags"&&r.name.text!=="tag")continue;let{initializer:n}=r,o=w.isArrayLiteralExpression(n)?n.elements.filter(w.isStringLiteral):r.name.text==="tag"&&w.isStringLiteral(n)?[n]:[];for(let s of o)e.tags.add({name:s.text.replace(/^@/,""),kind:"comment-marker"})}}var Lr,as=u(()=>{"use strict";l();Lr=new Set(["test","describe","it"])});import cs from"path";import h from"typescript";function Or(t,e,r){let n=[],o=new Map,s=new Set,i=h.createSourceFile(t,e,h.ScriptTarget.Latest,!0,r==="typescript"?h.ScriptKind.TSX:h.ScriptKind.JSX),a={filePath:t,imports:n,exports:o,tags:s,rawCallEdges:[],sourceFile:i,hasUI:!1,hasTypesOnly:!0,totalStatements:0,exportStatements:0},c=C=>{wp(C,a),h.forEachChild(C,c)};c(i);let p=Lp(t,a);(p==="test"||p==="barrel")&&s.add({name:p,kind:"comment-marker"}),p!=="test"&&Op(a,i);let f=i.statements[0],d=f?ps(f):void 0,{complexity:y,cognitiveComplexity:x}=Rr(i),k=Cp(i);return{imports:n,exports:Array.from(o.values()),tags:Array.from(s),category:p,rawCallEdges:a.rawCallEdges??[],complexity:y,cognitiveComplexity:x,...k.length>0?{functions:k}:{},...d!==void 0?{description:d}:{}}}function Cp(t){let e=[],r=(o,s)=>{let{complexity:i,cognitiveComplexity:a}=Rr(s),c=t.getLineAndCharacterOfPosition(s.getStart(t)).line+1;e.push({name:o,line:c,complexity:i,cognitiveComplexity:a})},n=(o,s)=>{if(h.isFunctionDeclaration(o)&&o.name&&o.body?r(o.name.text,o):h.isVariableDeclaration(o)&&h.isIdentifier(o.name)&&o.initializer&&(h.isArrowFunction(o.initializer)||h.isFunctionExpression(o.initializer))?r(o.name.text,o.initializer):s&&h.isMethodDeclaration(o)&&h.isIdentifier(o.name)&&o.body?r(`${s}.${o.name.text}`,o):s&&h.isConstructorDeclaration(o)&&o.body?r(`${s}.constructor`,o):s&&h.isGetAccessorDeclaration(o)&&h.isIdentifier(o.name)&&o.body?r(`${s}.get ${o.name.text}`,o):s&&h.isSetAccessorDeclaration(o)&&h.isIdentifier(o.name)&&o.body&&r(`${s}.set ${o.name.text}`,o),h.isClassDeclaration(o)&&o.name){let i=o.name.text;h.forEachChild(o,a=>n(a,i));return}h.forEachChild(o,i=>n(i,s))};return n(t,void 0),e}function ls(t,e,r,n){let o={name:t},s=ps(r);s!==void 0&&(o.doc=s);let i=vp(e);i!==void 0&&(o.flags=i);let a=kp(e,n);return a!==void 0&&(o.signature=a),o}function ps(t){let e=h.getJSDocCommentsAndTags(t);for(let r of e)if(h.isJSDoc(r)&&r.comment)return h.getTextOfJSDocComment(r.comment)||void 0}function vp(t){let e=new Set(["deprecated","internal","public","alpha","beta"]),r=h.getJSDocTags(t).map(n=>n.tagName.text).filter(n=>e.has(n));return r.length>0?r:void 0}function kp(t,e){let r=h.createPrinter({removeComments:!0}),n=o=>r.printNode(h.EmitHint.Unspecified,o,e);if(h.isFunctionDeclaration(t)||h.isMethodDeclaration(t)){let o=t.parameters.map(n).join(", "),s=t.type?n(t.type):"void";return`${t.typeParameters?`<${t.typeParameters.map(a=>a.name.text).join(", ")}>`:""}(${o}) => ${s}`}if(h.isVariableDeclaration(t)){if(t.type)return n(t.type);if(t.initializer&&(h.isArrowFunction(t.initializer)||h.isFunctionExpression(t.initializer))){let o=t.initializer,s=o.parameters.map(n).join(", "),i=o.type?n(o.type):"unknown";return`(${s}) => ${i}`}return}if(h.isClassDeclaration(t)&&t.name)return`class ${t.name.text}`;if(h.isInterfaceDeclaration(t))return`interface ${t.name.text}`;if(h.isTypeAliasDeclaration(t))return n(t.type);if(h.isEnumDeclaration(t))return`enum ${t.name.text}`}function wp(t,e){Ep(t,e),Np(t,e),Tp(t,e),Pp(t,e),Rp(t,e),is(t,e)}function Ep(t,e){if(!h.isSourceFile(t))return;let r=t.statements.filter(n=>!h.isEmptyStatement(n));e.totalStatements=r.length,e.exportStatements=r.filter(n=>h.isExportDeclaration(n)||h.isExportAssignment(n)||Gr(n)).length}function Np(t,e){if(h.isJsxElement(t)||h.isJsxSelfClosingElement(t)||h.isJsxFragment(t)){e.hasUI=!0,e.hasTypesOnly=!1;return}if(h.isFunctionDeclaration(t)||h.isMethodDeclaration(t)||h.isArrowFunction(t)||h.isClassDeclaration(t)||h.isVariableStatement(t)||h.isEnumDeclaration(t)){e.hasTypesOnly=!1;return}h.isExportDeclaration(t)&&!Fp(t)&&(e.hasTypesOnly=!1)}function Fp(t){return t.isTypeOnly?!0:!t.exportClause||!h.isNamedExports(t.exportClause)?!1:t.exportClause.elements.every(e=>e.isTypeOnly)}function Tp(t,e){if(!h.isImportDeclaration(t)||!t.moduleSpecifier||!h.isStringLiteral(t.moduleSpecifier))return;let r=[];if(t.importClause&&(t.importClause.name&&r.push("default"),t.importClause.namedBindings))if(h.isNamedImports(t.importClause.namedBindings))for(let o of t.importClause.namedBindings.elements)r.push(o.name.text);else h.isNamespaceImport(t.importClause.namedBindings)&&r.push("*");let n=r.length>0?"static":"side-effect";e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:t.moduleSpecifier.text,isStyle:A(t.moduleSpecifier.text),type:n,symbols:r.length>0?r:void 0})}function Pp(t,e){h.isExportDeclaration(t)?Ip(t,e):h.isExportAssignment(t)?e.exports.set("default",{name:"default"}):Gr(t)&&Ap(t,e)}function Ip(t,e){if(t.moduleSpecifier&&h.isStringLiteral(t.moduleSpecifier))Dp(t,t.moduleSpecifier.text,e);else if(t.exportClause&&h.isNamedExports(t.exportClause))for(let r of t.exportClause.elements){let n=r.name.text;e.exports.set(n,{name:n})}}function Dp(t,e,r){let n=Mp(t),o={fromPath:r.filePath,toPath:"",rawSpecifier:e,isStyle:A(e),type:"re-export"};n.length>0&&(o.symbols=n),r.imports.push(o)}function Mp(t){return t.exportClause?h.isNamedExports(t.exportClause)?t.exportClause.elements.map(e=>e.name.text):[]:["*"]}function Ap(t,e){if((h.isFunctionDeclaration(t)||h.isClassDeclaration(t)||h.isInterfaceDeclaration(t)||h.isTypeAliasDeclaration(t)||h.isEnumDeclaration(t))&&t.name){let n=t.name.text;e.exports.set(n,ls(n,t,t,e.sourceFile));return}if(h.isVariableStatement(t)){for(let n of t.declarationList.declarations)if(h.isIdentifier(n.name)){let o=n.name.text;e.exports.set(o,ls(o,n,t,e.sourceFile))}}}function Rp(t,e){if(!h.isCallExpression(t))return;let r=t.arguments[0];!r||!h.isStringLiteral(r)||(t.expression.kind===h.SyntaxKind.ImportKeyword?e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:r.text,isStyle:A(r.text),type:"dynamic"}):h.isIdentifier(t.expression)&&t.expression.text==="require"&&e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:r.text,isStyle:A(r.text),type:"require"}))}function Lp(t,e){let r=cs.basename(t).toLowerCase(),n=cs.extname(t).toLowerCase();return fe().some(s=>r.includes(s))?"test":un(r)?"config":e.imports.some(s=>St().some(i=>s.rawSpecifier.includes(i)))?"test":n===".tsx"||n===".jsx"||e.hasUI?"ui":e.hasTypesOnly&&e.totalStatements>0?"type-only":e.totalStatements>0&&e.exportStatements/e.totalStatements>vt()?"barrel":"logic"}function Gr(t){return h.canHaveModifiers(t)&&h.getModifiers(t)?.some(e=>e.kind===h.SyntaxKind.ExportKeyword)===!0}function Op(t,e){let r=t.rawCallEdges??[];t.rawCallEdges=r;let n=new Map;for(let o of e.statements){if(!h.isImportDeclaration(o)||!h.isStringLiteral(o.moduleSpecifier))continue;let s=o.moduleSpecifier.text,i=o.importClause;if(i&&(i.name&&n.set(i.name.text,s),i.namedBindings&&h.isNamedImports(i.namedBindings)))for(let a of i.namedBindings.elements)n.set(a.name.text,s)}if(n.size!==0)for(let o of e.statements){let s=jp(o);if(s){let i=_p(o);i&&pt(i,s,n,r);continue}h.isClassDeclaration(o)&&o.name&&Gp(o,o.name.text,n,r)}}function Gp(t,e,r,n){for(let o of t.members)h.isMethodDeclaration(o)&&o.body&&h.isIdentifier(o.name)?pt(o.body,`${e}.${o.name.text}`,r,n):h.isConstructorDeclaration(o)&&o.body&&pt(o.body,`${e}.constructor`,r,n)}function jp(t){if(Gr(t)){if(h.isFunctionDeclaration(t)&&t.name)return t.name.text;if(h.isVariableStatement(t)){for(let e of t.declarationList.declarations)if(h.isIdentifier(e.name)&&e.initializer&&(h.isArrowFunction(e.initializer)||h.isFunctionExpression(e.initializer)))return e.name.text}}}function _p(t){if(h.isFunctionDeclaration(t))return t.body;if(h.isVariableStatement(t)){for(let e of t.declarationList.declarations)if(e.initializer&&(h.isArrowFunction(e.initializer)||h.isFunctionExpression(e.initializer)))return e.initializer}}function pt(t,e,r,n){if(h.isCallExpression(t)&&h.isIdentifier(t.expression)){let o=t.expression.text,s=r.get(o);s&&!n.some(i=>i.from===e&&i.to===o&&i.toSpecifier===s)&&n.push({from:e,to:o,toSpecifier:s})}h.forEachChild(t,o=>pt(o,e,r,n))}var fs=u(()=>{"use strict";l();te();ss();z();as()});function ft(t,e){if(e.length===0)return"ui";let r=!1;return t.walk(n=>{if(n.type==="rule")return r=!0,!1}),r?"ui":"barrel"}var ms=u(()=>{"use strict";l()});import gs from"postcss";import*as Wp from"postcss-less";function us(t){return t.startsWith("~")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")||t.startsWith("data:")}function $p(t){let e=t.trim();return e.length>0&&!e.startsWith("http://")&&!e.startsWith("https://")&&!e.startsWith("//")&&!e.startsWith("data:")&&!e.startsWith("#")}function Up(t,e){let r=t.match(/^\(([^)]+)\)\s+['"]([^'"]+)['"]/);if(r){let s=r[1]?.trim()??"",i=r[2]??"";if(!i)return null;let a=ds.has(s)?"side-effect":"static";return{fromPath:e,toPath:"",rawSpecifier:i,isStyle:!0,type:a,...us(i)?{isExternal:!0}:{}}}let n=t.match(/^url\(['"]?([^'")]+)['"]?\)/),o=n?n[1]?.trim()??"":t.match(/^['"]([^'"]+)['"]/)?.[1]??"";return o?{fromPath:e,toPath:"",rawSpecifier:o,isStyle:!0,type:"static",...us(o)?{isExternal:!0}:{}}:null}function Bp(t,e){let r=[],n=/url\(['"]?([^'")]+)['"]?\)/g,o=n.exec(t);for(;o!==null;){let s=o[1]?.trim()??"";$p(s)&&r.push({fromPath:e,toPath:"",rawSpecifier:s,isStyle:!0,type:"static"}),o=n.exec(t)}return r}function hs(t,e){let r=[];return t.walk(n=>{if(n.type==="atrule"&&n.name==="import"){let o=Up(n.params,e);o&&r.push(o)}n.type==="decl"&&r.push(...Bp(n.value,e))}),r}function Jp(t){return t.replace(/(?<!:)\/\/.*/g,"")}function Kp(t,e){let r=[],n=/@import\s+(?:\(([^)]+)\)\s+)?['"]([^'"]+)['"]/g,o=n.exec(t);for(;o!==null;){let s=o[1]?.trim()??"",i=o[2]??"";if(i){let a=ds.has(s)?"side-effect":"static";r.push({fromPath:e,toPath:"",rawSpecifier:i,isStyle:!0,type:a})}o=n.exec(t)}return r}function ys(t,e){let r=gs.parse(Jp(t));return{imports:hs(r,e),root:r}}function Hp(t){let e=[],r=[];for(let n of t.nodes??[]){if(n.type!=="atrule")continue;let{value:o}=n;if(o===void 0)continue;let s=n.name;s&&(e.push({name:s}),r.push({name:s,kind:"variable"}))}return{exports:e,tags:r}}function xs(t,e){try{let r=zp.parse(t),{exports:n,tags:o}=Hp(r);return{imports:hs(r,e),root:r,exports:n,tags:o}}catch{return{imports:Kp(t,e),root:gs.parse(""),exports:[],tags:[]}}}var zp,ds,bs=u(()=>{"use strict";l();zp=Wp,ds=new Set(["reference","inline"])});import{parse as Vp}from"postcss-scss";function Ss(t){return t.startsWith("_")||t.startsWith("-")}function Qp(t){return!!(t.startsWith("sass:")||t.startsWith("~")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")||!t.startsWith(".")&&!t.startsWith("/")&&!t.startsWith("_"))}function Xp(t){let e=t.match(/^['"]([^'"]+)['"]/);if(!e?.[1])return{specifier:""};let r=e[1],o=t.match(/\bas\s+(\S+)/)?.[1];return o!==void 0?{specifier:r,alias:o}:{specifier:r}}function Yp(t){let e=[],r=[];for(let n of t.nodes??[]){if(n.type==="decl"&&n.prop.startsWith("$")){let o=n.prop.slice(1);if(!o||Ss(o))continue;e.push({name:o}),r.push({name:o,kind:"variable"});continue}if(n.type==="atrule"&&(n.name==="mixin"||n.name==="function")){let s=n.params.match(/^([\w-]+)/)?.[1];if(!s||Ss(s))continue;let i=n.params.trim();e.push(i.includes("(")?{name:s,signature:i}:{name:s}),r.push({name:s,kind:"function"})}}return{exports:e,tags:r}}function Cs(t,e){let r=Vp(t),n=[];r.walk(i=>{if(i.type!=="atrule")return;let{name:a,params:c}=i;if(a!=="import"&&a!=="use"&&a!=="forward")return;let{specifier:p,alias:f}=Xp(c);if(!p)return;let d={fromPath:e,toPath:"",rawSpecifier:p,isStyle:!0,type:a==="forward"?"re-export":"static",...Qp(p)?{isExternal:!0}:{}};f&&(d.symbols=[f]),n.push(d)});let{exports:o,tags:s}=Yp(r);return{imports:n,root:r,exports:o,tags:s}}var vs=u(()=>{"use strict";l()});function ks(t,e){let r=[],n=/@require\s+['"]([^'"]+)['"]/g,o=n.exec(t);for(;o!==null;){let i=o[1];i&&r.push({fromPath:e,toPath:"",rawSpecifier:i,isStyle:!0,type:"require"}),o=n.exec(t)}let s=/(?<!@)(?:import|require)\s*\(?\s*['"]([^'"]+)['"]/g;for(o=s.exec(t);o!==null;){let i=o[1];i&&r.push({fromPath:e,toPath:"",rawSpecifier:i,isStyle:!0,type:"static"}),o=s.exec(t)}return r}function ws(t,e){if(e.length===0)return"ui";try{let r=bt("stylus");return new r.Parser(t).parse().nodes.some(s=>s.constructor.name!=="Import")?"ui":"barrel"}catch{return t.replace(/^\s*@?(?:require|import)\b.*/gm,"").trim().length>0?"ui":"barrel"}}var Es=u(()=>{"use strict";l()});function ke(t,e){let r=W(t);if(r==="stylus"){let s=ks(e,t);return{imports:s,exports:[],tags:[],category:ws(e,s)}}if(r==="scss"){let{imports:s,root:i,exports:a,tags:c}=Cs(e,t);return{imports:s,exports:a,tags:c,category:ft(i,s)}}if(r==="less"){let{imports:s,root:i,exports:a,tags:c}=xs(e,t);return{imports:s,exports:a,tags:c,category:ft(i,s)}}let{imports:n,root:o}=ys(e,t);return{imports:n,exports:[],tags:[],category:ft(o,n)}}var Ns=u(()=>{"use strict";l();z();ms();bs();vs();Es()});async function Fs(t,e){let r=W(t),n=ao(r);return n?n(t,e):{imports:[],exports:[],tags:[],category:"other"}}var Ts=u(()=>{"use strict";l();z();Wo();zo();Ko();Vo();Xo();es();os();fs();be();Ns();te();z();be();for(let[t,e]of[["javascript",(r,n)=>Or(r,n,"javascript")],["typescript",(r,n)=>Or(r,n,"typescript")],["css",ke],["scss",ke],["less",ke],["stylus",ke],["coffeescript",_o],["livescript",Ho],["lua",Qo],["python",ns],["go",Jo],["gherkin",Pr],["markdown",Zo]])se(t,e)});import Ps from"path";function Ds(t,e){for(let r of t.values()){let n=e.get(r.path);n!==void 0&&(r.coveragePct=n)}}function Ms(t,e){for(let r of t)if(r.isExternal){let n=r.rawSpecifier.startsWith("@")?r.rawSpecifier.split("/").slice(0,2).join("/"):r.rawSpecifier.split("/")[0];n&&!e.some(o=>o.name===n)&&e.push({name:n,kind:"library"})}}function As(t){for(let e of t.values())if(e.category==="test")for(let r of e.imports){if(r.isExternal||!r.toPath)continue;let n=t.get(r.toPath);n&&(n.category!=="logic"&&n.category!=="barrel"||(n.testedBy??=[],n.testedBy.includes(e.path)||n.testedBy.push(e.path)))}}function Rs(t){for(let e of t.values())if(e.type==="markdown")for(let r of e.imports){if(r.isExternal||!r.toPath)continue;let n=t.get(r.toPath);!n||n===e||(n.documentedBy??=[],n.documentedBy.includes(e.path)||n.documentedBy.push(e.path),n.category==="logic"&&(n.lastCommitAt??0)>(e.lastCommitAt??0)&&(e.staleFor??=[],e.staleFor.includes(n.path)||e.staleFor.push(n.path)))}}function Is(t){return Math.round(t*1e4)/1e4}function Ls(t){for(let e of t.values()){let r=[];for(let n of e.imports){if(n.isExternal||!n.toPath)continue;let o=t.get(n.toPath);if(!o||o.exports.length===0)continue;let s;if(n.symbols===void 0){if(n.type==="side-effect")continue;s=1}else n.symbols.includes("*")?s=1:s=n.symbols.length/o.exports.length;n.exportUsageRatio=Is(Math.min(1,s)),r.push(n.exportUsageRatio)}r.length>0&&(e.avgExportUsage=Is(r.reduce((n,o)=>n+o,0)/r.length),e.maxExportUsage=Math.max(...r))}}function jr(t,e,r){e&&(t.some(n=>n.name===e&&n.kind===r)||t.push({name:e,kind:r}))}function qp(t,e){let r=e.toPath,n=Ps.basename(r,Ps.extname(r)).replace(/\.(test|spec)$/,"");jr(t.tags,n,"import")}function Zp(t,e){if(!(!e.symbols||e.symbols.includes("*")))for(let r of e.symbols)jr(t.tags,r,"import")}function ef(t,e,r){let n=r.get(e.toPath);if(!(!n||n.category==="test"))for(let o of n.tags)o.kind==="comment-marker"&&jr(t.tags,o.name,"comment-marker")}function Os(t){for(let e of t.values())if(e.category==="test")for(let r of e.imports)!r.toPath||r.isExternal||(qp(e,r),Zp(e,r),ef(e,r,t))}var Gs=u(()=>{"use strict";l()});import Ws from"fs";import le from"path";function tf(t,e){let r=t.split(`
27
+ `),n=null,o=new Map,s=!1;for(let i of r){let a=i.trim();if(a.startsWith("module ")){n=a.slice(7).trim();continue}if(/^replace\s*\(/.test(a)){s=!0;continue}if(s&&a===")"){s=!1;continue}if(s&&a.includes("=>")){js(a,e,o);continue}!s&&/^replace\s+/.test(a)&&a.includes("=>")&&js(a.replace(/^replace\s+/,""),e,o)}return{mod:n,replaces:o}}function js(t,e,r){let[n,o]=t.split("=>").map(a=>a.trim());if(!n||!o)return;let s=n.split(/\s+/)[0];if(!o.startsWith(".")&&!o.startsWith("/"))return;let i=le.isAbsolute(o)?o:le.resolve(e,o);r.set(s,i)}function _s(t){let e;try{e=Ws.readdirSync(t,{withFileTypes:!0})}catch{return null}let r=e.filter(n=>n.isFile()&&n.name.endsWith(".go")&&!n.name.endsWith("_test.go")).map(n=>({path:le.join(t,n.name),isExternal:!1})).sort((n,o)=>n.path.localeCompare(o.path));return r.length>0?r:null}var we,zs=u(()=>{"use strict";l();we=class{extensions=[".go"];goModCache=new Map;resolve(e,r,n,o){let{mod:s,replaces:i}=this.readGoMod(n);if(!s)return null;let a=this.applyReplace(r,i,n);if(a!==void 0)return _s(a);if(r!==s&&!r.startsWith(`${s}/`))return null;let c=r.slice(s.length).replace(/^\//,"");return c?_s(le.join(n,c)):null}readGoMod(e){let r=this.goModCache.get(e);if(r!==void 0)return r;let n={mod:null,replaces:new Map};try{let o=Ws.readFileSync(le.join(e,"go.mod"),"utf-8"),s=tf(o,e);return this.goModCache.set(e,s),s}catch{return this.goModCache.set(e,n),n}}applyReplace(e,r,n){for(let[o,s]of r){if(e===o)return s;if(e.startsWith(`${o}/`)){let i=e.slice(o.length+1);return le.join(s,i)}}}}});import rf from"fs";import _r from"path";var Ee,$s=u(()=>{"use strict";l();Ee=class{extensions=[".lua"];resolve(e,r,n,o){let s=r.replace(/\./g,_r.sep),i=[n,_r.join(n,"lib")];for(let a of i){if(!rf.existsSync(a))continue;let c=o(_r.join(a,"_dummy.lua"),s);if(c)return[c]}return null}}});import nf from"path";var Ne,Us=u(()=>{"use strict";l();Ne=class{extensions=[".md",".mdx"];resolve(e,r,n,o){let s=o(nf.join(n,"_dummy"),`./${r}`);return s?[s]:null}}});import of from"fs";import Wr from"path";function Bs(t){try{return of.statSync(t,{throwIfNoEntry:!1})?.isFile()===!0}catch{return!1}}var Fe,Js=u(()=>{"use strict";l();Fe=class{extensions=[".py"];resolve(e,r,n,o){let s=r.replace(/\./g,Wr.sep),i=Wr.join(n,`${s}.py`);if(Bs(i))return[{path:i,isExternal:!1}];let a=Wr.join(n,s,"__init__.py");return Bs(a)?[{path:a,isExternal:!1}]:null}}});import Ks from"path";var sf,Te,Hs=u(()=>{"use strict";l();sf=["~","http://","https://","//","data:","sass:"],Te=class{extensions=[".css",".scss",".sass",".less",".styl"];resolve(e,r,n,o){if(sf.some(f=>r.startsWith(f)))return null;let s=o(e,r);if(s)return[s];let i=Ks.dirname(r),a=Ks.basename(r),c=i==="."?`_${a}`:`${i}/_${a}`,p=o(e,c);return p?[p]:null}}});var Vs=u(()=>{"use strict";l();zs();$s();Us();Js();Hs()});import mt from"fs";import U from"path";var q,zr=u(()=>{"use strict";l();Vs();q=class{constructor(e,r={}){this.rootDir=e;this.workspaceMap=r.workspaceMap??new Map,this.tsconfigSearchPaths=r.tsconfigSearchPaths??[e],this.pathAliases=r.pathAliases,this.langResolvers=r.langResolvers??[new Fe,new Ee,new we,new Te,new Ne]}rootDir;workspaceMap;tsconfigSearchPaths;pathAliases;langResolvers;resolveAll(e,r){let n=this.resolvePathAlias(r);if(n)return[n];if(r.startsWith(".")||r.startsWith("/")){let i=this.resolveLocalPath(e,r);return i?[i]:[]}let o=(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,r,this.rootDir,o);if(a)return a}let s=this.resolveWorkspaceImport(r);return s?[s]:[{path:r,isExternal:!0}]}resolve(e,r){let n=this.resolvePathAlias(r);if(n)return n;if(r.startsWith(".")||r.startsWith("/"))return this.resolveLocalPath(e,r);let o=(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,r,this.rootDir,o);if(a)return a[0]??null}let s=this.resolveWorkspaceImport(r);return s||{path:r,isExternal:!0}}resolveLocalPath(e,r){let n=U.dirname(e),o=r.startsWith("/")?r:U.resolve(n,r),s=!o.startsWith(this.rootDir),i=["",".ts",".tsx",".js",".jsx",".mjs",".cjs",".css",".scss",".sass",".less",".styl",".coffee",".ls",".lua",".py",".feature",".md",".mdx"],a=o.match(/\.(js|mjs|cjs)$/);if(a){let c=o.slice(0,-a[0].length);for(let p of[".ts",".tsx"]){let f=this.tryExtensions(c,p,s);if(f)return f}}for(let c of i){let p=this.tryExtensions(o,c,s);if(p)return p}return s?{path:o,isExternal:!0}:null}tryExtensions(e,r,n){let o=e+r;if(this.isFile(o))return{path:o,isExternal:n};let s=U.join(e,`index${r}`);if(this.isFile(s))return{path:s,isExternal:n};if(r===".py"){let i=U.join(e,"__init__.py");if(this.isFile(i))return{path:i,isExternal:n}}return null}isFile(e){try{return mt.statSync(e,{throwIfNoEntry:!1})?.isFile()===!0}catch{return!1}}resolvePathAlias(e){if(this.pathAliases)for(let r in this.pathAliases){let n=this.matchAliasPattern(r,e),o=this.pathAliases[r];if(n&&o){let s=this.tryAliasSubstitutions(o,n[1]||"");if(s)return s}}for(let r of this.tsconfigSearchPaths){let n=U.join(r,"tsconfig.json");if(mt.existsSync(n))try{let s=JSON.parse(mt.readFileSync(n,"utf-8")).compilerOptions?.paths;if(!s)continue;for(let i in s){let a=this.matchAliasPattern(i,e);if(a){let c=this.tryAliasSubstitutions(s[i],a[1]||"",r);if(c)return c}}}catch{}}return null}aliasRegexCache=new Map;matchAliasPattern(e,r){let n=this.aliasRegexCache.get(e);if(!n){let o=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace("\\*","(.*)");n=new RegExp(`^${o}$`),this.aliasRegexCache.set(e,n)}return r.match(n)}tryAliasSubstitutions(e,r,n=this.rootDir){let o=["",".ts",".tsx",".js",".jsx",".coffee",".ls",".lua",".feature"];for(let s of e){let i=s.replace("*",r),a=U.resolve(n,i);for(let c of o){let p=this.tryExtensions(a,c,!1);if(p)return p}}return null}resolveWorkspaceImport(e){if(this.workspaceMap.size===0)return null;for(let[r,n]of this.workspaceMap){if(e!==r&&!e.startsWith(`${r}/`))continue;let o=e.slice(r.length),s={path:"",isExternal:!1,isWorkspace:!0,workspacePackage:r};if(!o){for(let a of["src/index.ts","src/index.tsx","index.ts","index.tsx","index.js"]){let c=U.join(n,a);try{if(mt.statSync(c,{throwIfNoEntry:!1})?.isFile())return{...s,path:c}}catch{}}return{...s,path:n}}let i=this.resolveLocalPath(U.join(n,"_dummy"),o.slice(1));return i?{...s,path:i.path}:null}return null}}});import Pe from"fs";import P from"path";import af from"piscina";function pf(t,e){if(t.length===0)return e;let r=t.map(i=>P.dirname(i).split(P.sep)),n=r[0]??[];for(let i of r.slice(1)){let a=0;for(;a<n.length&&a<i.length&&n[a]===i[a];)a++;n=n.slice(0,a)}let o=n.join(P.sep)||P.sep,s=P.relative(e,o);return s.startsWith("..")||P.isAbsolute(s)?e:o}var cf,Qs,lf,Ie,Xs=u(()=>{"use strict";l();Fr();te();Gt();Ts();Gs();ge();zr();cf=["tests","test","__tests__","specs","spec"],Qs=new Set(["node_modules",".git","dist","build",".next",".cache","mokosh-cache","coverage"]),lf=20;Ie=class{constructor(e,r=null,n,o,s=!1,i=new Map,a=!0){this.rootDir=e;this.enableGitStats=s;this.coverageMap=i;this.parallelParsing=a;this.previousGraph=r,this.resolver=n||new q(e),this.lockFile=Tn(e),o&&(this.progressCallback=o)}rootDir;enableGitStats;coverageMap;parallelParsing;graph={nodes:new Map};visited=new Set;queue=[];previousGraph=null;resolver;lockFile=null;progressCallback;pool=null;gitStatsMap=null;async build(e){let r=e.map(n=>P.isAbsolute(n)?n:P.resolve(this.rootDir,n));await this.initPool(),this.enableGitStats&&(this.gitStatsMap=Lo(this.rootDir));try{for(let n of r)this.enqueue(n);return await this.drain(),await this.processTestFiles(pf(r,this.rootDir)),await this.processDocFiles(),this.progressCallback&&this.visited.size>=100&&process.stderr.write(`
25
28
  Done. Total processed: ${this.visited.size} nodes.
26
- `),ko(this.graph.nodes),bo(this.graph.nodes),vo(this.graph.nodes),Co(this.graph.nodes),this.coverageMap.size>0&&xo(this.graph.nodes,this.coverageMap),new I(this.graph.nodes)}finally{this.pool&&(await this.pool.destroy(),this.pool=null)}}async initPool(){if(this.parallelParsing===!1)return;let e=typeof this.parallelParsing=="object"?this.parallelParsing:{},r=e.minFiles??Wp;if(!(r>0&&!this.hasAtLeastFiles(this.rootDir,r)))try{let n=T.join(f,"parse-worker.js");this.pool=new jp({filename:n,...e.maxThreads!==void 0?{maxThreads:e.maxThreads}:{}})}catch(n){process.stderr.write(`
29
+ `),Os(this.graph.nodes),As(this.graph.nodes),Ls(this.graph.nodes),Rs(this.graph.nodes),this.coverageMap.size>0&&Ds(this.graph.nodes,this.coverageMap),new D(this.graph.nodes)}finally{this.pool&&(await this.pool.destroy(),this.pool=null)}}async initPool(){if(this.parallelParsing===!1)return;let e=typeof this.parallelParsing=="object"?this.parallelParsing:{},r=e.minFiles??lf;if(!(r>0&&!this.hasAtLeastFiles(this.rootDir,r)))try{let n=P.join(m,"parse-worker.js");this.pool=new af({filename:n,...e.maxThreads!==void 0?{maxThreads:e.maxThreads}:{}})}catch(n){process.stderr.write(`
27
30
  Warning: failed to start parse worker pool, falling back to synchronous parsing: ${n}
28
- `),this.pool=null}}hasAtLeastFiles(e,r){let n=0,s=[e];for(;s.length>0;){let o=s.pop(),i;try{i=Pe.readdirSync(o,{withFileTypes:!0})}catch{continue}for(let a of i)if(a.isDirectory())Oo.has(a.name)||s.push(T.join(o,a.name));else if(a.isFile()&&(n++,n>=r))return!0}return n>=r}async processTestFiles(e){let r=fe(),n=o=>r.some(i=>o.name.includes(i));this.walkProject(e,n);let s=e;for(;s!==this.rootDir;){let o=T.dirname(s);if(o===s)break;for(let i of _p){let a=T.join(o,i);try{Pe.statSync(a).isDirectory()&&this.walkProject(a,n)}catch{}}s=o}await this.drain()}async processDocFiles(){this.walkProject(this.rootDir,e=>e.name.endsWith(".md")||e.name.endsWith(".mdx")),await this.drain()}walkProject(e,r){let n;try{n=Pe.readdirSync(e,{withFileTypes:!0})}catch{return}for(let s of n){let o=T.join(e,s.name);s.isDirectory()?Oo.has(s.name)||this.walkProject(o,r):s.isFile()&&r(s)&&this.enqueue(o)}}enqueue(e){this.visited.has(e)||(this.visited.add(e),this.showProgress(),this.queue.push(e))}async drain(){for(;this.queue.length>0;){let e=this.queue;this.queue=[],await Promise.all(e.map(r=>this.finishFile(r)))}}async finishFile(e){let r=Pe.statSync(e,{throwIfNoEntry:!1});if(!r?.isFile())return;let n=T.relative(this.rootDir,e),s=await this.getNode(e,n,r);s.imports=await this.resolveImports(e,s.imports),So(s.imports,s.tags),this.graph.nodes.set(s.path,s)}async getNode(e,r,n){let s=this.previousGraph?.nodes.get(r);if(s&&s.mtime===n.mtimeMs&&s.size===n.size)return{...s};let o=await this.tryParse(e,r);if(!o)return this.makeStubNode(e,r,n);let i=this.resolveCallEdges(e,o.rawCallEdges),a=this.buildNode(e,r,n,o,i);return this.attachGitStats(a,r),a}async tryParse(e,r){let n=Pe.readFileSync(e,"utf-8");try{return await this.parseContent(e,n)}catch(s){return process.stderr.write(`
29
- Warning: failed to parse ${r}: ${s}
30
- `),null}}parseContent(e,r){return this.pool?this.pool.run({filePath:e,content:r}):uo(e,r)}makeStubNode(e,r,n){return{path:r,type:j(e),category:"other",imports:[],exports:[],tags:[],mtime:n.mtimeMs,size:n.size}}resolveCallEdges(e,r){let n=[];for(let s of r??[])try{let o=this.resolver.resolve(e,s.toSpecifier);o&&!o.isExternal&&n.push({from:s.from,to:s.to,toFile:T.relative(this.rootDir,o.path)})}catch{}return n}buildNode(e,r,n,s,o){let{imports:i,exports:a,tags:c,category:p,description:g,complexity:h,cognitiveComplexity:y,functions:x}=s;return{path:r,type:j(e),category:p,imports:i,exports:a,tags:c,mtime:n.mtimeMs,size:n.size,...g!==void 0?{description:g}:{},...o.length>0?{callEdges:o}:{},...h!==void 0?{complexity:h}:{},...y!==void 0?{cognitiveComplexity:y}:{},...x!==void 0?{functions:x}:{}}}attachGitStats(e,r){let n=this.gitStatsMap?.get(r);n&&(e.commitCount90d=n.commitCount90d,n.lastAuthor!==void 0&&(e.lastAuthor=n.lastAuthor),n.lastCommitAt!==void 0&&(e.lastCommitAt=n.lastCommitAt))}async resolveImports(e,r){let n=[];for(let s of r){let o=this.resolver.resolveAll(e,s.rawSpecifier);if(o.length!==0)for(let i of o){let a={...s,toPath:i.isExternal?i.path:T.relative(this.rootDir,i.path),isExternal:i.isExternal};i.isWorkspace&&(a.isWorkspace=!0,a.workspacePackage=i.workspacePackage),i.isExternal?this.attachLockfileVersion(a):this.enqueue(i.path),n.push(a)}}return n}attachLockfileVersion(e){if(!this.lockFile)return;let r=e.rawSpecifier.startsWith("@")?e.rawSpecifier.split("/").slice(0,2).join("/"):e.rawSpecifier.split("/")[0],n=r?this.lockFile.dependencies[r]:void 0;n&&(e.version=n.version)}showProgress(){this.progressCallback&&this.visited.size%100===0&&this.progressCallback(this.visited.size)}}});var jo=m(()=>{"use strict";l();Dt();Go();Rt();Gt();ze();$e();ge();Mr();Qt();Be();Zt();sr();or()});var Dr=m(()=>{"use strict";l();jo()});function _o(t,e){return{identifier:e?.identifier??new ot,featureMap:e?.featureDetection===!1?new Map:$(t.nodes,e?.featureDetection??void 0)}}function Wo(t,e,r,n,s){for(let o of e){let i=t.nodes.get(o);if(!i)continue;let a=new U(o,["*",...i.exports.map(c=>c.name)]);t.traverse(o,(c,p,g)=>{if(!g)return!0;if(!a.updateAffectedSymbols(c,g))return!1;if(p>0){let h=r.get(c.path);if(h)return n(h),!1}return s(c),!0},{direction:"incoming"})}}function Ar(t,e,r){let{identifier:n,featureMap:s}=_o(t,r),o=new Set;for(let i of e){let a=s.get(i);a&&o.add(a.tag)}return Wo(t,e,s,i=>o.add(i.tag),i=>{if(n.isTestNode(i))for(let a of i.tags)o.add(a.name)}),Array.from(o)}function Rr(t,e,r){let{identifier:n,featureMap:s}=_o(t,r),o=new Set;return Wo(t,e,s,()=>{},i=>{n.isTestNode(i)&&o.add(i.path)}),Array.from(o)}var zo=m(()=>{"use strict";l();Dr();dr()});var $o=m(()=>{"use strict";l();us();dr();zo()});import $p from"fs";import Me from"path";async function A(t,e,r=null,n={}){let s=n.silent?void 0:a=>{process.stderr.write(`Processed ${a} files...\r`)},o=Me.resolve(t);return await new Ie(o,r,n.pathAliases?new V(o,{pathAliases:n.pathAliases}):void 0,s,n.gitStats??!1,n.coverageMap??new Map,n.parallelParsing??!0).build(e)}async function Uo(t,e={}){let r=Me.resolve(t),n=nr(r),s=e.packages?n.packages.filter(a=>e.packages?.includes(a.name)||e.packages?.includes(a.relativeRoot)):n.packages,o=new Map(n.packages.map(a=>[a.name,a.root])),i=new xe(r,n.type);for(let a of s){let c=e.silent?void 0:h=>{process.stderr.write(`[${a.name}] Processed ${h} files...\r`)},g=await new Ie(r,null,new V(r,{workspaceMap:o,tsconfigSearchPaths:[a.root,r],pathAliases:e.pathAliases}),c,e.gitStats??!1,new Map,e.parallelParsing??!0).build(a.entryPoints);i.addPackage(a,g)}return i}function R(t,e={}){let r=[],n=new Set([...e.ignoreDirs??Nt,...e.additionalIgnoreDirs??[]]),s=new Set([...e.extensions??Ft,...e.additionalExtensions??[]]);function o(i){try{let a=$p.readdirSync(i,{withFileTypes:!0});for(let c of a){let p=Me.join(i,c.name);c.isDirectory()?n.has(c.name)||o(p):c.isFile()&&s.has(Me.extname(c.name).toLowerCase())&&r.push(Me.relative(t,p))}}catch{}}return o(t),r}var v=m(()=>{"use strict";l();wt();Tt();cn();pn();Dt();Rt();Gt();ze();$e();_t();ge();Ht();Qt();Sn();Be();Zt();sr();Ve();or();q();Se();Jn();$o();Tt();Dr()});var ut,gt,Lr=m(()=>{"use strict";l();ut="mokosh-cache",gt="graph.json"});import Ae from"path";import{parseArgs as Up}from"util";function Bp(t){for(let e=0;e<t.length;e++)if(t[e]==="--root"&&t[e+1])return Ae.resolve(t[e+1]);return process.cwd()}function De(t){return t?parseInt(t,10):void 0}function Bo(t){return t?t.split(",").map(e=>e.trim()):void 0}function Kp(t){let e=[];for(let r=0;r<t.length;r++){let n=t[r];if(!n.startsWith("--"))e.push(n);else if(Jp.has(n)){let s=t[r+1];s!==void 0&&!s.startsWith("--")&&(e.push(n,s),r++)}else n.slice(2)in Or&&e.push(n)}return e}function Jo(t){let e=Bp(t),r=Ae.join(Ae.resolve(e,ut),gt),{values:n,positionals:s}=Up({args:Kp(t),allowPositionals:!0,options:Or}),o=n.cache,i=n.config,a=n.metric;return{rootDir:e,cachePath:o?Ae.resolve(e,o):r,configPath:i?Ae.resolve(e,i):void 0,query:n.query,file:n.file,typeFilter:n.type,functionName:n.function,filterPaths:Bo(n.paths),featureThreshold:De(n["feature-threshold"]),minOutDegree:De(n["min-out-degree"]),mermaid:n.mermaid??!1,proposeTags:n["propose-tags"]??!1,plain:n.plain??!1,affectedTests:n["affected-tests"]??!1,detectFeatures:n["detect-features"]??!1,findUnused:n["find-unused"]??!1,excludeTests:n["exclude-tests"]??!1,checkCycles:n["check-cycles"]??!1,checkDocDrift:n["check-doc-drift"]??!1,findUncovered:n["find-uncovered"]??!1,callers:n.callers??!1,silent:n.silent??!1,queryHelp:n["query-help"]??!1,help:t.length===0||(n.help??!1),typeGraph:n["type-graph"]??!1,moduleResponsibility:n["module-responsibility"]??!1,featureGraph:n["feature-graph"]??!1,callGraph:n["call-graph"]??!1,findSymbol:n["find-symbol"]??!1,apiSurface:n["api-surface"]??!1,applyTags:n["apply-tags"]??!1,dryRun:n["dry-run"]??!1,initSkill:n["init-skill"]??!1,initConfig:n["init-config"]??!1,force:n.force??!1,dependencies:n.dependencies??!1,dependents:n.dependents??!1,affected:n.affected??!1,testsOnly:n["tests-only"]??!1,changedSymbols:Bo(n["changed-symbols"]),cached:n.cached??!1,depth:De(n.depth),withMeta:n["with-meta"]??!1,withEdgeDetail:n["with-edge-detail"]??!1,findComplexFunctions:n["find-complex-functions"]??!1,metric:a==="complexity"||a==="cognitiveComplexity"?a:void 0,complexityThreshold:De(n["complexity-threshold"]),limit:De(n.limit),workspacePackages:n["workspace-packages"]??!1,workspaceAffected:n["workspace-affected"]??!1,clearCache:n["clear-cache"]??!1,slim:n.slim??!1,watch:n.watch??!1,entryPoints:s}}var Or,Jp,Ko=m(()=>{"use strict";l();Lr();Or={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"},"check-doc-drift":{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"},"find-symbol":{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-meta":{type:"boolean"},"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"}},Jp=new Set(Object.entries(Or).filter(([,t])=>t.type==="string").map(([t])=>`--${t}`))});async function Gr(t){let{graph:e,file:r,testsOnly:n,changedSymbols:s,cached:o,withMeta:i}=t;r||(console.error("Error: --affected requires --file <path>"),process.exit(1));let a=g=>i?g.map(h=>({path:h,...B(e,h)})):g;if(o){let g=Lt(e),h=Ot(g,r),y=n?h.filter(E=>e.nodes.get(E)?.category==="test"):h,x=a(y);console.log(JSON.stringify({file:r,affected:x,count:x.length},null,2));return}let c=zt(e,r,{testsOnly:n,changedSymbols:s}),p=a(c);console.log(JSON.stringify({file:r,affected:p,count:p.length},null,2))}var Ho=m(()=>{"use strict";l();v()});import jr from"path";function Q(t){return t.filter(e=>{let r=jr.basename(e).toLowerCase();return Hp.some(n=>r.includes(n))})}function dt(t){return new it().getChangedFiles().map(e=>jr.relative(t,jr.resolve(t,e)))}var Hp,ht=m(()=>{"use strict";l();yr();Hp=[".test.",".spec.","-test.","-spec."]});async function Vo(t){let{graph:e}=t,{rootDir:r,scanOptions:n,featureThreshold:s,rawConfig:o}=t,i=dt(r);if(![...e.nodes.values()].some(p=>Q([p.path]).length>0)){let p=R(r,n);e=await A(r,Q(p),e,w(o))}let c=Rr(e,i,{...s!==void 0&&{featureDetection:{minOutDegree:s}}});console.log(c.join(`
31
- `))}var Qo=m(()=>{"use strict";l();v();ht()});async function Xo(t){let{graph:e,rootDir:r,entryPoints:n}=t,s=n.length?n:It(e,r);s.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=Mt(e,s);console.log(JSON.stringify(o,null,2))}var Yo=m(()=>{"use strict";l();v()});async function qo(t){let{graph:e}=t,{rootDir:r,scanOptions:n,dryRun:s,plain:o,rawConfig:i}=t;if(o||console.log(s?"Dry run: computing tag changes...":"Applying tags to test files..."),e.nodes.size===0){let c=R(r,n);e=await A(r,Q(c),e,w(i))}let a=await gr(e,r,{dryRun:s});console.log(JSON.stringify(a,null,2))}var Zo=m(()=>{"use strict";l();v();ht()});async function ei(t){let{graph:e,functionName:r}=t;r||(console.error("Error: --call-graph requires --function <name>"),process.exit(1));let n=At(e,r);console.log(JSON.stringify(n,null,2))}var ti=m(()=>{"use strict";l();v()});async function _r(t){let{graph:e,file:r,plain:n,depth:s,withEdgeDetail:o}=t;r||(console.error("Error: --callers requires --file <path>"),process.exit(1));let i=$t(e,r,{depth:s??1,withEdgeDetail:o});console.log(n?i.map(a=>a.file).join(`
32
- `):JSON.stringify({file:r,callers:i,count:i.length},null,2))}var ri=m(()=>{"use strict";l();v()});async function Wr(t){let{graph:e}=t,r=e.findCycles();if(r.length>0){process.stderr.write(`Found ${r.length} cycle(s):
31
+ `),this.pool=null}}hasAtLeastFiles(e,r){let n=0,o=[e];for(;o.length>0;){let s=o.pop();if(s===void 0)continue;let i;try{i=Pe.readdirSync(s,{withFileTypes:!0})}catch{continue}for(let a of i)if(a.isDirectory())Qs.has(a.name)||o.push(P.join(s,a.name));else if(a.isFile()&&(n++,n>=r))return!0}return n>=r}async processTestFiles(e){let r=fe(),n=s=>r.some(i=>s.name.includes(i));this.walkProject(e,n);let o=e;for(;o!==this.rootDir;){let s=P.dirname(o);if(s===o)break;for(let i of cf){let a=P.join(s,i);try{Pe.statSync(a).isDirectory()&&this.walkProject(a,n)}catch{}}o=s}await this.drain()}async processDocFiles(){this.walkProject(this.rootDir,e=>e.name.endsWith(".md")||e.name.endsWith(".mdx")),await this.drain()}walkProject(e,r){let n;try{n=Pe.readdirSync(e,{withFileTypes:!0})}catch{return}for(let o of n){let s=P.join(e,o.name);o.isDirectory()?Qs.has(o.name)||this.walkProject(s,r):o.isFile()&&r(o)&&this.enqueue(s)}}enqueue(e){this.visited.has(e)||(this.visited.add(e),this.showProgress(),this.queue.push(e))}async drain(){for(;this.queue.length>0;){let e=this.queue;this.queue=[],await Promise.all(e.map(r=>this.finishFile(r)))}}async finishFile(e){let r=Pe.statSync(e,{throwIfNoEntry:!1});if(!r?.isFile())return;let n=P.relative(this.rootDir,e),o=await this.getNode(e,n,r);o.imports=await this.resolveImports(e,o.imports),Ms(o.imports,o.tags),this.graph.nodes.set(o.path,o)}async getNode(e,r,n){let o=this.previousGraph?.nodes.get(r);if(o&&o.mtime===n.mtimeMs&&o.size===n.size)return{...o};let s=await this.tryParse(e,r);if(!s)return this.makeStubNode(e,r,n);let i=this.resolveCallEdges(e,s.rawCallEdges),a=this.buildNode(e,r,n,s,i);return this.attachGitStats(a,r),a}async tryParse(e,r){let n=Pe.readFileSync(e,"utf-8");try{return await this.parseContent(e,n)}catch(o){return process.stderr.write(`
32
+ Warning: failed to parse ${r}: ${o}
33
+ `),null}}parseContent(e,r){return this.pool?this.pool.run({filePath:e,content:r}):Fs(e,r)}makeStubNode(e,r,n){return{path:r,type:W(e),category:"other",imports:[],exports:[],tags:[],mtime:n.mtimeMs,size:n.size}}resolveCallEdges(e,r){let n=[];for(let o of r??[])try{let s=this.resolver.resolve(e,o.toSpecifier);s&&!s.isExternal&&n.push({from:o.from,to:o.to,toFile:P.relative(this.rootDir,s.path)})}catch{}return n}buildNode(e,r,n,o,s){let{imports:i,exports:a,tags:c,category:p,description:f,complexity:d,cognitiveComplexity:y,functions:x}=o;return{path:r,type:W(e),category:p,imports:i,exports:a,tags:c,mtime:n.mtimeMs,size:n.size,...f!==void 0?{description:f}:{},...s.length>0?{callEdges:s}:{},...d!==void 0?{complexity:d}:{},...y!==void 0?{cognitiveComplexity:y}:{},...x!==void 0?{functions:x}:{}}}attachGitStats(e,r){let n=this.gitStatsMap?.get(r);n&&(e.commitCount90d=n.commitCount90d,n.lastAuthor!==void 0&&(e.lastAuthor=n.lastAuthor),n.lastCommitAt!==void 0&&(e.lastCommitAt=n.lastCommitAt))}async resolveImports(e,r){let n=[];for(let o of r){let s=this.resolver.resolveAll(e,o.rawSpecifier);if(s.length!==0)for(let i of s){let a={...o,toPath:i.isExternal?i.path:P.relative(this.rootDir,i.path),isExternal:i.isExternal};i.isWorkspace&&(a.isWorkspace=!0,a.workspacePackage=i.workspacePackage),i.isExternal?this.attachLockfileVersion(a):this.enqueue(i.path),n.push(a)}}return n}attachLockfileVersion(e){if(!this.lockFile)return;let r=e.rawSpecifier.startsWith("@")?e.rawSpecifier.split("/").slice(0,2).join("/"):e.rawSpecifier.split("/")[0],n=r?this.lockFile.dependencies[r]:void 0;n&&(e.version=n.version)}showProgress(){this.progressCallback&&this.visited.size%100===0&&this.progressCallback(this.visited.size)}}});var Ys=u(()=>{"use strict";l();It();Xs();Mt();Lt();zt();ze();$e();ge();zr();Zt();Be();nr();cr();lr()});var $r=u(()=>{"use strict";l();Ys()});function qs(t,e){return{identifier:e?.identifier??new it,featureMap:e?.featureDetection===!1?new Map:J(t.nodes,e?.featureDetection??void 0)}}function Zs(t,e,r,n,o){for(let s of e){let i=t.nodes.get(s);if(!i)continue;let a=new K(s,["*",...i.exports.map(c=>c.name)]);t.traverse(s,(c,p,f)=>{if(!f)return!0;if(!a.updateAffectedSymbols(c,f))return!1;if(p>0){let d=r.get(c.path);if(d)return n(d),!1}return o(c),!0},{direction:"incoming"})}}function Ur(t,e,r){let{identifier:n,featureMap:o}=qs(t,r),s=new Set;for(let i of e){let a=o.get(i);a&&s.add(a.tag)}return Zs(t,e,o,i=>s.add(i.tag),i=>{if(n.isTestNode(i))for(let a of i.tags)s.add(a.name)}),Array.from(s)}function Br(t,e,r){let{identifier:n,featureMap:o}=qs(t,r),s=new Set;return Zs(t,e,o,()=>{},i=>{n.isTestNode(i)&&s.add(i.path)}),Array.from(s)}var ei=u(()=>{"use strict";l();$r();Er()});var ti=u(()=>{"use strict";l();Do();Er();ei()});import ff from"fs";import De from"path";async function R(t,e,r=null,n={}){let o=n.silent?void 0:a=>{process.stderr.write(`Processed ${a} files...\r`)},s=De.resolve(t);return await new Ie(s,r,n.pathAliases?new q(s,{pathAliases:n.pathAliases}):void 0,o,n.gitStats??!1,n.coverageMap??new Map,n.parallelParsing??!0).build(e)}async function ri(t,e={}){let r=De.resolve(t),n=ar(r),o=e.packages?n.packages.filter(a=>e.packages?.includes(a.name)||e.packages?.includes(a.relativeRoot)):n.packages,s=new Map(n.packages.map(a=>[a.name,a.root])),i=new xe(r,n.type);for(let a of o){let c=e.silent?void 0:d=>{process.stderr.write(`[${a.name}] Processed ${d} files...\r`)},f=await new Ie(r,null,new q(r,{workspaceMap:s,tsconfigSearchPaths:[a.root,r],pathAliases:e.pathAliases}),c,e.gitStats??!1,new Map,e.parallelParsing??!0).build(a.entryPoints);i.addPackage(a,f)}return i}function L(t,e={}){let r=[],n=new Set([...e.ignoreDirs??B,...e.additionalIgnoreDirs??[]]),o=new Set([...e.extensions??Nt,...e.additionalExtensions??[]]);function s(i){try{let a=ff.readdirSync(i,{withFileTypes:!0});for(let c of a){let p=De.join(i,c.name);c.isDirectory()?n.has(c.name)||s(p):c.isFile()&&o.has(De.extname(c.name).toLowerCase())&&r.push(De.relative(t,p))}}catch{}}return s(t),r}var v=u(()=>{"use strict";l();Et();Ge();Sn();vn();It();Mt();Lt();zt();ze();$e();Ut();ge();Yt();Zt();Wn();Be();nr();cr();Ve();lr();te();be();mo();ti();Ge();$r()});var ut,gt,Jr=u(()=>{"use strict";l();ut="mokosh-cache",gt="graph.json"});import Me from"path";import{parseArgs as mf}from"util";function uf(t){for(let e=0;e<t.length;e++)if(t[e]==="--root"&&t[e+1])return Me.resolve(t[e+1]);return process.cwd()}function pe(t){return t?parseInt(t,10):void 0}function ni(t){return t?t.split(",").map(e=>e.trim()):void 0}function df(t){let e=[];for(let r=0;r<t.length;r++){let n=t[r];if(n!==void 0)if(!n.startsWith("--"))e.push(n);else if(gf.has(n)){let o=t[r+1];o!==void 0&&!o.startsWith("--")&&(e.push(n,o),r++)}else n.slice(2)in Kr&&e.push(n)}return e}function oi(t){let e=uf(t),r=Me.join(Me.resolve(e,ut),gt),{values:n,positionals:o}=mf({args:df(t),allowPositionals:!0,options:Kr}),s=n.cache,i=n.config,a=n.metric;return{rootDir:e,cachePath:s?Me.resolve(e,s):r,configPath:i?Me.resolve(e,i):void 0,query:n.query,file:n.file,typeFilter:n.type,functionName:n.function,filterPaths:ni(n.paths),featureThreshold:pe(n["feature-threshold"]),minOutDegree:pe(n["min-out-degree"]),mermaid:n.mermaid??!1,proposeTags:n["propose-tags"]??!1,plain:n.plain??!1,affectedTests:n["affected-tests"]??!1,detectFeatures:n["detect-features"]??!1,findUnused:n["find-unused"]??!1,excludeTests:n["exclude-tests"]??!1,checkCycles:n["check-cycles"]??!1,checkDocDrift:n["check-doc-drift"]??!1,findUncovered:n["find-uncovered"]??!1,listTags:n["list-tags"]??!1,callers:n.callers??!1,silent:n.silent??!1,queryHelp:n["query-help"]??!1,help:t.length===0||(n.help??!1),typeGraph:n["type-graph"]??!1,moduleResponsibility:n["module-responsibility"]??!1,featureGraph:n["feature-graph"]??!1,callGraph:n["call-graph"]??!1,findSymbol:n["find-symbol"]??!1,apiSurface:n["api-surface"]??!1,applyTags:n["apply-tags"]??!1,dryRun:n["dry-run"]??!1,initSkill:n["init-skill"]??!1,initConfig:n["init-config"]??!1,force:n.force??!1,dependencies:n.dependencies??!1,dependents:n.dependents??!1,affected:n.affected??!1,testsOnly:n["tests-only"]??!1,changedSymbols:ni(n["changed-symbols"]),cached:n.cached??!1,depth:pe(n.depth),withMeta:n["with-meta"]??!1,withEdgeDetail:n["with-edge-detail"]??!1,findComplexFunctions:n["find-complex-functions"]??!1,metric:a==="complexity"||a==="cognitiveComplexity"?a:void 0,complexityThreshold:pe(n["complexity-threshold"]),limit:pe(n.limit),findDuplicates:n["find-duplicates"]??!1,minDuplicateLines:pe(n["min-duplicate-lines"]),workspacePackages:n["workspace-packages"]??!1,workspaceAffected:n["workspace-affected"]??!1,clearCache:n["clear-cache"]??!1,slim:n.slim??!1,watch:n.watch??!1,entryPoints:o}}var Kr,gf,si=u(()=>{"use strict";l();Jr();Kr={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"},"check-doc-drift":{type:"boolean"},"find-uncovered":{type:"boolean"},"list-tags":{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"},"find-symbol":{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-meta":{type:"boolean"},"with-edge-detail":{type:"boolean"},"find-complex-functions":{type:"boolean"},metric:{type:"string"},"complexity-threshold":{type:"string"},limit:{type:"string"},"find-duplicates":{type:"boolean"},"min-duplicate-lines":{type:"string"},"workspace-packages":{type:"boolean"},"workspace-affected":{type:"boolean"},"clear-cache":{type:"boolean"},slim:{type:"boolean"},watch:{type:"boolean"}},gf=new Set(Object.entries(Kr).filter(([,t])=>t.type==="string").map(([t])=>`--${t}`))});async function Hr(t){let{graph:e,file:r,testsOnly:n,changedSymbols:o,cached:s,withMeta:i}=t;r||(console.error("Error: --affected requires --file <path>"),process.exit(1));let a=f=>i?f.map(d=>({path:d,...H(e,d)})):f;if(s){let f=At(e),d=Rt(f,r),y=n?d.filter(k=>e.nodes.get(k)?.category==="test"):d,x=a(y);console.log(JSON.stringify({file:r,affected:x,count:x.length},null,2));return}let c=Jt(e,r,{testsOnly:n,changedSymbols:o}),p=a(c);console.log(JSON.stringify({file:r,affected:p,count:p.length},null,2))}var ii=u(()=>{"use strict";l();v()});import Vr from"path";function Z(t){return t.filter(e=>{let r=Vr.basename(e).toLowerCase();return hf.some(n=>r.includes(n))})}function dt(t){return new at().getChangedFiles().map(e=>Vr.relative(t,Vr.resolve(t,e)))}var hf,ht=u(()=>{"use strict";l();Fr();hf=[".test.",".spec.","-test.","-spec."]});async function ai(t){let{graph:e}=t,{rootDir:r,scanOptions:n,featureThreshold:o,rawConfig:s}=t,i=dt(r);if(![...e.nodes.values()].some(p=>Z([p.path]).length>0)){let p=L(r,n);e=await R(r,Z(p),e,F(s))}let c=Br(e,i,{...o!==void 0&&{featureDetection:{minOutDegree:o}}});console.log(c.join(`
34
+ `))}var ci=u(()=>{"use strict";l();v();ht()});async function li(t){let{graph:e,rootDir:r,entryPoints:n}=t,o=n.length?n:Tt(e,r);o.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 s=Pt(e,o);console.log(JSON.stringify(s,null,2))}var pi=u(()=>{"use strict";l();v()});async function fi(t){let{graph:e}=t,{rootDir:r,scanOptions:n,dryRun:o,plain:s,rawConfig:i}=t;if(s||console.log(o?"Dry run: computing tag changes...":"Applying tags to test files..."),e.nodes.size===0){let c=L(r,n);e=await R(r,Z(c),e,F(i))}let a=await wr(e,r,{dryRun:o});console.log(JSON.stringify(a,null,2))}var mi=u(()=>{"use strict";l();v();ht()});async function ui(t){let{graph:e,functionName:r}=t;r||(console.error("Error: --call-graph requires --function <name>"),process.exit(1));let n=Dt(e,r);console.log(JSON.stringify(n,null,2))}var gi=u(()=>{"use strict";l();v()});async function Qr(t){let{graph:e,file:r,plain:n,depth:o,withEdgeDetail:s}=t;r||(console.error("Error: --callers requires --file <path>"),process.exit(1));let i=Kt(e,r,{depth:o??1,withEdgeDetail:s});console.log(n?i.map(a=>a.file).join(`
35
+ `):JSON.stringify({file:r,callers:i,count:i.length},null,2))}var di=u(()=>{"use strict";l();v()});async function Xr(t){let{graph:e}=t,r=e.findCycles();if(r.length>0){process.stderr.write(`Found ${r.length} cycle(s):
33
36
  `);for(let n of r)process.stderr.write(` ${n.join(" \u2192 ")}
34
- `);process.exit(1)}console.log("No cycles detected.")}var ni=m(()=>{"use strict";l()});async function zr(t){let{graph:e}=t,r=[...e.nodes.values()].filter(n=>n.type==="markdown"&&n.staleFor&&n.staleFor.length>0).map(n=>({doc:n.path,staleFor:n.staleFor}));if(r.length>0){process.stderr.write(`Found ${r.length} doc(s) that may be out of date:
35
- `);for(let{doc:n,staleFor:s}of r)process.stderr.write(` ${n} \u2014 references changed more recently: ${s.join(", ")}
36
- `);process.exit(1)}console.log("No doc drift detected.")}var si=m(()=>{"use strict";l()});import oi from"fs";function ii(t){oi.existsSync(t)?(oi.unlinkSync(t),console.log(`Cache cleared: ${t}`)):console.log(`No cache file present at ${t}`)}var ai=m(()=>{"use strict";l()});async function $r(t){let{graph:e,file:r,depth:n,withMeta:s}=t;r||(console.error("Error: --dependencies requires --file <path>"),process.exit(1));let o=Wt(e,r,n??1),i=s?o.map(a=>({...a,...B(e,a.path)})):o;console.log(JSON.stringify({file:r,dependencies:i},null,2))}var ci=m(()=>{"use strict";l();v()});async function Ur(t){let{graph:e,file:r,withMeta:n}=t;r||(console.error("Error: --dependents requires --file <path>"),process.exit(1));let s=de(e,r),o=n?s.map(i=>({...i,...B(e,i.path)})):s;console.log(JSON.stringify({file:r,dependents:o},null,2))}var li=m(()=>{"use strict";l();v()});async function pi(t){let{graph:e}=t,{rootDir:r,scanOptions:n,featureThreshold:s,rawConfig:o}=t;if(e.nodes.size===0){let c=R(r,n);e=await A(r,c,e,w(o))}let i=$(e.nodes,s!==void 0?{minOutDegree:s}:void 0),a=Array.from(i.values()).sort((c,p)=>p.outDegree-c.outDegree);console.log(JSON.stringify({features:a},null,2))}var fi=m(()=>{"use strict";l();v()});async function mi(t){let{graph:e}=t,{rootDir:r,scanOptions:n,minOutDegree:s,rawConfig:o}=t;if(e.nodes.size===0){let c=R(r,n);e=await A(r,c,e,w(o))}let i=me(e,s!==void 0?{minOutDegree:s}:void 0),a=Object.fromEntries(i.features);console.log(JSON.stringify({features:a,unassigned:i.unassigned},null,2))}var ui=m(()=>{"use strict";l();v()});async function Br(t){let{graph:e,metric:r,complexityThreshold:n,limit:s}=t,o=n??10,i=Ut(e,{metric:r,threshold:o,limit:s});console.log(JSON.stringify({metric:r??"cognitiveComplexity",threshold:o,functions:i,count:i.length},null,2))}var gi=m(()=>{"use strict";l();v()});async function di(t){let{graph:e,functionName:r,plain:n}=t;r||(console.error("Error: --find-symbol requires --function <name>"),process.exit(1));let s=Xt(e,r);console.log(n?s.map(o=>o.path).join(`
37
- `):JSON.stringify({name:r,matches:s,count:s.length},null,2))}var hi=m(()=>{"use strict";l();v()});async function Jr(t){let{graph:e,featureThreshold:r,rawConfig:n,plain:s}=t,o=r??n.coverageThreshold??80;if(!Kt(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(s?i.map(a=>a.file).join(`
38
- `):JSON.stringify({threshold:o,uncovered:i,count:i.length},null,2))}var yi=m(()=>{"use strict";l();v()});import Vp from"path";function Xp(t){let e=Vp.basename(t).toLowerCase();return Qp.some(r=>e.includes(r))}async function xi(t){let{graph:e,rootDir:r,scanOptions:n,excludeTests:s}=t,o=R(r,n),i=e.findUnusedFiles(o);s&&(i=i.filter(a=>!Xp(a))),console.log(JSON.stringify({unusedFiles:i},null,2))}var Qp,Si=m(()=>{"use strict";l();v();Qp=[".test.",".spec.","-test.","-spec.",".stories."]});async function Kr(t){let{graph:e,queryStr:r,mermaidOutput:n,slim:s}=t,o=e.serialize();if(r){let c=Xe(r);o=Qe(o,c)}if(n){let c=I.deserialize(o);console.log(_e.serialize(c));return}let i=e.findCycles();i.length>0&&(o.cycles=i);let a=jt(e);console.log(JSON.stringify(s?{...Bt(o),languageCoverage:a}:{...o,languageCoverage:a},null,2))}var bi=m(()=>{"use strict";l();v()});import Yp from"fs";import Hr from"path";function yt(t,e,r){let n=t;for(let s=0;s<6;s++){let o=Hr.join(n,"templates",...e);if(Yp.existsSync(Hr.join(o,r)))return o;let i=Hr.dirname(n);if(i===n)break;n=i}throw new Error(`Could not locate mokosh templates/${e.join("/")}`)}var Vr=m(()=>{"use strict";l()});import Ci from"fs";import vi from"path";function ki(t,e=process.cwd()){let r=yt(f,["config"],"mokosh.config.js"),n=vi.join(r,"mokosh.config.js"),s=vi.join(e,"mokosh.config.js");if(Ci.existsSync(s)&&!t){console.log("skipped mokosh.config.js (already exists, use --force to overwrite)");return}Ci.copyFileSync(n,s),console.log("wrote mokosh.config.js")}var Ei=m(()=>{"use strict";l();Vr()});import Qr from"fs";import xt from"path";function wi(t,e=process.cwd()){let r=yt(f,["skill"],"SKILL.md");for(let n of qp){let s=xt.join(r,n.templateFile),o=xt.join(e,...n.destPath),i=xt.join(...n.destPath);if(Qr.existsSync(o)&&!t){console.log(`skipped ${i} (already exists, use --force to overwrite)`);continue}Qr.mkdirSync(xt.dirname(o),{recursive:!0}),Qr.copyFileSync(s,o),console.log(`wrote ${i}`)}}var qp,Ni=m(()=>{"use strict";l();Vr();qp=[{templateFile:"SKILL.md",destPath:[".claude","skills","mokosh","SKILL.md"]},{templateFile:"mokosh.md",destPath:[".claude","commands","mokosh.md"]}]});async function Fi(t){let{graph:e,filterPaths:r,minOutDegree:n}=t,s=Vt(e,n!==void 0?{minOutDegree:n}:void 0);if(r?.length){let o=r.map(i=>s.get(i)).filter(Boolean);console.log(JSON.stringify({count:o.length,modules:o},null,2))}else{let o=Array.from(s.values());console.log(JSON.stringify({count:o.length,modules:o},null,2))}}var Ti=m(()=>{"use strict";l();v()});async function Pi(t){let{graph:e}=t,{rootDir:r,scanOptions:n,featureThreshold:s,plain:o,rawConfig:i}=t;o||console.log("Proposing test tags based on git diff...");let a=dt(r);if(e.nodes.size===0){let p=R(r,n);e=await A(r,Q(p),e,w(i))}let c=Ar(e,a,{...s!==void 0&&{featureDetection:{minOutDegree:s}}});console.log(o?c.join(" "):JSON.stringify({proposedTags:c},null,2))}var Ii=m(()=>{"use strict";l();v();ht()});async function Mi(t){let{graph:e,typeFilter:r}=t,n=Yt(e);if(r){let s=qt(n,r);console.log(JSON.stringify(s,null,2))}else{let s=Array.from(n.types.values());console.log(JSON.stringify({count:s.length,types:s},null,2))}}var Di=m(()=>{"use strict";l();v()});function Ai(t,e){let r=t.getAffectedAcrossPackages(e);console.log(JSON.stringify({file:e,affected:r,count:r.length},null,2))}var Ri=m(()=>{"use strict";l()});function Li(t){console.log(JSON.stringify(Jt(t),null,2))}var Oi=m(()=>{"use strict";l();v()});import Xr from"path";function Zp(t,e,r,n){return t!==e?t:r?Xr.resolve(n,r):e}function Gi(t){let{rootDir:e,entryPoints:r,cachePath:n,configPath:s}=t,o=s?Z(s,{isExplicitPath:!0}):Z(e),i=Xr.join(Xr.resolve(e,ut),gt),a=r.length>0?r:o.entryPoints??[],c=Zp(n,i,o.cachePath,e),p={...o.ignoreDirs!==void 0&&{additionalIgnoreDirs:o.ignoreDirs},...o.extensions!==void 0&&{additionalExtensions:o.extensions}};return{rootDir:e,resolvedEntryPoints:a,resolvedCachePath:c,scanOptions:p,rawConfig:o}}var ji=m(()=>{"use strict";l();v();Lr()});import Re from"fs";import ef from"path";function _i(t){if(!Re.existsSync(t))return null;let e=Re.readFileSync(t,"utf-8");return I.deserialize(JSON.parse(e))}function Yr(t,e){let r=ef.dirname(e);Re.existsSync(r)||Re.mkdirSync(r,{recursive:!0}),Re.writeFileSync(e,JSON.stringify(t.serialize(),null,2))}async function qr(t,e,r,n={silent:!1,...w(void 0)}){return A(t,e,r,n)}var Wi=m(()=>{"use strict";l();v()});var zi,$i,Ui=m(()=>{"use strict";l();zi=`
37
+ `);process.exit(1)}console.log("No cycles detected.")}var hi=u(()=>{"use strict";l()});async function Yr(t){let{graph:e}=t,r=[...e.nodes.values()].filter(n=>n.type==="markdown"&&n.staleFor&&n.staleFor.length>0).map(n=>({doc:n.path,staleFor:n.staleFor}));if(r.length>0){process.stderr.write(`Found ${r.length} doc(s) that may be out of date:
38
+ `);for(let{doc:n,staleFor:o}of r)process.stderr.write(` ${n} \u2014 references changed more recently: ${o.join(", ")}
39
+ `);process.exit(1)}console.log("No doc drift detected.")}var yi=u(()=>{"use strict";l()});import xi from"fs";function bi(t){xi.existsSync(t)?(xi.unlinkSync(t),console.log(`Cache cleared: ${t}`)):console.log(`No cache file present at ${t}`)}var Si=u(()=>{"use strict";l()});async function qr(t){let{graph:e,file:r,depth:n,withMeta:o}=t;r||(console.error("Error: --dependencies requires --file <path>"),process.exit(1));let s=Bt(e,r,n??1),i=o?s.map(a=>({...a,...H(e,a.path)})):s;console.log(JSON.stringify({file:r,dependencies:i},null,2))}var Ci=u(()=>{"use strict";l();v()});async function Zr(t){let{graph:e,file:r,withMeta:n}=t;r||(console.error("Error: --dependents requires --file <path>"),process.exit(1));let o=de(e,r),s=n?o.map(i=>({...i,...H(e,i.path)})):o;console.log(JSON.stringify({file:r,dependents:s},null,2))}var vi=u(()=>{"use strict";l();v()});async function ki(t){let{graph:e}=t,{rootDir:r,scanOptions:n,featureThreshold:o,rawConfig:s}=t;if(e.nodes.size===0){let c=L(r,n);e=await R(r,c,e,F(s))}let i=J(e.nodes,o!==void 0?{minOutDegree:o}:void 0),a=Array.from(i.values()).sort((c,p)=>p.outDegree-c.outDegree);console.log(JSON.stringify({features:a},null,2))}var wi=u(()=>{"use strict";l();v()});async function Ei(t){let{graph:e}=t,{rootDir:r,scanOptions:n,minOutDegree:o,rawConfig:s}=t;if(e.nodes.size===0){let c=L(r,n);e=await R(r,c,e,F(s))}let i=me(e,o!==void 0?{minOutDegree:o}:void 0),a=Object.fromEntries(i.features);console.log(JSON.stringify({features:a,unassigned:i.unassigned},null,2))}var Ni=u(()=>{"use strict";l();v()});async function en(t){let{graph:e,metric:r,complexityThreshold:n,limit:o}=t,s=n??10,i=Ht(e,{metric:r,threshold:s,limit:o});console.log(JSON.stringify({metric:r??"cognitiveComplexity",threshold:s,functions:i,count:i.length},null,2))}var Fi=u(()=>{"use strict";l();v()});async function tn(t){let{graph:e,rootDir:r,scanOptions:n,minDuplicateLines:o,limit:s}=t,i=o??6,a=[...n.ignoreDirs??B,...n.additionalIgnoreDirs??[]],c=await Wt(e,r,{minLines:i,limit:s,ignoreDirs:a});console.log(JSON.stringify({minLines:i,groups:c,count:c.length},null,2))}var Ti=u(()=>{"use strict";l();v()});async function Pi(t){let{graph:e,functionName:r,plain:n}=t;r||(console.error("Error: --find-symbol requires --function <name>"),process.exit(1));let o=er(e,r);console.log(n?o.map(s=>s.path).join(`
40
+ `):JSON.stringify({name:r,matches:o,count:o.length},null,2))}var Ii=u(()=>{"use strict";l();v()});async function rn(t){let{graph:e,featureThreshold:r,rawConfig:n,plain:o}=t,s=r??n.coverageThreshold??80;if(!Xt(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<s).map(a=>({file:a.path,coveragePct:a.coveragePct}));console.log(o?i.map(a=>a.file).join(`
41
+ `):JSON.stringify({threshold:s,uncovered:i,count:i.length},null,2))}var Di=u(()=>{"use strict";l();v()});import yf from"path";function bf(t){let e=yf.basename(t).toLowerCase();return xf.some(r=>e.includes(r))}async function Mi(t){let{graph:e,rootDir:r,scanOptions:n,excludeTests:o}=t,s=L(r,n),i=e.findUnusedFiles(s);o&&(i=i.filter(a=>!bf(a))),console.log(JSON.stringify({unusedFiles:i},null,2))}var xf,Ai=u(()=>{"use strict";l();v();xf=[".test.",".spec.","-test.","-spec.",".stories."]});async function nn(t){let{graph:e,queryStr:r,mermaidOutput:n,slim:o}=t,s=e.serialize();if(r){let c=Xe(r);s=Qe(s,c)}if(n){let c=D.deserialize(s);console.log(je.serialize(c));return}let i=e.findCycles();i.length>0&&(s.cycles=i);let a=$t(e);console.log(JSON.stringify(o?{...Vt(s),languageCoverage:a}:{...s,languageCoverage:a},null,2))}var Ri=u(()=>{"use strict";l();v()});import Sf from"fs";import on from"path";function yt(t,e,r){let n=t;for(let o=0;o<6;o++){let s=on.join(n,"templates",...e);if(Sf.existsSync(on.join(s,r)))return s;let i=on.dirname(n);if(i===n)break;n=i}throw new Error(`Could not locate mokosh templates/${e.join("/")}`)}var sn=u(()=>{"use strict";l()});import Li from"fs";import Oi from"path";function Gi(t,e=process.cwd()){let r=yt(m,["config"],"mokosh.config.js"),n=Oi.join(r,"mokosh.config.js"),o=Oi.join(e,"mokosh.config.js");if(Li.existsSync(o)&&!t){console.log("skipped mokosh.config.js (already exists, use --force to overwrite)");return}Li.copyFileSync(n,o),console.log("wrote mokosh.config.js")}var ji=u(()=>{"use strict";l();sn()});import an from"fs";import xt from"path";function _i(t,e=process.cwd()){let r=yt(m,["skill"],"SKILL.md");for(let n of Cf){let o=xt.join(r,n.templateFile),s=xt.join(e,...n.destPath),i=xt.join(...n.destPath);if(an.existsSync(s)&&!t){console.log(`skipped ${i} (already exists, use --force to overwrite)`);continue}an.mkdirSync(xt.dirname(s),{recursive:!0}),an.copyFileSync(o,s),console.log(`wrote ${i}`)}}var Cf,Wi=u(()=>{"use strict";l();sn();Cf=[{templateFile:"SKILL.md",destPath:[".claude","skills","mokosh","SKILL.md"]},{templateFile:"mokosh.md",destPath:[".claude","commands","mokosh.md"]}]});async function cn(t){let{graph:e,plain:r}=t,n=new Map;for(let s of e.nodes.values())for(let i of s.tags)n.set(i.name,(n.get(i.name)??0)+1);let o=[...n.entries()].map(([s,i])=>({name:s,count:i})).sort((s,i)=>i.count-s.count);console.log(r?o.map(s=>s.name).join(`
42
+ `):JSON.stringify({tags:o,count:o.length},null,2))}var zi=u(()=>{"use strict";l()});async function $i(t){let{graph:e,filterPaths:r,minOutDegree:n}=t,o=qt(e,n!==void 0?{minOutDegree:n}:void 0);if(r?.length){let s=r.map(i=>o.get(i)).filter(Boolean);console.log(JSON.stringify({count:s.length,modules:s},null,2))}else{let s=Array.from(o.values());console.log(JSON.stringify({count:s.length,modules:s},null,2))}}var Ui=u(()=>{"use strict";l();v()});async function Bi(t){let{graph:e}=t,{rootDir:r,scanOptions:n,featureThreshold:o,plain:s,rawConfig:i}=t;s||console.log("Proposing test tags based on git diff...");let a=dt(r);if(e.nodes.size===0){let p=L(r,n);e=await R(r,Z(p),e,F(i))}let c=Ur(e,a,{...o!==void 0&&{featureDetection:{minOutDegree:o}}});console.log(s?c.join(" "):JSON.stringify({proposedTags:c},null,2))}var Ji=u(()=>{"use strict";l();v();ht()});async function Ki(t){let{graph:e,typeFilter:r}=t,n=tr(e);if(r){let o=rr(n,r);console.log(JSON.stringify(o,null,2))}else{let o=Array.from(n.types.values());console.log(JSON.stringify({count:o.length,types:o},null,2))}}var Hi=u(()=>{"use strict";l();v()});function Vi(t,e){let r=t.getAffectedAcrossPackages(e);console.log(JSON.stringify({file:e,affected:r,count:r.length},null,2))}var Qi=u(()=>{"use strict";l()});function Xi(t){console.log(JSON.stringify(Qt(t),null,2))}var Yi=u(()=>{"use strict";l();v()});import ln from"path";function vf(t,e,r,n){return t!==e?t:r?ln.resolve(n,r):e}function qi(t){let{rootDir:e,entryPoints:r,cachePath:n,configPath:o}=t,s=o?re(o,{isExplicitPath:!0}):re(e),i=ln.join(ln.resolve(e,ut),gt),a=r.length>0?r:s.entryPoints??[],c=vf(n,i,s.cachePath,e),p={...s.ignoreDirs!==void 0&&{additionalIgnoreDirs:s.ignoreDirs},...s.extensions!==void 0&&{additionalExtensions:s.extensions}};return{rootDir:e,resolvedEntryPoints:a,resolvedCachePath:c,scanOptions:p,rawConfig:s}}var Zi=u(()=>{"use strict";l();v();Jr()});import Ae from"fs";import kf from"path";function ea(t){if(!Ae.existsSync(t))return null;let e=Ae.readFileSync(t,"utf-8");return D.deserialize(JSON.parse(e))}function pn(t,e){let r=kf.dirname(e);Ae.existsSync(r)||Ae.mkdirSync(r,{recursive:!0}),Ae.writeFileSync(e,JSON.stringify(t.serialize(),null,2))}async function fn(t,e,r,n={silent:!1,...F(void 0)}){return R(t,e,r,n)}var ta=u(()=>{"use strict";l();v()});var ra,na,oa=u(()=>{"use strict";l();ra=`
39
43
  Usage: mokosh [options] <entry-point1> <entry-point2> ...
40
44
 
41
45
  Options:
@@ -52,6 +56,8 @@ Options:
52
56
  --find-unused Find files that are not reachable from entry points
53
57
  --exclude-tests Exclude test files from --find-unused output
54
58
  --find-uncovered List non-test files whose coverage is below the threshold (requires coverageReportPath in config)
59
+ --list-tags List every distinct tag in the graph with its per-node count, sorted
60
+ by count descending (use with --plain for a bare name list)
55
61
  --callers List files whose exported functions call into --file
56
62
  --file <path> Target file for --callers/--dependencies/--dependents/--affected/--workspace-affected
57
63
  --check-cycles Check for circular dependencies; exits non-zero if found (CI gate)
@@ -93,7 +99,13 @@ MCP parity (mirrors the MCP server's tools for use when MCP is unavailable):
93
99
  --find-complex-functions List functions/methods at or above a complexity threshold, worst-first
94
100
  --metric <name> cognitiveComplexity (default) | complexity \u2014 used by --find-complex-functions
95
101
  --complexity-threshold <N> Minimum score to include (default: 10, use with --find-complex-functions)
96
- --limit <N> Max results for --find-complex-functions (default: 20)
102
+ --limit <N> Max results for --find-complex-functions/--find-duplicates
103
+ --find-duplicates Find duplicated code blocks (token-based, works for every parsed
104
+ language), largest-first. Lock files and files under an ignored
105
+ directory (--config's ignoreDirs, merged with the defaults) are
106
+ always excluded
107
+ --min-duplicate-lines <N> Minimum duplicated block size in lines to report (default: 6,
108
+ use with --find-duplicates)
97
109
  --workspace-packages List monorepo packages and their cross-package dependencies
98
110
  --workspace-affected Cross-package blast-radius for --file in a monorepo
99
111
  --find-symbol Find every file that exports --function <name> by exact name, with
@@ -101,7 +113,9 @@ MCP parity (mirrors the MCP server's tools for use when MCP is unavailable):
101
113
  precision for TS/JS, named-import for Python, file-level otherwise)
102
114
  --watch Re-run on file changes. Supported with the default output, --query,
103
115
  --callers, --dependencies, --dependents, --affected, --find-uncovered,
104
- --find-complex-functions, --check-cycles, and --check-doc-drift only.
116
+ --find-complex-functions, --find-duplicates, --check-cycles,
117
+ --check-doc-drift, and
118
+ --list-tags only.
105
119
 
106
120
  Notes:
107
121
  Add mokosh-cache/ to your .gitignore to avoid committing the cache directory.
@@ -112,7 +126,7 @@ Notes:
112
126
  server only loads JSON config (allowJs: false) for security. This is intentional.
113
127
  --workspace-packages/--workspace-affected require explicit opt-in (unlike MCP's analyze tool,
114
128
  which auto-detects a monorepo when entryPoints is empty); other commands remain single-package.
115
- `,$i=`
129
+ `,na=`
116
130
  Query filter reference (--query "key:value,key:value,...")
117
131
  All keys are case-insensitive. Multiple keys are AND'd together.
118
132
 
@@ -235,5 +249,5 @@ COMMON PATTERNS
235
249
 
236
250
  Large TypeScript logic files:
237
251
  --query "type:typescript,category:logic,sort:size,limit:5"
238
- `});var Bi,Ji=m(()=>{"use strict";l();Bi=/(?:^|[/\\])(?:node_modules|\.git|dist|build|coverage)(?:[/\\]|$)/});import tf from"fs";function Ki(t,e,r){let n=null,s=!1,o=!1,i=async()=>{if(s){o=!0;return}s=!0;try{await r()}finally{s=!1,o&&(o=!1,i())}};i();let a=null;try{a=tf.watch(t,{recursive:!0},(c,p)=>{!p||Bi.test(p)||(n&&clearTimeout(n),n=setTimeout(()=>{i()},e))})}catch(c){console.error(`Warning: unable to watch ${t}: ${c.message}`)}process.on("SIGINT",()=>{n&&clearTimeout(n),a?.close(),process.exit(0)})}var Hi=m(()=>{"use strict";l();Ji()});function nf(t){t.help&&(console.log(zi),process.exit(0)),t.queryHelp&&(console.log($i),process.exit(0)),t.initSkill&&(wi(t.force),process.exit(0)),t.initConfig&&(ki(t.force),process.exit(0)),t.clearCache&&(ii(t.cachePath),process.exit(0))}async function sf(t,e,r){if(!t.workspacePackages&&!t.workspaceAffected)return!1;t.watch&&(console.error("Error: --watch is not supported with --workspace-packages/--workspace-affected"),process.exit(1));let n=await Uo(r,w(e.rawConfig));return t.workspacePackages?Li(n):(t.file||(console.error("Error: --workspace-affected requires --file <path>"),process.exit(1)),Ai(n,t.file)),!0}function of(t){return t.proposeTags||t.affectedTests||t.applyTags||t.callers||t.dependencies||t.dependents||t.affected||t.findUncovered||t.findComplexFunctions||t.typeGraph||t.moduleResponsibility||t.callGraph||t.findSymbol||t.apiSurface}function af(t){let r=[{name:"--propose-tags",flag:t.proposeTags,handler:Pi},{name:"--apply-tags",flag:t.applyTags,handler:qo},{name:"--affected-tests",flag:t.affectedTests,handler:Vo},{name:"--detect-features",flag:t.detectFeatures,handler:pi},{name:"--find-unused",flag:t.findUnused,handler:xi},{name:"--check-cycles",flag:t.checkCycles,handler:Wr},{name:"--check-doc-drift",flag:t.checkDocDrift,handler:zr},{name:"--find-uncovered",flag:t.findUncovered,handler:Jr},{name:"--callers",flag:t.callers,handler:_r},{name:"--dependencies",flag:t.dependencies,handler:$r},{name:"--dependents",flag:t.dependents,handler:Ur},{name:"--affected",flag:t.affected,handler:Gr},{name:"--find-complex-functions",flag:t.findComplexFunctions,handler:Br},{name:"--type-graph",flag:t.typeGraph,handler:Mi},{name:"--module-responsibility",flag:t.moduleResponsibility,handler:Fi},{name:"--feature-graph",flag:t.featureGraph,handler:mi},{name:"--call-graph",flag:t.callGraph,handler:ei},{name:"--find-symbol",flag:t.findSymbol,handler:di},{name:"--api-surface",flag:t.apiSurface,handler:Xo}].filter(n=>n.flag);return r.length>1&&(console.error(`Error: conflicting flags: ${r.map(n=>n.name).join(", ")} (pass only one command flag)`),process.exit(1)),r[0]?.handler??Kr}async function cf(t,e,r,n,s,o,i){rf.has(t)||(console.error("Error: --watch is only supported with the default output, --query, --callers, --dependencies, --dependents, --affected, --find-uncovered, --find-complex-functions, --check-cycles, and --check-doc-drift"),process.exit(1)),Ki(r,300,async()=>{let a=await qr(r,n,e.graph,{silent:o,...w(i)});Yr(a,s),console.log(`--- rebuilt at ${new Date().toISOString()} ---`),await t({...e,graph:a})})}async function Vi(){let t=process.argv.slice(2),e=Jo(t);nf(e);let r=Gi(e);Et(r.rawConfig);let{rootDir:n,resolvedEntryPoints:s,resolvedCachePath:o,scanOptions:i}=r;if(await sf(e,r,n))return;let a=of(e),c=_i(o)??new I(new Map);(s.length>0||!a)&&(s.length===0&&!a&&!e.findUnused&&!e.detectFeatures&&!e.checkCycles&&!e.checkDocDrift&&(console.error("Error: No entry points provided"),process.exit(1)),c=await qr(n,s,c,{silent:e.silent,...w(r.rawConfig)}),Yr(c,o));let p={graph:c,rootDir:n,entryPoints:s.map(h=>h.replace(n+"/","")),scanOptions:i,rawConfig:r.rawConfig,featureThreshold:e.featureThreshold,queryStr:e.query,mermaidOutput:e.mermaid,plain:e.plain,excludeTests:e.excludeTests,file:e.file,typeFilter:e.typeFilter,filterPaths:e.filterPaths,minOutDegree:e.minOutDegree,functionName:e.functionName,dryRun:e.dryRun,depth:e.depth,cached:e.cached,changedSymbols:e.changedSymbols,withMeta:e.withMeta,withEdgeDetail:e.withEdgeDetail,metric:e.metric,complexityThreshold:e.complexityThreshold,limit:e.limit,slim:e.slim,testsOnly:e.testsOnly},g=af(e);if(e.watch){await cf(g,p,n,s,o,e.silent,r.rawConfig);return}await g(p)}var rf,Qi=m(()=>{"use strict";l();v();Ko();Ho();Qo();Yo();Zo();ti();ri();ni();si();ai();ci();li();fi();ui();gi();hi();yi();Si();bi();Ei();Ni();Ti();Ii();Di();Ri();Oi();ji();Wi();Ui();Hi();rf=new Set([Kr,_r,$r,Ur,Gr,Jr,Br,Wr,zr])});var lf=Xi(()=>{l();Qi();Vi().catch(t=>{console.error(t),process.exit(1)})});export default lf();
252
+ `});var sa,ia=u(()=>{"use strict";l();sa=/(?:^|[/\\])(?:node_modules|\.git|dist|build|coverage)(?:[/\\]|$)/});import wf from"fs";function aa(t,e,r){let n=null,o=!1,s=!1,i=async()=>{if(o){s=!0;return}o=!0;try{await r()}finally{o=!1,s&&(s=!1,i())}};i();let a=null;try{a=wf.watch(t,{recursive:!0},(c,p)=>{!p||sa.test(p)||(n&&clearTimeout(n),n=setTimeout(()=>{i()},e))})}catch(c){console.error(`Warning: unable to watch ${t}: ${c.message}`)}process.on("SIGINT",()=>{n&&clearTimeout(n),a?.close(),process.exit(0)})}var ca=u(()=>{"use strict";l();ia()});function Nf(t){t.help&&(console.log(ra),process.exit(0)),t.queryHelp&&(console.log(na),process.exit(0)),t.initSkill&&(_i(t.force),process.exit(0)),t.initConfig&&(Gi(t.force),process.exit(0)),t.clearCache&&(bi(t.cachePath),process.exit(0))}async function Ff(t,e,r){if(!t.workspacePackages&&!t.workspaceAffected)return!1;t.watch&&(console.error("Error: --watch is not supported with --workspace-packages/--workspace-affected"),process.exit(1));let n=await ri(r,F(e.rawConfig));return t.workspacePackages?Xi(n):(t.file||(console.error("Error: --workspace-affected requires --file <path>"),process.exit(1)),Vi(n,t.file)),!0}function Tf(t){return t.proposeTags||t.affectedTests||t.applyTags||t.callers||t.dependencies||t.dependents||t.affected||t.findUncovered||t.listTags||t.findComplexFunctions||t.findDuplicates||t.typeGraph||t.moduleResponsibility||t.callGraph||t.findSymbol||t.apiSurface}function Pf(t){let r=[{name:"--propose-tags",flag:t.proposeTags,handler:Bi},{name:"--apply-tags",flag:t.applyTags,handler:fi},{name:"--affected-tests",flag:t.affectedTests,handler:ai},{name:"--detect-features",flag:t.detectFeatures,handler:ki},{name:"--find-unused",flag:t.findUnused,handler:Mi},{name:"--check-cycles",flag:t.checkCycles,handler:Xr},{name:"--check-doc-drift",flag:t.checkDocDrift,handler:Yr},{name:"--find-uncovered",flag:t.findUncovered,handler:rn},{name:"--list-tags",flag:t.listTags,handler:cn},{name:"--callers",flag:t.callers,handler:Qr},{name:"--dependencies",flag:t.dependencies,handler:qr},{name:"--dependents",flag:t.dependents,handler:Zr},{name:"--affected",flag:t.affected,handler:Hr},{name:"--find-complex-functions",flag:t.findComplexFunctions,handler:en},{name:"--find-duplicates",flag:t.findDuplicates,handler:tn},{name:"--type-graph",flag:t.typeGraph,handler:Ki},{name:"--module-responsibility",flag:t.moduleResponsibility,handler:$i},{name:"--feature-graph",flag:t.featureGraph,handler:Ei},{name:"--call-graph",flag:t.callGraph,handler:ui},{name:"--find-symbol",flag:t.findSymbol,handler:Pi},{name:"--api-surface",flag:t.apiSurface,handler:li}].filter(n=>n.flag);return r.length>1&&(console.error(`Error: conflicting flags: ${r.map(n=>n.name).join(", ")} (pass only one command flag)`),process.exit(1)),r[0]?.handler??nn}async function If(t,e,r,n,o,s,i){Ef.has(t)||(console.error("Error: --watch is only supported with the default output, --query, --callers, --dependencies, --dependents, --affected, --find-uncovered, --find-complex-functions, --find-duplicates, --check-cycles, --check-doc-drift, and --list-tags"),process.exit(1)),aa(r,300,async()=>{let a=await fn(r,n,e.graph,{silent:s,...F(i)});pn(a,o),console.log(`--- rebuilt at ${new Date().toISOString()} ---`),await t({...e,graph:a})})}async function la(){let t=process.argv.slice(2),e=oi(t);Nf(e);let r=qi(e);wt(r.rawConfig);let{rootDir:n,resolvedEntryPoints:o,resolvedCachePath:s,scanOptions:i}=r;if(await Ff(e,r,n))return;let a=Tf(e),c=ea(s)??new D(new Map);(o.length>0||!a)&&(o.length===0&&!a&&!e.findUnused&&!e.detectFeatures&&!e.checkCycles&&!e.checkDocDrift&&(console.error("Error: No entry points provided"),process.exit(1)),c=await fn(n,o,c,{silent:e.silent,...F(r.rawConfig)}),pn(c,s));let p={graph:c,rootDir:n,entryPoints:o.map(d=>d.replace(`${n}/`,"")),scanOptions:i,rawConfig:r.rawConfig,featureThreshold:e.featureThreshold,queryStr:e.query,mermaidOutput:e.mermaid,plain:e.plain,excludeTests:e.excludeTests,file:e.file,typeFilter:e.typeFilter,filterPaths:e.filterPaths,minOutDegree:e.minOutDegree,functionName:e.functionName,dryRun:e.dryRun,depth:e.depth,cached:e.cached,changedSymbols:e.changedSymbols,withMeta:e.withMeta,withEdgeDetail:e.withEdgeDetail,metric:e.metric,complexityThreshold:e.complexityThreshold,limit:e.limit,slim:e.slim,testsOnly:e.testsOnly,minDuplicateLines:e.minDuplicateLines},f=Pf(e);if(e.watch){await If(f,p,n,o,s,e.silent,r.rawConfig);return}await f(p)}var Ef,pa=u(()=>{"use strict";l();v();si();ii();ci();pi();mi();gi();di();hi();yi();Si();Ci();vi();wi();Ni();Fi();Ti();Ii();Di();Ai();Ri();ji();Wi();zi();Ui();Ji();Hi();Qi();Yi();Zi();ta();oa();ca();Ef=new Set([nn,Qr,qr,Zr,Hr,rn,en,tn,Xr,Yr,cn])});var Df=fa(()=>{l();pa();la().catch(t=>{console.error(t),process.exit(1)})});export default Df();
239
253
  //# sourceMappingURL=cli.mjs.map