@ngcompass/planner 0.1.1-beta
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/LICENSE +21 -0
- package/dist/index.cjs +3 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +826 -0
- package/dist/index.d.ts +826 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/package.json +55 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import {minimatch}from'minimatch';import {debug,time,Err,InfrastructureErrorCollector,timeLog,Ok,createInfrastructureError}from'@ngcompass/common';export{Err,Ok}from'@ngcompass/common';import*as k from'path';import k__default from'path';import*as I from'fs/promises';import {readdir,readFile}from'fs/promises';import {computeHash,initHasher}from'@ngcompass/cache';var ve=(e,t)=>t.filter(s=>Fe(e,Array.isArray(s.files)?s.files:[s.files])),ae=(e,t,s)=>{let a=ve(e,s);if(a.length===0)return t;let r=new Map(t);for(let l of a)if(l.rules)for(let[n,i]of Object.entries(l.rules)){let o=r.get(n);if(!o)continue;let p=be(i);p.severity==="off"?r.delete(n):r.set(n,{...o,severity:p.severity,options:{...o.options,...p.options}});}return r},Fe=(e,t)=>t.some(s=>minimatch(e.replace(/\\/g,"/"),s,{dot:true})),be=e=>typeof e=="string"?{severity:e,options:{}}:typeof e=="object"&&e!==null&&"severity"in e?{severity:e.severity,options:e.options??{}}:{severity:"off",options:{}};var re=/\@(Component|Directive|Pipe|Injectable|NgModule)\s*[\(\{]/,E=e=>{let t=k__default.basename(e),s=k__default.extname(e);return t.endsWith(".component.ts")?"component":t.endsWith(".directive.ts")?"directive":t.endsWith(".pipe.ts")?"pipe":t.endsWith(".service.ts")?"service":t.endsWith(".module.ts")?"module":t.endsWith(".guard.ts")?"guard":s===".html"?"template":s===".css"||s===".scss"||s===".sass"||s===".less"?"style":t.endsWith(".config.ts")||s===".json"?"config":t.endsWith(".spec.ts")||t.endsWith(".test.ts")?"spec":s===".ts"?"logic":"unknown"},Se=e=>k__default.extname(e)===".ts",Ce=e=>k__default.extname(e)===".html",$e=e=>{let t=k__default.extname(e);return t===".css"||t===".scss"||t===".sass"||t===".less"},Ae=e=>k__default.basename(e).endsWith(".spec.ts"),F=e=>k__default.basename(e).endsWith(".component.ts"),b=e=>{let t=k__default.basename(e);for(let s of [".component.ts",".directive.ts",".pipe.ts",".service.ts",".module.ts",".guard.ts",".spec.ts"])if(t.endsWith(s))return t.slice(0,-s.length);return k__default.basename(e,k__default.extname(e))};var U=async(e,t,s={})=>{let a=performance.now();if(debug("incremental",`Filtering ${e.length} tasks by cache...`),s.forceRerun)return He(e);let r=e.map(c=>c.taskId);if(r.length===0)return Ie();let l=await t.hasMany(r);debug("incremental",`Found ${l.size}/${e.length} tasks in cache`);let{skippedTasks:n,tasks:i}=je(e,l),o=await Be(t,n,s),p=Oe(e.length,n.length,i.length);return Ne(a,p),{skippedTasks:n,tasks:i,cachedResults:o,stats:p}},Re=async(e,t)=>{if(e.length===0)return true;let s=e.map(a=>a.taskId);return (await t.hasMany(s)).size===e.length},Pe=async(e,t)=>{if(e.length===0)return 0;let s=e.map(a=>a.taskId);return (await t.hasMany(s)).size/e.length},Ee=async(e,t,s={})=>{if(debug("incremental","Pruning stale cache entries..."),e.length===0)return debug("incremental","No tasks to prune"),0;let a=await t.getManyWithMetadata(e);if(a.size===0)return debug("incremental","Cache is empty, nothing to prune"),0;let{now:r,maxAgeMs:l,minHits:n}=Me(s),i=We(a,r,l,n),o=await Le(t,i);return debug("incremental",`Pruned ${o} stale entries`),o},He=e=>{debug("incremental","Force rerun enabled - skipping cache check");let t={totalTasks:e.length,cachedTasks:0,pendingTasks:e.length,cacheHitRate:0,timeSavedEstimate:0};return {skippedTasks:[],tasks:e,cachedResults:new Map,stats:t}},Ie=()=>({skippedTasks:[],tasks:[],cachedResults:new Map,stats:{totalTasks:0,cachedTasks:0,pendingTasks:0,cacheHitRate:0,timeSavedEstimate:0}}),je=(e,t)=>{let s=[],a=[];for(let r of e)t.has(r.taskId)?s.push(r):a.push(r);return {skippedTasks:s,tasks:a}},Be=async(e,t,s)=>{if(!s.loadCachedResults||t.length===0)return new Map;debug("incremental",`Loading ${t.length} cached results...`);let a=t.map(l=>l.taskId),r=await e.getMany(a);return debug("incremental",`Loaded ${r.size} cached results`),r},Oe=(e,t,s)=>{let a=e>0?t/e:0;return {totalTasks:e,cachedTasks:t,pendingTasks:s,cacheHitRate:a,timeSavedEstimate:100*a}},Ne=(e,t)=>{let s=performance.now()-e;debug("incremental",`Cache filtering completed in ${s.toFixed(2)}ms`),debug("incremental",`Cache hit rate: ${(100*t.cacheHitRate).toFixed(1)}%`),debug("incremental",`Skipping ${t.cachedTasks} tasks, executing ${t.pendingTasks} tasks`);},Me=e=>({now:Date.now(),maxAgeMs:e.maxAge??6048e5,minHits:e.minHits??1}),We=(e,t,s,a)=>{let r=[];for(let[,l]of e){let n=t-l.metadata.timestamp>s,i=l.metadata.hits<a;(n||i)&&r.push(l.metadata.taskId);}return r},Le=async(e,t)=>{let s=0;for(let a of t)await e.delete(a),s++;return s};var _=[".css",".scss",".sass",".less"],_e=/templateUrl\s*:\s*['"`]([^'"`\n]+)['"`]/,De=/\bstyleUrl(?!s)\s*:\s*['"`]([^'"`\n]+)['"`]/,Ge=/\bstyleUrls\s*:\s*\[([^\]]+)\]/,le=/['"`]([^'"`\n]+\.(?:css|scss|sass|less))['"`]/g,Ke=async(e,t)=>{try{let s=await readFile(e,"utf-8"),a=_e.exec(s);return a?k__default.resolve(t,a[1]):void 0}catch{return}},qe=async(e,t)=>{try{let s=await readFile(e,"utf-8"),a=[],r=De.exec(s);r&&a.push(k__default.resolve(t,r[1]));let l=Ge.exec(s);if(l){let n;for(le.lastIndex=0;(n=le.exec(l[1]))!==null;)a.push(k__default.resolve(t,n[1]));}return a}catch{return []}},D=async(e,t,s,a,r,l)=>{let n=k__default.dirname(e),i=b(e),o=await H(n,l),p=A(e,t),c=tt(n,i,o,s);if(!c){let h=await Ke(e,n);h&&(c=A(h,s));}let u=st(e,n,i,o,a);u.length===0&&F(e)&&(u=(await qe(e,n)).map(h=>A(h,a)));let d=at(n,i,o,r);return {typescript:p,template:c,styles:u.length>0?u:void 0,spec:d}},Ye=async(e,t,s)=>{let a=k__default.dirname(e),r=b(e),l=await H(a,s);return t==="template"?Qe(r,l):t==="style"?!!F(e)&&Ze(r,l):et(r,l)},Ve=async(e,t)=>{if(!F(e))return [];let s=k__default.dirname(e),a=b(e),r=await H(s,t);return _.flatMap(l=>{let n=K(a,l);return r.includes(n)?[k__default.join(s,n)]:[]})},Je=async(e,t)=>{if(!F(e))return null;let s=k__default.dirname(e),a=b(e),r=await H(s,t),l=G(a);return r.includes(l)?k__default.join(s,l):null},Xe=async(e,t)=>{let s=k__default.dirname(e),a=b(e),r=await H(s,t),l=q(a);return r.includes(l)?k__default.join(s,l):null},H=async(e,t)=>{let s=t?.get(e);if(s)return s;try{let a=await readdir(e);return t?.set(e,a),a}catch(a){return debug("planner",`Failed to read directory: ${e}. Error: ${a instanceof Error?a.message:String(a)}`),[]}},A=(e,t)=>({path:e,needsAst:t,hash:""}),G=e=>`${e}.component.html`,K=(e,t)=>`${e}.component${t}`,q=e=>`${e}.spec.ts`,Qe=(e,t)=>t.includes(G(e)),Ze=(e,t)=>_.some(s=>t.includes(K(e,s))),et=(e,t)=>t.includes(q(e)),tt=(e,t,s,a)=>{let r=G(t);return s.includes(r)?A(k__default.join(e,r),a):void 0},st=(e,t,s,a,r)=>{if(!F(e))return [];let l=[];for(let n of _){let i=K(s,n);a.includes(i)&&l.push(A(k__default.join(t,i),r));}return l},at=(e,t,s,a)=>{let r=q(t);return s.includes(r)?A(k__default.join(e,r),a):void 0};var ie=async(e,t,s)=>{for(let a=0;a<e.length;a+=500){let r=e.slice(a,a+500);await Promise.all(r.map(async l=>{if(!s.has(l))try{let n=await I.stat(l),i=n.mtimeMs,o=n.size,p=await t.get(l);if(p&&p.mtime===i&&p.size===o)return void s.set(l,p.hash);let c=await R(l);s.set(l,c),await t.set(l,{mtime:i,size:o,hash:c});}catch{return}}));}t.flush&&await t.flush();},R=async(e,t)=>{let s=t?.get(e);if(s)return s;try{let a=await I.readFile(e,"utf-8"),r=computeHash(a);return t?.set(e,r),r}catch(a){return debug("planner",`Failed to hash file: ${e}. Error: ${a instanceof Error?a.message:String(a)}`),""}};var oe=async(e,t)=>{if(e.length===0)return "";let s=await Promise.all(e.map(async a=>`${a}:${await R(a,t)}`));return s.sort(),computeHash(s.join("|"))},pe=e=>{let t=new WeakSet,s=a=>{if(a&&typeof a=="object"){if(t.has(a))return "[Circular]";if(t.add(a),Array.isArray(a))return a.map(s);let r={};for(let l of Object.keys(a).sort())r[l]=s(a[l]);return r}return a};return JSON.stringify(s(e))},Y=e=>computeHash(pe(e.map(t=>({name:t.name,severity:t.severity,options:t.options})).sort((t,s)=>t.name.localeCompare(s.name)))),V=(e,t)=>{let s=[];if(s.push(e.typescript.hash),e.template&&s.push(e.template.hash),e.styles){let a=e.styles.map(r=>r.hash).sort();s.push(...a);}return e.spec&&s.push(e.spec.hash),s.push(Y(t)),computeHash(s.join("::"))},lt=async e=>{let t=[e.typescript.path];return e.template&&t.push(e.template.path),e.styles&&t.push(...e.styles.map(s=>s.path)),e.spec&&t.push(e.spec.path),oe(t)},nt=async e=>{try{let t=await I.stat(e);return computeHash(`${e}::${t.size}::${t.mtimeMs}`)}catch{return ""}},ce=(e,t,s,a)=>{let r=[];if(a&&(r.push(a.toolVersion),r.push(a.ruleRegistryHash)),r.push(e),r.push(t.typescript.path),r.push(t.typescript.hash),t.template&&r.push(t.template.hash),t.styles?.length){let l=t.styles.map(n=>n.hash).sort().join("::");r.push(l);}return t.spec&&r.push(t.spec.hash),r.push(pe(s)),computeHash(r.join("::"))},ue=async(e,t,s,a)=>{let r=await Promise.all(e.map(async n=>`${n}:${s.get(n)??await R(n,s)}`));r.sort();let l=[];return l.push(...r),l.push(Y(Array.from(t.values()))),a&&(l.push(`tool:${a.toolVersion}`),l.push(`parser:${a.parserVersion}`),l.push(`registry:${a.ruleRegistryHash}`),l.push(`platform:${a.platform}`)),computeHash(l.join("||"))};var he=(e,t)=>{let{dependencyType:s}=e.metadata;return s==="standalone"||s==="imports"?ut(t):s==="component"?t==="component"||t==="directive"||t==="angular-class":s==="styles"?t==="component":s==="spec"&&t==="spec"},ot=(e,t)=>{let s=[];for(let a of e.values())a.metadata.requires[t]&&s.push(a);return s};var pt=e=>{let t={standalone:[],component:[],styles:[],imports:[],spec:[]};for(let s of e.values())t[s.metadata.dependencyType].push(s);return t},me=async(e,t,s,a)=>{let r=ht(s,t);if(!r.apply)return debug("planner",` - Rule ${s.name} skipped: ${r.reason}`),null;let l=de(s),n=await ct(e,s,a);return {taskId:ce(s.name,n,s.options,a?.cacheKeyCtx),ruleName:s.name,filePath:e,severity:s.severity,options:s.options,inputs:n,needsTypeChecker:l.needsTypeChecker,needsProjectContext:l.needsProjectContext||void 0}},J=async(e,t,s,a)=>{let r=[];for(let l of s.values()){let n=await me(e,t,l,a);n&&r.push(n);}return r},ct=async(e,t,s)=>{let a=de(t),r=await mt(e,s),l={typescript:await X(r.typescript.path,a.needsTsAst,s)},n=dt(e,r,t,a,l,s);n&&(l.template=n);let i=await ft(r,t,a,s);i&&(l.styles=i);let o=await yt(r,a,s);return o&&(l.spec=o),l},ut=e=>e!=="template"&&e!=="style"&&e!=="config"&&e!=="unknown",ht=(e,t)=>he(e,t)?e.severity==="off"?{apply:false,reason:"disabled ('off')"}:{apply:true,reason:"applicable"}:{apply:false,reason:`does not apply to ${t}`},de=e=>{let t=e.metadata.requires;return {needsTsAst:!!t.tsAst,needsHtmlAst:!!t.htmlAst,needsCssAst:!!t.cssAst,needsSpecAst:!!t.specAst,needsTypeChecker:!!t.typeChecker,needsProjectContext:!!t.projectContext}},mt=async(e,t)=>{let s=t?.resourceCache?.get(e);if(s)return s;if(t?.componentGraph){let r=t.componentGraph.getResources(e);if(r){t.graphStats&&t.graphStats.hits++;let l={typescript:{path:e,hash:"",needsAst:false},styles:r.stylePaths.map(n=>({path:n,hash:"",needsAst:false}))};return r.templatePath&&(l.template={path:r.templatePath,hash:"",needsAst:false}),r.specPath&&(l.spec={path:r.specPath,hash:"",needsAst:false}),t?.resourceCache?.set(e,l),l}t.graphStats&&t.graphStats.misses++;}t?.graphStats&&t.graphStats.fallbacks++;let a=await D(e,true,true,true,true,t?.directoryCache);return t?.resourceCache?.set(e,a),a},X=async(e,t,s)=>({path:e,hash:await R(e,s?.hashCache),needsAst:t}),dt=(e,t,s,a,r,l)=>{let{dependencyType:n}=s.metadata,i=a.needsHtmlAst&&(n==="component"||n==="styles");return t.template?{path:t.template.path,hash:l?.hashCache?.get(t.template.path)??t.template.hash??"",needsAst:i}:n==="component"&&a.needsHtmlAst?{path:e,hash:r.typescript.hash,needsAst:true}:void 0},ft=async(e,t,s,a)=>{if(!e.styles||e.styles.length===0)return;let r=s.needsCssAst&&t.metadata.dependencyType==="styles";return Promise.all(e.styles.map(l=>X(l.path,r,a)))},yt=async(e,t,s)=>{if(e.spec)return X(e.spec.path,t.needsSpecAst,s)};function P(e,t){debug("planner","Generating execution indexes...");let s=Q(e,"typescript"),a=Q(e,"html"),r=Q(e,"css"),l=kt(e),n=t?At(t):{},i=t?Rt(t):Pt(),o=Tt(e),p=wt(e),c=vt(e),u=bt(e);return Ht(e,t,s,a,r,o),{filesNeedingTsAst:s,filesNeedingHtmlAst:a,filesNeedingCssAst:r,filesNeedingTypeChecker:l,tasksByFile:n,tasksBySeverityLevel:i,tasksByRule:o,filesByType:p,tasksBySeverity:c,stats:u}}var Q=(e,t)=>{let s=new Set;for(let[a,r]of Object.entries(e))r.tasks.some(l=>gt(l,t))&&s.add(a);return Array.from(s).sort()},gt=(e,t)=>{switch(t){case "typescript":return !!e.inputs.typescript.needsAst;case "html":return !!e.inputs.template?.needsAst;case "css":return !!e.inputs.styles?.some(s=>s.needsAst)}},kt=e=>{let t=new Set;for(let[s,a]of Object.entries(e))a.tasks.some(r=>r.needsTypeChecker===true||r.needsProjectContext===true)&&t.add(s);return Array.from(t).sort()},Tt=e=>{let t={};for(let[s,a]of Object.entries(e))for(let r of a.tasks)(t[r.ruleName]??=[]).push(s);for(let s of Object.keys(t))t[s].sort();return t},wt=e=>{let t=xt();for(let[s,a]of Object.entries(e))t[a.file.type].push(s);for(let s of Object.keys(t))t[s].sort();return t},xt=()=>({component:[],directive:[],pipe:[],service:[],module:[],guard:[],logic:[],"angular-class":[],spec:[],template:[],style:[],config:[],unknown:[]}),vt=e=>{let t=Ft();for(let s of Object.values(e))for(let a of s.tasks)t[a.severity]++;return t},Ft=()=>({off:0,warn:0,error:0}),bt=e=>{let t=Object.values(e),s=t.length,a=0,r=0,l=0,n=0;for(let i of t)a+=i.tasks.length,i.tasks.some(o=>!!o.inputs.template)&&r++,i.tasks.some(o=>!!o.inputs.styles?.length)&&l++,i.tasks.some(o=>!!o.inputs.spec)&&n++;return {totalFiles:s,totalTasks:a,avgTasksPerFile:s>0?a/s:0,filesWithTemplates:r,filesWithStyles:l,filesWithSpecs:n}},St=(e,t)=>{let s=new Set;for(let a of t){let r=e[a];if(r)for(let l of r)s.add(l);}return Array.from(s).sort()},Ct=e=>e.stats.totalTasks,$t=(e,t)=>e.tasksBySeverity[t],At=e=>{let t={};for(let s of e)(t[s.filePath]??=[]).push(s);for(let s of Object.keys(t))t[s].sort((a,r)=>a.ruleName.localeCompare(r.ruleName));return t},Rt=e=>{let t=Et();for(let s of e)t[s.severity].push(s);for(let s of Object.keys(t))t[s].sort((a,r)=>{let l=a.filePath.localeCompare(r.filePath);return l!==0?l:a.ruleName.localeCompare(r.ruleName)});return t},Pt=()=>({off:[],warn:[],error:[]}),Et=()=>({off:[],warn:[],error:[]}),Ht=(e,t,s,a,r,l)=>{debug("planner","Indexing complete:"),debug("planner",` - TypeScript AST needed: ${s.length} files`),debug("planner",` - HTML AST needed: ${a.length} files`),debug("planner",` - CSS AST needed: ${r.length} files`),debug("planner",` - Unique rules to run: ${Object.keys(l).length}`),t&&debug("planner",` - Total tasks: ${t.length}`);};var fe=e=>{let t=new j,s=new j,a=new j,r=new Z,l=Object.values(e.plan).map(n=>It(n,t,s,a,r));return {v:1,r:t.values(),o:r.values(),f:s.values(),h:a.values(),t:l}},ye=e=>{let{r:t,o:s,f:a,h:r,t:l}=e,n={},i=[];for(let p of l){let{filePath:c,fileType:u,fileHash:d,ruleTasks:h}=Bt(p,t,a,r,s);for(let y of(n[c]={file:{path:c,type:u,hash:d},tasks:h},h))i.push(Nt(c,y));}let o=P(n,i);return {tasks:i,plan:n,indexes:o,skippedTasks:[]}},It=(e,t,s,a,r)=>{let l=s.id(e.file.path),n=a.idOrMinusOne(e.file.hash),i=e.tasks.map(o=>jt(o,t,s,a,r));return [l,e.file.type,n,i]},jt=(e,t,s,a,r)=>{let l=t.id(e.ruleName),n=r.id(e.options),i=a.idOrMinusOne(e.cacheKey),o=N(e.inputs.typescript,s,a),p=e.inputs.template?N(e.inputs.template,s,a):void 0,c=e.inputs.styles&&e.inputs.styles.length>0?e.inputs.styles.map(h=>N(h,s,a)):void 0,u=e.inputs.spec?N(e.inputs.spec,s,a):void 0,d=+!!e.needsTypeChecker;return [l,e.severity,n,i,o,p,c,u,d]},N=(e,t,s)=>[t.id(e.path),s.idOrMinusOne(e.hash),+!!e.needsAst],Bt=(e,t,s,a,r)=>{let[l,n,i,o]=e;return {filePath:s[l],fileType:n,fileHash:ee(i,a),ruleTasks:o.map(c=>Ot(c,t,s,a,r))}},Ot=(e,t,s,a,r)=>{let[l,n,i,o,p,c,u,d,h]=e,y=t[l],f=r[i],L=ee(o,a),$={typescript:M(p,s,a)};return c&&($.template=M(c,s,a)),u&&($.styles=u.map(g=>M(g,s,a))),d&&($.spec=M(d,s,a)),{ruleName:y,severity:n,options:f,cacheKey:L,inputs:$,needsTypeChecker:h===1||void 0}},M=(e,t,s)=>({path:t[e[0]],hash:ee(e[1],s),needsAst:e[2]===1}),ee=(e,t)=>e>=0?t[e]:"",Nt=(e,t)=>({taskId:t.cacheKey,filePath:e,ruleName:t.ruleName,severity:t.severity,options:t.options,inputs:t.inputs,needsTypeChecker:t.needsTypeChecker}),j=class{map=new Map;list=[];id(t){let s=this.map.get(t);if(s!==void 0)return s;let a=this.list.length;return this.map.set(t,a),this.list.push(t),a}idOrMinusOne(t){return t?this.id(t):-1}values(){return this.list}},Z=class{map=new Map;list=[];id(t){let s=this.map.get(t);if(s!==void 0)return s;let a=this.list.length;return this.map.set(t,a),this.list.push(t),a}values(){return this.list}};var te=e=>{let t=new Map;for(let s of e){let a=t.get(s.filePath);a?a.push(s):t.set(s.filePath,[s]);}return t};var Mt=/templateUrl\s*:\s*['"`]([^'"`\n]+)['"`]/,Wt=/\bstyleUrl(?!s)\s*:\s*['"`]([^'"`\n]+)['"`]/,Lt=/\bstyleUrls\s*:\s*\[([^\]]+)\]/,ge=/['"`]([^'"`\n]+\.(?:css|scss|sass|less))['"`]/g;async function zt(e,t,s){try{let a=await readFile(e,"utf-8"),r=Mt.exec(a);if(!r)return;let l=k.resolve(t,r[1]);return s.has(l)?l:void 0}catch{return}}async function Ut(e,t,s){try{let a=await readFile(e,"utf-8"),r=[],l=Wt.exec(a);if(l){let i=k.resolve(t,l[1]);s.has(i)&&r.push(i);}let n=Lt.exec(a);if(n){let i;for(ge.lastIndex=0;(i=ge.exec(n[1]))!==null;){let o=k.resolve(t,i[1]);s.has(o)&&r.push(o);}}return r}catch{return []}}var W=class{graph=new Map;async build(t){this.graph.clear();let s=new Set(t),a=new Map;for(let r of t){let l=k.dirname(r),n=a.get(l);n?n.push(r):a.set(l,[r]);}for(let[r,l]of a){let n=new Set(l);for(let i of l.filter(o=>o.endsWith(".component.ts"))){let o=k.basename(i,".component.ts"),p=k.join(r,o),c=[`${p}.component.html`,`${p}.html`].find(h=>n.has(h));c||(c=await zt(i,r,s));let u=l.filter(h=>{if(!h.startsWith(p))return false;let y=k.extname(h);return (h===`${p}.component${y}`||h===`${p}${y}`)&&/\.(css|scss|sass|less)$/.test(y)});u.length===0&&(u=await Ut(i,r,s));let d={tsPath:i,templatePath:c,stylePaths:u,specPath:n.has(`${p}.component.spec.ts`)?`${p}.component.spec.ts`:n.has(`${p}.spec.ts`)?`${p}.spec.ts`:void 0,type:"component"};this.graph.set(i,d);}}}getResources(t){return this.graph.get(t)}};var Yt=async e=>{let t="buildExecutionPlan";time(t);try{let s,a,r,l;await initHasher();let{files:n,rules:i}=e;debug("planner",`Building execution plan for ${n.length} files and ${i.size} rules`);let o=Jt(n,i);if(o)return Err(o);let p=Xt(e),c=new Map,u=new InfrastructureErrorCollector,d=await Qt(e,p,u);if(!d&&e.cache){debug("planner","Warming up hash cache from metadata index...");let g=performance.now();await ie(e.files,e.cache.metas,p.hashCache),debug("planner",`Metadata warmup took ${(performance.now()-g).toFixed(2)}ms`);}if(!d){let g=new W;await g.build(e.files),p.componentGraph=g,p.graphStats={hits:0,misses:0,fallbacks:0},debug("planner","Component dependency graph built");}if(d&&d.precomputedAnalysis)return timeLog(t,"planner","Full analysis cached \u2014 returning precomputed result"),Ok(d);if(d)timeLog(t,"planner","Execution plan loaded from cache"),s=d.tasks;else {if(debug("planner","Building tasks..."),s=await ss(n,i,p,c,e.parallelThreshold,e.workerCount,e.overrides),e.debug&&p.graphStats){let{hits:g,misses:v,fallbacks:z}=p.graphStats;debug("planner",`Graph stats \u2014 hits: ${g}, misses: ${v}, fallbacks: ${z}`);}if(e.cache&&p.globalHash){debug("planner","Converting all tasks to full plan for cache...");let g=Te(s,i,c),v=P(g,s),z={tasks:s,plan:g,indexes:v,skippedTasks:[],globalHash:p.globalHash};await Zt(e,p,z);}}let h=s,y=[];if(e.cache){debug("planner","Filtering cached tasks...");let g=await U(s,e.cache.results,e.incremental);h=g.tasks,y=g.skippedTasks,a=g.cachedResults,r=[...new Set(h.map(v=>v.filePath))],l=[...new Set(y.map(v=>v.filePath))].filter(v=>!r.includes(v));}debug("planner","Converting tasks to file-centric plan...");let f=Te(h,i,c);debug("planner",`Building indexes for ${h.length} tasks...`);let L=P(f,h),$={tasks:h,plan:f,indexes:L,skippedTasks:y,cachedResults:a,globalHash:p.globalHash,changedFiles:r,cachedFiles:l};return timeLog(t,"planner","Execution plan built"),Ok($)}catch(s){return debug("planner",`Error building plan: ${s.message}`),Err(Error(`Failed to build execution plan: ${s.message}`))}},Vt=e=>{let{stats:t}=e.indexes,s=[];return s.push("--- Execution Plan Summary ---"),s.push(`Total files: ${t.totalFiles}`),s.push(`Total tasks: ${t.totalTasks}`),s.push(`Avg tasks per file: ${t.avgTasksPerFile.toFixed(1)}`),s.push(`Files with templates: ${t.filesWithTemplates}`),s.push(`Files with styles: ${t.filesWithStyles}`),s.push(`Files with specs: ${t.filesWithSpecs}`),s.push(""),s.join(`
|
|
2
|
+
`)},Jt=(e,t)=>e.length===0?Error("No files to analyze"):t.size===0?Error("No rules configured"):null,Xt=e=>({hashCache:new Map,resourceCache:new Map,directoryCache:new Map,cacheKeyCtx:e?.cacheKeyCtx}),Qt=async(e,t,s)=>{let a;if(!e.cache)return null;let{files:r,rules:l}=e,n=await ue(r,l,t.hashCache,e.cacheKeyCtx);if(t.globalHash=n,e.incremental?.forceRerun)return null;let i=e.cache.analysis,o=await i.get(n);if(o)return e.debug&&debug("planner","Analysis results cached (Short-circuit enabled)"),{tasks:[],plan:{},indexes:{filesNeedingTsAst:[],filesNeedingHtmlAst:[],filesNeedingCssAst:[],filesNeedingTypeChecker:[],tasksByFile:{},tasksByRule:{},tasksBySeverityLevel:{off:[],warn:[],error:[]},filesByType:{component:[],directive:[],pipe:[],service:[],module:[],guard:[],logic:[],"angular-class":[],spec:[],template:[],style:[],config:[],unknown:[]},tasksBySeverity:{off:0,warn:0,error:0},stats:{totalFiles:0,totalTasks:0,avgTasksPerFile:0,filesWithTemplates:0,filesWithStyles:0,filesWithSpecs:0}},skippedTasks:[],globalHash:n,precomputedAnalysis:o};let p=performance.now(),c=await e.cache.plans.get(n),u=performance.now();if(!c)return null;let d=JSON.stringify(c).length,h=performance.now();try{a=c.v===1?ye(c):c;}catch(f){debug("planner","Plan cache deserialization failed \u2014 deleting corrupted entry and rebuilding");try{await e.cache.plans.delete?.(n);}catch{}return s&&s.record(createInfrastructureError("CacheCorruption",{cause:f instanceof Error?f.message:String(f),phase:"planner",recoverable:true,details:{globalHash:n}})),null}let y=performance.now();return e.debug&&(debug("planner","Plan cache HIT"),debug("planner",` Size: ${(d/1024).toFixed(1)}KB`),debug("planner",` IO: ${(u-p).toFixed(2)}ms`),debug("planner",` Deser: ${(y-h).toFixed(2)}ms`)),{...a,globalHash:n}},Zt=async(e,t,s)=>{if(!e.cache||!t.globalHash)return;let a=performance.now();debug("planner","Saving execution plan to cache...");let r=fe(s);await e.cache.plans.set(t.globalHash,r);let l=performance.now()-a;debug("planner",` Plan cache saved in ${l.toFixed(2)}ms`);},es=(e,t)=>{let s=new Set(e.map(r=>r.ruleName)),a=[];for(let r of s){let l=t.get(r);l&&a.push(l);}return a},ts=(e,t)=>e.length===0?"":V(e[0].inputs,t),ss=async(e,t,s,a,r=1e4,l=4,n)=>{if(await as(e,a),e.length>=r){let i=await ls(e,t,a,l,n);if(i)return i}return rs(e,t,s,a,n)},as=async(e,t)=>{if(!t)return;let s=e.filter(r=>!t.has(r)&&E(r)==="logic");if(s.length===0)return;debug("planner",`Level-2 classification: scanning ${s.length} unclassified .ts files for Angular decorators`);let a=performance.now();await Promise.all(s.map(async r=>{try{let l=await readFile(r,"utf8");t.set(r,re.test(l)?"angular-class":"logic");}catch{t.set(r,"logic");}})),debug("planner",`Level-2 classification complete in ${(performance.now()-a).toFixed(1)}ms \u2014 upgraded ${[...t.values()].filter(r=>r==="angular-class").length} files to 'angular-class'`);},rs=async(e,t,s,a,r)=>{let l=[];for(let n of e){let i=we(n,a),o=r?.length?ae(n,t,r):t,p=await J(n,i,o,s);l.push(...p);}return l},ls=async(e,t,s,a,r)=>{debug("planner",`Parallelizing task discovery across ${a} workers...`);try{let l=await ns();if(!l)return debug("planner","Worker script not found, falling back to sequential execution"),null;debug("planner",`Using worker: ${l}`);let n=is(e,a);debug("planner",`Split ${e.length} files into ${n.length} chunks`);let i=await os(n,l,t,s,r);return debug("planner",`Workers completed. Generated ${i.length} tasks.`),i}catch(l){return debug("planner",`Parallel execution failed, falling back to sequential: ${String(l)}`),null}},ns=async()=>{let{Worker:e}=await import('worker_threads'),{fileURLToPath:t}=await import('url'),{dirname:s,join:a}=await import('path'),{existsSync:r}=await import('fs'),l=s(t(import.meta.url));for(let n of [a(l,"worker.js"),a(l,"worker.cjs"),a(l,"worker.ts"),a(l,"planner","worker.js"),a(l,"planner","worker.cjs")])if(r(n))return n;return null},is=(e,t)=>{let s=Math.ceil(e.length/t),a=[];for(let r=0;r<e.length;r+=s)a.push(e.slice(r,r+s));return a},os=async(e,t,s,a,r)=>{let{Worker:l}=await import('worker_threads'),n=Array.from(s.entries()),i=a?Array.from(a.entries()):void 0,o=r?.length?[...r]:void 0,p=e.map((c,u)=>new Promise((d,h)=>{let y=new l(t,{workerData:{files:c,rulesEntries:n,fileTypeCacheEntries:i,overridesData:o}});y.on("message",f=>d(f.tasks)),y.on("error",f=>{debug("planner",`Worker ${u} error: ${String(f)}`),h(f instanceof Error?f:Error(String(f)));}),y.on("exit",f=>{f!==0&&h(Error(`Worker ${u} stopped with exit code ${f}`));});}));return (await Promise.all(p)).flat()},we=(e,t)=>{if(!t)return E(e);let s=t.get(e);if(s)return s;let a=E(e);return t.set(e,a),a},Te=(e,t,s)=>{let a=te(e),r={};for(let[l,n]of a){let i=we(l,s),o=es(n,t),p=ts(n,o),c=n.map(u=>({ruleName:u.ruleName,severity:u.severity,options:u.options,cacheKey:u.taskId,inputs:u.inputs,needsTypeChecker:u.needsTypeChecker}));r[l]={file:{path:l,type:i,hash:p},tasks:c};}return r};var ps=(e,t)=>({files:e.files,rules:t.rules,rootDir:t.rootDir,cache:t.cache,debug:t.debug,incremental:t.incremental,cacheKeyCtx:t.cacheKeyCtx,parallelThreshold:t.parallelThreshold,workerCount:t.workerCount}),cs=e=>e.files.length>0,us=e=>e.files.length;export{Re as areAllTasksCached,Yt as buildExecutionPlan,P as buildIndexes,me as buildTask,J as buildTasksForFile,V as calculateFileHash,E as detectFileType,D as discoverResources,U as filterCachedTasks,ot as filterRulesByAstRequirement,b as getBaseName,Pe as getCacheHitRate,Vt as getExecutionPlanSummary,St as getFilesForRules,us as getScanFileCount,Xe as getSpecFile,Ve as getStyleFiles,$t as getTasksCountBySeverity,Je as getTemplateFile,Ct as getTotalTasks,pt as groupRulesByDependencyType,te as groupTasksByFile,cs as hasScanFiles,R as hashFile,nt as hashFileStats,oe as hashFiles,Y as hashRules,lt as hashTaskInputs,F as isComponentFile,Ae as isSpecFile,$e as isStyleFile,Ce as isTemplateFile,Se as isTypeScriptFile,Ee as pruneStaleCache,Ye as resourceExists,ps as scanResultToPlanInput,he as shouldApplyRule};//# sourceMappingURL=index.js.map
|
|
3
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/overrides.ts","../src/file-type.ts","../src/incremental.ts","../src/resources.ts","../src/hashing.ts","../src/task-builder.ts","../src/indexes.ts","../src/serialize.ts","../src/utils.ts","../src/component-graph.ts","../src/builder.ts","../src/integration.ts"],"names":["findMatchingOverrides","filePath","overrides","filter","o","matchesAnyGlob","Array","isArray","files","resolveOverridesForFile","globalRules","matching","length","result","Map","override","rules","ruleName","ruleConfig","Object","entries","existing","get","normalized","normalizeOverrideConfig","severity","delete","set","options","patterns","some","p","minimatch","replace","dot","rc","ANGULAR_DECORATOR_RE","detectFileType","basename","path","ext","extname","endsWith","isTypeScriptFile","isTemplateFile","isStyleFile","isSpecFile","isComponentFile","getBaseName","suffix","slice","filterCachedTasks","tasks","cache","startTime","performance","now","debug","forceRerun","buildForcedRerunPlan","taskIds","map","t","taskId","buildEmptyIncrementalPlan","cachedTaskIds","hasMany","size","skippedTasks","pendingTasks","splitTasksByCache","cachedResults","maybeLoadCachedResults","stats","buildCacheFilterStats","logFilterSummary","areAllTasksCached","getCacheHitRate","pruneStaleCache","getManyWithMetadata","maxAgeMs","minHits","resolvePrunePolicy","staleTaskIds","collectStaleTaskIds","prunedCount","deleteMany","totalTasks","cachedTasks","cacheHitRate","timeSavedEstimate","task","has","push","loadCachedResults","cachedIds","getMany","total","cached","pending","elapsed","toFixed","Date","maxAge","stale","entry","tooOld","metadata","timestamp","tooCold","hits","deleted","STYLE_EXTENSIONS","TEMPLATE_URL_RE","STYLE_URL_RE","STYLE_URLS_RE","STYLE_STR_RE","extractTemplateUrlFromContent","tsFilePath","dir","content","readFile","match","exec","resolve","extractStyleUrlsFromContent","results","singleMatch","arrayMatch","m","lastIndex","discoverResources","needsTsAst","needsHtmlAst","needsCssAst","needsSpecAst","directoryCache","dirname","baseName","listDirectory","typescript","buildFileInput","template","findTemplateFile","extracted","styles","findStyleFiles","spec","findSpecFile","undefined","resourceExists","resourceType","hasTemplateFile","hasAnyStyleFile","hasSpecFile","getStyleFiles","flatMap","name","styleFileName","includes","join","getTemplateFile","templateFileName","getSpecFile","specFileName","readdir","error","Error","message","String","needsAst","hash","warmupHashCache","filePaths","metaCache","hashCache","i","batch","Promise","all","stat","mtime","mtimeMs","cachedMeta","hashFile","flush","computeHash","hashFiles","sort","stableStringify","value","seen","WeakSet","normalize","v","add","out","k","keys","JSON","stringify","hashRules","rule","a","b","localeCompare","calculateFileHash","inputs","applicableRules","parts","styleHashes","s","hashTaskInputs","hashFileStats","calculateTaskId","ctx","toolVersion","ruleRegistryHash","stylesHash","calculateGlobalHash","fileEntries","f","from","values","parserVersion","platform","shouldApplyRule","fileType","dependencyType","isTypescriptLike","filterRulesByAstRequirement","astType","filtered","requires","groupRulesByDependencyType","groups","standalone","component","imports","buildTask","context","applicability","evaluateRuleApplicability","apply","reason","requirements","resolveAstRequirements","buildTaskInputsWithHashes","cacheKeyCtx","needsTypeChecker","needsProjectContext","buildTasksForFileTaskCentric","discovered","getOrDiscoverResources","buildHashedInput","buildTemplateInput","buildStyleInputs","buildSpecInput","Boolean","tsAst","htmlAst","cssAst","specAst","typeChecker","projectContext","resourceCache","componentGraph","node","getResources","graphStats","stylePaths","templatePath","specPath","misses","fallbacks","buildIndexes","plan","filesNeedingTsAst","buildFilesNeedingAst","filesNeedingHtmlAst","filesNeedingCssAst","filesNeedingTypeChecker","buildFilesNeedingTypeChecker","tasksByFile","buildTasksByFile","tasksBySeverityLevel","buildTasksBySeverityLevel","createEmptyTasksBySeverityLevel","tasksByRule","buildTasksByRule","filesByType","buildFilesByType","tasksBySeverity","buildTasksBySeverity","buildStats","logIndexSummary","Set","unit","index","createEmptyFilesByTypeIndex","file","type","directive","pipe","service","module","guard","logic","style","config","unknown","counts","createEmptySeverityCounts","off","warn","units","totalFiles","filesWithTemplates","filesWithStyles","filesWithSpecs","avgTasksPerFile","getFilesForRules","ruleNames","ruleFiles","getTotalTasks","indexes","getTasksCountBySeverity","createEmptyTasksBySeverityLevelMutable","fileCompare","ts","html","css","serializePlan","output","StringInterner","hashes","ReferenceInterner","serializeUnit","r","h","deserializePlan","compact","allTasks","unitData","fileHash","ruleTasks","deserializeUnit","rt","toTask","fileId","id","fileHashId","idOrMinusOne","serializeRuleTask","ruleId","optId","cacheKeyId","cacheKey","encodeInput","tpl","typeCheckerFlag","input","tasksData","decodeHash","taskData","deserializeRuleTask","tData","tsCompact","tplCompact","stylesCompact","specCompact","ruleOptions","decodeInput","styleInput","d","hashId","ruleTask","list","next","groupTasksByFile","extractTemplateUrl","tsPath","fileSet","resolved","extractStyleUrls","ComponentDependencyGraph","graph","build","clear","byDirectory","dirFiles","dirFileSet","comp","baseNamePath","find","startsWith","test","buildExecutionPlan","timerLabel","time","changedFiles","cachedFiles","initHasher","validationError","validateBuildInputs","Err","createTaskBuilderContext","fileTypeCache","errorCollector","InfrastructureErrorCollector","cachedPlan","tryLoadPlanFromCache","start","metas","precomputedAnalysis","timeLog","Ok","buildAllTasks","parallelThreshold","workerCount","globalHash","fullPlan","convertTasksToPlan","fullIndexes","fullOutput","savePlanToCacheIfEnabled","incremental","getExecutionPlanSummary","lines","analysisCache","analysis","tCacheStart","cachedData","plans","tIOEnd","planSize","tDeserStart","deserErr","record","createInfrastructureError","cause","phase","recoverable","details","tDeserEnd","cacheSaveStart","cacheSaveTime","collectApplicableRulesFromTasks","ruleNamesInFile","applicable","calculateHashFromTasks","preclassifyLogicFiles","tryBuildAllTasksParallel","buildAllTasksSequential","candidates","getOrDetectFileType","fileRules","fileTasks","workerPath","resolveWorkerPath","chunks","splitIntoChunks","runWorkerChunks","Worker","fileURLToPath","existsSync","__dirname","url","candidate","items","chunkCount","Math","ceil","rulesEntries","fileTypeCacheEntries","overridesData","workerPromises","chunk","reject","worker","workerData","on","err","code","flat","detected","scanResultToPlanInput","scanResult","opts","rootDir","hasScanFiles","getScanFileCount"],"mappings":"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","file":"index.js","sourcesContent":["import { minimatch as e } from 'minimatch';\nexport const findMatchingOverrides = (e, t)=>t.filter((t)=>matchesAnyGlob(e, Array.isArray(t.files) ? t.files : [\n t.files\n ]));\nexport const resolveOverridesForFile = (e, t, i)=>{\n let r = findMatchingOverrides(e, i);\n if (0 === r.length) return t;\n let o = new Map(t);\n for (let e of r)if (e.rules) for (let [t, i] of Object.entries(e.rules)){\n let e = o.get(t);\n if (!e) continue;\n let r = normalizeOverrideConfig(i);\n 'off' === r.severity ? o.delete(t) : o.set(t, {\n ...e,\n severity: r.severity,\n options: {\n ...e.options,\n ...r.options\n }\n });\n }\n return o;\n};\nlet matchesAnyGlob = (t, i)=>i.some((i)=>e(t.replace(/\\\\/g, '/'), i, {\n dot: !0\n })), normalizeOverrideConfig = (e)=>'string' == typeof e ? {\n severity: e,\n options: {}\n } : 'object' == typeof e && null !== e && 'severity' in e ? {\n severity: e.severity,\n options: e.options ?? {}\n } : {\n severity: 'off',\n options: {}\n };\n","import e from 'node:path';\nexport const ANGULAR_DECORATOR_RE = /\\@(Component|Directive|Pipe|Injectable|NgModule)\\s*[\\(\\{]/;\nexport const detectFileType = (t)=>{\n let s = e.basename(t), n = e.extname(t);\n return s.endsWith('.component.ts') ? 'component' : s.endsWith('.directive.ts') ? 'directive' : s.endsWith('.pipe.ts') ? 'pipe' : s.endsWith('.service.ts') ? 'service' : s.endsWith('.module.ts') ? 'module' : s.endsWith('.guard.ts') ? 'guard' : '.html' === n ? 'template' : '.css' === n || '.scss' === n || '.sass' === n || '.less' === n ? 'style' : s.endsWith('.config.ts') || '.json' === n ? 'config' : s.endsWith('.spec.ts') || s.endsWith('.test.ts') ? 'spec' : '.ts' === n ? 'logic' : 'unknown';\n};\nexport const isTypeScriptFile = (t)=>'.ts' === e.extname(t);\nexport const isTemplateFile = (t)=>'.html' === e.extname(t);\nexport const isStyleFile = (t)=>{\n let s = e.extname(t);\n return '.css' === s || '.scss' === s || '.sass' === s || '.less' === s;\n};\nexport const isSpecFile = (t)=>e.basename(t).endsWith('.spec.ts');\nexport const isComponentFile = (t)=>e.basename(t).endsWith('.component.ts');\nexport const getBaseName = (t)=>{\n let s = e.basename(t);\n for (let e of [\n '.component.ts',\n '.directive.ts',\n '.pipe.ts',\n '.service.ts',\n '.module.ts',\n '.guard.ts',\n '.spec.ts'\n ])if (s.endsWith(e)) return s.slice(0, -e.length);\n return e.basename(t, e.extname(t));\n};\n","import { debug as e } from \"@ngcompass/common\";\nexport const filterCachedTasks = async (t, a, n = {})=>{\n let s = performance.now();\n if (e(\"incremental\", `Filtering ${t.length} tasks by cache...`), n.forceRerun) return buildForcedRerunPlan(t);\n let l = t.map((e)=>e.taskId);\n if (0 === l.length) return buildEmptyIncrementalPlan();\n let r = await a.hasMany(l);\n e(\"incremental\", `Found ${r.size}/${t.length} tasks in cache`);\n let { skippedTasks: i, tasks: c } = splitTasksByCache(t, r), d = await maybeLoadCachedResults(a, i, n), h = buildCacheFilterStats(t.length, i.length, c.length);\n return logFilterSummary(s, h), {\n skippedTasks: i,\n tasks: c,\n cachedResults: d,\n stats: h\n };\n};\nexport const areAllTasksCached = async (e, t)=>{\n if (0 === e.length) return !0;\n let a = e.map((e)=>e.taskId);\n return (await t.hasMany(a)).size === e.length;\n};\nexport const getCacheHitRate = async (e, t)=>{\n if (0 === e.length) return 0;\n let a = e.map((e)=>e.taskId);\n return (await t.hasMany(a)).size / e.length;\n};\nexport const pruneStaleCache = async (t, a, n = {})=>{\n if (e(\"incremental\", \"Pruning stale cache entries...\"), 0 === t.length) return e(\"incremental\", \"No tasks to prune\"), 0;\n let s = await a.getManyWithMetadata(t);\n if (0 === s.size) return e(\"incremental\", \"Cache is empty, nothing to prune\"), 0;\n let { now: l, maxAgeMs: r, minHits: i } = resolvePrunePolicy(n), c = collectStaleTaskIds(s, l, r, i), d = await deleteMany(a, c);\n return e(\"incremental\", `Pruned ${d} stale entries`), d;\n};\nlet buildForcedRerunPlan = (t)=>{\n e(\"incremental\", \"Force rerun enabled - skipping cache check\");\n let a = {\n totalTasks: t.length,\n cachedTasks: 0,\n pendingTasks: t.length,\n cacheHitRate: 0,\n timeSavedEstimate: 0\n };\n return {\n skippedTasks: [],\n tasks: t,\n cachedResults: new Map(),\n stats: a\n };\n}, buildEmptyIncrementalPlan = ()=>({\n skippedTasks: [],\n tasks: [],\n cachedResults: new Map(),\n stats: {\n totalTasks: 0,\n cachedTasks: 0,\n pendingTasks: 0,\n cacheHitRate: 0,\n timeSavedEstimate: 0\n }\n }), splitTasksByCache = (e, t)=>{\n let a = [], n = [];\n for (let s of e)t.has(s.taskId) ? a.push(s) : n.push(s);\n return {\n skippedTasks: a,\n tasks: n\n };\n}, maybeLoadCachedResults = async (t, a, n)=>{\n if (!n.loadCachedResults || 0 === a.length) return new Map();\n e(\"incremental\", `Loading ${a.length} cached results...`);\n let s = a.map((e)=>e.taskId), l = await t.getMany(s);\n return e(\"incremental\", `Loaded ${l.size} cached results`), l;\n}, buildCacheFilterStats = (e, t, a)=>{\n let n = e > 0 ? t / e : 0;\n return {\n totalTasks: e,\n cachedTasks: t,\n pendingTasks: a,\n cacheHitRate: n,\n timeSavedEstimate: 100 * n\n };\n}, logFilterSummary = (t, a)=>{\n let n = performance.now() - t;\n e(\"incremental\", `Cache filtering completed in ${n.toFixed(2)}ms`), e(\"incremental\", `Cache hit rate: ${(100 * a.cacheHitRate).toFixed(1)}%`), e(\"incremental\", `Skipping ${a.cachedTasks} tasks, executing ${a.pendingTasks} tasks`);\n}, resolvePrunePolicy = (e)=>{\n let t = Date.now();\n return {\n now: t,\n maxAgeMs: e.maxAge ?? 604800000,\n minHits: e.minHits ?? 1\n };\n}, collectStaleTaskIds = (e, t, a, n)=>{\n let s = [];\n for (let [, l] of e){\n let e = t - l.metadata.timestamp > a, r = l.metadata.hits < n;\n (e || r) && s.push(l.metadata.taskId);\n }\n return s;\n}, deleteMany = async (e, t)=>{\n let a = 0;\n for (let n of t)await e.delete(n), a++;\n return a;\n};\n","import { readdir as e, readFile as t } from \"node:fs/promises\";\nimport l from \"node:path\";\nimport { getBaseName as r, isComponentFile as i } from \"./file-type.js\";\nimport { debug as s } from \"@ngcompass/common\";\nlet STYLE_EXTENSIONS = [\n \".css\",\n \".scss\",\n \".sass\",\n \".less\"\n], TEMPLATE_URL_RE = /templateUrl\\s*:\\s*['\"`]([^'\"`\\n]+)['\"`]/, STYLE_URL_RE = /\\bstyleUrl(?!s)\\s*:\\s*['\"`]([^'\"`\\n]+)['\"`]/, STYLE_URLS_RE = /\\bstyleUrls\\s*:\\s*\\[([^\\]]+)\\]/, STYLE_STR_RE = /['\"`]([^'\"`\\n]+\\.(?:css|scss|sass|less))['\"`]/g, extractTemplateUrlFromContent = async (e, r)=>{\n try {\n let i = await t(e, 'utf-8'), s = TEMPLATE_URL_RE.exec(i);\n if (!s) return;\n return l.resolve(r, s[1]);\n } catch {\n return;\n }\n}, extractStyleUrlsFromContent = async (e, r)=>{\n try {\n let i = await t(e, 'utf-8'), s = [], n = STYLE_URL_RE.exec(i);\n n && s.push(l.resolve(r, n[1]));\n let a = STYLE_URLS_RE.exec(i);\n if (a) {\n let e;\n for(STYLE_STR_RE.lastIndex = 0; null !== (e = STYLE_STR_RE.exec(a[1]));)s.push(l.resolve(r, e[1]));\n }\n return s;\n } catch {\n return [];\n }\n};\nexport const discoverResources = async (e, t, s, n, a, o)=>{\n let c = l.dirname(e), u = r(e), m = await listDirectory(c, o), p = buildFileInput(e, t), F = findTemplateFile(c, u, m, s);\n if (!F) {\n let t = await extractTemplateUrlFromContent(e, c);\n t && (F = buildFileInput(t, s));\n }\n let d = findStyleFiles(e, c, u, m, n);\n 0 === d.length && i(e) && (d = (await extractStyleUrlsFromContent(e, c)).map((e)=>buildFileInput(e, n)));\n let S = findSpecFile(c, u, m, a);\n return {\n typescript: p,\n template: F,\n styles: d.length > 0 ? d : void 0,\n spec: S\n };\n};\nexport const resourceExists = async (e, t, s)=>{\n let n = l.dirname(e), a = r(e), o = await listDirectory(n, s);\n return \"template\" === t ? hasTemplateFile(a, o) : \"style\" === t ? !!i(e) && hasAnyStyleFile(a, o) : hasSpecFile(a, o);\n};\nexport const getStyleFiles = async (e, t)=>{\n if (!i(e)) return [];\n let s = l.dirname(e), n = r(e), a = await listDirectory(s, t);\n return STYLE_EXTENSIONS.flatMap((e)=>{\n let t = styleFileName(n, e);\n return a.includes(t) ? [\n l.join(s, t)\n ] : [];\n });\n};\nexport const getTemplateFile = async (e, t)=>{\n if (!i(e)) return null;\n let s = l.dirname(e), n = r(e), a = await listDirectory(s, t), o = templateFileName(n);\n return a.includes(o) ? l.join(s, o) : null;\n};\nexport const getSpecFile = async (e, t)=>{\n let i = l.dirname(e), s = r(e), n = await listDirectory(i, t), a = specFileName(s);\n return n.includes(a) ? l.join(i, a) : null;\n};\nlet listDirectory = async (t, l)=>{\n let r = l?.get(t);\n if (r) return r;\n try {\n let r = await e(t);\n return l?.set(t, r), r;\n } catch (e) {\n return s(\"planner\", `Failed to read directory: ${t}. Error: ${e instanceof Error ? e.message : String(e)}`), [];\n }\n}, buildFileInput = (e, t)=>({\n path: e,\n needsAst: t,\n hash: \"\"\n }), templateFileName = (e)=>`${e}.component.html`, styleFileName = (e, t)=>`${e}.component${t}`, specFileName = (e)=>`${e}.spec.ts`, hasTemplateFile = (e, t)=>t.includes(templateFileName(e)), hasAnyStyleFile = (e, t)=>STYLE_EXTENSIONS.some((l)=>t.includes(styleFileName(e, l))), hasSpecFile = (e, t)=>t.includes(specFileName(e)), findTemplateFile = (e, t, r, i)=>{\n let s = templateFileName(t);\n return r.includes(s) ? buildFileInput(l.join(e, s), i) : void 0;\n}, findStyleFiles = (e, t, r, s, n)=>{\n if (!i(e)) return [];\n let a = [];\n for (let e of STYLE_EXTENSIONS){\n let i = styleFileName(r, e);\n s.includes(i) && a.push(buildFileInput(l.join(t, i), n));\n }\n return a;\n}, findSpecFile = (e, t, r, i)=>{\n let s = specFileName(t);\n return r.includes(s) ? buildFileInput(l.join(e, s), i) : void 0;\n};\n","import * as t from \"node:fs/promises\";\nimport { debug as s } from \"@ngcompass/common\";\nimport { computeHash as e } from \"@ngcompass/cache\";\nexport const warmupHashCache = async (s, e, a)=>{\n for(let r = 0; r < s.length; r += 500){\n let h = s.slice(r, r + 500);\n await Promise.all(h.map(async (s)=>{\n if (!a.has(s)) try {\n let r = await t.stat(s), h = r.mtimeMs, p = r.size, l = await e.get(s);\n if (l && l.mtime === h && l.size === p) return void a.set(s, l.hash);\n let i = await hashFile(s);\n a.set(s, i), await e.set(s, {\n mtime: h,\n size: p,\n hash: i\n });\n } catch {\n return;\n }\n }));\n }\n e.flush && await e.flush();\n};\nexport const hashFile = async (a, r)=>{\n let h = r?.get(a);\n if (h) return h;\n try {\n let s = await t.readFile(a, \"utf-8\"), h = e(s);\n return r?.set(a, h), h;\n } catch (t) {\n return s(\"planner\", `Failed to hash file: ${a}. Error: ${t instanceof Error ? t.message : String(t)}`), \"\";\n }\n};\nexport const hashFileInput = hashFile;\nexport const hashFiles = async (t, s)=>{\n if (0 === t.length) return \"\";\n let a = await Promise.all(t.map(async (t)=>`${t}:${await hashFile(t, s)}`));\n return a.sort(), e(a.join(\"|\"));\n};\nlet stableStringify = (t)=>{\n let s = new WeakSet(), e = (t)=>{\n if (t && \"object\" == typeof t) {\n if (s.has(t)) return \"[Circular]\";\n if (s.add(t), Array.isArray(t)) return t.map(e);\n let a = {};\n for (let s of Object.keys(t).sort())a[s] = e(t[s]);\n return a;\n }\n return t;\n };\n return JSON.stringify(e(t));\n};\nexport const hashRules = (t)=>e(stableStringify(t.map((t)=>({\n name: t.name,\n severity: t.severity,\n options: t.options\n })).sort((t, s)=>t.name.localeCompare(s.name))));\nexport const calculateFileHash = (t, s)=>{\n let a = [];\n if (a.push(t.typescript.hash), t.template && a.push(t.template.hash), t.styles) {\n let s = t.styles.map((t)=>t.hash).sort();\n a.push(...s);\n }\n return t.spec && a.push(t.spec.hash), a.push(hashRules(s)), e(a.join(\"::\"));\n};\nexport const hashTaskInputs = async (t)=>{\n let s = [\n t.typescript.path\n ];\n return t.template && s.push(t.template.path), t.styles && s.push(...t.styles.map((t)=>t.path)), t.spec && s.push(t.spec.path), hashFiles(s);\n};\nexport const hashFileStats = async (s)=>{\n try {\n let a = await t.stat(s);\n return e(`${s}::${a.size}::${a.mtimeMs}`);\n } catch {\n return \"\";\n }\n};\nexport const calculateTaskId = (t, s, a, r)=>{\n let h = [];\n if (r && (h.push(r.toolVersion), h.push(r.ruleRegistryHash)), h.push(t), h.push(s.typescript.path), h.push(s.typescript.hash), s.template && h.push(s.template.hash), s.styles?.length) {\n let t = s.styles.map((t)=>t.hash).sort().join(\"::\");\n h.push(t);\n }\n return s.spec && h.push(s.spec.hash), h.push(stableStringify(a)), e(h.join(\"::\"));\n};\nexport const calculateGlobalHash = async (t, s, a, r)=>{\n let h = await Promise.all(t.map(async (t)=>`${t}:${a.get(t) ?? await hashFile(t, a)}`));\n h.sort();\n let p = [];\n return p.push(...h), p.push(hashRules(Array.from(s.values()))), r && (p.push(`tool:${r.toolVersion}`), p.push(`parser:${r.parserVersion}`), p.push(`registry:${r.ruleRegistryHash}`), p.push(`platform:${r.platform}`)), e(p.join(\"||\"));\n};\n","import { discoverResources as e } from \"./resources.js\";\nimport { hashFile as t, calculateTaskId as s } from \"./hashing.js\";\nimport { debug as a } from \"@ngcompass/common\";\nexport const shouldApplyRule = (e, t)=>{\n let { dependencyType: s } = e.metadata;\n return \"standalone\" === s || \"imports\" === s ? isTypescriptLike(t) : \"component\" === s ? \"component\" === t || \"directive\" === t || \"angular-class\" === t : \"styles\" === s ? \"component\" === t : \"spec\" === s && \"spec\" === t;\n};\nexport const filterRulesByAstRequirement = (e, t)=>{\n let s = [];\n for (let a of e.values())a.metadata.requires[t] && s.push(a);\n return s;\n};\nexport const getRulesByFileType = (e)=>{\n let t = {\n allTs: [],\n component: [],\n directive: [],\n spec: []\n };\n for (let s of e.values()){\n let { dependencyType: e } = s.metadata;\n if (\"standalone\" === e || \"imports\" === e) {\n t.allTs.push(s);\n continue;\n }\n if (\"component\" === e) {\n t.component.push(s), t.directive.push(s);\n continue;\n }\n if (\"styles\" === e) {\n t.component.push(s);\n continue;\n }\n \"spec\" === e && t.spec.push(s);\n }\n return t;\n};\nexport const groupRulesByDependencyType = (e)=>{\n let t = {\n standalone: [],\n component: [],\n styles: [],\n imports: [],\n spec: []\n };\n for (let s of e.values())t[s.metadata.dependencyType].push(s);\n return t;\n};\nexport const buildTask = async (e, t, p, n)=>{\n let l = evaluateRuleApplicability(p, t);\n if (!l.apply) return a(\"planner\", ` - Rule ${p.name} skipped: ${l.reason}`), null;\n let r = resolveAstRequirements(p), o = await buildTaskInputsWithHashes(e, p, n);\n return {\n taskId: s(p.name, o, p.options, n?.cacheKeyCtx),\n ruleName: p.name,\n filePath: e,\n severity: p.severity,\n options: p.options,\n inputs: o,\n needsTypeChecker: r.needsTypeChecker,\n needsProjectContext: r.needsProjectContext || void 0\n };\n};\nexport const buildTasksForFileTaskCentric = async (e, t, s, a)=>{\n let p = [];\n for (let n of s.values()){\n let s = await buildTask(e, t, n, a);\n s && p.push(s);\n }\n return p;\n};\nlet buildTaskInputsWithHashes = async (e, t, s)=>{\n let a = resolveAstRequirements(t), p = await getOrDiscoverResources(e, s), n = {\n typescript: await buildHashedInput(p.typescript.path, a.needsTsAst, s)\n }, l = buildTemplateInput(e, p, t, a, n, s);\n l && (n.template = l);\n let r = await buildStyleInputs(p, t, a, s);\n r && (n.styles = r);\n let o = await buildSpecInput(p, a, s);\n return o && (n.spec = o), n;\n}, isTypescriptLike = (e)=>\"template\" !== e && \"style\" !== e && \"config\" !== e && \"unknown\" !== e, evaluateRuleApplicability = (e, t)=>shouldApplyRule(e, t) ? \"off\" === e.severity ? {\n apply: !1,\n reason: \"disabled ('off')\"\n } : {\n apply: !0,\n reason: \"applicable\"\n } : {\n apply: !1,\n reason: `does not apply to ${t}`\n }, resolveAstRequirements = (e)=>{\n let t = e.metadata.requires;\n return {\n needsTsAst: !!t.tsAst,\n needsHtmlAst: !!t.htmlAst,\n needsCssAst: !!t.cssAst,\n needsSpecAst: !!t.specAst,\n needsTypeChecker: !!t.typeChecker,\n needsProjectContext: !!t.projectContext\n };\n}, getOrDiscoverResources = async (t, s)=>{\n let a = s?.resourceCache?.get(t);\n if (a) return a;\n if (s?.componentGraph) {\n let e = s.componentGraph.getResources(t);\n if (e) {\n s.graphStats && s.graphStats.hits++;\n let a = {\n typescript: {\n path: t,\n hash: \"\",\n needsAst: !1\n },\n styles: e.stylePaths.map((e)=>({\n path: e,\n hash: \"\",\n needsAst: !1\n }))\n };\n return e.templatePath && (a.template = {\n path: e.templatePath,\n hash: \"\",\n needsAst: !1\n }), e.specPath && (a.spec = {\n path: e.specPath,\n hash: \"\",\n needsAst: !1\n }), s?.resourceCache?.set(t, a), a;\n }\n s.graphStats && s.graphStats.misses++;\n }\n s?.graphStats && s.graphStats.fallbacks++;\n let p = await e(t, !0, !0, !0, !0, s?.directoryCache);\n return s?.resourceCache?.set(t, p), p;\n}, buildHashedInput = async (e, s, a)=>({\n path: e,\n hash: await t(e, a?.hashCache),\n needsAst: s\n }), buildTemplateInput = (e, t, s, a, p, n)=>{\n let { dependencyType: l } = s.metadata, r = a.needsHtmlAst && (\"component\" === l || \"styles\" === l);\n return t.template ? {\n path: t.template.path,\n hash: n?.hashCache?.get(t.template.path) ?? t.template.hash ?? \"\",\n needsAst: r\n } : \"component\" === l && a.needsHtmlAst ? {\n path: e,\n hash: p.typescript.hash,\n needsAst: !0\n } : void 0;\n}, buildStyleInputs = async (e, t, s, a)=>{\n if (!e.styles || 0 === e.styles.length) return;\n let p = s.needsCssAst && \"styles\" === t.metadata.dependencyType;\n return Promise.all(e.styles.map((e)=>buildHashedInput(e.path, p, a)));\n}, buildSpecInput = async (e, t, s)=>{\n if (e.spec) return buildHashedInput(e.spec.path, t.needsSpecAst, s);\n};\n","import { debug as e } from \"@ngcompass/common\";\nexport function buildIndexes(t, s) {\n e(\"planner\", \"Generating execution indexes...\");\n let r = buildFilesNeedingAst(t, \"typescript\"), l = buildFilesNeedingAst(t, \"html\"), n = buildFilesNeedingAst(t, \"css\"), o = buildFilesNeedingTypeChecker(t), a = s ? buildTasksByFile(s) : {}, i = s ? buildTasksBySeverityLevel(s) : createEmptyTasksBySeverityLevel(), u = buildTasksByRule(t), y = buildFilesByType(t), p = buildTasksBySeverity(t), d = buildStats(t);\n return logIndexSummary(t, s, r, l, n, u), {\n filesNeedingTsAst: r,\n filesNeedingHtmlAst: l,\n filesNeedingCssAst: n,\n filesNeedingTypeChecker: o,\n tasksByFile: a,\n tasksBySeverityLevel: i,\n tasksByRule: u,\n filesByType: y,\n tasksBySeverity: p,\n stats: d\n };\n}\nlet buildFilesNeedingAst = (e, t)=>{\n let s = new Set();\n for (let [r, l] of Object.entries(e))l.tasks.some((e)=>needsAst(e, t)) && s.add(r);\n return Array.from(s).sort();\n}, needsAst = (e, t)=>{\n switch(t){\n case \"typescript\":\n return !!e.inputs.typescript.needsAst;\n case \"html\":\n return !!e.inputs.template?.needsAst;\n case \"css\":\n return !!e.inputs.styles?.some((e)=>e.needsAst);\n }\n}, buildFilesNeedingTypeChecker = (e)=>{\n let t = new Set();\n for (let [s, r] of Object.entries(e))r.tasks.some((e)=>!0 === e.needsTypeChecker || !0 === e.needsProjectContext) && t.add(s);\n return Array.from(t).sort();\n}, buildTasksByRule = (e)=>{\n let t = {};\n for (let [s, r] of Object.entries(e))for (let e of r.tasks)(t[e.ruleName] ??= []).push(s);\n for (let e of Object.keys(t))t[e].sort();\n return t;\n}, buildFilesByType = (e)=>{\n let t = createEmptyFilesByTypeIndex();\n for (let [s, r] of Object.entries(e))t[r.file.type].push(s);\n for (let e of Object.keys(t))t[e].sort();\n return t;\n}, createEmptyFilesByTypeIndex = ()=>({\n component: [],\n directive: [],\n pipe: [],\n service: [],\n module: [],\n guard: [],\n logic: [],\n 'angular-class': [],\n spec: [],\n template: [],\n style: [],\n config: [],\n unknown: []\n }), buildTasksBySeverity = (e)=>{\n let t = createEmptySeverityCounts();\n for (let s of Object.values(e))for (let e of s.tasks)t[e.severity]++;\n return t;\n}, createEmptySeverityCounts = ()=>({\n off: 0,\n warn: 0,\n error: 0\n }), buildStats = (e)=>{\n let t = Object.values(e), s = t.length, r = 0, l = 0, n = 0, o = 0;\n for (let e of t)r += e.tasks.length, e.tasks.some((e)=>!!e.inputs.template) && l++, e.tasks.some((e)=>!!e.inputs.styles?.length) && n++, e.tasks.some((e)=>!!e.inputs.spec) && o++;\n return {\n totalFiles: s,\n totalTasks: r,\n avgTasksPerFile: s > 0 ? r / s : 0,\n filesWithTemplates: l,\n filesWithStyles: n,\n filesWithSpecs: o\n };\n};\nexport const getFilesForRules = (e, t)=>{\n let s = new Set();\n for (let r of t){\n let t = e[r];\n if (t) for (let e of t)s.add(e);\n }\n return Array.from(s).sort();\n};\nexport const getTotalTasks = (e)=>e.stats.totalTasks;\nexport const getTasksCountBySeverity = (e, t)=>e.tasksBySeverity[t];\nlet buildTasksByFile = (e)=>{\n let t = {};\n for (let s of e)(t[s.filePath] ??= []).push(s);\n for (let e of Object.keys(t))t[e].sort((e, t)=>e.ruleName.localeCompare(t.ruleName));\n return t;\n}, buildTasksBySeverityLevel = (e)=>{\n let t = createEmptyTasksBySeverityLevelMutable();\n for (let s of e)t[s.severity].push(s);\n for (let e of Object.keys(t))t[e].sort((e, t)=>{\n let s = e.filePath.localeCompare(t.filePath);\n return 0 !== s ? s : e.ruleName.localeCompare(t.ruleName);\n });\n return t;\n}, createEmptyTasksBySeverityLevel = ()=>({\n off: [],\n warn: [],\n error: []\n }), createEmptyTasksBySeverityLevelMutable = ()=>({\n off: [],\n warn: [],\n error: []\n }), logIndexSummary = (t, s, r, l, n, o)=>{\n e(\"planner\", \"Indexing complete:\"), e(\"planner\", ` - TypeScript AST needed: ${r.length} files`), e(\"planner\", ` - HTML AST needed: ${l.length} files`), e(\"planner\", ` - CSS AST needed: ${n.length} files`), e(\"planner\", ` - Unique rules to run: ${Object.keys(o).length}`), s && e(\"planner\", ` - Total tasks: ${s.length}`);\n};\n","import { buildIndexes as e } from \"./indexes.js\";\nexport const serializePlan = (e)=>{\n let t = new StringInterner(), s = new StringInterner(), i = new StringInterner(), n = new ReferenceInterner(), r = Object.values(e.plan).map((e)=>serializeUnit(e, t, s, i, n));\n return {\n v: 1,\n r: t.values(),\n o: n.values(),\n f: s.values(),\n h: i.values(),\n t: r\n };\n};\nexport const deserializePlan = (t)=>{\n let { r: s, o: i, f: n, h: r, t: a } = t, l = {}, p = [];\n for (let e of a){\n let { filePath: t, fileType: a, fileHash: u, ruleTasks: d } = deserializeUnit(e, s, n, r, i);\n for (let e of (l[t] = {\n file: {\n path: t,\n type: a,\n hash: u\n },\n tasks: d\n }, d))p.push(toTask(t, e));\n }\n let u = e(l, p);\n return {\n tasks: p,\n plan: l,\n indexes: u,\n skippedTasks: []\n };\n};\nlet serializeUnit = (e, t, s, i, n)=>{\n let r = s.id(e.file.path), a = i.idOrMinusOne(e.file.hash), l = e.tasks.map((e)=>serializeRuleTask(e, t, s, i, n));\n return [\n r,\n e.file.type,\n a,\n l\n ];\n}, serializeRuleTask = (e, t, s, i, n)=>{\n let r = t.id(e.ruleName), a = n.id(e.options), l = i.idOrMinusOne(e.cacheKey), p = encodeInput(e.inputs.typescript, s, i), u = e.inputs.template ? encodeInput(e.inputs.template, s, i) : void 0, d = e.inputs.styles && e.inputs.styles.length > 0 ? e.inputs.styles.map((e)=>encodeInput(e, s, i)) : void 0, h = e.inputs.spec ? encodeInput(e.inputs.spec, s, i) : void 0, o = +!!e.needsTypeChecker;\n return [\n r,\n e.severity,\n a,\n l,\n p,\n u,\n d,\n h,\n o\n ];\n}, encodeInput = (e, t, s)=>[\n t.id(e.path),\n s.idOrMinusOne(e.hash),\n +!!e.needsAst\n ], deserializeUnit = (e, t, s, i, n)=>{\n let [r, a, l, p] = e, u = s[r];\n return {\n filePath: u,\n fileType: a,\n fileHash: decodeHash(l, i),\n ruleTasks: p.map((e)=>deserializeRuleTask(e, t, s, i, n))\n };\n}, deserializeRuleTask = (e, t, s, i, n)=>{\n let [r, a, l, p, u, d, h, o, c] = e, m = t[r], k = n[l], v = decodeHash(p, i), y = {\n typescript: decodeInput(u, s, i)\n };\n return d && (y.template = decodeInput(d, s, i)), h && (y.styles = h.map((e)=>decodeInput(e, s, i))), o && (y.spec = decodeInput(o, s, i)), {\n ruleName: m,\n severity: a,\n options: k,\n cacheKey: v,\n inputs: y,\n needsTypeChecker: 1 === c || void 0\n };\n}, decodeInput = (e, t, s)=>({\n path: t[e[0]],\n hash: decodeHash(e[1], s),\n needsAst: 1 === e[2]\n }), decodeHash = (e, t)=>e >= 0 ? t[e] : \"\", toTask = (e, t)=>({\n taskId: t.cacheKey,\n filePath: e,\n ruleName: t.ruleName,\n severity: t.severity,\n options: t.options,\n inputs: t.inputs,\n needsTypeChecker: t.needsTypeChecker\n });\nclass StringInterner {\n map = new Map();\n list = [];\n id(e) {\n let t = this.map.get(e);\n if (void 0 !== t) return t;\n let s = this.list.length;\n return this.map.set(e, s), this.list.push(e), s;\n }\n idOrMinusOne(e) {\n return e ? this.id(e) : -1;\n }\n values() {\n return this.list;\n }\n}\nclass ReferenceInterner {\n map = new Map();\n list = [];\n id(e) {\n let t = this.map.get(e);\n if (void 0 !== t) return t;\n let s = this.list.length;\n return this.map.set(e, s), this.list.push(e), s;\n }\n values() {\n return this.list;\n }\n}\n","export const groupTasksByFile = (e)=>{\n let t = new Map();\n for (let l of e){\n let e = t.get(l.filePath);\n e ? e.push(l) : t.set(l.filePath, [\n l\n ]);\n }\n return t;\n};\n","import * as e from 'node:path';\nimport { readFile as t } from 'node:fs/promises';\nlet TEMPLATE_URL_RE = /templateUrl\\s*:\\s*['\"`]([^'\"`\\n]+)['\"`]/, STYLE_URL_RE = /\\bstyleUrl(?!s)\\s*:\\s*['\"`]([^'\"`\\n]+)['\"`]/, STYLE_URLS_RE = /\\bstyleUrls\\s*:\\s*\\[([^\\]]+)\\]/, STYLE_STR_RE = /['\"`]([^'\"`\\n]+\\.(?:css|scss|sass|less))['\"`]/g;\nasync function extractTemplateUrl(s, r, n) {\n try {\n let l = await t(s, 'utf-8'), a = TEMPLATE_URL_RE.exec(l);\n if (!a) return;\n let o = e.resolve(r, a[1]);\n return n.has(o) ? o : void 0;\n } catch {\n return;\n }\n}\nasync function extractStyleUrls(s, r, n) {\n try {\n let l = await t(s, 'utf-8'), a = [], o = STYLE_URL_RE.exec(l);\n if (o) {\n let t = e.resolve(r, o[1]);\n n.has(t) && a.push(t);\n }\n let c = STYLE_URLS_RE.exec(l);\n if (c) {\n let t;\n for(STYLE_STR_RE.lastIndex = 0; null !== (t = STYLE_STR_RE.exec(c[1]));){\n let s = e.resolve(r, t[1]);\n n.has(s) && a.push(s);\n }\n }\n return a;\n } catch {\n return [];\n }\n}\nexport class ComponentDependencyGraph {\n graph = new Map();\n async build(t) {\n this.graph.clear();\n let s = new Set(t), r = new Map();\n for (let s of t){\n let t = e.dirname(s), n = r.get(t);\n n ? n.push(s) : r.set(t, [\n s\n ]);\n }\n for (let [t, n] of r){\n let r = new Set(n);\n for (let l of n.filter((e)=>e.endsWith('.component.ts'))){\n let a = e.basename(l, '.component.ts'), o = e.join(t, a), c = [\n `${o}.component.html`,\n `${o}.html`\n ].find((e)=>r.has(e));\n c || (c = await extractTemplateUrl(l, t, s));\n let p = n.filter((t)=>{\n if (!t.startsWith(o)) return !1;\n let s = e.extname(t);\n return (t === `${o}.component${s}` || t === `${o}${s}`) && /\\.(css|scss|sass|less)$/.test(s);\n });\n 0 === p.length && (p = await extractStyleUrls(l, t, s));\n let h = {\n tsPath: l,\n templatePath: c,\n stylePaths: p,\n specPath: r.has(`${o}.component.spec.ts`) ? `${o}.component.spec.ts` : r.has(`${o}.spec.ts`) ? `${o}.spec.ts` : void 0,\n type: 'component'\n };\n this.graph.set(l, h);\n }\n }\n }\n getResources(e) {\n return this.graph.get(e);\n }\n}\n","import { resolveOverridesForFile as e } from \"./overrides.js\";\nimport { Ok as a, Err as t } from \"./types.js\";\nimport { debug as r, time as l, timeLog as n, createInfrastructureError as s, InfrastructureErrorCollector as i } from \"@ngcompass/common\";\nimport { detectFileType as o, ANGULAR_DECORATOR_RE as c } from \"./file-type.js\";\nimport { readFile as p } from \"node:fs/promises\";\nimport { filterCachedTasks as u } from \"./incremental.js\";\nimport { buildTasksForFileTaskCentric as h } from \"./task-builder.js\";\nimport { buildIndexes as f } from \"./indexes.js\";\nimport { serializePlan as d, deserializePlan as m } from \"./serialize.js\";\nimport { initHasher as g } from \"@ngcompass/cache\";\nimport { warmupHashCache as k, calculateGlobalHash as w, calculateFileHash as y } from \"./hashing.js\";\nimport { groupTasksByFile as T } from \"./utils.js\";\nimport { ComponentDependencyGraph as b } from \"./component-graph.js\";\nexport const buildExecutionPlan = async (e)=>{\n let s = \"buildExecutionPlan\";\n l(s);\n try {\n let l, o, c, p;\n await g();\n let { files: h, rules: d } = e;\n r(\"planner\", `Building execution plan for ${h.length} files and ${d.size} rules`);\n let m = validateBuildInputs(h, d);\n if (m) return t(m);\n let w = createTaskBuilderContext(e), y = new Map(), T = new i(), v = await tryLoadPlanFromCache(e, w, T);\n if (!v && e.cache) {\n r(\"planner\", \"Warming up hash cache from metadata index...\");\n let a = performance.now();\n await k(e.files, e.cache.metas, w.hashCache), r(\"planner\", `Metadata warmup took ${(performance.now() - a).toFixed(2)}ms`);\n }\n if (!v) {\n let a = new b();\n await a.build(e.files), w.componentGraph = a, w.graphStats = {\n hits: 0,\n misses: 0,\n fallbacks: 0\n }, r(\"planner\", \"Component dependency graph built\");\n }\n if (v && v.precomputedAnalysis) return n(s, \"planner\", \"Full analysis cached — returning precomputed result\"), a(v);\n if (v) n(s, \"planner\", \"Execution plan loaded from cache\"), l = v.tasks;\n else {\n if (r(\"planner\", \"Building tasks...\"), l = await buildAllTasks(h, d, w, y, e.parallelThreshold, e.workerCount, e.overrides), e.debug && w.graphStats) {\n let { hits: e, misses: a, fallbacks: t } = w.graphStats;\n r(\"planner\", `Graph stats — hits: ${e}, misses: ${a}, fallbacks: ${t}`);\n }\n if (e.cache && w.globalHash) {\n r(\"planner\", \"Converting all tasks to full plan for cache...\");\n let a = convertTasksToPlan(l, d, y), t = f(a, l), n = {\n tasks: l,\n plan: a,\n indexes: t,\n skippedTasks: [],\n globalHash: w.globalHash\n };\n await savePlanToCacheIfEnabled(e, w, n);\n }\n }\n let x = l, $ = [];\n if (e.cache) {\n r(\"planner\", \"Filtering cached tasks...\");\n let a = await u(l, e.cache.results, e.incremental);\n x = a.tasks, $ = a.skippedTasks, o = a.cachedResults, c = [\n ...new Set(x.map((e)=>e.filePath))\n ], p = [\n ...new Set($.map((e)=>e.filePath))\n ].filter((e)=>!c.includes(e));\n }\n r(\"planner\", \"Converting tasks to file-centric plan...\");\n let F = convertTasksToPlan(x, d, y);\n r(\"planner\", `Building indexes for ${x.length} tasks...`);\n let C = f(F, x), P = {\n tasks: x,\n plan: F,\n indexes: C,\n skippedTasks: $,\n cachedResults: o,\n globalHash: w.globalHash,\n changedFiles: c,\n cachedFiles: p\n };\n return n(s, \"planner\", \"Execution plan built\"), a(P);\n } catch (e) {\n return r(\"planner\", `Error building plan: ${e.message}`), t(Error(`Failed to build execution plan: ${e.message}`));\n }\n};\nexport const getExecutionPlanSummary = (e)=>{\n let { stats: a } = e.indexes, t = [];\n return t.push(\"--- Execution Plan Summary ---\"), t.push(`Total files: ${a.totalFiles}`), t.push(`Total tasks: ${a.totalTasks}`), t.push(`Avg tasks per file: ${a.avgTasksPerFile.toFixed(1)}`), t.push(`Files with templates: ${a.filesWithTemplates}`), t.push(`Files with styles: ${a.filesWithStyles}`), t.push(`Files with specs: ${a.filesWithSpecs}`), t.push(\"\"), t.join(\"\\n\");\n};\nlet validateBuildInputs = (e, a)=>0 === e.length ? Error(\"No files to analyze\") : 0 === a.size ? Error(\"No rules configured\") : null, createTaskBuilderContext = (e)=>({\n hashCache: new Map(),\n resourceCache: new Map(),\n directoryCache: new Map(),\n cacheKeyCtx: e?.cacheKeyCtx\n }), tryLoadPlanFromCache = async (e, a, t)=>{\n let l;\n if (!e.cache) return null;\n let { files: n, rules: i } = e, o = await w(n, i, a.hashCache, e.cacheKeyCtx);\n if (a.globalHash = o, e.incremental?.forceRerun) return null;\n let c = e.cache.analysis, p = await c.get(o);\n if (p) return e.debug && r(\"planner\", \"Analysis results cached (Short-circuit enabled)\"), {\n tasks: [],\n plan: {},\n indexes: {\n filesNeedingTsAst: [],\n filesNeedingHtmlAst: [],\n filesNeedingCssAst: [],\n filesNeedingTypeChecker: [],\n tasksByFile: {},\n tasksByRule: {},\n tasksBySeverityLevel: {\n off: [],\n warn: [],\n error: []\n },\n filesByType: {\n component: [],\n directive: [],\n pipe: [],\n service: [],\n module: [],\n guard: [],\n logic: [],\n 'angular-class': [],\n spec: [],\n template: [],\n style: [],\n config: [],\n unknown: []\n },\n tasksBySeverity: {\n off: 0,\n warn: 0,\n error: 0\n },\n stats: {\n totalFiles: 0,\n totalTasks: 0,\n avgTasksPerFile: 0,\n filesWithTemplates: 0,\n filesWithStyles: 0,\n filesWithSpecs: 0\n }\n },\n skippedTasks: [],\n globalHash: o,\n precomputedAnalysis: p\n };\n let u = performance.now(), h = await e.cache.plans.get(o), f = performance.now();\n if (!h) return null;\n let d = JSON.stringify(h).length, g = performance.now();\n try {\n l = 1 === h.v ? m(h) : h;\n } catch (a) {\n r(\"planner\", \"Plan cache deserialization failed — deleting corrupted entry and rebuilding\");\n try {\n await e.cache.plans.delete?.(o);\n } catch {}\n return t && t.record(s('CacheCorruption', {\n cause: a instanceof Error ? a.message : String(a),\n phase: 'planner',\n recoverable: !0,\n details: {\n globalHash: o\n }\n })), null;\n }\n let k = performance.now();\n return e.debug && (r(\"planner\", \"Plan cache HIT\"), r(\"planner\", ` Size: ${(d / 1024).toFixed(1)}KB`), r(\"planner\", ` IO: ${(f - u).toFixed(2)}ms`), r(\"planner\", ` Deser: ${(k - g).toFixed(2)}ms`)), {\n ...l,\n globalHash: o\n };\n}, savePlanToCacheIfEnabled = async (e, a, t)=>{\n if (!e.cache || !a.globalHash) return;\n let l = performance.now();\n r(\"planner\", \"Saving execution plan to cache...\");\n let n = d(t);\n await e.cache.plans.set(a.globalHash, n);\n let s = performance.now() - l;\n r(\"planner\", ` Plan cache saved in ${s.toFixed(2)}ms`);\n}, collectApplicableRulesFromTasks = (e, a)=>{\n let t = new Set(e.map((e)=>e.ruleName)), r = [];\n for (let e of t){\n let t = a.get(e);\n t && r.push(t);\n }\n return r;\n}, calculateHashFromTasks = (e, a)=>0 === e.length ? \"\" : y(e[0].inputs, a), buildAllTasks = async (e, a, t, r, l = 10000, n = 4, s)=>{\n if (await preclassifyLogicFiles(e, r), e.length >= l) {\n let t = await tryBuildAllTasksParallel(e, a, r, n, s);\n if (t) return t;\n }\n return buildAllTasksSequential(e, a, t, r, s);\n}, preclassifyLogicFiles = async (e, a)=>{\n if (!a) return;\n let t = e.filter((e)=>!a.has(e) && 'logic' === o(e));\n if (0 === t.length) return;\n r(\"planner\", `Level-2 classification: scanning ${t.length} unclassified .ts files for Angular decorators`);\n let l = performance.now();\n await Promise.all(t.map(async (e)=>{\n try {\n let t = await p(e, 'utf8');\n a.set(e, c.test(t) ? 'angular-class' : 'logic');\n } catch {\n a.set(e, 'logic');\n }\n })), r(\"planner\", `Level-2 classification complete in ${(performance.now() - l).toFixed(1)}ms — upgraded ${[\n ...a.values()\n ].filter((e)=>'angular-class' === e).length} files to 'angular-class'`);\n}, buildAllTasksSequential = async (a, t, r, l, n)=>{\n let s = [];\n for (let i of a){\n let a = getOrDetectFileType(i, l), o = n?.length ? e(i, t, n) : t, c = await h(i, a, o, r);\n s.push(...c);\n }\n return s;\n}, tryBuildAllTasksParallel = async (e, a, t, l, n)=>{\n r(\"planner\", `Parallelizing task discovery across ${l} workers...`);\n try {\n let s = await resolveWorkerPath();\n if (!s) return r(\"planner\", \"Worker script not found, falling back to sequential execution\"), null;\n r(\"planner\", `Using worker: ${s}`);\n let i = splitIntoChunks(e, l);\n r(\"planner\", `Split ${e.length} files into ${i.length} chunks`);\n let o = await runWorkerChunks(i, s, a, t, n);\n return r(\"planner\", `Workers completed. Generated ${o.length} tasks.`), o;\n } catch (e) {\n return r(\"planner\", `Parallel execution failed, falling back to sequential: ${String(e)}`), null;\n }\n}, resolveWorkerPath = async ()=>{\n let { Worker: e } = await import(\"node:worker_threads\"), { fileURLToPath: a } = await import(\"node:url\"), { dirname: t, join: r } = await import(\"node:path\"), { existsSync: l } = await import(\"node:fs\"), n = t(a(import.meta.url));\n for (let e of [\n r(n, \"worker.js\"),\n r(n, \"worker.cjs\"),\n r(n, \"worker.ts\"),\n r(n, \"planner\", \"worker.js\"),\n r(n, \"planner\", \"worker.cjs\")\n ])if (l(e)) return e;\n return null;\n}, splitIntoChunks = (e, a)=>{\n let t = Math.ceil(e.length / a), r = [];\n for(let a = 0; a < e.length; a += t)r.push(e.slice(a, a + t));\n return r;\n}, runWorkerChunks = async (e, a, t, l, n)=>{\n let { Worker: s } = await import(\"node:worker_threads\"), i = Array.from(t.entries()), o = l ? Array.from(l.entries()) : void 0, c = n?.length ? [\n ...n\n ] : void 0, p = e.map((e, t)=>new Promise((l, n)=>{\n let p = new s(a, {\n workerData: {\n files: e,\n rulesEntries: i,\n fileTypeCacheEntries: o,\n overridesData: c\n }\n });\n p.on(\"message\", (e)=>l(e.tasks)), p.on(\"error\", (e)=>{\n r(\"planner\", `Worker ${t} error: ${String(e)}`), n(e instanceof Error ? e : Error(String(e)));\n }), p.on(\"exit\", (e)=>{\n 0 !== e && n(Error(`Worker ${t} stopped with exit code ${e}`));\n });\n }));\n return (await Promise.all(p)).flat();\n}, getOrDetectFileType = (e, a)=>{\n if (!a) return o(e);\n let t = a.get(e);\n if (t) return t;\n let r = o(e);\n return a.set(e, r), r;\n}, convertTasksToPlan = (e, a, t)=>{\n let r = T(e), l = {};\n for (let [e, n] of r){\n let r = getOrDetectFileType(e, t), s = collectApplicableRulesFromTasks(n, a), i = calculateHashFromTasks(n, s), o = n.map((e)=>({\n ruleName: e.ruleName,\n severity: e.severity,\n options: e.options,\n cacheKey: e.taskId,\n inputs: e.inputs,\n needsTypeChecker: e.needsTypeChecker\n }));\n l[e] = {\n file: {\n path: e,\n type: r,\n hash: i\n },\n tasks: o\n };\n }\n return l;\n};\n","export const scanResultToPlanInput = (e, l)=>({\n files: e.files,\n rules: l.rules,\n rootDir: l.rootDir,\n cache: l.cache,\n debug: l.debug,\n incremental: l.incremental,\n cacheKeyCtx: l.cacheKeyCtx,\n parallelThreshold: l.parallelThreshold,\n workerCount: l.workerCount\n });\nexport const hasScanFiles = (e)=>e.files.length > 0;\nexport const getScanFileCount = (e)=>e.files.length;\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ngcompass/planner",
|
|
3
|
+
"version": "0.1.1-beta",
|
|
4
|
+
"description": "Execution planning and incremental analysis for ngcompass",
|
|
5
|
+
"sideEffects": false,
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"type": "module",
|
|
10
|
+
"engines": {
|
|
11
|
+
"node": "^20.19.0 || >=22.12.0"
|
|
12
|
+
},
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"import": "./dist/index.js",
|
|
17
|
+
"require": "./dist/index.cjs"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist"
|
|
22
|
+
],
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"minimatch": "^10.2.4",
|
|
25
|
+
"@ngcompass/common": "0.1.1-beta",
|
|
26
|
+
"@ngcompass/scanner": "0.1.1-beta",
|
|
27
|
+
"@ngcompass/cache": "0.1.1-beta"
|
|
28
|
+
},
|
|
29
|
+
"peerDependencies": {
|
|
30
|
+
"typescript": "5.9.3"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@types/node": "^25.1.0"
|
|
34
|
+
},
|
|
35
|
+
"keywords": [
|
|
36
|
+
"angular",
|
|
37
|
+
"planner",
|
|
38
|
+
"incremental",
|
|
39
|
+
"ngcompass"
|
|
40
|
+
],
|
|
41
|
+
"author": "ngcompass",
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"publishConfig": {
|
|
44
|
+
"access": "public"
|
|
45
|
+
},
|
|
46
|
+
"scripts": {
|
|
47
|
+
"build": "tsup",
|
|
48
|
+
"build:prod": "tsup --minify",
|
|
49
|
+
"dev": "tsup --watch",
|
|
50
|
+
"test": "vitest run --passWithNoTests",
|
|
51
|
+
"test:watch": "vitest --passWithNoTests",
|
|
52
|
+
"typecheck": "tsc --noEmit",
|
|
53
|
+
"clean": "rimraf dist .turbo"
|
|
54
|
+
}
|
|
55
|
+
}
|