@omfalos/mokosh 0.4.3 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +99 -179
- package/dist/cli.js +60 -38
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +60 -38
- package/dist/cli.mjs.map +1 -1
- package/dist/duplication-worker.d.mts +2 -2
- package/dist/duplication-worker.d.ts +2 -2
- package/dist/duplication-worker.js +4 -4
- package/dist/duplication-worker.js.map +1 -1
- package/dist/duplication-worker.mjs +4 -4
- package/dist/duplication-worker.mjs.map +1 -1
- package/dist/index.d.mts +257 -45
- package/dist/index.d.ts +257 -45
- package/dist/index.js +39 -27
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +39 -27
- package/dist/index.mjs.map +1 -1
- package/dist/mcp.js +42 -30
- package/dist/mcp.js.map +1 -1
- package/dist/mcp.mjs +42 -30
- package/dist/mcp.mjs.map +1 -1
- package/dist/parse-worker.d.mts +2 -2
- package/dist/parse-worker.d.ts +2 -2
- package/dist/parse-worker.js +6 -2
- package/dist/parse-worker.js.map +1 -1
- package/dist/parse-worker.mjs +6 -2
- package/dist/parse-worker.mjs.map +1 -1
- package/dist/{parse-CAKctgb6.d.mts → parse-yamNoaoL.d.mts} +1 -1
- package/dist/{parse-CAKctgb6.d.ts → parse-yamNoaoL.d.ts} +1 -1
- package/dist/{tokenizer-BaF1eUBQ.d.mts → tokenizer-DIbb0GLe.d.mts} +2 -2
- package/dist/{tokenizer-BaF1eUBQ.d.ts → tokenizer-DIbb0GLe.d.ts} +2 -2
- package/dist/{types-BtSqoqbZ.d.mts → types-C153Tz5u.d.mts} +1 -1
- package/dist/{types-BlN-U5AM.d.ts → types-y90pqeDR.d.ts} +1 -1
- package/package.json +13 -2
package/dist/parse-worker.d.mts
CHANGED
package/dist/parse-worker.d.ts
CHANGED
package/dist/parse-worker.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`&&r++;return r}function me(t,e){let r=1;function i(s){switch(s.type.name){case"IfStatement":case"ForStatement":r++;break;case"Case":{s.firstChild?.type.name==="case"&&r++;break}case"LogicOp":{let o=e.slice(s.from,s.to);(o==="&&"||o==="||")&&r++;break}}let n=s.firstChild;for(;n;)i(n),n=n.nextSibling}return i(t),r}function yt(t,e,r,i){let s=r?1:1+e,n=I(t),o=r?e:e+1,a=n[1];a&&a.type.name!=="Block"&&(s+=M(a,o,!1,i));let c=n.find(p=>p.type.name==="Block");c&&(s+=M(c,o,!1,i));let m=n.findIndex(p=>p.type.name==="else");if(m>=0){let p=n[m+1];p?.type.name==="IfStatement"?s+=yt(p,e,!0,i):p&&(s+=1+M(p,e+1,!1,i))}return s}function dt(t,e,r){let i=1+e,s=t.firstChild;for(;s;)i+=M(s,e+1,!1,r),s=s.nextSibling;return i}function pe(t,e,r){let i=0,s=t.firstChild;for(;s;)i+=M(s,e,!1,r),s=s.nextSibling;return i}function fe(t,e){let r=e.slice(t.from,t.to);return r==="&&"||r==="||"}function M(t,e,r,i){let s=t.type.name;if(s==="IfStatement")return yt(t,e,r,i);if(s==="ForStatement"||s==="SwitchStatement"||s==="SelectStatement")return dt(t,e,i);let n=s==="LogicOp"&&fe(t,i)?1:0;return e>0&&s==="FunctionLiteral"?n+dt(t,e,i):n+pe(t,e,i)}function ue(t,e){return M(t,0,!1,e)}function $(t,e){return{complexity:me(t,e),cognitiveComplexity:ue(t,e)}}function U(t,e){let i=t.getChild("Parameters")?.getChild("Parameter"),s=i?.getChild("TypeName")??i?.getChild("PointerType")?.getChild("TypeName");return s?e.slice(s.from,s.to):void 0}function xt(t,e){let r=[],i=t.cursor();do if(i.name==="FunctionDecl"){let s=i.node.getChild("DefName");if(s){let n=e.slice(s.from,s.to),{complexity:o,cognitiveComplexity:a}=$(i.node,e);r.push({name:n,line:O(e,i.from),complexity:o,cognitiveComplexity:a})}}else if(i.name==="MethodDecl"){let s=i.node.getChild("FieldName");if(s){let n=e.slice(s.from,s.to),o=U(i.node,e),a=o?`${o}.${n}`:n,{complexity:c,cognitiveComplexity:m}=$(i.node,e);r.push({name:a,line:O(e,i.from),complexity:c,cognitiveComplexity:m})}}while(i.next());return r}var ge=/\/\/\s*@tag\s+([a-zA-Z0-9_-]+)/,de=/^\/\/go:build\s+(.+)$/,ye=/^\/\/\s*\+build\s+(.+)$/;function Ct(t,e){let r=[],i=new Map,s=new Set,n=new Set,o=new Map,a=bt.parser.parse(e),c=a.cursor();do switch(c.name){case"LineComment":{let h=e.slice(c.from,c.to),E=h.match(ge);E?.[1]&&s.add(E[1]);let P=h.match(de);P&&ht(P[1],n);let D=h.match(ye);D&&ht(D[1],n);break}case"ImportSpec":{let h=c.node.getChild("String");if(h){let P=e.slice(h.from,h.to).slice(1,-1);r.push({fromPath:t,toPath:"",rawSpecifier:P,isExternal:!0,isStyle:!1,type:"static"});let D=c.node.getChild("DefName"),j=D?e.slice(D.from,D.to):P.split("/").pop();j&&j!=="_"&&j!=="."&&o.set(j,P)}break}case"FunctionDecl":case"MethodDecl":case"TypeDecl":case"VarDecl":case"ConstDecl":{let h=c.node.getChild("DefName")??c.node.getChild("FieldName")??c.node.getChild("TypeSpec")?.getChild("DefName")??c.node.getChild("VarSpec")?.getChild("DefName")??c.node.getChild("ConstSpec")?.getChild("DefName");if(h){let E=e.slice(h.from,h.to);E!=="_"&&/^[A-Z]/.test(E)&&!i.has(E)&&i.set(E,{name:E})}break}}while(c.next());let m=r.some(h=>h.rawSpecifier==="testing"),p=St.default.basename(t).endsWith("_test.go")||s.has("test")||m?"test":"logic",f=new Set([...s,...n]),{complexity:x,cognitiveComplexity:g}=$(a.topNode,e),N=xt(a,e),b=p==="test"?[]:xe(a,e,o);return{imports:r,exports:Array.from(i.values()),tags:Array.from(f).map(h=>({name:h,kind:"comment-marker"})),category:p,rawCallEdges:b,complexity:x,cognitiveComplexity:g,...N.length>0?{functions:N}:{}}}function xe(t,e,r){let i=[];function s(o,a){if(o.type.name==="CallExpr"){let m=o.firstChild;if(m?.type.name==="SelectorExpr"){let p=m.firstChild,f=m.getChild("FieldName");if(p?.type.name==="VariableName"&&f){let x=e.slice(p.from,p.to),g=r.get(x);if(g){let N=e.slice(f.from,f.to);i.push({from:a,to:N,toSpecifier:g})}}}}let c=o.firstChild;for(;c;)s(c,a),c=c.nextSibling}let n=t.cursor();do if(n.name==="FunctionDecl"){let o=n.node.getChild("DefName"),a=n.node.getChild("Block");if(o&&a){let c=e.slice(o.from,o.to);/^[A-Z]/.test(c)&&s(a,c)}}else if(n.name==="MethodDecl"){let o=n.node.getChild("FieldName"),a=n.node.getChild("Block");if(o&&a){let c=e.slice(o.from,o.to),m=U(n.node,e);s(a,m?`${m}.${c}`:c)}}while(n.next());return i}function ht(t,e){for(let r of t.split(/[\s,&|!()]+/)){let i=r.trim();i&&i!=="ignore"&&e.add(i)}}var Nt=S(require("livescript"));function k(t){if(t){if(typeof t.value=="string")return t.value;if(typeof t.base?.value=="string")return t.base.value}}function he(t){if(!t)return[];if(t.constructor?.name==="Class"){let r=k(t.title);return r?[{name:r}]:[]}if(t.constructor?.name==="Obj"&&Array.isArray(t.items))return t.items.map(r=>k(r.key)??k(r.val)).filter(r=>!!r).map(r=>({name:r}));let e=k(t);return e?[{name:e}]:[]}function Se(t){let e=t.constructor?.name||t.type;if(e==="Assign"&&t.left?.constructor?.name==="Chain"){let r=t.left,i=k(r.head),n=r.tails?.[0]?.key?.name;if(i==="module"&&n==="exports")return he(t.right);if(i==="exports"&&typeof n=="string")return[{name:n}];if(r.head?.verb==="out"&&typeof n=="string")return[{name:n}]}if(e==="Import"&&t.left?.verb==="out"){let r=t.right;if(r?.constructor?.name==="Obj"&&Array.isArray(r.items))return r.items.map(i=>k(i.val)??k(i.key)).filter(i=>!!i).map(i=>({name:i}))}return[]}var be=new Set(["first_line","first_column","last_line","last_column","line","column"]);function Ce(t,e){let r=t.constructor?.name||t.type;if(r==="Import"){let i=t.right?.value;if(typeof i=="string"){let s=v(i);return{fromPath:e,toPath:"",rawSpecifier:s,isStyle:C(s),type:"static"}}}if(r==="Chain"&&t.head?.value==="require"){let i=t.tails?.[0];if(i?.constructor?.name==="Call"||i?.type==="Call"){let s=i.args?.[0]?.value;if(typeof s=="string"){let n=v(s);return{fromPath:e,toPath:"",rawSpecifier:n,isStyle:C(n),type:"require"}}}}return null}function Z(t,e,r){if(!t||typeof t!="object")return[];let i=[],s=Ce(t,e);s&&i.push(s),r.push(...Se(t));for(let n in t){if(be.has(n))continue;let o=t[n];if(!(!o||typeof o!="object"))if(Array.isArray(o))for(let a of o)i.push(...Z(a,e,r));else i.push(...Z(o,e,r))}return i}function Et(t,e){let r=L(e),i=A(t,r),s=[],n=[];try{s=Z(Nt.default.ast(e),t,n)}catch{}let o=new Set,a=n.filter(c=>o.has(c.name)?!1:(o.add(c.name),!0));return{imports:s,exports:a,tags:Array.from(r).map(c=>({name:c,kind:"comment-marker"})),category:i}}var wt=S(require("luaparse"));function Ne(t,e){let r=[];function i(s){if(!(!s||typeof s!="object")){if((s.type==="CallExpression"||s.type==="StringCallExpression")&&s.base?.type==="Identifier"&&s.base?.name==="require"){let n;if(s.type==="CallExpression"){let o=s.arguments?.[0];o?.type==="StringLiteral"&&(n=v(o.raw))}else if(s.type==="StringCallExpression"){let o=s.argument;o?.type==="StringLiteral"&&(n=v(o.raw))}n&&r.push({fromPath:e,toPath:"",rawSpecifier:n,isStyle:C(n),type:"require"})}for(let n in s){if(n==="loc")continue;let o=s[n];if(o&&typeof o=="object")if(Array.isArray(o))for(let a of o)i(a);else i(o)}}}return i(t),r}function Ee(t){let e=new Set;for(let r of t)r.type==="LocalStatement"&&r.variables.forEach((i,s)=>{r.init[s]?.type==="TableConstructorExpression"&&e.add(i.name)});return e}function we(t){let e=t[t.length-1];if(e?.type!=="ReturnStatement")return[];let r=e.arguments[0];if(r?.type!=="TableConstructorExpression")return[];let i=[];for(let s of r.fields)s.type==="TableKeyString"&&i.push({name:s.key.name});return i}function ve(t){let e=t.body,r=Ee(e),i=we(e);for(let n of e)if(n.type==="FunctionDeclaration")n.identifier?.type==="MemberExpression"?n.identifier.base.type==="Identifier"&&r.has(n.identifier.base.name)&&i.push({name:n.identifier.identifier.name}):n.identifier?.type==="Identifier"&&!n.isLocal&&i.push({name:n.identifier.name});else if(n.type==="AssignmentStatement")for(let o of n.variables)o.type==="MemberExpression"&&o.base.type==="Identifier"&&r.has(o.base.name)&&i.push({name:o.identifier.name});let s=new Set;return i.filter(n=>s.has(n.name)?!1:(s.add(n.name),!0))}function vt(t,e){let r=L(e),i=A(t,r),s=[],n=[];try{let o=wt.default.parse(e);s=Ne(o,t),n=ve(o)}catch{}return{imports:s,exports:n,tags:Array.from(r).map(o=>({name:o,kind:"comment-marker"})),category:i}}var Te=["http://","https://","mailto:","//"],Ie="ts|tsx|js|jsx|mjs|cjs|py|go|lua|css|scss|less|styl|coffee|ls|feature|md|mdx|json",ke=new RegExp(`(?:\\.{1,2}/)?[\\w.-]+(?:/[\\w.-]+)*\\.(?:${Ie})\\b`,"g"),Tt;async function Fe(){return Tt??=(async()=>{let{unified:t}=await import("unified"),e=(await import("remark-parse")).default;return t().use(e)})(),Tt}function Pe(t){let e=t.trim();return e.length===0||e.startsWith("#")||Te.some(r=>e.startsWith(r))}function De(t,e){let r=t.match(ke);return r?r.map(i=>({fromPath:e,toPath:"",rawSpecifier:i,isStyle:!1,type:"static"})):[]}function It(t,e,r){if(t.type==="link"&&typeof t.url=="string"&&!Pe(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(...De(t.value,e)),Array.isArray(t.children))for(let i of t.children)It(i,e,r)}async function kt(t,e){let i=(await Fe()).parse(e),s=[];It(i,t,s);let n=new Set;return{imports:s.filter(a=>n.has(a.rawSpecifier)?!1:(n.add(a.rawSpecifier),!0)),exports:[],tags:[],category:"other"}}var Dt=S(require("path")),Lt=require("@lezer/python");function Le(t){let e=1;function r(i){switch(i.type.name){case"IfStatement":{e+=I(i).filter(n=>n.type.name==="if"||n.type.name==="elif").length;break}case"TryStatement":{e+=I(i).filter(n=>n.type.name==="except").length;break}case"ForStatement":case"WhileStatement":case"ConditionalExpression":e++;break;case"and":case"or":e++;break}let s=i.firstChild;for(;s;)r(s),s=s.nextSibling}return r(t),e}function Ae(t,e){let r=0,i=I(t),s=0,n=0;for(;n<i.length;){let o=i[n];if(o?.type.name==="if"||o?.type.name==="elif"){let a=s>0;r+=a?1:1+e;let c=a?e:e+1,m=i[n+1],p=i[n+2];m&&(r+=w(m,c)),p&&(r+=w(p,c)),s++,n+=3}else if(o?.type.name==="else"){r+=1;let a=i[n+1];a&&(r+=w(a,e+1)),n+=2}else n++}return r}function Re(t,e){let r=0,i=I(t),s=0;for(;s<i.length;){let n=i[s];if(n?.type.name==="except"){for(r+=1+e,s++;s<i.length&&i[s]?.type.name!=="Body";)r+=w(i[s],e),s++;s<i.length&&(r+=w(i[s],e),s++)}else n?.type.name==="Body"&&(r+=w(n,e)),s++}return r}function Ft(t,e){let r=1+e,i=t.firstChild;for(;i;)r+=w(i,e+1),i=i.nextSibling;return r}function Me(t,e){let r=0,i=t.firstChild;for(;i;)r+=w(i,e),i=i.nextSibling;return r}function w(t,e){let r=t.type.name;if(r==="IfStatement")return Ae(t,e);if(r==="TryStatement")return Re(t,e);if(r==="ForStatement"||r==="WhileStatement")return Ft(t,e);let i=r==="ConditionalExpression"||r==="and"||r==="or"?1:0;return e>0&&(r==="FunctionDefinition"||r==="LambdaExpression")?i+Ft(t,e):i+Me(t,e)}function Be(t){return w(t,0)}function X(t){return{complexity:Le(t),cognitiveComplexity:Be(t)}}function Pt(t,e){let r=[];function i(o,a){let{complexity:c,cognitiveComplexity:m}=X(o);r.push({name:a,line:O(e,o.from),complexity:c,cognitiveComplexity:m})}function s(o){let a=o.firstChild;for(;a;)n(a),a=a.nextSibling}function n(o){if(o.type.name==="ClassDefinition"){let a=o.getChild("VariableName"),c=a?e.slice(a.from,a.to):void 0,m=o.getChild("Body");if(m){let p=m.firstChild;for(;p;){if(p.type.name==="FunctionDefinition"){let f=p.getChild("VariableName"),x=f?e.slice(f.from,f.to):void 0;x&&i(p,c?`${c}.${x}`:x),s(p)}else n(p);p=p.nextSibling}}return}if(o.type.name==="FunctionDefinition"){let a=o.getChild("VariableName");a&&i(o,e.slice(a.from,a.to)),s(o);return}s(o)}return n(t.topNode),r}var We=new Set(["pytest","unittest","nose","hypothesis"]);function At(t,e){let r=[],i=[],s=new Set,n=Dt.default.basename(t).toLowerCase(),o=Lt.parser.parse(e),a=o.cursor();do switch(a.name){case"Comment":{let g=e.slice(a.from,a.to).match(/#\s*@tag\s+([a-zA-Z0-9_-]+)/);g?.[1]&&s.add(g[1]);break}case"ImportStatement":{for(let g of Oe(a.node,e,t))r.push(g);break}case"FunctionDefinition":case"ClassDefinition":{let g=a.node.parent;if(g?.name==="Script"||g?.name==="DecoratedStatement"&&g.parent?.name==="Script"){let b=a.node.getChild("VariableName");b&&i.push({name:e.slice(b.from,b.to)})}break}case"AssignStatement":{if(a.node.parent?.name==="Script"){let g=a.node.firstChild;g?.name==="VariableName"&&i.push({name:e.slice(g.from,g.to)})}break}}while(a.next());let c=ze(n,r,s);c==="test"&&s.add("test");let{complexity:m,cognitiveComplexity:p}=X(o.topNode),f=Pt(o,e),x=c==="test"?[]:$e(o,e);return{imports:r,exports:i,tags:Array.from(s).map(g=>({name:g,kind:"comment-marker"})),category:c,rawCallEdges:x,complexity:m,cognitiveComplexity:p,...f.length>0?{functions:f}:{}}}function Oe(t,e,r){let i=t.firstChild;return i?i.name==="from"?Ke(t,e,r):_e(t,e,r):[]}function Ke(t,e,r){let i=t.firstChild;if(!i)return[];let s=i.nextSibling;for(;s&&s.name!=="import";)s=s.nextSibling;if(!s)return[];let n=e.slice(i.to,s.from).trim(),o=je(s.nextSibling,e);if(!o.length)return[];let a=0;for(;a<n.length&&n[a]===".";)a++;let c=n.slice(a);if(a===0)return[K(r,n,o,!0)];let m=a===1?"./":"../".repeat(a-1);return c?[K(r,m+c.replace(/\./g,"/"),o,!1)]:o[0]==="*"?[K(r,m.slice(0,-1),["*"],!1)]:o.map(p=>K(r,m+p,[p],!1))}function _e(t,e,r){let i=[],s=t.firstChild?.nextSibling??null;for(;s;){if(s.name==="VariableName"){let n=e.slice(s.from,s.to);for(;s.nextSibling?.name==="."&&s.nextSibling.nextSibling?.name==="VariableName";)s=s.nextSibling.nextSibling,n+=`.${e.slice(s.from,s.to)}`;s.nextSibling?.name==="as"&&(s=s.nextSibling.nextSibling??s.nextSibling),i.push(K(r,n,["*"],!0))}s=s.nextSibling}return i}function je(t,e){let r=[],i=t;for(;i;)i.name==="*"?r.push("*"):i.name==="VariableName"&&(r.push(e.slice(i.from,i.to)),i.nextSibling?.name==="as"&&(i=i.nextSibling.nextSibling??i.nextSibling)),i=i.nextSibling;return r}function Ve(t,e){let r=new Map,i=t.cursor();do{if(i.name!=="ImportStatement")continue;let n=i.node.firstChild;if(n?.type.name!=="from")continue;let o=n.nextSibling;for(;o&&o.type.name!=="import";)o=o.nextSibling;if(!o)continue;let a=e.slice(n.to,o.from).trim(),c=0;for(;c<a.length&&a[c]===".";)c++;let m=a.slice(c),p=c<=1?"./":"../".repeat(c-1),f=o.nextSibling;for(;f;){if(f.type.name==="VariableName"){let x=e.slice(f.from,f.to),g=x;if(f.nextSibling?.type.name==="as"){let b=f.nextSibling.nextSibling;b?.type.name==="VariableName"&&(g=e.slice(b.from,b.to),f=b)}let N=c===0?a:m?p+m.replace(/\./g,"/"):p+x;r.set(g,N)}f=f.nextSibling}}while(i.next());return r}function $e(t,e){let r=Ve(t,e),i=[];function s(a,c){if(a.type.name==="CallExpression"&&a.firstChild?.type.name==="VariableName"){let p=a.firstChild,f=e.slice(p.from,p.to),x=r.get(f);x&&i.push({from:c,to:f,toSpecifier:x})}let m=a.firstChild;for(;m;)s(m,c),m=m.nextSibling}function n(a){let c=a.firstChild;for(;c;)o(c),c=c.nextSibling}function o(a){if(a.type.name==="ClassDefinition"){let c=a.getChild("VariableName"),m=c?e.slice(c.from,c.to):void 0,p=a.getChild("Body");if(p){let f=p.firstChild;for(;f;){if(f.type.name==="FunctionDefinition"){let x=f.getChild("VariableName"),g=x?e.slice(x.from,x.to):void 0;g&&s(f,m?`${m}.${g}`:g)}else o(f);f=f.nextSibling}}return}if(a.type.name==="FunctionDefinition"){let c=a.getChild("VariableName");c&&s(a,e.slice(c.from,c.to));return}n(a)}return o(t.topNode),i}function K(t,e,r,i){return{fromPath:t,toPath:"",rawSpecifier:e,isStyle:!1,isExternal:i,type:"static",symbols:r.length>0?r:void 0}}function ze(t,e,r){return t.startsWith("test_")||t.endsWith("_test.py")?"test":t==="conftest.py"||t==="setup.py"?"config":r.has("test")||e.some(i=>We.has(i.rawSpecifier))?"test":"logic"}var it=S(require("path")),l=S(require("typescript"));var qe=[".config.","biome.json","tsconfig.json","package.json",".prettierrc",".eslintrc"],Je=[];function Rt(t){return[...qe,...Je].some(e=>typeof e=="string"?t.includes(e):e instanceof RegExp?e.test(t):e(t))}var Ge=[".test.",".spec.","-test.","-spec."],Qe=[];function H(){return[...Ge,...Qe]}var Ue=["jest","vitest","playwright","cypress","@testing-library/"],Ze=[];function Y(){return[...Ue,...Ze]}var Xe=.8;function tt(){return Xe}var u=S(require("typescript"));function He(t){let e=1;function r(i){switch(i.kind){case u.default.SyntaxKind.IfStatement:case u.default.SyntaxKind.ConditionalExpression:case u.default.SyntaxKind.ForStatement:case u.default.SyntaxKind.ForInStatement:case u.default.SyntaxKind.ForOfStatement:case u.default.SyntaxKind.WhileStatement:case u.default.SyntaxKind.DoStatement:case u.default.SyntaxKind.CatchClause:case u.default.SyntaxKind.CaseClause:e++;break;case u.default.SyntaxKind.BinaryExpression:{let s=i.operatorToken.kind;(s===u.default.SyntaxKind.AmpersandAmpersandToken||s===u.default.SyntaxKind.BarBarToken||s===u.default.SyntaxKind.QuestionQuestionToken)&&e++;break}}u.default.forEachChild(i,r)}return r(t),e}function Bt(t,e,r){let i=r?1:1+e,s=r?e:e+1;return i+=F(t.expression,s,!1),i+=F(t.thenStatement,s,!1),t.elseStatement&&(u.default.isIfStatement(t.elseStatement)?i+=Bt(t.elseStatement,e,!0):i+=1+F(t.elseStatement,e+1,!1)),i}function Mt(t,e){let r=1+e;return u.default.forEachChild(t,i=>{r+=F(i,e+1,!1)}),r}function Ye(t,e){let r=1+e;return u.default.forEachChild(t,i=>{r+=F(i,e,!1)}),r}function tr(t,e){let r=0;return u.default.forEachChild(t,i=>{r+=F(i,e,!1)}),r}function er(t){let e=t.operatorToken.kind;return e===u.default.SyntaxKind.AmpersandAmpersandToken||e===u.default.SyntaxKind.BarBarToken||e===u.default.SyntaxKind.QuestionQuestionToken}function F(t,e,r){if(u.default.isIfStatement(t))return Bt(t,e,r);if(u.default.isForStatement(t)||u.default.isForInStatement(t)||u.default.isForOfStatement(t)||u.default.isWhileStatement(t)||u.default.isDoStatement(t)||u.default.isSwitchStatement(t))return Mt(t,e);if(u.default.isCatchClause(t))return Ye(t,e);let i=0;return u.default.isConditionalExpression(t)&&(i+=1),u.default.isBinaryExpression(t)&&er(t)&&(i+=1),e>0&&(u.default.isFunctionDeclaration(t)||u.default.isFunctionExpression(t)||u.default.isArrowFunction(t))?i+Mt(t,e):i+tr(t,e)}function rr(t){return F(t,0,!1)}function et(t){return{complexity:He(t),cognitiveComplexity:rr(t)}}var y=S(require("typescript")),rt=new Set(["test","describe","it"]);function Wt(t,e){ir(t,e),nr(t,e),or(t,e),ar(t,e)}function ir(t,e){if((y.default.isFunctionDeclaration(t)||y.default.isVariableDeclaration(t))&&t.name&&y.default.isIdentifier(t.name)&&sr(t)){let r;if(y.default.isFunctionDeclaration(t))r="function";else{let i=t.initializer;r=i&&(y.default.isArrowFunction(i)||y.default.isFunctionExpression(i))?"function":"variable"}e.tags.add({name:t.name.text,kind:r})}}function sr(t){if(y.default.isFunctionDeclaration(t))return y.default.isSourceFile(t.parent);let e=t.parent?.parent;return!!e&&y.default.isSourceFile(e.parent)}function nr(t,e){if(!y.default.isStringLiteral(t))return;let r=t.text.match(/@[\w-]+/g);if(r)for(let i of r)e.tags.add({name:i.substring(1),kind:"comment-marker"})}function or(t,e){if(!y.default.isSourceFile(t))return;let r=/@tag\s+([a-zA-Z0-9_-]+)/g,i=t.getFullText(),s=r.exec(i);for(;s!==null;)s[1]&&e.tags.add({name:s[1],kind:"comment-marker"}),s=r.exec(i)}function ar(t,e){if(y.default.isCallExpression(t)&&cr(t.expression))for(let r of t.arguments)y.default.isObjectLiteralExpression(r)&&lr(r,e)}function cr(t){return y.default.isIdentifier(t)?rt.has(t.text):!!(y.default.isPropertyAccessExpression(t)&&(rt.has(t.name.text)||y.default.isIdentifier(t.expression)&&rt.has(t.expression.text)))}function lr(t,e){for(let r of t.properties){if(!y.default.isPropertyAssignment(r)||!y.default.isIdentifier(r.name)||r.name.text!=="tags"&&r.name.text!=="tag")continue;let{initializer:i}=r,s=y.default.isArrayLiteralExpression(i)?i.elements.filter(y.default.isStringLiteral):r.name.text==="tag"&&y.default.isStringLiteral(i)?[i]:[];for(let n of s)e.tags.add({name:n.text.replace(/^@/,""),kind:"comment-marker"})}}function st(t,e,r){let i=[],s=new Map,n=new Set,o=l.default.createSourceFile(t,e,l.default.ScriptTarget.Latest,!0,r==="typescript"?l.default.ScriptKind.TSX:l.default.ScriptKind.JSX),a={filePath:t,imports:i,exports:s,tags:n,rawCallEdges:[],sourceFile:o,hasUI:!1,hasTypesOnly:!0,totalStatements:0,exportStatements:0},c=b=>{ur(b,a),l.default.forEachChild(b,c)};c(o);let m=wr(t,a);(m==="test"||m==="barrel")&&n.add({name:m,kind:"comment-marker"}),m!=="test"&&vr(a,o);let p=o.statements[0],f=p?Kt(p):void 0,{complexity:x,cognitiveComplexity:g}=et(o),N=mr(o);return{imports:i,exports:Array.from(s.values()),tags:Array.from(n),category:m,rawCallEdges:a.rawCallEdges??[],complexity:x,cognitiveComplexity:g,...N.length>0?{functions:N}:{},...f!==void 0?{description:f}:{}}}function mr(t){let e=[],r=(s,n)=>{let{complexity:o,cognitiveComplexity:a}=et(n),c=t.getLineAndCharacterOfPosition(n.getStart(t)).line+1;e.push({name:s,line:c,complexity:o,cognitiveComplexity:a})},i=(s,n)=>{if(l.default.isFunctionDeclaration(s)&&s.name&&s.body?r(s.name.text,s):l.default.isVariableDeclaration(s)&&l.default.isIdentifier(s.name)&&s.initializer&&(l.default.isArrowFunction(s.initializer)||l.default.isFunctionExpression(s.initializer))?r(s.name.text,s.initializer):n&&l.default.isMethodDeclaration(s)&&l.default.isIdentifier(s.name)&&s.body?r(`${n}.${s.name.text}`,s):n&&l.default.isConstructorDeclaration(s)&&s.body?r(`${n}.constructor`,s):n&&l.default.isGetAccessorDeclaration(s)&&l.default.isIdentifier(s.name)&&s.body?r(`${n}.get ${s.name.text}`,s):n&&l.default.isSetAccessorDeclaration(s)&&l.default.isIdentifier(s.name)&&s.body&&r(`${n}.set ${s.name.text}`,s),l.default.isClassDeclaration(s)&&s.name){let o=s.name.text;l.default.forEachChild(s,a=>i(a,o));return}l.default.forEachChild(s,o=>i(o,n))};return i(t,void 0),e}function Ot(t,e,r,i){let s={name:t},n=Kt(r);n!==void 0&&(s.doc=n);let o=pr(e);o!==void 0&&(s.flags=o);let a=fr(e,i);return a!==void 0&&(s.signature=a),s}function Kt(t){let e=l.default.getJSDocCommentsAndTags(t);for(let r of e)if(l.default.isJSDoc(r)&&r.comment)return l.default.getTextOfJSDocComment(r.comment)||void 0}function pr(t){let e=new Set(["deprecated","internal","public","alpha","beta"]),r=l.default.getJSDocTags(t).map(i=>i.tagName.text).filter(i=>e.has(i));return r.length>0?r:void 0}function fr(t,e){let r=l.default.createPrinter({removeComments:!0}),i=s=>r.printNode(l.default.EmitHint.Unspecified,s,e);if(l.default.isFunctionDeclaration(t)||l.default.isMethodDeclaration(t)){let s=t.parameters.map(i).join(", "),n=t.type?i(t.type):"void";return`${t.typeParameters?`<${t.typeParameters.map(a=>a.name.text).join(", ")}>`:""}(${s}) => ${n}`}if(l.default.isVariableDeclaration(t)){if(t.type)return i(t.type);if(t.initializer&&(l.default.isArrowFunction(t.initializer)||l.default.isFunctionExpression(t.initializer))){let s=t.initializer,n=s.parameters.map(i).join(", "),o=s.type?i(s.type):"unknown";return`(${n}) => ${o}`}return}if(l.default.isClassDeclaration(t)&&t.name)return`class ${t.name.text}`;if(l.default.isInterfaceDeclaration(t))return`interface ${t.name.text}`;if(l.default.isTypeAliasDeclaration(t))return i(t.type);if(l.default.isEnumDeclaration(t))return`enum ${t.name.text}`}function ur(t,e){gr(t,e),dr(t,e),xr(t,e),hr(t,e),Er(t,e),Wt(t,e)}function gr(t,e){if(!l.default.isSourceFile(t))return;let r=t.statements.filter(i=>!l.default.isEmptyStatement(i));e.totalStatements=r.length,e.exportStatements=r.filter(i=>l.default.isExportDeclaration(i)||l.default.isExportAssignment(i)||nt(i)).length}function dr(t,e){if(l.default.isJsxElement(t)||l.default.isJsxSelfClosingElement(t)||l.default.isJsxFragment(t)){e.hasUI=!0,e.hasTypesOnly=!1;return}if(l.default.isFunctionDeclaration(t)||l.default.isMethodDeclaration(t)||l.default.isArrowFunction(t)||l.default.isClassDeclaration(t)||l.default.isVariableStatement(t)||l.default.isEnumDeclaration(t)){e.hasTypesOnly=!1;return}l.default.isExportDeclaration(t)&&!yr(t)&&(e.hasTypesOnly=!1)}function yr(t){return t.isTypeOnly?!0:!t.exportClause||!l.default.isNamedExports(t.exportClause)?!1:t.exportClause.elements.every(e=>e.isTypeOnly)}function xr(t,e){if(!l.default.isImportDeclaration(t)||!t.moduleSpecifier||!l.default.isStringLiteral(t.moduleSpecifier))return;let r=[];if(t.importClause&&(t.importClause.name&&r.push("default"),t.importClause.namedBindings))if(l.default.isNamedImports(t.importClause.namedBindings))for(let s of t.importClause.namedBindings.elements)r.push(s.name.text);else l.default.isNamespaceImport(t.importClause.namedBindings)&&r.push("*");let i=r.length>0?"static":"side-effect";e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:t.moduleSpecifier.text,isStyle:C(t.moduleSpecifier.text),type:i,symbols:r.length>0?r:void 0})}function hr(t,e){l.default.isExportDeclaration(t)?Sr(t,e):l.default.isExportAssignment(t)?e.exports.set("default",{name:"default"}):nt(t)&&Nr(t,e)}function Sr(t,e){if(t.moduleSpecifier&&l.default.isStringLiteral(t.moduleSpecifier))br(t,t.moduleSpecifier.text,e);else if(t.exportClause&&l.default.isNamedExports(t.exportClause))for(let r of t.exportClause.elements){let i=r.name.text;e.exports.set(i,{name:i})}}function br(t,e,r){let i=Cr(t),s={fromPath:r.filePath,toPath:"",rawSpecifier:e,isStyle:C(e),type:"re-export"};i.length>0&&(s.symbols=i),r.imports.push(s)}function Cr(t){return t.exportClause?l.default.isNamedExports(t.exportClause)?t.exportClause.elements.map(e=>e.name.text):[]:["*"]}function Nr(t,e){if((l.default.isFunctionDeclaration(t)||l.default.isClassDeclaration(t)||l.default.isInterfaceDeclaration(t)||l.default.isTypeAliasDeclaration(t)||l.default.isEnumDeclaration(t))&&t.name){let i=t.name.text;e.exports.set(i,Ot(i,t,t,e.sourceFile));return}if(l.default.isVariableStatement(t)){for(let i of t.declarationList.declarations)if(l.default.isIdentifier(i.name)){let s=i.name.text;e.exports.set(s,Ot(s,i,t,e.sourceFile))}}}function Er(t,e){if(!l.default.isCallExpression(t))return;let r=t.arguments[0];!r||!l.default.isStringLiteral(r)||(t.expression.kind===l.default.SyntaxKind.ImportKeyword?e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:r.text,isStyle:C(r.text),type:"dynamic"}):l.default.isIdentifier(t.expression)&&t.expression.text==="require"&&e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:r.text,isStyle:C(r.text),type:"require"}))}function wr(t,e){let r=it.default.basename(t).toLowerCase(),i=it.default.extname(t).toLowerCase();return H().some(n=>r.includes(n))?"test":Rt(r)?"config":e.imports.some(n=>Y().some(o=>n.rawSpecifier.includes(o)))?"test":i===".tsx"||i===".jsx"||e.hasUI?"ui":e.hasTypesOnly&&e.totalStatements>0?"type-only":e.totalStatements>0&&e.exportStatements/e.totalStatements>tt()?"barrel":"logic"}function nt(t){return l.default.canHaveModifiers(t)&&l.default.getModifiers(t)?.some(e=>e.kind===l.default.SyntaxKind.ExportKeyword)===!0}function vr(t,e){let r=t.rawCallEdges??[];t.rawCallEdges=r;let i=new Map;for(let s of e.statements){if(!l.default.isImportDeclaration(s)||!l.default.isStringLiteral(s.moduleSpecifier))continue;let n=s.moduleSpecifier.text,o=s.importClause;if(o&&(o.name&&i.set(o.name.text,n),o.namedBindings&&l.default.isNamedImports(o.namedBindings)))for(let a of o.namedBindings.elements)i.set(a.name.text,n)}if(i.size!==0)for(let s of e.statements){let n=Ir(s);if(n){let o=kr(s);o&&z(o,n,i,r);continue}l.default.isClassDeclaration(s)&&s.name&&Tr(s,s.name.text,i,r)}}function Tr(t,e,r,i){for(let s of t.members)l.default.isMethodDeclaration(s)&&s.body&&l.default.isIdentifier(s.name)?z(s.body,`${e}.${s.name.text}`,r,i):l.default.isConstructorDeclaration(s)&&s.body&&z(s.body,`${e}.constructor`,r,i)}function Ir(t){if(nt(t)){if(l.default.isFunctionDeclaration(t)&&t.name)return t.name.text;if(l.default.isVariableStatement(t)){for(let e of t.declarationList.declarations)if(l.default.isIdentifier(e.name)&&e.initializer&&(l.default.isArrowFunction(e.initializer)||l.default.isFunctionExpression(e.initializer)))return e.name.text}}}function kr(t){if(l.default.isFunctionDeclaration(t))return t.body;if(l.default.isVariableStatement(t)){for(let e of t.declarationList.declarations)if(e.initializer&&(l.default.isArrowFunction(e.initializer)||l.default.isFunctionExpression(e.initializer)))return e.initializer}}function z(t,e,r,i){if(l.default.isCallExpression(t)&&l.default.isIdentifier(t.expression)){let s=t.expression.text,n=r.get(s);n&&!i.some(o=>o.from===e&&o.to===s&&o.toSpecifier===n)&&i.push({from:e,to:s,toSpecifier:n})}l.default.forEachChild(t,s=>z(s,e,r,i))}function q(t,e){if(e.length===0)return"ui";let r=!1;return t.walk(i=>{if(i.type==="rule")return r=!0,!1}),r?"ui":"barrel"}var ot=S(require("postcss")),Fr=S(require("postcss-less")),Pr=Fr,jt=new Set(["reference","inline"]);function _t(t){return t.startsWith("~")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")||t.startsWith("data:")}function Dr(t){let e=t.trim();return e.length>0&&!e.startsWith("http://")&&!e.startsWith("https://")&&!e.startsWith("//")&&!e.startsWith("data:")&&!e.startsWith("#")}function Lr(t,e){let r=t.match(/^\(([^)]+)\)\s+['"]([^'"]+)['"]/);if(r){let n=r[1]?.trim()??"",o=r[2]??"";if(!o)return null;let a=jt.has(n)?"side-effect":"static";return{fromPath:e,toPath:"",rawSpecifier:o,isStyle:!0,type:a,..._t(o)?{isExternal:!0}:{}}}let i=t.match(/^url\(['"]?([^'")]+)['"]?\)/),s=i?i[1]?.trim()??"":t.match(/^['"]([^'"]+)['"]/)?.[1]??"";return s?{fromPath:e,toPath:"",rawSpecifier:s,isStyle:!0,type:"static",..._t(s)?{isExternal:!0}:{}}:null}function Ar(t,e){let r=[],i=/url\(['"]?([^'")]+)['"]?\)/g,s=i.exec(t);for(;s!==null;){let n=s[1]?.trim()??"";Dr(n)&&r.push({fromPath:e,toPath:"",rawSpecifier:n,isStyle:!0,type:"static"}),s=i.exec(t)}return r}function Vt(t,e){let r=[];return t.walk(i=>{if(i.type==="atrule"&&i.name==="import"){let s=Lr(i.params,e);s&&r.push(s)}i.type==="decl"&&r.push(...Ar(i.value,e))}),r}function Rr(t){return t.replace(/(?<!:)\/\/.*/g,"")}function Mr(t,e){let r=[],i=/@import\s+(?:\(([^)]+)\)\s+)?['"]([^'"]+)['"]/g,s=i.exec(t);for(;s!==null;){let n=s[1]?.trim()??"",o=s[2]??"";if(o){let a=jt.has(n)?"side-effect":"static";r.push({fromPath:e,toPath:"",rawSpecifier:o,isStyle:!0,type:a})}s=i.exec(t)}return r}function $t(t,e){let r=ot.default.parse(Rr(t));return{imports:Vt(r,e),root:r}}function Br(t){let e=[],r=[];for(let i of t.nodes??[]){if(i.type!=="atrule")continue;let{value:s}=i;if(s===void 0)continue;let n=i.name;n&&(e.push({name:n}),r.push({name:n,kind:"variable"}))}return{exports:e,tags:r}}function zt(t,e){try{let r=Pr.parse(t),{exports:i,tags:s}=Br(r);return{imports:Vt(r,e),root:r,exports:i,tags:s}}catch{return{imports:Mr(t,e),root:ot.default.parse(""),exports:[],tags:[]}}}var Jt=require("postcss-scss");function qt(t){return t.startsWith("_")||t.startsWith("-")}function Wr(t){return!!(t.startsWith("sass:")||t.startsWith("~")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")||!t.startsWith(".")&&!t.startsWith("/")&&!t.startsWith("_"))}function Or(t){let e=t.match(/^['"]([^'"]+)['"]/);if(!e?.[1])return{specifier:""};let r=e[1],s=t.match(/\bas\s+(\S+)/)?.[1];return s!==void 0?{specifier:r,alias:s}:{specifier:r}}function Kr(t){let e=[],r=[];for(let i of t.nodes??[]){if(i.type==="decl"&&i.prop.startsWith("$")){let s=i.prop.slice(1);if(!s||qt(s))continue;e.push({name:s}),r.push({name:s,kind:"variable"});continue}if(i.type==="atrule"&&(i.name==="mixin"||i.name==="function")){let n=i.params.match(/^([\w-]+)/)?.[1];if(!n||qt(n))continue;let o=i.params.trim();e.push(o.includes("(")?{name:n,signature:o}:{name:n}),r.push({name:n,kind:"function"})}}return{exports:e,tags:r}}function Gt(t,e){let r=(0,Jt.parse)(t),i=[];r.walk(o=>{if(o.type!=="atrule")return;let{name:a,params:c}=o;if(a!=="import"&&a!=="use"&&a!=="forward")return;let{specifier:m,alias:p}=Or(c);if(!m)return;let f={fromPath:e,toPath:"",rawSpecifier:m,isStyle:!0,type:a==="forward"?"re-export":"static",...Wr(m)?{isExternal:!0}:{}};p&&(f.symbols=[p]),i.push(f)});let{exports:s,tags:n}=Kr(r);return{imports:i,root:r,exports:s,tags:n}}function Qt(t,e){let r=[],i=/@require\s+['"]([^'"]+)['"]/g,s=i.exec(t);for(;s!==null;){let o=s[1];o&&r.push({fromPath:e,toPath:"",rawSpecifier:o,isStyle:!0,type:"require"}),s=i.exec(t)}let n=/(?<!@)(?:import|require)\s*\(?\s*['"]([^'"]+)['"]/g;for(s=n.exec(t);s!==null;){let o=s[1];o&&r.push({fromPath:e,toPath:"",rawSpecifier:o,isStyle:!0,type:"static"}),s=n.exec(t)}return r}function Ut(t,e){if(e.length===0)return"ui";try{let r=require("stylus");return new r.Parser(t).parse().nodes.some(n=>n.constructor.name!=="Import")?"ui":"barrel"}catch{return t.replace(/^\s*@?(?:require|import)\b.*/gm,"").trim().length>0?"ui":"barrel"}}function _(t,e){let r=B(t);if(r==="stylus"){let n=Qt(e,t);return{imports:n,exports:[],tags:[],category:Ut(e,n)}}if(r==="scss"){let{imports:n,root:o,exports:a,tags:c}=Gt(e,t);return{imports:n,exports:a,tags:c,category:q(o,n)}}if(r==="less"){let{imports:n,root:o,exports:a,tags:c}=zt(e,t);return{imports:n,exports:a,tags:c,category:q(o,n)}}let{imports:i,root:s}=$t(e,t);return{imports:i,exports:[],tags:[],category:q(s,i)}}for(let[t,e]of[["javascript",(r,i)=>st(r,i,"javascript")],["typescript",(r,i)=>st(r,i,"typescript")],["css",_],["scss",_],["less",_],["stylus",_],["coffeescript",pt],["livescript",Et],["lua",vt],["python",At],["go",Ct],["gherkin",Q],["markdown",kt]])W(t,e);async function Zt(t,e){let r=B(t),i=ut(r);return i?i(t,e):{imports:[],exports:[],tags:[],category:"other"}}function Xt(t){return Zt(t.filePath,t.content)}
|
|
1
|
+
"use strict";var he=Object.create;var U=Object.defineProperty;var Se=Object.getOwnPropertyDescriptor;var Ce=Object.getOwnPropertyNames;var be=Object.getPrototypeOf,Ne=Object.prototype.hasOwnProperty;var Ee=(t,e)=>{for(var r in e)U(t,r,{get:e[r],enumerable:!0})},St=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ce(e))!Ne.call(t,i)&&i!==r&&U(t,i,{get:()=>e[i],enumerable:!(s=Se(e,i))||s.enumerable});return t};var b=(t,e,r)=>(r=t!=null?he(be(t)):{},St(e||!t||!t.__esModule?U(r,"default",{value:t,enumerable:!0}):r,t)),we=t=>St(U({},"__esModule",{value:!0}),t);var Li={};Ee(Li,{default:()=>xe});module.exports=we(Li);var tt=b(require("path"));function J(t){switch(tt.default.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":return"java";case".kt":case".kts":return"kotlin";case".scala":case".sc":return"scala";case".groovy":case".gradle":return"groovy";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=tt.default.extname(t).toLowerCase();return[".css",".scss",".sass",".less",".styl"].includes(e)}var bt=b(require("coffeescript"));function k(t){return t.startsWith("'")||t.startsWith('"')?t.slice(1,-1):t}function O(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 B(t,e){let r=t.toLowerCase();return r.includes(".test.")||r.includes(".spec.")||e.has("test")?"test":"logic"}function Nt(t){if(t){if(typeof t.originalValue=="string")return t.originalValue;if(typeof t.value=="string")return k(t.value)}}function F(t){if(t){if(typeof t.value=="string")return t.value;if(typeof t.base?.value=="string")return t.base.value}}function ve(t,e){let r=Nt(e.source);return r?{fromPath:t,toPath:"",rawSpecifier:r,isStyle:N(r),type:"static"}:null}function ke(t,e){let r=e.variable?.base?.value==="require",s=Nt(e.args?.[0]?.base);return!r||!s?null:{fromPath:t,toPath:"",rawSpecifier:s,isStyle:N(s),type:"require"}}function Ct(t,e){if(e)return[{name:e}];let r=t.value;if(r?.constructor?.name==="Class"){let i=F(r.variable);return i?[{name:i}]:[]}if(r?.base?.constructor?.name==="Obj"&&Array.isArray(r.base.properties))return r.base.properties.map(i=>F(i.variable)??F(i)).filter(i=>!!i).map(i=>({name:i}));let s=F(r);return s?[{name:s}]:[]}function Ie(t){if(Array.isArray(t.specifiers))return t.specifiers.map(r=>r.identifier??r.original?.value).filter(r=>!!r).map(r=>({name:r}));let e=F(t.variable)??F(t.variable?.base);return e?[{name:e}]:[]}function Te(t,e,r,s){let i=e.constructor?.name;if(i==="ImportDeclaration"){let n=ve(t,e);n&&r.push(n)}else if(i==="Call"){let n=ke(t,e);n&&r.push(n)}else if(i==="Assign"){let n=F(e.variable?.base),o=e.variable?.properties?.[0]?.name?.value;n==="module"&&o==="exports"?s.push(...Ct(e,void 0)):n==="exports"&&typeof o=="string"&&s.push(...Ct(e,o))}else i==="ExportNamedDeclaration"&&e.clause?s.push(...Ie(e.clause)):i==="ExportDefaultDeclaration"&&s.push({name:"default"})}function et(t,e,r,s){if(!(!e||typeof e!="object")){Te(t,e,r,s);for(let i in e){if(i==="locationData")continue;let n=e[i];if(!(!n||typeof n!="object"))if(Array.isArray(n))for(let o of n)et(t,o,r,s);else et(t,n,r,s)}}}function Et(t,e){let r=O(e),s=B(t,r),i=[],n=[];try{et(t,bt.default.nodes(e),i,n)}catch{}let o=new Set,a=n.filter(c=>o.has(c.name)?!1:(o.add(c.name),!0));return{imports:i,exports:a,tags:Array.from(r).map(c=>({name:c,kind:"comment-marker"})),category:s}}var $=require("@cucumber/gherkin"),kt=require("@cucumber/messages");var wt=new Map;function q(t,e){wt.set(t,e)}function vt(t){return wt.get(t)}var Pe=kt.IdGenerator.uuid();function rt(t,e){let r=new Set,s=i=>{for(let n of i)r.add(n.name.startsWith("@")?n.name.slice(1):n.name)};try{let i=new $.AstBuilder(Pe),n=new $.GherkinClassicTokenMatcher,a=new $.Parser(i,n).parse(e);if(a.feature){s(a.feature.tags);for(let c of a.feature.children){if(c.scenario){s(c.scenario.tags);for(let l of c.scenario.examples)s(l.tags)}if(c.rule)for(let l of c.rule.children)l.scenario&&s(l.scenario.tags)}}}catch(i){console.warn(`[GherkinParser] Failed to parse ${t}:`,i)}return{imports:[],exports:[],tags:Array.from(r).map(i=>({name:i,kind:"comment-marker"})),category:"test"}}q("gherkin",rt);var Dt=b(require("path")),At=require("@lezer/go");function D(t){let e=[],r=t.firstChild;for(;r;)e.push(r),r=r.nextSibling;return e}function A(t,e){let r=1;for(let s=0;s<e&&s<t.length;s++)t[s]===`
|
|
2
|
+
`&&r++;return r}function Fe(t,e){let r=1;function s(i){switch(i.type.name){case"IfStatement":case"ForStatement":r++;break;case"Case":{i.firstChild?.type.name==="case"&&r++;break}case"LogicOp":{let o=e.slice(i.from,i.to);(o==="&&"||o==="||")&&r++;break}}let n=i.firstChild;for(;n;)s(n),n=n.nextSibling}return s(t),r}function Tt(t,e,r,s){let i=r?1:1+e,n=D(t),o=r?e:e+1,a=n[1];a&&a.type.name!=="Block"&&(i+=j(a,o,!1,s));let c=n.find(p=>p.type.name==="Block");c&&(i+=j(c,o,!1,s));let l=n.findIndex(p=>p.type.name==="else");if(l>=0){let p=n[l+1];p?.type.name==="IfStatement"?i+=Tt(p,e,!0,s):p&&(i+=1+j(p,e+1,!1,s))}return i}function It(t,e,r){let s=1+e,i=t.firstChild;for(;i;)s+=j(i,e+1,!1,r),i=i.nextSibling;return s}function De(t,e,r){let s=0,i=t.firstChild;for(;i;)s+=j(i,e,!1,r),i=i.nextSibling;return s}function Ae(t,e){let r=e.slice(t.from,t.to);return r==="&&"||r==="||"}function j(t,e,r,s){let i=t.type.name;if(i==="IfStatement")return Tt(t,e,r,s);if(i==="ForStatement"||i==="SwitchStatement"||i==="SelectStatement")return It(t,e,s);let n=i==="LogicOp"&&Ae(t,s)?1:0;return e>0&&i==="FunctionLiteral"?n+It(t,e,s):n+De(t,e,s)}function Le(t,e){return j(t,0,!1,e)}function Q(t,e){return{complexity:Fe(t,e),cognitiveComplexity:Le(t,e)}}function it(t,e){let s=t.getChild("Parameters")?.getChild("Parameter"),i=s?.getChild("TypeName")??s?.getChild("PointerType")?.getChild("TypeName");return i?e.slice(i.from,i.to):void 0}function Pt(t,e){let r=[],s=t.cursor();do if(s.name==="FunctionDecl"){let i=s.node.getChild("DefName");if(i){let n=e.slice(i.from,i.to),{complexity:o,cognitiveComplexity:a}=Q(s.node,e);r.push({name:n,line:A(e,s.from),complexity:o,cognitiveComplexity:a})}}else if(s.name==="MethodDecl"){let i=s.node.getChild("FieldName");if(i){let n=e.slice(i.from,i.to),o=it(s.node,e),a=o?`${o}.${n}`:n,{complexity:c,cognitiveComplexity:l}=Q(s.node,e);r.push({name:a,line:A(e,s.from),complexity:c,cognitiveComplexity:l})}}while(s.next());return r}var Re=/\/\/\s*@tag\s+([a-zA-Z0-9_-]+)/,Me=/^\/\/go:build\s+(.+)$/,_e=/^\/\/\s*\+build\s+(.+)$/;function Lt(t,e){let r=[],s=new Map,i=new Set,n=new Set,o=new Map,a=At.parser.parse(e),c=a.cursor();do switch(c.name){case"LineComment":{let C=e.slice(c.from,c.to),E=C.match(Re);E?.[1]&&i.add(E[1]);let M=C.match(Me);M&&Ft(M[1],n);let _=C.match(_e);_&&Ft(_[1],n);break}case"ImportSpec":{let C=c.node.getChild("String");if(C){let M=e.slice(C.from,C.to).slice(1,-1);r.push({fromPath:t,toPath:"",rawSpecifier:M,isExternal:!0,isStyle:!1,type:"static"});let _=c.node.getChild("DefName"),H=_?e.slice(_.from,_.to):M.split("/").pop();H&&H!=="_"&&H!=="."&&o.set(H,M)}break}case"FunctionDecl":case"MethodDecl":case"TypeDecl":case"VarDecl":case"ConstDecl":{let C=c.node.getChild("DefName")??c.node.getChild("FieldName")??c.node.getChild("TypeSpec")?.getChild("DefName")??c.node.getChild("VarSpec")?.getChild("DefName")??c.node.getChild("ConstSpec")?.getChild("DefName");if(C){let E=e.slice(C.from,C.to);E!=="_"&&/^[A-Z]/.test(E)&&!s.has(E)&&s.set(E,{name:E})}break}}while(c.next());let l=r.some(C=>C.rawSpecifier==="testing"),p=Dt.default.basename(t).endsWith("_test.go")||i.has("test")||l?"test":"logic",f=new Set([...i,...n]),{complexity:u,cognitiveComplexity:d}=Q(a.topNode,e),x=Pt(a,e),S=p==="test"?[]:Oe(a,e,o);return{imports:r,exports:Array.from(s.values()),tags:Array.from(f).map(C=>({name:C,kind:"comment-marker"})),category:p,rawCallEdges:S,complexity:u,cognitiveComplexity:d,...x.length>0?{functions:x}:{}}}function Oe(t,e,r){let s=[];function i(o,a){if(o.type.name==="CallExpr"){let l=o.firstChild;if(l?.type.name==="SelectorExpr"){let p=l.firstChild,f=l.getChild("FieldName");if(p?.type.name==="VariableName"&&f){let u=e.slice(p.from,p.to),d=r.get(u);if(d){let x=e.slice(f.from,f.to);s.push({from:a,to:x,toSpecifier:d})}}}}let c=o.firstChild;for(;c;)i(c,a),c=c.nextSibling}let n=t.cursor();do if(n.name==="FunctionDecl"){let o=n.node.getChild("DefName"),a=n.node.getChild("Block");if(o&&a){let c=e.slice(o.from,o.to);/^[A-Z]/.test(c)&&i(a,c)}}else if(n.name==="MethodDecl"){let o=n.node.getChild("FieldName"),a=n.node.getChild("Block");if(o&&a){let c=e.slice(o.from,o.to),l=it(n.node,e);i(a,l?`${l}.${c}`:c)}}while(n.next());return s}function Ft(t,e){for(let r of t.split(/[\s,&|!()]+/)){let s=r.trim();s&&s!=="ignore"&&e.add(s)}}var Be=/\/\/\s*@tag\s+([a-zA-Z0-9_-]+)/g,$e=["org.junit","androidx.test","org.robolectric","org.mockito","org.scalatest","munit","spock.lang","io.kotest","org.spekframework"];function W(t){let e=new Set;for(let r of t.matchAll(Be))r[1]&&e.add(r[1]);return e}function I(t){let e=t.replace(/\/\*[\s\S]*?\*\//g,r=>r.replace(/[^\n]/g," "));return e=e.replace(/\/\/[^\n]*/g,r=>" ".repeat(r.length)),e}function z(t){let e=I(t),r=new Set;for(let i of e.matchAll(/@([A-Z]\w*)/g))i[1]&&r.add(i[1]);let s=new Set;for(let i of e.matchAll(/\b(?:class|object|interface|trait|enum)\s+([A-Za-z_]\w*)/g))i[1]&&s.add(i[1]);return{annotations:[...r],typeNames:[...s]}}function K(t,e){return{fromPath:t,toPath:"",rawSpecifier:e,isExternal:!0,isStyle:!1,type:"static"}}function T(t,e){return{fromPath:t,toPath:"",rawSpecifier:`${e}.*`,isExternal:!0,isStyle:!1,type:"side-effect"}}function P(t,e){let r=[];for(let s of I(t).split(`
|
|
3
|
+
`)){let i=s.trim();if(!i||i.startsWith("@")||i.startsWith("*"))continue;let n=i.match(/^package\s+(?:object\s+)?([\w.]+)/);if(n?.[1]){if(r.push(n[1]),!e)break;continue}if(!(e&&/^import\s/.test(i)))break}return r.length>0?r.join("."):null}var je=new Set(["Configuration","SpringBootApplication","EnableAutoConfiguration"]),We=new Set(["Composable","Preview"]),ze=new Set(["RestController","Controller","Service","Repository","Component","Entity","MappedSuperclass","Embeddable"]),Ke=["Activity","Fragment","ViewModel","Screen","Composable"];function w(t,e,r={}){let s=t.replace(/\\/g,"/"),i=s.split("/").pop()??"";if(i.endsWith(".gradle")||i==="build.gradle.kts"||i==="settings.gradle.kts")return"config";if(/\/src\/(test|androidTest|integrationTest|it)\//.test(s)||e.some(o=>$e.some(a=>o===a||o.startsWith(`${a}.`))))return"test";let n=r.annotations??[];return n.some(o=>je.has(o))?"config":n.some(o=>We.has(o))||(r.typeNames??[]).some(o=>Ke.some(a=>o.endsWith(a)))?"ui":(n.some(o=>ze.has(o)),"logic")}var Ve=/^\s*import\s+(static\s+)?([\w.]+(?:\.\*)?)(?:\s+as\s+\w+)?\s*$/,Je=/^(?:@\w+\s+)*(?:public\s+|private\s+|protected\s+|final\s+|abstract\s+|static\s+)*(class|interface|trait|enum|def)\s+([A-Za-z_][A-Za-z0-9_]*)/;function qe(t,e){return t?e.endsWith(".*")?e.slice(0,-2)||null:e.split(".").slice(0,-1).join(".")||null:e||null}function Rt(t,e){let r=W(e),i=I(e).split(`
|
|
4
|
+
`),n=[],o=new Set;for(let l of i){let p=l.match(Ve);if(p?.[2]){let u=qe(!!p[1],p[2]);u&&n.push(K(t,u));continue}let f=l.match(Je);f?.[2]&&o.add(f[2])}let a=P(e,!1);a&&n.push(T(t,a));let c=Array.from(o,l=>({name:l}));return{imports:n,exports:c,tags:Array.from(r).map(l=>({name:l,kind:"comment-marker"})),category:w(t,n.map(l=>l.rawSpecifier),{typeNames:[...o],annotations:z(e).annotations})}}var Bt=require("@lezer/java");var Mt=new Set(["ForStatement","EnhancedForStatement","WhileStatement","DoStatement"]),Ze=new Set(["ClassDeclaration","InterfaceDeclaration","EnumDeclaration","RecordDeclaration","AnnotationTypeDeclaration"]);function Ge(t,e){let r=1;function s(i){let n=i.type.name;if(n==="IfStatement"||n==="CatchClause"||n==="TernaryExpression")r++;else if(Mt.has(n))r++;else if(n==="SwitchLabel")i.firstChild?.type.name==="case"&&r++;else if(n==="LogicOp"){let a=e.slice(i.from,i.to);(a==="&&"||a==="||")&&r++}let o=i.firstChild;for(;o;)s(o),o=o.nextSibling}return s(t),r}function _t(t,e,r,s){let i=r?1:1+e,n=[];for(let p=t.firstChild;p;p=p.nextSibling)n.push(p);let o=r?e:e+1,a=n[1];a&&a.type.name!=="Block"&&(i+=V(a,o,!1,s));let c=n.find(p=>p.type.name==="Block");c&&(i+=V(c,o,!1,s));let l=n.findIndex(p=>p.type.name==="else");if(l>=0){let p=n[l+1];p?.type.name==="IfStatement"?i+=_t(p,e,!0,s):p&&(i+=1+V(p,e+1,!1,s))}return i}function st(t,e,r){let s=1+e,i=t.firstChild;for(;i;)s+=V(i,e+1,!1,r),i=i.nextSibling;return s}function He(t,e,r){let s=0,i=t.firstChild;for(;i;)s+=V(i,e,!1,r),i=i.nextSibling;return s}function Ue(t,e){let r=e.slice(t.from,t.to);return r==="&&"||r==="||"}function V(t,e,r,s){let i=t.type.name;if(i==="IfStatement")return _t(t,e,r,s);if(Mt.has(i)||i==="SwitchStatement"||i==="CatchClause"||i==="TernaryExpression")return st(t,e,s);let n=i==="LogicOp"&&Ue(t,s)?1:0;return e>0&&i==="LambdaExpression"?n+st(t,e,s):n+He(t,e,s)}function Qe(t,e){return V(t,0,!1,e)}function nt(t,e){return{complexity:Ge(t,e),cognitiveComplexity:Qe(t,e)}}function ot(t,e){for(let r=t.parent;r;r=r.parent)if(Ze.has(r.type.name)){let s=r.getChild("Definition");if(s)return e.slice(s.from,s.to)}}function Ot(t,e){let r=[],s=t.cursor();do if(s.name==="MethodDeclaration"||s.name==="ConstructorDeclaration"){let i=s.node.getChild("Definition");if(i){let n=e.slice(i.from,i.to),o=ot(s.node,e),a=o&&s.name==="MethodDeclaration"?`${o}.${n}`:n,{complexity:c,cognitiveComplexity:l}=nt(s.node,e);r.push({name:a,line:A(e,s.from),complexity:c,cognitiveComplexity:l})}}while(s.next());return r}var Xe=/\/\/\s*@tag\s+([a-zA-Z0-9_-]+)/;function Ye(t,e){let r=t.getChild("ScopedIdentifier");if(!r)return null;let s=t.getChild("static")!=null,i=t.getChild("Asterisk")!=null,n=e.slice(r.from,r.to);return s?(i||(n=n.split(".").slice(0,-1).join(".")),n?{specifier:n,wildcard:!1}:null):i?{specifier:`${n}.*`,wildcard:!0}:{specifier:n,wildcard:!1}}function tr(t){let e=new Map;for(let r of t){if(r.type==="side-effect")continue;let s=r.rawSpecifier;if(s.endsWith(".*"))continue;let i=s.split(".").pop();i&&e.set(i,s)}return e}function er(t,e,r){let s=[];function i(o,a){let c=o.type.name;if(c==="MethodInvocation"){let p=o.firstChild;if(p?.type.name==="Identifier"){let f=r.get(e.slice(p.from,p.to)),u=o.getChild("MethodName");f&&u&&s.push({from:a,to:e.slice(u.from,u.to),toSpecifier:f})}}else if(c==="ObjectCreationExpression"){let p=o.getChild("TypeName");if(p){let f=r.get(e.slice(p.from,p.to));f&&s.push({from:a,to:"new",toSpecifier:f})}}let l=o.firstChild;for(;l;)i(l,a),l=l.nextSibling}let n=t.cursor();do if(n.name==="MethodDeclaration"||n.name==="ConstructorDeclaration"){let o=n.node.getChild("Definition"),a=n.node.getChild("Block")??n.node.getChild("ConstructorBody");if(o&&a){let c=e.slice(o.from,o.to),l=ot(n.node,e),p=l&&n.name==="MethodDeclaration"?`${l}.${c}`:c;i(a,p)}}while(n.next());return s}function $t(t,e){let r=[],s=new Map,i=new Set,n=new Set,o;try{o=Bt.parser.parse(e)}catch{return{imports:[],exports:[],tags:[],category:w(t,[])}}let a=o.cursor();do switch(a.name){case"LineComment":{let x=e.slice(a.from,a.to).match(Xe);x?.[1]&&i.add(x[1]);break}case"MarkerAnnotation":case"Annotation":{let x=a.node.getChild("Identifier");x&&n.add(e.slice(x.from,x.to));break}case"ImportDeclaration":{let x=Ye(a.node,e);x&&r.push({fromPath:t,toPath:"",rawSpecifier:x.specifier,isExternal:!0,isStyle:!1,type:"static"});break}case"ClassDeclaration":case"InterfaceDeclaration":case"EnumDeclaration":case"AnnotationTypeDeclaration":{if(a.node.parent?.name==="Program"){let x=a.node.getChild("Definition");if(x){let S=e.slice(x.from,x.to);s.has(S)||s.set(S,{name:S})}}break}}while(a.next());let c=P(e,!1);c&&r.push(T(t,c));let l=w(t,r.map(x=>x.rawSpecifier),{typeNames:[...s.keys()],annotations:[...n]}),{complexity:p,cognitiveComplexity:f}=nt(o.topNode,e),u=Ot(o,e),d=l==="test"?[]:er(o,e,tr(r));return{imports:r,exports:Array.from(s.values()),tags:Array.from(i).map(x=>({name:x,kind:"comment-marker"})),category:l,rawCallEdges:d,complexity:p,cognitiveComplexity:f,...u.length>0?{functions:u}:{}}}var rr=/^\s*import\s+([\w.]+(?:\.\*)?)(?:\s+as\s+\w+)?\s*$/,at="(?:public\\s+|internal\\s+|private\\s+|protected\\s+|open\\s+|abstract\\s+|final\\s+|sealed\\s+|data\\s+|value\\s+|inline\\s+|noinline\\s+|crossinline\\s+|external\\s+|expect\\s+|actual\\s+|suspend\\s+|operator\\s+|infix\\s+|tailrec\\s+|const\\s+|lateinit\\s+)*",ir=new RegExp(`^(?:@[\\w.]+(?:\\([^)]*\\))?\\s+)*${at}(?:(?:enum|annotation)\\s+)?(class|interface|object|typealias)\\s+([A-Za-z_][A-Za-z0-9_]*)`),sr=new RegExp(`^(?:@[\\w.]+(?:\\([^)]*\\))?\\s+)*${at}fun\\s+(?:<[^>]*>\\s*)?(?:[A-Za-z_][\\w.]*(?:<[^>]*>)?\\.)?([A-Za-z_][A-Za-z0-9_]*)\\s*[(<]`),nr=new RegExp(`^(?:@[\\w.]+(?:\\([^)]*\\))?\\s+)*${at}(?:val|var)\\s+(?:<[^>]*>\\s*)?([A-Za-z_][A-Za-z0-9_]*)`);function jt(t,e){let r=W(e),i=I(e).split(`
|
|
5
|
+
`),n=[],o=new Set;for(let l of i){let p=l.match(rr);if(p?.[1]){n.push(K(t,p[1]));continue}let f=l.match(ir);if(f?.[2]){o.add(f[2]);continue}let u=l.match(sr);if(u?.[1]){o.add(u[1]);continue}let d=l.match(nr);d?.[1]&&o.add(d[1])}let a=P(e,!1);a&&n.push(T(t,a));let c=Array.from(o,l=>({name:l}));return{imports:n,exports:c,tags:Array.from(r).map(l=>({name:l,kind:"comment-marker"})),category:w(t,n.map(l=>l.rawSpecifier),{typeNames:[...o],annotations:z(e).annotations})}}var Wt=b(require("livescript"));function L(t){if(t){if(typeof t.value=="string")return t.value;if(typeof t.base?.value=="string")return t.base.value}}function or(t){if(!t)return[];if(t.constructor?.name==="Class"){let r=L(t.title);return r?[{name:r}]:[]}if(t.constructor?.name==="Obj"&&Array.isArray(t.items))return t.items.map(r=>L(r.key)??L(r.val)).filter(r=>!!r).map(r=>({name:r}));let e=L(t);return e?[{name:e}]:[]}function ar(t){let e=t.constructor?.name||t.type;if(e==="Assign"&&t.left?.constructor?.name==="Chain"){let r=t.left,s=L(r.head),n=r.tails?.[0]?.key?.name;if(s==="module"&&n==="exports")return or(t.right);if(s==="exports"&&typeof n=="string")return[{name:n}];if(r.head?.verb==="out"&&typeof n=="string")return[{name:n}]}if(e==="Import"&&t.left?.verb==="out"){let r=t.right;if(r?.constructor?.name==="Obj"&&Array.isArray(r.items))return r.items.map(s=>L(s.val)??L(s.key)).filter(s=>!!s).map(s=>({name:s}))}return[]}var cr=new Set(["first_line","first_column","last_line","last_column","line","column"]);function lr(t,e){let r=t.constructor?.name||t.type;if(r==="Import"){let s=t.right?.value;if(typeof s=="string"){let i=k(s);return{fromPath:e,toPath:"",rawSpecifier:i,isStyle:N(i),type:"static"}}}if(r==="Chain"&&t.head?.value==="require"){let s=t.tails?.[0];if(s?.constructor?.name==="Call"||s?.type==="Call"){let i=s.args?.[0]?.value;if(typeof i=="string"){let n=k(i);return{fromPath:e,toPath:"",rawSpecifier:n,isStyle:N(n),type:"require"}}}}return null}function ct(t,e,r){if(!t||typeof t!="object")return[];let s=[],i=lr(t,e);i&&s.push(i),r.push(...ar(t));for(let n in t){if(cr.has(n))continue;let o=t[n];if(!(!o||typeof o!="object"))if(Array.isArray(o))for(let a of o)s.push(...ct(a,e,r));else s.push(...ct(o,e,r))}return s}function zt(t,e){let r=O(e),s=B(t,r),i=[],n=[];try{i=ct(Wt.default.ast(e),t,n)}catch{}let o=new Set,a=n.filter(c=>o.has(c.name)?!1:(o.add(c.name),!0));return{imports:i,exports:a,tags:Array.from(r).map(c=>({name:c,kind:"comment-marker"})),category:s}}var Kt=b(require("luaparse"));function mr(t,e){let r=[];function s(i){if(!(!i||typeof i!="object")){if((i.type==="CallExpression"||i.type==="StringCallExpression")&&i.base?.type==="Identifier"&&i.base?.name==="require"){let n;if(i.type==="CallExpression"){let o=i.arguments?.[0];o?.type==="StringLiteral"&&(n=k(o.raw))}else if(i.type==="StringCallExpression"){let o=i.argument;o?.type==="StringLiteral"&&(n=k(o.raw))}n&&r.push({fromPath:e,toPath:"",rawSpecifier:n,isStyle:N(n),type:"require"})}for(let n in i){if(n==="loc")continue;let o=i[n];if(o&&typeof o=="object")if(Array.isArray(o))for(let a of o)s(a);else s(o)}}}return s(t),r}function pr(t){let e=new Set;for(let r of t)r.type==="LocalStatement"&&r.variables.forEach((s,i)=>{r.init[i]?.type==="TableConstructorExpression"&&e.add(s.name)});return e}function fr(t){let e=t[t.length-1];if(e?.type!=="ReturnStatement")return[];let r=e.arguments[0];if(r?.type!=="TableConstructorExpression")return[];let s=[];for(let i of r.fields)i.type==="TableKeyString"&&s.push({name:i.key.name});return s}function ur(t){let e=t.body,r=pr(e),s=fr(e);for(let n of e)if(n.type==="FunctionDeclaration")n.identifier?.type==="MemberExpression"?n.identifier.base.type==="Identifier"&&r.has(n.identifier.base.name)&&s.push({name:n.identifier.identifier.name}):n.identifier?.type==="Identifier"&&!n.isLocal&&s.push({name:n.identifier.name});else if(n.type==="AssignmentStatement")for(let o of n.variables)o.type==="MemberExpression"&&o.base.type==="Identifier"&&r.has(o.base.name)&&s.push({name:o.identifier.name});let i=new Set;return s.filter(n=>i.has(n.name)?!1:(i.add(n.name),!0))}function Vt(t,e){let r=O(e),s=B(t,r),i=[],n=[];try{let o=Kt.default.parse(e);i=mr(o,t),n=ur(o)}catch{}return{imports:i,exports:n,tags:Array.from(r).map(o=>({name:o,kind:"comment-marker"})),category:s}}var gr=["http://","https://","mailto:","//"],dr="ts|tsx|js|jsx|mjs|cjs|py|go|lua|css|scss|less|styl|coffee|ls|feature|md|mdx|json",yr=new RegExp(`(?:\\.{1,2}/)?[\\w.-]+(?:/[\\w.-]+)*\\.(?:${dr})\\b`,"g"),Jt;async function xr(){return Jt??=(async()=>{let{unified:t}=await import("unified"),e=(await import("remark-parse")).default;return t().use(e)})(),Jt}function hr(t){let e=t.trim();return e.length===0||e.startsWith("#")||gr.some(r=>e.startsWith(r))}function Sr(t,e){let r=t.match(yr);return r?r.map(s=>({fromPath:e,toPath:"",rawSpecifier:s,isStyle:!1,type:"static"})):[]}function qt(t,e,r){if(t.type==="link"&&typeof t.url=="string"&&!hr(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(...Sr(t.value,e)),Array.isArray(t.children))for(let s of t.children)qt(s,e,r)}async function Zt(t,e){let s=(await xr()).parse(e),i=[];qt(s,t,i);let n=new Set;return{imports:i.filter(a=>n.has(a.rawSpecifier)?!1:(n.add(a.rawSpecifier),!0)),exports:[],tags:[],category:"other"}}var Ut=b(require("path")),Qt=require("@lezer/python");function Cr(t){let e=1;function r(s){switch(s.type.name){case"IfStatement":{e+=D(s).filter(n=>n.type.name==="if"||n.type.name==="elif").length;break}case"TryStatement":{e+=D(s).filter(n=>n.type.name==="except").length;break}case"ForStatement":case"WhileStatement":case"ConditionalExpression":e++;break;case"and":case"or":e++;break}let i=s.firstChild;for(;i;)r(i),i=i.nextSibling}return r(t),e}function br(t,e){let r=0,s=D(t),i=0,n=0;for(;n<s.length;){let o=s[n];if(o?.type.name==="if"||o?.type.name==="elif"){let a=i>0;r+=a?1:1+e;let c=a?e:e+1,l=s[n+1],p=s[n+2];l&&(r+=v(l,c)),p&&(r+=v(p,c)),i++,n+=3}else if(o?.type.name==="else"){r+=1;let a=s[n+1];a&&(r+=v(a,e+1)),n+=2}else n++}return r}function Nr(t,e){let r=0,s=D(t),i=0;for(;i<s.length;){let n=s[i];if(n?.type.name==="except"){for(r+=1+e,i++;i<s.length&&s[i]?.type.name!=="Body";)r+=v(s[i],e),i++;i<s.length&&(r+=v(s[i],e),i++)}else n?.type.name==="Body"&&(r+=v(n,e)),i++}return r}function Gt(t,e){let r=1+e,s=t.firstChild;for(;s;)r+=v(s,e+1),s=s.nextSibling;return r}function Er(t,e){let r=0,s=t.firstChild;for(;s;)r+=v(s,e),s=s.nextSibling;return r}function v(t,e){let r=t.type.name;switch(r){case"IfStatement":return br(t,e);case"TryStatement":return Nr(t,e);case"ForStatement":case"WhileStatement":return Gt(t,e);default:{let s=r==="ConditionalExpression"||r==="and"||r==="or"?1:0;return e>0&&(r==="FunctionDefinition"||r==="LambdaExpression")?s+Gt(t,e):s+Er(t,e)}}}function wr(t){return v(t,0)}function lt(t){return{complexity:Cr(t),cognitiveComplexity:wr(t)}}function Ht(t,e){let r=[];function s(o,a){let{complexity:c,cognitiveComplexity:l}=lt(o);r.push({name:a,line:A(e,o.from),complexity:c,cognitiveComplexity:l})}function i(o){let a=o.firstChild;for(;a;)n(a),a=a.nextSibling}function n(o){if(o.type.name==="ClassDefinition"){let a=o.getChild("VariableName"),c=a?e.slice(a.from,a.to):void 0,l=o.getChild("Body");if(l){let p=l.firstChild;for(;p;){if(p.type.name==="FunctionDefinition"){let f=p.getChild("VariableName"),u=f?e.slice(f.from,f.to):void 0;u&&s(p,c?`${c}.${u}`:u),i(p)}else n(p);p=p.nextSibling}}return}if(o.type.name==="FunctionDefinition"){let a=o.getChild("VariableName");a&&s(o,e.slice(a.from,a.to)),i(o);return}i(o)}return n(t.topNode),r}var vr=new Set(["pytest","unittest","nose","hypothesis"]);function Xt(t,e){let r=[],s=[],i=new Set,n=Ut.default.basename(t).toLowerCase(),o=Qt.parser.parse(e),a=o.cursor();do switch(a.name){case"Comment":{let d=e.slice(a.from,a.to).match(/#\s*@tag\s+([a-zA-Z0-9_-]+)/);d?.[1]&&i.add(d[1]);break}case"ImportStatement":{for(let d of kr(a.node,e,t))r.push(d);break}case"FunctionDefinition":case"ClassDefinition":{let d=a.node.parent;if(d?.name==="Script"||d?.name==="DecoratedStatement"&&d.parent?.name==="Script"){let S=a.node.getChild("VariableName");S&&s.push({name:e.slice(S.from,S.to)})}break}case"AssignStatement":{if(a.node.parent?.name==="Script"){let d=a.node.firstChild;d?.name==="VariableName"&&s.push({name:e.slice(d.from,d.to)})}break}}while(a.next());let c=Ar(n,r,i);c==="test"&&i.add("test");let{complexity:l,cognitiveComplexity:p}=lt(o.topNode),f=Ht(o,e),u=c==="test"?[]:Dr(o,e);return{imports:r,exports:s,tags:Array.from(i).map(d=>({name:d,kind:"comment-marker"})),category:c,rawCallEdges:u,complexity:l,cognitiveComplexity:p,...f.length>0?{functions:f}:{}}}function kr(t,e,r){let s=t.firstChild;return s?s.name==="from"?Ir(t,e,r):Tr(t,e,r):[]}function Ir(t,e,r){let s=t.firstChild;if(!s)return[];let i=s.nextSibling;for(;i&&i.name!=="import";)i=i.nextSibling;if(!i)return[];let n=e.slice(s.to,i.from).trim(),o=Pr(i.nextSibling,e);if(!o.length)return[];let a=0;for(;a<n.length&&n[a]===".";)a++;let c=n.slice(a);if(a===0)return[Z(r,n,o,!0)];let l=a===1?"./":"../".repeat(a-1);return c?[Z(r,l+c.replace(/\./g,"/"),o,!1)]:o[0]==="*"?[Z(r,l.slice(0,-1),["*"],!1)]:o.map(p=>Z(r,l+p,[p],!1))}function Tr(t,e,r){let s=[],i=t.firstChild?.nextSibling??null;for(;i;){if(i.name==="VariableName"){let n=e.slice(i.from,i.to);for(;i.nextSibling?.name==="."&&i.nextSibling.nextSibling?.name==="VariableName";)i=i.nextSibling.nextSibling,n+=`.${e.slice(i.from,i.to)}`;i.nextSibling?.name==="as"&&(i=i.nextSibling.nextSibling??i.nextSibling),s.push(Z(r,n,["*"],!0))}i=i.nextSibling}return s}function Pr(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 Fr(t,e){let r=new Map,s=t.cursor();do{if(s.name!=="ImportStatement")continue;let n=s.node.firstChild;if(n?.type.name!=="from")continue;let o=n.nextSibling;for(;o&&o.type.name!=="import";)o=o.nextSibling;if(!o)continue;let a=e.slice(n.to,o.from).trim(),c=0;for(;c<a.length&&a[c]===".";)c++;let l=a.slice(c),p=c<=1?"./":"../".repeat(c-1),f=o.nextSibling;for(;f;){if(f.type.name==="VariableName"){let u=e.slice(f.from,f.to),d=u;if(f.nextSibling?.type.name==="as"){let S=f.nextSibling.nextSibling;S?.type.name==="VariableName"&&(d=e.slice(S.from,S.to),f=S)}let x=c===0?a:l?p+l.replace(/\./g,"/"):p+u;r.set(d,x)}f=f.nextSibling}}while(s.next());return r}function Dr(t,e){let r=Fr(t,e),s=[];function i(a,c){if(a.type.name==="CallExpression"&&a.firstChild?.type.name==="VariableName"){let p=a.firstChild,f=e.slice(p.from,p.to),u=r.get(f);u&&s.push({from:c,to:f,toSpecifier:u})}let l=a.firstChild;for(;l;)i(l,c),l=l.nextSibling}function n(a){let c=a.firstChild;for(;c;)o(c),c=c.nextSibling}function o(a){if(a.type.name==="ClassDefinition"){let c=a.getChild("VariableName"),l=c?e.slice(c.from,c.to):void 0,p=a.getChild("Body");if(p){let f=p.firstChild;for(;f;){if(f.type.name==="FunctionDefinition"){let u=f.getChild("VariableName"),d=u?e.slice(u.from,u.to):void 0;d&&i(f,l?`${l}.${d}`:d)}else o(f);f=f.nextSibling}}return}if(a.type.name==="FunctionDefinition"){let c=a.getChild("VariableName");c&&i(a,e.slice(c.from,c.to));return}n(a)}return o(t.topNode),s}function Z(t,e,r,s){return{fromPath:t,toPath:"",rawSpecifier:e,isStyle:!1,isExternal:s,type:"static",symbols:r.length>0?r:void 0}}function Ar(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=>vr.has(s.rawSpecifier))?"test":"logic"}var Lr=/^\s*import\s+(.+?)\s*$/,Rr=/^(?:@\w+\s+)*(?:private\s+|protected\s+|final\s+|sealed\s+|abstract\s+|implicit\s+|case\s+)*(class|trait|object|type|enum)\s+([A-Za-z_$][A-Za-z0-9_$]*)/;function Mr(t,e){let r=e.split("=>")[0]?.trim();return r?r==="_"||r==="*"||r==="given"?`${t}.*`:`${t}.${r}`:null}function _r(t){let e=t.indexOf("{");if(e!==-1){let s=t.indexOf("}",e),i=t.slice(0,e).trim().replace(/\.$/,""),n=t.slice(e+1,s===-1?void 0:s);return i?n.split(",").map(o=>Mr(i,o.trim())).filter(o=>o!=null):[]}let r=[];for(let s of t.split(",")){let i=s.trim().replace(/\s+as\s+\w+$/,"");if(i)if(i.endsWith("._")||i.endsWith(".*")||i.endsWith(".given")){let n=i.replace(/\.(_|\*|given)$/,"");n&&r.push(`${n}.*`)}else r.push(i)}return r}function Yt(t,e){let r=W(e),i=I(e).split(`
|
|
6
|
+
`),n=[],o=new Set;for(let l of i){let p=l.match(Lr);if(p?.[1]){for(let u of _r(p[1]))n.push(K(t,u));continue}let f=l.match(Rr);f?.[2]&&o.add(f[2])}let a=P(e,!0);a&&n.push(T(t,a));let c=Array.from(o,l=>({name:l}));return{imports:n,exports:c,tags:Array.from(r).map(l=>({name:l,kind:"comment-marker"})),category:w(t,n.map(l=>l.rawSpecifier),{typeNames:[...o],annotations:z(e).annotations})}}var dt=b(require("path")),m=b(require("typescript"));var Or=[".config.","biome.json","tsconfig.json","package.json",".prettierrc",".eslintrc"],Br=[];function te(t){return[...Or,...Br].some(e=>typeof e=="string"?t.includes(e):e instanceof RegExp?e.test(t):e(t))}var $r=[".test.",".spec.","-test.","-spec."],jr=[];function mt(){return[...$r,...jr]}var Wr=["jest","vitest","playwright","cypress","@testing-library/"],zr=[];function pt(){return[...Wr,...zr]}var Kr=.8,Vr=Kr;function ft(){return Vr}var g=b(require("typescript"));function Jr(t){let e=1;function r(s){switch(s.kind){case g.default.SyntaxKind.IfStatement:case g.default.SyntaxKind.ConditionalExpression:case g.default.SyntaxKind.ForStatement:case g.default.SyntaxKind.ForInStatement:case g.default.SyntaxKind.ForOfStatement:case g.default.SyntaxKind.WhileStatement:case g.default.SyntaxKind.DoStatement:case g.default.SyntaxKind.CatchClause:case g.default.SyntaxKind.CaseClause:e++;break;case g.default.SyntaxKind.BinaryExpression:{let i=s.operatorToken.kind;(i===g.default.SyntaxKind.AmpersandAmpersandToken||i===g.default.SyntaxKind.BarBarToken||i===g.default.SyntaxKind.QuestionQuestionToken)&&e++;break}}g.default.forEachChild(s,r)}return r(t),e}function re(t,e,r){let s=r?1:1+e,i=r?e:e+1;return s+=R(t.expression,i,!1),s+=R(t.thenStatement,i,!1),t.elseStatement&&(g.default.isIfStatement(t.elseStatement)?s+=re(t.elseStatement,e,!0):s+=1+R(t.elseStatement,e+1,!1)),s}function ee(t,e){let r=1+e;return g.default.forEachChild(t,s=>{r+=R(s,e+1,!1)}),r}function qr(t,e){let r=1+e;return g.default.forEachChild(t,s=>{r+=R(s,e,!1)}),r}function Zr(t,e){let r=0;return g.default.forEachChild(t,s=>{r+=R(s,e,!1)}),r}function Gr(t){let e=t.operatorToken.kind;return e===g.default.SyntaxKind.AmpersandAmpersandToken||e===g.default.SyntaxKind.BarBarToken||e===g.default.SyntaxKind.QuestionQuestionToken}function R(t,e,r){if(g.default.isIfStatement(t))return re(t,e,r);if(g.default.isForStatement(t)||g.default.isForInStatement(t)||g.default.isForOfStatement(t)||g.default.isWhileStatement(t)||g.default.isDoStatement(t)||g.default.isSwitchStatement(t))return ee(t,e);if(g.default.isCatchClause(t))return qr(t,e);let s=0;return g.default.isConditionalExpression(t)&&(s+=1),g.default.isBinaryExpression(t)&&Gr(t)&&(s+=1),e>0&&(g.default.isFunctionDeclaration(t)||g.default.isFunctionExpression(t)||g.default.isArrowFunction(t))?s+ee(t,e):s+Zr(t,e)}function Hr(t){return R(t,0,!1)}function ut(t){return{complexity:Jr(t),cognitiveComplexity:Hr(t)}}var h=b(require("typescript")),gt=new Set(["test","describe","it"]);function ie(t,e){Ur(t,e),Xr(t,e),Yr(t,e),ti(t,e)}function Ur(t,e){if((h.default.isFunctionDeclaration(t)||h.default.isVariableDeclaration(t))&&t.name&&h.default.isIdentifier(t.name)&&Qr(t)){let r;if(h.default.isFunctionDeclaration(t))r="function";else{let s=t.initializer;r=s&&(h.default.isArrowFunction(s)||h.default.isFunctionExpression(s))?"function":"variable"}e.tags.add({name:t.name.text,kind:r})}}function Qr(t){if(h.default.isFunctionDeclaration(t))return h.default.isSourceFile(t.parent);let e=t.parent?.parent;return!!e&&h.default.isSourceFile(e.parent)}function Xr(t,e){if(!h.default.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 Yr(t,e){if(!h.default.isSourceFile(t))return;let r=/@tag\s+([a-zA-Z0-9_-]+)/g,s=t.getFullText(),i=r.exec(s);for(;i!==null;)i[1]&&e.tags.add({name:i[1],kind:"comment-marker"}),i=r.exec(s)}function ti(t,e){if(h.default.isCallExpression(t)&&ei(t.expression))for(let r of t.arguments)h.default.isObjectLiteralExpression(r)&&ri(r,e)}function ei(t){return h.default.isIdentifier(t)?gt.has(t.text):!!(h.default.isPropertyAccessExpression(t)&&(gt.has(t.name.text)||h.default.isIdentifier(t.expression)&>.has(t.expression.text)))}function ri(t,e){for(let r of t.properties){if(!h.default.isPropertyAssignment(r)||!h.default.isIdentifier(r.name)||r.name.text!=="tags"&&r.name.text!=="tag")continue;let{initializer:s}=r,i=h.default.isArrayLiteralExpression(s)?s.elements.filter(h.default.isStringLiteral):r.name.text==="tag"&&h.default.isStringLiteral(s)?[s]:[];for(let n of i)e.tags.add({name:n.text.replace(/^@/,""),kind:"comment-marker"})}}function yt(t,e,r){let s=[],i=new Map,n=new Set,o=m.default.createSourceFile(t,e,m.default.ScriptTarget.Latest,!0,r==="typescript"?m.default.ScriptKind.TSX:m.default.ScriptKind.JSX),a={filePath:t,imports:s,exports:i,tags:n,rawCallEdges:[],sourceFile:o,hasUI:!1,hasTypesOnly:!0,totalStatements:0,exportStatements:0},c=S=>{oi(S,a),m.default.forEachChild(S,c)};c(o);let l=xi(t,a);(l==="test"||l==="barrel")&&n.add({name:l,kind:"comment-marker"}),l!=="test"&&hi(a,o);let p=o.statements[0],f=p?ne(p):void 0,{complexity:u,cognitiveComplexity:d}=ut(o),x=ii(o);return{imports:s,exports:Array.from(i.values()),tags:Array.from(n),category:l,rawCallEdges:a.rawCallEdges??[],complexity:u,cognitiveComplexity:d,...x.length>0?{functions:x}:{},...f!==void 0?{description:f}:{}}}function ii(t){let e=[],r=(i,n)=>{let{complexity:o,cognitiveComplexity:a}=ut(n),c=t.getLineAndCharacterOfPosition(n.getStart(t)).line+1;e.push({name:i,line:c,complexity:o,cognitiveComplexity:a})},s=(i,n)=>{if(m.default.isFunctionDeclaration(i)&&i.name&&i.body?r(i.name.text,i):m.default.isVariableDeclaration(i)&&m.default.isIdentifier(i.name)&&i.initializer&&(m.default.isArrowFunction(i.initializer)||m.default.isFunctionExpression(i.initializer))?r(i.name.text,i.initializer):n&&m.default.isMethodDeclaration(i)&&m.default.isIdentifier(i.name)&&i.body?r(`${n}.${i.name.text}`,i):n&&m.default.isConstructorDeclaration(i)&&i.body?r(`${n}.constructor`,i):n&&m.default.isGetAccessorDeclaration(i)&&m.default.isIdentifier(i.name)&&i.body?r(`${n}.get ${i.name.text}`,i):n&&m.default.isSetAccessorDeclaration(i)&&m.default.isIdentifier(i.name)&&i.body&&r(`${n}.set ${i.name.text}`,i),m.default.isClassDeclaration(i)&&i.name){let o=i.name.text;m.default.forEachChild(i,a=>s(a,o));return}m.default.forEachChild(i,o=>s(o,n))};return s(t,void 0),e}function se(t,e,r,s){let i={name:t},n=ne(r);n!==void 0&&(i.doc=n);let o=si(e);o!==void 0&&(i.flags=o);let a=ni(e,s);return a!==void 0&&(i.signature=a),i}function ne(t){let e=m.default.getJSDocCommentsAndTags(t);for(let r of e)if(m.default.isJSDoc(r)&&r.comment)return m.default.getTextOfJSDocComment(r.comment)||void 0}function si(t){let e=new Set(["deprecated","internal","public","alpha","beta"]),r=m.default.getJSDocTags(t).map(s=>s.tagName.text).filter(s=>e.has(s));return r.length>0?r:void 0}function ni(t,e){let r=m.default.createPrinter({removeComments:!0}),s=i=>r.printNode(m.default.EmitHint.Unspecified,i,e);if(m.default.isFunctionDeclaration(t)||m.default.isMethodDeclaration(t)){let i=t.parameters.map(s).join(", "),n=t.type?s(t.type):"void";return`${t.typeParameters?`<${t.typeParameters.map(a=>a.name.text).join(", ")}>`:""}(${i}) => ${n}`}if(m.default.isVariableDeclaration(t)){if(t.type)return s(t.type);if(t.initializer&&(m.default.isArrowFunction(t.initializer)||m.default.isFunctionExpression(t.initializer))){let i=t.initializer,n=i.parameters.map(s).join(", "),o=i.type?s(i.type):"unknown";return`(${n}) => ${o}`}return}if(m.default.isClassDeclaration(t)&&t.name)return`class ${t.name.text}`;if(m.default.isInterfaceDeclaration(t))return`interface ${t.name.text}`;if(m.default.isTypeAliasDeclaration(t))return s(t.type);if(m.default.isEnumDeclaration(t))return`enum ${t.name.text}`}function oi(t,e){ai(t,e),ci(t,e),mi(t,e),pi(t,e),yi(t,e),ie(t,e)}function ai(t,e){if(!m.default.isSourceFile(t))return;let r=t.statements.filter(s=>!m.default.isEmptyStatement(s));e.totalStatements=r.length,e.exportStatements=r.filter(s=>m.default.isExportDeclaration(s)||m.default.isExportAssignment(s)||xt(s)).length}function ci(t,e){if(m.default.isJsxElement(t)||m.default.isJsxSelfClosingElement(t)||m.default.isJsxFragment(t)){e.hasUI=!0,e.hasTypesOnly=!1;return}if(m.default.isFunctionDeclaration(t)||m.default.isMethodDeclaration(t)||m.default.isArrowFunction(t)||m.default.isClassDeclaration(t)||m.default.isVariableStatement(t)||m.default.isEnumDeclaration(t)){e.hasTypesOnly=!1;return}m.default.isExportDeclaration(t)&&!li(t)&&(e.hasTypesOnly=!1)}function li(t){return t.isTypeOnly?!0:!t.exportClause||!m.default.isNamedExports(t.exportClause)?!1:t.exportClause.elements.every(e=>e.isTypeOnly)}function mi(t,e){if(!m.default.isImportDeclaration(t)||!t.moduleSpecifier||!m.default.isStringLiteral(t.moduleSpecifier))return;let r=[];if(t.importClause&&(t.importClause.name&&r.push("default"),t.importClause.namedBindings))if(m.default.isNamedImports(t.importClause.namedBindings))for(let i of t.importClause.namedBindings.elements)r.push(i.name.text);else m.default.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 pi(t,e){m.default.isExportDeclaration(t)?fi(t,e):m.default.isExportAssignment(t)?e.exports.set("default",{name:"default"}):xt(t)&&di(t,e)}function fi(t,e){if(t.moduleSpecifier&&m.default.isStringLiteral(t.moduleSpecifier))ui(t,t.moduleSpecifier.text,e);else if(t.exportClause&&m.default.isNamedExports(t.exportClause))for(let r of t.exportClause.elements){let s=r.name.text;e.exports.set(s,{name:s})}}function ui(t,e,r){let s=gi(t),i={fromPath:r.filePath,toPath:"",rawSpecifier:e,isStyle:N(e),type:"re-export"};s.length>0&&(i.symbols=s),r.imports.push(i)}function gi(t){return t.exportClause?m.default.isNamedExports(t.exportClause)?t.exportClause.elements.map(e=>e.name.text):[]:["*"]}function di(t,e){if((m.default.isFunctionDeclaration(t)||m.default.isClassDeclaration(t)||m.default.isInterfaceDeclaration(t)||m.default.isTypeAliasDeclaration(t)||m.default.isEnumDeclaration(t))&&t.name){let s=t.name.text;e.exports.set(s,se(s,t,t,e.sourceFile));return}if(m.default.isVariableStatement(t)){for(let s of t.declarationList.declarations)if(m.default.isIdentifier(s.name)){let i=s.name.text;e.exports.set(i,se(i,s,t,e.sourceFile))}}}function yi(t,e){if(!m.default.isCallExpression(t))return;let r=t.arguments[0];!r||!m.default.isStringLiteral(r)||(t.expression.kind===m.default.SyntaxKind.ImportKeyword?e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:r.text,isStyle:N(r.text),type:"dynamic"}):m.default.isIdentifier(t.expression)&&t.expression.text==="require"&&e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:r.text,isStyle:N(r.text),type:"require"}))}function xi(t,e){let r=dt.default.basename(t).toLowerCase(),s=dt.default.extname(t).toLowerCase();return mt().some(n=>r.includes(n))?"test":te(r)?"config":e.imports.some(n=>pt().some(o=>n.rawSpecifier.includes(o)))?"test":s===".tsx"||s===".jsx"||e.hasUI?"ui":e.hasTypesOnly&&e.totalStatements>0?"type-only":e.totalStatements>0&&e.exportStatements/e.totalStatements>ft()?"barrel":"logic"}function xt(t){return m.default.canHaveModifiers(t)&&m.default.getModifiers(t)?.some(e=>e.kind===m.default.SyntaxKind.ExportKeyword)===!0}function hi(t,e){let r=t.rawCallEdges??[];t.rawCallEdges=r;let s=new Map;for(let i of e.statements){if(!m.default.isImportDeclaration(i)||!m.default.isStringLiteral(i.moduleSpecifier))continue;let n=i.moduleSpecifier.text,o=i.importClause;if(o&&(o.name&&s.set(o.name.text,n),o.namedBindings&&m.default.isNamedImports(o.namedBindings)))for(let a of o.namedBindings.elements)s.set(a.name.text,n)}if(s.size!==0)for(let i of e.statements){let n=Ci(i);if(n){let o=bi(i);o&&X(o,n,s,r);continue}m.default.isClassDeclaration(i)&&i.name&&Si(i,i.name.text,s,r)}}function Si(t,e,r,s){for(let i of t.members)m.default.isMethodDeclaration(i)&&i.body&&m.default.isIdentifier(i.name)?X(i.body,`${e}.${i.name.text}`,r,s):m.default.isConstructorDeclaration(i)&&i.body&&X(i.body,`${e}.constructor`,r,s)}function Ci(t){if(xt(t)){if(m.default.isFunctionDeclaration(t)&&t.name)return t.name.text;if(m.default.isVariableStatement(t)){for(let e of t.declarationList.declarations)if(m.default.isIdentifier(e.name)&&e.initializer&&(m.default.isArrowFunction(e.initializer)||m.default.isFunctionExpression(e.initializer)))return e.name.text}}}function bi(t){if(m.default.isFunctionDeclaration(t))return t.body;if(m.default.isVariableStatement(t)){for(let e of t.declarationList.declarations)if(e.initializer&&(m.default.isArrowFunction(e.initializer)||m.default.isFunctionExpression(e.initializer)))return e.initializer}}function X(t,e,r,s){if(m.default.isCallExpression(t)&&m.default.isIdentifier(t.expression)){let i=t.expression.text,n=r.get(i);n&&!s.some(o=>o.from===e&&o.to===i&&o.toSpecifier===n)&&s.push({from:e,to:i,toSpecifier:n})}m.default.forEachChild(t,i=>X(i,e,r,s))}function Y(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 ht=b(require("postcss")),Ni=b(require("postcss-less")),Ei=Ni,ae=new Set(["reference","inline"]);function oe(t){return t.startsWith("~")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")||t.startsWith("data:")}function wi(t){let e=t.trim();return e.length>0&&!e.startsWith("http://")&&!e.startsWith("https://")&&!e.startsWith("//")&&!e.startsWith("data:")&&!e.startsWith("#")}function vi(t,e){let r=t.match(/^\(([^)]+)\)\s+['"]([^'"]+)['"]/);if(r){let n=r[1]?.trim()??"",o=r[2]??"";if(!o)return null;let a=ae.has(n)?"side-effect":"static";return{fromPath:e,toPath:"",rawSpecifier:o,isStyle:!0,type:a,...oe(o)?{isExternal:!0}:{}}}let s=t.match(/^url\(['"]?([^'")]+)['"]?\)/),i=s?s[1]?.trim()??"":t.match(/^['"]([^'"]+)['"]/)?.[1]??"";return i?{fromPath:e,toPath:"",rawSpecifier:i,isStyle:!0,type:"static",...oe(i)?{isExternal:!0}:{}}:null}function ki(t,e){let r=[],s=/url\(['"]?([^'")]+)['"]?\)/g,i=s.exec(t);for(;i!==null;){let n=i[1]?.trim()??"";wi(n)&&r.push({fromPath:e,toPath:"",rawSpecifier:n,isStyle:!0,type:"static"}),i=s.exec(t)}return r}function ce(t,e){let r=[];return t.walk(s=>{if(s.type==="atrule"&&s.name==="import"){let i=vi(s.params,e);i&&r.push(i)}s.type==="decl"&&r.push(...ki(s.value,e))}),r}function Ii(t){return t.replace(/(?<!:)\/\/.*/g,"")}function Ti(t,e){let r=[],s=/@import\s+(?:\(([^)]+)\)\s+)?['"]([^'"]+)['"]/g,i=s.exec(t);for(;i!==null;){let n=i[1]?.trim()??"",o=i[2]??"";if(o){let a=ae.has(n)?"side-effect":"static";r.push({fromPath:e,toPath:"",rawSpecifier:o,isStyle:!0,type:a})}i=s.exec(t)}return r}function le(t,e){let r=ht.default.parse(Ii(t));return{imports:ce(r,e),root:r}}function Pi(t){let e=[],r=[];for(let s of t.nodes??[]){if(s.type!=="atrule")continue;let{value:i}=s;if(i===void 0)continue;let n=s.name;n&&(e.push({name:n}),r.push({name:n,kind:"variable"}))}return{exports:e,tags:r}}function me(t,e){try{let r=Ei.parse(t),{exports:s,tags:i}=Pi(r);return{imports:ce(r,e),root:r,exports:s,tags:i}}catch{return{imports:Ti(t,e),root:ht.default.parse(""),exports:[],tags:[]}}}var fe=require("postcss-scss");function pe(t){return t.startsWith("_")||t.startsWith("-")}function Fi(t){return!!(t.startsWith("sass:")||t.startsWith("~")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")||!t.startsWith(".")&&!t.startsWith("/")&&!t.startsWith("_"))}function Di(t){let e=t.match(/^['"]([^'"]+)['"]/);if(!e?.[1])return{specifier:""};let r=e[1],i=t.match(/\bas\s+(\S+)/)?.[1];return i!==void 0?{specifier:r,alias:i}:{specifier:r}}function Ai(t){let e=[],r=[];for(let s of t.nodes??[]){if(s.type==="decl"&&s.prop.startsWith("$")){let i=s.prop.slice(1);if(!i||pe(i))continue;e.push({name:i}),r.push({name:i,kind:"variable"});continue}if(s.type==="atrule"&&(s.name==="mixin"||s.name==="function")){let n=s.params.match(/^([\w-]+)/)?.[1];if(!n||pe(n))continue;let o=s.params.trim();e.push(o.includes("(")?{name:n,signature:o}:{name:n}),r.push({name:n,kind:"function"})}}return{exports:e,tags:r}}function ue(t,e){let r=(0,fe.parse)(t),s=[];r.walk(o=>{if(o.type!=="atrule")return;let{name:a,params:c}=o;if(a!=="import"&&a!=="use"&&a!=="forward")return;let{specifier:l,alias:p}=Di(c);if(!l)return;let f={fromPath:e,toPath:"",rawSpecifier:l,isStyle:!0,type:a==="forward"?"re-export":"static",...Fi(l)?{isExternal:!0}:{}};p&&(f.symbols=[p]),s.push(f)});let{exports:i,tags:n}=Ai(r);return{imports:s,root:r,exports:i,tags:n}}function ge(t,e){let r=[],s=/@require\s+['"]([^'"]+)['"]/g,i=s.exec(t);for(;i!==null;){let o=i[1];o&&r.push({fromPath:e,toPath:"",rawSpecifier:o,isStyle:!0,type:"require"}),i=s.exec(t)}let n=/(?<!@)(?:import|require)\s*\(?\s*['"]([^'"]+)['"]/g;for(i=n.exec(t);i!==null;){let o=i[1];o&&r.push({fromPath:e,toPath:"",rawSpecifier:o,isStyle:!0,type:"static"}),i=n.exec(t)}return r}function de(t,e){if(e.length===0)return"ui";try{let r=require("stylus");return new r.Parser(t).parse().nodes.some(n=>n.constructor.name!=="Import")?"ui":"barrel"}catch{return t.replace(/^\s*@?(?:require|import)\b.*/gm,"").trim().length>0?"ui":"barrel"}}function G(t,e){let r=J(t);if(r==="stylus"){let n=ge(e,t);return{imports:n,exports:[],tags:[],category:de(e,n)}}if(r==="scss"){let{imports:n,root:o,exports:a,tags:c}=ue(e,t);return{imports:n,exports:a,tags:c,category:Y(o,n)}}if(r==="less"){let{imports:n,root:o,exports:a,tags:c}=me(e,t);return{imports:n,exports:a,tags:c,category:Y(o,n)}}let{imports:s,root:i}=le(e,t);return{imports:s,exports:[],tags:[],category:Y(i,s)}}for(let[t,e]of[["javascript",(r,s)=>yt(r,s,"javascript")],["typescript",(r,s)=>yt(r,s,"typescript")],["css",G],["scss",G],["less",G],["stylus",G],["coffeescript",Et],["livescript",zt],["lua",Vt],["python",Xt],["go",Lt],["java",$t],["kotlin",jt],["scala",Yt],["groovy",Rt],["gherkin",rt],["markdown",Zt]])q(t,e);async function ye(t,e){let r=J(t),s=vt(r);return s?s(t,e):{imports:[],exports:[],tags:[],category:"other"}}function xe(t){return ye(t.filePath,t.content)}
|
|
3
7
|
//# sourceMappingURL=parse-worker.js.map
|