@omfalos/mokosh 0.4.2 → 0.4.3
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.js +39 -34
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +40 -35
- package/dist/cli.mjs.map +1 -1
- package/dist/index.d.mts +45 -1
- package/dist/index.d.ts +45 -1
- package/dist/index.js +23 -23
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +23 -23
- package/dist/index.mjs.map +1 -1
- package/dist/mcp.js +26 -26
- package/dist/mcp.js.map +1 -1
- package/dist/mcp.mjs +25 -25
- package/dist/mcp.mjs.map +1 -1
- package/dist/parse-worker.js +2 -2
- package/dist/parse-worker.js.map +1 -1
- package/dist/parse-worker.mjs +2 -2
- package/dist/parse-worker.mjs.map +1 -1
- package/package.json +1 -1
- package/templates/skill/mokosh.md +3 -0
package/dist/parse-worker.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
2
|
-
`&&r++;return r}function Vt(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 $t(t,e){let r=0;function i(s,n,o){let a=s.type.name;if(a==="IfStatement"){r+=o?1:1+n;let p=T(s),f=o?n:n+1,d=p[1];d&&d.type.name!=="Block"&&i(d,f,!1);let g=p.find(y=>y.type.name==="Block");g&&i(g,f,!1);let C=p.findIndex(y=>y.type.name==="else");if(C>=0){let y=p[C+1];y?.type.name==="IfStatement"?i(y,n,!0):y&&(r+=1,i(y,n+1,!1))}return}if(a==="ForStatement"||a==="SwitchStatement"||a==="SelectStatement"){r+=1+n;let p=s.firstChild;for(;p;)i(p,n+1,!1),p=p.nextSibling;return}if(a==="LogicOp"){let p=e.slice(s.from,s.to);(p==="&&"||p==="||")&&(r+=1)}if(n>0&&a==="FunctionLiteral"){r+=1+n;let p=s.firstChild;for(;p;)i(p,n+1,!1),p=p.nextSibling;return}let m=s.firstChild;for(;m;)i(m,n,!1),m=m.nextSibling}return i(t,0,!1),r}function K(t,e){return{complexity:Vt(t,e),cognitiveComplexity:$t(t,e)}}function $(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 nt(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}=K(i.node,e);r.push({name:n,line:R(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=$(i.node,e),a=o?`${o}.${n}`:n,{complexity:c,cognitiveComplexity:m}=K(i.node,e);r.push({name:a,line:R(e,i.from),complexity:c,cognitiveComplexity:m})}}while(i.next());return r}var Jt=/\/\/\s*@tag\s+([a-zA-Z0-9_-]+)/,Gt=/^\/\/go:build\s+(.+)$/,Qt=/^\/\/\s*\+build\s+(.+)$/;function at(t,e){let r=[],i=new Map,s=new Set,n=new Set,o=new Map,a=qt.parse(e),c=a.cursor();do switch(c.name){case"LineComment":{let b=e.slice(c.from,c.to),E=b.match(Jt);E?.[1]&&s.add(E[1]);let k=b.match(Gt);k&&ot(k[1],n);let F=b.match(Qt);F&&ot(F[1],n);break}case"ImportSpec":{let b=c.node.getChild("String");if(b){let k=e.slice(b.from,b.to).slice(1,-1);r.push({fromPath:t,toPath:"",rawSpecifier:k,isExternal:!0,isStyle:!1,type:"static"});let F=c.node.getChild("DefName"),W=F?e.slice(F.from,F.to):k.split("/").pop();W&&W!=="_"&&W!=="."&&o.set(W,k)}break}case"FunctionDecl":case"MethodDecl":case"TypeDecl":case"VarDecl":case"ConstDecl":{let b=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(b){let E=e.slice(b.from,b.to);E!=="_"&&/^[A-Z]/.test(E)&&!i.has(E)&&i.set(E,{name:E})}break}}while(c.next());let m=r.some(b=>b.rawSpecifier==="testing"),p=zt.basename(t).endsWith("_test.go")||s.has("test")||m?"test":"logic",f=new Set([...s,...n]),{complexity:d,cognitiveComplexity:g}=K(a.topNode,e),C=nt(a,e),y=p==="test"?[]:Ut(a,e,o);return{imports:r,exports:Array.from(i.values()),tags:Array.from(f).map(b=>({name:b,kind:"comment-marker"})),category:p,rawCallEdges:y,complexity:d,cognitiveComplexity:g,...C.length>0?{functions:C}:{}}}function Ut(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 d=e.slice(p.from,p.to),g=r.get(d);if(g){let C=e.slice(f.from,f.to);i.push({from:a,to:C,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=$(n.node,e);s(a,m?`${m}.${c}`:c)}}while(n.next());return i}function ot(t,e){for(let r of t.split(/[\s,&|!()]+/)){let i=r.trim();i&&i!=="ignore"&&e.add(i)}}import Zt from"livescript";function I(t){if(t){if(typeof t.value=="string")return t.value;if(typeof t.base?.value=="string")return t.base.value}}function Xt(t){if(!t)return[];if(t.constructor?.name==="Class"){let r=I(t.title);return r?[{name:r}]:[]}if(t.constructor?.name==="Obj"&&Array.isArray(t.items))return t.items.map(r=>I(r.key)??I(r.val)).filter(r=>!!r).map(r=>({name:r}));let e=I(t);return e?[{name:e}]:[]}function Ht(t){let e=t.constructor?.name||t.type;if(e==="Assign"&&t.left?.constructor?.name==="Chain"){let r=t.left,i=I(r.head),n=r.tails?.[0]?.key?.name;if(i==="module"&&n==="exports")return Xt(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=>I(i.val)??I(i.key)).filter(i=>!!i).map(i=>({name:i}))}return[]}var Yt=new Set(["first_line","first_column","last_line","last_column","line","column"]);function te(t,e){let r=t.constructor?.name||t.type;if(r==="Import"){let i=t.right?.value;if(typeof i=="string"){let s=w(i);return{fromPath:e,toPath:"",rawSpecifier:s,isStyle:N(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=w(s);return{fromPath:e,toPath:"",rawSpecifier:n,isStyle:N(n),type:"require"}}}}return null}function z(t,e,r){if(!t||typeof t!="object")return[];let i=[],s=te(t,e);s&&i.push(s),r.push(...Ht(t));for(let n in t){if(Yt.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 ct(t,e){let r=P(e),i=D(t,r),s=[],n=[];try{s=z(Zt.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}}import ee from"luaparse";function re(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=w(o.raw))}else if(s.type==="StringCallExpression"){let o=s.argument;o?.type==="StringLiteral"&&(n=w(o.raw))}n&&r.push({fromPath:e,toPath:"",rawSpecifier:n,isStyle:N(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 ie(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 se(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 ne(t){let e=t.body,r=ie(e),i=se(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 lt(t,e){let r=P(e),i=D(t,r),s=[],n=[];try{let o=ee.parse(e);s=re(o,t),n=ne(o)}catch{}return{imports:s,exports:n,tags:Array.from(r).map(o=>({name:o,kind:"comment-marker"})),category:i}}var oe=["http://","https://","mailto:","//"],ae="ts|tsx|js|jsx|mjs|cjs|py|go|lua|css|scss|less|styl|coffee|ls|feature|md|mdx|json",ce=new RegExp(`(?:\\.{1,2}/)?[\\w.-]+(?:/[\\w.-]+)*\\.(?:${ae})\\b`,"g"),mt;async function le(){return mt??=(async()=>{let{unified:t}=await import("unified"),e=(await import("remark-parse")).default;return t().use(e)})(),mt}function me(t){let e=t.trim();return e.length===0||e.startsWith("#")||oe.some(r=>e.startsWith(r))}function pe(t,e){let r=t.match(ce);return r?r.map(i=>({fromPath:e,toPath:"",rawSpecifier:i,isStyle:!1,type:"static"})):[]}function pt(t,e,r){if(t.type==="link"&&typeof t.url=="string"&&!me(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(...pe(t.value,e)),Array.isArray(t.children))for(let i of t.children)pt(i,e,r)}async function ft(t,e){let i=(await le()).parse(e),s=[];pt(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"}}import ge from"path";import{parser as de}from"@lezer/python";function fe(t){let e=1;function r(i){switch(i.type.name){case"IfStatement":{e+=T(i).filter(n=>n.type.name==="if"||n.type.name==="elif").length;break}case"TryStatement":{e+=T(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 ue(t){let e=0;function r(i,s){let n=i.type.name;if(n==="IfStatement"){let c=T(i),m=0,p=0;for(;p<c.length;){let f=c[p];if(f?.type.name==="if"||f?.type.name==="elif"){let d=m>0;e+=d?1:1+s;let g=d?s:s+1,C=c[p+1],y=c[p+2];C&&r(C,g),y&&r(y,g),m++,p+=3}else if(f?.type.name==="else"){e+=1;let d=c[p+1];d&&r(d,s+1),p+=2}else p++}return}if(n==="TryStatement"){let c=T(i),m=0;for(;m<c.length;){let p=c[m];if(p?.type.name==="except"){for(e+=1+s,m++;m<c.length&&c[m]?.type.name!=="Body";)r(c[m],s),m++;m<c.length&&(r(c[m],s),m++)}else p?.type.name==="Body"&&r(p,s),m++}return}if(n==="ForStatement"||n==="WhileStatement"){e+=1+s;let c=i.firstChild;for(;c;)r(c,s+1),c=c.nextSibling;return}if((n==="ConditionalExpression"||n==="and"||n==="or")&&(e+=1),s>0&&(n==="FunctionDefinition"||n==="LambdaExpression")){e+=1+s;let c=i.firstChild;for(;c;)r(c,s+1),c=c.nextSibling;return}let a=i.firstChild;for(;a;)r(a,s),a=a.nextSibling}return r(t,0),e}function q(t){return{complexity:fe(t),cognitiveComplexity:ue(t)}}function ut(t,e){let r=[];function i(o,a){let{complexity:c,cognitiveComplexity:m}=q(o);r.push({name:a,line:R(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"),d=f?e.slice(f.from,f.to):void 0;d&&i(p,c?`${c}.${d}`:d),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 ye=new Set(["pytest","unittest","nose","hypothesis"]);function gt(t,e){let r=[],i=[],s=new Set,n=ge.basename(t).toLowerCase(),o=de.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 xe(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 y=a.node.getChild("VariableName");y&&i.push({name:e.slice(y.from,y.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=Ee(n,r,s);c==="test"&&s.add("test");let{complexity:m,cognitiveComplexity:p}=q(o.topNode),f=ut(o,e),d=c==="test"?[]:Ne(o,e);return{imports:r,exports:i,tags:Array.from(s).map(g=>({name:g,kind:"comment-marker"})),category:c,rawCallEdges:d,complexity:m,cognitiveComplexity:p,...f.length>0?{functions:f}:{}}}function xe(t,e,r){let i=t.firstChild;return i?i.name==="from"?he(t,e,r):Se(t,e,r):[]}function he(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=Ce(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[M(r,n,o,!0)];let m=a===1?"./":"../".repeat(a-1);return c?[M(r,m+c.replace(/\./g,"/"),o,!1)]:o[0]==="*"?[M(r,m.slice(0,-1),["*"],!1)]:o.map(p=>M(r,m+p,[p],!1))}function Se(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(M(r,n,["*"],!0))}s=s.nextSibling}return i}function Ce(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 be(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 d=e.slice(f.from,f.to),g=d;if(f.nextSibling?.type.name==="as"){let y=f.nextSibling.nextSibling;y?.type.name==="VariableName"&&(g=e.slice(y.from,y.to),f=y)}let C=c===0?a:m?p+m.replace(/\./g,"/"):p+d;r.set(g,C)}f=f.nextSibling}}while(i.next());return r}function Ne(t,e){let r=be(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),d=r.get(f);d&&i.push({from:c,to:f,toSpecifier:d})}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 d=f.getChild("VariableName"),g=d?e.slice(d.from,d.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 M(t,e,r,i){return{fromPath:t,toPath:"",rawSpecifier:e,isStyle:!1,isExternal:i,type:"static",symbols:r.length>0?r:void 0}}function Ee(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=>ye.has(i.rawSpecifier))?"test":"logic"}import xt from"path";import l from"typescript";var we=[".config.","biome.json","tsconfig.json","package.json",".prettierrc",".eslintrc"],ve=[];function dt(t){return[...we,...ve].some(e=>typeof e=="string"?t.includes(e):e instanceof RegExp?e.test(t):e(t))}var Te=[".test.",".spec.","-test.","-spec."],Ie=[];function J(){return[...Te,...Ie]}var ke=["jest","vitest","playwright","cypress","@testing-library/"],Fe=[];function G(){return[...ke,...Fe]}var Pe=.8;function Q(){return Pe}import u from"typescript";function De(t){let e=1;function r(i){switch(i.kind){case u.SyntaxKind.IfStatement:case u.SyntaxKind.ConditionalExpression:case u.SyntaxKind.ForStatement:case u.SyntaxKind.ForInStatement:case u.SyntaxKind.ForOfStatement:case u.SyntaxKind.WhileStatement:case u.SyntaxKind.DoStatement:case u.SyntaxKind.CatchClause:case u.SyntaxKind.CaseClause:e++;break;case u.SyntaxKind.BinaryExpression:{let s=i.operatorToken.kind;(s===u.SyntaxKind.AmpersandAmpersandToken||s===u.SyntaxKind.BarBarToken||s===u.SyntaxKind.QuestionQuestionToken)&&e++;break}}u.forEachChild(i,r)}return r(t),e}function Le(t){let e=0;function r(i,s,n){if(u.isIfStatement(i)){e+=n?1:1+s;let a=n?s:s+1;r(i.expression,a,!1),r(i.thenStatement,a,!1),i.elseStatement&&(u.isIfStatement(i.elseStatement)?r(i.elseStatement,s,!0):(e+=1,r(i.elseStatement,s+1,!1)));return}if(u.isForStatement(i)||u.isForInStatement(i)||u.isForOfStatement(i)||u.isWhileStatement(i)||u.isDoStatement(i)||u.isSwitchStatement(i)){e+=1+s,u.forEachChild(i,a=>r(a,s+1,!1));return}if(u.isCatchClause(i)){e+=1+s,u.forEachChild(i,a=>r(a,s,!1));return}if(u.isConditionalExpression(i)&&(e+=1),u.isBinaryExpression(i)){let a=i.operatorToken.kind;(a===u.SyntaxKind.AmpersandAmpersandToken||a===u.SyntaxKind.BarBarToken||a===u.SyntaxKind.QuestionQuestionToken)&&(e+=1)}if(s>0&&(u.isFunctionDeclaration(i)||u.isFunctionExpression(i)||u.isArrowFunction(i))){e+=1+s,u.forEachChild(i,a=>r(a,s+1,!1));return}u.forEachChild(i,a=>r(a,s,!1))}return r(t,0,!1),e}function U(t){return{complexity:De(t),cognitiveComplexity:Le(t)}}import S from"typescript";var Z=new Set(["test","describe","it"]);function yt(t,e){Ae(t,e),Me(t,e),Be(t,e),We(t,e)}function Ae(t,e){if((S.isFunctionDeclaration(t)||S.isVariableDeclaration(t))&&t.name&&S.isIdentifier(t.name)&&Re(t)){let r;if(S.isFunctionDeclaration(t))r="function";else{let i=t.initializer;r=i&&(S.isArrowFunction(i)||S.isFunctionExpression(i))?"function":"variable"}e.tags.add({name:t.name.text,kind:r})}}function Re(t){if(S.isFunctionDeclaration(t))return S.isSourceFile(t.parent);let e=t.parent?.parent;return!!e&&S.isSourceFile(e.parent)}function Me(t,e){if(!S.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 Be(t,e){if(!S.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 We(t,e){if(S.isCallExpression(t)&&Ke(t.expression))for(let r of t.arguments)S.isObjectLiteralExpression(r)&&Oe(r,e)}function Ke(t){return S.isIdentifier(t)?Z.has(t.text):!!(S.isPropertyAccessExpression(t)&&(Z.has(t.name.text)||S.isIdentifier(t.expression)&&Z.has(t.expression.text)))}function Oe(t,e){for(let r of t.properties){if(!S.isPropertyAssignment(r)||!S.isIdentifier(r.name)||r.name.text!=="tags"&&r.name.text!=="tag")continue;let{initializer:i}=r,s=S.isArrayLiteralExpression(i)?i.elements.filter(S.isStringLiteral):r.name.text==="tag"&&S.isStringLiteral(i)?[i]:[];for(let n of s)e.tags.add({name:n.text.replace(/^@/,""),kind:"comment-marker"})}}function X(t,e,r){let i=[],s=new Map,n=new Set,o=l.createSourceFile(t,e,l.ScriptTarget.Latest,!0,r==="typescript"?l.ScriptKind.TSX:l.ScriptKind.JSX),a={filePath:t,imports:i,exports:s,tags:n,rawCallEdges:[],sourceFile:o,hasUI:!1,hasTypesOnly:!0,totalStatements:0,exportStatements:0},c=y=>{$e(y,a),l.forEachChild(y,c)};c(o);let m=tr(t,a);(m==="test"||m==="barrel")&&n.add({name:m,kind:"comment-marker"}),m!=="test"&&er(a,o);let p=o.statements[0],f=p?St(p):void 0,{complexity:d,cognitiveComplexity:g}=U(o),C=_e(o);return{imports:i,exports:Array.from(s.values()),tags:Array.from(n),category:m,rawCallEdges:a.rawCallEdges??[],complexity:d,cognitiveComplexity:g,...C.length>0?{functions:C}:{},...f!==void 0?{description:f}:{}}}function _e(t){let e=[],r=(s,n)=>{let{complexity:o,cognitiveComplexity:a}=U(n),c=t.getLineAndCharacterOfPosition(n.getStart(t)).line+1;e.push({name:s,line:c,complexity:o,cognitiveComplexity:a})},i=(s,n)=>{if(l.isFunctionDeclaration(s)&&s.name&&s.body?r(s.name.text,s):l.isVariableDeclaration(s)&&l.isIdentifier(s.name)&&s.initializer&&(l.isArrowFunction(s.initializer)||l.isFunctionExpression(s.initializer))?r(s.name.text,s.initializer):n&&l.isMethodDeclaration(s)&&l.isIdentifier(s.name)&&s.body?r(`${n}.${s.name.text}`,s):n&&l.isConstructorDeclaration(s)&&s.body?r(`${n}.constructor`,s):n&&l.isGetAccessorDeclaration(s)&&l.isIdentifier(s.name)&&s.body?r(`${n}.get ${s.name.text}`,s):n&&l.isSetAccessorDeclaration(s)&&l.isIdentifier(s.name)&&s.body&&r(`${n}.set ${s.name.text}`,s),l.isClassDeclaration(s)&&s.name){let o=s.name.text;l.forEachChild(s,a=>i(a,o));return}l.forEachChild(s,o=>i(o,n))};return i(t,void 0),e}function ht(t,e,r,i){let s={name:t},n=St(r);n!==void 0&&(s.doc=n);let o=je(e);o!==void 0&&(s.flags=o);let a=Ve(e,i);return a!==void 0&&(s.signature=a),s}function St(t){let e=l.getJSDocCommentsAndTags(t);for(let r of e)if(l.isJSDoc(r)&&r.comment)return l.getTextOfJSDocComment(r.comment)||void 0}function je(t){let e=new Set(["deprecated","internal","public","alpha","beta"]),r=l.getJSDocTags(t).map(i=>i.tagName.text).filter(i=>e.has(i));return r.length>0?r:void 0}function Ve(t,e){let r=l.createPrinter({removeComments:!0}),i=s=>r.printNode(l.EmitHint.Unspecified,s,e);if(l.isFunctionDeclaration(t)||l.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.isVariableDeclaration(t)){if(t.type)return i(t.type);if(t.initializer&&(l.isArrowFunction(t.initializer)||l.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.isClassDeclaration(t)&&t.name)return`class ${t.name.text}`;if(l.isInterfaceDeclaration(t))return`interface ${t.name.text}`;if(l.isTypeAliasDeclaration(t))return i(t.type);if(l.isEnumDeclaration(t))return`enum ${t.name.text}`}function $e(t,e){ze(t,e),qe(t,e),Ge(t,e),Qe(t,e),Ye(t,e),yt(t,e)}function ze(t,e){if(!l.isSourceFile(t))return;let r=t.statements.filter(i=>!l.isEmptyStatement(i));e.totalStatements=r.length,e.exportStatements=r.filter(i=>l.isExportDeclaration(i)||l.isExportAssignment(i)||H(i)).length}function qe(t,e){if(l.isJsxElement(t)||l.isJsxSelfClosingElement(t)||l.isJsxFragment(t)){e.hasUI=!0,e.hasTypesOnly=!1;return}if(l.isFunctionDeclaration(t)||l.isMethodDeclaration(t)||l.isArrowFunction(t)||l.isClassDeclaration(t)||l.isVariableStatement(t)||l.isEnumDeclaration(t)){e.hasTypesOnly=!1;return}l.isExportDeclaration(t)&&!Je(t)&&(e.hasTypesOnly=!1)}function Je(t){return t.isTypeOnly?!0:!t.exportClause||!l.isNamedExports(t.exportClause)?!1:t.exportClause.elements.every(e=>e.isTypeOnly)}function Ge(t,e){if(!l.isImportDeclaration(t)||!t.moduleSpecifier||!l.isStringLiteral(t.moduleSpecifier))return;let r=[];if(t.importClause&&(t.importClause.name&&r.push("default"),t.importClause.namedBindings))if(l.isNamedImports(t.importClause.namedBindings))for(let s of t.importClause.namedBindings.elements)r.push(s.name.text);else l.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:N(t.moduleSpecifier.text),type:i,symbols:r.length>0?r:void 0})}function Qe(t,e){l.isExportDeclaration(t)?Ue(t,e):l.isExportAssignment(t)?e.exports.set("default",{name:"default"}):H(t)&&He(t,e)}function Ue(t,e){if(t.moduleSpecifier&&l.isStringLiteral(t.moduleSpecifier))Ze(t,t.moduleSpecifier.text,e);else if(t.exportClause&&l.isNamedExports(t.exportClause))for(let r of t.exportClause.elements){let i=r.name.text;e.exports.set(i,{name:i})}}function Ze(t,e,r){let i=Xe(t),s={fromPath:r.filePath,toPath:"",rawSpecifier:e,isStyle:N(e),type:"re-export"};i.length>0&&(s.symbols=i),r.imports.push(s)}function Xe(t){return t.exportClause?l.isNamedExports(t.exportClause)?t.exportClause.elements.map(e=>e.name.text):[]:["*"]}function He(t,e){if((l.isFunctionDeclaration(t)||l.isClassDeclaration(t)||l.isInterfaceDeclaration(t)||l.isTypeAliasDeclaration(t)||l.isEnumDeclaration(t))&&t.name){let i=t.name.text;e.exports.set(i,ht(i,t,t,e.sourceFile));return}if(l.isVariableStatement(t)){for(let i of t.declarationList.declarations)if(l.isIdentifier(i.name)){let s=i.name.text;e.exports.set(s,ht(s,i,t,e.sourceFile))}}}function Ye(t,e){if(!l.isCallExpression(t))return;let r=t.arguments[0];!r||!l.isStringLiteral(r)||(t.expression.kind===l.SyntaxKind.ImportKeyword?e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:r.text,isStyle:N(r.text),type:"dynamic"}):l.isIdentifier(t.expression)&&t.expression.text==="require"&&e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:r.text,isStyle:N(r.text),type:"require"}))}function tr(t,e){let r=xt.basename(t).toLowerCase(),i=xt.extname(t).toLowerCase();return J().some(n=>r.includes(n))?"test":dt(r)?"config":e.imports.some(n=>G().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>Q()?"barrel":"logic"}function H(t){return l.canHaveModifiers(t)&&l.getModifiers(t)?.some(e=>e.kind===l.SyntaxKind.ExportKeyword)===!0}function er(t,e){let r=t.rawCallEdges??[];t.rawCallEdges=r;let i=new Map;for(let s of e.statements){if(!l.isImportDeclaration(s)||!l.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.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=sr(s);o&&O(o,n,i,r);continue}l.isClassDeclaration(s)&&s.name&&rr(s,s.name.text,i,r)}}function rr(t,e,r,i){for(let s of t.members)l.isMethodDeclaration(s)&&s.body&&l.isIdentifier(s.name)?O(s.body,`${e}.${s.name.text}`,r,i):l.isConstructorDeclaration(s)&&s.body&&O(s.body,`${e}.constructor`,r,i)}function ir(t){if(H(t)){if(l.isFunctionDeclaration(t)&&t.name)return t.name.text;if(l.isVariableStatement(t)){for(let e of t.declarationList.declarations)if(l.isIdentifier(e.name)&&e.initializer&&(l.isArrowFunction(e.initializer)||l.isFunctionExpression(e.initializer)))return e.name.text}}}function sr(t){if(l.isFunctionDeclaration(t))return t.body;if(l.isVariableStatement(t)){for(let e of t.declarationList.declarations)if(e.initializer&&(l.isArrowFunction(e.initializer)||l.isFunctionExpression(e.initializer)))return e.initializer}}function O(t,e,r,i){if(l.isCallExpression(t)&&l.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.forEachChild(t,s=>O(s,e,r,i))}function _(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"}import bt from"postcss";import*as nr from"postcss-less";var or=nr,Nt=new Set(["reference","inline"]);function Ct(t){return t.startsWith("~")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")||t.startsWith("data:")}function ar(t){let e=t.trim();return e.length>0&&!e.startsWith("http://")&&!e.startsWith("https://")&&!e.startsWith("//")&&!e.startsWith("data:")&&!e.startsWith("#")}function cr(t,e){let r=t.match(/^\(([^)]+)\)\s+['"]([^'"]+)['"]/);if(r){let n=r[1]?.trim()??"",o=r[2]??"";if(!o)return null;let a=Nt.has(n)?"side-effect":"static";return{fromPath:e,toPath:"",rawSpecifier:o,isStyle:!0,type:a,...Ct(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",...Ct(s)?{isExternal:!0}:{}}:null}function lr(t,e){let r=[],i=/url\(['"]?([^'")]+)['"]?\)/g,s=i.exec(t);for(;s!==null;){let n=s[1]?.trim()??"";ar(n)&&r.push({fromPath:e,toPath:"",rawSpecifier:n,isStyle:!0,type:"static"}),s=i.exec(t)}return r}function Et(t,e){let r=[];return t.walk(i=>{if(i.type==="atrule"&&i.name==="import"){let s=cr(i.params,e);s&&r.push(s)}i.type==="decl"&&r.push(...lr(i.value,e))}),r}function mr(t){return t.replace(/(?<!:)\/\/.*/g,"")}function pr(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=Nt.has(n)?"side-effect":"static";r.push({fromPath:e,toPath:"",rawSpecifier:o,isStyle:!0,type:a})}s=i.exec(t)}return r}function wt(t,e){let r=bt.parse(mr(t));return{imports:Et(r,e),root:r}}function fr(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 vt(t,e){try{let r=or.parse(t),{exports:i,tags:s}=fr(r);return{imports:Et(r,e),root:r,exports:i,tags:s}}catch{return{imports:pr(t,e),root:bt.parse(""),exports:[],tags:[]}}}import{parse as ur}from"postcss-scss";function Tt(t){return t.startsWith("_")||t.startsWith("-")}function gr(t){return!!(t.startsWith("sass:")||t.startsWith("~")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")||!t.startsWith(".")&&!t.startsWith("/")&&!t.startsWith("_"))}function dr(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 yr(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||Tt(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||Tt(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 It(t,e){let r=ur(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}=dr(c);if(!m)return;let f={fromPath:e,toPath:"",rawSpecifier:m,isStyle:!0,type:a==="forward"?"re-export":"static",...gr(m)?{isExternal:!0}:{}};p&&(f.symbols=[p]),i.push(f)});let{exports:s,tags:n}=yr(r);return{imports:i,root:r,exports:s,tags:n}}function kt(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 Ft(t,e){if(e.length===0)return"ui";try{let r=Dt("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 B(t,e){let r=L(t);if(r==="stylus"){let n=kt(e,t);return{imports:n,exports:[],tags:[],category:Ft(e,n)}}if(r==="scss"){let{imports:n,root:o,exports:a,tags:c}=It(e,t);return{imports:n,exports:a,tags:c,category:_(o,n)}}if(r==="less"){let{imports:n,root:o,exports:a,tags:c}=vt(e,t);return{imports:n,exports:a,tags:c,category:_(o,n)}}let{imports:i,root:s}=wt(e,t);return{imports:i,exports:[],tags:[],category:_(s,i)}}for(let[t,e]of[["javascript",(r,i)=>X(r,i,"javascript")],["typescript",(r,i)=>X(r,i,"typescript")],["css",B],["scss",B],["less",B],["stylus",B],["coffeescript",rt],["livescript",ct],["lua",lt],["python",gt],["go",at],["gherkin",V],["markdown",ft]])A(t,e);async function Pt(t,e){let r=L(t),i=st(r);return i?i(t,e):{imports:[],exports:[],tags:[],category:"other"}}function xr(t){return Pt(t.filePath,t.content)}export{xr as default};
|
|
1
|
+
var Kt=(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')});import rt from"path";function M(t){switch(rt.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 C(t){let e=rt.extname(t).toLowerCase();return[".css",".scss",".sass",".less",".styl"].includes(e)}import _t from"coffeescript";function v(t){return t.startsWith("'")||t.startsWith('"')?t.slice(1,-1):t}function L(t){let e=new Set,r=/@tag\s+([a-zA-Z0-9_-]+)/g,i=r.exec(t);for(;i!==null;)i[1]&&e.add(i[1]),i=r.exec(t);return e}function A(t,e){let r=t.toLowerCase();return r.includes(".test.")||r.includes(".spec.")||e.has("test")?"test":"logic"}function st(t){if(t){if(typeof t.originalValue=="string")return t.originalValue;if(typeof t.value=="string")return v(t.value)}}function T(t){if(t){if(typeof t.value=="string")return t.value;if(typeof t.base?.value=="string")return t.base.value}}function jt(t,e){let r=st(e.source);return r?{fromPath:t,toPath:"",rawSpecifier:r,isStyle:C(r),type:"static"}:null}function Vt(t,e){let r=e.variable?.base?.value==="require",i=st(e.args?.[0]?.base);return!r||!i?null:{fromPath:t,toPath:"",rawSpecifier:i,isStyle:C(i),type:"require"}}function it(t,e){if(e)return[{name:e}];let r=t.value;if(r?.constructor?.name==="Class"){let s=T(r.variable);return s?[{name:s}]:[]}if(r?.base?.constructor?.name==="Obj"&&Array.isArray(r.base.properties))return r.base.properties.map(s=>T(s.variable)??T(s)).filter(s=>!!s).map(s=>({name:s}));let i=T(r);return i?[{name:i}]:[]}function $t(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=T(t.variable)??T(t.variable?.base);return e?[{name:e}]:[]}function zt(t,e,r,i){let s=e.constructor?.name;if(s==="ImportDeclaration"){let n=jt(t,e);n&&r.push(n)}else if(s==="Call"){let n=Vt(t,e);n&&r.push(n)}else if(s==="Assign"){let n=T(e.variable?.base),o=e.variable?.properties?.[0]?.name?.value;n==="module"&&o==="exports"?i.push(...it(e,void 0)):n==="exports"&&typeof o=="string"&&i.push(...it(e,o))}else s==="ExportNamedDeclaration"&&e.clause?i.push(...$t(e.clause)):s==="ExportDefaultDeclaration"&&i.push({name:"default"})}function z(t,e,r,i){if(!(!e||typeof e!="object")){zt(t,e,r,i);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)z(t,o,r,i);else z(t,n,r,i)}}}function nt(t,e){let r=L(e),i=A(t,r),s=[],n=[];try{z(t,_t.nodes(e),s,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}}import{AstBuilder as qt,GherkinClassicTokenMatcher as Jt,Parser as Gt}from"@cucumber/gherkin";import{IdGenerator as Qt}from"@cucumber/messages";var ot=new Map;function B(t,e){ot.set(t,e)}function at(t){return ot.get(t)}var Ut=Qt.uuid();function q(t,e){let r=new Set;try{let i=new qt(Ut),s=new Jt,o=new Gt(i,s).parse(e);o.feature&&(o.feature.tags.forEach(a=>{r.add(a.name.startsWith("@")?a.name.slice(1):a.name)}),o.feature.children.forEach(a=>{a.scenario&&(a.scenario.tags.forEach(c=>{r.add(c.name.startsWith("@")?c.name.slice(1):c.name)}),a.scenario.examples.forEach(c=>{c.tags.forEach(m=>{r.add(m.name.startsWith("@")?m.name.slice(1):m.name)})})),a.rule&&a.rule.children.forEach(c=>{c.scenario&&c.scenario.tags.forEach(m=>{r.add(m.name.startsWith("@")?m.name.slice(1):m.name)})})}))}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"}}B("gherkin",q);import te from"path";import{parser as ee}from"@lezer/go";function I(t){let e=[],r=t.firstChild;for(;r;)e.push(r),r=r.nextSibling;return e}function W(t,e){let r=1;for(let i=0;i<e&&i<t.length;i++)t[i]===`
|
|
2
|
+
`&&r++;return r}function Zt(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 lt(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+=R(a,o,!1,i));let c=n.find(p=>p.type.name==="Block");c&&(s+=R(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+=lt(p,e,!0,i):p&&(s+=1+R(p,e+1,!1,i))}return s}function ct(t,e,r){let i=1+e,s=t.firstChild;for(;s;)i+=R(s,e+1,!1,r),s=s.nextSibling;return i}function Xt(t,e,r){let i=0,s=t.firstChild;for(;s;)i+=R(s,e,!1,r),s=s.nextSibling;return i}function Ht(t,e){let r=e.slice(t.from,t.to);return r==="&&"||r==="||"}function R(t,e,r,i){let s=t.type.name;if(s==="IfStatement")return lt(t,e,r,i);if(s==="ForStatement"||s==="SwitchStatement"||s==="SelectStatement")return ct(t,e,i);let n=s==="LogicOp"&&Ht(t,i)?1:0;return e>0&&s==="FunctionLiteral"?n+ct(t,e,i):n+Xt(t,e,i)}function Yt(t,e){return R(t,0,!1,e)}function j(t,e){return{complexity:Zt(t,e),cognitiveComplexity:Yt(t,e)}}function J(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 mt(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}=j(i.node,e);r.push({name:n,line:W(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=J(i.node,e),a=o?`${o}.${n}`:n,{complexity:c,cognitiveComplexity:m}=j(i.node,e);r.push({name:a,line:W(e,i.from),complexity:c,cognitiveComplexity:m})}}while(i.next());return r}var re=/\/\/\s*@tag\s+([a-zA-Z0-9_-]+)/,ie=/^\/\/go:build\s+(.+)$/,se=/^\/\/\s*\+build\s+(.+)$/;function ft(t,e){let r=[],i=new Map,s=new Set,n=new Set,o=new Map,a=ee.parse(e),c=a.cursor();do switch(c.name){case"LineComment":{let S=e.slice(c.from,c.to),E=S.match(re);E?.[1]&&s.add(E[1]);let P=S.match(ie);P&&pt(P[1],n);let D=S.match(se);D&&pt(D[1],n);break}case"ImportSpec":{let S=c.node.getChild("String");if(S){let P=e.slice(S.from,S.to).slice(1,-1);r.push({fromPath:t,toPath:"",rawSpecifier:P,isExternal:!0,isStyle:!1,type:"static"});let D=c.node.getChild("DefName"),_=D?e.slice(D.from,D.to):P.split("/").pop();_&&_!=="_"&&_!=="."&&o.set(_,P)}break}case"FunctionDecl":case"MethodDecl":case"TypeDecl":case"VarDecl":case"ConstDecl":{let S=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(S){let E=e.slice(S.from,S.to);E!=="_"&&/^[A-Z]/.test(E)&&!i.has(E)&&i.set(E,{name:E})}break}}while(c.next());let m=r.some(S=>S.rawSpecifier==="testing"),p=te.basename(t).endsWith("_test.go")||s.has("test")||m?"test":"logic",f=new Set([...s,...n]),{complexity:x,cognitiveComplexity:g}=j(a.topNode,e),N=mt(a,e),b=p==="test"?[]:ne(a,e,o);return{imports:r,exports:Array.from(i.values()),tags:Array.from(f).map(S=>({name:S,kind:"comment-marker"})),category:p,rawCallEdges:b,complexity:x,cognitiveComplexity:g,...N.length>0?{functions:N}:{}}}function ne(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=J(n.node,e);s(a,m?`${m}.${c}`:c)}}while(n.next());return i}function pt(t,e){for(let r of t.split(/[\s,&|!()]+/)){let i=r.trim();i&&i!=="ignore"&&e.add(i)}}import oe from"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 ae(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 ce(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 ae(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 le=new Set(["first_line","first_column","last_line","last_column","line","column"]);function me(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 G(t,e,r){if(!t||typeof t!="object")return[];let i=[],s=me(t,e);s&&i.push(s),r.push(...ce(t));for(let n in t){if(le.has(n))continue;let o=t[n];if(!(!o||typeof o!="object"))if(Array.isArray(o))for(let a of o)i.push(...G(a,e,r));else i.push(...G(o,e,r))}return i}function ut(t,e){let r=L(e),i=A(t,r),s=[],n=[];try{s=G(oe.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}}import pe from"luaparse";function fe(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 ue(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 ge(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 de(t){let e=t.body,r=ue(e),i=ge(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 gt(t,e){let r=L(e),i=A(t,r),s=[],n=[];try{let o=pe.parse(e);s=fe(o,t),n=de(o)}catch{}return{imports:s,exports:n,tags:Array.from(r).map(o=>({name:o,kind:"comment-marker"})),category:i}}var ye=["http://","https://","mailto:","//"],xe="ts|tsx|js|jsx|mjs|cjs|py|go|lua|css|scss|less|styl|coffee|ls|feature|md|mdx|json",he=new RegExp(`(?:\\.{1,2}/)?[\\w.-]+(?:/[\\w.-]+)*\\.(?:${xe})\\b`,"g"),dt;async function Se(){return dt??=(async()=>{let{unified:t}=await import("unified"),e=(await import("remark-parse")).default;return t().use(e)})(),dt}function be(t){let e=t.trim();return e.length===0||e.startsWith("#")||ye.some(r=>e.startsWith(r))}function Ce(t,e){let r=t.match(he);return r?r.map(i=>({fromPath:e,toPath:"",rawSpecifier:i,isStyle:!1,type:"static"})):[]}function yt(t,e,r){if(t.type==="link"&&typeof t.url=="string"&&!be(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(...Ce(t.value,e)),Array.isArray(t.children))for(let i of t.children)yt(i,e,r)}async function xt(t,e){let i=(await Se()).parse(e),s=[];yt(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"}}import Ie from"path";import{parser as ke}from"@lezer/python";function Ne(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 Ee(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 we(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 ht(t,e){let r=1+e,i=t.firstChild;for(;i;)r+=w(i,e+1),i=i.nextSibling;return r}function ve(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 Ee(t,e);if(r==="TryStatement")return we(t,e);if(r==="ForStatement"||r==="WhileStatement")return ht(t,e);let i=r==="ConditionalExpression"||r==="and"||r==="or"?1:0;return e>0&&(r==="FunctionDefinition"||r==="LambdaExpression")?i+ht(t,e):i+ve(t,e)}function Te(t){return w(t,0)}function Q(t){return{complexity:Ne(t),cognitiveComplexity:Te(t)}}function St(t,e){let r=[];function i(o,a){let{complexity:c,cognitiveComplexity:m}=Q(o);r.push({name:a,line:W(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 Fe=new Set(["pytest","unittest","nose","hypothesis"]);function bt(t,e){let r=[],i=[],s=new Set,n=Ie.basename(t).toLowerCase(),o=ke.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 Pe(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=Be(n,r,s);c==="test"&&s.add("test");let{complexity:m,cognitiveComplexity:p}=Q(o.topNode),f=St(o,e),x=c==="test"?[]:Me(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 Pe(t,e,r){let i=t.firstChild;return i?i.name==="from"?De(t,e,r):Le(t,e,r):[]}function De(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=Ae(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[O(r,n,o,!0)];let m=a===1?"./":"../".repeat(a-1);return c?[O(r,m+c.replace(/\./g,"/"),o,!1)]:o[0]==="*"?[O(r,m.slice(0,-1),["*"],!1)]:o.map(p=>O(r,m+p,[p],!1))}function Le(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(O(r,n,["*"],!0))}s=s.nextSibling}return i}function Ae(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 Re(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 Me(t,e){let r=Re(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 O(t,e,r,i){return{fromPath:t,toPath:"",rawSpecifier:e,isStyle:!1,isExternal:i,type:"static",symbols:r.length>0?r:void 0}}function Be(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=>Fe.has(i.rawSpecifier))?"test":"logic"}import vt from"path";import l from"typescript";var We=[".config.","biome.json","tsconfig.json","package.json",".prettierrc",".eslintrc"],Oe=[];function Ct(t){return[...We,...Oe].some(e=>typeof e=="string"?t.includes(e):e instanceof RegExp?e.test(t):e(t))}var Ke=[".test.",".spec.","-test.","-spec."],_e=[];function U(){return[...Ke,..._e]}var je=["jest","vitest","playwright","cypress","@testing-library/"],Ve=[];function Z(){return[...je,...Ve]}var $e=.8;function X(){return $e}import u from"typescript";function ze(t){let e=1;function r(i){switch(i.kind){case u.SyntaxKind.IfStatement:case u.SyntaxKind.ConditionalExpression:case u.SyntaxKind.ForStatement:case u.SyntaxKind.ForInStatement:case u.SyntaxKind.ForOfStatement:case u.SyntaxKind.WhileStatement:case u.SyntaxKind.DoStatement:case u.SyntaxKind.CatchClause:case u.SyntaxKind.CaseClause:e++;break;case u.SyntaxKind.BinaryExpression:{let s=i.operatorToken.kind;(s===u.SyntaxKind.AmpersandAmpersandToken||s===u.SyntaxKind.BarBarToken||s===u.SyntaxKind.QuestionQuestionToken)&&e++;break}}u.forEachChild(i,r)}return r(t),e}function Et(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.isIfStatement(t.elseStatement)?i+=Et(t.elseStatement,e,!0):i+=1+F(t.elseStatement,e+1,!1)),i}function Nt(t,e){let r=1+e;return u.forEachChild(t,i=>{r+=F(i,e+1,!1)}),r}function qe(t,e){let r=1+e;return u.forEachChild(t,i=>{r+=F(i,e,!1)}),r}function Je(t,e){let r=0;return u.forEachChild(t,i=>{r+=F(i,e,!1)}),r}function Ge(t){let e=t.operatorToken.kind;return e===u.SyntaxKind.AmpersandAmpersandToken||e===u.SyntaxKind.BarBarToken||e===u.SyntaxKind.QuestionQuestionToken}function F(t,e,r){if(u.isIfStatement(t))return Et(t,e,r);if(u.isForStatement(t)||u.isForInStatement(t)||u.isForOfStatement(t)||u.isWhileStatement(t)||u.isDoStatement(t)||u.isSwitchStatement(t))return Nt(t,e);if(u.isCatchClause(t))return qe(t,e);let i=0;return u.isConditionalExpression(t)&&(i+=1),u.isBinaryExpression(t)&&Ge(t)&&(i+=1),e>0&&(u.isFunctionDeclaration(t)||u.isFunctionExpression(t)||u.isArrowFunction(t))?i+Nt(t,e):i+Je(t,e)}function Qe(t){return F(t,0,!1)}function H(t){return{complexity:ze(t),cognitiveComplexity:Qe(t)}}import h from"typescript";var Y=new Set(["test","describe","it"]);function wt(t,e){Ue(t,e),Xe(t,e),He(t,e),Ye(t,e)}function Ue(t,e){if((h.isFunctionDeclaration(t)||h.isVariableDeclaration(t))&&t.name&&h.isIdentifier(t.name)&&Ze(t)){let r;if(h.isFunctionDeclaration(t))r="function";else{let i=t.initializer;r=i&&(h.isArrowFunction(i)||h.isFunctionExpression(i))?"function":"variable"}e.tags.add({name:t.name.text,kind:r})}}function Ze(t){if(h.isFunctionDeclaration(t))return h.isSourceFile(t.parent);let e=t.parent?.parent;return!!e&&h.isSourceFile(e.parent)}function Xe(t,e){if(!h.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 He(t,e){if(!h.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 Ye(t,e){if(h.isCallExpression(t)&&tr(t.expression))for(let r of t.arguments)h.isObjectLiteralExpression(r)&&er(r,e)}function tr(t){return h.isIdentifier(t)?Y.has(t.text):!!(h.isPropertyAccessExpression(t)&&(Y.has(t.name.text)||h.isIdentifier(t.expression)&&Y.has(t.expression.text)))}function er(t,e){for(let r of t.properties){if(!h.isPropertyAssignment(r)||!h.isIdentifier(r.name)||r.name.text!=="tags"&&r.name.text!=="tag")continue;let{initializer:i}=r,s=h.isArrayLiteralExpression(i)?i.elements.filter(h.isStringLiteral):r.name.text==="tag"&&h.isStringLiteral(i)?[i]:[];for(let n of s)e.tags.add({name:n.text.replace(/^@/,""),kind:"comment-marker"})}}function tt(t,e,r){let i=[],s=new Map,n=new Set,o=l.createSourceFile(t,e,l.ScriptTarget.Latest,!0,r==="typescript"?l.ScriptKind.TSX:l.ScriptKind.JSX),a={filePath:t,imports:i,exports:s,tags:n,rawCallEdges:[],sourceFile:o,hasUI:!1,hasTypesOnly:!0,totalStatements:0,exportStatements:0},c=b=>{nr(b,a),l.forEachChild(b,c)};c(o);let m=yr(t,a);(m==="test"||m==="barrel")&&n.add({name:m,kind:"comment-marker"}),m!=="test"&&xr(a,o);let p=o.statements[0],f=p?It(p):void 0,{complexity:x,cognitiveComplexity:g}=H(o),N=rr(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 rr(t){let e=[],r=(s,n)=>{let{complexity:o,cognitiveComplexity:a}=H(n),c=t.getLineAndCharacterOfPosition(n.getStart(t)).line+1;e.push({name:s,line:c,complexity:o,cognitiveComplexity:a})},i=(s,n)=>{if(l.isFunctionDeclaration(s)&&s.name&&s.body?r(s.name.text,s):l.isVariableDeclaration(s)&&l.isIdentifier(s.name)&&s.initializer&&(l.isArrowFunction(s.initializer)||l.isFunctionExpression(s.initializer))?r(s.name.text,s.initializer):n&&l.isMethodDeclaration(s)&&l.isIdentifier(s.name)&&s.body?r(`${n}.${s.name.text}`,s):n&&l.isConstructorDeclaration(s)&&s.body?r(`${n}.constructor`,s):n&&l.isGetAccessorDeclaration(s)&&l.isIdentifier(s.name)&&s.body?r(`${n}.get ${s.name.text}`,s):n&&l.isSetAccessorDeclaration(s)&&l.isIdentifier(s.name)&&s.body&&r(`${n}.set ${s.name.text}`,s),l.isClassDeclaration(s)&&s.name){let o=s.name.text;l.forEachChild(s,a=>i(a,o));return}l.forEachChild(s,o=>i(o,n))};return i(t,void 0),e}function Tt(t,e,r,i){let s={name:t},n=It(r);n!==void 0&&(s.doc=n);let o=ir(e);o!==void 0&&(s.flags=o);let a=sr(e,i);return a!==void 0&&(s.signature=a),s}function It(t){let e=l.getJSDocCommentsAndTags(t);for(let r of e)if(l.isJSDoc(r)&&r.comment)return l.getTextOfJSDocComment(r.comment)||void 0}function ir(t){let e=new Set(["deprecated","internal","public","alpha","beta"]),r=l.getJSDocTags(t).map(i=>i.tagName.text).filter(i=>e.has(i));return r.length>0?r:void 0}function sr(t,e){let r=l.createPrinter({removeComments:!0}),i=s=>r.printNode(l.EmitHint.Unspecified,s,e);if(l.isFunctionDeclaration(t)||l.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.isVariableDeclaration(t)){if(t.type)return i(t.type);if(t.initializer&&(l.isArrowFunction(t.initializer)||l.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.isClassDeclaration(t)&&t.name)return`class ${t.name.text}`;if(l.isInterfaceDeclaration(t))return`interface ${t.name.text}`;if(l.isTypeAliasDeclaration(t))return i(t.type);if(l.isEnumDeclaration(t))return`enum ${t.name.text}`}function nr(t,e){or(t,e),ar(t,e),lr(t,e),mr(t,e),dr(t,e),wt(t,e)}function or(t,e){if(!l.isSourceFile(t))return;let r=t.statements.filter(i=>!l.isEmptyStatement(i));e.totalStatements=r.length,e.exportStatements=r.filter(i=>l.isExportDeclaration(i)||l.isExportAssignment(i)||et(i)).length}function ar(t,e){if(l.isJsxElement(t)||l.isJsxSelfClosingElement(t)||l.isJsxFragment(t)){e.hasUI=!0,e.hasTypesOnly=!1;return}if(l.isFunctionDeclaration(t)||l.isMethodDeclaration(t)||l.isArrowFunction(t)||l.isClassDeclaration(t)||l.isVariableStatement(t)||l.isEnumDeclaration(t)){e.hasTypesOnly=!1;return}l.isExportDeclaration(t)&&!cr(t)&&(e.hasTypesOnly=!1)}function cr(t){return t.isTypeOnly?!0:!t.exportClause||!l.isNamedExports(t.exportClause)?!1:t.exportClause.elements.every(e=>e.isTypeOnly)}function lr(t,e){if(!l.isImportDeclaration(t)||!t.moduleSpecifier||!l.isStringLiteral(t.moduleSpecifier))return;let r=[];if(t.importClause&&(t.importClause.name&&r.push("default"),t.importClause.namedBindings))if(l.isNamedImports(t.importClause.namedBindings))for(let s of t.importClause.namedBindings.elements)r.push(s.name.text);else l.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 mr(t,e){l.isExportDeclaration(t)?pr(t,e):l.isExportAssignment(t)?e.exports.set("default",{name:"default"}):et(t)&&gr(t,e)}function pr(t,e){if(t.moduleSpecifier&&l.isStringLiteral(t.moduleSpecifier))fr(t,t.moduleSpecifier.text,e);else if(t.exportClause&&l.isNamedExports(t.exportClause))for(let r of t.exportClause.elements){let i=r.name.text;e.exports.set(i,{name:i})}}function fr(t,e,r){let i=ur(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 ur(t){return t.exportClause?l.isNamedExports(t.exportClause)?t.exportClause.elements.map(e=>e.name.text):[]:["*"]}function gr(t,e){if((l.isFunctionDeclaration(t)||l.isClassDeclaration(t)||l.isInterfaceDeclaration(t)||l.isTypeAliasDeclaration(t)||l.isEnumDeclaration(t))&&t.name){let i=t.name.text;e.exports.set(i,Tt(i,t,t,e.sourceFile));return}if(l.isVariableStatement(t)){for(let i of t.declarationList.declarations)if(l.isIdentifier(i.name)){let s=i.name.text;e.exports.set(s,Tt(s,i,t,e.sourceFile))}}}function dr(t,e){if(!l.isCallExpression(t))return;let r=t.arguments[0];!r||!l.isStringLiteral(r)||(t.expression.kind===l.SyntaxKind.ImportKeyword?e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:r.text,isStyle:C(r.text),type:"dynamic"}):l.isIdentifier(t.expression)&&t.expression.text==="require"&&e.imports.push({fromPath:e.filePath,toPath:"",rawSpecifier:r.text,isStyle:C(r.text),type:"require"}))}function yr(t,e){let r=vt.basename(t).toLowerCase(),i=vt.extname(t).toLowerCase();return U().some(n=>r.includes(n))?"test":Ct(r)?"config":e.imports.some(n=>Z().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>X()?"barrel":"logic"}function et(t){return l.canHaveModifiers(t)&&l.getModifiers(t)?.some(e=>e.kind===l.SyntaxKind.ExportKeyword)===!0}function xr(t,e){let r=t.rawCallEdges??[];t.rawCallEdges=r;let i=new Map;for(let s of e.statements){if(!l.isImportDeclaration(s)||!l.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.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=Sr(s);if(n){let o=br(s);o&&V(o,n,i,r);continue}l.isClassDeclaration(s)&&s.name&&hr(s,s.name.text,i,r)}}function hr(t,e,r,i){for(let s of t.members)l.isMethodDeclaration(s)&&s.body&&l.isIdentifier(s.name)?V(s.body,`${e}.${s.name.text}`,r,i):l.isConstructorDeclaration(s)&&s.body&&V(s.body,`${e}.constructor`,r,i)}function Sr(t){if(et(t)){if(l.isFunctionDeclaration(t)&&t.name)return t.name.text;if(l.isVariableStatement(t)){for(let e of t.declarationList.declarations)if(l.isIdentifier(e.name)&&e.initializer&&(l.isArrowFunction(e.initializer)||l.isFunctionExpression(e.initializer)))return e.name.text}}}function br(t){if(l.isFunctionDeclaration(t))return t.body;if(l.isVariableStatement(t)){for(let e of t.declarationList.declarations)if(e.initializer&&(l.isArrowFunction(e.initializer)||l.isFunctionExpression(e.initializer)))return e.initializer}}function V(t,e,r,i){if(l.isCallExpression(t)&&l.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.forEachChild(t,s=>V(s,e,r,i))}function $(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"}import Ft from"postcss";import*as Cr from"postcss-less";var Nr=Cr,Pt=new Set(["reference","inline"]);function kt(t){return t.startsWith("~")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")||t.startsWith("data:")}function Er(t){let e=t.trim();return e.length>0&&!e.startsWith("http://")&&!e.startsWith("https://")&&!e.startsWith("//")&&!e.startsWith("data:")&&!e.startsWith("#")}function wr(t,e){let r=t.match(/^\(([^)]+)\)\s+['"]([^'"]+)['"]/);if(r){let n=r[1]?.trim()??"",o=r[2]??"";if(!o)return null;let a=Pt.has(n)?"side-effect":"static";return{fromPath:e,toPath:"",rawSpecifier:o,isStyle:!0,type:a,...kt(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",...kt(s)?{isExternal:!0}:{}}:null}function vr(t,e){let r=[],i=/url\(['"]?([^'")]+)['"]?\)/g,s=i.exec(t);for(;s!==null;){let n=s[1]?.trim()??"";Er(n)&&r.push({fromPath:e,toPath:"",rawSpecifier:n,isStyle:!0,type:"static"}),s=i.exec(t)}return r}function Dt(t,e){let r=[];return t.walk(i=>{if(i.type==="atrule"&&i.name==="import"){let s=wr(i.params,e);s&&r.push(s)}i.type==="decl"&&r.push(...vr(i.value,e))}),r}function Tr(t){return t.replace(/(?<!:)\/\/.*/g,"")}function Ir(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=Pt.has(n)?"side-effect":"static";r.push({fromPath:e,toPath:"",rawSpecifier:o,isStyle:!0,type:a})}s=i.exec(t)}return r}function Lt(t,e){let r=Ft.parse(Tr(t));return{imports:Dt(r,e),root:r}}function kr(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 At(t,e){try{let r=Nr.parse(t),{exports:i,tags:s}=kr(r);return{imports:Dt(r,e),root:r,exports:i,tags:s}}catch{return{imports:Ir(t,e),root:Ft.parse(""),exports:[],tags:[]}}}import{parse as Fr}from"postcss-scss";function Rt(t){return t.startsWith("_")||t.startsWith("-")}function Pr(t){return!!(t.startsWith("sass:")||t.startsWith("~")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")||!t.startsWith(".")&&!t.startsWith("/")&&!t.startsWith("_"))}function Dr(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 Lr(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||Rt(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||Rt(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 Mt(t,e){let r=Fr(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}=Dr(c);if(!m)return;let f={fromPath:e,toPath:"",rawSpecifier:m,isStyle:!0,type:a==="forward"?"re-export":"static",...Pr(m)?{isExternal:!0}:{}};p&&(f.symbols=[p]),i.push(f)});let{exports:s,tags:n}=Lr(r);return{imports:i,root:r,exports:s,tags:n}}function Bt(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 Wt(t,e){if(e.length===0)return"ui";try{let r=Kt("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 K(t,e){let r=M(t);if(r==="stylus"){let n=Bt(e,t);return{imports:n,exports:[],tags:[],category:Wt(e,n)}}if(r==="scss"){let{imports:n,root:o,exports:a,tags:c}=Mt(e,t);return{imports:n,exports:a,tags:c,category:$(o,n)}}if(r==="less"){let{imports:n,root:o,exports:a,tags:c}=At(e,t);return{imports:n,exports:a,tags:c,category:$(o,n)}}let{imports:i,root:s}=Lt(e,t);return{imports:i,exports:[],tags:[],category:$(s,i)}}for(let[t,e]of[["javascript",(r,i)=>tt(r,i,"javascript")],["typescript",(r,i)=>tt(r,i,"typescript")],["css",K],["scss",K],["less",K],["stylus",K],["coffeescript",nt],["livescript",ut],["lua",gt],["python",bt],["go",ft],["gherkin",q],["markdown",xt]])B(t,e);async function Ot(t,e){let r=M(t),i=at(r);return i?i(t,e):{imports:[],exports:[],tags:[],category:"other"}}function Ar(t){return Ot(t.filePath,t.content)}export{Ar as default};
|
|
3
3
|
//# sourceMappingURL=parse-worker.mjs.map
|