@omfalos/mokosh 0.1.5 → 0.1.6

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