@omfalos/mokosh 0.1.8 → 0.1.9

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