🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

ngcompass

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ngcompass - npm Package Compare versions

Package version was removed
This package version has been unpublished, mostly likely due to security reasons
Comparing version
0.1.6-beta
to
0.1.7-beta
+10
schematics/collection.json
{
"$schema": "http://json-schema.org/schema",
"schematics": {
"ng-add": {
"description": "Install ngcompass into an Angular workspace",
"factory": "./ng-add/index.cjs#ngAdd",
"schema": "./ng-add/schema.json"
}
}
}
const CONFIG_PATH = '/ngcompass.config.ts';
const PACKAGE_JSON_PATH = '/package.json';
const LINT_SCRIPT_NAME = 'lint:ngcompass';
const LINT_SCRIPT_COMMAND = 'ngcompass analyze';
const DEFAULT_INCLUDE = ['**/*.ts', '**/*.html'];
const DEFAULT_EXCLUDE = [
'**/node_modules/**',
'**/dist/**',
'**/build/**',
'**/*.spec.ts',
'**/*.test.ts',
];
function ngAdd(options = {}) {
return (tree) => {
writeConfig(tree, options);
if (!options.skipScript) writePackageScript(tree);
return tree;
};
}
function writeConfig(tree, options) {
if (tree.exists(CONFIG_PATH) && !options.force) return;
const config = renderConfigTemplate(resolveIncludePatterns(tree));
if (tree.exists(CONFIG_PATH)) {
tree.overwrite(CONFIG_PATH, config);
return;
}
tree.create(CONFIG_PATH, config);
}
function writePackageScript(tree) {
if (!tree.exists(PACKAGE_JSON_PATH)) return;
const raw = tree.read(PACKAGE_JSON_PATH);
if (!raw) return;
const pkg = JSON.parse(raw.toString('utf-8'));
if (!pkg || typeof pkg !== 'object' || Array.isArray(pkg)) return;
const scripts =
pkg.scripts && typeof pkg.scripts === 'object' && !Array.isArray(pkg.scripts)
? pkg.scripts
: {};
if (typeof scripts[LINT_SCRIPT_NAME] !== 'string') {
scripts[LINT_SCRIPT_NAME] = LINT_SCRIPT_COMMAND;
}
pkg.scripts = scripts;
tree.overwrite(PACKAGE_JSON_PATH, `${JSON.stringify(pkg, null, 2)}\n`);
}
function resolveIncludePatterns(tree) {
if (!tree.exists('/angular.json')) return DEFAULT_INCLUDE;
const raw = tree.read('/angular.json');
if (!raw) return DEFAULT_INCLUDE;
try {
const workspace = JSON.parse(raw.toString('utf-8'));
const roots = readAngularSourceRoots(workspace);
return roots.length > 0 ? buildIncludePatterns(roots) : DEFAULT_INCLUDE;
} catch {
return DEFAULT_INCLUDE;
}
}
function readAngularSourceRoots(workspace) {
if (!isRecord(workspace) || !isRecord(workspace.projects)) return [];
const roots = [];
const seen = new Set();
for (const project of Object.values(workspace.projects)) {
const sourceRoot = readProjectSourceRoot(project);
if (!sourceRoot || seen.has(sourceRoot)) continue;
seen.add(sourceRoot);
roots.push(sourceRoot);
}
return roots.sort((a, b) => a.localeCompare(b));
}
function readProjectSourceRoot(project) {
if (!isRecord(project)) return undefined;
if (typeof project.sourceRoot === 'string' && project.sourceRoot.trim()) {
return normalizePath(project.sourceRoot);
}
if (typeof project.root === 'string' && project.root.trim()) {
return normalizePath(project.root);
}
return undefined;
}
function normalizePath(value) {
return value.replace(/\\/g, '/').replace(/^\/+/, '').replace(/\/+$/, '');
}
function buildIncludePatterns(sourceRoots) {
const patterns = [];
for (const root of sourceRoots) {
patterns.push(`${root}/**/*.ts`);
patterns.push(`${root}/**/*.html`);
}
return patterns;
}
function renderConfigTemplate(include = DEFAULT_INCLUDE) {
const includes = include.map((pattern) => ` '${pattern}',`).join('\n');
const excludes = DEFAULT_EXCLUDE.map((pattern) => ` '${pattern}',`).join('\n');
return `import { defineConfig } from '@ngcompass/config';
export default defineConfig({
extends: 'ngcompass:recommended',
include: [
${includes}
],
exclude: [
${excludes}
],
profiles: {
ci: {
outputFormat: 'json',
maxWarnings: 0,
},
},
});
`;
}
function isRecord(value) {
return !!value && typeof value === 'object' && !Array.isArray(value);
}
exports.ngAdd = ngAdd;
{
"$schema": "http://json-schema.org/schema",
"type": "object",
"properties": {
"force": {
"type": "boolean",
"description": "Overwrite an existing ngcompass.config.ts file",
"default": false
},
"skipScript": {
"type": "boolean",
"description": "Do not add the lint:ngcompass package script",
"default": false
}
},
"additionalProperties": false
}
+13
-14
#!/usr/bin/env node
'use strict';var commander=require('commander'),reporters=require('@ngcompass/reporters'),config=require('@ngcompass/config'),L=require('path'),h=require('picocolors'),common=require('@ngcompass/common'),k=require('process'),cache=require('@ngcompass/cache'),rules=require('@ngcompass/rules'),engine=require('@ngcompass/engine'),planner=require('@ngcompass/planner'),scanner=require('@ngcompass/scanner');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var L__default=/*#__PURE__*/_interopDefault(L);var h__default=/*#__PURE__*/_interopDefault(h);var k__default=/*#__PURE__*/_interopDefault(k);var f=(t=1)=>{process.stdout.isTTY&&process.stdout.write("\x1B[?25h"),process.exit(t);};function ce(t,r){t.command("init").description("Create a starter ngcompass configuration in the current project").option("-f, --force","Overwrite an existing configuration file").option("--cwd <path>","Project directory where the configuration will be created",process.cwd()).action(async e=>{try{let o=await config.initConfig({cwd:e.cwd,force:e.force});await reporters.getConfigReporter().renderInitResult(o),o.success||o.alreadyExists||f();}catch(o){console.error(o instanceof Error?o.message:String(o)),f();}});}var le=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],j=class{stream;timer=null;frameIndex=0;message="";isTTY;constructor(r){this.stream=r,this.isTTY=!!r.isTTY;}start(r){this.message=r,this.frameIndex=0,this.isTTY?(this.stream.write("\x1B[?25l"),this.render(),this.timer=setInterval(()=>this.render(),80)):this.stream.write(`${h__default.default.cyan("\u276F")} ${h__default.default.dim(r)}
'use strict';var commander=require('commander'),reporters=require('@ngcompass/reporters'),config=require('@ngcompass/config'),k=require('picocolors'),E=require('process'),cache=require('@ngcompass/cache'),N=require('path'),common=require('@ngcompass/common'),engine=require('@ngcompass/engine'),planner=require('@ngcompass/planner'),scanner=require('@ngcompass/scanner'),rules=require('@ngcompass/rules');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var k__default=/*#__PURE__*/_interopDefault(k);var E__default=/*#__PURE__*/_interopDefault(E);var N__default=/*#__PURE__*/_interopDefault(N);var $=()=>{process.stdout.isTTY&&process.stdout.write("\x1B[?25h");},f=(t=1)=>{$(),process.exit(t);},d=(t,r)=>{let e=r===void 0?"":`: ${r instanceof Error?r.message:String(r)}`;console.error(`${k__default.default.red(t)}${e}`);};function D(t,r){t.command("init").description("Create a starter ngcompass configuration in the current project").option("-f, --force","Overwrite an existing configuration file").option("--cwd <path>","Project directory where the configuration will be created",process.cwd()).action(async e=>{try{let n=await config.initConfig({cwd:e.cwd,force:e.force});await reporters.getConfigReporter().renderInitResult(n),n.success||n.alreadyExists||f();}catch(n){d("Error initializing configuration",n),f();}});}var M=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],R=class{stream;timer=null;frameIndex=0;message="";isTTY;constructor(r){this.stream=r,this.isTTY=!!r.isTTY;}start(r){this.message=r,this.frameIndex=0,this.isTTY?(this.stream.write("\x1B[?25l"),this.render(),this.timer=setInterval(()=>this.render(),80)):this.stream.write(`${k__default.default.cyan("\u276F")} ${k__default.default.dim(r)}
`);}update(r){this.message=r,this.isTTY&&this.timer&&this.render();}writeLine(r){this.isTTY&&this.timer?(this.stream.write("\r\x1B[K"),this.stream.write(`${r}
`),this.render()):this.stream.write(`${r}
`);}stop(){this.timer&&(clearInterval(this.timer),this.timer=null),this.isTTY&&(this.stream.write("\r\x1B[K"),this.stream.write("\x1B[?25h"));}render(){let r=h__default.default.cyan(le[this.frameIndex%le.length]);this.frameIndex++,this.stream.write(`\r\x1B[K${r} ${h__default.default.dim(this.message)}`);}};var we={eco:{typeAwareConcurrency:1,typeAwareFileConcurrency:1,typeAwareChunkSize:100,typeAwareIsolation:"auto",typeAwareChunkStrategy:"dependency"},balanced:{typeAwareConcurrency:2,typeAwareFileConcurrency:2,typeAwareChunkSize:300,typeAwareIsolation:"auto",typeAwareChunkStrategy:"simple"},turbo:{typeAwareConcurrency:2,typeAwareFileConcurrency:4,typeAwareChunkSize:500,typeAwareIsolation:"off",typeAwareChunkStrategy:"simple"}},pe=Object.keys(we),me=["auto","process","off"],de=["dependency","simple"];function z(t,r){if(t===void 0)return;let e=Number(t);if(!Number.isInteger(e)||e<1)throw Error(`${r} must be a positive integer.`);return e}function fe(t){return t==="ui"?"html":t??"console"}function D(t){return t<1e3?`${Math.max(0,Math.round(t))}ms`:`${(t/1e3).toFixed(1)}s`}function ge(t,r){return `${t.toLocaleString()} ${r}${t===1?"":"s"}`}function he(t,r,e){return `Running analysis in ${t} mode: ${r.toLocaleString()}/${e.toLocaleString()} checks complete...`}function ye(t,r){t.command("analyze").description("Analyze your project and report rule violations and architecture risks").option("-p, --profile <name>","Configuration profile to run").option("--force","Ignore cached results and re-run all checks").option("--format <fmt>","Reporter format: console | json | sarif | html | ui").option("--compact","Use compact, ESLint-style output").option("-q, --quiet","Show summary counts only, suppress violation details").option("--no-recommendation","Suppress fix recommendations from output").option("--output <path>","Output path for UI reports (default: ngcompass-report.html)").option("--rule <id>","Run only one rule (useful for debugging or focused checks)").option("--mode <mode>","Performance mode: eco | balanced | turbo (default: balanced)","balanced").option("--max-workers <n>","Cap the number of worker threads (lower = less memory, e.g. --max-workers 2)").addOption(new commander.Option("--type-aware-chunk-size <n>","Files per type-aware chunk").hideHelp()).addOption(new commander.Option("--type-aware-concurrency <n>","Concurrent type-aware chunks").hideHelp()).addOption(new commander.Option("--type-aware-file-concurrency <n>","Concurrent files per type-aware chunk").hideHelp()).addOption(new commander.Option("--type-aware-isolation <mode>","Type-aware isolation: auto | process | off").hideHelp()).addOption(new commander.Option("--type-aware-chunk-strategy <mode>","Type-aware chunk ordering: dependency | simple").hideHelp()).option("--skip-type-check","Skip rules that require the TypeScript type checker (fastest, lowest memory)").action(async e=>{let o=performance.now(),a=reporters.getReporter(fe(e.format),{compact:!!e.compact,outputPath:e.output,quiet:!!e.quiet,noRecommendation:e.recommendation===false}),n=r,i=0;try{var l;let p,R,A,K,V,J,Q,X=await He(e,r,a);if(!X){i=1;return}let{config:w}=X,Z=(p=we[(function(u){let C=u??"balanced";if(!pe.includes(C))throw Error(`Invalid performance mode "${C}". Expected one of: ${pe.join(", ")}.`);return C})(e.mode)],R=z(e.maxWorkers,"--max-workers"),A=z(e.typeAwareChunkSize,"--type-aware-chunk-size"),K=z(e.typeAwareConcurrency,"--type-aware-concurrency"),V=z(e.typeAwareFileConcurrency,"--type-aware-file-concurrency"),{maxWorkers:R??w.maxWorkers,typeAwareChunkSize:A??p.typeAwareChunkSize,typeAwareConcurrency:K??p.typeAwareConcurrency,typeAwareFileConcurrency:V??p.typeAwareFileConcurrency,typeAwareIsolation:(function(u){if(u!==void 0){if(!me.includes(u))throw Error(`Invalid --type-aware-isolation "${u}". Expected one of: ${me.join(", ")}.`);return u}})(e.typeAwareIsolation)??p.typeAwareIsolation,typeAwareChunkStrategy:(function(u){if(u!==void 0){if(!de.includes(u))throw Error(`Invalid --type-aware-chunk-strategy "${u}". Expected one of: ${de.join(", ")}.`);return u}})(e.typeAwareChunkStrategy)??p.typeAwareChunkStrategy});n=cache.createRuntimeCache(w,k__default.default.cwd());let T=(function(u,C){if(u)return fe(u);switch(C){case "json":return "json";case "sarif":return "sarif";case "html":return "html";default:return "console"}})(e.format,w.outputFormat);a=reporters.getReporter(T,{compact:!!e.compact,outputPath:e.output??w.outputPath,quiet:!!e.quiet,noRecommendation:e.recommendation===!1});let I=await qe(w,e,n,a);if(!I){i=1;return}let ee=await Ge(w,e,a);if(!ee){i=1;return}let y=await Ke(I,ee,n,e,a,w,Z.maxWorkers);if(!y){i=1;return}let Ee=T==="console"?k__default.default.stdout:k__default.default.stderr,F=new j(Ee),Se=y.tasks.length+(y.skippedTasks?.length??0),re=e.mode??"balanced";F.start(he(re,0,Se));let be=(function(u,C,oe){let P=new Map,v=new Map;for(let m of u.tasks){let s=m.filePath;typeof s=="string"&&s.length!==0&&(m.needsTypeChecker||m.needsProjectContext?v.set(s,(v.get(s)??0)+1):P.set(s,(P.get(s)??0)+1));}let _=new Map,Te=new Map,ne=new Set,O=new Set,B=(m,s)=>{let c=m.get(s.filePath),g=c?{taskCount:c.taskCount+s.taskCount,issueCount:c.issueCount+s.issueCount,errorCount:c.errorCount+s.errorCount,warningCount:c.warningCount+s.warningCount,duration:c.duration+s.duration}:{taskCount:s.taskCount,issueCount:s.issueCount,errorCount:s.errorCount,warningCount:s.warningCount,duration:s.duration};return m.set(s.filePath,g),g},Y=(m,s)=>{if(O.has(m))return;O.add(m);let c=L__default.default.relative(oe,m)||m,g=s.issueCount>0,d=g?h__default.default.red("\u276F"):h__default.default.green("\u276F"),x=g?h__default.default.red(D(s.duration)):h__default.default.green(D(s.duration));C(g?`${d} ${h__default.default.red(c)} ${x} ${h__default.default.red(ge(s.issueCount,"issue"))}`:`${d} ${h__default.default.dim(c)} ${x}`);};return m=>{let s=m.filePath;if(!O.has(s))if(m.typeAware===!1){let c=B(_,m),g=P.get(s)??c.taskCount;if(c.taskCount<g)return;v.has(s)?((d,x)=>{if(ne.has(d)||O.has(d))return;ne.add(d);let ae=L__default.default.relative(oe,d)||d,U=x.issueCount>0,ie=U?h__default.default.red("\u276F"):h__default.default.green("\u276F"),se=U?h__default.default.red(D(x.duration)):h__default.default.green(D(x.duration));C(U?`${ie} ${h__default.default.red(ae)} ${se} ${h__default.default.red(ge(x.issueCount,"issue"))}`:`${ie} ${h__default.default.dim(ae)} ${se}`);})(s,c):Y(s,c);}else if(m.typeAware===!0){let c=B(Te,m),g=v.get(s)??c.taskCount;if(c.taskCount<g)return;let d=_.get(s);Y(s,d?{taskCount:d.taskCount+c.taskCount,issueCount:d.issueCount+c.issueCount,errorCount:d.errorCount+c.errorCount,warningCount:d.warningCount+c.warningCount,duration:d.duration+c.duration}:c);}else {let c=(P.get(s)??0)+(v.get(s)??0),g=B(_,m);if(g.taskCount<(c||g.taskCount))return;Y(s,g);}}})(y,u=>F.writeLine(u),k__default.default.cwd()),$=await Ve(y,n,Z,e,a,I,w,(u,C)=>{F.update(he(re,u,C));},be);if(F.stop(),!$){i=1;return}let Re=performance.now()-o,te={scannedFiles:new Set([...y.tasks.map(u=>u.filePath),...(y.skippedTasks??[]).map(u=>u.filePath)]).size,discoveredFiles:I.length,totalFiles:$.stats.totalFiles,totalTasks:y.tasks.length+(y.skippedTasks?.length??0),cachedTasks:y.precomputedAnalysis?y.tasks.length:void 0,totalErrors:$.stats.totalErrors,totalWarnings:$.stats.totalWarnings,failOnSeverity:w.failOnSeverity,maxWarnings:w.maxWarnings,duration:Re};T==="console"&&a.summary(te),a.parseErrors($.parseErrors),a.report($.results),T!=="console"&&(a.step("\u276F Writing report..."),a.summary(te)),y.precomputedAnalysis||await Je($.results,n,e,a),l=$.stats,J=w.failOnSeverity??"error",Q=w.maxWarnings??10,(l.totalErrors>0||J==="warn"&&l.totalWarnings>0||l.totalWarnings>Q)&&(i=1);}catch(p){a.error(p),i=1;}finally{n&&n!==r&&await n.flush(),i!==0&&f(i);}});}async function He(t,r,e){let o=performance.now();e.step("\u276F Loading configuration...");let a=await config.resolveConfig({profile:t.profile,cache:r,cwd:k__default.default.cwd()});if(!a.report.valid){let i=a.report.issues.map(l=>{let p=l.path?.join(".")||"root";return `[${l.severity.toUpperCase()}] ${p}: ${l.message}`});return e.error(Error(["Configuration validation failed",...i].join(`
`))),null}if(!a.config)return e.error(Error("No configuration found")),null;let n=a.config.plugins;if(n&&n.length>0){e.step(`\u276F Loading ${n.length} plugin(s)...`);let i=k__default.default.cwd();await config.loadPlugins(n,i,rules.getGlobalRegistry()),e.info(`Loaded ${n.length} plugin(s)`);}return e.debug(`Config resolve: ${(performance.now()-o).toFixed(2)}ms`),{config:a.config}}async function qe(t,r,e,o){let a=performance.now();o.step("\u276F Discovering files...");let n=await scanner.scan({rootDir:k__default.default.cwd(),include:t.include??[...common.DEFAULT_INCLUDE_PATTERNS],exclude:t.exclude??[],ignorePatterns:t.ignorePatterns,tsConfigPath:(function(i,l){if(!i?.project)return;let p=i.tsconfigRootDir?L__default.default.resolve(l,i.tsconfigRootDir):l;return L__default.default.resolve(p,i.project)})(t.parserOptions,k__default.default.cwd()),respectGitignore:true,debug:r.debug,cache:e});return n.ok?(o.info(`\u276F Found ${n.data.files.length} files in ${(performance.now()-a).toFixed(0)}ms`),o.debug(`File discovery: ${(performance.now()-a).toFixed(2)}ms`),n.data.files):(o.error(Error(`File discovery failed: ${n.error.message}`)),null)}async function Ge(t,r,e){let o=performance.now();e.step("\u276F Loading rules...");let a=t;r.rule&&(e.info(`Filtering analysis to single rule: ${r.rule}`),a={...t,rules:{[r.rule]:"error"},extends:[]});let n=await rules.resolveRules(a);if(!n.ok)return e.error(Error(`Rule resolution failed: ${n.error.message}`)),null;let i=rules.getEnabledRules(n.data.rules);return e.info(`\u276F Loaded ${i.size} active rules in ${(performance.now()-o).toFixed(0)}ms`),e.debug(`Rule resolution: ${(performance.now()-o).toFixed(2)}ms`),i}async function Ke(t,r,e,o,a,n,i){let l=performance.now();a.step("\u276F Planning analysis...");let p=await planner.buildExecutionPlan({files:t,rules:r,rootDir:k__default.default.cwd(),cache:e,debug:o.debug,incremental:o.force?{forceRerun:true}:void 0,workerCount:i,overrides:n.overrides});return p.ok?(p.data.precomputedAnalysis?a.info("\u276F Reused cached analysis plan"):a.info(`\u276F Prepared ${p.data.tasks.length.toLocaleString()} checks in ${(performance.now()-l).toFixed(0)}ms`),a.debug(`Plan build: ${(performance.now()-l).toFixed(2)}ms`),p.data):(a.error(Error(`Execution plan building failed: ${p.error.message}`)),null)}async function Ve(t,r,e,o,a,n,i,l,p){let R=performance.now();engine.configureRuleExecutor(rules.executeBatchedNewEngineRules,rules.isNewEngineRule);let A=await engine.runAnalysis(t,{rootDir:k__default.default.cwd(),cache:r,debug:o.debug,files:n,maxWorkers:e.maxWorkers,typeAwareChunkSize:e.typeAwareChunkSize,typeAwareConcurrency:e.typeAwareConcurrency,typeAwareFileConcurrency:e.typeAwareFileConcurrency,typeAwareIsolation:e.typeAwareIsolation,typeAwareChunkStrategy:e.typeAwareChunkStrategy,skipTypeCheck:o.skipTypeCheck,parserOptions:i?.parserOptions,onProgress:l,onFileProgress:p});return A.ok?(a.debug(`Execution: ${(performance.now()-R).toFixed(2)}ms`),A.data):(a.error(Error(`Analysis failed: ${A.error.message}`)),null)}async function Je(t,r,e,o){if(!r)return;let a=performance.now(),n=[];for(let i of t)i.taskId&&n.push([i.taskId,i]);n.length>0&&(await r.results.setMany(n),e.debug&&o.debug(`Saved ${n.length} results to cache (${(performance.now()-a).toFixed(2)}ms)`));}function Ce(t,r){t.command("config").description("Inspect and validate ngcompass configuration").command("health").description("Run semantic validation checks for the active configuration").option("-p, --profile <name>","Configuration profile to validate").action(async e=>{try{let o=await config.validateConfig({cache:e.cache?r:void 0,profile:e.profile});await reporters.getConfigReporter().renderHealthReport(o.report),o.report.valid||f();}catch(o){let a=o instanceof Error?o.message:String(o);console.error(`Error: ${a}`),f();}});}function $e(t,r){let e=t.command("cache").description("Inspect and manage analysis cache data");e.command("clear").description("Clear cached data for one cache type or all cache types").option("-p, --profile <name>","Configuration profile used to resolve cache settings").option("--type <type>","Cache type to clear: ast | config | results | all","all").action(async o=>{let a=reporters.getCacheReporter();k__default.default.stdout.write(h__default.default.dim(` \u203A Clearing cache...
`));let n=o.type,i=["ast","config","results","all"];i.includes(n)||(console.error(h__default.default.red(`Invalid cache type: ${n}. Must be one of: ${i.join(", ")}`)),f());try{let l=await H(r,{profile:o.profile,allowDisabled:!0});n==="all"?await l.clear():await l.clearType(n),a.renderClearResult(n);}catch(l){console.error(h__default.default.red("Error clearing cache:"),l),f();}}),e.command("info").description("Show cache status, size, and usage details").option("-p, --profile <name>","Configuration profile used to resolve cache settings").action(async o=>{let a=reporters.getCacheReporter();try{let n=await H(r,{profile:o.profile,allowDisabled:!0}),i=await n.getInfo();a.renderCacheInfo(i);}catch(n){console.error(h__default.default.red("Error getting cache info:"),n),f();}}),e.command("path").description("Print the resolved cache directory path").option("-p, --profile <name>","Configuration profile used to resolve cache settings").action(async o=>{let a=await H(r,{profile:o.profile,allowDisabled:true});k__default.default.stdout.write(`${a.getCachePath()}
`);});}async function H(t,r={}){let e=r.cwd??k__default.default.cwd();try{let o=await config.resolveConfig({profile:r.profile,cache:t,cwd:e});return !o.report.valid||!o.config?t:cache.createRuntimeCache(o.config,e,{allowDisabled:r.allowDisabled})??t}catch{return t}}function xe(t){t.command("rules [ruleName]").description("Browse available rules or inspect details for a specific rule").option("--preset <name>","Filter by preset: recommended, strict, performance, reactivity, or all").action((r,e)=>{e.preset&&!rules.isBuiltinPreset(e.preset)&&(console.error(h__default.default.red(`Unknown preset: "${e.preset}".`)),console.error(h__default.default.dim("Available presets: recommended, strict, all, performance, reactivity")),f());let o=rules.getRuleListEntries(),a=reporters.getRulesReporter({preset:e.preset});if(r){let n=o.find(i=>i.name===r);if(!n){console.error(h__default.default.red(`Rule "${r}" not found.`)),console.error(h__default.default.dim("Run `ngcompass rules` to list available rules.")),f();return}a.renderSingleRule(n);}else a.render(o);});}function Ae(t,r){ce(t),ye(t,r),Ce(t,r),$e(t,r),xe(t);}var b=()=>{process.stdout.isTTY&&process.stdout.write("\x1B[?25h");},ve=false,S=async(t,r)=>{if(!ve){if(ve=true,b(),t)try{let e=new Promise(o=>setTimeout(o,1e4).unref());await Promise.race([t.flush(),e]);}catch{}process.exit(r);}};async function cr(){let t=new commander.Command;t.name("ngcompass").description("Static analysis and architecture insights for Angular codebases.").version(common.PACKAGE_VERSION,"-V, --version","Display ngcompass version").option("--debug","Enable detailed debug logs across all modules").addHelpText("after",`
`);}stop(){this.timer&&(clearInterval(this.timer),this.timer=null),this.isTTY&&(this.stream.write("\r\x1B[K"),this.stream.write("\x1B[?25h"));}render(){let r=k__default.default.cyan(M[this.frameIndex%M.length]);this.frameIndex++,this.stream.write(`\r\x1B[K${r} ${k__default.default.dim(this.message)}`);}};var we={eco:{typeAwareConcurrency:1,typeAwareFileConcurrency:1,typeAwareChunkSize:100,typeAwareIsolation:"auto",typeAwareChunkStrategy:"dependency"},balanced:{typeAwareConcurrency:1,typeAwareFileConcurrency:1,typeAwareChunkSize:150,typeAwareIsolation:"auto",typeAwareChunkStrategy:"dependency"},turbo:{typeAwareConcurrency:2,typeAwareFileConcurrency:4,typeAwareChunkSize:500,typeAwareIsolation:"off",typeAwareChunkStrategy:"simple"}},j=["eco","balanced","turbo"],Ce=new Set(j);function xe(t,r){if(t===void 0)return;let e=Number(t);if(!Number.isInteger(e)||e<1)throw Error(`${r} must be a positive integer.`);return e}function _(t,r){let e=we[(function(n){let o=n??"balanced";if(!Ce.has(o))throw Error(`Invalid performance mode "${o}". Expected one of: ${j.join(", ")}.`);return o})(t.mode)];return {maxWorkers:xe(t.maxWorkers,"--max-workers")??r.maxWorkers,typeAwareChunkSize:e.typeAwareChunkSize,typeAwareConcurrency:e.typeAwareConcurrency,typeAwareFileConcurrency:e.typeAwareFileConcurrency,typeAwareIsolation:e.typeAwareIsolation,typeAwareChunkStrategy:e.typeAwareChunkStrategy}}function F(t){return t==="ui"?"html":t??"console"}function U(t,r){if(t)return F(t);switch(r){case "json":return "json";case "sarif":return "sarif";case "html":return "html";default:return "console"}}function B(t,r){let e=t.failOnSeverity??"error",n=t.maxWarnings??10;return r.totalErrors>0||e==="warn"&&r.totalWarnings>0||r.totalWarnings>n}function Y(t,r){if(!t?.project)return;let e=t.tsconfigRootDir?N__default.default.resolve(r,t.tsconfigRootDir):r;return N__default.default.resolve(e,t.project)}function q(t){return t instanceof Error?t:Error(String(t))}function G(t){return t.mode??"balanced"}function T(t,r,e){return `Running analysis in ${t} mode: ${r.toLocaleString()}/${e.toLocaleString()} checks complete...`}async function H(t,r,e){let n=performance.now();e.step("\u276F Loading configuration...");let o=await config.resolveConfig({profile:t.profile,cache:r,cwd:E__default.default.cwd()});if(!o.report.valid){let i=o.report.issues.map(u=>{let s=u.path?.join(".")||"root";return `[${u.severity.toUpperCase()}] ${s}: ${u.message}`});return e.error(Error(["Configuration validation failed",...i].join(`
`))),null}if(!o.config)return e.error(Error("No configuration found")),null;let a=o.config.plugins;if(a&&a.length>0){e.step(`\u276F Loading ${a.length} plugin(s)...`);let i=E__default.default.cwd();await config.loadPlugins(a,i,rules.getGlobalRegistry()),e.info(`Loaded ${a.length} plugin(s)`);}return e.debug(`Config resolve: ${(performance.now()-n).toFixed(2)}ms`),{config:o.config}}async function K(t,r,e,n){let o=performance.now();n.step("\u276F Discovering files...");let a=await scanner.scan({rootDir:E__default.default.cwd(),include:t.include??[...common.DEFAULT_INCLUDE_PATTERNS],exclude:t.exclude??[],ignorePatterns:t.ignorePatterns,tsConfigPath:Y(t.parserOptions,E__default.default.cwd()),respectGitignore:true,debug:r.debug,cache:e});return a.ok?(n.info(`\u276F Found ${a.data.files.length} files in ${(performance.now()-o).toFixed(0)}ms`),n.debug(`File discovery: ${(performance.now()-o).toFixed(2)}ms`),a.data.files):(n.error(Error(`File discovery failed: ${a.error.message}`)),null)}async function V(t,r,e){let n=performance.now();e.step("\u276F Loading rules...");let o=t;r.rule&&(e.info(`Filtering analysis to single rule: ${r.rule}`),o={...t,rules:{[r.rule]:"error"},extends:[]});let a=await rules.resolveRules(o,E__default.default.cwd());if(!a.ok)return e.error(Error(`Rule resolution failed: ${a.error.message}`)),null;let i=rules.getEnabledRules(a.data.rules);return e.info(`\u276F Loaded ${i.size} active rules in ${(performance.now()-n).toFixed(0)}ms`),e.debug(`Rule resolution: ${(performance.now()-n).toFixed(2)}ms`),i}async function Z(t,r,e,n,o,a,i){let u=performance.now();o.step("\u276F Planning analysis...");let s=await planner.buildExecutionPlan({files:t,rules:r,rootDir:E__default.default.cwd(),cache:e,debug:n.debug,incremental:n.force?{forceRerun:true}:void 0,workerCount:i,overrides:a.overrides});return s.ok?(s.data.precomputedAnalysis?o.info("\u276F Reused cached analysis plan"):o.info(`\u276F Prepared ${s.data.tasks.length.toLocaleString()} checks in ${(performance.now()-u).toFixed(0)}ms`),o.debug(`Plan build: ${(performance.now()-u).toFixed(2)}ms`),s.data):(o.error(Error(`Execution plan building failed: ${s.error.message}`)),null)}async function J(t,r,e,n,o,a,i,u,s){let C=performance.now();engine.configureRuleExecutor(rules.executeBatchedNewEngineRules,rules.isNewEngineRule);let p=await engine.runAnalysis(t,{rootDir:E__default.default.cwd(),cache:r,debug:n.debug,files:a,maxWorkers:e.maxWorkers,typeAwareChunkSize:e.typeAwareChunkSize,typeAwareConcurrency:e.typeAwareConcurrency,typeAwareFileConcurrency:e.typeAwareFileConcurrency,typeAwareIsolation:e.typeAwareIsolation,typeAwareChunkStrategy:e.typeAwareChunkStrategy,skipTypeCheck:n.skipTypeCheck,parserOptions:i?.parserOptions,onProgress:u,onFileProgress:s});return p.ok?(o.debug(`Execution: ${(performance.now()-C).toFixed(2)}ms`),p.data):(o.error(Error(`Analysis failed: ${p.error.message}`)),null)}async function Q(t,r,e,n){if(!r)return;let o=performance.now(),a=[];for(let i of t)i.taskId&&a.push([i.taskId,i]);a.length>0&&(await r.results.setMany(a),e.debug&&n.debug(`Saved ${a.length} results to cache (${(performance.now()-o).toFixed(2)}ms)`));}var We={taskCount:0,issueCount:0,errorCount:0,warningCount:0,duration:0};function ee(t,r){let e=new Map;for(let n of t.tasks){let o=n.filePath;typeof o=="string"&&o.length!==0&&(n.needsTypeChecker||n.needsProjectContext)===r&&e.set(o,(e.get(o)??0)+1);}return e}function I(t,r){let e=t??We;return {taskCount:e.taskCount+r.taskCount,issueCount:e.issueCount+r.issueCount,errorCount:e.errorCount+r.errorCount,warningCount:e.warningCount+r.warningCount,duration:e.duration+r.duration}}function re(t,r,e){let n=ee(t,false),o=ee(t,true),a=new Map,i=new Map,u=new Set,s=new Set,C=(p,c,g)=>{if(s.has(p))return;let m=g?s:u;m.has(p)||(m.add(p),r((function(y,l){let w=l.issueCount>0,v=w?k__default.default.red("\u276F"):k__default.default.green("\u276F"),A=w?k__default.default.red(common.formatDuration(l.duration)):k__default.default.green(common.formatDuration(l.duration));if(w){let h=`${l.issueCount.toLocaleString()} ${common.pluralise(l.issueCount,"issue")}`;return `${v} ${k__default.default.red(y)} ${A} ${k__default.default.red(h)}`}return `${v} ${k__default.default.dim(y)} ${A}`})(N__default.default.relative(e,p)||p,c)));};return p=>{let c=p.filePath;if(s.has(c))return;if(p.typeAware===false){let l=I(a.get(c),p);a.set(c,l);let w=n.get(c)??l.taskCount;if(l.taskCount<w)return;C(c,l,!o.has(c));return}if(p.typeAware===true){var g;let l=I(i.get(c),p);i.set(c,l);let w=o.get(c)??l.taskCount;if(l.taskCount<w)return;C(c,(g=a.get(c),g?{taskCount:g.taskCount+l.taskCount,issueCount:g.issueCount+l.issueCount,errorCount:g.errorCount+l.errorCount,warningCount:g.warningCount+l.warningCount,duration:g.duration+l.duration}:l),true);return}let m=(n.get(c)??0)+(o.get(c)??0),y=I(a.get(c),p);a.set(c,y),y.taskCount<(m||y.taskCount)||C(c,y,true);}}function oe(t,r){t.command("analyze").description("Analyze your project and report rule violations and architecture risks").option("-p, --profile <name>","Configuration profile to run").option("--force","Ignore cached results and re-run all checks").option("--format <fmt>","Reporter format: console | json | sarif | html | ui").option("--compact","Use compact, ESLint-style output").option("-q, --quiet","Show summary counts only, suppress violation details").option("--no-recommendation","Suppress fix recommendations from output").option("--output <path>","Output path for UI reports (default: ngcompass-report.html)").option("--rule <id>","Run only one rule (useful for debugging or focused checks)").option("--mode <mode>","Performance mode: eco | balanced | turbo (default: balanced)","balanced").option("--max-workers <n>","Cap the number of worker threads (lower = less memory, e.g. --max-workers 2)").option("--skip-type-check","Skip rules that require the TypeScript type checker (fastest, lowest memory)").action(async e=>{let n=performance.now(),o=reporters.getReporter(F(e.format),{compact:!!e.compact,outputPath:e.output,quiet:!!e.quiet,noRecommendation:e.recommendation===false}),a=r,i=0;try{let u=await H(e,r,o);if(!u){i=1;return}let{config:s}=u,C=_(e,s);a=cache.createRuntimeCache(s,E__default.default.cwd());let p=U(e.format,s.outputFormat);o=reporters.getReporter(p,{compact:!!e.compact,outputPath:e.output??s.outputPath,quiet:!!e.quiet,noRecommendation:e.recommendation===!1});let c=await K(s,e,a,o);if(!c){i=1;return}let g=await V(s,e,o);if(!g){i=1;return}let m=await Z(c,g,a,e,o,s,C.maxWorkers);if(!m){i=1;return}let y=p==="console"?E__default.default.stdout:E__default.default.stderr,l=new R(y),w=m.tasks.length+(m.skippedTasks?.length??0),v=G(e);l.start(T(v,0,w));let A=re(m,x=>l.writeLine(x),E__default.default.cwd()),h=await J(m,a,C,e,o,c,s,(x,fe)=>{l.update(T(v,x,fe));},A);if(l.stop(),!h){i=1;return}let de=performance.now()-n,O={scannedFiles:new Set([...m.tasks.map(x=>x.filePath),...(m.skippedTasks??[]).map(x=>x.filePath)]).size,discoveredFiles:c.length,totalFiles:h.stats.totalFiles,totalTasks:m.tasks.length+(m.skippedTasks?.length??0),cachedTasks:m.precomputedAnalysis?m.tasks.length:void 0,totalErrors:h.stats.totalErrors,totalWarnings:h.stats.totalWarnings,failOnSeverity:s.failOnSeverity,maxWarnings:s.maxWarnings,duration:de};p==="console"&&o.summary(O),o.parseErrors(h.parseErrors),o.report(h.results),p!=="console"&&(o.step("\u276F Writing report..."),o.summary(O)),m.precomputedAnalysis||await Q(h.results,a,e,o),B(s,h.stats)&&(i=1);}catch(u){o.error(q(u)),i=1;}finally{a&&a!==r&&await a.flush(),i!==0&&f(i);}});}function ne(t,r){t.command("config").description("Inspect and validate ngcompass configuration").command("health").description("Run semantic validation checks for the active configuration").option("-p, --profile <name>","Configuration profile to validate").action(async e=>{try{let n=await config.validateConfig({cwd:E__default.default.cwd(),cache:e.cache?r:void 0,profile:e.profile});await reporters.getConfigReporter().renderHealthReport(n.report),n.report.valid||f();}catch(n){d("Error",n),f();}});}var ie=["ast","config","results","all"],Be=new Set(ie);function se(t,r){let e=t.command("cache").description("Inspect and manage analysis cache data");e.command("clear").description("Clear cached data for one cache type or all cache types").option("-p, --profile <name>","Configuration profile used to resolve cache settings").option("--type <type>","Cache type to clear: ast | config | results | all","all").action(async n=>{var o;let a,i=(a=o=n.type,Be.has(a)?o:(d(`Invalid cache type: ${o}. Must be one of: ${ie.join(", ")}`),f())),u=reporters.getCacheReporter();E__default.default.stdout.write(k__default.default.dim(` \u203A Clearing cache...
`));try{let s=await z(r,{profile:n.profile,allowDisabled:!0});i==="all"?await s.clear():await s.clearType(i),u.renderClearResult(i);}catch(s){d("Error clearing cache",s),f();}}),e.command("info").description("Show cache status, size, and usage details").option("-p, --profile <name>","Configuration profile used to resolve cache settings").action(async n=>{let o=reporters.getCacheReporter();try{let a=await z(r,{profile:n.profile,allowDisabled:!0}),i=await a.getInfo();o.renderCacheInfo(i);}catch(a){d("Error getting cache info",a),f();}}),e.command("path").description("Print the resolved cache directory path").option("-p, --profile <name>","Configuration profile used to resolve cache settings").action(async n=>{let o=await z(r,{profile:n.profile,allowDisabled:true});E__default.default.stdout.write(`${o.getCachePath()}
`);});}async function z(t,r={}){let e=r.cwd??E__default.default.cwd();try{let n=await config.resolveConfig({profile:r.profile,cache:t,cwd:e});return !n.report.valid||!n.config?t:cache.createRuntimeCache(n.config,e,{allowDisabled:r.allowDisabled})??t}catch(n){return d("Unable to resolve cache configuration; using default cache",n),t}}function ce(t){t.command("rules [ruleName]").description("Browse available rules or inspect details for a specific rule").option("--preset <name>","Filter by preset: recommended, strict, performance, reactivity, or all").action((r,e)=>{e.preset&&!rules.isBuiltinPreset(e.preset)&&(d(`Unknown preset: "${e.preset}".`),process.stderr.write(k__default.default.dim(`Available presets: recommended, strict, all, performance, reactivity
`)),f());let n=rules.getRuleListEntries(),o=reporters.getRulesReporter({preset:e.preset});if(r){let a=n.find(i=>i.name===r);if(!a){d(`Rule "${r}" not found.`),process.stderr.write(k__default.default.dim("Run `ngcompass rules` to list available rules.\n")),f();return}o.renderSingleRule(a);}else o.render(n);});}function pe(t,r){D(t),oe(t,r),ne(t,r),se(t,r),ce(t);}var ue=false,P=async(t,r)=>{if(!ue){if(ue=true,$(),t)try{let e=new Promise(n=>setTimeout(n,1e4).unref());await Promise.race([t.flush(),e]);}catch(e){d("[ngcompass] Cache flush failed during shutdown",e);}process.exit(r);}},me=(t,r,e)=>{d(`[ngcompass] ${r}`,e),P(t,1);},Je=async t=>{let{default:r}=await import('picocolors'),e=process.cwd();process.stdout.write(`
${r.dim(">")} ${r.dim(`ngcompass@${common.PACKAGE_VERSION}`)} ${r.dim(t)} ${r.dim(e)}
${r.dim(">")} ${r.dim("ngcompass")} ${r.dim("run")}
${r.bgCyan(r.white(r.bold(` ${t.toUpperCase()} `)))} ${r.cyan(common.PACKAGE_VERSION)} ${r.dim(e)}
`);};async function Qe(){let t=new commander.Command;t.name("ngcompass").description("Static analysis and architecture insights for Angular codebases.").version(common.PACKAGE_VERSION,"-V, --version","Display ngcompass version").option("--debug","Enable detailed debug logs across all modules").addHelpText("after",`
Examples:

@@ -13,11 +20,3 @@ $ ngcompass init

$ ngcompass cache info
`).hook("preAction",async(e,o)=>{e.opts().debug&&common.enableDebug("debug","all");let a=o.opts();if(a.format!=="json"&&a.format!=="sarif"&&a.format!=="html"&&a.format!=="ui"){let{default:n}=await import('picocolors'),i=o.parent,l=i&&i.name()!=="ngcompass"?i.name():o.name(),p=process.cwd();process.stdout.write(`
${n.dim(">")} ${n.dim(`ngcompass@${common.PACKAGE_VERSION}`)} ${n.dim(l)} ${n.dim(p)}
${n.dim(">")} ${n.dim("ngcompass")} ${n.dim("run")}
${n.bgCyan(n.white(n.bold(` ${l.toUpperCase()} `)))} ${n.cyan(common.PACKAGE_VERSION)} ${n.dim(p)}
`);}});let r=cache.createCacheContext();process.on("SIGINT",()=>{S(r,130);}),process.on("SIGTERM",()=>{S(r,143);}),process.on("uncaughtException",e=>{b(),console.error(`
[ngcompass] Unexpected error: ${e.message}`),S(r,1);}),process.on("unhandledRejection",e=>{b();let o=e instanceof Error?e.message:String(e);console.error(`
[ngcompass] Unhandled promise rejection: ${o}`),S(r,1);});try{if(rules.registerAllBuiltinRules(),Ae(t,r),!process.argv.slice(2).length)return void t.outputHelp();await t.parseAsync(process.argv),await r.flush(),process.exit(0);}catch(e){b();let o=e instanceof Error?e.message:String(e);console.error(`[ngcompass] Fatal error: ${o}`),await S(r,1);}}cr().catch(t=>{b();let r=t instanceof Error?t.message:String(t);console.error(`[ngcompass] Fatal error: ${r}`),process.exit(1);});exports.run=cr;//# sourceMappingURL=cli.cjs.map
`).hook("preAction",async(e,n)=>{let o;if(e.opts().debug&&common.enableDebug("debug","all"),(o=n.opts().format)!=="json"&&o!=="sarif"&&o!=="html"&&o!=="ui"){let a=n.parent,i=a&&a.name()!=="ngcompass"?a.name():n.name();await Je(i);}});let r=cache.createCacheContext();process.on("SIGINT",()=>{P(r,130);}),process.on("SIGTERM",()=>{P(r,143);}),process.on("uncaughtException",e=>{me(r,"Unexpected error",e);}),process.on("unhandledRejection",e=>{me(r,"Unhandled promise rejection",e);});try{if(rules.registerAllBuiltinRules(),pe(t,r),!process.argv.slice(2).length)return void t.outputHelp();await t.parseAsync(process.argv),await r.flush(),process.exit(0);}catch(e){d("[ngcompass] Fatal error",e),await P(r,1);}}Qe().catch(t=>{d("[ngcompass] Fatal error",t),$(),process.exit(1);});exports.run=Qe;//# sourceMappingURL=cli.cjs.map
//# sourceMappingURL=cli.cjs.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/commands/exit.ts","../src/commands/init.ts","../src/spinner.ts","../src/commands/analyze.ts","../src/commands/config.ts","../src/commands/cache.ts","../src/commands/rules.ts","../src/commands/index.ts","../src/bin/ngcompass.ts"],"names":["exitWithError","code","process","stdout","isTTY","write","exit","registerInitCommand","program","_cache","command","description","option","cwd","action","options","result","initConfig","force","getConfigReporter","renderInitResult","success","alreadyExists","error","console","Error","message","String","FRAMES","Spinner","timer","frameIndex","stream","start","render","setInterval","pc","cyan","dim","update","writeLine","line","stop","clearInterval","frame","length","PERFORMANCE_MODE_PRESETS","eco","typeAwareConcurrency","typeAwareFileConcurrency","typeAwareChunkSize","typeAwareIsolation","typeAwareChunkStrategy","balanced","turbo","PERFORMANCE_MODES","Object","keys","TYPE_AWARE_ISOLATION_MODES","TYPE_AWARE_CHUNK_STRATEGIES","parsePositiveIntegerOption","value","optionName","undefined","parsed","Number","isInteger","normalizeReporterFormat","format","formatDuration","ms","Math","max","round","toFixed","pluralise","count","singular","toLocaleString","formatAnalysisProgressMessage","mode","completed","total","registerAnalyzeCommand","cache","addOption","Option","hideHelp","startTime","performance","now","reporter","getReporter","compact","outputPath","output","quiet","noRecommendation","recommendation","activeCache","exitCode","stats","preset","cliMaxWorkers","cliChunkSize","cliTypeAwareConcurrency","cliTypeAwareFileConcurrency","failOnSeverity","maxWarnings","configResult","loadConfigurationStep","config","performanceOptions","includes","join","maxWorkers","createRuntimeCache","reporterFormat","cliFormat","configFormat","outputFormat","files","discoverFilesStep","enabledRules","resolveRulesStep","plan","buildPlanStep","progressStream","stderr","spinner","totalChecks","tasks","skippedTasks","logFileProgress","syntaxExpected","Map","typeAwareExpected","task","fp","filePath","needsTypeChecker","needsProjectContext","set","get","syntaxDone","typeAwareDone","syntaxLinePrinted","Set","finalLinePrinted","accumulate","map","event","prev","next","taskCount","issueCount","errorCount","warningCount","duration","printFinalLine","acc","has","add","relativePath","path","relative","hasIssues","status","red","green","dur","typeAware","expected","syntaxAcc","totalExpected","analysis","runAnalysisStep","summary","scannedFiles","t","size","discoveredFiles","totalFiles","totalTasks","cachedTasks","precomputedAnalysis","totalErrors","totalWarnings","parseErrors","report","results","step","saveToCacheStep","flush","tStart","resolveConfig","profile","valid","issueLines","issues","issue","pathString","severity","toUpperCase","pluginList","plugins","configDir","loadPlugins","getGlobalRegistry","info","debug","scanResult","scan","rootDir","include","DEFAULT_INCLUDE_PATTERNS","exclude","ignorePatterns","tsConfigPath","parserOptions","project","tsconfigRootDir","resolve","respectGitignore","ok","data","effectiveConfig","rule","rules","extends","rulesResult","resolveRules","getEnabledRules","planResult","buildExecutionPlan","incremental","forceRerun","workerCount","overrides","onProgress","onFileProgress","configureRuleExecutor","executeBatchedNewEngineRules","isNewEngineRule","runAnalysis","skipTypeCheck","cacheEntries","taskId","push","setMany","registerConfigCommand","validateConfig","renderHealthReport","errorMessage","registerCacheCommand","cacheCmd","getCacheReporter","type","validTypes","resolveRuntimeCache","allowDisabled","clear","clearType","renderClearResult","err","getInfo","renderCacheInfo","getCachePath","fallbackCache","registerRulesCommand","ruleName","opts","isBuiltinPreset","entries","getRuleListEntries","getRulesReporter","find","e","name","renderSingleRule","registerCommands","restoreCursor","shutdownInProgress","gracefulShutdown","flushTimeout","Promise","setTimeout","unref","race","run","Command","version","PACKAGE_VERSION","addHelpText","hook","thisCommand","actionCommand","enableDebug","actionOpts","default","parent","commandName","bgCyan","white","bold","createCacheContext","on","reason","msg","registerAllBuiltinRules","argv","slice","outputHelp","parseAsync","catch"],"mappings":"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","file":"cli.cjs","sourcesContent":["export const exitWithError = (s = 1)=>{\n process.stdout.isTTY && process.stdout.write('\\x1B[?25h'), process.exit(s);\n};\n","import { getConfigReporter as r } from '@ngcompass/reporters';\nimport { initConfig as e } from '@ngcompass/config';\nimport { exitWithError as o } from './exit.js';\nexport function registerInitCommand(t, i) {\n t.command('init').description('Create a starter ngcompass configuration in the current project').option('-f, --force', 'Overwrite an existing configuration file').option('--cwd <path>', 'Project directory where the configuration will be created', process.cwd()).action(async (t)=>{\n try {\n let i = await e({\n cwd: t.cwd,\n force: t.force\n }), c = r();\n await c.renderInitResult(i), i.success || i.alreadyExists || o();\n } catch (r) {\n console.error(r instanceof Error ? r.message : String(r)), o();\n }\n });\n}\n","import t from 'picocolors';\nlet FRAMES = [\n '⠋',\n '⠙',\n '⠹',\n '⠸',\n '⠼',\n '⠴',\n '⠦',\n '⠧',\n '⠇',\n '⠏'\n];\nexport class Spinner {\n stream;\n timer = null;\n frameIndex = 0;\n message = '';\n isTTY;\n constructor(t){\n this.stream = t, this.isTTY = !!t.isTTY;\n }\n start(e) {\n (this.message = e, this.frameIndex = 0, this.isTTY) ? (this.stream.write('\\x1B[?25l'), this.render(), this.timer = setInterval(()=>this.render(), 80)) : this.stream.write(`${t.cyan('❯')} ${t.dim(e)}\\n`);\n }\n update(t) {\n this.message = t, this.isTTY && this.timer && this.render();\n }\n writeLine(t) {\n this.isTTY && this.timer ? (this.stream.write('\\r\\x1B[K'), this.stream.write(`${t}\\n`), this.render()) : this.stream.write(`${t}\\n`);\n }\n stop() {\n this.timer && (clearInterval(this.timer), this.timer = null), this.isTTY && (this.stream.write('\\r\\x1B[K'), this.stream.write('\\x1B[?25h'));\n }\n render() {\n let e = t.cyan(FRAMES[this.frameIndex % FRAMES.length]);\n this.frameIndex++, this.stream.write(`\\r\\x1B[K${e} ${t.dim(this.message)}`);\n }\n}\n","import { Option as e } from 'commander';\nimport r from 'node:path';\nimport t from 'picocolors';\nimport { DEFAULT_INCLUDE_PATTERNS as o } from '@ngcompass/common';\nimport { getReporter as n } from '@ngcompass/reporters';\nimport a from 'node:process';\nimport { createRuntimeCache as i } from '@ngcompass/cache';\nimport { exitWithError as s } from './exit.js';\nimport { Spinner as u } from '../spinner.js';\nimport { getGlobalRegistry as l, executeBatchedNewEngineRules as p, isNewEngineRule as c, resolveRules as d, getEnabledRules as m } from '@ngcompass/rules';\nimport { loadPlugins as f, resolveConfig as y } from '@ngcompass/config';\nimport { runAnalysis as g, configureRuleExecutor as w } from '@ngcompass/engine';\nimport { buildExecutionPlan as C } from '@ngcompass/planner';\nimport { scan as h } from '@ngcompass/scanner';\nlet PERFORMANCE_MODE_PRESETS = {\n eco: {\n typeAwareConcurrency: 1,\n typeAwareFileConcurrency: 1,\n typeAwareChunkSize: 100,\n typeAwareIsolation: 'auto',\n typeAwareChunkStrategy: 'dependency'\n },\n balanced: {\n typeAwareConcurrency: 2,\n typeAwareFileConcurrency: 2,\n typeAwareChunkSize: 300,\n typeAwareIsolation: 'auto',\n typeAwareChunkStrategy: 'simple'\n },\n turbo: {\n typeAwareConcurrency: 2,\n typeAwareFileConcurrency: 4,\n typeAwareChunkSize: 500,\n typeAwareIsolation: 'off',\n typeAwareChunkStrategy: 'simple'\n }\n}, PERFORMANCE_MODES = Object.keys(PERFORMANCE_MODE_PRESETS), TYPE_AWARE_ISOLATION_MODES = [\n 'auto',\n 'process',\n 'off'\n], TYPE_AWARE_CHUNK_STRATEGIES = [\n 'dependency',\n 'simple'\n];\nfunction parsePositiveIntegerOption(e, r) {\n if (void 0 === e) return;\n let t = Number(e);\n if (!Number.isInteger(t) || t < 1) throw Error(`${r} must be a positive integer.`);\n return t;\n}\nfunction normalizeReporterFormat(e) {\n return 'ui' === e ? 'html' : e ?? 'console';\n}\nfunction formatDuration(e) {\n return e < 1000 ? `${Math.max(0, Math.round(e))}ms` : `${(e / 1000).toFixed(1)}s`;\n}\nfunction pluralise(e, r) {\n return `${e.toLocaleString()} ${r}${1 === e ? '' : 's'}`;\n}\nfunction formatAnalysisProgressMessage(e, r, t) {\n return `Running analysis in ${e} mode: ${r.toLocaleString()}/${t.toLocaleString()} checks complete...`;\n}\nexport function registerAnalyzeCommand(o, l) {\n o.command('analyze').description('Analyze your project and report rule violations and architecture risks').option('-p, --profile <name>', 'Configuration profile to run').option('--force', 'Ignore cached results and re-run all checks').option('--format <fmt>', 'Reporter format: console | json | sarif | html | ui').option('--compact', 'Use compact, ESLint-style output').option('-q, --quiet', 'Show summary counts only, suppress violation details').option('--no-recommendation', 'Suppress fix recommendations from output').option('--output <path>', 'Output path for UI reports (default: ngcompass-report.html)').option('--rule <id>', 'Run only one rule (useful for debugging or focused checks)').option('--mode <mode>', 'Performance mode: eco | balanced | turbo (default: balanced)', 'balanced').option('--max-workers <n>', 'Cap the number of worker threads (lower = less memory, e.g. --max-workers 2)').addOption(new e('--type-aware-chunk-size <n>', 'Files per type-aware chunk').hideHelp()).addOption(new e('--type-aware-concurrency <n>', 'Concurrent type-aware chunks').hideHelp()).addOption(new e('--type-aware-file-concurrency <n>', 'Concurrent files per type-aware chunk').hideHelp()).addOption(new e('--type-aware-isolation <mode>', 'Type-aware isolation: auto | process | off').hideHelp()).addOption(new e('--type-aware-chunk-strategy <mode>', 'Type-aware chunk ordering: dependency | simple').hideHelp()).option('--skip-type-check', 'Skip rules that require the TypeScript type checker (fastest, lowest memory)').action(async (e)=>{\n let o = performance.now(), p = n(normalizeReporterFormat(e.format), {\n compact: !!e.compact,\n outputPath: e.output,\n quiet: !!e.quiet,\n noRecommendation: !1 === e.recommendation\n }), c = l, d = 0;\n try {\n var m;\n let s, f, y, g, w, C, h, k = await loadConfigurationStep(e, l, p);\n if (!k) {\n d = 1;\n return;\n }\n let { config: A } = k, E = (s = PERFORMANCE_MODE_PRESETS[function(e) {\n let r = e ?? 'balanced';\n if (!PERFORMANCE_MODES.includes(r)) throw Error(`Invalid performance mode \"${r}\". Expected one of: ${PERFORMANCE_MODES.join(', ')}.`);\n return r;\n }(e.mode)], f = parsePositiveIntegerOption(e.maxWorkers, '--max-workers'), y = parsePositiveIntegerOption(e.typeAwareChunkSize, '--type-aware-chunk-size'), g = parsePositiveIntegerOption(e.typeAwareConcurrency, '--type-aware-concurrency'), w = parsePositiveIntegerOption(e.typeAwareFileConcurrency, '--type-aware-file-concurrency'), {\n maxWorkers: f ?? A.maxWorkers,\n typeAwareChunkSize: y ?? s.typeAwareChunkSize,\n typeAwareConcurrency: g ?? s.typeAwareConcurrency,\n typeAwareFileConcurrency: w ?? s.typeAwareFileConcurrency,\n typeAwareIsolation: function(e) {\n if (void 0 !== e) {\n if (!TYPE_AWARE_ISOLATION_MODES.includes(e)) throw Error(`Invalid --type-aware-isolation \"${e}\". Expected one of: ${TYPE_AWARE_ISOLATION_MODES.join(', ')}.`);\n return e;\n }\n }(e.typeAwareIsolation) ?? s.typeAwareIsolation,\n typeAwareChunkStrategy: function(e) {\n if (void 0 !== e) {\n if (!TYPE_AWARE_CHUNK_STRATEGIES.includes(e)) throw Error(`Invalid --type-aware-chunk-strategy \"${e}\". Expected one of: ${TYPE_AWARE_CHUNK_STRATEGIES.join(', ')}.`);\n return e;\n }\n }(e.typeAwareChunkStrategy) ?? s.typeAwareChunkStrategy\n });\n c = i(A, a.cwd());\n let S = function(e, r) {\n if (e) return normalizeReporterFormat(e);\n switch(r){\n case 'json':\n return 'json';\n case 'sarif':\n return 'sarif';\n case 'html':\n return 'html';\n default:\n return 'console';\n }\n }(e.format, A.outputFormat);\n p = n(S, {\n compact: !!e.compact,\n outputPath: e.output ?? A.outputPath,\n quiet: !!e.quiet,\n noRecommendation: !1 === e.recommendation\n });\n let $ = await discoverFilesStep(A, e, c, p);\n if (!$) {\n d = 1;\n return;\n }\n let v = await resolveRulesStep(A, e, p);\n if (!v) {\n d = 1;\n return;\n }\n let P = await buildPlanStep($, v, c, e, p, A, E.maxWorkers);\n if (!P) {\n d = 1;\n return;\n }\n let R = 'console' === S ? a.stdout : a.stderr, F = new u(R), O = P.tasks.length + (P.skippedTasks?.length ?? 0), x = e.mode ?? 'balanced';\n F.start(formatAnalysisProgressMessage(x, 0, O));\n let b = function(e, o, n) {\n let a = new Map(), i = new Map();\n for (let r of e.tasks){\n let e = r.filePath;\n 'string' == typeof e && 0 !== e.length && (r.needsTypeChecker || r.needsProjectContext ? i.set(e, (i.get(e) ?? 0) + 1) : a.set(e, (a.get(e) ?? 0) + 1));\n }\n let s = new Map(), u = new Map(), l = new Set(), p = new Set(), c = (e, r)=>{\n let t = e.get(r.filePath), o = t ? {\n taskCount: t.taskCount + r.taskCount,\n issueCount: t.issueCount + r.issueCount,\n errorCount: t.errorCount + r.errorCount,\n warningCount: t.warningCount + r.warningCount,\n duration: t.duration + r.duration\n } : {\n taskCount: r.taskCount,\n issueCount: r.issueCount,\n errorCount: r.errorCount,\n warningCount: r.warningCount,\n duration: r.duration\n };\n return e.set(r.filePath, o), o;\n }, d = (e, a)=>{\n if (p.has(e)) return;\n p.add(e);\n let i = r.relative(n, e) || e, s = a.issueCount > 0, u = s ? t.red('❯') : t.green('❯'), l = s ? t.red(formatDuration(a.duration)) : t.green(formatDuration(a.duration));\n o(s ? `${u} ${t.red(i)} ${l} ${t.red(pluralise(a.issueCount, 'issue'))}` : `${u} ${t.dim(i)} ${l}`);\n };\n return (e)=>{\n let m = e.filePath;\n if (!p.has(m)) if (!1 === e.typeAware) {\n let u = c(s, e), f = a.get(m) ?? u.taskCount;\n if (u.taskCount < f) return;\n i.has(m) ? ((e, a)=>{\n if (l.has(e) || p.has(e)) return;\n l.add(e);\n let i = r.relative(n, e) || e, s = a.issueCount > 0, u = s ? t.red('❯') : t.green('❯'), c = s ? t.red(formatDuration(a.duration)) : t.green(formatDuration(a.duration));\n o(s ? `${u} ${t.red(i)} ${c} ${t.red(pluralise(a.issueCount, 'issue'))}` : `${u} ${t.dim(i)} ${c}`);\n })(m, u) : d(m, u);\n } else if (!0 === e.typeAware) {\n let r = c(u, e), t = i.get(m) ?? r.taskCount;\n if (r.taskCount < t) return;\n let o = s.get(m);\n d(m, o ? {\n taskCount: o.taskCount + r.taskCount,\n issueCount: o.issueCount + r.issueCount,\n errorCount: o.errorCount + r.errorCount,\n warningCount: o.warningCount + r.warningCount,\n duration: o.duration + r.duration\n } : r);\n } else {\n let r = (a.get(m) ?? 0) + (i.get(m) ?? 0), t = c(s, e);\n if (t.taskCount < (r || t.taskCount)) return;\n d(m, t);\n }\n };\n }(P, (e)=>F.writeLine(e), a.cwd()), T = await runAnalysisStep(P, c, E, e, p, $, A, (e, r)=>{\n F.update(formatAnalysisProgressMessage(x, e, r));\n }, b);\n if (F.stop(), !T) {\n d = 1;\n return;\n }\n let I = performance.now() - o, _ = {\n scannedFiles: new Set([\n ...P.tasks.map((e)=>e.filePath),\n ...(P.skippedTasks ?? []).map((e)=>e.filePath)\n ]).size,\n discoveredFiles: $.length,\n totalFiles: T.stats.totalFiles,\n totalTasks: P.tasks.length + (P.skippedTasks?.length ?? 0),\n cachedTasks: P.precomputedAnalysis ? P.tasks.length : void 0,\n totalErrors: T.stats.totalErrors,\n totalWarnings: T.stats.totalWarnings,\n failOnSeverity: A.failOnSeverity,\n maxWarnings: A.maxWarnings,\n duration: I\n };\n 'console' === S && p.summary(_), p.parseErrors(T.parseErrors), p.report(T.results), 'console' !== S && (p.step('❯ Writing report...'), p.summary(_)), P.precomputedAnalysis || await saveToCacheStep(T.results, c, e, p), m = T.stats, C = A.failOnSeverity ?? 'error', h = A.maxWarnings ?? 10, (m.totalErrors > 0 || 'warn' === C && m.totalWarnings > 0 || m.totalWarnings > h) && (d = 1);\n } catch (e) {\n p.error(e), d = 1;\n } finally{\n c && c !== l && await c.flush(), 0 !== d && s(d);\n }\n });\n}\nasync function loadConfigurationStep(e, r, t) {\n let o = performance.now();\n t.step('❯ Loading configuration...');\n let n = await y({\n profile: e.profile,\n cache: r,\n cwd: a.cwd()\n });\n if (!n.report.valid) {\n let e = n.report.issues.map((e)=>{\n let r = e.path?.join('.') || 'root';\n return `[${e.severity.toUpperCase()}] ${r}: ${e.message}`;\n });\n return t.error(Error([\n 'Configuration validation failed',\n ...e\n ].join('\\n'))), null;\n }\n if (!n.config) return t.error(Error('No configuration found')), null;\n let i = n.config.plugins;\n if (i && i.length > 0) {\n t.step(`❯ Loading ${i.length} plugin(s)...`);\n let e = a.cwd();\n await f(i, e, l()), t.info(`Loaded ${i.length} plugin(s)`);\n }\n return t.debug(`Config resolve: ${(performance.now() - o).toFixed(2)}ms`), {\n config: n.config\n };\n}\nasync function discoverFilesStep(e, t, n, i) {\n let s = performance.now();\n i.step('❯ Discovering files...');\n let u = await h({\n rootDir: a.cwd(),\n include: e.include ?? [\n ...o\n ],\n exclude: e.exclude ?? [],\n ignorePatterns: e.ignorePatterns,\n tsConfigPath: function(e, t) {\n if (!e?.project) return;\n let o = e.tsconfigRootDir ? r.resolve(t, e.tsconfigRootDir) : t;\n return r.resolve(o, e.project);\n }(e.parserOptions, a.cwd()),\n respectGitignore: !0,\n debug: t.debug,\n cache: n\n });\n return u.ok ? (i.info(`❯ Found ${u.data.files.length} files in ${(performance.now() - s).toFixed(0)}ms`), i.debug(`File discovery: ${(performance.now() - s).toFixed(2)}ms`), u.data.files) : (i.error(Error(`File discovery failed: ${u.error.message}`)), null);\n}\nasync function resolveRulesStep(e, r, t) {\n let o = performance.now();\n t.step('❯ Loading rules...');\n let n = e;\n r.rule && (t.info(`Filtering analysis to single rule: ${r.rule}`), n = {\n ...e,\n rules: {\n [r.rule]: 'error'\n },\n extends: []\n });\n let a = await d(n);\n if (!a.ok) return t.error(Error(`Rule resolution failed: ${a.error.message}`)), null;\n let i = m(a.data.rules);\n return t.info(`❯ Loaded ${i.size} active rules in ${(performance.now() - o).toFixed(0)}ms`), t.debug(`Rule resolution: ${(performance.now() - o).toFixed(2)}ms`), i;\n}\nasync function buildPlanStep(e, r, t, o, n, i, s) {\n let u = performance.now();\n n.step('❯ Planning analysis...');\n let l = await C({\n files: e,\n rules: r,\n rootDir: a.cwd(),\n cache: t,\n debug: o.debug,\n incremental: o.force ? {\n forceRerun: !0\n } : void 0,\n workerCount: s,\n overrides: i.overrides\n });\n return l.ok ? (l.data.precomputedAnalysis ? n.info('❯ Reused cached analysis plan') : n.info(`❯ Prepared ${l.data.tasks.length.toLocaleString()} checks in ${(performance.now() - u).toFixed(0)}ms`), n.debug(`Plan build: ${(performance.now() - u).toFixed(2)}ms`), l.data) : (n.error(Error(`Execution plan building failed: ${l.error.message}`)), null);\n}\nasync function runAnalysisStep(e, r, t, o, n, i, s, u, l) {\n let d = performance.now();\n w(p, c);\n let m = await g(e, {\n rootDir: a.cwd(),\n cache: r,\n debug: o.debug,\n files: i,\n maxWorkers: t.maxWorkers,\n typeAwareChunkSize: t.typeAwareChunkSize,\n typeAwareConcurrency: t.typeAwareConcurrency,\n typeAwareFileConcurrency: t.typeAwareFileConcurrency,\n typeAwareIsolation: t.typeAwareIsolation,\n typeAwareChunkStrategy: t.typeAwareChunkStrategy,\n skipTypeCheck: o.skipTypeCheck,\n parserOptions: s?.parserOptions,\n onProgress: u,\n onFileProgress: l\n });\n return m.ok ? (n.debug(`Execution: ${(performance.now() - d).toFixed(2)}ms`), m.data) : (n.error(Error(`Analysis failed: ${m.error.message}`)), null);\n}\nasync function saveToCacheStep(e, r, t, o) {\n if (!r) return;\n let n = performance.now(), a = [];\n for (let r of e)r.taskId && a.push([\n r.taskId,\n r\n ]);\n a.length > 0 && (await r.results.setMany(a), t.debug && o.debug(`Saved ${a.length} results to cache (${(performance.now() - n).toFixed(2)}ms)`));\n}\n","import { getConfigReporter as o } from '@ngcompass/reporters';\nimport { validateConfig as r } from '@ngcompass/config';\nimport { exitWithError as e } from './exit.js';\nexport function registerConfigCommand(i, t) {\n i.command('config').description('Inspect and validate ngcompass configuration').command('health').description('Run semantic validation checks for the active configuration').option('-p, --profile <name>', 'Configuration profile to validate').action(async (i)=>{\n try {\n let a = await r({\n cache: i.cache ? t : void 0,\n profile: i.profile\n }), n = o();\n await n.renderHealthReport(a.report), a.report.valid || e();\n } catch (r) {\n let o = r instanceof Error ? r.message : String(r);\n console.error(`Error: ${o}`), e();\n }\n });\n}\n","import { createRuntimeCache as e } from '@ngcompass/cache';\nimport { getCacheReporter as o } from '@ngcompass/reporters';\nimport { resolveConfig as a } from '@ngcompass/config';\nimport r from 'picocolors';\nimport t from 'node:process';\nimport { exitWithError as i } from './exit.js';\nexport function registerCacheCommand(e, a) {\n let c = e.command('cache').description('Inspect and manage analysis cache data');\n c.command('clear').description('Clear cached data for one cache type or all cache types').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').option('--type <type>', 'Cache type to clear: ast | config | results | all', 'all').action(async (e)=>{\n let c = o();\n t.stdout.write(r.dim(' › Clearing cache...\\n'));\n let l = e.type, n = [\n 'ast',\n 'config',\n 'results',\n 'all'\n ];\n n.includes(l) || (console.error(r.red(`Invalid cache type: ${l}. Must be one of: ${n.join(', ')}`)), i());\n try {\n let o = await resolveRuntimeCache(a, {\n profile: e.profile,\n allowDisabled: !0\n });\n 'all' === l ? await o.clear() : await o.clearType(l), c.renderClearResult(l);\n } catch (e) {\n console.error(r.red('Error clearing cache:'), e), i();\n }\n }), c.command('info').description('Show cache status, size, and usage details').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').action(async (e)=>{\n let t = o();\n try {\n let o = await resolveRuntimeCache(a, {\n profile: e.profile,\n allowDisabled: !0\n }), r = await o.getInfo();\n t.renderCacheInfo(r);\n } catch (e) {\n console.error(r.red('Error getting cache info:'), e), i();\n }\n }), c.command('path').description('Print the resolved cache directory path').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').action(async (e)=>{\n let o = await resolveRuntimeCache(a, {\n profile: e.profile,\n allowDisabled: !0\n });\n t.stdout.write(`${o.getCachePath()}\\n`);\n });\n}\nasync function resolveRuntimeCache(o, r = {}) {\n let i = r.cwd ?? t.cwd();\n try {\n let t = await a({\n profile: r.profile,\n cache: o,\n cwd: i\n });\n if (!t.report.valid || !t.config) return o;\n return e(t.config, i, {\n allowDisabled: r.allowDisabled\n }) ?? o;\n } catch {\n return o;\n }\n}\n","import { getRulesReporter as e } from '@ngcompass/reporters';\nimport { getRuleListEntries as r, isBuiltinPreset as o } from '@ngcompass/rules';\nimport s from 'picocolors';\nimport { exitWithError as t } from './exit.js';\nexport function registerRulesCommand(i) {\n i.command('rules [ruleName]').description('Browse available rules or inspect details for a specific rule').option('--preset <name>', 'Filter by preset: recommended, strict, performance, reactivity, or all').action((i, l)=>{\n l.preset && !o(l.preset) && (console.error(s.red(`Unknown preset: \"${l.preset}\".`)), console.error(s.dim('Available presets: recommended, strict, all, performance, reactivity')), t());\n let n = r(), m = e({\n preset: l.preset\n });\n if (i) {\n let e = n.find((e)=>e.name === i);\n if (!e) {\n console.error(s.red(`Rule \"${i}\" not found.`)), console.error(s.dim('Run `ngcompass rules` to list available rules.')), t();\n return;\n }\n m.renderSingleRule(e);\n } else m.render(n);\n });\n}\n","import { registerInitCommand as o } from './init.js';\nimport { registerAnalyzeCommand as r } from './analyze.js';\nimport { registerConfigCommand as m } from './config.js';\nimport { registerCacheCommand as i } from './cache.js';\nimport { registerRulesCommand as t } from './rules.js';\nexport function registerCommands(s, f) {\n o(s, f), r(s, f), m(s, f), i(s, f), t(s);\n}\n","import { Command as r } from 'commander';\nimport { registerCommands as o } from '../commands/index.js';\nimport { enableDebug as e, PACKAGE_VERSION as s } from '@ngcompass/common';\nimport { createCacheContext as n } from '@ngcompass/cache';\nimport { registerAllBuiltinRules as t } from '@ngcompass/rules';\nlet restoreCursor = ()=>{\n process.stdout.isTTY && process.stdout.write('\\x1B[?25h');\n}, shutdownInProgress = !1, gracefulShutdown = async (r, o)=>{\n if (!shutdownInProgress) {\n if (shutdownInProgress = !0, restoreCursor(), r) try {\n let o = new Promise((r)=>setTimeout(r, 10_000).unref());\n await Promise.race([\n r.flush(),\n o\n ]);\n } catch {}\n process.exit(o);\n }\n};\nexport async function run() {\n let a = new r();\n a.name('ngcompass').description('Static analysis and architecture insights for Angular codebases.').version(s, '-V, --version', 'Display ngcompass version').option('--debug', 'Enable detailed debug logs across all modules').addHelpText('after', '\\nExamples:\\n $ ngcompass init\\n $ ngcompass analyze --profile strict\\n $ ngcompass cache info\\n').hook('preAction', async (r, o)=>{\n r.opts().debug && e('debug', 'all');\n let n = o.opts();\n if ('json' !== n.format && 'sarif' !== n.format && 'html' !== n.format && 'ui' !== n.format) {\n let { default: r } = await import('picocolors'), e = o.parent, n = e && 'ngcompass' !== e.name() ? e.name() : o.name(), t = process.cwd();\n process.stdout.write(`\\n${r.dim('>')} ${r.dim(`ngcompass@${s}`)} ${r.dim(n)} ${r.dim(t)}\\n${r.dim('>')} ${r.dim('ngcompass')} ${r.dim('run')}\\n\\n ${r.bgCyan(r.white(r.bold(` ${n.toUpperCase()} `)))} ${r.cyan(s)} ${r.dim(t)}\\n\\n`);\n }\n });\n let c = n();\n process.on('SIGINT', ()=>void gracefulShutdown(c, 130)), process.on('SIGTERM', ()=>void gracefulShutdown(c, 143)), process.on('uncaughtException', (r)=>{\n restoreCursor(), console.error(`\\n[ngcompass] Unexpected error: ${r.message}`), gracefulShutdown(c, 1);\n }), process.on('unhandledRejection', (r)=>{\n restoreCursor();\n let o = r instanceof Error ? r.message : String(r);\n console.error(`\\n[ngcompass] Unhandled promise rejection: ${o}`), gracefulShutdown(c, 1);\n });\n try {\n if (t(), o(a, c), !process.argv.slice(2).length) return void a.outputHelp();\n await a.parseAsync(process.argv), await c.flush(), process.exit(0);\n } catch (o) {\n restoreCursor();\n let r = o instanceof Error ? o.message : String(o);\n console.error(`[ngcompass] Fatal error: ${r}`), await gracefulShutdown(c, 1);\n }\n}\nrun().catch((r)=>{\n restoreCursor();\n let o = r instanceof Error ? r.message : String(r);\n console.error(`[ngcompass] Fatal error: ${o}`), process.exit(1);\n});\n"]}
{"version":3,"sources":["../src/commands/exit.ts","../src/commands/init.ts","../src/spinner.ts","../src/commands/analyze/options.ts","../src/commands/analyze/resolve.ts","../src/commands/analyze/steps.ts","../src/commands/analyze/progress.ts","../src/commands/analyze/index.ts","../src/commands/config.ts","../src/commands/cache.ts","../src/commands/rules.ts","../src/commands/index.ts","../src/bin/ngcompass.ts"],"names":["restoreCursor","process","stdout","isTTY","write","exitWithError","code","exit","printError","message","detail","tail","undefined","Error","String","console","error","pc","red","registerInitCommand","program","_cache","command","description","option","cwd","action","options","result","initConfig","force","getConfigReporter","renderInitResult","success","alreadyExists","FRAMES","Spinner","timer","frameIndex","stream","start","render","setInterval","cyan","dim","update","writeLine","line","stop","clearInterval","frame","length","PERFORMANCE_MODE_PRESETS","eco","typeAwareConcurrency","typeAwareFileConcurrency","typeAwareChunkSize","typeAwareIsolation","typeAwareChunkStrategy","balanced","turbo","PERFORMANCE_MODES","PERFORMANCE_MODE_VALUES","Set","parsePositiveIntegerOption","value","optionName","parsed","Number","isInteger","resolvePerformanceOptions","config","preset","mode","has","join","maxWorkers","normalizeReporterFormat","format","resolveReporterFormat","cliFormat","configFormat","shouldFailAnalysis","stats","failOnSeverity","maxWarnings","totalErrors","totalWarnings","resolveParserProjectPath","parserOptions","project","rootDir","tsconfigRootDir","path","resolve","toError","getAnalyzeMode","formatAnalysisProgressMessage","completed","total","toLocaleString","loadConfigurationStep","cache","reporter","tStart","performance","now","step","configResult","resolveConfig","profile","report","valid","issueLines","issues","map","issue","pathString","severity","toUpperCase","pluginList","plugins","configDir","loadPlugins","getGlobalRegistry","info","debug","toFixed","discoverFilesStep","scanResult","scan","include","DEFAULT_INCLUDE_PATTERNS","exclude","ignorePatterns","tsConfigPath","respectGitignore","ok","data","files","resolveRulesStep","effectiveConfig","rule","rules","extends","rulesResult","resolveRules","enabledRules","getEnabledRules","size","buildPlanStep","planResult","buildExecutionPlan","incremental","forceRerun","workerCount","overrides","precomputedAnalysis","tasks","runAnalysisStep","plan","performanceOptions","onProgress","onFileProgress","configureRuleExecutor","executeBatchedNewEngineRules","isNewEngineRule","runAnalysis","skipTypeCheck","saveToCacheStep","results","cacheEntries","taskId","push","setMany","ZERO_ACC","taskCount","issueCount","errorCount","warningCount","duration","buildExpectedMap","typeAware","Map","task","fp","filePath","needsTypeChecker","needsProjectContext","set","get","mergeAcc","prev","event","base","createFileProgressLogger","syntaxExpected","typeAwareExpected","syntaxDone","typeAwareDone","syntaxPrinted","finalPrinted","print","acc","isFinal","guard","add","relativePath","hasIssues","status","green","dur","formatDuration","pluralise","relative","expected","a","totalExpected","registerAnalyzeCommand","startTime","getReporter","compact","outputPath","output","quiet","noRecommendation","recommendation","activeCache","exitCode","createRuntimeCache","reporterFormat","outputFormat","progressStream","stderr","spinner","totalChecks","skippedTasks","logFileProgress","analysis","summary","scannedFiles","t","discoveredFiles","totalFiles","totalTasks","cachedTasks","parseErrors","flush","registerConfigCommand","validateConfig","renderHealthReport","CACHE_CLEAR_TYPES","CACHE_CLEAR_TYPE_VALUES","registerCacheCommand","cacheCmd","type","getCacheReporter","resolveRuntimeCache","allowDisabled","clear","clearType","renderClearResult","err","getInfo","renderCacheInfo","getCachePath","fallbackCache","registerRulesCommand","ruleName","opts","isBuiltinPreset","entries","getRuleListEntries","getRulesReporter","find","e","name","renderSingleRule","registerCommands","shutdownInProgress","gracefulShutdown","flushTimeout","Promise","setTimeout","unref","race","handleFatalAsyncFailure","label","reason","printRunBanner","commandName","default","PACKAGE_VERSION","bgCyan","white","bold","run","Command","version","addHelpText","hook","thisCommand","actionCommand","enableDebug","parent","createCacheContext","on","registerAllBuiltinRules","argv","slice","outputHelp","parseAsync","catch"],"mappings":"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","file":"cli.cjs","sourcesContent":["import r from 'picocolors';\nexport const restoreCursor = ()=>{\n process.stdout.isTTY && process.stdout.write('\\x1B[?25h');\n};\nexport const exitWithError = (r = 1)=>{\n restoreCursor(), process.exit(r);\n};\nexport const printError = (o, s)=>{\n let t = void 0 === s ? '' : `: ${s instanceof Error ? s.message : String(s)}`;\n console.error(`${r.red(o)}${t}`);\n};\n","import { getConfigReporter as r } from '@ngcompass/reporters';\nimport { initConfig as t } from '@ngcompass/config';\nimport { exitWithError as i, printError as o } from './exit.js';\nexport function registerInitCommand(e, n) {\n e.command('init').description('Create a starter ngcompass configuration in the current project').option('-f, --force', 'Overwrite an existing configuration file').option('--cwd <path>', 'Project directory where the configuration will be created', process.cwd()).action(async (e)=>{\n try {\n let o = await t({\n cwd: e.cwd,\n force: e.force\n }), n = r();\n await n.renderInitResult(o), o.success || o.alreadyExists || i();\n } catch (r) {\n o('Error initializing configuration', r), i();\n }\n });\n}\n","import t from 'picocolors';\nlet FRAMES = [\n '⠋',\n '⠙',\n '⠹',\n '⠸',\n '⠼',\n '⠴',\n '⠦',\n '⠧',\n '⠇',\n '⠏'\n];\nexport class Spinner {\n stream;\n timer = null;\n frameIndex = 0;\n message = '';\n isTTY;\n constructor(t){\n this.stream = t, this.isTTY = !!t.isTTY;\n }\n start(e) {\n (this.message = e, this.frameIndex = 0, this.isTTY) ? (this.stream.write('\\x1B[?25l'), this.render(), this.timer = setInterval(()=>this.render(), 80)) : this.stream.write(`${t.cyan('❯')} ${t.dim(e)}\\n`);\n }\n update(t) {\n this.message = t, this.isTTY && this.timer && this.render();\n }\n writeLine(t) {\n this.isTTY && this.timer ? (this.stream.write('\\r\\x1B[K'), this.stream.write(`${t}\\n`), this.render()) : this.stream.write(`${t}\\n`);\n }\n stop() {\n this.timer && (clearInterval(this.timer), this.timer = null), this.isTTY && (this.stream.write('\\r\\x1B[K'), this.stream.write('\\x1B[?25h'));\n }\n render() {\n let e = t.cyan(FRAMES[this.frameIndex % FRAMES.length]);\n this.frameIndex++, this.stream.write(`\\r\\x1B[K${e} ${t.dim(this.message)}`);\n }\n}\n","let PERFORMANCE_MODE_PRESETS = {\n eco: {\n typeAwareConcurrency: 1,\n typeAwareFileConcurrency: 1,\n typeAwareChunkSize: 100,\n typeAwareIsolation: 'auto',\n typeAwareChunkStrategy: 'dependency'\n },\n balanced: {\n typeAwareConcurrency: 1,\n typeAwareFileConcurrency: 1,\n typeAwareChunkSize: 150,\n typeAwareIsolation: 'auto',\n typeAwareChunkStrategy: 'dependency'\n },\n turbo: {\n typeAwareConcurrency: 2,\n typeAwareFileConcurrency: 4,\n typeAwareChunkSize: 500,\n typeAwareIsolation: 'off',\n typeAwareChunkStrategy: 'simple'\n }\n}, PERFORMANCE_MODES = [\n 'eco',\n 'balanced',\n 'turbo'\n], PERFORMANCE_MODE_VALUES = new Set(PERFORMANCE_MODES);\nexport function parsePositiveIntegerOption(e, r) {\n if (void 0 === e) return;\n let t = Number(e);\n if (!Number.isInteger(t) || t < 1) throw Error(`${r} must be a positive integer.`);\n return t;\n}\nexport function resolvePerformanceOptions(e, r) {\n let t = PERFORMANCE_MODE_PRESETS[function(e) {\n let r = e ?? 'balanced';\n if (!PERFORMANCE_MODE_VALUES.has(r)) throw Error(`Invalid performance mode \"${r}\". Expected one of: ${PERFORMANCE_MODES.join(', ')}.`);\n return r;\n }(e.mode)];\n return {\n maxWorkers: parsePositiveIntegerOption(e.maxWorkers, '--max-workers') ?? r.maxWorkers,\n typeAwareChunkSize: t.typeAwareChunkSize,\n typeAwareConcurrency: t.typeAwareConcurrency,\n typeAwareFileConcurrency: t.typeAwareFileConcurrency,\n typeAwareIsolation: t.typeAwareIsolation,\n typeAwareChunkStrategy: t.typeAwareChunkStrategy\n };\n}\n","import r from 'node:path';\nexport function normalizeReporterFormat(r) {\n return 'ui' === r ? 'html' : r ?? 'console';\n}\nexport function resolveReporterFormat(r, e) {\n if (r) return normalizeReporterFormat(r);\n switch(e){\n case 'json':\n return 'json';\n case 'sarif':\n return 'sarif';\n case 'html':\n return 'html';\n default:\n return 'console';\n }\n}\nexport function shouldFailAnalysis(r, e) {\n let t = r.failOnSeverity ?? 'error', o = r.maxWarnings ?? 10;\n return e.totalErrors > 0 || 'warn' === t && e.totalWarnings > 0 || e.totalWarnings > o;\n}\nexport function resolveParserProjectPath(e, t) {\n if (!e?.project) return;\n let o = e.tsconfigRootDir ? r.resolve(t, e.tsconfigRootDir) : t;\n return r.resolve(o, e.project);\n}\nexport function toError(r) {\n return r instanceof Error ? r : Error(String(r));\n}\nexport function getAnalyzeMode(r) {\n return r.mode ?? 'balanced';\n}\nexport function formatAnalysisProgressMessage(r, e, t) {\n return `Running analysis in ${r} mode: ${e.toLocaleString()}/${t.toLocaleString()} checks complete...`;\n}\n","import e from 'node:process';\nimport { DEFAULT_INCLUDE_PATTERNS as r } from '@ngcompass/common';\nimport { loadPlugins as o, resolveConfig as n } from '@ngcompass/config';\nimport { configureRuleExecutor as t, runAnalysis as i } from '@ngcompass/engine';\nimport { buildExecutionPlan as a } from '@ngcompass/planner';\nimport { scan as s } from '@ngcompass/scanner';\nimport { executeBatchedNewEngineRules as l, getEnabledRules as p, getGlobalRegistry as c, isNewEngineRule as u, resolveRules as d } from '@ngcompass/rules';\nimport { resolveParserProjectPath as f } from './resolve.js';\nexport async function loadConfigurationStep(r, t, i) {\n let a = performance.now();\n i.step('❯ Loading configuration...');\n let s = await n({\n profile: r.profile,\n cache: t,\n cwd: e.cwd()\n });\n if (!s.report.valid) {\n let e = s.report.issues.map((e)=>{\n let r = e.path?.join('.') || 'root';\n return `[${e.severity.toUpperCase()}] ${r}: ${e.message}`;\n });\n return i.error(Error([\n 'Configuration validation failed',\n ...e\n ].join('\\n'))), null;\n }\n if (!s.config) return i.error(Error('No configuration found')), null;\n let l = s.config.plugins;\n if (l && l.length > 0) {\n i.step(`❯ Loading ${l.length} plugin(s)...`);\n let r = e.cwd();\n await o(l, r, c()), i.info(`Loaded ${l.length} plugin(s)`);\n }\n return i.debug(`Config resolve: ${(performance.now() - a).toFixed(2)}ms`), {\n config: s.config\n };\n}\nexport async function discoverFilesStep(o, n, t, i) {\n let a = performance.now();\n i.step('❯ Discovering files...');\n let l = await s({\n rootDir: e.cwd(),\n include: o.include ?? [\n ...r\n ],\n exclude: o.exclude ?? [],\n ignorePatterns: o.ignorePatterns,\n tsConfigPath: f(o.parserOptions, e.cwd()),\n respectGitignore: !0,\n debug: n.debug,\n cache: t\n });\n return l.ok ? (i.info(`❯ Found ${l.data.files.length} files in ${(performance.now() - a).toFixed(0)}ms`), i.debug(`File discovery: ${(performance.now() - a).toFixed(2)}ms`), l.data.files) : (i.error(Error(`File discovery failed: ${l.error.message}`)), null);\n}\nexport async function resolveRulesStep(r, o, n) {\n let t = performance.now();\n n.step('❯ Loading rules...');\n let i = r;\n o.rule && (n.info(`Filtering analysis to single rule: ${o.rule}`), i = {\n ...r,\n rules: {\n [o.rule]: 'error'\n },\n extends: []\n });\n let a = await d(i, e.cwd());\n if (!a.ok) return n.error(Error(`Rule resolution failed: ${a.error.message}`)), null;\n let s = p(a.data.rules);\n return n.info(`❯ Loaded ${s.size} active rules in ${(performance.now() - t).toFixed(0)}ms`), n.debug(`Rule resolution: ${(performance.now() - t).toFixed(2)}ms`), s;\n}\nexport async function buildPlanStep(r, o, n, t, i, s, l) {\n let p = performance.now();\n i.step('❯ Planning analysis...');\n let c = await a({\n files: r,\n rules: o,\n rootDir: e.cwd(),\n cache: n,\n debug: t.debug,\n incremental: t.force ? {\n forceRerun: !0\n } : void 0,\n workerCount: l,\n overrides: s.overrides\n });\n return c.ok ? (c.data.precomputedAnalysis ? i.info('❯ Reused cached analysis plan') : i.info(`❯ Prepared ${c.data.tasks.length.toLocaleString()} checks in ${(performance.now() - p).toFixed(0)}ms`), i.debug(`Plan build: ${(performance.now() - p).toFixed(2)}ms`), c.data) : (i.error(Error(`Execution plan building failed: ${c.error.message}`)), null);\n}\nexport async function runAnalysisStep(r, o, n, a, s, p, c, d, f) {\n let g = performance.now();\n t(l, u);\n let m = await i(r, {\n rootDir: e.cwd(),\n cache: o,\n debug: a.debug,\n files: p,\n maxWorkers: n.maxWorkers,\n typeAwareChunkSize: n.typeAwareChunkSize,\n typeAwareConcurrency: n.typeAwareConcurrency,\n typeAwareFileConcurrency: n.typeAwareFileConcurrency,\n typeAwareIsolation: n.typeAwareIsolation,\n typeAwareChunkStrategy: n.typeAwareChunkStrategy,\n skipTypeCheck: a.skipTypeCheck,\n parserOptions: c?.parserOptions,\n onProgress: d,\n onFileProgress: f\n });\n return m.ok ? (s.debug(`Execution: ${(performance.now() - g).toFixed(2)}ms`), m.data) : (s.error(Error(`Analysis failed: ${m.error.message}`)), null);\n}\nexport async function saveToCacheStep(e, r, o, n) {\n if (!r) return;\n let t = performance.now(), i = [];\n for (let r of e)r.taskId && i.push([\n r.taskId,\n r\n ]);\n i.length > 0 && (await r.results.setMany(i), o.debug && n.debug(`Saved ${i.length} results to cache (${(performance.now() - t).toFixed(2)}ms)`));\n}\n","import t from 'node:path';\nimport e from 'picocolors';\nimport { formatDuration as n, pluralise as r } from '@ngcompass/common';\nlet ZERO_ACC = {\n taskCount: 0,\n issueCount: 0,\n errorCount: 0,\n warningCount: 0,\n duration: 0\n};\nfunction buildExpectedMap(t, e) {\n let n = new Map();\n for (let r of t.tasks){\n let t = r.filePath;\n 'string' == typeof t && 0 !== t.length && (r.needsTypeChecker || r.needsProjectContext) === e && n.set(t, (n.get(t) ?? 0) + 1);\n }\n return n;\n}\nfunction mergeAcc(t, e) {\n let n = t ?? ZERO_ACC;\n return {\n taskCount: n.taskCount + e.taskCount,\n issueCount: n.issueCount + e.issueCount,\n errorCount: n.errorCount + e.errorCount,\n warningCount: n.warningCount + e.warningCount,\n duration: n.duration + e.duration\n };\n}\nexport function createFileProgressLogger(o, u, s) {\n let i = buildExpectedMap(o, !1), a = buildExpectedMap(o, !0), C = new Map(), g = new Map(), d = new Set(), l = new Set(), c = (o, i, a)=>{\n if (l.has(o)) return;\n let C = a ? l : d;\n C.has(o) || (C.add(o), u(function(t, o) {\n let u = o.issueCount > 0, s = u ? e.red('❯') : e.green('❯'), i = u ? e.red(n(o.duration)) : e.green(n(o.duration));\n if (u) {\n let n = `${o.issueCount.toLocaleString()} ${r(o.issueCount, 'issue')}`;\n return `${s} ${e.red(t)} ${i} ${e.red(n)}`;\n }\n return `${s} ${e.dim(t)} ${i}`;\n }(t.relative(s, o) || o, i)));\n };\n return (t)=>{\n let e = t.filePath;\n if (l.has(e)) return;\n if (!1 === t.typeAware) {\n let n = mergeAcc(C.get(e), t);\n C.set(e, n);\n let r = i.get(e) ?? n.taskCount;\n if (n.taskCount < r) return;\n c(e, n, !a.has(e));\n return;\n }\n if (!0 === t.typeAware) {\n var n;\n let r = mergeAcc(g.get(e), t);\n g.set(e, r);\n let o = a.get(e) ?? r.taskCount;\n if (r.taskCount < o) return;\n c(e, (n = C.get(e), n ? {\n taskCount: n.taskCount + r.taskCount,\n issueCount: n.issueCount + r.issueCount,\n errorCount: n.errorCount + r.errorCount,\n warningCount: n.warningCount + r.warningCount,\n duration: n.duration + r.duration\n } : r), !0);\n return;\n }\n let r = (i.get(e) ?? 0) + (a.get(e) ?? 0), o = mergeAcc(C.get(e), t);\n C.set(e, o), o.taskCount < (r || o.taskCount) || c(e, o, !0);\n };\n}\n","import t from 'node:process';\nimport { createRuntimeCache as e } from '@ngcompass/cache';\nimport { getReporter as o } from '@ngcompass/reporters';\nimport { Spinner as r } from '../../spinner.js';\nimport { exitWithError as s } from '../exit.js';\nimport { resolvePerformanceOptions as a } from './options.js';\nimport { formatAnalysisProgressMessage as n, getAnalyzeMode as i, normalizeReporterFormat as p, resolveReporterFormat as m, shouldFailAnalysis as l, toError as c } from './resolve.js';\nimport { buildPlanStep as u, discoverFilesStep as f, loadConfigurationStep as d, resolveRulesStep as h, runAnalysisStep as k, saveToCacheStep as g } from './steps.js';\nimport { createFileProgressLogger as y } from './progress.js';\nexport function registerAnalyzeCommand(w, j) {\n w.command('analyze').description('Analyze your project and report rule violations and architecture risks').option('-p, --profile <name>', 'Configuration profile to run').option('--force', 'Ignore cached results and re-run all checks').option('--format <fmt>', 'Reporter format: console | json | sarif | html | ui').option('--compact', 'Use compact, ESLint-style output').option('-q, --quiet', 'Show summary counts only, suppress violation details').option('--no-recommendation', 'Suppress fix recommendations from output').option('--output <path>', 'Output path for UI reports (default: ngcompass-report.html)').option('--rule <id>', 'Run only one rule (useful for debugging or focused checks)').option('--mode <mode>', 'Performance mode: eco | balanced | turbo (default: balanced)', 'balanced').option('--max-workers <n>', 'Cap the number of worker threads (lower = less memory, e.g. --max-workers 2)').option('--skip-type-check', 'Skip rules that require the TypeScript type checker (fastest, lowest memory)').action(async (w)=>{\n let x = performance.now(), S = o(p(w.format), {\n compact: !!w.compact,\n outputPath: w.output,\n quiet: !!w.quiet,\n noRecommendation: !1 === w.recommendation\n }), q = j, v = 0;\n try {\n let s = await d(w, j, S);\n if (!s) {\n v = 1;\n return;\n }\n let { config: p } = s, c = a(w, p);\n q = e(p, t.cwd());\n let b = m(w.format, p.outputFormat);\n S = o(b, {\n compact: !!w.compact,\n outputPath: w.output ?? p.outputPath,\n quiet: !!w.quiet,\n noRecommendation: !1 === w.recommendation\n });\n let P = await f(p, w, q, S);\n if (!P) {\n v = 1;\n return;\n }\n let T = await h(p, w, S);\n if (!T) {\n v = 1;\n return;\n }\n let W = await u(P, T, q, w, S, p, c.maxWorkers);\n if (!W) {\n v = 1;\n return;\n }\n let E = 'console' === b ? t.stdout : t.stderr, F = new r(E), z = W.tasks.length + (W.skippedTasks?.length ?? 0), A = i(w);\n F.start(n(A, 0, z));\n let R = y(W, (t)=>F.writeLine(t), t.cwd()), C = await k(W, q, c, w, S, P, p, (t, e)=>{\n F.update(n(A, t, e));\n }, R);\n if (F.stop(), !C) {\n v = 1;\n return;\n }\n let O = performance.now() - x, I = {\n scannedFiles: new Set([\n ...W.tasks.map((t)=>t.filePath),\n ...(W.skippedTasks ?? []).map((t)=>t.filePath)\n ]).size,\n discoveredFiles: P.length,\n totalFiles: C.stats.totalFiles,\n totalTasks: W.tasks.length + (W.skippedTasks?.length ?? 0),\n cachedTasks: W.precomputedAnalysis ? W.tasks.length : void 0,\n totalErrors: C.stats.totalErrors,\n totalWarnings: C.stats.totalWarnings,\n failOnSeverity: p.failOnSeverity,\n maxWarnings: p.maxWarnings,\n duration: O\n };\n 'console' === b && S.summary(I), S.parseErrors(C.parseErrors), S.report(C.results), 'console' !== b && (S.step('❯ Writing report...'), S.summary(I)), W.precomputedAnalysis || await g(C.results, q, w, S), l(p, C.stats) && (v = 1);\n } catch (t) {\n S.error(c(t)), v = 1;\n } finally{\n q && q !== j && await q.flush(), 0 !== v && s(v);\n }\n });\n}\n","import o from 'node:process';\nimport { getConfigReporter as r } from '@ngcompass/reporters';\nimport { validateConfig as i } from '@ngcompass/config';\nimport { exitWithError as t, printError as e } from './exit.js';\nexport function registerConfigCommand(a, n) {\n a.command('config').description('Inspect and validate ngcompass configuration').command('health').description('Run semantic validation checks for the active configuration').option('-p, --profile <name>', 'Configuration profile to validate').action(async (a)=>{\n try {\n let e = await i({\n cwd: o.cwd(),\n cache: a.cache ? n : void 0,\n profile: a.profile\n }), c = r();\n await c.renderHealthReport(e.report), e.report.valid || t();\n } catch (o) {\n e('Error', o), t();\n }\n });\n}\n","import { createRuntimeCache as e } from '@ngcompass/cache';\nimport { getCacheReporter as a } from '@ngcompass/reporters';\nimport { resolveConfig as o } from '@ngcompass/config';\nimport t from 'picocolors';\nimport r from 'node:process';\nimport { exitWithError as i, printError as c } from './exit.js';\nlet CACHE_CLEAR_TYPES = [\n 'ast',\n 'config',\n 'results',\n 'all'\n], CACHE_CLEAR_TYPE_VALUES = new Set(CACHE_CLEAR_TYPES);\nexport function registerCacheCommand(e, o) {\n let n = e.command('cache').description('Inspect and manage analysis cache data');\n n.command('clear').description('Clear cached data for one cache type or all cache types').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').option('--type <type>', 'Cache type to clear: ast | config | results | all', 'all').action(async (e)=>{\n var n;\n let l, s = (l = n = e.type, CACHE_CLEAR_TYPE_VALUES.has(l)) ? n : (c(`Invalid cache type: ${n}. Must be one of: ${CACHE_CLEAR_TYPES.join(', ')}`), i()), p = a();\n r.stdout.write(t.dim(' › Clearing cache...\\n'));\n try {\n let a = await resolveRuntimeCache(o, {\n profile: e.profile,\n allowDisabled: !0\n });\n 'all' === s ? await a.clear() : await a.clearType(s), p.renderClearResult(s);\n } catch (e) {\n c('Error clearing cache', e), i();\n }\n }), n.command('info').description('Show cache status, size, and usage details').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').action(async (e)=>{\n let t = a();\n try {\n let a = await resolveRuntimeCache(o, {\n profile: e.profile,\n allowDisabled: !0\n }), r = await a.getInfo();\n t.renderCacheInfo(r);\n } catch (e) {\n c('Error getting cache info', e), i();\n }\n }), n.command('path').description('Print the resolved cache directory path').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').action(async (e)=>{\n let a = await resolveRuntimeCache(o, {\n profile: e.profile,\n allowDisabled: !0\n });\n r.stdout.write(`${a.getCachePath()}\\n`);\n });\n}\nasync function resolveRuntimeCache(a, t = {}) {\n let i = t.cwd ?? r.cwd();\n try {\n let r = await o({\n profile: t.profile,\n cache: a,\n cwd: i\n });\n if (!r.report.valid || !r.config) return a;\n return e(r.config, i, {\n allowDisabled: t.allowDisabled\n }) ?? a;\n } catch (e) {\n return c('Unable to resolve cache configuration; using default cache', e), a;\n }\n}\n","import { getRulesReporter as e } from '@ngcompass/reporters';\nimport { getRuleListEntries as r, isBuiltinPreset as t } from '@ngcompass/rules';\nimport s from 'picocolors';\nimport { exitWithError as o, printError as i } from './exit.js';\nexport function registerRulesCommand(n) {\n n.command('rules [ruleName]').description('Browse available rules or inspect details for a specific rule').option('--preset <name>', 'Filter by preset: recommended, strict, performance, reactivity, or all').action((n, l)=>{\n l.preset && !t(l.preset) && (i(`Unknown preset: \"${l.preset}\".`), process.stderr.write(s.dim('Available presets: recommended, strict, all, performance, reactivity\\n')), o());\n let p = r(), m = e({\n preset: l.preset\n });\n if (n) {\n let e = p.find((e)=>e.name === n);\n if (!e) {\n i(`Rule \"${n}\" not found.`), process.stderr.write(s.dim('Run `ngcompass rules` to list available rules.\\n')), o();\n return;\n }\n m.renderSingleRule(e);\n } else m.render(p);\n });\n}\n","import { registerInitCommand as o } from './init.js';\nimport { registerAnalyzeCommand as r } from './analyze/index.js';\nimport { registerConfigCommand as m } from './config.js';\nimport { registerCacheCommand as i } from './cache.js';\nimport { registerRulesCommand as t } from './rules.js';\nexport function registerCommands(s, e) {\n o(s, e), r(s, e), m(s, e), i(s, e), t(s);\n}\n","import { Command as e } from 'commander';\nimport { registerCommands as s } from '../commands/index.js';\nimport { enableDebug as o, PACKAGE_VERSION as n } from '@ngcompass/common';\nimport { createCacheContext as a } from '@ngcompass/cache';\nimport { registerAllBuiltinRules as r } from '@ngcompass/rules';\nimport { restoreCursor as t, printError as c } from '../commands/exit.js';\nlet shutdownInProgress = !1, gracefulShutdown = async (e, s)=>{\n if (!shutdownInProgress) {\n if (shutdownInProgress = !0, t(), e) try {\n let s = new Promise((e)=>setTimeout(e, 10_000).unref());\n await Promise.race([\n e.flush(),\n s\n ]);\n } catch (e) {\n c('[ngcompass] Cache flush failed during shutdown', e);\n }\n process.exit(s);\n }\n}, handleFatalAsyncFailure = (e, s, o)=>{\n c(`[ngcompass] ${s}`, o), gracefulShutdown(e, 1);\n}, printRunBanner = async (e)=>{\n let { default: s } = await import('picocolors'), o = process.cwd();\n process.stdout.write(`\\n${s.dim('>')} ${s.dim(`ngcompass@${n}`)} ${s.dim(e)} ${s.dim(o)}\\n${s.dim('>')} ${s.dim('ngcompass')} ${s.dim('run')}\\n\\n ${s.bgCyan(s.white(s.bold(` ${e.toUpperCase()} `)))} ${s.cyan(n)} ${s.dim(o)}\\n\\n`);\n};\nexport async function run() {\n let t = new e();\n t.name('ngcompass').description('Static analysis and architecture insights for Angular codebases.').version(n, '-V, --version', 'Display ngcompass version').option('--debug', 'Enable detailed debug logs across all modules').addHelpText('after', '\\nExamples:\\n $ ngcompass init\\n $ ngcompass analyze --profile strict\\n $ ngcompass cache info\\n').hook('preAction', async (e, s)=>{\n let n;\n if (e.opts().debug && o('debug', 'all'), 'json' !== (n = s.opts().format) && 'sarif' !== n && 'html' !== n && 'ui' !== n) {\n let e = s.parent, o = e && 'ngcompass' !== e.name() ? e.name() : s.name();\n await printRunBanner(o);\n }\n });\n let i = a();\n process.on('SIGINT', ()=>void gracefulShutdown(i, 130)), process.on('SIGTERM', ()=>void gracefulShutdown(i, 143)), process.on('uncaughtException', (e)=>{\n handleFatalAsyncFailure(i, 'Unexpected error', e);\n }), process.on('unhandledRejection', (e)=>{\n handleFatalAsyncFailure(i, 'Unhandled promise rejection', e);\n });\n try {\n if (r(), s(t, i), !process.argv.slice(2).length) return void t.outputHelp();\n await t.parseAsync(process.argv), await i.flush(), process.exit(0);\n } catch (e) {\n c('[ngcompass] Fatal error', e), await gracefulShutdown(i, 1);\n }\n}\nrun().catch((e)=>{\n c('[ngcompass] Fatal error', e), t(), process.exit(1);\n});\n"]}
#!/usr/bin/env node
import {Command,Option}from'commander';import {getConfigReporter,getReporter,getCacheReporter,getRulesReporter}from'@ngcompass/reporters';import {initConfig,validateConfig,resolveConfig,loadPlugins}from'@ngcompass/config';import L from'path';import h from'picocolors';import {PACKAGE_VERSION,enableDebug,DEFAULT_INCLUDE_PATTERNS}from'@ngcompass/common';import k from'process';import {createCacheContext,createRuntimeCache}from'@ngcompass/cache';import {registerAllBuiltinRules,isBuiltinPreset,getRuleListEntries,getGlobalRegistry,resolveRules,getEnabledRules,executeBatchedNewEngineRules,isNewEngineRule}from'@ngcompass/rules';import {configureRuleExecutor,runAnalysis}from'@ngcompass/engine';import {buildExecutionPlan}from'@ngcompass/planner';import {scan}from'@ngcompass/scanner';var f=(t=1)=>{process.stdout.isTTY&&process.stdout.write("\x1B[?25h"),process.exit(t);};function ce(t,r){t.command("init").description("Create a starter ngcompass configuration in the current project").option("-f, --force","Overwrite an existing configuration file").option("--cwd <path>","Project directory where the configuration will be created",process.cwd()).action(async e=>{try{let o=await initConfig({cwd:e.cwd,force:e.force});await getConfigReporter().renderInitResult(o),o.success||o.alreadyExists||f();}catch(o){console.error(o instanceof Error?o.message:String(o)),f();}});}var le=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],j=class{stream;timer=null;frameIndex=0;message="";isTTY;constructor(r){this.stream=r,this.isTTY=!!r.isTTY;}start(r){this.message=r,this.frameIndex=0,this.isTTY?(this.stream.write("\x1B[?25l"),this.render(),this.timer=setInterval(()=>this.render(),80)):this.stream.write(`${h.cyan("\u276F")} ${h.dim(r)}
import {Command}from'commander';import {getConfigReporter,getReporter,getCacheReporter,getRulesReporter}from'@ngcompass/reporters';import {initConfig,validateConfig,resolveConfig,loadPlugins}from'@ngcompass/config';import k from'picocolors';import E from'process';import {createCacheContext,createRuntimeCache}from'@ngcompass/cache';import N from'path';import {PACKAGE_VERSION,enableDebug,DEFAULT_INCLUDE_PATTERNS,formatDuration,pluralise}from'@ngcompass/common';import {configureRuleExecutor,runAnalysis}from'@ngcompass/engine';import {buildExecutionPlan}from'@ngcompass/planner';import {scan}from'@ngcompass/scanner';import {registerAllBuiltinRules,isBuiltinPreset,getRuleListEntries,getGlobalRegistry,resolveRules,getEnabledRules,executeBatchedNewEngineRules,isNewEngineRule}from'@ngcompass/rules';var $=()=>{process.stdout.isTTY&&process.stdout.write("\x1B[?25h");},f=(t=1)=>{$(),process.exit(t);},d=(t,r)=>{let e=r===void 0?"":`: ${r instanceof Error?r.message:String(r)}`;console.error(`${k.red(t)}${e}`);};function D(t,r){t.command("init").description("Create a starter ngcompass configuration in the current project").option("-f, --force","Overwrite an existing configuration file").option("--cwd <path>","Project directory where the configuration will be created",process.cwd()).action(async e=>{try{let n=await initConfig({cwd:e.cwd,force:e.force});await getConfigReporter().renderInitResult(n),n.success||n.alreadyExists||f();}catch(n){d("Error initializing configuration",n),f();}});}var M=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],R=class{stream;timer=null;frameIndex=0;message="";isTTY;constructor(r){this.stream=r,this.isTTY=!!r.isTTY;}start(r){this.message=r,this.frameIndex=0,this.isTTY?(this.stream.write("\x1B[?25l"),this.render(),this.timer=setInterval(()=>this.render(),80)):this.stream.write(`${k.cyan("\u276F")} ${k.dim(r)}
`);}update(r){this.message=r,this.isTTY&&this.timer&&this.render();}writeLine(r){this.isTTY&&this.timer?(this.stream.write("\r\x1B[K"),this.stream.write(`${r}
`),this.render()):this.stream.write(`${r}
`);}stop(){this.timer&&(clearInterval(this.timer),this.timer=null),this.isTTY&&(this.stream.write("\r\x1B[K"),this.stream.write("\x1B[?25h"));}render(){let r=h.cyan(le[this.frameIndex%le.length]);this.frameIndex++,this.stream.write(`\r\x1B[K${r} ${h.dim(this.message)}`);}};var we={eco:{typeAwareConcurrency:1,typeAwareFileConcurrency:1,typeAwareChunkSize:100,typeAwareIsolation:"auto",typeAwareChunkStrategy:"dependency"},balanced:{typeAwareConcurrency:2,typeAwareFileConcurrency:2,typeAwareChunkSize:300,typeAwareIsolation:"auto",typeAwareChunkStrategy:"simple"},turbo:{typeAwareConcurrency:2,typeAwareFileConcurrency:4,typeAwareChunkSize:500,typeAwareIsolation:"off",typeAwareChunkStrategy:"simple"}},pe=Object.keys(we),me=["auto","process","off"],de=["dependency","simple"];function z(t,r){if(t===void 0)return;let e=Number(t);if(!Number.isInteger(e)||e<1)throw Error(`${r} must be a positive integer.`);return e}function fe(t){return t==="ui"?"html":t??"console"}function D(t){return t<1e3?`${Math.max(0,Math.round(t))}ms`:`${(t/1e3).toFixed(1)}s`}function ge(t,r){return `${t.toLocaleString()} ${r}${t===1?"":"s"}`}function he(t,r,e){return `Running analysis in ${t} mode: ${r.toLocaleString()}/${e.toLocaleString()} checks complete...`}function ye(t,r){t.command("analyze").description("Analyze your project and report rule violations and architecture risks").option("-p, --profile <name>","Configuration profile to run").option("--force","Ignore cached results and re-run all checks").option("--format <fmt>","Reporter format: console | json | sarif | html | ui").option("--compact","Use compact, ESLint-style output").option("-q, --quiet","Show summary counts only, suppress violation details").option("--no-recommendation","Suppress fix recommendations from output").option("--output <path>","Output path for UI reports (default: ngcompass-report.html)").option("--rule <id>","Run only one rule (useful for debugging or focused checks)").option("--mode <mode>","Performance mode: eco | balanced | turbo (default: balanced)","balanced").option("--max-workers <n>","Cap the number of worker threads (lower = less memory, e.g. --max-workers 2)").addOption(new Option("--type-aware-chunk-size <n>","Files per type-aware chunk").hideHelp()).addOption(new Option("--type-aware-concurrency <n>","Concurrent type-aware chunks").hideHelp()).addOption(new Option("--type-aware-file-concurrency <n>","Concurrent files per type-aware chunk").hideHelp()).addOption(new Option("--type-aware-isolation <mode>","Type-aware isolation: auto | process | off").hideHelp()).addOption(new Option("--type-aware-chunk-strategy <mode>","Type-aware chunk ordering: dependency | simple").hideHelp()).option("--skip-type-check","Skip rules that require the TypeScript type checker (fastest, lowest memory)").action(async e=>{let o=performance.now(),a=getReporter(fe(e.format),{compact:!!e.compact,outputPath:e.output,quiet:!!e.quiet,noRecommendation:e.recommendation===false}),n=r,i=0;try{var l;let p,R,A,K,V,J,Q,X=await He(e,r,a);if(!X){i=1;return}let{config:w}=X,Z=(p=we[(function(u){let C=u??"balanced";if(!pe.includes(C))throw Error(`Invalid performance mode "${C}". Expected one of: ${pe.join(", ")}.`);return C})(e.mode)],R=z(e.maxWorkers,"--max-workers"),A=z(e.typeAwareChunkSize,"--type-aware-chunk-size"),K=z(e.typeAwareConcurrency,"--type-aware-concurrency"),V=z(e.typeAwareFileConcurrency,"--type-aware-file-concurrency"),{maxWorkers:R??w.maxWorkers,typeAwareChunkSize:A??p.typeAwareChunkSize,typeAwareConcurrency:K??p.typeAwareConcurrency,typeAwareFileConcurrency:V??p.typeAwareFileConcurrency,typeAwareIsolation:(function(u){if(u!==void 0){if(!me.includes(u))throw Error(`Invalid --type-aware-isolation "${u}". Expected one of: ${me.join(", ")}.`);return u}})(e.typeAwareIsolation)??p.typeAwareIsolation,typeAwareChunkStrategy:(function(u){if(u!==void 0){if(!de.includes(u))throw Error(`Invalid --type-aware-chunk-strategy "${u}". Expected one of: ${de.join(", ")}.`);return u}})(e.typeAwareChunkStrategy)??p.typeAwareChunkStrategy});n=createRuntimeCache(w,k.cwd());let T=(function(u,C){if(u)return fe(u);switch(C){case "json":return "json";case "sarif":return "sarif";case "html":return "html";default:return "console"}})(e.format,w.outputFormat);a=getReporter(T,{compact:!!e.compact,outputPath:e.output??w.outputPath,quiet:!!e.quiet,noRecommendation:e.recommendation===!1});let I=await qe(w,e,n,a);if(!I){i=1;return}let ee=await Ge(w,e,a);if(!ee){i=1;return}let y=await Ke(I,ee,n,e,a,w,Z.maxWorkers);if(!y){i=1;return}let Ee=T==="console"?k.stdout:k.stderr,F=new j(Ee),Se=y.tasks.length+(y.skippedTasks?.length??0),re=e.mode??"balanced";F.start(he(re,0,Se));let be=(function(u,C,oe){let P=new Map,v=new Map;for(let m of u.tasks){let s=m.filePath;typeof s=="string"&&s.length!==0&&(m.needsTypeChecker||m.needsProjectContext?v.set(s,(v.get(s)??0)+1):P.set(s,(P.get(s)??0)+1));}let _=new Map,Te=new Map,ne=new Set,O=new Set,B=(m,s)=>{let c=m.get(s.filePath),g=c?{taskCount:c.taskCount+s.taskCount,issueCount:c.issueCount+s.issueCount,errorCount:c.errorCount+s.errorCount,warningCount:c.warningCount+s.warningCount,duration:c.duration+s.duration}:{taskCount:s.taskCount,issueCount:s.issueCount,errorCount:s.errorCount,warningCount:s.warningCount,duration:s.duration};return m.set(s.filePath,g),g},Y=(m,s)=>{if(O.has(m))return;O.add(m);let c=L.relative(oe,m)||m,g=s.issueCount>0,d=g?h.red("\u276F"):h.green("\u276F"),x=g?h.red(D(s.duration)):h.green(D(s.duration));C(g?`${d} ${h.red(c)} ${x} ${h.red(ge(s.issueCount,"issue"))}`:`${d} ${h.dim(c)} ${x}`);};return m=>{let s=m.filePath;if(!O.has(s))if(m.typeAware===!1){let c=B(_,m),g=P.get(s)??c.taskCount;if(c.taskCount<g)return;v.has(s)?((d,x)=>{if(ne.has(d)||O.has(d))return;ne.add(d);let ae=L.relative(oe,d)||d,U=x.issueCount>0,ie=U?h.red("\u276F"):h.green("\u276F"),se=U?h.red(D(x.duration)):h.green(D(x.duration));C(U?`${ie} ${h.red(ae)} ${se} ${h.red(ge(x.issueCount,"issue"))}`:`${ie} ${h.dim(ae)} ${se}`);})(s,c):Y(s,c);}else if(m.typeAware===!0){let c=B(Te,m),g=v.get(s)??c.taskCount;if(c.taskCount<g)return;let d=_.get(s);Y(s,d?{taskCount:d.taskCount+c.taskCount,issueCount:d.issueCount+c.issueCount,errorCount:d.errorCount+c.errorCount,warningCount:d.warningCount+c.warningCount,duration:d.duration+c.duration}:c);}else {let c=(P.get(s)??0)+(v.get(s)??0),g=B(_,m);if(g.taskCount<(c||g.taskCount))return;Y(s,g);}}})(y,u=>F.writeLine(u),k.cwd()),$=await Ve(y,n,Z,e,a,I,w,(u,C)=>{F.update(he(re,u,C));},be);if(F.stop(),!$){i=1;return}let Re=performance.now()-o,te={scannedFiles:new Set([...y.tasks.map(u=>u.filePath),...(y.skippedTasks??[]).map(u=>u.filePath)]).size,discoveredFiles:I.length,totalFiles:$.stats.totalFiles,totalTasks:y.tasks.length+(y.skippedTasks?.length??0),cachedTasks:y.precomputedAnalysis?y.tasks.length:void 0,totalErrors:$.stats.totalErrors,totalWarnings:$.stats.totalWarnings,failOnSeverity:w.failOnSeverity,maxWarnings:w.maxWarnings,duration:Re};T==="console"&&a.summary(te),a.parseErrors($.parseErrors),a.report($.results),T!=="console"&&(a.step("\u276F Writing report..."),a.summary(te)),y.precomputedAnalysis||await Je($.results,n,e,a),l=$.stats,J=w.failOnSeverity??"error",Q=w.maxWarnings??10,(l.totalErrors>0||J==="warn"&&l.totalWarnings>0||l.totalWarnings>Q)&&(i=1);}catch(p){a.error(p),i=1;}finally{n&&n!==r&&await n.flush(),i!==0&&f(i);}});}async function He(t,r,e){let o=performance.now();e.step("\u276F Loading configuration...");let a=await resolveConfig({profile:t.profile,cache:r,cwd:k.cwd()});if(!a.report.valid){let i=a.report.issues.map(l=>{let p=l.path?.join(".")||"root";return `[${l.severity.toUpperCase()}] ${p}: ${l.message}`});return e.error(Error(["Configuration validation failed",...i].join(`
`))),null}if(!a.config)return e.error(Error("No configuration found")),null;let n=a.config.plugins;if(n&&n.length>0){e.step(`\u276F Loading ${n.length} plugin(s)...`);let i=k.cwd();await loadPlugins(n,i,getGlobalRegistry()),e.info(`Loaded ${n.length} plugin(s)`);}return e.debug(`Config resolve: ${(performance.now()-o).toFixed(2)}ms`),{config:a.config}}async function qe(t,r,e,o){let a=performance.now();o.step("\u276F Discovering files...");let n=await scan({rootDir:k.cwd(),include:t.include??[...DEFAULT_INCLUDE_PATTERNS],exclude:t.exclude??[],ignorePatterns:t.ignorePatterns,tsConfigPath:(function(i,l){if(!i?.project)return;let p=i.tsconfigRootDir?L.resolve(l,i.tsconfigRootDir):l;return L.resolve(p,i.project)})(t.parserOptions,k.cwd()),respectGitignore:true,debug:r.debug,cache:e});return n.ok?(o.info(`\u276F Found ${n.data.files.length} files in ${(performance.now()-a).toFixed(0)}ms`),o.debug(`File discovery: ${(performance.now()-a).toFixed(2)}ms`),n.data.files):(o.error(Error(`File discovery failed: ${n.error.message}`)),null)}async function Ge(t,r,e){let o=performance.now();e.step("\u276F Loading rules...");let a=t;r.rule&&(e.info(`Filtering analysis to single rule: ${r.rule}`),a={...t,rules:{[r.rule]:"error"},extends:[]});let n=await resolveRules(a);if(!n.ok)return e.error(Error(`Rule resolution failed: ${n.error.message}`)),null;let i=getEnabledRules(n.data.rules);return e.info(`\u276F Loaded ${i.size} active rules in ${(performance.now()-o).toFixed(0)}ms`),e.debug(`Rule resolution: ${(performance.now()-o).toFixed(2)}ms`),i}async function Ke(t,r,e,o,a,n,i){let l=performance.now();a.step("\u276F Planning analysis...");let p=await buildExecutionPlan({files:t,rules:r,rootDir:k.cwd(),cache:e,debug:o.debug,incremental:o.force?{forceRerun:true}:void 0,workerCount:i,overrides:n.overrides});return p.ok?(p.data.precomputedAnalysis?a.info("\u276F Reused cached analysis plan"):a.info(`\u276F Prepared ${p.data.tasks.length.toLocaleString()} checks in ${(performance.now()-l).toFixed(0)}ms`),a.debug(`Plan build: ${(performance.now()-l).toFixed(2)}ms`),p.data):(a.error(Error(`Execution plan building failed: ${p.error.message}`)),null)}async function Ve(t,r,e,o,a,n,i,l,p){let R=performance.now();configureRuleExecutor(executeBatchedNewEngineRules,isNewEngineRule);let A=await runAnalysis(t,{rootDir:k.cwd(),cache:r,debug:o.debug,files:n,maxWorkers:e.maxWorkers,typeAwareChunkSize:e.typeAwareChunkSize,typeAwareConcurrency:e.typeAwareConcurrency,typeAwareFileConcurrency:e.typeAwareFileConcurrency,typeAwareIsolation:e.typeAwareIsolation,typeAwareChunkStrategy:e.typeAwareChunkStrategy,skipTypeCheck:o.skipTypeCheck,parserOptions:i?.parserOptions,onProgress:l,onFileProgress:p});return A.ok?(a.debug(`Execution: ${(performance.now()-R).toFixed(2)}ms`),A.data):(a.error(Error(`Analysis failed: ${A.error.message}`)),null)}async function Je(t,r,e,o){if(!r)return;let a=performance.now(),n=[];for(let i of t)i.taskId&&n.push([i.taskId,i]);n.length>0&&(await r.results.setMany(n),e.debug&&o.debug(`Saved ${n.length} results to cache (${(performance.now()-a).toFixed(2)}ms)`));}function Ce(t,r){t.command("config").description("Inspect and validate ngcompass configuration").command("health").description("Run semantic validation checks for the active configuration").option("-p, --profile <name>","Configuration profile to validate").action(async e=>{try{let o=await validateConfig({cache:e.cache?r:void 0,profile:e.profile});await getConfigReporter().renderHealthReport(o.report),o.report.valid||f();}catch(o){let a=o instanceof Error?o.message:String(o);console.error(`Error: ${a}`),f();}});}function $e(t,r){let e=t.command("cache").description("Inspect and manage analysis cache data");e.command("clear").description("Clear cached data for one cache type or all cache types").option("-p, --profile <name>","Configuration profile used to resolve cache settings").option("--type <type>","Cache type to clear: ast | config | results | all","all").action(async o=>{let a=getCacheReporter();k.stdout.write(h.dim(` \u203A Clearing cache...
`));let n=o.type,i=["ast","config","results","all"];i.includes(n)||(console.error(h.red(`Invalid cache type: ${n}. Must be one of: ${i.join(", ")}`)),f());try{let l=await H(r,{profile:o.profile,allowDisabled:!0});n==="all"?await l.clear():await l.clearType(n),a.renderClearResult(n);}catch(l){console.error(h.red("Error clearing cache:"),l),f();}}),e.command("info").description("Show cache status, size, and usage details").option("-p, --profile <name>","Configuration profile used to resolve cache settings").action(async o=>{let a=getCacheReporter();try{let n=await H(r,{profile:o.profile,allowDisabled:!0}),i=await n.getInfo();a.renderCacheInfo(i);}catch(n){console.error(h.red("Error getting cache info:"),n),f();}}),e.command("path").description("Print the resolved cache directory path").option("-p, --profile <name>","Configuration profile used to resolve cache settings").action(async o=>{let a=await H(r,{profile:o.profile,allowDisabled:true});k.stdout.write(`${a.getCachePath()}
`);});}async function H(t,r={}){let e=r.cwd??k.cwd();try{let o=await resolveConfig({profile:r.profile,cache:t,cwd:e});return !o.report.valid||!o.config?t:createRuntimeCache(o.config,e,{allowDisabled:r.allowDisabled})??t}catch{return t}}function xe(t){t.command("rules [ruleName]").description("Browse available rules or inspect details for a specific rule").option("--preset <name>","Filter by preset: recommended, strict, performance, reactivity, or all").action((r,e)=>{e.preset&&!isBuiltinPreset(e.preset)&&(console.error(h.red(`Unknown preset: "${e.preset}".`)),console.error(h.dim("Available presets: recommended, strict, all, performance, reactivity")),f());let o=getRuleListEntries(),a=getRulesReporter({preset:e.preset});if(r){let n=o.find(i=>i.name===r);if(!n){console.error(h.red(`Rule "${r}" not found.`)),console.error(h.dim("Run `ngcompass rules` to list available rules.")),f();return}a.renderSingleRule(n);}else a.render(o);});}function Ae(t,r){ce(t),ye(t,r),Ce(t,r),$e(t,r),xe(t);}var b=()=>{process.stdout.isTTY&&process.stdout.write("\x1B[?25h");},ve=false,S=async(t,r)=>{if(!ve){if(ve=true,b(),t)try{let e=new Promise(o=>setTimeout(o,1e4).unref());await Promise.race([t.flush(),e]);}catch{}process.exit(r);}};async function cr(){let t=new Command;t.name("ngcompass").description("Static analysis and architecture insights for Angular codebases.").version(PACKAGE_VERSION,"-V, --version","Display ngcompass version").option("--debug","Enable detailed debug logs across all modules").addHelpText("after",`
`);}stop(){this.timer&&(clearInterval(this.timer),this.timer=null),this.isTTY&&(this.stream.write("\r\x1B[K"),this.stream.write("\x1B[?25h"));}render(){let r=k.cyan(M[this.frameIndex%M.length]);this.frameIndex++,this.stream.write(`\r\x1B[K${r} ${k.dim(this.message)}`);}};var we={eco:{typeAwareConcurrency:1,typeAwareFileConcurrency:1,typeAwareChunkSize:100,typeAwareIsolation:"auto",typeAwareChunkStrategy:"dependency"},balanced:{typeAwareConcurrency:1,typeAwareFileConcurrency:1,typeAwareChunkSize:150,typeAwareIsolation:"auto",typeAwareChunkStrategy:"dependency"},turbo:{typeAwareConcurrency:2,typeAwareFileConcurrency:4,typeAwareChunkSize:500,typeAwareIsolation:"off",typeAwareChunkStrategy:"simple"}},j=["eco","balanced","turbo"],Ce=new Set(j);function xe(t,r){if(t===void 0)return;let e=Number(t);if(!Number.isInteger(e)||e<1)throw Error(`${r} must be a positive integer.`);return e}function _(t,r){let e=we[(function(n){let o=n??"balanced";if(!Ce.has(o))throw Error(`Invalid performance mode "${o}". Expected one of: ${j.join(", ")}.`);return o})(t.mode)];return {maxWorkers:xe(t.maxWorkers,"--max-workers")??r.maxWorkers,typeAwareChunkSize:e.typeAwareChunkSize,typeAwareConcurrency:e.typeAwareConcurrency,typeAwareFileConcurrency:e.typeAwareFileConcurrency,typeAwareIsolation:e.typeAwareIsolation,typeAwareChunkStrategy:e.typeAwareChunkStrategy}}function F(t){return t==="ui"?"html":t??"console"}function U(t,r){if(t)return F(t);switch(r){case "json":return "json";case "sarif":return "sarif";case "html":return "html";default:return "console"}}function B(t,r){let e=t.failOnSeverity??"error",n=t.maxWarnings??10;return r.totalErrors>0||e==="warn"&&r.totalWarnings>0||r.totalWarnings>n}function Y(t,r){if(!t?.project)return;let e=t.tsconfigRootDir?N.resolve(r,t.tsconfigRootDir):r;return N.resolve(e,t.project)}function q(t){return t instanceof Error?t:Error(String(t))}function G(t){return t.mode??"balanced"}function T(t,r,e){return `Running analysis in ${t} mode: ${r.toLocaleString()}/${e.toLocaleString()} checks complete...`}async function H(t,r,e){let n=performance.now();e.step("\u276F Loading configuration...");let o=await resolveConfig({profile:t.profile,cache:r,cwd:E.cwd()});if(!o.report.valid){let i=o.report.issues.map(u=>{let s=u.path?.join(".")||"root";return `[${u.severity.toUpperCase()}] ${s}: ${u.message}`});return e.error(Error(["Configuration validation failed",...i].join(`
`))),null}if(!o.config)return e.error(Error("No configuration found")),null;let a=o.config.plugins;if(a&&a.length>0){e.step(`\u276F Loading ${a.length} plugin(s)...`);let i=E.cwd();await loadPlugins(a,i,getGlobalRegistry()),e.info(`Loaded ${a.length} plugin(s)`);}return e.debug(`Config resolve: ${(performance.now()-n).toFixed(2)}ms`),{config:o.config}}async function K(t,r,e,n){let o=performance.now();n.step("\u276F Discovering files...");let a=await scan({rootDir:E.cwd(),include:t.include??[...DEFAULT_INCLUDE_PATTERNS],exclude:t.exclude??[],ignorePatterns:t.ignorePatterns,tsConfigPath:Y(t.parserOptions,E.cwd()),respectGitignore:true,debug:r.debug,cache:e});return a.ok?(n.info(`\u276F Found ${a.data.files.length} files in ${(performance.now()-o).toFixed(0)}ms`),n.debug(`File discovery: ${(performance.now()-o).toFixed(2)}ms`),a.data.files):(n.error(Error(`File discovery failed: ${a.error.message}`)),null)}async function V(t,r,e){let n=performance.now();e.step("\u276F Loading rules...");let o=t;r.rule&&(e.info(`Filtering analysis to single rule: ${r.rule}`),o={...t,rules:{[r.rule]:"error"},extends:[]});let a=await resolveRules(o,E.cwd());if(!a.ok)return e.error(Error(`Rule resolution failed: ${a.error.message}`)),null;let i=getEnabledRules(a.data.rules);return e.info(`\u276F Loaded ${i.size} active rules in ${(performance.now()-n).toFixed(0)}ms`),e.debug(`Rule resolution: ${(performance.now()-n).toFixed(2)}ms`),i}async function Z(t,r,e,n,o,a,i){let u=performance.now();o.step("\u276F Planning analysis...");let s=await buildExecutionPlan({files:t,rules:r,rootDir:E.cwd(),cache:e,debug:n.debug,incremental:n.force?{forceRerun:true}:void 0,workerCount:i,overrides:a.overrides});return s.ok?(s.data.precomputedAnalysis?o.info("\u276F Reused cached analysis plan"):o.info(`\u276F Prepared ${s.data.tasks.length.toLocaleString()} checks in ${(performance.now()-u).toFixed(0)}ms`),o.debug(`Plan build: ${(performance.now()-u).toFixed(2)}ms`),s.data):(o.error(Error(`Execution plan building failed: ${s.error.message}`)),null)}async function J(t,r,e,n,o,a,i,u,s){let C=performance.now();configureRuleExecutor(executeBatchedNewEngineRules,isNewEngineRule);let p=await runAnalysis(t,{rootDir:E.cwd(),cache:r,debug:n.debug,files:a,maxWorkers:e.maxWorkers,typeAwareChunkSize:e.typeAwareChunkSize,typeAwareConcurrency:e.typeAwareConcurrency,typeAwareFileConcurrency:e.typeAwareFileConcurrency,typeAwareIsolation:e.typeAwareIsolation,typeAwareChunkStrategy:e.typeAwareChunkStrategy,skipTypeCheck:n.skipTypeCheck,parserOptions:i?.parserOptions,onProgress:u,onFileProgress:s});return p.ok?(o.debug(`Execution: ${(performance.now()-C).toFixed(2)}ms`),p.data):(o.error(Error(`Analysis failed: ${p.error.message}`)),null)}async function Q(t,r,e,n){if(!r)return;let o=performance.now(),a=[];for(let i of t)i.taskId&&a.push([i.taskId,i]);a.length>0&&(await r.results.setMany(a),e.debug&&n.debug(`Saved ${a.length} results to cache (${(performance.now()-o).toFixed(2)}ms)`));}var We={taskCount:0,issueCount:0,errorCount:0,warningCount:0,duration:0};function ee(t,r){let e=new Map;for(let n of t.tasks){let o=n.filePath;typeof o=="string"&&o.length!==0&&(n.needsTypeChecker||n.needsProjectContext)===r&&e.set(o,(e.get(o)??0)+1);}return e}function I(t,r){let e=t??We;return {taskCount:e.taskCount+r.taskCount,issueCount:e.issueCount+r.issueCount,errorCount:e.errorCount+r.errorCount,warningCount:e.warningCount+r.warningCount,duration:e.duration+r.duration}}function re(t,r,e){let n=ee(t,false),o=ee(t,true),a=new Map,i=new Map,u=new Set,s=new Set,C=(p,c,g)=>{if(s.has(p))return;let m=g?s:u;m.has(p)||(m.add(p),r((function(y,l){let w=l.issueCount>0,v=w?k.red("\u276F"):k.green("\u276F"),A=w?k.red(formatDuration(l.duration)):k.green(formatDuration(l.duration));if(w){let h=`${l.issueCount.toLocaleString()} ${pluralise(l.issueCount,"issue")}`;return `${v} ${k.red(y)} ${A} ${k.red(h)}`}return `${v} ${k.dim(y)} ${A}`})(N.relative(e,p)||p,c)));};return p=>{let c=p.filePath;if(s.has(c))return;if(p.typeAware===false){let l=I(a.get(c),p);a.set(c,l);let w=n.get(c)??l.taskCount;if(l.taskCount<w)return;C(c,l,!o.has(c));return}if(p.typeAware===true){var g;let l=I(i.get(c),p);i.set(c,l);let w=o.get(c)??l.taskCount;if(l.taskCount<w)return;C(c,(g=a.get(c),g?{taskCount:g.taskCount+l.taskCount,issueCount:g.issueCount+l.issueCount,errorCount:g.errorCount+l.errorCount,warningCount:g.warningCount+l.warningCount,duration:g.duration+l.duration}:l),true);return}let m=(n.get(c)??0)+(o.get(c)??0),y=I(a.get(c),p);a.set(c,y),y.taskCount<(m||y.taskCount)||C(c,y,true);}}function oe(t,r){t.command("analyze").description("Analyze your project and report rule violations and architecture risks").option("-p, --profile <name>","Configuration profile to run").option("--force","Ignore cached results and re-run all checks").option("--format <fmt>","Reporter format: console | json | sarif | html | ui").option("--compact","Use compact, ESLint-style output").option("-q, --quiet","Show summary counts only, suppress violation details").option("--no-recommendation","Suppress fix recommendations from output").option("--output <path>","Output path for UI reports (default: ngcompass-report.html)").option("--rule <id>","Run only one rule (useful for debugging or focused checks)").option("--mode <mode>","Performance mode: eco | balanced | turbo (default: balanced)","balanced").option("--max-workers <n>","Cap the number of worker threads (lower = less memory, e.g. --max-workers 2)").option("--skip-type-check","Skip rules that require the TypeScript type checker (fastest, lowest memory)").action(async e=>{let n=performance.now(),o=getReporter(F(e.format),{compact:!!e.compact,outputPath:e.output,quiet:!!e.quiet,noRecommendation:e.recommendation===false}),a=r,i=0;try{let u=await H(e,r,o);if(!u){i=1;return}let{config:s}=u,C=_(e,s);a=createRuntimeCache(s,E.cwd());let p=U(e.format,s.outputFormat);o=getReporter(p,{compact:!!e.compact,outputPath:e.output??s.outputPath,quiet:!!e.quiet,noRecommendation:e.recommendation===!1});let c=await K(s,e,a,o);if(!c){i=1;return}let g=await V(s,e,o);if(!g){i=1;return}let m=await Z(c,g,a,e,o,s,C.maxWorkers);if(!m){i=1;return}let y=p==="console"?E.stdout:E.stderr,l=new R(y),w=m.tasks.length+(m.skippedTasks?.length??0),v=G(e);l.start(T(v,0,w));let A=re(m,x=>l.writeLine(x),E.cwd()),h=await J(m,a,C,e,o,c,s,(x,fe)=>{l.update(T(v,x,fe));},A);if(l.stop(),!h){i=1;return}let de=performance.now()-n,O={scannedFiles:new Set([...m.tasks.map(x=>x.filePath),...(m.skippedTasks??[]).map(x=>x.filePath)]).size,discoveredFiles:c.length,totalFiles:h.stats.totalFiles,totalTasks:m.tasks.length+(m.skippedTasks?.length??0),cachedTasks:m.precomputedAnalysis?m.tasks.length:void 0,totalErrors:h.stats.totalErrors,totalWarnings:h.stats.totalWarnings,failOnSeverity:s.failOnSeverity,maxWarnings:s.maxWarnings,duration:de};p==="console"&&o.summary(O),o.parseErrors(h.parseErrors),o.report(h.results),p!=="console"&&(o.step("\u276F Writing report..."),o.summary(O)),m.precomputedAnalysis||await Q(h.results,a,e,o),B(s,h.stats)&&(i=1);}catch(u){o.error(q(u)),i=1;}finally{a&&a!==r&&await a.flush(),i!==0&&f(i);}});}function ne(t,r){t.command("config").description("Inspect and validate ngcompass configuration").command("health").description("Run semantic validation checks for the active configuration").option("-p, --profile <name>","Configuration profile to validate").action(async e=>{try{let n=await validateConfig({cwd:E.cwd(),cache:e.cache?r:void 0,profile:e.profile});await getConfigReporter().renderHealthReport(n.report),n.report.valid||f();}catch(n){d("Error",n),f();}});}var ie=["ast","config","results","all"],Be=new Set(ie);function se(t,r){let e=t.command("cache").description("Inspect and manage analysis cache data");e.command("clear").description("Clear cached data for one cache type or all cache types").option("-p, --profile <name>","Configuration profile used to resolve cache settings").option("--type <type>","Cache type to clear: ast | config | results | all","all").action(async n=>{var o;let a,i=(a=o=n.type,Be.has(a)?o:(d(`Invalid cache type: ${o}. Must be one of: ${ie.join(", ")}`),f())),u=getCacheReporter();E.stdout.write(k.dim(` \u203A Clearing cache...
`));try{let s=await z(r,{profile:n.profile,allowDisabled:!0});i==="all"?await s.clear():await s.clearType(i),u.renderClearResult(i);}catch(s){d("Error clearing cache",s),f();}}),e.command("info").description("Show cache status, size, and usage details").option("-p, --profile <name>","Configuration profile used to resolve cache settings").action(async n=>{let o=getCacheReporter();try{let a=await z(r,{profile:n.profile,allowDisabled:!0}),i=await a.getInfo();o.renderCacheInfo(i);}catch(a){d("Error getting cache info",a),f();}}),e.command("path").description("Print the resolved cache directory path").option("-p, --profile <name>","Configuration profile used to resolve cache settings").action(async n=>{let o=await z(r,{profile:n.profile,allowDisabled:true});E.stdout.write(`${o.getCachePath()}
`);});}async function z(t,r={}){let e=r.cwd??E.cwd();try{let n=await resolveConfig({profile:r.profile,cache:t,cwd:e});return !n.report.valid||!n.config?t:createRuntimeCache(n.config,e,{allowDisabled:r.allowDisabled})??t}catch(n){return d("Unable to resolve cache configuration; using default cache",n),t}}function ce(t){t.command("rules [ruleName]").description("Browse available rules or inspect details for a specific rule").option("--preset <name>","Filter by preset: recommended, strict, performance, reactivity, or all").action((r,e)=>{e.preset&&!isBuiltinPreset(e.preset)&&(d(`Unknown preset: "${e.preset}".`),process.stderr.write(k.dim(`Available presets: recommended, strict, all, performance, reactivity
`)),f());let n=getRuleListEntries(),o=getRulesReporter({preset:e.preset});if(r){let a=n.find(i=>i.name===r);if(!a){d(`Rule "${r}" not found.`),process.stderr.write(k.dim("Run `ngcompass rules` to list available rules.\n")),f();return}o.renderSingleRule(a);}else o.render(n);});}function pe(t,r){D(t),oe(t,r),ne(t,r),se(t,r),ce(t);}var ue=false,P=async(t,r)=>{if(!ue){if(ue=true,$(),t)try{let e=new Promise(n=>setTimeout(n,1e4).unref());await Promise.race([t.flush(),e]);}catch(e){d("[ngcompass] Cache flush failed during shutdown",e);}process.exit(r);}},me=(t,r,e)=>{d(`[ngcompass] ${r}`,e),P(t,1);},Je=async t=>{let{default:r}=await import('picocolors'),e=process.cwd();process.stdout.write(`
${r.dim(">")} ${r.dim(`ngcompass@${PACKAGE_VERSION}`)} ${r.dim(t)} ${r.dim(e)}
${r.dim(">")} ${r.dim("ngcompass")} ${r.dim("run")}
${r.bgCyan(r.white(r.bold(` ${t.toUpperCase()} `)))} ${r.cyan(PACKAGE_VERSION)} ${r.dim(e)}
`);};async function Qe(){let t=new Command;t.name("ngcompass").description("Static analysis and architecture insights for Angular codebases.").version(PACKAGE_VERSION,"-V, --version","Display ngcompass version").option("--debug","Enable detailed debug logs across all modules").addHelpText("after",`
Examples:

@@ -13,11 +20,3 @@ $ ngcompass init

$ ngcompass cache info
`).hook("preAction",async(e,o)=>{e.opts().debug&&enableDebug("debug","all");let a=o.opts();if(a.format!=="json"&&a.format!=="sarif"&&a.format!=="html"&&a.format!=="ui"){let{default:n}=await import('picocolors'),i=o.parent,l=i&&i.name()!=="ngcompass"?i.name():o.name(),p=process.cwd();process.stdout.write(`
${n.dim(">")} ${n.dim(`ngcompass@${PACKAGE_VERSION}`)} ${n.dim(l)} ${n.dim(p)}
${n.dim(">")} ${n.dim("ngcompass")} ${n.dim("run")}
${n.bgCyan(n.white(n.bold(` ${l.toUpperCase()} `)))} ${n.cyan(PACKAGE_VERSION)} ${n.dim(p)}
`);}});let r=createCacheContext();process.on("SIGINT",()=>{S(r,130);}),process.on("SIGTERM",()=>{S(r,143);}),process.on("uncaughtException",e=>{b(),console.error(`
[ngcompass] Unexpected error: ${e.message}`),S(r,1);}),process.on("unhandledRejection",e=>{b();let o=e instanceof Error?e.message:String(e);console.error(`
[ngcompass] Unhandled promise rejection: ${o}`),S(r,1);});try{if(registerAllBuiltinRules(),Ae(t,r),!process.argv.slice(2).length)return void t.outputHelp();await t.parseAsync(process.argv),await r.flush(),process.exit(0);}catch(e){b();let o=e instanceof Error?e.message:String(e);console.error(`[ngcompass] Fatal error: ${o}`),await S(r,1);}}cr().catch(t=>{b();let r=t instanceof Error?t.message:String(t);console.error(`[ngcompass] Fatal error: ${r}`),process.exit(1);});export{cr as run};//# sourceMappingURL=cli.js.map
`).hook("preAction",async(e,n)=>{let o;if(e.opts().debug&&enableDebug("debug","all"),(o=n.opts().format)!=="json"&&o!=="sarif"&&o!=="html"&&o!=="ui"){let a=n.parent,i=a&&a.name()!=="ngcompass"?a.name():n.name();await Je(i);}});let r=createCacheContext();process.on("SIGINT",()=>{P(r,130);}),process.on("SIGTERM",()=>{P(r,143);}),process.on("uncaughtException",e=>{me(r,"Unexpected error",e);}),process.on("unhandledRejection",e=>{me(r,"Unhandled promise rejection",e);});try{if(registerAllBuiltinRules(),pe(t,r),!process.argv.slice(2).length)return void t.outputHelp();await t.parseAsync(process.argv),await r.flush(),process.exit(0);}catch(e){d("[ngcompass] Fatal error",e),await P(r,1);}}Qe().catch(t=>{d("[ngcompass] Fatal error",t),$(),process.exit(1);});export{Qe as run};//# sourceMappingURL=cli.js.map
//# sourceMappingURL=cli.js.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/commands/exit.ts","../src/commands/init.ts","../src/spinner.ts","../src/commands/analyze.ts","../src/commands/config.ts","../src/commands/cache.ts","../src/commands/rules.ts","../src/commands/index.ts","../src/bin/ngcompass.ts"],"names":["exitWithError","code","process","stdout","isTTY","write","exit","registerInitCommand","program","_cache","command","description","option","cwd","action","options","result","initConfig","force","getConfigReporter","renderInitResult","success","alreadyExists","error","console","Error","message","String","FRAMES","Spinner","timer","frameIndex","stream","start","render","setInterval","pc","cyan","dim","update","writeLine","line","stop","clearInterval","frame","length","PERFORMANCE_MODE_PRESETS","eco","typeAwareConcurrency","typeAwareFileConcurrency","typeAwareChunkSize","typeAwareIsolation","typeAwareChunkStrategy","balanced","turbo","PERFORMANCE_MODES","Object","keys","TYPE_AWARE_ISOLATION_MODES","TYPE_AWARE_CHUNK_STRATEGIES","parsePositiveIntegerOption","value","optionName","undefined","parsed","Number","isInteger","normalizeReporterFormat","format","formatDuration","ms","Math","max","round","toFixed","pluralise","count","singular","toLocaleString","formatAnalysisProgressMessage","mode","completed","total","registerAnalyzeCommand","cache","addOption","Option","hideHelp","startTime","performance","now","reporter","getReporter","compact","outputPath","output","quiet","noRecommendation","recommendation","activeCache","exitCode","stats","preset","cliMaxWorkers","cliChunkSize","cliTypeAwareConcurrency","cliTypeAwareFileConcurrency","failOnSeverity","maxWarnings","configResult","loadConfigurationStep","config","performanceOptions","includes","join","maxWorkers","createRuntimeCache","reporterFormat","cliFormat","configFormat","outputFormat","files","discoverFilesStep","enabledRules","resolveRulesStep","plan","buildPlanStep","progressStream","stderr","spinner","totalChecks","tasks","skippedTasks","logFileProgress","syntaxExpected","Map","typeAwareExpected","task","fp","filePath","needsTypeChecker","needsProjectContext","set","get","syntaxDone","typeAwareDone","syntaxLinePrinted","Set","finalLinePrinted","accumulate","map","event","prev","next","taskCount","issueCount","errorCount","warningCount","duration","printFinalLine","acc","has","add","relativePath","path","relative","hasIssues","status","red","green","dur","typeAware","expected","syntaxAcc","totalExpected","analysis","runAnalysisStep","summary","scannedFiles","t","size","discoveredFiles","totalFiles","totalTasks","cachedTasks","precomputedAnalysis","totalErrors","totalWarnings","parseErrors","report","results","step","saveToCacheStep","flush","tStart","resolveConfig","profile","valid","issueLines","issues","issue","pathString","severity","toUpperCase","pluginList","plugins","configDir","loadPlugins","getGlobalRegistry","info","debug","scanResult","scan","rootDir","include","DEFAULT_INCLUDE_PATTERNS","exclude","ignorePatterns","tsConfigPath","parserOptions","project","tsconfigRootDir","resolve","respectGitignore","ok","data","effectiveConfig","rule","rules","extends","rulesResult","resolveRules","getEnabledRules","planResult","buildExecutionPlan","incremental","forceRerun","workerCount","overrides","onProgress","onFileProgress","configureRuleExecutor","executeBatchedNewEngineRules","isNewEngineRule","runAnalysis","skipTypeCheck","cacheEntries","taskId","push","setMany","registerConfigCommand","validateConfig","renderHealthReport","errorMessage","registerCacheCommand","cacheCmd","getCacheReporter","type","validTypes","resolveRuntimeCache","allowDisabled","clear","clearType","renderClearResult","err","getInfo","renderCacheInfo","getCachePath","fallbackCache","registerRulesCommand","ruleName","opts","isBuiltinPreset","entries","getRuleListEntries","getRulesReporter","find","e","name","renderSingleRule","registerCommands","restoreCursor","shutdownInProgress","gracefulShutdown","flushTimeout","Promise","setTimeout","unref","race","run","Command","version","PACKAGE_VERSION","addHelpText","hook","thisCommand","actionCommand","enableDebug","actionOpts","default","parent","commandName","bgCyan","white","bold","createCacheContext","on","reason","msg","registerAllBuiltinRules","argv","slice","outputHelp","parseAsync","catch"],"mappings":"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","file":"cli.js","sourcesContent":["export const exitWithError = (s = 1)=>{\n process.stdout.isTTY && process.stdout.write('\\x1B[?25h'), process.exit(s);\n};\n","import { getConfigReporter as r } from '@ngcompass/reporters';\nimport { initConfig as e } from '@ngcompass/config';\nimport { exitWithError as o } from './exit.js';\nexport function registerInitCommand(t, i) {\n t.command('init').description('Create a starter ngcompass configuration in the current project').option('-f, --force', 'Overwrite an existing configuration file').option('--cwd <path>', 'Project directory where the configuration will be created', process.cwd()).action(async (t)=>{\n try {\n let i = await e({\n cwd: t.cwd,\n force: t.force\n }), c = r();\n await c.renderInitResult(i), i.success || i.alreadyExists || o();\n } catch (r) {\n console.error(r instanceof Error ? r.message : String(r)), o();\n }\n });\n}\n","import t from 'picocolors';\nlet FRAMES = [\n '⠋',\n '⠙',\n '⠹',\n '⠸',\n '⠼',\n '⠴',\n '⠦',\n '⠧',\n '⠇',\n '⠏'\n];\nexport class Spinner {\n stream;\n timer = null;\n frameIndex = 0;\n message = '';\n isTTY;\n constructor(t){\n this.stream = t, this.isTTY = !!t.isTTY;\n }\n start(e) {\n (this.message = e, this.frameIndex = 0, this.isTTY) ? (this.stream.write('\\x1B[?25l'), this.render(), this.timer = setInterval(()=>this.render(), 80)) : this.stream.write(`${t.cyan('❯')} ${t.dim(e)}\\n`);\n }\n update(t) {\n this.message = t, this.isTTY && this.timer && this.render();\n }\n writeLine(t) {\n this.isTTY && this.timer ? (this.stream.write('\\r\\x1B[K'), this.stream.write(`${t}\\n`), this.render()) : this.stream.write(`${t}\\n`);\n }\n stop() {\n this.timer && (clearInterval(this.timer), this.timer = null), this.isTTY && (this.stream.write('\\r\\x1B[K'), this.stream.write('\\x1B[?25h'));\n }\n render() {\n let e = t.cyan(FRAMES[this.frameIndex % FRAMES.length]);\n this.frameIndex++, this.stream.write(`\\r\\x1B[K${e} ${t.dim(this.message)}`);\n }\n}\n","import { Option as e } from 'commander';\nimport r from 'node:path';\nimport t from 'picocolors';\nimport { DEFAULT_INCLUDE_PATTERNS as o } from '@ngcompass/common';\nimport { getReporter as n } from '@ngcompass/reporters';\nimport a from 'node:process';\nimport { createRuntimeCache as i } from '@ngcompass/cache';\nimport { exitWithError as s } from './exit.js';\nimport { Spinner as u } from '../spinner.js';\nimport { getGlobalRegistry as l, executeBatchedNewEngineRules as p, isNewEngineRule as c, resolveRules as d, getEnabledRules as m } from '@ngcompass/rules';\nimport { loadPlugins as f, resolveConfig as y } from '@ngcompass/config';\nimport { runAnalysis as g, configureRuleExecutor as w } from '@ngcompass/engine';\nimport { buildExecutionPlan as C } from '@ngcompass/planner';\nimport { scan as h } from '@ngcompass/scanner';\nlet PERFORMANCE_MODE_PRESETS = {\n eco: {\n typeAwareConcurrency: 1,\n typeAwareFileConcurrency: 1,\n typeAwareChunkSize: 100,\n typeAwareIsolation: 'auto',\n typeAwareChunkStrategy: 'dependency'\n },\n balanced: {\n typeAwareConcurrency: 2,\n typeAwareFileConcurrency: 2,\n typeAwareChunkSize: 300,\n typeAwareIsolation: 'auto',\n typeAwareChunkStrategy: 'simple'\n },\n turbo: {\n typeAwareConcurrency: 2,\n typeAwareFileConcurrency: 4,\n typeAwareChunkSize: 500,\n typeAwareIsolation: 'off',\n typeAwareChunkStrategy: 'simple'\n }\n}, PERFORMANCE_MODES = Object.keys(PERFORMANCE_MODE_PRESETS), TYPE_AWARE_ISOLATION_MODES = [\n 'auto',\n 'process',\n 'off'\n], TYPE_AWARE_CHUNK_STRATEGIES = [\n 'dependency',\n 'simple'\n];\nfunction parsePositiveIntegerOption(e, r) {\n if (void 0 === e) return;\n let t = Number(e);\n if (!Number.isInteger(t) || t < 1) throw Error(`${r} must be a positive integer.`);\n return t;\n}\nfunction normalizeReporterFormat(e) {\n return 'ui' === e ? 'html' : e ?? 'console';\n}\nfunction formatDuration(e) {\n return e < 1000 ? `${Math.max(0, Math.round(e))}ms` : `${(e / 1000).toFixed(1)}s`;\n}\nfunction pluralise(e, r) {\n return `${e.toLocaleString()} ${r}${1 === e ? '' : 's'}`;\n}\nfunction formatAnalysisProgressMessage(e, r, t) {\n return `Running analysis in ${e} mode: ${r.toLocaleString()}/${t.toLocaleString()} checks complete...`;\n}\nexport function registerAnalyzeCommand(o, l) {\n o.command('analyze').description('Analyze your project and report rule violations and architecture risks').option('-p, --profile <name>', 'Configuration profile to run').option('--force', 'Ignore cached results and re-run all checks').option('--format <fmt>', 'Reporter format: console | json | sarif | html | ui').option('--compact', 'Use compact, ESLint-style output').option('-q, --quiet', 'Show summary counts only, suppress violation details').option('--no-recommendation', 'Suppress fix recommendations from output').option('--output <path>', 'Output path for UI reports (default: ngcompass-report.html)').option('--rule <id>', 'Run only one rule (useful for debugging or focused checks)').option('--mode <mode>', 'Performance mode: eco | balanced | turbo (default: balanced)', 'balanced').option('--max-workers <n>', 'Cap the number of worker threads (lower = less memory, e.g. --max-workers 2)').addOption(new e('--type-aware-chunk-size <n>', 'Files per type-aware chunk').hideHelp()).addOption(new e('--type-aware-concurrency <n>', 'Concurrent type-aware chunks').hideHelp()).addOption(new e('--type-aware-file-concurrency <n>', 'Concurrent files per type-aware chunk').hideHelp()).addOption(new e('--type-aware-isolation <mode>', 'Type-aware isolation: auto | process | off').hideHelp()).addOption(new e('--type-aware-chunk-strategy <mode>', 'Type-aware chunk ordering: dependency | simple').hideHelp()).option('--skip-type-check', 'Skip rules that require the TypeScript type checker (fastest, lowest memory)').action(async (e)=>{\n let o = performance.now(), p = n(normalizeReporterFormat(e.format), {\n compact: !!e.compact,\n outputPath: e.output,\n quiet: !!e.quiet,\n noRecommendation: !1 === e.recommendation\n }), c = l, d = 0;\n try {\n var m;\n let s, f, y, g, w, C, h, k = await loadConfigurationStep(e, l, p);\n if (!k) {\n d = 1;\n return;\n }\n let { config: A } = k, E = (s = PERFORMANCE_MODE_PRESETS[function(e) {\n let r = e ?? 'balanced';\n if (!PERFORMANCE_MODES.includes(r)) throw Error(`Invalid performance mode \"${r}\". Expected one of: ${PERFORMANCE_MODES.join(', ')}.`);\n return r;\n }(e.mode)], f = parsePositiveIntegerOption(e.maxWorkers, '--max-workers'), y = parsePositiveIntegerOption(e.typeAwareChunkSize, '--type-aware-chunk-size'), g = parsePositiveIntegerOption(e.typeAwareConcurrency, '--type-aware-concurrency'), w = parsePositiveIntegerOption(e.typeAwareFileConcurrency, '--type-aware-file-concurrency'), {\n maxWorkers: f ?? A.maxWorkers,\n typeAwareChunkSize: y ?? s.typeAwareChunkSize,\n typeAwareConcurrency: g ?? s.typeAwareConcurrency,\n typeAwareFileConcurrency: w ?? s.typeAwareFileConcurrency,\n typeAwareIsolation: function(e) {\n if (void 0 !== e) {\n if (!TYPE_AWARE_ISOLATION_MODES.includes(e)) throw Error(`Invalid --type-aware-isolation \"${e}\". Expected one of: ${TYPE_AWARE_ISOLATION_MODES.join(', ')}.`);\n return e;\n }\n }(e.typeAwareIsolation) ?? s.typeAwareIsolation,\n typeAwareChunkStrategy: function(e) {\n if (void 0 !== e) {\n if (!TYPE_AWARE_CHUNK_STRATEGIES.includes(e)) throw Error(`Invalid --type-aware-chunk-strategy \"${e}\". Expected one of: ${TYPE_AWARE_CHUNK_STRATEGIES.join(', ')}.`);\n return e;\n }\n }(e.typeAwareChunkStrategy) ?? s.typeAwareChunkStrategy\n });\n c = i(A, a.cwd());\n let S = function(e, r) {\n if (e) return normalizeReporterFormat(e);\n switch(r){\n case 'json':\n return 'json';\n case 'sarif':\n return 'sarif';\n case 'html':\n return 'html';\n default:\n return 'console';\n }\n }(e.format, A.outputFormat);\n p = n(S, {\n compact: !!e.compact,\n outputPath: e.output ?? A.outputPath,\n quiet: !!e.quiet,\n noRecommendation: !1 === e.recommendation\n });\n let $ = await discoverFilesStep(A, e, c, p);\n if (!$) {\n d = 1;\n return;\n }\n let v = await resolveRulesStep(A, e, p);\n if (!v) {\n d = 1;\n return;\n }\n let P = await buildPlanStep($, v, c, e, p, A, E.maxWorkers);\n if (!P) {\n d = 1;\n return;\n }\n let R = 'console' === S ? a.stdout : a.stderr, F = new u(R), O = P.tasks.length + (P.skippedTasks?.length ?? 0), x = e.mode ?? 'balanced';\n F.start(formatAnalysisProgressMessage(x, 0, O));\n let b = function(e, o, n) {\n let a = new Map(), i = new Map();\n for (let r of e.tasks){\n let e = r.filePath;\n 'string' == typeof e && 0 !== e.length && (r.needsTypeChecker || r.needsProjectContext ? i.set(e, (i.get(e) ?? 0) + 1) : a.set(e, (a.get(e) ?? 0) + 1));\n }\n let s = new Map(), u = new Map(), l = new Set(), p = new Set(), c = (e, r)=>{\n let t = e.get(r.filePath), o = t ? {\n taskCount: t.taskCount + r.taskCount,\n issueCount: t.issueCount + r.issueCount,\n errorCount: t.errorCount + r.errorCount,\n warningCount: t.warningCount + r.warningCount,\n duration: t.duration + r.duration\n } : {\n taskCount: r.taskCount,\n issueCount: r.issueCount,\n errorCount: r.errorCount,\n warningCount: r.warningCount,\n duration: r.duration\n };\n return e.set(r.filePath, o), o;\n }, d = (e, a)=>{\n if (p.has(e)) return;\n p.add(e);\n let i = r.relative(n, e) || e, s = a.issueCount > 0, u = s ? t.red('❯') : t.green('❯'), l = s ? t.red(formatDuration(a.duration)) : t.green(formatDuration(a.duration));\n o(s ? `${u} ${t.red(i)} ${l} ${t.red(pluralise(a.issueCount, 'issue'))}` : `${u} ${t.dim(i)} ${l}`);\n };\n return (e)=>{\n let m = e.filePath;\n if (!p.has(m)) if (!1 === e.typeAware) {\n let u = c(s, e), f = a.get(m) ?? u.taskCount;\n if (u.taskCount < f) return;\n i.has(m) ? ((e, a)=>{\n if (l.has(e) || p.has(e)) return;\n l.add(e);\n let i = r.relative(n, e) || e, s = a.issueCount > 0, u = s ? t.red('❯') : t.green('❯'), c = s ? t.red(formatDuration(a.duration)) : t.green(formatDuration(a.duration));\n o(s ? `${u} ${t.red(i)} ${c} ${t.red(pluralise(a.issueCount, 'issue'))}` : `${u} ${t.dim(i)} ${c}`);\n })(m, u) : d(m, u);\n } else if (!0 === e.typeAware) {\n let r = c(u, e), t = i.get(m) ?? r.taskCount;\n if (r.taskCount < t) return;\n let o = s.get(m);\n d(m, o ? {\n taskCount: o.taskCount + r.taskCount,\n issueCount: o.issueCount + r.issueCount,\n errorCount: o.errorCount + r.errorCount,\n warningCount: o.warningCount + r.warningCount,\n duration: o.duration + r.duration\n } : r);\n } else {\n let r = (a.get(m) ?? 0) + (i.get(m) ?? 0), t = c(s, e);\n if (t.taskCount < (r || t.taskCount)) return;\n d(m, t);\n }\n };\n }(P, (e)=>F.writeLine(e), a.cwd()), T = await runAnalysisStep(P, c, E, e, p, $, A, (e, r)=>{\n F.update(formatAnalysisProgressMessage(x, e, r));\n }, b);\n if (F.stop(), !T) {\n d = 1;\n return;\n }\n let I = performance.now() - o, _ = {\n scannedFiles: new Set([\n ...P.tasks.map((e)=>e.filePath),\n ...(P.skippedTasks ?? []).map((e)=>e.filePath)\n ]).size,\n discoveredFiles: $.length,\n totalFiles: T.stats.totalFiles,\n totalTasks: P.tasks.length + (P.skippedTasks?.length ?? 0),\n cachedTasks: P.precomputedAnalysis ? P.tasks.length : void 0,\n totalErrors: T.stats.totalErrors,\n totalWarnings: T.stats.totalWarnings,\n failOnSeverity: A.failOnSeverity,\n maxWarnings: A.maxWarnings,\n duration: I\n };\n 'console' === S && p.summary(_), p.parseErrors(T.parseErrors), p.report(T.results), 'console' !== S && (p.step('❯ Writing report...'), p.summary(_)), P.precomputedAnalysis || await saveToCacheStep(T.results, c, e, p), m = T.stats, C = A.failOnSeverity ?? 'error', h = A.maxWarnings ?? 10, (m.totalErrors > 0 || 'warn' === C && m.totalWarnings > 0 || m.totalWarnings > h) && (d = 1);\n } catch (e) {\n p.error(e), d = 1;\n } finally{\n c && c !== l && await c.flush(), 0 !== d && s(d);\n }\n });\n}\nasync function loadConfigurationStep(e, r, t) {\n let o = performance.now();\n t.step('❯ Loading configuration...');\n let n = await y({\n profile: e.profile,\n cache: r,\n cwd: a.cwd()\n });\n if (!n.report.valid) {\n let e = n.report.issues.map((e)=>{\n let r = e.path?.join('.') || 'root';\n return `[${e.severity.toUpperCase()}] ${r}: ${e.message}`;\n });\n return t.error(Error([\n 'Configuration validation failed',\n ...e\n ].join('\\n'))), null;\n }\n if (!n.config) return t.error(Error('No configuration found')), null;\n let i = n.config.plugins;\n if (i && i.length > 0) {\n t.step(`❯ Loading ${i.length} plugin(s)...`);\n let e = a.cwd();\n await f(i, e, l()), t.info(`Loaded ${i.length} plugin(s)`);\n }\n return t.debug(`Config resolve: ${(performance.now() - o).toFixed(2)}ms`), {\n config: n.config\n };\n}\nasync function discoverFilesStep(e, t, n, i) {\n let s = performance.now();\n i.step('❯ Discovering files...');\n let u = await h({\n rootDir: a.cwd(),\n include: e.include ?? [\n ...o\n ],\n exclude: e.exclude ?? [],\n ignorePatterns: e.ignorePatterns,\n tsConfigPath: function(e, t) {\n if (!e?.project) return;\n let o = e.tsconfigRootDir ? r.resolve(t, e.tsconfigRootDir) : t;\n return r.resolve(o, e.project);\n }(e.parserOptions, a.cwd()),\n respectGitignore: !0,\n debug: t.debug,\n cache: n\n });\n return u.ok ? (i.info(`❯ Found ${u.data.files.length} files in ${(performance.now() - s).toFixed(0)}ms`), i.debug(`File discovery: ${(performance.now() - s).toFixed(2)}ms`), u.data.files) : (i.error(Error(`File discovery failed: ${u.error.message}`)), null);\n}\nasync function resolveRulesStep(e, r, t) {\n let o = performance.now();\n t.step('❯ Loading rules...');\n let n = e;\n r.rule && (t.info(`Filtering analysis to single rule: ${r.rule}`), n = {\n ...e,\n rules: {\n [r.rule]: 'error'\n },\n extends: []\n });\n let a = await d(n);\n if (!a.ok) return t.error(Error(`Rule resolution failed: ${a.error.message}`)), null;\n let i = m(a.data.rules);\n return t.info(`❯ Loaded ${i.size} active rules in ${(performance.now() - o).toFixed(0)}ms`), t.debug(`Rule resolution: ${(performance.now() - o).toFixed(2)}ms`), i;\n}\nasync function buildPlanStep(e, r, t, o, n, i, s) {\n let u = performance.now();\n n.step('❯ Planning analysis...');\n let l = await C({\n files: e,\n rules: r,\n rootDir: a.cwd(),\n cache: t,\n debug: o.debug,\n incremental: o.force ? {\n forceRerun: !0\n } : void 0,\n workerCount: s,\n overrides: i.overrides\n });\n return l.ok ? (l.data.precomputedAnalysis ? n.info('❯ Reused cached analysis plan') : n.info(`❯ Prepared ${l.data.tasks.length.toLocaleString()} checks in ${(performance.now() - u).toFixed(0)}ms`), n.debug(`Plan build: ${(performance.now() - u).toFixed(2)}ms`), l.data) : (n.error(Error(`Execution plan building failed: ${l.error.message}`)), null);\n}\nasync function runAnalysisStep(e, r, t, o, n, i, s, u, l) {\n let d = performance.now();\n w(p, c);\n let m = await g(e, {\n rootDir: a.cwd(),\n cache: r,\n debug: o.debug,\n files: i,\n maxWorkers: t.maxWorkers,\n typeAwareChunkSize: t.typeAwareChunkSize,\n typeAwareConcurrency: t.typeAwareConcurrency,\n typeAwareFileConcurrency: t.typeAwareFileConcurrency,\n typeAwareIsolation: t.typeAwareIsolation,\n typeAwareChunkStrategy: t.typeAwareChunkStrategy,\n skipTypeCheck: o.skipTypeCheck,\n parserOptions: s?.parserOptions,\n onProgress: u,\n onFileProgress: l\n });\n return m.ok ? (n.debug(`Execution: ${(performance.now() - d).toFixed(2)}ms`), m.data) : (n.error(Error(`Analysis failed: ${m.error.message}`)), null);\n}\nasync function saveToCacheStep(e, r, t, o) {\n if (!r) return;\n let n = performance.now(), a = [];\n for (let r of e)r.taskId && a.push([\n r.taskId,\n r\n ]);\n a.length > 0 && (await r.results.setMany(a), t.debug && o.debug(`Saved ${a.length} results to cache (${(performance.now() - n).toFixed(2)}ms)`));\n}\n","import { getConfigReporter as o } from '@ngcompass/reporters';\nimport { validateConfig as r } from '@ngcompass/config';\nimport { exitWithError as e } from './exit.js';\nexport function registerConfigCommand(i, t) {\n i.command('config').description('Inspect and validate ngcompass configuration').command('health').description('Run semantic validation checks for the active configuration').option('-p, --profile <name>', 'Configuration profile to validate').action(async (i)=>{\n try {\n let a = await r({\n cache: i.cache ? t : void 0,\n profile: i.profile\n }), n = o();\n await n.renderHealthReport(a.report), a.report.valid || e();\n } catch (r) {\n let o = r instanceof Error ? r.message : String(r);\n console.error(`Error: ${o}`), e();\n }\n });\n}\n","import { createRuntimeCache as e } from '@ngcompass/cache';\nimport { getCacheReporter as o } from '@ngcompass/reporters';\nimport { resolveConfig as a } from '@ngcompass/config';\nimport r from 'picocolors';\nimport t from 'node:process';\nimport { exitWithError as i } from './exit.js';\nexport function registerCacheCommand(e, a) {\n let c = e.command('cache').description('Inspect and manage analysis cache data');\n c.command('clear').description('Clear cached data for one cache type or all cache types').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').option('--type <type>', 'Cache type to clear: ast | config | results | all', 'all').action(async (e)=>{\n let c = o();\n t.stdout.write(r.dim(' › Clearing cache...\\n'));\n let l = e.type, n = [\n 'ast',\n 'config',\n 'results',\n 'all'\n ];\n n.includes(l) || (console.error(r.red(`Invalid cache type: ${l}. Must be one of: ${n.join(', ')}`)), i());\n try {\n let o = await resolveRuntimeCache(a, {\n profile: e.profile,\n allowDisabled: !0\n });\n 'all' === l ? await o.clear() : await o.clearType(l), c.renderClearResult(l);\n } catch (e) {\n console.error(r.red('Error clearing cache:'), e), i();\n }\n }), c.command('info').description('Show cache status, size, and usage details').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').action(async (e)=>{\n let t = o();\n try {\n let o = await resolveRuntimeCache(a, {\n profile: e.profile,\n allowDisabled: !0\n }), r = await o.getInfo();\n t.renderCacheInfo(r);\n } catch (e) {\n console.error(r.red('Error getting cache info:'), e), i();\n }\n }), c.command('path').description('Print the resolved cache directory path').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').action(async (e)=>{\n let o = await resolveRuntimeCache(a, {\n profile: e.profile,\n allowDisabled: !0\n });\n t.stdout.write(`${o.getCachePath()}\\n`);\n });\n}\nasync function resolveRuntimeCache(o, r = {}) {\n let i = r.cwd ?? t.cwd();\n try {\n let t = await a({\n profile: r.profile,\n cache: o,\n cwd: i\n });\n if (!t.report.valid || !t.config) return o;\n return e(t.config, i, {\n allowDisabled: r.allowDisabled\n }) ?? o;\n } catch {\n return o;\n }\n}\n","import { getRulesReporter as e } from '@ngcompass/reporters';\nimport { getRuleListEntries as r, isBuiltinPreset as o } from '@ngcompass/rules';\nimport s from 'picocolors';\nimport { exitWithError as t } from './exit.js';\nexport function registerRulesCommand(i) {\n i.command('rules [ruleName]').description('Browse available rules or inspect details for a specific rule').option('--preset <name>', 'Filter by preset: recommended, strict, performance, reactivity, or all').action((i, l)=>{\n l.preset && !o(l.preset) && (console.error(s.red(`Unknown preset: \"${l.preset}\".`)), console.error(s.dim('Available presets: recommended, strict, all, performance, reactivity')), t());\n let n = r(), m = e({\n preset: l.preset\n });\n if (i) {\n let e = n.find((e)=>e.name === i);\n if (!e) {\n console.error(s.red(`Rule \"${i}\" not found.`)), console.error(s.dim('Run `ngcompass rules` to list available rules.')), t();\n return;\n }\n m.renderSingleRule(e);\n } else m.render(n);\n });\n}\n","import { registerInitCommand as o } from './init.js';\nimport { registerAnalyzeCommand as r } from './analyze.js';\nimport { registerConfigCommand as m } from './config.js';\nimport { registerCacheCommand as i } from './cache.js';\nimport { registerRulesCommand as t } from './rules.js';\nexport function registerCommands(s, f) {\n o(s, f), r(s, f), m(s, f), i(s, f), t(s);\n}\n","import { Command as r } from 'commander';\nimport { registerCommands as o } from '../commands/index.js';\nimport { enableDebug as e, PACKAGE_VERSION as s } from '@ngcompass/common';\nimport { createCacheContext as n } from '@ngcompass/cache';\nimport { registerAllBuiltinRules as t } from '@ngcompass/rules';\nlet restoreCursor = ()=>{\n process.stdout.isTTY && process.stdout.write('\\x1B[?25h');\n}, shutdownInProgress = !1, gracefulShutdown = async (r, o)=>{\n if (!shutdownInProgress) {\n if (shutdownInProgress = !0, restoreCursor(), r) try {\n let o = new Promise((r)=>setTimeout(r, 10_000).unref());\n await Promise.race([\n r.flush(),\n o\n ]);\n } catch {}\n process.exit(o);\n }\n};\nexport async function run() {\n let a = new r();\n a.name('ngcompass').description('Static analysis and architecture insights for Angular codebases.').version(s, '-V, --version', 'Display ngcompass version').option('--debug', 'Enable detailed debug logs across all modules').addHelpText('after', '\\nExamples:\\n $ ngcompass init\\n $ ngcompass analyze --profile strict\\n $ ngcompass cache info\\n').hook('preAction', async (r, o)=>{\n r.opts().debug && e('debug', 'all');\n let n = o.opts();\n if ('json' !== n.format && 'sarif' !== n.format && 'html' !== n.format && 'ui' !== n.format) {\n let { default: r } = await import('picocolors'), e = o.parent, n = e && 'ngcompass' !== e.name() ? e.name() : o.name(), t = process.cwd();\n process.stdout.write(`\\n${r.dim('>')} ${r.dim(`ngcompass@${s}`)} ${r.dim(n)} ${r.dim(t)}\\n${r.dim('>')} ${r.dim('ngcompass')} ${r.dim('run')}\\n\\n ${r.bgCyan(r.white(r.bold(` ${n.toUpperCase()} `)))} ${r.cyan(s)} ${r.dim(t)}\\n\\n`);\n }\n });\n let c = n();\n process.on('SIGINT', ()=>void gracefulShutdown(c, 130)), process.on('SIGTERM', ()=>void gracefulShutdown(c, 143)), process.on('uncaughtException', (r)=>{\n restoreCursor(), console.error(`\\n[ngcompass] Unexpected error: ${r.message}`), gracefulShutdown(c, 1);\n }), process.on('unhandledRejection', (r)=>{\n restoreCursor();\n let o = r instanceof Error ? r.message : String(r);\n console.error(`\\n[ngcompass] Unhandled promise rejection: ${o}`), gracefulShutdown(c, 1);\n });\n try {\n if (t(), o(a, c), !process.argv.slice(2).length) return void a.outputHelp();\n await a.parseAsync(process.argv), await c.flush(), process.exit(0);\n } catch (o) {\n restoreCursor();\n let r = o instanceof Error ? o.message : String(o);\n console.error(`[ngcompass] Fatal error: ${r}`), await gracefulShutdown(c, 1);\n }\n}\nrun().catch((r)=>{\n restoreCursor();\n let o = r instanceof Error ? r.message : String(r);\n console.error(`[ngcompass] Fatal error: ${o}`), process.exit(1);\n});\n"]}
{"version":3,"sources":["../src/commands/exit.ts","../src/commands/init.ts","../src/spinner.ts","../src/commands/analyze/options.ts","../src/commands/analyze/resolve.ts","../src/commands/analyze/steps.ts","../src/commands/analyze/progress.ts","../src/commands/analyze/index.ts","../src/commands/config.ts","../src/commands/cache.ts","../src/commands/rules.ts","../src/commands/index.ts","../src/bin/ngcompass.ts"],"names":["restoreCursor","process","stdout","isTTY","write","exitWithError","code","exit","printError","message","detail","tail","undefined","Error","String","console","error","pc","red","registerInitCommand","program","_cache","command","description","option","cwd","action","options","result","initConfig","force","getConfigReporter","renderInitResult","success","alreadyExists","FRAMES","Spinner","timer","frameIndex","stream","start","render","setInterval","cyan","dim","update","writeLine","line","stop","clearInterval","frame","length","PERFORMANCE_MODE_PRESETS","eco","typeAwareConcurrency","typeAwareFileConcurrency","typeAwareChunkSize","typeAwareIsolation","typeAwareChunkStrategy","balanced","turbo","PERFORMANCE_MODES","PERFORMANCE_MODE_VALUES","Set","parsePositiveIntegerOption","value","optionName","parsed","Number","isInteger","resolvePerformanceOptions","config","preset","mode","has","join","maxWorkers","normalizeReporterFormat","format","resolveReporterFormat","cliFormat","configFormat","shouldFailAnalysis","stats","failOnSeverity","maxWarnings","totalErrors","totalWarnings","resolveParserProjectPath","parserOptions","project","rootDir","tsconfigRootDir","path","resolve","toError","getAnalyzeMode","formatAnalysisProgressMessage","completed","total","toLocaleString","loadConfigurationStep","cache","reporter","tStart","performance","now","step","configResult","resolveConfig","profile","report","valid","issueLines","issues","map","issue","pathString","severity","toUpperCase","pluginList","plugins","configDir","loadPlugins","getGlobalRegistry","info","debug","toFixed","discoverFilesStep","scanResult","scan","include","DEFAULT_INCLUDE_PATTERNS","exclude","ignorePatterns","tsConfigPath","respectGitignore","ok","data","files","resolveRulesStep","effectiveConfig","rule","rules","extends","rulesResult","resolveRules","enabledRules","getEnabledRules","size","buildPlanStep","planResult","buildExecutionPlan","incremental","forceRerun","workerCount","overrides","precomputedAnalysis","tasks","runAnalysisStep","plan","performanceOptions","onProgress","onFileProgress","configureRuleExecutor","executeBatchedNewEngineRules","isNewEngineRule","runAnalysis","skipTypeCheck","saveToCacheStep","results","cacheEntries","taskId","push","setMany","ZERO_ACC","taskCount","issueCount","errorCount","warningCount","duration","buildExpectedMap","typeAware","Map","task","fp","filePath","needsTypeChecker","needsProjectContext","set","get","mergeAcc","prev","event","base","createFileProgressLogger","syntaxExpected","typeAwareExpected","syntaxDone","typeAwareDone","syntaxPrinted","finalPrinted","print","acc","isFinal","guard","add","relativePath","hasIssues","status","green","dur","formatDuration","pluralise","relative","expected","a","totalExpected","registerAnalyzeCommand","startTime","getReporter","compact","outputPath","output","quiet","noRecommendation","recommendation","activeCache","exitCode","createRuntimeCache","reporterFormat","outputFormat","progressStream","stderr","spinner","totalChecks","skippedTasks","logFileProgress","analysis","summary","scannedFiles","t","discoveredFiles","totalFiles","totalTasks","cachedTasks","parseErrors","flush","registerConfigCommand","validateConfig","renderHealthReport","CACHE_CLEAR_TYPES","CACHE_CLEAR_TYPE_VALUES","registerCacheCommand","cacheCmd","type","getCacheReporter","resolveRuntimeCache","allowDisabled","clear","clearType","renderClearResult","err","getInfo","renderCacheInfo","getCachePath","fallbackCache","registerRulesCommand","ruleName","opts","isBuiltinPreset","entries","getRuleListEntries","getRulesReporter","find","e","name","renderSingleRule","registerCommands","shutdownInProgress","gracefulShutdown","flushTimeout","Promise","setTimeout","unref","race","handleFatalAsyncFailure","label","reason","printRunBanner","commandName","default","PACKAGE_VERSION","bgCyan","white","bold","run","Command","version","addHelpText","hook","thisCommand","actionCommand","enableDebug","parent","createCacheContext","on","registerAllBuiltinRules","argv","slice","outputHelp","parseAsync","catch"],"mappings":"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","file":"cli.js","sourcesContent":["import r from 'picocolors';\nexport const restoreCursor = ()=>{\n process.stdout.isTTY && process.stdout.write('\\x1B[?25h');\n};\nexport const exitWithError = (r = 1)=>{\n restoreCursor(), process.exit(r);\n};\nexport const printError = (o, s)=>{\n let t = void 0 === s ? '' : `: ${s instanceof Error ? s.message : String(s)}`;\n console.error(`${r.red(o)}${t}`);\n};\n","import { getConfigReporter as r } from '@ngcompass/reporters';\nimport { initConfig as t } from '@ngcompass/config';\nimport { exitWithError as i, printError as o } from './exit.js';\nexport function registerInitCommand(e, n) {\n e.command('init').description('Create a starter ngcompass configuration in the current project').option('-f, --force', 'Overwrite an existing configuration file').option('--cwd <path>', 'Project directory where the configuration will be created', process.cwd()).action(async (e)=>{\n try {\n let o = await t({\n cwd: e.cwd,\n force: e.force\n }), n = r();\n await n.renderInitResult(o), o.success || o.alreadyExists || i();\n } catch (r) {\n o('Error initializing configuration', r), i();\n }\n });\n}\n","import t from 'picocolors';\nlet FRAMES = [\n '⠋',\n '⠙',\n '⠹',\n '⠸',\n '⠼',\n '⠴',\n '⠦',\n '⠧',\n '⠇',\n '⠏'\n];\nexport class Spinner {\n stream;\n timer = null;\n frameIndex = 0;\n message = '';\n isTTY;\n constructor(t){\n this.stream = t, this.isTTY = !!t.isTTY;\n }\n start(e) {\n (this.message = e, this.frameIndex = 0, this.isTTY) ? (this.stream.write('\\x1B[?25l'), this.render(), this.timer = setInterval(()=>this.render(), 80)) : this.stream.write(`${t.cyan('❯')} ${t.dim(e)}\\n`);\n }\n update(t) {\n this.message = t, this.isTTY && this.timer && this.render();\n }\n writeLine(t) {\n this.isTTY && this.timer ? (this.stream.write('\\r\\x1B[K'), this.stream.write(`${t}\\n`), this.render()) : this.stream.write(`${t}\\n`);\n }\n stop() {\n this.timer && (clearInterval(this.timer), this.timer = null), this.isTTY && (this.stream.write('\\r\\x1B[K'), this.stream.write('\\x1B[?25h'));\n }\n render() {\n let e = t.cyan(FRAMES[this.frameIndex % FRAMES.length]);\n this.frameIndex++, this.stream.write(`\\r\\x1B[K${e} ${t.dim(this.message)}`);\n }\n}\n","let PERFORMANCE_MODE_PRESETS = {\n eco: {\n typeAwareConcurrency: 1,\n typeAwareFileConcurrency: 1,\n typeAwareChunkSize: 100,\n typeAwareIsolation: 'auto',\n typeAwareChunkStrategy: 'dependency'\n },\n balanced: {\n typeAwareConcurrency: 1,\n typeAwareFileConcurrency: 1,\n typeAwareChunkSize: 150,\n typeAwareIsolation: 'auto',\n typeAwareChunkStrategy: 'dependency'\n },\n turbo: {\n typeAwareConcurrency: 2,\n typeAwareFileConcurrency: 4,\n typeAwareChunkSize: 500,\n typeAwareIsolation: 'off',\n typeAwareChunkStrategy: 'simple'\n }\n}, PERFORMANCE_MODES = [\n 'eco',\n 'balanced',\n 'turbo'\n], PERFORMANCE_MODE_VALUES = new Set(PERFORMANCE_MODES);\nexport function parsePositiveIntegerOption(e, r) {\n if (void 0 === e) return;\n let t = Number(e);\n if (!Number.isInteger(t) || t < 1) throw Error(`${r} must be a positive integer.`);\n return t;\n}\nexport function resolvePerformanceOptions(e, r) {\n let t = PERFORMANCE_MODE_PRESETS[function(e) {\n let r = e ?? 'balanced';\n if (!PERFORMANCE_MODE_VALUES.has(r)) throw Error(`Invalid performance mode \"${r}\". Expected one of: ${PERFORMANCE_MODES.join(', ')}.`);\n return r;\n }(e.mode)];\n return {\n maxWorkers: parsePositiveIntegerOption(e.maxWorkers, '--max-workers') ?? r.maxWorkers,\n typeAwareChunkSize: t.typeAwareChunkSize,\n typeAwareConcurrency: t.typeAwareConcurrency,\n typeAwareFileConcurrency: t.typeAwareFileConcurrency,\n typeAwareIsolation: t.typeAwareIsolation,\n typeAwareChunkStrategy: t.typeAwareChunkStrategy\n };\n}\n","import r from 'node:path';\nexport function normalizeReporterFormat(r) {\n return 'ui' === r ? 'html' : r ?? 'console';\n}\nexport function resolveReporterFormat(r, e) {\n if (r) return normalizeReporterFormat(r);\n switch(e){\n case 'json':\n return 'json';\n case 'sarif':\n return 'sarif';\n case 'html':\n return 'html';\n default:\n return 'console';\n }\n}\nexport function shouldFailAnalysis(r, e) {\n let t = r.failOnSeverity ?? 'error', o = r.maxWarnings ?? 10;\n return e.totalErrors > 0 || 'warn' === t && e.totalWarnings > 0 || e.totalWarnings > o;\n}\nexport function resolveParserProjectPath(e, t) {\n if (!e?.project) return;\n let o = e.tsconfigRootDir ? r.resolve(t, e.tsconfigRootDir) : t;\n return r.resolve(o, e.project);\n}\nexport function toError(r) {\n return r instanceof Error ? r : Error(String(r));\n}\nexport function getAnalyzeMode(r) {\n return r.mode ?? 'balanced';\n}\nexport function formatAnalysisProgressMessage(r, e, t) {\n return `Running analysis in ${r} mode: ${e.toLocaleString()}/${t.toLocaleString()} checks complete...`;\n}\n","import e from 'node:process';\nimport { DEFAULT_INCLUDE_PATTERNS as r } from '@ngcompass/common';\nimport { loadPlugins as o, resolveConfig as n } from '@ngcompass/config';\nimport { configureRuleExecutor as t, runAnalysis as i } from '@ngcompass/engine';\nimport { buildExecutionPlan as a } from '@ngcompass/planner';\nimport { scan as s } from '@ngcompass/scanner';\nimport { executeBatchedNewEngineRules as l, getEnabledRules as p, getGlobalRegistry as c, isNewEngineRule as u, resolveRules as d } from '@ngcompass/rules';\nimport { resolveParserProjectPath as f } from './resolve.js';\nexport async function loadConfigurationStep(r, t, i) {\n let a = performance.now();\n i.step('❯ Loading configuration...');\n let s = await n({\n profile: r.profile,\n cache: t,\n cwd: e.cwd()\n });\n if (!s.report.valid) {\n let e = s.report.issues.map((e)=>{\n let r = e.path?.join('.') || 'root';\n return `[${e.severity.toUpperCase()}] ${r}: ${e.message}`;\n });\n return i.error(Error([\n 'Configuration validation failed',\n ...e\n ].join('\\n'))), null;\n }\n if (!s.config) return i.error(Error('No configuration found')), null;\n let l = s.config.plugins;\n if (l && l.length > 0) {\n i.step(`❯ Loading ${l.length} plugin(s)...`);\n let r = e.cwd();\n await o(l, r, c()), i.info(`Loaded ${l.length} plugin(s)`);\n }\n return i.debug(`Config resolve: ${(performance.now() - a).toFixed(2)}ms`), {\n config: s.config\n };\n}\nexport async function discoverFilesStep(o, n, t, i) {\n let a = performance.now();\n i.step('❯ Discovering files...');\n let l = await s({\n rootDir: e.cwd(),\n include: o.include ?? [\n ...r\n ],\n exclude: o.exclude ?? [],\n ignorePatterns: o.ignorePatterns,\n tsConfigPath: f(o.parserOptions, e.cwd()),\n respectGitignore: !0,\n debug: n.debug,\n cache: t\n });\n return l.ok ? (i.info(`❯ Found ${l.data.files.length} files in ${(performance.now() - a).toFixed(0)}ms`), i.debug(`File discovery: ${(performance.now() - a).toFixed(2)}ms`), l.data.files) : (i.error(Error(`File discovery failed: ${l.error.message}`)), null);\n}\nexport async function resolveRulesStep(r, o, n) {\n let t = performance.now();\n n.step('❯ Loading rules...');\n let i = r;\n o.rule && (n.info(`Filtering analysis to single rule: ${o.rule}`), i = {\n ...r,\n rules: {\n [o.rule]: 'error'\n },\n extends: []\n });\n let a = await d(i, e.cwd());\n if (!a.ok) return n.error(Error(`Rule resolution failed: ${a.error.message}`)), null;\n let s = p(a.data.rules);\n return n.info(`❯ Loaded ${s.size} active rules in ${(performance.now() - t).toFixed(0)}ms`), n.debug(`Rule resolution: ${(performance.now() - t).toFixed(2)}ms`), s;\n}\nexport async function buildPlanStep(r, o, n, t, i, s, l) {\n let p = performance.now();\n i.step('❯ Planning analysis...');\n let c = await a({\n files: r,\n rules: o,\n rootDir: e.cwd(),\n cache: n,\n debug: t.debug,\n incremental: t.force ? {\n forceRerun: !0\n } : void 0,\n workerCount: l,\n overrides: s.overrides\n });\n return c.ok ? (c.data.precomputedAnalysis ? i.info('❯ Reused cached analysis plan') : i.info(`❯ Prepared ${c.data.tasks.length.toLocaleString()} checks in ${(performance.now() - p).toFixed(0)}ms`), i.debug(`Plan build: ${(performance.now() - p).toFixed(2)}ms`), c.data) : (i.error(Error(`Execution plan building failed: ${c.error.message}`)), null);\n}\nexport async function runAnalysisStep(r, o, n, a, s, p, c, d, f) {\n let g = performance.now();\n t(l, u);\n let m = await i(r, {\n rootDir: e.cwd(),\n cache: o,\n debug: a.debug,\n files: p,\n maxWorkers: n.maxWorkers,\n typeAwareChunkSize: n.typeAwareChunkSize,\n typeAwareConcurrency: n.typeAwareConcurrency,\n typeAwareFileConcurrency: n.typeAwareFileConcurrency,\n typeAwareIsolation: n.typeAwareIsolation,\n typeAwareChunkStrategy: n.typeAwareChunkStrategy,\n skipTypeCheck: a.skipTypeCheck,\n parserOptions: c?.parserOptions,\n onProgress: d,\n onFileProgress: f\n });\n return m.ok ? (s.debug(`Execution: ${(performance.now() - g).toFixed(2)}ms`), m.data) : (s.error(Error(`Analysis failed: ${m.error.message}`)), null);\n}\nexport async function saveToCacheStep(e, r, o, n) {\n if (!r) return;\n let t = performance.now(), i = [];\n for (let r of e)r.taskId && i.push([\n r.taskId,\n r\n ]);\n i.length > 0 && (await r.results.setMany(i), o.debug && n.debug(`Saved ${i.length} results to cache (${(performance.now() - t).toFixed(2)}ms)`));\n}\n","import t from 'node:path';\nimport e from 'picocolors';\nimport { formatDuration as n, pluralise as r } from '@ngcompass/common';\nlet ZERO_ACC = {\n taskCount: 0,\n issueCount: 0,\n errorCount: 0,\n warningCount: 0,\n duration: 0\n};\nfunction buildExpectedMap(t, e) {\n let n = new Map();\n for (let r of t.tasks){\n let t = r.filePath;\n 'string' == typeof t && 0 !== t.length && (r.needsTypeChecker || r.needsProjectContext) === e && n.set(t, (n.get(t) ?? 0) + 1);\n }\n return n;\n}\nfunction mergeAcc(t, e) {\n let n = t ?? ZERO_ACC;\n return {\n taskCount: n.taskCount + e.taskCount,\n issueCount: n.issueCount + e.issueCount,\n errorCount: n.errorCount + e.errorCount,\n warningCount: n.warningCount + e.warningCount,\n duration: n.duration + e.duration\n };\n}\nexport function createFileProgressLogger(o, u, s) {\n let i = buildExpectedMap(o, !1), a = buildExpectedMap(o, !0), C = new Map(), g = new Map(), d = new Set(), l = new Set(), c = (o, i, a)=>{\n if (l.has(o)) return;\n let C = a ? l : d;\n C.has(o) || (C.add(o), u(function(t, o) {\n let u = o.issueCount > 0, s = u ? e.red('❯') : e.green('❯'), i = u ? e.red(n(o.duration)) : e.green(n(o.duration));\n if (u) {\n let n = `${o.issueCount.toLocaleString()} ${r(o.issueCount, 'issue')}`;\n return `${s} ${e.red(t)} ${i} ${e.red(n)}`;\n }\n return `${s} ${e.dim(t)} ${i}`;\n }(t.relative(s, o) || o, i)));\n };\n return (t)=>{\n let e = t.filePath;\n if (l.has(e)) return;\n if (!1 === t.typeAware) {\n let n = mergeAcc(C.get(e), t);\n C.set(e, n);\n let r = i.get(e) ?? n.taskCount;\n if (n.taskCount < r) return;\n c(e, n, !a.has(e));\n return;\n }\n if (!0 === t.typeAware) {\n var n;\n let r = mergeAcc(g.get(e), t);\n g.set(e, r);\n let o = a.get(e) ?? r.taskCount;\n if (r.taskCount < o) return;\n c(e, (n = C.get(e), n ? {\n taskCount: n.taskCount + r.taskCount,\n issueCount: n.issueCount + r.issueCount,\n errorCount: n.errorCount + r.errorCount,\n warningCount: n.warningCount + r.warningCount,\n duration: n.duration + r.duration\n } : r), !0);\n return;\n }\n let r = (i.get(e) ?? 0) + (a.get(e) ?? 0), o = mergeAcc(C.get(e), t);\n C.set(e, o), o.taskCount < (r || o.taskCount) || c(e, o, !0);\n };\n}\n","import t from 'node:process';\nimport { createRuntimeCache as e } from '@ngcompass/cache';\nimport { getReporter as o } from '@ngcompass/reporters';\nimport { Spinner as r } from '../../spinner.js';\nimport { exitWithError as s } from '../exit.js';\nimport { resolvePerformanceOptions as a } from './options.js';\nimport { formatAnalysisProgressMessage as n, getAnalyzeMode as i, normalizeReporterFormat as p, resolveReporterFormat as m, shouldFailAnalysis as l, toError as c } from './resolve.js';\nimport { buildPlanStep as u, discoverFilesStep as f, loadConfigurationStep as d, resolveRulesStep as h, runAnalysisStep as k, saveToCacheStep as g } from './steps.js';\nimport { createFileProgressLogger as y } from './progress.js';\nexport function registerAnalyzeCommand(w, j) {\n w.command('analyze').description('Analyze your project and report rule violations and architecture risks').option('-p, --profile <name>', 'Configuration profile to run').option('--force', 'Ignore cached results and re-run all checks').option('--format <fmt>', 'Reporter format: console | json | sarif | html | ui').option('--compact', 'Use compact, ESLint-style output').option('-q, --quiet', 'Show summary counts only, suppress violation details').option('--no-recommendation', 'Suppress fix recommendations from output').option('--output <path>', 'Output path for UI reports (default: ngcompass-report.html)').option('--rule <id>', 'Run only one rule (useful for debugging or focused checks)').option('--mode <mode>', 'Performance mode: eco | balanced | turbo (default: balanced)', 'balanced').option('--max-workers <n>', 'Cap the number of worker threads (lower = less memory, e.g. --max-workers 2)').option('--skip-type-check', 'Skip rules that require the TypeScript type checker (fastest, lowest memory)').action(async (w)=>{\n let x = performance.now(), S = o(p(w.format), {\n compact: !!w.compact,\n outputPath: w.output,\n quiet: !!w.quiet,\n noRecommendation: !1 === w.recommendation\n }), q = j, v = 0;\n try {\n let s = await d(w, j, S);\n if (!s) {\n v = 1;\n return;\n }\n let { config: p } = s, c = a(w, p);\n q = e(p, t.cwd());\n let b = m(w.format, p.outputFormat);\n S = o(b, {\n compact: !!w.compact,\n outputPath: w.output ?? p.outputPath,\n quiet: !!w.quiet,\n noRecommendation: !1 === w.recommendation\n });\n let P = await f(p, w, q, S);\n if (!P) {\n v = 1;\n return;\n }\n let T = await h(p, w, S);\n if (!T) {\n v = 1;\n return;\n }\n let W = await u(P, T, q, w, S, p, c.maxWorkers);\n if (!W) {\n v = 1;\n return;\n }\n let E = 'console' === b ? t.stdout : t.stderr, F = new r(E), z = W.tasks.length + (W.skippedTasks?.length ?? 0), A = i(w);\n F.start(n(A, 0, z));\n let R = y(W, (t)=>F.writeLine(t), t.cwd()), C = await k(W, q, c, w, S, P, p, (t, e)=>{\n F.update(n(A, t, e));\n }, R);\n if (F.stop(), !C) {\n v = 1;\n return;\n }\n let O = performance.now() - x, I = {\n scannedFiles: new Set([\n ...W.tasks.map((t)=>t.filePath),\n ...(W.skippedTasks ?? []).map((t)=>t.filePath)\n ]).size,\n discoveredFiles: P.length,\n totalFiles: C.stats.totalFiles,\n totalTasks: W.tasks.length + (W.skippedTasks?.length ?? 0),\n cachedTasks: W.precomputedAnalysis ? W.tasks.length : void 0,\n totalErrors: C.stats.totalErrors,\n totalWarnings: C.stats.totalWarnings,\n failOnSeverity: p.failOnSeverity,\n maxWarnings: p.maxWarnings,\n duration: O\n };\n 'console' === b && S.summary(I), S.parseErrors(C.parseErrors), S.report(C.results), 'console' !== b && (S.step('❯ Writing report...'), S.summary(I)), W.precomputedAnalysis || await g(C.results, q, w, S), l(p, C.stats) && (v = 1);\n } catch (t) {\n S.error(c(t)), v = 1;\n } finally{\n q && q !== j && await q.flush(), 0 !== v && s(v);\n }\n });\n}\n","import o from 'node:process';\nimport { getConfigReporter as r } from '@ngcompass/reporters';\nimport { validateConfig as i } from '@ngcompass/config';\nimport { exitWithError as t, printError as e } from './exit.js';\nexport function registerConfigCommand(a, n) {\n a.command('config').description('Inspect and validate ngcompass configuration').command('health').description('Run semantic validation checks for the active configuration').option('-p, --profile <name>', 'Configuration profile to validate').action(async (a)=>{\n try {\n let e = await i({\n cwd: o.cwd(),\n cache: a.cache ? n : void 0,\n profile: a.profile\n }), c = r();\n await c.renderHealthReport(e.report), e.report.valid || t();\n } catch (o) {\n e('Error', o), t();\n }\n });\n}\n","import { createRuntimeCache as e } from '@ngcompass/cache';\nimport { getCacheReporter as a } from '@ngcompass/reporters';\nimport { resolveConfig as o } from '@ngcompass/config';\nimport t from 'picocolors';\nimport r from 'node:process';\nimport { exitWithError as i, printError as c } from './exit.js';\nlet CACHE_CLEAR_TYPES = [\n 'ast',\n 'config',\n 'results',\n 'all'\n], CACHE_CLEAR_TYPE_VALUES = new Set(CACHE_CLEAR_TYPES);\nexport function registerCacheCommand(e, o) {\n let n = e.command('cache').description('Inspect and manage analysis cache data');\n n.command('clear').description('Clear cached data for one cache type or all cache types').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').option('--type <type>', 'Cache type to clear: ast | config | results | all', 'all').action(async (e)=>{\n var n;\n let l, s = (l = n = e.type, CACHE_CLEAR_TYPE_VALUES.has(l)) ? n : (c(`Invalid cache type: ${n}. Must be one of: ${CACHE_CLEAR_TYPES.join(', ')}`), i()), p = a();\n r.stdout.write(t.dim(' › Clearing cache...\\n'));\n try {\n let a = await resolveRuntimeCache(o, {\n profile: e.profile,\n allowDisabled: !0\n });\n 'all' === s ? await a.clear() : await a.clearType(s), p.renderClearResult(s);\n } catch (e) {\n c('Error clearing cache', e), i();\n }\n }), n.command('info').description('Show cache status, size, and usage details').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').action(async (e)=>{\n let t = a();\n try {\n let a = await resolveRuntimeCache(o, {\n profile: e.profile,\n allowDisabled: !0\n }), r = await a.getInfo();\n t.renderCacheInfo(r);\n } catch (e) {\n c('Error getting cache info', e), i();\n }\n }), n.command('path').description('Print the resolved cache directory path').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').action(async (e)=>{\n let a = await resolveRuntimeCache(o, {\n profile: e.profile,\n allowDisabled: !0\n });\n r.stdout.write(`${a.getCachePath()}\\n`);\n });\n}\nasync function resolveRuntimeCache(a, t = {}) {\n let i = t.cwd ?? r.cwd();\n try {\n let r = await o({\n profile: t.profile,\n cache: a,\n cwd: i\n });\n if (!r.report.valid || !r.config) return a;\n return e(r.config, i, {\n allowDisabled: t.allowDisabled\n }) ?? a;\n } catch (e) {\n return c('Unable to resolve cache configuration; using default cache', e), a;\n }\n}\n","import { getRulesReporter as e } from '@ngcompass/reporters';\nimport { getRuleListEntries as r, isBuiltinPreset as t } from '@ngcompass/rules';\nimport s from 'picocolors';\nimport { exitWithError as o, printError as i } from './exit.js';\nexport function registerRulesCommand(n) {\n n.command('rules [ruleName]').description('Browse available rules or inspect details for a specific rule').option('--preset <name>', 'Filter by preset: recommended, strict, performance, reactivity, or all').action((n, l)=>{\n l.preset && !t(l.preset) && (i(`Unknown preset: \"${l.preset}\".`), process.stderr.write(s.dim('Available presets: recommended, strict, all, performance, reactivity\\n')), o());\n let p = r(), m = e({\n preset: l.preset\n });\n if (n) {\n let e = p.find((e)=>e.name === n);\n if (!e) {\n i(`Rule \"${n}\" not found.`), process.stderr.write(s.dim('Run `ngcompass rules` to list available rules.\\n')), o();\n return;\n }\n m.renderSingleRule(e);\n } else m.render(p);\n });\n}\n","import { registerInitCommand as o } from './init.js';\nimport { registerAnalyzeCommand as r } from './analyze/index.js';\nimport { registerConfigCommand as m } from './config.js';\nimport { registerCacheCommand as i } from './cache.js';\nimport { registerRulesCommand as t } from './rules.js';\nexport function registerCommands(s, e) {\n o(s, e), r(s, e), m(s, e), i(s, e), t(s);\n}\n","import { Command as e } from 'commander';\nimport { registerCommands as s } from '../commands/index.js';\nimport { enableDebug as o, PACKAGE_VERSION as n } from '@ngcompass/common';\nimport { createCacheContext as a } from '@ngcompass/cache';\nimport { registerAllBuiltinRules as r } from '@ngcompass/rules';\nimport { restoreCursor as t, printError as c } from '../commands/exit.js';\nlet shutdownInProgress = !1, gracefulShutdown = async (e, s)=>{\n if (!shutdownInProgress) {\n if (shutdownInProgress = !0, t(), e) try {\n let s = new Promise((e)=>setTimeout(e, 10_000).unref());\n await Promise.race([\n e.flush(),\n s\n ]);\n } catch (e) {\n c('[ngcompass] Cache flush failed during shutdown', e);\n }\n process.exit(s);\n }\n}, handleFatalAsyncFailure = (e, s, o)=>{\n c(`[ngcompass] ${s}`, o), gracefulShutdown(e, 1);\n}, printRunBanner = async (e)=>{\n let { default: s } = await import('picocolors'), o = process.cwd();\n process.stdout.write(`\\n${s.dim('>')} ${s.dim(`ngcompass@${n}`)} ${s.dim(e)} ${s.dim(o)}\\n${s.dim('>')} ${s.dim('ngcompass')} ${s.dim('run')}\\n\\n ${s.bgCyan(s.white(s.bold(` ${e.toUpperCase()} `)))} ${s.cyan(n)} ${s.dim(o)}\\n\\n`);\n};\nexport async function run() {\n let t = new e();\n t.name('ngcompass').description('Static analysis and architecture insights for Angular codebases.').version(n, '-V, --version', 'Display ngcompass version').option('--debug', 'Enable detailed debug logs across all modules').addHelpText('after', '\\nExamples:\\n $ ngcompass init\\n $ ngcompass analyze --profile strict\\n $ ngcompass cache info\\n').hook('preAction', async (e, s)=>{\n let n;\n if (e.opts().debug && o('debug', 'all'), 'json' !== (n = s.opts().format) && 'sarif' !== n && 'html' !== n && 'ui' !== n) {\n let e = s.parent, o = e && 'ngcompass' !== e.name() ? e.name() : s.name();\n await printRunBanner(o);\n }\n });\n let i = a();\n process.on('SIGINT', ()=>void gracefulShutdown(i, 130)), process.on('SIGTERM', ()=>void gracefulShutdown(i, 143)), process.on('uncaughtException', (e)=>{\n handleFatalAsyncFailure(i, 'Unexpected error', e);\n }), process.on('unhandledRejection', (e)=>{\n handleFatalAsyncFailure(i, 'Unhandled promise rejection', e);\n });\n try {\n if (r(), s(t, i), !process.argv.slice(2).length) return void t.outputHelp();\n await t.parseAsync(process.argv), await i.flush(), process.exit(0);\n } catch (e) {\n c('[ngcompass] Fatal error', e), await gracefulShutdown(i, 1);\n }\n}\nrun().catch((e)=>{\n c('[ngcompass] Fatal error', e), t(), process.exit(1);\n});\n"]}
#!/usr/bin/env node
'use strict';var commander=require('commander'),reporters=require('@ngcompass/reporters'),config=require('@ngcompass/config'),L=require('path'),h=require('picocolors'),common=require('@ngcompass/common'),k=require('process'),cache=require('@ngcompass/cache'),rules=require('@ngcompass/rules'),engine=require('@ngcompass/engine'),planner=require('@ngcompass/planner'),scanner=require('@ngcompass/scanner');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var L__default=/*#__PURE__*/_interopDefault(L);var h__default=/*#__PURE__*/_interopDefault(h);var k__default=/*#__PURE__*/_interopDefault(k);var f=(t=1)=>{process.stdout.isTTY&&process.stdout.write("\x1B[?25h"),process.exit(t);};function ce(t,r){t.command("init").description("Create a starter ngcompass configuration in the current project").option("-f, --force","Overwrite an existing configuration file").option("--cwd <path>","Project directory where the configuration will be created",process.cwd()).action(async e=>{try{let o=await config.initConfig({cwd:e.cwd,force:e.force});await reporters.getConfigReporter().renderInitResult(o),o.success||o.alreadyExists||f();}catch(o){console.error(o instanceof Error?o.message:String(o)),f();}});}var le=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],j=class{stream;timer=null;frameIndex=0;message="";isTTY;constructor(r){this.stream=r,this.isTTY=!!r.isTTY;}start(r){this.message=r,this.frameIndex=0,this.isTTY?(this.stream.write("\x1B[?25l"),this.render(),this.timer=setInterval(()=>this.render(),80)):this.stream.write(`${h__default.default.cyan("\u276F")} ${h__default.default.dim(r)}
'use strict';var commander=require('commander'),reporters=require('@ngcompass/reporters'),config=require('@ngcompass/config'),k=require('picocolors'),E=require('process'),cache=require('@ngcompass/cache'),N=require('path'),common=require('@ngcompass/common'),engine=require('@ngcompass/engine'),planner=require('@ngcompass/planner'),scanner=require('@ngcompass/scanner'),rules=require('@ngcompass/rules');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var k__default=/*#__PURE__*/_interopDefault(k);var E__default=/*#__PURE__*/_interopDefault(E);var N__default=/*#__PURE__*/_interopDefault(N);var $=()=>{process.stdout.isTTY&&process.stdout.write("\x1B[?25h");},f=(t=1)=>{$(),process.exit(t);},d=(t,r)=>{let e=r===void 0?"":`: ${r instanceof Error?r.message:String(r)}`;console.error(`${k__default.default.red(t)}${e}`);};function D(t,r){t.command("init").description("Create a starter ngcompass configuration in the current project").option("-f, --force","Overwrite an existing configuration file").option("--cwd <path>","Project directory where the configuration will be created",process.cwd()).action(async e=>{try{let n=await config.initConfig({cwd:e.cwd,force:e.force});await reporters.getConfigReporter().renderInitResult(n),n.success||n.alreadyExists||f();}catch(n){d("Error initializing configuration",n),f();}});}var M=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],R=class{stream;timer=null;frameIndex=0;message="";isTTY;constructor(r){this.stream=r,this.isTTY=!!r.isTTY;}start(r){this.message=r,this.frameIndex=0,this.isTTY?(this.stream.write("\x1B[?25l"),this.render(),this.timer=setInterval(()=>this.render(),80)):this.stream.write(`${k__default.default.cyan("\u276F")} ${k__default.default.dim(r)}
`);}update(r){this.message=r,this.isTTY&&this.timer&&this.render();}writeLine(r){this.isTTY&&this.timer?(this.stream.write("\r\x1B[K"),this.stream.write(`${r}
`),this.render()):this.stream.write(`${r}
`);}stop(){this.timer&&(clearInterval(this.timer),this.timer=null),this.isTTY&&(this.stream.write("\r\x1B[K"),this.stream.write("\x1B[?25h"));}render(){let r=h__default.default.cyan(le[this.frameIndex%le.length]);this.frameIndex++,this.stream.write(`\r\x1B[K${r} ${h__default.default.dim(this.message)}`);}};var we={eco:{typeAwareConcurrency:1,typeAwareFileConcurrency:1,typeAwareChunkSize:100,typeAwareIsolation:"auto",typeAwareChunkStrategy:"dependency"},balanced:{typeAwareConcurrency:2,typeAwareFileConcurrency:2,typeAwareChunkSize:300,typeAwareIsolation:"auto",typeAwareChunkStrategy:"simple"},turbo:{typeAwareConcurrency:2,typeAwareFileConcurrency:4,typeAwareChunkSize:500,typeAwareIsolation:"off",typeAwareChunkStrategy:"simple"}},pe=Object.keys(we),me=["auto","process","off"],de=["dependency","simple"];function z(t,r){if(t===void 0)return;let e=Number(t);if(!Number.isInteger(e)||e<1)throw Error(`${r} must be a positive integer.`);return e}function fe(t){return t==="ui"?"html":t??"console"}function D(t){return t<1e3?`${Math.max(0,Math.round(t))}ms`:`${(t/1e3).toFixed(1)}s`}function ge(t,r){return `${t.toLocaleString()} ${r}${t===1?"":"s"}`}function he(t,r,e){return `Running analysis in ${t} mode: ${r.toLocaleString()}/${e.toLocaleString()} checks complete...`}function ye(t,r){t.command("analyze").description("Analyze your project and report rule violations and architecture risks").option("-p, --profile <name>","Configuration profile to run").option("--force","Ignore cached results and re-run all checks").option("--format <fmt>","Reporter format: console | json | sarif | html | ui").option("--compact","Use compact, ESLint-style output").option("-q, --quiet","Show summary counts only, suppress violation details").option("--no-recommendation","Suppress fix recommendations from output").option("--output <path>","Output path for UI reports (default: ngcompass-report.html)").option("--rule <id>","Run only one rule (useful for debugging or focused checks)").option("--mode <mode>","Performance mode: eco | balanced | turbo (default: balanced)","balanced").option("--max-workers <n>","Cap the number of worker threads (lower = less memory, e.g. --max-workers 2)").addOption(new commander.Option("--type-aware-chunk-size <n>","Files per type-aware chunk").hideHelp()).addOption(new commander.Option("--type-aware-concurrency <n>","Concurrent type-aware chunks").hideHelp()).addOption(new commander.Option("--type-aware-file-concurrency <n>","Concurrent files per type-aware chunk").hideHelp()).addOption(new commander.Option("--type-aware-isolation <mode>","Type-aware isolation: auto | process | off").hideHelp()).addOption(new commander.Option("--type-aware-chunk-strategy <mode>","Type-aware chunk ordering: dependency | simple").hideHelp()).option("--skip-type-check","Skip rules that require the TypeScript type checker (fastest, lowest memory)").action(async e=>{let o=performance.now(),a=reporters.getReporter(fe(e.format),{compact:!!e.compact,outputPath:e.output,quiet:!!e.quiet,noRecommendation:e.recommendation===false}),n=r,i=0;try{var l;let p,R,A,K,V,J,Q,X=await qe(e,r,a);if(!X){i=1;return}let{config:w}=X,Z=(p=we[(function(u){let C=u??"balanced";if(!pe.includes(C))throw Error(`Invalid performance mode "${C}". Expected one of: ${pe.join(", ")}.`);return C})(e.mode)],R=z(e.maxWorkers,"--max-workers"),A=z(e.typeAwareChunkSize,"--type-aware-chunk-size"),K=z(e.typeAwareConcurrency,"--type-aware-concurrency"),V=z(e.typeAwareFileConcurrency,"--type-aware-file-concurrency"),{maxWorkers:R??w.maxWorkers,typeAwareChunkSize:A??p.typeAwareChunkSize,typeAwareConcurrency:K??p.typeAwareConcurrency,typeAwareFileConcurrency:V??p.typeAwareFileConcurrency,typeAwareIsolation:(function(u){if(u!==void 0){if(!me.includes(u))throw Error(`Invalid --type-aware-isolation "${u}". Expected one of: ${me.join(", ")}.`);return u}})(e.typeAwareIsolation)??p.typeAwareIsolation,typeAwareChunkStrategy:(function(u){if(u!==void 0){if(!de.includes(u))throw Error(`Invalid --type-aware-chunk-strategy "${u}". Expected one of: ${de.join(", ")}.`);return u}})(e.typeAwareChunkStrategy)??p.typeAwareChunkStrategy});n=cache.createRuntimeCache(w,k__default.default.cwd());let T=(function(u,C){if(u)return fe(u);switch(C){case "json":return "json";case "sarif":return "sarif";case "html":return "html";default:return "console"}})(e.format,w.outputFormat);a=reporters.getReporter(T,{compact:!!e.compact,outputPath:e.output??w.outputPath,quiet:!!e.quiet,noRecommendation:e.recommendation===!1});let I=await Ge(w,e,n,a);if(!I){i=1;return}let ee=await Ke(w,e,a);if(!ee){i=1;return}let y=await Ve(I,ee,n,e,a,w,Z.maxWorkers);if(!y){i=1;return}let Se=T==="console"?k__default.default.stdout:k__default.default.stderr,F=new j(Se),be=y.tasks.length+(y.skippedTasks?.length??0),re=e.mode??"balanced";F.start(he(re,0,be));let Re=(function(u,C,oe){let P=new Map,v=new Map;for(let m of u.tasks){let s=m.filePath;typeof s=="string"&&s.length!==0&&(m.needsTypeChecker||m.needsProjectContext?v.set(s,(v.get(s)??0)+1):P.set(s,(P.get(s)??0)+1));}let _=new Map,Ie=new Map,ne=new Set,O=new Set,B=(m,s)=>{let c=m.get(s.filePath),g=c?{taskCount:c.taskCount+s.taskCount,issueCount:c.issueCount+s.issueCount,errorCount:c.errorCount+s.errorCount,warningCount:c.warningCount+s.warningCount,duration:c.duration+s.duration}:{taskCount:s.taskCount,issueCount:s.issueCount,errorCount:s.errorCount,warningCount:s.warningCount,duration:s.duration};return m.set(s.filePath,g),g},Y=(m,s)=>{if(O.has(m))return;O.add(m);let c=L__default.default.relative(oe,m)||m,g=s.issueCount>0,d=g?h__default.default.red("\u276F"):h__default.default.green("\u276F"),x=g?h__default.default.red(D(s.duration)):h__default.default.green(D(s.duration));C(g?`${d} ${h__default.default.red(c)} ${x} ${h__default.default.red(ge(s.issueCount,"issue"))}`:`${d} ${h__default.default.dim(c)} ${x}`);};return m=>{let s=m.filePath;if(!O.has(s))if(m.typeAware===!1){let c=B(_,m),g=P.get(s)??c.taskCount;if(c.taskCount<g)return;v.has(s)?((d,x)=>{if(ne.has(d)||O.has(d))return;ne.add(d);let ae=L__default.default.relative(oe,d)||d,U=x.issueCount>0,ie=U?h__default.default.red("\u276F"):h__default.default.green("\u276F"),se=U?h__default.default.red(D(x.duration)):h__default.default.green(D(x.duration));C(U?`${ie} ${h__default.default.red(ae)} ${se} ${h__default.default.red(ge(x.issueCount,"issue"))}`:`${ie} ${h__default.default.dim(ae)} ${se}`);})(s,c):Y(s,c);}else if(m.typeAware===!0){let c=B(Ie,m),g=v.get(s)??c.taskCount;if(c.taskCount<g)return;let d=_.get(s);Y(s,d?{taskCount:d.taskCount+c.taskCount,issueCount:d.issueCount+c.issueCount,errorCount:d.errorCount+c.errorCount,warningCount:d.warningCount+c.warningCount,duration:d.duration+c.duration}:c);}else {let c=(P.get(s)??0)+(v.get(s)??0),g=B(_,m);if(g.taskCount<(c||g.taskCount))return;Y(s,g);}}})(y,u=>F.writeLine(u),k__default.default.cwd()),$=await Je(y,n,Z,e,a,I,w,(u,C)=>{F.update(he(re,u,C));},Re);if(F.stop(),!$){i=1;return}let Te=performance.now()-o,te={scannedFiles:new Set([...y.tasks.map(u=>u.filePath),...(y.skippedTasks??[]).map(u=>u.filePath)]).size,discoveredFiles:I.length,totalFiles:$.stats.totalFiles,totalTasks:y.tasks.length+(y.skippedTasks?.length??0),cachedTasks:y.precomputedAnalysis?y.tasks.length:void 0,totalErrors:$.stats.totalErrors,totalWarnings:$.stats.totalWarnings,failOnSeverity:w.failOnSeverity,maxWarnings:w.maxWarnings,duration:Te};T==="console"&&a.summary(te),a.parseErrors($.parseErrors),a.report($.results),T!=="console"&&(a.step("\u276F Writing report..."),a.summary(te)),y.precomputedAnalysis||await Qe($.results,n,e,a),l=$.stats,J=w.failOnSeverity??"error",Q=w.maxWarnings??10,(l.totalErrors>0||J==="warn"&&l.totalWarnings>0||l.totalWarnings>Q)&&(i=1);}catch(p){a.error(p),i=1;}finally{n&&n!==r&&await n.flush(),i!==0&&f(i);}});}async function qe(t,r,e){let o=performance.now();e.step("\u276F Loading configuration...");let a=await config.resolveConfig({profile:t.profile,cache:r,cwd:k__default.default.cwd()});if(!a.report.valid){let i=a.report.issues.map(l=>{let p=l.path?.join(".")||"root";return `[${l.severity.toUpperCase()}] ${p}: ${l.message}`});return e.error(Error(["Configuration validation failed",...i].join(`
`))),null}if(!a.config)return e.error(Error("No configuration found")),null;let n=a.config.plugins;if(n&&n.length>0){e.step(`\u276F Loading ${n.length} plugin(s)...`);let i=k__default.default.cwd();await config.loadPlugins(n,i,rules.getGlobalRegistry()),e.info(`Loaded ${n.length} plugin(s)`);}return e.debug(`Config resolve: ${(performance.now()-o).toFixed(2)}ms`),{config:a.config}}async function Ge(t,r,e,o){let a=performance.now();o.step("\u276F Discovering files...");let n=await scanner.scan({rootDir:k__default.default.cwd(),include:t.include??[...common.DEFAULT_INCLUDE_PATTERNS],exclude:t.exclude??[],ignorePatterns:t.ignorePatterns,tsConfigPath:(function(i,l){if(!i?.project)return;let p=i.tsconfigRootDir?L__default.default.resolve(l,i.tsconfigRootDir):l;return L__default.default.resolve(p,i.project)})(t.parserOptions,k__default.default.cwd()),respectGitignore:true,debug:r.debug,cache:e});return n.ok?(o.info(`\u276F Found ${n.data.files.length} files in ${(performance.now()-a).toFixed(0)}ms`),o.debug(`File discovery: ${(performance.now()-a).toFixed(2)}ms`),n.data.files):(o.error(Error(`File discovery failed: ${n.error.message}`)),null)}async function Ke(t,r,e){let o=performance.now();e.step("\u276F Loading rules...");let a=t;r.rule&&(e.info(`Filtering analysis to single rule: ${r.rule}`),a={...t,rules:{[r.rule]:"error"},extends:[]});let n=await rules.resolveRules(a);if(!n.ok)return e.error(Error(`Rule resolution failed: ${n.error.message}`)),null;let i=rules.getEnabledRules(n.data.rules);return e.info(`\u276F Loaded ${i.size} active rules in ${(performance.now()-o).toFixed(0)}ms`),e.debug(`Rule resolution: ${(performance.now()-o).toFixed(2)}ms`),i}async function Ve(t,r,e,o,a,n,i){let l=performance.now();a.step("\u276F Planning analysis...");let p=await planner.buildExecutionPlan({files:t,rules:r,rootDir:k__default.default.cwd(),cache:e,debug:o.debug,incremental:o.force?{forceRerun:true}:void 0,workerCount:i,overrides:n.overrides});return p.ok?(p.data.precomputedAnalysis?a.info("\u276F Reused cached analysis plan"):a.info(`\u276F Prepared ${p.data.tasks.length.toLocaleString()} checks in ${(performance.now()-l).toFixed(0)}ms`),a.debug(`Plan build: ${(performance.now()-l).toFixed(2)}ms`),p.data):(a.error(Error(`Execution plan building failed: ${p.error.message}`)),null)}async function Je(t,r,e,o,a,n,i,l,p){let R=performance.now();engine.configureRuleExecutor(rules.executeBatchedNewEngineRules,rules.isNewEngineRule);let A=await engine.runAnalysis(t,{rootDir:k__default.default.cwd(),cache:r,debug:o.debug,files:n,maxWorkers:e.maxWorkers,typeAwareChunkSize:e.typeAwareChunkSize,typeAwareConcurrency:e.typeAwareConcurrency,typeAwareFileConcurrency:e.typeAwareFileConcurrency,typeAwareIsolation:e.typeAwareIsolation,typeAwareChunkStrategy:e.typeAwareChunkStrategy,skipTypeCheck:o.skipTypeCheck,parserOptions:i?.parserOptions,onProgress:l,onFileProgress:p});return A.ok?(a.debug(`Execution: ${(performance.now()-R).toFixed(2)}ms`),A.data):(a.error(Error(`Analysis failed: ${A.error.message}`)),null)}async function Qe(t,r,e,o){if(!r)return;let a=performance.now(),n=[];for(let i of t)i.taskId&&n.push([i.taskId,i]);n.length>0&&(await r.results.setMany(n),e.debug&&o.debug(`Saved ${n.length} results to cache (${(performance.now()-a).toFixed(2)}ms)`));}function Ce(t,r){t.command("config").description("Inspect and validate ngcompass configuration").command("health").description("Run semantic validation checks for the active configuration").option("-p, --profile <name>","Configuration profile to validate").action(async e=>{try{let o=await config.validateConfig({cache:e.cache?r:void 0,profile:e.profile});await reporters.getConfigReporter().renderHealthReport(o.report),o.report.valid||f();}catch(o){let a=o instanceof Error?o.message:String(o);console.error(`Error: ${a}`),f();}});}function $e(t,r){let e=t.command("cache").description("Inspect and manage analysis cache data");e.command("clear").description("Clear cached data for one cache type or all cache types").option("-p, --profile <name>","Configuration profile used to resolve cache settings").option("--type <type>","Cache type to clear: ast | config | results | all","all").action(async o=>{let a=reporters.getCacheReporter();k__default.default.stdout.write(h__default.default.dim(` \u203A Clearing cache...
`));let n=o.type,i=["ast","config","results","all"];i.includes(n)||(console.error(h__default.default.red(`Invalid cache type: ${n}. Must be one of: ${i.join(", ")}`)),f());try{let l=await H(r,{profile:o.profile,allowDisabled:!0});n==="all"?await l.clear():await l.clearType(n),a.renderClearResult(n);}catch(l){console.error(h__default.default.red("Error clearing cache:"),l),f();}}),e.command("info").description("Show cache status, size, and usage details").option("-p, --profile <name>","Configuration profile used to resolve cache settings").action(async o=>{let a=reporters.getCacheReporter();try{let n=await H(r,{profile:o.profile,allowDisabled:!0}),i=await n.getInfo();a.renderCacheInfo(i);}catch(n){console.error(h__default.default.red("Error getting cache info:"),n),f();}}),e.command("path").description("Print the resolved cache directory path").option("-p, --profile <name>","Configuration profile used to resolve cache settings").action(async o=>{let a=await H(r,{profile:o.profile,allowDisabled:true});k__default.default.stdout.write(`${a.getCachePath()}
`);});}async function H(t,r={}){let e=r.cwd??k__default.default.cwd();try{let o=await config.resolveConfig({profile:r.profile,cache:t,cwd:e});return !o.report.valid||!o.config?t:cache.createRuntimeCache(o.config,e,{allowDisabled:r.allowDisabled})??t}catch{return t}}function xe(t){t.command("rules [ruleName]").description("Browse available rules or inspect details for a specific rule").option("--preset <name>","Filter by preset: recommended, strict, performance, reactivity, or all").action((r,e)=>{e.preset&&!rules.isBuiltinPreset(e.preset)&&(console.error(h__default.default.red(`Unknown preset: "${e.preset}".`)),console.error(h__default.default.dim("Available presets: recommended, strict, all, performance, reactivity")),f());let o=rules.getRuleListEntries(),a=reporters.getRulesReporter({preset:e.preset});if(r){let n=o.find(i=>i.name===r);if(!n){console.error(h__default.default.red(`Rule "${r}" not found.`)),console.error(h__default.default.dim("Run `ngcompass rules` to list available rules.")),f();return}a.renderSingleRule(n);}else a.render(o);});}function Ae(t,r){ce(t),ye(t,r),Ce(t,r),$e(t,r),xe(t);}var b=()=>{process.stdout.isTTY&&process.stdout.write("\x1B[?25h");},ve=false,S=async(t,r)=>{if(!ve){if(ve=true,b(),t)try{let e=new Promise(o=>setTimeout(o,1e4).unref());await Promise.race([t.flush(),e]);}catch{}process.exit(r);}};async function Ee(){let t=new commander.Command;t.name("ngcompass").description("Static analysis and architecture insights for Angular codebases.").version(common.PACKAGE_VERSION,"-V, --version","Display ngcompass version").option("--debug","Enable detailed debug logs across all modules").addHelpText("after",`
`);}stop(){this.timer&&(clearInterval(this.timer),this.timer=null),this.isTTY&&(this.stream.write("\r\x1B[K"),this.stream.write("\x1B[?25h"));}render(){let r=k__default.default.cyan(M[this.frameIndex%M.length]);this.frameIndex++,this.stream.write(`\r\x1B[K${r} ${k__default.default.dim(this.message)}`);}};var Ce={eco:{typeAwareConcurrency:1,typeAwareFileConcurrency:1,typeAwareChunkSize:100,typeAwareIsolation:"auto",typeAwareChunkStrategy:"dependency"},balanced:{typeAwareConcurrency:1,typeAwareFileConcurrency:1,typeAwareChunkSize:150,typeAwareIsolation:"auto",typeAwareChunkStrategy:"dependency"},turbo:{typeAwareConcurrency:2,typeAwareFileConcurrency:4,typeAwareChunkSize:500,typeAwareIsolation:"off",typeAwareChunkStrategy:"simple"}},j=["eco","balanced","turbo"],xe=new Set(j);function Ee(t,r){if(t===void 0)return;let e=Number(t);if(!Number.isInteger(e)||e<1)throw Error(`${r} must be a positive integer.`);return e}function _(t,r){let e=Ce[(function(n){let o=n??"balanced";if(!xe.has(o))throw Error(`Invalid performance mode "${o}". Expected one of: ${j.join(", ")}.`);return o})(t.mode)];return {maxWorkers:Ee(t.maxWorkers,"--max-workers")??r.maxWorkers,typeAwareChunkSize:e.typeAwareChunkSize,typeAwareConcurrency:e.typeAwareConcurrency,typeAwareFileConcurrency:e.typeAwareFileConcurrency,typeAwareIsolation:e.typeAwareIsolation,typeAwareChunkStrategy:e.typeAwareChunkStrategy}}function F(t){return t==="ui"?"html":t??"console"}function U(t,r){if(t)return F(t);switch(r){case "json":return "json";case "sarif":return "sarif";case "html":return "html";default:return "console"}}function B(t,r){let e=t.failOnSeverity??"error",n=t.maxWarnings??10;return r.totalErrors>0||e==="warn"&&r.totalWarnings>0||r.totalWarnings>n}function Y(t,r){if(!t?.project)return;let e=t.tsconfigRootDir?N__default.default.resolve(r,t.tsconfigRootDir):r;return N__default.default.resolve(e,t.project)}function q(t){return t instanceof Error?t:Error(String(t))}function G(t){return t.mode??"balanced"}function T(t,r,e){return `Running analysis in ${t} mode: ${r.toLocaleString()}/${e.toLocaleString()} checks complete...`}async function H(t,r,e){let n=performance.now();e.step("\u276F Loading configuration...");let o=await config.resolveConfig({profile:t.profile,cache:r,cwd:E__default.default.cwd()});if(!o.report.valid){let i=o.report.issues.map(u=>{let s=u.path?.join(".")||"root";return `[${u.severity.toUpperCase()}] ${s}: ${u.message}`});return e.error(Error(["Configuration validation failed",...i].join(`
`))),null}if(!o.config)return e.error(Error("No configuration found")),null;let a=o.config.plugins;if(a&&a.length>0){e.step(`\u276F Loading ${a.length} plugin(s)...`);let i=E__default.default.cwd();await config.loadPlugins(a,i,rules.getGlobalRegistry()),e.info(`Loaded ${a.length} plugin(s)`);}return e.debug(`Config resolve: ${(performance.now()-n).toFixed(2)}ms`),{config:o.config}}async function K(t,r,e,n){let o=performance.now();n.step("\u276F Discovering files...");let a=await scanner.scan({rootDir:E__default.default.cwd(),include:t.include??[...common.DEFAULT_INCLUDE_PATTERNS],exclude:t.exclude??[],ignorePatterns:t.ignorePatterns,tsConfigPath:Y(t.parserOptions,E__default.default.cwd()),respectGitignore:true,debug:r.debug,cache:e});return a.ok?(n.info(`\u276F Found ${a.data.files.length} files in ${(performance.now()-o).toFixed(0)}ms`),n.debug(`File discovery: ${(performance.now()-o).toFixed(2)}ms`),a.data.files):(n.error(Error(`File discovery failed: ${a.error.message}`)),null)}async function V(t,r,e){let n=performance.now();e.step("\u276F Loading rules...");let o=t;r.rule&&(e.info(`Filtering analysis to single rule: ${r.rule}`),o={...t,rules:{[r.rule]:"error"},extends:[]});let a=await rules.resolveRules(o,E__default.default.cwd());if(!a.ok)return e.error(Error(`Rule resolution failed: ${a.error.message}`)),null;let i=rules.getEnabledRules(a.data.rules);return e.info(`\u276F Loaded ${i.size} active rules in ${(performance.now()-n).toFixed(0)}ms`),e.debug(`Rule resolution: ${(performance.now()-n).toFixed(2)}ms`),i}async function Z(t,r,e,n,o,a,i){let u=performance.now();o.step("\u276F Planning analysis...");let s=await planner.buildExecutionPlan({files:t,rules:r,rootDir:E__default.default.cwd(),cache:e,debug:n.debug,incremental:n.force?{forceRerun:true}:void 0,workerCount:i,overrides:a.overrides});return s.ok?(s.data.precomputedAnalysis?o.info("\u276F Reused cached analysis plan"):o.info(`\u276F Prepared ${s.data.tasks.length.toLocaleString()} checks in ${(performance.now()-u).toFixed(0)}ms`),o.debug(`Plan build: ${(performance.now()-u).toFixed(2)}ms`),s.data):(o.error(Error(`Execution plan building failed: ${s.error.message}`)),null)}async function J(t,r,e,n,o,a,i,u,s){let C=performance.now();engine.configureRuleExecutor(rules.executeBatchedNewEngineRules,rules.isNewEngineRule);let p=await engine.runAnalysis(t,{rootDir:E__default.default.cwd(),cache:r,debug:n.debug,files:a,maxWorkers:e.maxWorkers,typeAwareChunkSize:e.typeAwareChunkSize,typeAwareConcurrency:e.typeAwareConcurrency,typeAwareFileConcurrency:e.typeAwareFileConcurrency,typeAwareIsolation:e.typeAwareIsolation,typeAwareChunkStrategy:e.typeAwareChunkStrategy,skipTypeCheck:n.skipTypeCheck,parserOptions:i?.parserOptions,onProgress:u,onFileProgress:s});return p.ok?(o.debug(`Execution: ${(performance.now()-C).toFixed(2)}ms`),p.data):(o.error(Error(`Analysis failed: ${p.error.message}`)),null)}async function Q(t,r,e,n){if(!r)return;let o=performance.now(),a=[];for(let i of t)i.taskId&&a.push([i.taskId,i]);a.length>0&&(await r.results.setMany(a),e.debug&&n.debug(`Saved ${a.length} results to cache (${(performance.now()-o).toFixed(2)}ms)`));}var Oe={taskCount:0,issueCount:0,errorCount:0,warningCount:0,duration:0};function ee(t,r){let e=new Map;for(let n of t.tasks){let o=n.filePath;typeof o=="string"&&o.length!==0&&(n.needsTypeChecker||n.needsProjectContext)===r&&e.set(o,(e.get(o)??0)+1);}return e}function I(t,r){let e=t??Oe;return {taskCount:e.taskCount+r.taskCount,issueCount:e.issueCount+r.issueCount,errorCount:e.errorCount+r.errorCount,warningCount:e.warningCount+r.warningCount,duration:e.duration+r.duration}}function re(t,r,e){let n=ee(t,false),o=ee(t,true),a=new Map,i=new Map,u=new Set,s=new Set,C=(p,c,g)=>{if(s.has(p))return;let m=g?s:u;m.has(p)||(m.add(p),r((function(y,l){let w=l.issueCount>0,v=w?k__default.default.red("\u276F"):k__default.default.green("\u276F"),A=w?k__default.default.red(common.formatDuration(l.duration)):k__default.default.green(common.formatDuration(l.duration));if(w){let h=`${l.issueCount.toLocaleString()} ${common.pluralise(l.issueCount,"issue")}`;return `${v} ${k__default.default.red(y)} ${A} ${k__default.default.red(h)}`}return `${v} ${k__default.default.dim(y)} ${A}`})(N__default.default.relative(e,p)||p,c)));};return p=>{let c=p.filePath;if(s.has(c))return;if(p.typeAware===false){let l=I(a.get(c),p);a.set(c,l);let w=n.get(c)??l.taskCount;if(l.taskCount<w)return;C(c,l,!o.has(c));return}if(p.typeAware===true){var g;let l=I(i.get(c),p);i.set(c,l);let w=o.get(c)??l.taskCount;if(l.taskCount<w)return;C(c,(g=a.get(c),g?{taskCount:g.taskCount+l.taskCount,issueCount:g.issueCount+l.issueCount,errorCount:g.errorCount+l.errorCount,warningCount:g.warningCount+l.warningCount,duration:g.duration+l.duration}:l),true);return}let m=(n.get(c)??0)+(o.get(c)??0),y=I(a.get(c),p);a.set(c,y),y.taskCount<(m||y.taskCount)||C(c,y,true);}}function oe(t,r){t.command("analyze").description("Analyze your project and report rule violations and architecture risks").option("-p, --profile <name>","Configuration profile to run").option("--force","Ignore cached results and re-run all checks").option("--format <fmt>","Reporter format: console | json | sarif | html | ui").option("--compact","Use compact, ESLint-style output").option("-q, --quiet","Show summary counts only, suppress violation details").option("--no-recommendation","Suppress fix recommendations from output").option("--output <path>","Output path for UI reports (default: ngcompass-report.html)").option("--rule <id>","Run only one rule (useful for debugging or focused checks)").option("--mode <mode>","Performance mode: eco | balanced | turbo (default: balanced)","balanced").option("--max-workers <n>","Cap the number of worker threads (lower = less memory, e.g. --max-workers 2)").option("--skip-type-check","Skip rules that require the TypeScript type checker (fastest, lowest memory)").action(async e=>{let n=performance.now(),o=reporters.getReporter(F(e.format),{compact:!!e.compact,outputPath:e.output,quiet:!!e.quiet,noRecommendation:e.recommendation===false}),a=r,i=0;try{let u=await H(e,r,o);if(!u){i=1;return}let{config:s}=u,C=_(e,s);a=cache.createRuntimeCache(s,E__default.default.cwd());let p=U(e.format,s.outputFormat);o=reporters.getReporter(p,{compact:!!e.compact,outputPath:e.output??s.outputPath,quiet:!!e.quiet,noRecommendation:e.recommendation===!1});let c=await K(s,e,a,o);if(!c){i=1;return}let g=await V(s,e,o);if(!g){i=1;return}let m=await Z(c,g,a,e,o,s,C.maxWorkers);if(!m){i=1;return}let y=p==="console"?E__default.default.stdout:E__default.default.stderr,l=new R(y),w=m.tasks.length+(m.skippedTasks?.length??0),v=G(e);l.start(T(v,0,w));let A=re(m,x=>l.writeLine(x),E__default.default.cwd()),h=await J(m,a,C,e,o,c,s,(x,ge)=>{l.update(T(v,x,ge));},A);if(l.stop(),!h){i=1;return}let fe=performance.now()-n,O={scannedFiles:new Set([...m.tasks.map(x=>x.filePath),...(m.skippedTasks??[]).map(x=>x.filePath)]).size,discoveredFiles:c.length,totalFiles:h.stats.totalFiles,totalTasks:m.tasks.length+(m.skippedTasks?.length??0),cachedTasks:m.precomputedAnalysis?m.tasks.length:void 0,totalErrors:h.stats.totalErrors,totalWarnings:h.stats.totalWarnings,failOnSeverity:s.failOnSeverity,maxWarnings:s.maxWarnings,duration:fe};p==="console"&&o.summary(O),o.parseErrors(h.parseErrors),o.report(h.results),p!=="console"&&(o.step("\u276F Writing report..."),o.summary(O)),m.precomputedAnalysis||await Q(h.results,a,e,o),B(s,h.stats)&&(i=1);}catch(u){o.error(q(u)),i=1;}finally{a&&a!==r&&await a.flush(),i!==0&&f(i);}});}function ne(t,r){t.command("config").description("Inspect and validate ngcompass configuration").command("health").description("Run semantic validation checks for the active configuration").option("-p, --profile <name>","Configuration profile to validate").action(async e=>{try{let n=await config.validateConfig({cwd:E__default.default.cwd(),cache:e.cache?r:void 0,profile:e.profile});await reporters.getConfigReporter().renderHealthReport(n.report),n.report.valid||f();}catch(n){d("Error",n),f();}});}var ie=["ast","config","results","all"],Ye=new Set(ie);function se(t,r){let e=t.command("cache").description("Inspect and manage analysis cache data");e.command("clear").description("Clear cached data for one cache type or all cache types").option("-p, --profile <name>","Configuration profile used to resolve cache settings").option("--type <type>","Cache type to clear: ast | config | results | all","all").action(async n=>{var o;let a,i=(a=o=n.type,Ye.has(a)?o:(d(`Invalid cache type: ${o}. Must be one of: ${ie.join(", ")}`),f())),u=reporters.getCacheReporter();E__default.default.stdout.write(k__default.default.dim(` \u203A Clearing cache...
`));try{let s=await z(r,{profile:n.profile,allowDisabled:!0});i==="all"?await s.clear():await s.clearType(i),u.renderClearResult(i);}catch(s){d("Error clearing cache",s),f();}}),e.command("info").description("Show cache status, size, and usage details").option("-p, --profile <name>","Configuration profile used to resolve cache settings").action(async n=>{let o=reporters.getCacheReporter();try{let a=await z(r,{profile:n.profile,allowDisabled:!0}),i=await a.getInfo();o.renderCacheInfo(i);}catch(a){d("Error getting cache info",a),f();}}),e.command("path").description("Print the resolved cache directory path").option("-p, --profile <name>","Configuration profile used to resolve cache settings").action(async n=>{let o=await z(r,{profile:n.profile,allowDisabled:true});E__default.default.stdout.write(`${o.getCachePath()}
`);});}async function z(t,r={}){let e=r.cwd??E__default.default.cwd();try{let n=await config.resolveConfig({profile:r.profile,cache:t,cwd:e});return !n.report.valid||!n.config?t:cache.createRuntimeCache(n.config,e,{allowDisabled:r.allowDisabled})??t}catch(n){return d("Unable to resolve cache configuration; using default cache",n),t}}function ce(t){t.command("rules [ruleName]").description("Browse available rules or inspect details for a specific rule").option("--preset <name>","Filter by preset: recommended, strict, performance, reactivity, or all").action((r,e)=>{e.preset&&!rules.isBuiltinPreset(e.preset)&&(d(`Unknown preset: "${e.preset}".`),process.stderr.write(k__default.default.dim(`Available presets: recommended, strict, all, performance, reactivity
`)),f());let n=rules.getRuleListEntries(),o=reporters.getRulesReporter({preset:e.preset});if(r){let a=n.find(i=>i.name===r);if(!a){d(`Rule "${r}" not found.`),process.stderr.write(k__default.default.dim("Run `ngcompass rules` to list available rules.\n")),f();return}o.renderSingleRule(a);}else o.render(n);});}function pe(t,r){D(t),oe(t,r),ne(t,r),se(t,r),ce(t);}var ue=false,P=async(t,r)=>{if(!ue){if(ue=true,$(),t)try{let e=new Promise(n=>setTimeout(n,1e4).unref());await Promise.race([t.flush(),e]);}catch(e){d("[ngcompass] Cache flush failed during shutdown",e);}process.exit(r);}},me=(t,r,e)=>{d(`[ngcompass] ${r}`,e),P(t,1);},Qe=async t=>{let{default:r}=await import('picocolors'),e=process.cwd();process.stdout.write(`
${r.dim(">")} ${r.dim(`ngcompass@${common.PACKAGE_VERSION}`)} ${r.dim(t)} ${r.dim(e)}
${r.dim(">")} ${r.dim("ngcompass")} ${r.dim("run")}
${r.bgCyan(r.white(r.bold(` ${t.toUpperCase()} `)))} ${r.cyan(common.PACKAGE_VERSION)} ${r.dim(e)}
`);};async function de(){let t=new commander.Command;t.name("ngcompass").description("Static analysis and architecture insights for Angular codebases.").version(common.PACKAGE_VERSION,"-V, --version","Display ngcompass version").option("--debug","Enable detailed debug logs across all modules").addHelpText("after",`
Examples:

@@ -13,11 +20,3 @@ $ ngcompass init

$ ngcompass cache info
`).hook("preAction",async(e,o)=>{e.opts().debug&&common.enableDebug("debug","all");let a=o.opts();if(a.format!=="json"&&a.format!=="sarif"&&a.format!=="html"&&a.format!=="ui"){let{default:n}=await import('picocolors'),i=o.parent,l=i&&i.name()!=="ngcompass"?i.name():o.name(),p=process.cwd();process.stdout.write(`
${n.dim(">")} ${n.dim(`ngcompass@${common.PACKAGE_VERSION}`)} ${n.dim(l)} ${n.dim(p)}
${n.dim(">")} ${n.dim("ngcompass")} ${n.dim("run")}
${n.bgCyan(n.white(n.bold(` ${l.toUpperCase()} `)))} ${n.cyan(common.PACKAGE_VERSION)} ${n.dim(p)}
`);}});let r=cache.createCacheContext();process.on("SIGINT",()=>{S(r,130);}),process.on("SIGTERM",()=>{S(r,143);}),process.on("uncaughtException",e=>{b(),console.error(`
[ngcompass] Unexpected error: ${e.message}`),S(r,1);}),process.on("unhandledRejection",e=>{b();let o=e instanceof Error?e.message:String(e);console.error(`
[ngcompass] Unhandled promise rejection: ${o}`),S(r,1);});try{if(rules.registerAllBuiltinRules(),Ae(t,r),!process.argv.slice(2).length)return void t.outputHelp();await t.parseAsync(process.argv),await r.flush(),process.exit(0);}catch(e){b();let o=e instanceof Error?e.message:String(e);console.error(`[ngcompass] Fatal error: ${o}`),await S(r,1);}}Ee().catch(t=>{b();let r=t instanceof Error?t.message:String(t);console.error(`[ngcompass] Fatal error: ${r}`),process.exit(1);});exports.run=Ee;//# sourceMappingURL=index.cjs.map
`).hook("preAction",async(e,n)=>{let o;if(e.opts().debug&&common.enableDebug("debug","all"),(o=n.opts().format)!=="json"&&o!=="sarif"&&o!=="html"&&o!=="ui"){let a=n.parent,i=a&&a.name()!=="ngcompass"?a.name():n.name();await Qe(i);}});let r=cache.createCacheContext();process.on("SIGINT",()=>{P(r,130);}),process.on("SIGTERM",()=>{P(r,143);}),process.on("uncaughtException",e=>{me(r,"Unexpected error",e);}),process.on("unhandledRejection",e=>{me(r,"Unhandled promise rejection",e);});try{if(rules.registerAllBuiltinRules(),pe(t,r),!process.argv.slice(2).length)return void t.outputHelp();await t.parseAsync(process.argv),await r.flush(),process.exit(0);}catch(e){d("[ngcompass] Fatal error",e),await P(r,1);}}de().catch(t=>{d("[ngcompass] Fatal error",t),$(),process.exit(1);});exports.run=de;//# sourceMappingURL=index.cjs.map
//# sourceMappingURL=index.cjs.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/commands/exit.ts","../src/commands/init.ts","../src/spinner.ts","../src/commands/analyze.ts","../src/commands/config.ts","../src/commands/cache.ts","../src/commands/rules.ts","../src/commands/index.ts","../src/bin/ngcompass.ts"],"names":["exitWithError","code","process","stdout","isTTY","write","exit","registerInitCommand","program","_cache","command","description","option","cwd","action","options","result","initConfig","force","getConfigReporter","renderInitResult","success","alreadyExists","error","console","Error","message","String","FRAMES","Spinner","timer","frameIndex","stream","start","render","setInterval","pc","cyan","dim","update","writeLine","line","stop","clearInterval","frame","length","PERFORMANCE_MODE_PRESETS","eco","typeAwareConcurrency","typeAwareFileConcurrency","typeAwareChunkSize","typeAwareIsolation","typeAwareChunkStrategy","balanced","turbo","PERFORMANCE_MODES","Object","keys","TYPE_AWARE_ISOLATION_MODES","TYPE_AWARE_CHUNK_STRATEGIES","parsePositiveIntegerOption","value","optionName","undefined","parsed","Number","isInteger","normalizeReporterFormat","format","formatDuration","ms","Math","max","round","toFixed","pluralise","count","singular","toLocaleString","formatAnalysisProgressMessage","mode","completed","total","registerAnalyzeCommand","cache","addOption","Option","hideHelp","startTime","performance","now","reporter","getReporter","compact","outputPath","output","quiet","noRecommendation","recommendation","activeCache","exitCode","stats","preset","cliMaxWorkers","cliChunkSize","cliTypeAwareConcurrency","cliTypeAwareFileConcurrency","failOnSeverity","maxWarnings","configResult","loadConfigurationStep","config","performanceOptions","includes","join","maxWorkers","createRuntimeCache","reporterFormat","cliFormat","configFormat","outputFormat","files","discoverFilesStep","enabledRules","resolveRulesStep","plan","buildPlanStep","progressStream","stderr","spinner","totalChecks","tasks","skippedTasks","logFileProgress","syntaxExpected","Map","typeAwareExpected","task","fp","filePath","needsTypeChecker","needsProjectContext","set","get","syntaxDone","typeAwareDone","syntaxLinePrinted","Set","finalLinePrinted","accumulate","map","event","prev","next","taskCount","issueCount","errorCount","warningCount","duration","printFinalLine","acc","has","add","relativePath","path","relative","hasIssues","status","red","green","dur","typeAware","expected","syntaxAcc","totalExpected","analysis","runAnalysisStep","summary","scannedFiles","t","size","discoveredFiles","totalFiles","totalTasks","cachedTasks","precomputedAnalysis","totalErrors","totalWarnings","parseErrors","report","results","step","saveToCacheStep","flush","tStart","resolveConfig","profile","valid","issueLines","issues","issue","pathString","severity","toUpperCase","pluginList","plugins","configDir","loadPlugins","getGlobalRegistry","info","debug","scanResult","scan","rootDir","include","DEFAULT_INCLUDE_PATTERNS","exclude","ignorePatterns","tsConfigPath","parserOptions","project","tsconfigRootDir","resolve","respectGitignore","ok","data","effectiveConfig","rule","rules","extends","rulesResult","resolveRules","getEnabledRules","planResult","buildExecutionPlan","incremental","forceRerun","workerCount","overrides","onProgress","onFileProgress","configureRuleExecutor","executeBatchedNewEngineRules","isNewEngineRule","runAnalysis","skipTypeCheck","cacheEntries","taskId","push","setMany","registerConfigCommand","validateConfig","renderHealthReport","errorMessage","registerCacheCommand","cacheCmd","getCacheReporter","type","validTypes","resolveRuntimeCache","allowDisabled","clear","clearType","renderClearResult","err","getInfo","renderCacheInfo","getCachePath","fallbackCache","registerRulesCommand","ruleName","opts","isBuiltinPreset","entries","getRuleListEntries","getRulesReporter","find","e","name","renderSingleRule","registerCommands","restoreCursor","shutdownInProgress","gracefulShutdown","flushTimeout","Promise","setTimeout","unref","race","run","Command","version","PACKAGE_VERSION","addHelpText","hook","thisCommand","actionCommand","enableDebug","actionOpts","default","parent","commandName","bgCyan","white","bold","createCacheContext","on","reason","msg","registerAllBuiltinRules","argv","slice","outputHelp","parseAsync","catch"],"mappings":"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","file":"index.cjs","sourcesContent":["export const exitWithError = (s = 1)=>{\n process.stdout.isTTY && process.stdout.write('\\x1B[?25h'), process.exit(s);\n};\n","import { getConfigReporter as r } from '@ngcompass/reporters';\nimport { initConfig as e } from '@ngcompass/config';\nimport { exitWithError as o } from './exit.js';\nexport function registerInitCommand(t, i) {\n t.command('init').description('Create a starter ngcompass configuration in the current project').option('-f, --force', 'Overwrite an existing configuration file').option('--cwd <path>', 'Project directory where the configuration will be created', process.cwd()).action(async (t)=>{\n try {\n let i = await e({\n cwd: t.cwd,\n force: t.force\n }), c = r();\n await c.renderInitResult(i), i.success || i.alreadyExists || o();\n } catch (r) {\n console.error(r instanceof Error ? r.message : String(r)), o();\n }\n });\n}\n","import t from 'picocolors';\nlet FRAMES = [\n '⠋',\n '⠙',\n '⠹',\n '⠸',\n '⠼',\n '⠴',\n '⠦',\n '⠧',\n '⠇',\n '⠏'\n];\nexport class Spinner {\n stream;\n timer = null;\n frameIndex = 0;\n message = '';\n isTTY;\n constructor(t){\n this.stream = t, this.isTTY = !!t.isTTY;\n }\n start(e) {\n (this.message = e, this.frameIndex = 0, this.isTTY) ? (this.stream.write('\\x1B[?25l'), this.render(), this.timer = setInterval(()=>this.render(), 80)) : this.stream.write(`${t.cyan('❯')} ${t.dim(e)}\\n`);\n }\n update(t) {\n this.message = t, this.isTTY && this.timer && this.render();\n }\n writeLine(t) {\n this.isTTY && this.timer ? (this.stream.write('\\r\\x1B[K'), this.stream.write(`${t}\\n`), this.render()) : this.stream.write(`${t}\\n`);\n }\n stop() {\n this.timer && (clearInterval(this.timer), this.timer = null), this.isTTY && (this.stream.write('\\r\\x1B[K'), this.stream.write('\\x1B[?25h'));\n }\n render() {\n let e = t.cyan(FRAMES[this.frameIndex % FRAMES.length]);\n this.frameIndex++, this.stream.write(`\\r\\x1B[K${e} ${t.dim(this.message)}`);\n }\n}\n","import { Option as e } from 'commander';\nimport r from 'node:path';\nimport t from 'picocolors';\nimport { DEFAULT_INCLUDE_PATTERNS as o } from '@ngcompass/common';\nimport { getReporter as n } from '@ngcompass/reporters';\nimport a from 'node:process';\nimport { createRuntimeCache as i } from '@ngcompass/cache';\nimport { exitWithError as s } from './exit.js';\nimport { Spinner as u } from '../spinner.js';\nimport { getGlobalRegistry as l, executeBatchedNewEngineRules as p, isNewEngineRule as c, resolveRules as d, getEnabledRules as m } from '@ngcompass/rules';\nimport { loadPlugins as f, resolveConfig as y } from '@ngcompass/config';\nimport { runAnalysis as g, configureRuleExecutor as w } from '@ngcompass/engine';\nimport { buildExecutionPlan as C } from '@ngcompass/planner';\nimport { scan as h } from '@ngcompass/scanner';\nlet PERFORMANCE_MODE_PRESETS = {\n eco: {\n typeAwareConcurrency: 1,\n typeAwareFileConcurrency: 1,\n typeAwareChunkSize: 100,\n typeAwareIsolation: 'auto',\n typeAwareChunkStrategy: 'dependency'\n },\n balanced: {\n typeAwareConcurrency: 2,\n typeAwareFileConcurrency: 2,\n typeAwareChunkSize: 300,\n typeAwareIsolation: 'auto',\n typeAwareChunkStrategy: 'simple'\n },\n turbo: {\n typeAwareConcurrency: 2,\n typeAwareFileConcurrency: 4,\n typeAwareChunkSize: 500,\n typeAwareIsolation: 'off',\n typeAwareChunkStrategy: 'simple'\n }\n}, PERFORMANCE_MODES = Object.keys(PERFORMANCE_MODE_PRESETS), TYPE_AWARE_ISOLATION_MODES = [\n 'auto',\n 'process',\n 'off'\n], TYPE_AWARE_CHUNK_STRATEGIES = [\n 'dependency',\n 'simple'\n];\nfunction parsePositiveIntegerOption(e, r) {\n if (void 0 === e) return;\n let t = Number(e);\n if (!Number.isInteger(t) || t < 1) throw Error(`${r} must be a positive integer.`);\n return t;\n}\nfunction normalizeReporterFormat(e) {\n return 'ui' === e ? 'html' : e ?? 'console';\n}\nfunction formatDuration(e) {\n return e < 1000 ? `${Math.max(0, Math.round(e))}ms` : `${(e / 1000).toFixed(1)}s`;\n}\nfunction pluralise(e, r) {\n return `${e.toLocaleString()} ${r}${1 === e ? '' : 's'}`;\n}\nfunction formatAnalysisProgressMessage(e, r, t) {\n return `Running analysis in ${e} mode: ${r.toLocaleString()}/${t.toLocaleString()} checks complete...`;\n}\nexport function registerAnalyzeCommand(o, l) {\n o.command('analyze').description('Analyze your project and report rule violations and architecture risks').option('-p, --profile <name>', 'Configuration profile to run').option('--force', 'Ignore cached results and re-run all checks').option('--format <fmt>', 'Reporter format: console | json | sarif | html | ui').option('--compact', 'Use compact, ESLint-style output').option('-q, --quiet', 'Show summary counts only, suppress violation details').option('--no-recommendation', 'Suppress fix recommendations from output').option('--output <path>', 'Output path for UI reports (default: ngcompass-report.html)').option('--rule <id>', 'Run only one rule (useful for debugging or focused checks)').option('--mode <mode>', 'Performance mode: eco | balanced | turbo (default: balanced)', 'balanced').option('--max-workers <n>', 'Cap the number of worker threads (lower = less memory, e.g. --max-workers 2)').addOption(new e('--type-aware-chunk-size <n>', 'Files per type-aware chunk').hideHelp()).addOption(new e('--type-aware-concurrency <n>', 'Concurrent type-aware chunks').hideHelp()).addOption(new e('--type-aware-file-concurrency <n>', 'Concurrent files per type-aware chunk').hideHelp()).addOption(new e('--type-aware-isolation <mode>', 'Type-aware isolation: auto | process | off').hideHelp()).addOption(new e('--type-aware-chunk-strategy <mode>', 'Type-aware chunk ordering: dependency | simple').hideHelp()).option('--skip-type-check', 'Skip rules that require the TypeScript type checker (fastest, lowest memory)').action(async (e)=>{\n let o = performance.now(), p = n(normalizeReporterFormat(e.format), {\n compact: !!e.compact,\n outputPath: e.output,\n quiet: !!e.quiet,\n noRecommendation: !1 === e.recommendation\n }), c = l, d = 0;\n try {\n var m;\n let s, f, y, g, w, C, h, k = await loadConfigurationStep(e, l, p);\n if (!k) {\n d = 1;\n return;\n }\n let { config: A } = k, E = (s = PERFORMANCE_MODE_PRESETS[function(e) {\n let r = e ?? 'balanced';\n if (!PERFORMANCE_MODES.includes(r)) throw Error(`Invalid performance mode \"${r}\". Expected one of: ${PERFORMANCE_MODES.join(', ')}.`);\n return r;\n }(e.mode)], f = parsePositiveIntegerOption(e.maxWorkers, '--max-workers'), y = parsePositiveIntegerOption(e.typeAwareChunkSize, '--type-aware-chunk-size'), g = parsePositiveIntegerOption(e.typeAwareConcurrency, '--type-aware-concurrency'), w = parsePositiveIntegerOption(e.typeAwareFileConcurrency, '--type-aware-file-concurrency'), {\n maxWorkers: f ?? A.maxWorkers,\n typeAwareChunkSize: y ?? s.typeAwareChunkSize,\n typeAwareConcurrency: g ?? s.typeAwareConcurrency,\n typeAwareFileConcurrency: w ?? s.typeAwareFileConcurrency,\n typeAwareIsolation: function(e) {\n if (void 0 !== e) {\n if (!TYPE_AWARE_ISOLATION_MODES.includes(e)) throw Error(`Invalid --type-aware-isolation \"${e}\". Expected one of: ${TYPE_AWARE_ISOLATION_MODES.join(', ')}.`);\n return e;\n }\n }(e.typeAwareIsolation) ?? s.typeAwareIsolation,\n typeAwareChunkStrategy: function(e) {\n if (void 0 !== e) {\n if (!TYPE_AWARE_CHUNK_STRATEGIES.includes(e)) throw Error(`Invalid --type-aware-chunk-strategy \"${e}\". Expected one of: ${TYPE_AWARE_CHUNK_STRATEGIES.join(', ')}.`);\n return e;\n }\n }(e.typeAwareChunkStrategy) ?? s.typeAwareChunkStrategy\n });\n c = i(A, a.cwd());\n let S = function(e, r) {\n if (e) return normalizeReporterFormat(e);\n switch(r){\n case 'json':\n return 'json';\n case 'sarif':\n return 'sarif';\n case 'html':\n return 'html';\n default:\n return 'console';\n }\n }(e.format, A.outputFormat);\n p = n(S, {\n compact: !!e.compact,\n outputPath: e.output ?? A.outputPath,\n quiet: !!e.quiet,\n noRecommendation: !1 === e.recommendation\n });\n let $ = await discoverFilesStep(A, e, c, p);\n if (!$) {\n d = 1;\n return;\n }\n let v = await resolveRulesStep(A, e, p);\n if (!v) {\n d = 1;\n return;\n }\n let P = await buildPlanStep($, v, c, e, p, A, E.maxWorkers);\n if (!P) {\n d = 1;\n return;\n }\n let R = 'console' === S ? a.stdout : a.stderr, F = new u(R), O = P.tasks.length + (P.skippedTasks?.length ?? 0), x = e.mode ?? 'balanced';\n F.start(formatAnalysisProgressMessage(x, 0, O));\n let b = function(e, o, n) {\n let a = new Map(), i = new Map();\n for (let r of e.tasks){\n let e = r.filePath;\n 'string' == typeof e && 0 !== e.length && (r.needsTypeChecker || r.needsProjectContext ? i.set(e, (i.get(e) ?? 0) + 1) : a.set(e, (a.get(e) ?? 0) + 1));\n }\n let s = new Map(), u = new Map(), l = new Set(), p = new Set(), c = (e, r)=>{\n let t = e.get(r.filePath), o = t ? {\n taskCount: t.taskCount + r.taskCount,\n issueCount: t.issueCount + r.issueCount,\n errorCount: t.errorCount + r.errorCount,\n warningCount: t.warningCount + r.warningCount,\n duration: t.duration + r.duration\n } : {\n taskCount: r.taskCount,\n issueCount: r.issueCount,\n errorCount: r.errorCount,\n warningCount: r.warningCount,\n duration: r.duration\n };\n return e.set(r.filePath, o), o;\n }, d = (e, a)=>{\n if (p.has(e)) return;\n p.add(e);\n let i = r.relative(n, e) || e, s = a.issueCount > 0, u = s ? t.red('❯') : t.green('❯'), l = s ? t.red(formatDuration(a.duration)) : t.green(formatDuration(a.duration));\n o(s ? `${u} ${t.red(i)} ${l} ${t.red(pluralise(a.issueCount, 'issue'))}` : `${u} ${t.dim(i)} ${l}`);\n };\n return (e)=>{\n let m = e.filePath;\n if (!p.has(m)) if (!1 === e.typeAware) {\n let u = c(s, e), f = a.get(m) ?? u.taskCount;\n if (u.taskCount < f) return;\n i.has(m) ? ((e, a)=>{\n if (l.has(e) || p.has(e)) return;\n l.add(e);\n let i = r.relative(n, e) || e, s = a.issueCount > 0, u = s ? t.red('❯') : t.green('❯'), c = s ? t.red(formatDuration(a.duration)) : t.green(formatDuration(a.duration));\n o(s ? `${u} ${t.red(i)} ${c} ${t.red(pluralise(a.issueCount, 'issue'))}` : `${u} ${t.dim(i)} ${c}`);\n })(m, u) : d(m, u);\n } else if (!0 === e.typeAware) {\n let r = c(u, e), t = i.get(m) ?? r.taskCount;\n if (r.taskCount < t) return;\n let o = s.get(m);\n d(m, o ? {\n taskCount: o.taskCount + r.taskCount,\n issueCount: o.issueCount + r.issueCount,\n errorCount: o.errorCount + r.errorCount,\n warningCount: o.warningCount + r.warningCount,\n duration: o.duration + r.duration\n } : r);\n } else {\n let r = (a.get(m) ?? 0) + (i.get(m) ?? 0), t = c(s, e);\n if (t.taskCount < (r || t.taskCount)) return;\n d(m, t);\n }\n };\n }(P, (e)=>F.writeLine(e), a.cwd()), T = await runAnalysisStep(P, c, E, e, p, $, A, (e, r)=>{\n F.update(formatAnalysisProgressMessage(x, e, r));\n }, b);\n if (F.stop(), !T) {\n d = 1;\n return;\n }\n let I = performance.now() - o, _ = {\n scannedFiles: new Set([\n ...P.tasks.map((e)=>e.filePath),\n ...(P.skippedTasks ?? []).map((e)=>e.filePath)\n ]).size,\n discoveredFiles: $.length,\n totalFiles: T.stats.totalFiles,\n totalTasks: P.tasks.length + (P.skippedTasks?.length ?? 0),\n cachedTasks: P.precomputedAnalysis ? P.tasks.length : void 0,\n totalErrors: T.stats.totalErrors,\n totalWarnings: T.stats.totalWarnings,\n failOnSeverity: A.failOnSeverity,\n maxWarnings: A.maxWarnings,\n duration: I\n };\n 'console' === S && p.summary(_), p.parseErrors(T.parseErrors), p.report(T.results), 'console' !== S && (p.step('❯ Writing report...'), p.summary(_)), P.precomputedAnalysis || await saveToCacheStep(T.results, c, e, p), m = T.stats, C = A.failOnSeverity ?? 'error', h = A.maxWarnings ?? 10, (m.totalErrors > 0 || 'warn' === C && m.totalWarnings > 0 || m.totalWarnings > h) && (d = 1);\n } catch (e) {\n p.error(e), d = 1;\n } finally{\n c && c !== l && await c.flush(), 0 !== d && s(d);\n }\n });\n}\nasync function loadConfigurationStep(e, r, t) {\n let o = performance.now();\n t.step('❯ Loading configuration...');\n let n = await y({\n profile: e.profile,\n cache: r,\n cwd: a.cwd()\n });\n if (!n.report.valid) {\n let e = n.report.issues.map((e)=>{\n let r = e.path?.join('.') || 'root';\n return `[${e.severity.toUpperCase()}] ${r}: ${e.message}`;\n });\n return t.error(Error([\n 'Configuration validation failed',\n ...e\n ].join('\\n'))), null;\n }\n if (!n.config) return t.error(Error('No configuration found')), null;\n let i = n.config.plugins;\n if (i && i.length > 0) {\n t.step(`❯ Loading ${i.length} plugin(s)...`);\n let e = a.cwd();\n await f(i, e, l()), t.info(`Loaded ${i.length} plugin(s)`);\n }\n return t.debug(`Config resolve: ${(performance.now() - o).toFixed(2)}ms`), {\n config: n.config\n };\n}\nasync function discoverFilesStep(e, t, n, i) {\n let s = performance.now();\n i.step('❯ Discovering files...');\n let u = await h({\n rootDir: a.cwd(),\n include: e.include ?? [\n ...o\n ],\n exclude: e.exclude ?? [],\n ignorePatterns: e.ignorePatterns,\n tsConfigPath: function(e, t) {\n if (!e?.project) return;\n let o = e.tsconfigRootDir ? r.resolve(t, e.tsconfigRootDir) : t;\n return r.resolve(o, e.project);\n }(e.parserOptions, a.cwd()),\n respectGitignore: !0,\n debug: t.debug,\n cache: n\n });\n return u.ok ? (i.info(`❯ Found ${u.data.files.length} files in ${(performance.now() - s).toFixed(0)}ms`), i.debug(`File discovery: ${(performance.now() - s).toFixed(2)}ms`), u.data.files) : (i.error(Error(`File discovery failed: ${u.error.message}`)), null);\n}\nasync function resolveRulesStep(e, r, t) {\n let o = performance.now();\n t.step('❯ Loading rules...');\n let n = e;\n r.rule && (t.info(`Filtering analysis to single rule: ${r.rule}`), n = {\n ...e,\n rules: {\n [r.rule]: 'error'\n },\n extends: []\n });\n let a = await d(n);\n if (!a.ok) return t.error(Error(`Rule resolution failed: ${a.error.message}`)), null;\n let i = m(a.data.rules);\n return t.info(`❯ Loaded ${i.size} active rules in ${(performance.now() - o).toFixed(0)}ms`), t.debug(`Rule resolution: ${(performance.now() - o).toFixed(2)}ms`), i;\n}\nasync function buildPlanStep(e, r, t, o, n, i, s) {\n let u = performance.now();\n n.step('❯ Planning analysis...');\n let l = await C({\n files: e,\n rules: r,\n rootDir: a.cwd(),\n cache: t,\n debug: o.debug,\n incremental: o.force ? {\n forceRerun: !0\n } : void 0,\n workerCount: s,\n overrides: i.overrides\n });\n return l.ok ? (l.data.precomputedAnalysis ? n.info('❯ Reused cached analysis plan') : n.info(`❯ Prepared ${l.data.tasks.length.toLocaleString()} checks in ${(performance.now() - u).toFixed(0)}ms`), n.debug(`Plan build: ${(performance.now() - u).toFixed(2)}ms`), l.data) : (n.error(Error(`Execution plan building failed: ${l.error.message}`)), null);\n}\nasync function runAnalysisStep(e, r, t, o, n, i, s, u, l) {\n let d = performance.now();\n w(p, c);\n let m = await g(e, {\n rootDir: a.cwd(),\n cache: r,\n debug: o.debug,\n files: i,\n maxWorkers: t.maxWorkers,\n typeAwareChunkSize: t.typeAwareChunkSize,\n typeAwareConcurrency: t.typeAwareConcurrency,\n typeAwareFileConcurrency: t.typeAwareFileConcurrency,\n typeAwareIsolation: t.typeAwareIsolation,\n typeAwareChunkStrategy: t.typeAwareChunkStrategy,\n skipTypeCheck: o.skipTypeCheck,\n parserOptions: s?.parserOptions,\n onProgress: u,\n onFileProgress: l\n });\n return m.ok ? (n.debug(`Execution: ${(performance.now() - d).toFixed(2)}ms`), m.data) : (n.error(Error(`Analysis failed: ${m.error.message}`)), null);\n}\nasync function saveToCacheStep(e, r, t, o) {\n if (!r) return;\n let n = performance.now(), a = [];\n for (let r of e)r.taskId && a.push([\n r.taskId,\n r\n ]);\n a.length > 0 && (await r.results.setMany(a), t.debug && o.debug(`Saved ${a.length} results to cache (${(performance.now() - n).toFixed(2)}ms)`));\n}\n","import { getConfigReporter as o } from '@ngcompass/reporters';\nimport { validateConfig as r } from '@ngcompass/config';\nimport { exitWithError as e } from './exit.js';\nexport function registerConfigCommand(i, t) {\n i.command('config').description('Inspect and validate ngcompass configuration').command('health').description('Run semantic validation checks for the active configuration').option('-p, --profile <name>', 'Configuration profile to validate').action(async (i)=>{\n try {\n let a = await r({\n cache: i.cache ? t : void 0,\n profile: i.profile\n }), n = o();\n await n.renderHealthReport(a.report), a.report.valid || e();\n } catch (r) {\n let o = r instanceof Error ? r.message : String(r);\n console.error(`Error: ${o}`), e();\n }\n });\n}\n","import { createRuntimeCache as e } from '@ngcompass/cache';\nimport { getCacheReporter as o } from '@ngcompass/reporters';\nimport { resolveConfig as a } from '@ngcompass/config';\nimport r from 'picocolors';\nimport t from 'node:process';\nimport { exitWithError as i } from './exit.js';\nexport function registerCacheCommand(e, a) {\n let c = e.command('cache').description('Inspect and manage analysis cache data');\n c.command('clear').description('Clear cached data for one cache type or all cache types').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').option('--type <type>', 'Cache type to clear: ast | config | results | all', 'all').action(async (e)=>{\n let c = o();\n t.stdout.write(r.dim(' › Clearing cache...\\n'));\n let l = e.type, n = [\n 'ast',\n 'config',\n 'results',\n 'all'\n ];\n n.includes(l) || (console.error(r.red(`Invalid cache type: ${l}. Must be one of: ${n.join(', ')}`)), i());\n try {\n let o = await resolveRuntimeCache(a, {\n profile: e.profile,\n allowDisabled: !0\n });\n 'all' === l ? await o.clear() : await o.clearType(l), c.renderClearResult(l);\n } catch (e) {\n console.error(r.red('Error clearing cache:'), e), i();\n }\n }), c.command('info').description('Show cache status, size, and usage details').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').action(async (e)=>{\n let t = o();\n try {\n let o = await resolveRuntimeCache(a, {\n profile: e.profile,\n allowDisabled: !0\n }), r = await o.getInfo();\n t.renderCacheInfo(r);\n } catch (e) {\n console.error(r.red('Error getting cache info:'), e), i();\n }\n }), c.command('path').description('Print the resolved cache directory path').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').action(async (e)=>{\n let o = await resolveRuntimeCache(a, {\n profile: e.profile,\n allowDisabled: !0\n });\n t.stdout.write(`${o.getCachePath()}\\n`);\n });\n}\nasync function resolveRuntimeCache(o, r = {}) {\n let i = r.cwd ?? t.cwd();\n try {\n let t = await a({\n profile: r.profile,\n cache: o,\n cwd: i\n });\n if (!t.report.valid || !t.config) return o;\n return e(t.config, i, {\n allowDisabled: r.allowDisabled\n }) ?? o;\n } catch {\n return o;\n }\n}\n","import { getRulesReporter as e } from '@ngcompass/reporters';\nimport { getRuleListEntries as r, isBuiltinPreset as o } from '@ngcompass/rules';\nimport s from 'picocolors';\nimport { exitWithError as t } from './exit.js';\nexport function registerRulesCommand(i) {\n i.command('rules [ruleName]').description('Browse available rules or inspect details for a specific rule').option('--preset <name>', 'Filter by preset: recommended, strict, performance, reactivity, or all').action((i, l)=>{\n l.preset && !o(l.preset) && (console.error(s.red(`Unknown preset: \"${l.preset}\".`)), console.error(s.dim('Available presets: recommended, strict, all, performance, reactivity')), t());\n let n = r(), m = e({\n preset: l.preset\n });\n if (i) {\n let e = n.find((e)=>e.name === i);\n if (!e) {\n console.error(s.red(`Rule \"${i}\" not found.`)), console.error(s.dim('Run `ngcompass rules` to list available rules.')), t();\n return;\n }\n m.renderSingleRule(e);\n } else m.render(n);\n });\n}\n","import { registerInitCommand as o } from './init.js';\nimport { registerAnalyzeCommand as r } from './analyze.js';\nimport { registerConfigCommand as m } from './config.js';\nimport { registerCacheCommand as i } from './cache.js';\nimport { registerRulesCommand as t } from './rules.js';\nexport function registerCommands(s, f) {\n o(s, f), r(s, f), m(s, f), i(s, f), t(s);\n}\n","import { Command as r } from 'commander';\nimport { registerCommands as o } from '../commands/index.js';\nimport { enableDebug as e, PACKAGE_VERSION as s } from '@ngcompass/common';\nimport { createCacheContext as n } from '@ngcompass/cache';\nimport { registerAllBuiltinRules as t } from '@ngcompass/rules';\nlet restoreCursor = ()=>{\n process.stdout.isTTY && process.stdout.write('\\x1B[?25h');\n}, shutdownInProgress = !1, gracefulShutdown = async (r, o)=>{\n if (!shutdownInProgress) {\n if (shutdownInProgress = !0, restoreCursor(), r) try {\n let o = new Promise((r)=>setTimeout(r, 10_000).unref());\n await Promise.race([\n r.flush(),\n o\n ]);\n } catch {}\n process.exit(o);\n }\n};\nexport async function run() {\n let a = new r();\n a.name('ngcompass').description('Static analysis and architecture insights for Angular codebases.').version(s, '-V, --version', 'Display ngcompass version').option('--debug', 'Enable detailed debug logs across all modules').addHelpText('after', '\\nExamples:\\n $ ngcompass init\\n $ ngcompass analyze --profile strict\\n $ ngcompass cache info\\n').hook('preAction', async (r, o)=>{\n r.opts().debug && e('debug', 'all');\n let n = o.opts();\n if ('json' !== n.format && 'sarif' !== n.format && 'html' !== n.format && 'ui' !== n.format) {\n let { default: r } = await import('picocolors'), e = o.parent, n = e && 'ngcompass' !== e.name() ? e.name() : o.name(), t = process.cwd();\n process.stdout.write(`\\n${r.dim('>')} ${r.dim(`ngcompass@${s}`)} ${r.dim(n)} ${r.dim(t)}\\n${r.dim('>')} ${r.dim('ngcompass')} ${r.dim('run')}\\n\\n ${r.bgCyan(r.white(r.bold(` ${n.toUpperCase()} `)))} ${r.cyan(s)} ${r.dim(t)}\\n\\n`);\n }\n });\n let c = n();\n process.on('SIGINT', ()=>void gracefulShutdown(c, 130)), process.on('SIGTERM', ()=>void gracefulShutdown(c, 143)), process.on('uncaughtException', (r)=>{\n restoreCursor(), console.error(`\\n[ngcompass] Unexpected error: ${r.message}`), gracefulShutdown(c, 1);\n }), process.on('unhandledRejection', (r)=>{\n restoreCursor();\n let o = r instanceof Error ? r.message : String(r);\n console.error(`\\n[ngcompass] Unhandled promise rejection: ${o}`), gracefulShutdown(c, 1);\n });\n try {\n if (t(), o(a, c), !process.argv.slice(2).length) return void a.outputHelp();\n await a.parseAsync(process.argv), await c.flush(), process.exit(0);\n } catch (o) {\n restoreCursor();\n let r = o instanceof Error ? o.message : String(o);\n console.error(`[ngcompass] Fatal error: ${r}`), await gracefulShutdown(c, 1);\n }\n}\nrun().catch((r)=>{\n restoreCursor();\n let o = r instanceof Error ? r.message : String(r);\n console.error(`[ngcompass] Fatal error: ${o}`), process.exit(1);\n});\n"]}
{"version":3,"sources":["../src/commands/exit.ts","../src/commands/init.ts","../src/spinner.ts","../src/commands/analyze/options.ts","../src/commands/analyze/resolve.ts","../src/commands/analyze/steps.ts","../src/commands/analyze/progress.ts","../src/commands/analyze/index.ts","../src/commands/config.ts","../src/commands/cache.ts","../src/commands/rules.ts","../src/commands/index.ts","../src/bin/ngcompass.ts"],"names":["restoreCursor","process","stdout","isTTY","write","exitWithError","code","exit","printError","message","detail","tail","undefined","Error","String","console","error","pc","red","registerInitCommand","program","_cache","command","description","option","cwd","action","options","result","initConfig","force","getConfigReporter","renderInitResult","success","alreadyExists","FRAMES","Spinner","timer","frameIndex","stream","start","render","setInterval","cyan","dim","update","writeLine","line","stop","clearInterval","frame","length","PERFORMANCE_MODE_PRESETS","eco","typeAwareConcurrency","typeAwareFileConcurrency","typeAwareChunkSize","typeAwareIsolation","typeAwareChunkStrategy","balanced","turbo","PERFORMANCE_MODES","PERFORMANCE_MODE_VALUES","Set","parsePositiveIntegerOption","value","optionName","parsed","Number","isInteger","resolvePerformanceOptions","config","preset","mode","has","join","maxWorkers","normalizeReporterFormat","format","resolveReporterFormat","cliFormat","configFormat","shouldFailAnalysis","stats","failOnSeverity","maxWarnings","totalErrors","totalWarnings","resolveParserProjectPath","parserOptions","project","rootDir","tsconfigRootDir","path","resolve","toError","getAnalyzeMode","formatAnalysisProgressMessage","completed","total","toLocaleString","loadConfigurationStep","cache","reporter","tStart","performance","now","step","configResult","resolveConfig","profile","report","valid","issueLines","issues","map","issue","pathString","severity","toUpperCase","pluginList","plugins","configDir","loadPlugins","getGlobalRegistry","info","debug","toFixed","discoverFilesStep","scanResult","scan","include","DEFAULT_INCLUDE_PATTERNS","exclude","ignorePatterns","tsConfigPath","respectGitignore","ok","data","files","resolveRulesStep","effectiveConfig","rule","rules","extends","rulesResult","resolveRules","enabledRules","getEnabledRules","size","buildPlanStep","planResult","buildExecutionPlan","incremental","forceRerun","workerCount","overrides","precomputedAnalysis","tasks","runAnalysisStep","plan","performanceOptions","onProgress","onFileProgress","configureRuleExecutor","executeBatchedNewEngineRules","isNewEngineRule","runAnalysis","skipTypeCheck","saveToCacheStep","results","cacheEntries","taskId","push","setMany","ZERO_ACC","taskCount","issueCount","errorCount","warningCount","duration","buildExpectedMap","typeAware","Map","task","fp","filePath","needsTypeChecker","needsProjectContext","set","get","mergeAcc","prev","event","base","createFileProgressLogger","syntaxExpected","typeAwareExpected","syntaxDone","typeAwareDone","syntaxPrinted","finalPrinted","print","acc","isFinal","guard","add","relativePath","hasIssues","status","green","dur","formatDuration","pluralise","relative","expected","a","totalExpected","registerAnalyzeCommand","startTime","getReporter","compact","outputPath","output","quiet","noRecommendation","recommendation","activeCache","exitCode","createRuntimeCache","reporterFormat","outputFormat","progressStream","stderr","spinner","totalChecks","skippedTasks","logFileProgress","analysis","summary","scannedFiles","t","discoveredFiles","totalFiles","totalTasks","cachedTasks","parseErrors","flush","registerConfigCommand","validateConfig","renderHealthReport","CACHE_CLEAR_TYPES","CACHE_CLEAR_TYPE_VALUES","registerCacheCommand","cacheCmd","type","getCacheReporter","resolveRuntimeCache","allowDisabled","clear","clearType","renderClearResult","err","getInfo","renderCacheInfo","getCachePath","fallbackCache","registerRulesCommand","ruleName","opts","isBuiltinPreset","entries","getRuleListEntries","getRulesReporter","find","e","name","renderSingleRule","registerCommands","shutdownInProgress","gracefulShutdown","flushTimeout","Promise","setTimeout","unref","race","handleFatalAsyncFailure","label","reason","printRunBanner","commandName","default","PACKAGE_VERSION","bgCyan","white","bold","run","Command","version","addHelpText","hook","thisCommand","actionCommand","enableDebug","parent","createCacheContext","on","registerAllBuiltinRules","argv","slice","outputHelp","parseAsync","catch"],"mappings":"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","file":"index.cjs","sourcesContent":["import r from 'picocolors';\nexport const restoreCursor = ()=>{\n process.stdout.isTTY && process.stdout.write('\\x1B[?25h');\n};\nexport const exitWithError = (r = 1)=>{\n restoreCursor(), process.exit(r);\n};\nexport const printError = (o, s)=>{\n let t = void 0 === s ? '' : `: ${s instanceof Error ? s.message : String(s)}`;\n console.error(`${r.red(o)}${t}`);\n};\n","import { getConfigReporter as r } from '@ngcompass/reporters';\nimport { initConfig as t } from '@ngcompass/config';\nimport { exitWithError as i, printError as o } from './exit.js';\nexport function registerInitCommand(e, n) {\n e.command('init').description('Create a starter ngcompass configuration in the current project').option('-f, --force', 'Overwrite an existing configuration file').option('--cwd <path>', 'Project directory where the configuration will be created', process.cwd()).action(async (e)=>{\n try {\n let o = await t({\n cwd: e.cwd,\n force: e.force\n }), n = r();\n await n.renderInitResult(o), o.success || o.alreadyExists || i();\n } catch (r) {\n o('Error initializing configuration', r), i();\n }\n });\n}\n","import t from 'picocolors';\nlet FRAMES = [\n '⠋',\n '⠙',\n '⠹',\n '⠸',\n '⠼',\n '⠴',\n '⠦',\n '⠧',\n '⠇',\n '⠏'\n];\nexport class Spinner {\n stream;\n timer = null;\n frameIndex = 0;\n message = '';\n isTTY;\n constructor(t){\n this.stream = t, this.isTTY = !!t.isTTY;\n }\n start(e) {\n (this.message = e, this.frameIndex = 0, this.isTTY) ? (this.stream.write('\\x1B[?25l'), this.render(), this.timer = setInterval(()=>this.render(), 80)) : this.stream.write(`${t.cyan('❯')} ${t.dim(e)}\\n`);\n }\n update(t) {\n this.message = t, this.isTTY && this.timer && this.render();\n }\n writeLine(t) {\n this.isTTY && this.timer ? (this.stream.write('\\r\\x1B[K'), this.stream.write(`${t}\\n`), this.render()) : this.stream.write(`${t}\\n`);\n }\n stop() {\n this.timer && (clearInterval(this.timer), this.timer = null), this.isTTY && (this.stream.write('\\r\\x1B[K'), this.stream.write('\\x1B[?25h'));\n }\n render() {\n let e = t.cyan(FRAMES[this.frameIndex % FRAMES.length]);\n this.frameIndex++, this.stream.write(`\\r\\x1B[K${e} ${t.dim(this.message)}`);\n }\n}\n","let PERFORMANCE_MODE_PRESETS = {\n eco: {\n typeAwareConcurrency: 1,\n typeAwareFileConcurrency: 1,\n typeAwareChunkSize: 100,\n typeAwareIsolation: 'auto',\n typeAwareChunkStrategy: 'dependency'\n },\n balanced: {\n typeAwareConcurrency: 1,\n typeAwareFileConcurrency: 1,\n typeAwareChunkSize: 150,\n typeAwareIsolation: 'auto',\n typeAwareChunkStrategy: 'dependency'\n },\n turbo: {\n typeAwareConcurrency: 2,\n typeAwareFileConcurrency: 4,\n typeAwareChunkSize: 500,\n typeAwareIsolation: 'off',\n typeAwareChunkStrategy: 'simple'\n }\n}, PERFORMANCE_MODES = [\n 'eco',\n 'balanced',\n 'turbo'\n], PERFORMANCE_MODE_VALUES = new Set(PERFORMANCE_MODES);\nexport function parsePositiveIntegerOption(e, r) {\n if (void 0 === e) return;\n let t = Number(e);\n if (!Number.isInteger(t) || t < 1) throw Error(`${r} must be a positive integer.`);\n return t;\n}\nexport function resolvePerformanceOptions(e, r) {\n let t = PERFORMANCE_MODE_PRESETS[function(e) {\n let r = e ?? 'balanced';\n if (!PERFORMANCE_MODE_VALUES.has(r)) throw Error(`Invalid performance mode \"${r}\". Expected one of: ${PERFORMANCE_MODES.join(', ')}.`);\n return r;\n }(e.mode)];\n return {\n maxWorkers: parsePositiveIntegerOption(e.maxWorkers, '--max-workers') ?? r.maxWorkers,\n typeAwareChunkSize: t.typeAwareChunkSize,\n typeAwareConcurrency: t.typeAwareConcurrency,\n typeAwareFileConcurrency: t.typeAwareFileConcurrency,\n typeAwareIsolation: t.typeAwareIsolation,\n typeAwareChunkStrategy: t.typeAwareChunkStrategy\n };\n}\n","import r from 'node:path';\nexport function normalizeReporterFormat(r) {\n return 'ui' === r ? 'html' : r ?? 'console';\n}\nexport function resolveReporterFormat(r, e) {\n if (r) return normalizeReporterFormat(r);\n switch(e){\n case 'json':\n return 'json';\n case 'sarif':\n return 'sarif';\n case 'html':\n return 'html';\n default:\n return 'console';\n }\n}\nexport function shouldFailAnalysis(r, e) {\n let t = r.failOnSeverity ?? 'error', o = r.maxWarnings ?? 10;\n return e.totalErrors > 0 || 'warn' === t && e.totalWarnings > 0 || e.totalWarnings > o;\n}\nexport function resolveParserProjectPath(e, t) {\n if (!e?.project) return;\n let o = e.tsconfigRootDir ? r.resolve(t, e.tsconfigRootDir) : t;\n return r.resolve(o, e.project);\n}\nexport function toError(r) {\n return r instanceof Error ? r : Error(String(r));\n}\nexport function getAnalyzeMode(r) {\n return r.mode ?? 'balanced';\n}\nexport function formatAnalysisProgressMessage(r, e, t) {\n return `Running analysis in ${r} mode: ${e.toLocaleString()}/${t.toLocaleString()} checks complete...`;\n}\n","import e from 'node:process';\nimport { DEFAULT_INCLUDE_PATTERNS as r } from '@ngcompass/common';\nimport { loadPlugins as o, resolveConfig as n } from '@ngcompass/config';\nimport { configureRuleExecutor as t, runAnalysis as i } from '@ngcompass/engine';\nimport { buildExecutionPlan as a } from '@ngcompass/planner';\nimport { scan as s } from '@ngcompass/scanner';\nimport { executeBatchedNewEngineRules as l, getEnabledRules as p, getGlobalRegistry as c, isNewEngineRule as u, resolveRules as d } from '@ngcompass/rules';\nimport { resolveParserProjectPath as f } from './resolve.js';\nexport async function loadConfigurationStep(r, t, i) {\n let a = performance.now();\n i.step('❯ Loading configuration...');\n let s = await n({\n profile: r.profile,\n cache: t,\n cwd: e.cwd()\n });\n if (!s.report.valid) {\n let e = s.report.issues.map((e)=>{\n let r = e.path?.join('.') || 'root';\n return `[${e.severity.toUpperCase()}] ${r}: ${e.message}`;\n });\n return i.error(Error([\n 'Configuration validation failed',\n ...e\n ].join('\\n'))), null;\n }\n if (!s.config) return i.error(Error('No configuration found')), null;\n let l = s.config.plugins;\n if (l && l.length > 0) {\n i.step(`❯ Loading ${l.length} plugin(s)...`);\n let r = e.cwd();\n await o(l, r, c()), i.info(`Loaded ${l.length} plugin(s)`);\n }\n return i.debug(`Config resolve: ${(performance.now() - a).toFixed(2)}ms`), {\n config: s.config\n };\n}\nexport async function discoverFilesStep(o, n, t, i) {\n let a = performance.now();\n i.step('❯ Discovering files...');\n let l = await s({\n rootDir: e.cwd(),\n include: o.include ?? [\n ...r\n ],\n exclude: o.exclude ?? [],\n ignorePatterns: o.ignorePatterns,\n tsConfigPath: f(o.parserOptions, e.cwd()),\n respectGitignore: !0,\n debug: n.debug,\n cache: t\n });\n return l.ok ? (i.info(`❯ Found ${l.data.files.length} files in ${(performance.now() - a).toFixed(0)}ms`), i.debug(`File discovery: ${(performance.now() - a).toFixed(2)}ms`), l.data.files) : (i.error(Error(`File discovery failed: ${l.error.message}`)), null);\n}\nexport async function resolveRulesStep(r, o, n) {\n let t = performance.now();\n n.step('❯ Loading rules...');\n let i = r;\n o.rule && (n.info(`Filtering analysis to single rule: ${o.rule}`), i = {\n ...r,\n rules: {\n [o.rule]: 'error'\n },\n extends: []\n });\n let a = await d(i, e.cwd());\n if (!a.ok) return n.error(Error(`Rule resolution failed: ${a.error.message}`)), null;\n let s = p(a.data.rules);\n return n.info(`❯ Loaded ${s.size} active rules in ${(performance.now() - t).toFixed(0)}ms`), n.debug(`Rule resolution: ${(performance.now() - t).toFixed(2)}ms`), s;\n}\nexport async function buildPlanStep(r, o, n, t, i, s, l) {\n let p = performance.now();\n i.step('❯ Planning analysis...');\n let c = await a({\n files: r,\n rules: o,\n rootDir: e.cwd(),\n cache: n,\n debug: t.debug,\n incremental: t.force ? {\n forceRerun: !0\n } : void 0,\n workerCount: l,\n overrides: s.overrides\n });\n return c.ok ? (c.data.precomputedAnalysis ? i.info('❯ Reused cached analysis plan') : i.info(`❯ Prepared ${c.data.tasks.length.toLocaleString()} checks in ${(performance.now() - p).toFixed(0)}ms`), i.debug(`Plan build: ${(performance.now() - p).toFixed(2)}ms`), c.data) : (i.error(Error(`Execution plan building failed: ${c.error.message}`)), null);\n}\nexport async function runAnalysisStep(r, o, n, a, s, p, c, d, f) {\n let g = performance.now();\n t(l, u);\n let m = await i(r, {\n rootDir: e.cwd(),\n cache: o,\n debug: a.debug,\n files: p,\n maxWorkers: n.maxWorkers,\n typeAwareChunkSize: n.typeAwareChunkSize,\n typeAwareConcurrency: n.typeAwareConcurrency,\n typeAwareFileConcurrency: n.typeAwareFileConcurrency,\n typeAwareIsolation: n.typeAwareIsolation,\n typeAwareChunkStrategy: n.typeAwareChunkStrategy,\n skipTypeCheck: a.skipTypeCheck,\n parserOptions: c?.parserOptions,\n onProgress: d,\n onFileProgress: f\n });\n return m.ok ? (s.debug(`Execution: ${(performance.now() - g).toFixed(2)}ms`), m.data) : (s.error(Error(`Analysis failed: ${m.error.message}`)), null);\n}\nexport async function saveToCacheStep(e, r, o, n) {\n if (!r) return;\n let t = performance.now(), i = [];\n for (let r of e)r.taskId && i.push([\n r.taskId,\n r\n ]);\n i.length > 0 && (await r.results.setMany(i), o.debug && n.debug(`Saved ${i.length} results to cache (${(performance.now() - t).toFixed(2)}ms)`));\n}\n","import t from 'node:path';\nimport e from 'picocolors';\nimport { formatDuration as n, pluralise as r } from '@ngcompass/common';\nlet ZERO_ACC = {\n taskCount: 0,\n issueCount: 0,\n errorCount: 0,\n warningCount: 0,\n duration: 0\n};\nfunction buildExpectedMap(t, e) {\n let n = new Map();\n for (let r of t.tasks){\n let t = r.filePath;\n 'string' == typeof t && 0 !== t.length && (r.needsTypeChecker || r.needsProjectContext) === e && n.set(t, (n.get(t) ?? 0) + 1);\n }\n return n;\n}\nfunction mergeAcc(t, e) {\n let n = t ?? ZERO_ACC;\n return {\n taskCount: n.taskCount + e.taskCount,\n issueCount: n.issueCount + e.issueCount,\n errorCount: n.errorCount + e.errorCount,\n warningCount: n.warningCount + e.warningCount,\n duration: n.duration + e.duration\n };\n}\nexport function createFileProgressLogger(o, u, s) {\n let i = buildExpectedMap(o, !1), a = buildExpectedMap(o, !0), C = new Map(), g = new Map(), d = new Set(), l = new Set(), c = (o, i, a)=>{\n if (l.has(o)) return;\n let C = a ? l : d;\n C.has(o) || (C.add(o), u(function(t, o) {\n let u = o.issueCount > 0, s = u ? e.red('❯') : e.green('❯'), i = u ? e.red(n(o.duration)) : e.green(n(o.duration));\n if (u) {\n let n = `${o.issueCount.toLocaleString()} ${r(o.issueCount, 'issue')}`;\n return `${s} ${e.red(t)} ${i} ${e.red(n)}`;\n }\n return `${s} ${e.dim(t)} ${i}`;\n }(t.relative(s, o) || o, i)));\n };\n return (t)=>{\n let e = t.filePath;\n if (l.has(e)) return;\n if (!1 === t.typeAware) {\n let n = mergeAcc(C.get(e), t);\n C.set(e, n);\n let r = i.get(e) ?? n.taskCount;\n if (n.taskCount < r) return;\n c(e, n, !a.has(e));\n return;\n }\n if (!0 === t.typeAware) {\n var n;\n let r = mergeAcc(g.get(e), t);\n g.set(e, r);\n let o = a.get(e) ?? r.taskCount;\n if (r.taskCount < o) return;\n c(e, (n = C.get(e), n ? {\n taskCount: n.taskCount + r.taskCount,\n issueCount: n.issueCount + r.issueCount,\n errorCount: n.errorCount + r.errorCount,\n warningCount: n.warningCount + r.warningCount,\n duration: n.duration + r.duration\n } : r), !0);\n return;\n }\n let r = (i.get(e) ?? 0) + (a.get(e) ?? 0), o = mergeAcc(C.get(e), t);\n C.set(e, o), o.taskCount < (r || o.taskCount) || c(e, o, !0);\n };\n}\n","import t from 'node:process';\nimport { createRuntimeCache as e } from '@ngcompass/cache';\nimport { getReporter as o } from '@ngcompass/reporters';\nimport { Spinner as r } from '../../spinner.js';\nimport { exitWithError as s } from '../exit.js';\nimport { resolvePerformanceOptions as a } from './options.js';\nimport { formatAnalysisProgressMessage as n, getAnalyzeMode as i, normalizeReporterFormat as p, resolveReporterFormat as m, shouldFailAnalysis as l, toError as c } from './resolve.js';\nimport { buildPlanStep as u, discoverFilesStep as f, loadConfigurationStep as d, resolveRulesStep as h, runAnalysisStep as k, saveToCacheStep as g } from './steps.js';\nimport { createFileProgressLogger as y } from './progress.js';\nexport function registerAnalyzeCommand(w, j) {\n w.command('analyze').description('Analyze your project and report rule violations and architecture risks').option('-p, --profile <name>', 'Configuration profile to run').option('--force', 'Ignore cached results and re-run all checks').option('--format <fmt>', 'Reporter format: console | json | sarif | html | ui').option('--compact', 'Use compact, ESLint-style output').option('-q, --quiet', 'Show summary counts only, suppress violation details').option('--no-recommendation', 'Suppress fix recommendations from output').option('--output <path>', 'Output path for UI reports (default: ngcompass-report.html)').option('--rule <id>', 'Run only one rule (useful for debugging or focused checks)').option('--mode <mode>', 'Performance mode: eco | balanced | turbo (default: balanced)', 'balanced').option('--max-workers <n>', 'Cap the number of worker threads (lower = less memory, e.g. --max-workers 2)').option('--skip-type-check', 'Skip rules that require the TypeScript type checker (fastest, lowest memory)').action(async (w)=>{\n let x = performance.now(), S = o(p(w.format), {\n compact: !!w.compact,\n outputPath: w.output,\n quiet: !!w.quiet,\n noRecommendation: !1 === w.recommendation\n }), q = j, v = 0;\n try {\n let s = await d(w, j, S);\n if (!s) {\n v = 1;\n return;\n }\n let { config: p } = s, c = a(w, p);\n q = e(p, t.cwd());\n let b = m(w.format, p.outputFormat);\n S = o(b, {\n compact: !!w.compact,\n outputPath: w.output ?? p.outputPath,\n quiet: !!w.quiet,\n noRecommendation: !1 === w.recommendation\n });\n let P = await f(p, w, q, S);\n if (!P) {\n v = 1;\n return;\n }\n let T = await h(p, w, S);\n if (!T) {\n v = 1;\n return;\n }\n let W = await u(P, T, q, w, S, p, c.maxWorkers);\n if (!W) {\n v = 1;\n return;\n }\n let E = 'console' === b ? t.stdout : t.stderr, F = new r(E), z = W.tasks.length + (W.skippedTasks?.length ?? 0), A = i(w);\n F.start(n(A, 0, z));\n let R = y(W, (t)=>F.writeLine(t), t.cwd()), C = await k(W, q, c, w, S, P, p, (t, e)=>{\n F.update(n(A, t, e));\n }, R);\n if (F.stop(), !C) {\n v = 1;\n return;\n }\n let O = performance.now() - x, I = {\n scannedFiles: new Set([\n ...W.tasks.map((t)=>t.filePath),\n ...(W.skippedTasks ?? []).map((t)=>t.filePath)\n ]).size,\n discoveredFiles: P.length,\n totalFiles: C.stats.totalFiles,\n totalTasks: W.tasks.length + (W.skippedTasks?.length ?? 0),\n cachedTasks: W.precomputedAnalysis ? W.tasks.length : void 0,\n totalErrors: C.stats.totalErrors,\n totalWarnings: C.stats.totalWarnings,\n failOnSeverity: p.failOnSeverity,\n maxWarnings: p.maxWarnings,\n duration: O\n };\n 'console' === b && S.summary(I), S.parseErrors(C.parseErrors), S.report(C.results), 'console' !== b && (S.step('❯ Writing report...'), S.summary(I)), W.precomputedAnalysis || await g(C.results, q, w, S), l(p, C.stats) && (v = 1);\n } catch (t) {\n S.error(c(t)), v = 1;\n } finally{\n q && q !== j && await q.flush(), 0 !== v && s(v);\n }\n });\n}\n","import o from 'node:process';\nimport { getConfigReporter as r } from '@ngcompass/reporters';\nimport { validateConfig as i } from '@ngcompass/config';\nimport { exitWithError as t, printError as e } from './exit.js';\nexport function registerConfigCommand(a, n) {\n a.command('config').description('Inspect and validate ngcompass configuration').command('health').description('Run semantic validation checks for the active configuration').option('-p, --profile <name>', 'Configuration profile to validate').action(async (a)=>{\n try {\n let e = await i({\n cwd: o.cwd(),\n cache: a.cache ? n : void 0,\n profile: a.profile\n }), c = r();\n await c.renderHealthReport(e.report), e.report.valid || t();\n } catch (o) {\n e('Error', o), t();\n }\n });\n}\n","import { createRuntimeCache as e } from '@ngcompass/cache';\nimport { getCacheReporter as a } from '@ngcompass/reporters';\nimport { resolveConfig as o } from '@ngcompass/config';\nimport t from 'picocolors';\nimport r from 'node:process';\nimport { exitWithError as i, printError as c } from './exit.js';\nlet CACHE_CLEAR_TYPES = [\n 'ast',\n 'config',\n 'results',\n 'all'\n], CACHE_CLEAR_TYPE_VALUES = new Set(CACHE_CLEAR_TYPES);\nexport function registerCacheCommand(e, o) {\n let n = e.command('cache').description('Inspect and manage analysis cache data');\n n.command('clear').description('Clear cached data for one cache type or all cache types').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').option('--type <type>', 'Cache type to clear: ast | config | results | all', 'all').action(async (e)=>{\n var n;\n let l, s = (l = n = e.type, CACHE_CLEAR_TYPE_VALUES.has(l)) ? n : (c(`Invalid cache type: ${n}. Must be one of: ${CACHE_CLEAR_TYPES.join(', ')}`), i()), p = a();\n r.stdout.write(t.dim(' › Clearing cache...\\n'));\n try {\n let a = await resolveRuntimeCache(o, {\n profile: e.profile,\n allowDisabled: !0\n });\n 'all' === s ? await a.clear() : await a.clearType(s), p.renderClearResult(s);\n } catch (e) {\n c('Error clearing cache', e), i();\n }\n }), n.command('info').description('Show cache status, size, and usage details').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').action(async (e)=>{\n let t = a();\n try {\n let a = await resolveRuntimeCache(o, {\n profile: e.profile,\n allowDisabled: !0\n }), r = await a.getInfo();\n t.renderCacheInfo(r);\n } catch (e) {\n c('Error getting cache info', e), i();\n }\n }), n.command('path').description('Print the resolved cache directory path').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').action(async (e)=>{\n let a = await resolveRuntimeCache(o, {\n profile: e.profile,\n allowDisabled: !0\n });\n r.stdout.write(`${a.getCachePath()}\\n`);\n });\n}\nasync function resolveRuntimeCache(a, t = {}) {\n let i = t.cwd ?? r.cwd();\n try {\n let r = await o({\n profile: t.profile,\n cache: a,\n cwd: i\n });\n if (!r.report.valid || !r.config) return a;\n return e(r.config, i, {\n allowDisabled: t.allowDisabled\n }) ?? a;\n } catch (e) {\n return c('Unable to resolve cache configuration; using default cache', e), a;\n }\n}\n","import { getRulesReporter as e } from '@ngcompass/reporters';\nimport { getRuleListEntries as r, isBuiltinPreset as t } from '@ngcompass/rules';\nimport s from 'picocolors';\nimport { exitWithError as o, printError as i } from './exit.js';\nexport function registerRulesCommand(n) {\n n.command('rules [ruleName]').description('Browse available rules or inspect details for a specific rule').option('--preset <name>', 'Filter by preset: recommended, strict, performance, reactivity, or all').action((n, l)=>{\n l.preset && !t(l.preset) && (i(`Unknown preset: \"${l.preset}\".`), process.stderr.write(s.dim('Available presets: recommended, strict, all, performance, reactivity\\n')), o());\n let p = r(), m = e({\n preset: l.preset\n });\n if (n) {\n let e = p.find((e)=>e.name === n);\n if (!e) {\n i(`Rule \"${n}\" not found.`), process.stderr.write(s.dim('Run `ngcompass rules` to list available rules.\\n')), o();\n return;\n }\n m.renderSingleRule(e);\n } else m.render(p);\n });\n}\n","import { registerInitCommand as o } from './init.js';\nimport { registerAnalyzeCommand as r } from './analyze/index.js';\nimport { registerConfigCommand as m } from './config.js';\nimport { registerCacheCommand as i } from './cache.js';\nimport { registerRulesCommand as t } from './rules.js';\nexport function registerCommands(s, e) {\n o(s, e), r(s, e), m(s, e), i(s, e), t(s);\n}\n","import { Command as e } from 'commander';\nimport { registerCommands as s } from '../commands/index.js';\nimport { enableDebug as o, PACKAGE_VERSION as n } from '@ngcompass/common';\nimport { createCacheContext as a } from '@ngcompass/cache';\nimport { registerAllBuiltinRules as r } from '@ngcompass/rules';\nimport { restoreCursor as t, printError as c } from '../commands/exit.js';\nlet shutdownInProgress = !1, gracefulShutdown = async (e, s)=>{\n if (!shutdownInProgress) {\n if (shutdownInProgress = !0, t(), e) try {\n let s = new Promise((e)=>setTimeout(e, 10_000).unref());\n await Promise.race([\n e.flush(),\n s\n ]);\n } catch (e) {\n c('[ngcompass] Cache flush failed during shutdown', e);\n }\n process.exit(s);\n }\n}, handleFatalAsyncFailure = (e, s, o)=>{\n c(`[ngcompass] ${s}`, o), gracefulShutdown(e, 1);\n}, printRunBanner = async (e)=>{\n let { default: s } = await import('picocolors'), o = process.cwd();\n process.stdout.write(`\\n${s.dim('>')} ${s.dim(`ngcompass@${n}`)} ${s.dim(e)} ${s.dim(o)}\\n${s.dim('>')} ${s.dim('ngcompass')} ${s.dim('run')}\\n\\n ${s.bgCyan(s.white(s.bold(` ${e.toUpperCase()} `)))} ${s.cyan(n)} ${s.dim(o)}\\n\\n`);\n};\nexport async function run() {\n let t = new e();\n t.name('ngcompass').description('Static analysis and architecture insights for Angular codebases.').version(n, '-V, --version', 'Display ngcompass version').option('--debug', 'Enable detailed debug logs across all modules').addHelpText('after', '\\nExamples:\\n $ ngcompass init\\n $ ngcompass analyze --profile strict\\n $ ngcompass cache info\\n').hook('preAction', async (e, s)=>{\n let n;\n if (e.opts().debug && o('debug', 'all'), 'json' !== (n = s.opts().format) && 'sarif' !== n && 'html' !== n && 'ui' !== n) {\n let e = s.parent, o = e && 'ngcompass' !== e.name() ? e.name() : s.name();\n await printRunBanner(o);\n }\n });\n let i = a();\n process.on('SIGINT', ()=>void gracefulShutdown(i, 130)), process.on('SIGTERM', ()=>void gracefulShutdown(i, 143)), process.on('uncaughtException', (e)=>{\n handleFatalAsyncFailure(i, 'Unexpected error', e);\n }), process.on('unhandledRejection', (e)=>{\n handleFatalAsyncFailure(i, 'Unhandled promise rejection', e);\n });\n try {\n if (r(), s(t, i), !process.argv.slice(2).length) return void t.outputHelp();\n await t.parseAsync(process.argv), await i.flush(), process.exit(0);\n } catch (e) {\n c('[ngcompass] Fatal error', e), await gracefulShutdown(i, 1);\n }\n}\nrun().catch((e)=>{\n c('[ngcompass] Fatal error', e), t(), process.exit(1);\n});\n"]}
#!/usr/bin/env node
import {Command,Option}from'commander';import {getConfigReporter,getReporter,getCacheReporter,getRulesReporter}from'@ngcompass/reporters';import {initConfig,validateConfig,resolveConfig,loadPlugins}from'@ngcompass/config';import L from'path';import h from'picocolors';import {PACKAGE_VERSION,enableDebug,DEFAULT_INCLUDE_PATTERNS}from'@ngcompass/common';import k from'process';import {createCacheContext,createRuntimeCache}from'@ngcompass/cache';import {registerAllBuiltinRules,isBuiltinPreset,getRuleListEntries,getGlobalRegistry,resolveRules,getEnabledRules,executeBatchedNewEngineRules,isNewEngineRule}from'@ngcompass/rules';import {configureRuleExecutor,runAnalysis}from'@ngcompass/engine';import {buildExecutionPlan}from'@ngcompass/planner';import {scan}from'@ngcompass/scanner';var f=(t=1)=>{process.stdout.isTTY&&process.stdout.write("\x1B[?25h"),process.exit(t);};function ce(t,r){t.command("init").description("Create a starter ngcompass configuration in the current project").option("-f, --force","Overwrite an existing configuration file").option("--cwd <path>","Project directory where the configuration will be created",process.cwd()).action(async e=>{try{let o=await initConfig({cwd:e.cwd,force:e.force});await getConfigReporter().renderInitResult(o),o.success||o.alreadyExists||f();}catch(o){console.error(o instanceof Error?o.message:String(o)),f();}});}var le=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],j=class{stream;timer=null;frameIndex=0;message="";isTTY;constructor(r){this.stream=r,this.isTTY=!!r.isTTY;}start(r){this.message=r,this.frameIndex=0,this.isTTY?(this.stream.write("\x1B[?25l"),this.render(),this.timer=setInterval(()=>this.render(),80)):this.stream.write(`${h.cyan("\u276F")} ${h.dim(r)}
import {Command}from'commander';import {getConfigReporter,getReporter,getCacheReporter,getRulesReporter}from'@ngcompass/reporters';import {initConfig,validateConfig,resolveConfig,loadPlugins}from'@ngcompass/config';import k from'picocolors';import E from'process';import {createCacheContext,createRuntimeCache}from'@ngcompass/cache';import N from'path';import {PACKAGE_VERSION,enableDebug,DEFAULT_INCLUDE_PATTERNS,formatDuration,pluralise}from'@ngcompass/common';import {configureRuleExecutor,runAnalysis}from'@ngcompass/engine';import {buildExecutionPlan}from'@ngcompass/planner';import {scan}from'@ngcompass/scanner';import {registerAllBuiltinRules,isBuiltinPreset,getRuleListEntries,getGlobalRegistry,resolveRules,getEnabledRules,executeBatchedNewEngineRules,isNewEngineRule}from'@ngcompass/rules';var $=()=>{process.stdout.isTTY&&process.stdout.write("\x1B[?25h");},f=(t=1)=>{$(),process.exit(t);},d=(t,r)=>{let e=r===void 0?"":`: ${r instanceof Error?r.message:String(r)}`;console.error(`${k.red(t)}${e}`);};function D(t,r){t.command("init").description("Create a starter ngcompass configuration in the current project").option("-f, --force","Overwrite an existing configuration file").option("--cwd <path>","Project directory where the configuration will be created",process.cwd()).action(async e=>{try{let n=await initConfig({cwd:e.cwd,force:e.force});await getConfigReporter().renderInitResult(n),n.success||n.alreadyExists||f();}catch(n){d("Error initializing configuration",n),f();}});}var M=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],R=class{stream;timer=null;frameIndex=0;message="";isTTY;constructor(r){this.stream=r,this.isTTY=!!r.isTTY;}start(r){this.message=r,this.frameIndex=0,this.isTTY?(this.stream.write("\x1B[?25l"),this.render(),this.timer=setInterval(()=>this.render(),80)):this.stream.write(`${k.cyan("\u276F")} ${k.dim(r)}
`);}update(r){this.message=r,this.isTTY&&this.timer&&this.render();}writeLine(r){this.isTTY&&this.timer?(this.stream.write("\r\x1B[K"),this.stream.write(`${r}
`),this.render()):this.stream.write(`${r}
`);}stop(){this.timer&&(clearInterval(this.timer),this.timer=null),this.isTTY&&(this.stream.write("\r\x1B[K"),this.stream.write("\x1B[?25h"));}render(){let r=h.cyan(le[this.frameIndex%le.length]);this.frameIndex++,this.stream.write(`\r\x1B[K${r} ${h.dim(this.message)}`);}};var we={eco:{typeAwareConcurrency:1,typeAwareFileConcurrency:1,typeAwareChunkSize:100,typeAwareIsolation:"auto",typeAwareChunkStrategy:"dependency"},balanced:{typeAwareConcurrency:2,typeAwareFileConcurrency:2,typeAwareChunkSize:300,typeAwareIsolation:"auto",typeAwareChunkStrategy:"simple"},turbo:{typeAwareConcurrency:2,typeAwareFileConcurrency:4,typeAwareChunkSize:500,typeAwareIsolation:"off",typeAwareChunkStrategy:"simple"}},pe=Object.keys(we),me=["auto","process","off"],de=["dependency","simple"];function z(t,r){if(t===void 0)return;let e=Number(t);if(!Number.isInteger(e)||e<1)throw Error(`${r} must be a positive integer.`);return e}function fe(t){return t==="ui"?"html":t??"console"}function D(t){return t<1e3?`${Math.max(0,Math.round(t))}ms`:`${(t/1e3).toFixed(1)}s`}function ge(t,r){return `${t.toLocaleString()} ${r}${t===1?"":"s"}`}function he(t,r,e){return `Running analysis in ${t} mode: ${r.toLocaleString()}/${e.toLocaleString()} checks complete...`}function ye(t,r){t.command("analyze").description("Analyze your project and report rule violations and architecture risks").option("-p, --profile <name>","Configuration profile to run").option("--force","Ignore cached results and re-run all checks").option("--format <fmt>","Reporter format: console | json | sarif | html | ui").option("--compact","Use compact, ESLint-style output").option("-q, --quiet","Show summary counts only, suppress violation details").option("--no-recommendation","Suppress fix recommendations from output").option("--output <path>","Output path for UI reports (default: ngcompass-report.html)").option("--rule <id>","Run only one rule (useful for debugging or focused checks)").option("--mode <mode>","Performance mode: eco | balanced | turbo (default: balanced)","balanced").option("--max-workers <n>","Cap the number of worker threads (lower = less memory, e.g. --max-workers 2)").addOption(new Option("--type-aware-chunk-size <n>","Files per type-aware chunk").hideHelp()).addOption(new Option("--type-aware-concurrency <n>","Concurrent type-aware chunks").hideHelp()).addOption(new Option("--type-aware-file-concurrency <n>","Concurrent files per type-aware chunk").hideHelp()).addOption(new Option("--type-aware-isolation <mode>","Type-aware isolation: auto | process | off").hideHelp()).addOption(new Option("--type-aware-chunk-strategy <mode>","Type-aware chunk ordering: dependency | simple").hideHelp()).option("--skip-type-check","Skip rules that require the TypeScript type checker (fastest, lowest memory)").action(async e=>{let o=performance.now(),a=getReporter(fe(e.format),{compact:!!e.compact,outputPath:e.output,quiet:!!e.quiet,noRecommendation:e.recommendation===false}),n=r,i=0;try{var l;let p,R,A,K,V,J,Q,X=await qe(e,r,a);if(!X){i=1;return}let{config:w}=X,Z=(p=we[(function(u){let C=u??"balanced";if(!pe.includes(C))throw Error(`Invalid performance mode "${C}". Expected one of: ${pe.join(", ")}.`);return C})(e.mode)],R=z(e.maxWorkers,"--max-workers"),A=z(e.typeAwareChunkSize,"--type-aware-chunk-size"),K=z(e.typeAwareConcurrency,"--type-aware-concurrency"),V=z(e.typeAwareFileConcurrency,"--type-aware-file-concurrency"),{maxWorkers:R??w.maxWorkers,typeAwareChunkSize:A??p.typeAwareChunkSize,typeAwareConcurrency:K??p.typeAwareConcurrency,typeAwareFileConcurrency:V??p.typeAwareFileConcurrency,typeAwareIsolation:(function(u){if(u!==void 0){if(!me.includes(u))throw Error(`Invalid --type-aware-isolation "${u}". Expected one of: ${me.join(", ")}.`);return u}})(e.typeAwareIsolation)??p.typeAwareIsolation,typeAwareChunkStrategy:(function(u){if(u!==void 0){if(!de.includes(u))throw Error(`Invalid --type-aware-chunk-strategy "${u}". Expected one of: ${de.join(", ")}.`);return u}})(e.typeAwareChunkStrategy)??p.typeAwareChunkStrategy});n=createRuntimeCache(w,k.cwd());let T=(function(u,C){if(u)return fe(u);switch(C){case "json":return "json";case "sarif":return "sarif";case "html":return "html";default:return "console"}})(e.format,w.outputFormat);a=getReporter(T,{compact:!!e.compact,outputPath:e.output??w.outputPath,quiet:!!e.quiet,noRecommendation:e.recommendation===!1});let I=await Ge(w,e,n,a);if(!I){i=1;return}let ee=await Ke(w,e,a);if(!ee){i=1;return}let y=await Ve(I,ee,n,e,a,w,Z.maxWorkers);if(!y){i=1;return}let Se=T==="console"?k.stdout:k.stderr,F=new j(Se),be=y.tasks.length+(y.skippedTasks?.length??0),re=e.mode??"balanced";F.start(he(re,0,be));let Re=(function(u,C,oe){let P=new Map,v=new Map;for(let m of u.tasks){let s=m.filePath;typeof s=="string"&&s.length!==0&&(m.needsTypeChecker||m.needsProjectContext?v.set(s,(v.get(s)??0)+1):P.set(s,(P.get(s)??0)+1));}let _=new Map,Ie=new Map,ne=new Set,O=new Set,B=(m,s)=>{let c=m.get(s.filePath),g=c?{taskCount:c.taskCount+s.taskCount,issueCount:c.issueCount+s.issueCount,errorCount:c.errorCount+s.errorCount,warningCount:c.warningCount+s.warningCount,duration:c.duration+s.duration}:{taskCount:s.taskCount,issueCount:s.issueCount,errorCount:s.errorCount,warningCount:s.warningCount,duration:s.duration};return m.set(s.filePath,g),g},Y=(m,s)=>{if(O.has(m))return;O.add(m);let c=L.relative(oe,m)||m,g=s.issueCount>0,d=g?h.red("\u276F"):h.green("\u276F"),x=g?h.red(D(s.duration)):h.green(D(s.duration));C(g?`${d} ${h.red(c)} ${x} ${h.red(ge(s.issueCount,"issue"))}`:`${d} ${h.dim(c)} ${x}`);};return m=>{let s=m.filePath;if(!O.has(s))if(m.typeAware===!1){let c=B(_,m),g=P.get(s)??c.taskCount;if(c.taskCount<g)return;v.has(s)?((d,x)=>{if(ne.has(d)||O.has(d))return;ne.add(d);let ae=L.relative(oe,d)||d,U=x.issueCount>0,ie=U?h.red("\u276F"):h.green("\u276F"),se=U?h.red(D(x.duration)):h.green(D(x.duration));C(U?`${ie} ${h.red(ae)} ${se} ${h.red(ge(x.issueCount,"issue"))}`:`${ie} ${h.dim(ae)} ${se}`);})(s,c):Y(s,c);}else if(m.typeAware===!0){let c=B(Ie,m),g=v.get(s)??c.taskCount;if(c.taskCount<g)return;let d=_.get(s);Y(s,d?{taskCount:d.taskCount+c.taskCount,issueCount:d.issueCount+c.issueCount,errorCount:d.errorCount+c.errorCount,warningCount:d.warningCount+c.warningCount,duration:d.duration+c.duration}:c);}else {let c=(P.get(s)??0)+(v.get(s)??0),g=B(_,m);if(g.taskCount<(c||g.taskCount))return;Y(s,g);}}})(y,u=>F.writeLine(u),k.cwd()),$=await Je(y,n,Z,e,a,I,w,(u,C)=>{F.update(he(re,u,C));},Re);if(F.stop(),!$){i=1;return}let Te=performance.now()-o,te={scannedFiles:new Set([...y.tasks.map(u=>u.filePath),...(y.skippedTasks??[]).map(u=>u.filePath)]).size,discoveredFiles:I.length,totalFiles:$.stats.totalFiles,totalTasks:y.tasks.length+(y.skippedTasks?.length??0),cachedTasks:y.precomputedAnalysis?y.tasks.length:void 0,totalErrors:$.stats.totalErrors,totalWarnings:$.stats.totalWarnings,failOnSeverity:w.failOnSeverity,maxWarnings:w.maxWarnings,duration:Te};T==="console"&&a.summary(te),a.parseErrors($.parseErrors),a.report($.results),T!=="console"&&(a.step("\u276F Writing report..."),a.summary(te)),y.precomputedAnalysis||await Qe($.results,n,e,a),l=$.stats,J=w.failOnSeverity??"error",Q=w.maxWarnings??10,(l.totalErrors>0||J==="warn"&&l.totalWarnings>0||l.totalWarnings>Q)&&(i=1);}catch(p){a.error(p),i=1;}finally{n&&n!==r&&await n.flush(),i!==0&&f(i);}});}async function qe(t,r,e){let o=performance.now();e.step("\u276F Loading configuration...");let a=await resolveConfig({profile:t.profile,cache:r,cwd:k.cwd()});if(!a.report.valid){let i=a.report.issues.map(l=>{let p=l.path?.join(".")||"root";return `[${l.severity.toUpperCase()}] ${p}: ${l.message}`});return e.error(Error(["Configuration validation failed",...i].join(`
`))),null}if(!a.config)return e.error(Error("No configuration found")),null;let n=a.config.plugins;if(n&&n.length>0){e.step(`\u276F Loading ${n.length} plugin(s)...`);let i=k.cwd();await loadPlugins(n,i,getGlobalRegistry()),e.info(`Loaded ${n.length} plugin(s)`);}return e.debug(`Config resolve: ${(performance.now()-o).toFixed(2)}ms`),{config:a.config}}async function Ge(t,r,e,o){let a=performance.now();o.step("\u276F Discovering files...");let n=await scan({rootDir:k.cwd(),include:t.include??[...DEFAULT_INCLUDE_PATTERNS],exclude:t.exclude??[],ignorePatterns:t.ignorePatterns,tsConfigPath:(function(i,l){if(!i?.project)return;let p=i.tsconfigRootDir?L.resolve(l,i.tsconfigRootDir):l;return L.resolve(p,i.project)})(t.parserOptions,k.cwd()),respectGitignore:true,debug:r.debug,cache:e});return n.ok?(o.info(`\u276F Found ${n.data.files.length} files in ${(performance.now()-a).toFixed(0)}ms`),o.debug(`File discovery: ${(performance.now()-a).toFixed(2)}ms`),n.data.files):(o.error(Error(`File discovery failed: ${n.error.message}`)),null)}async function Ke(t,r,e){let o=performance.now();e.step("\u276F Loading rules...");let a=t;r.rule&&(e.info(`Filtering analysis to single rule: ${r.rule}`),a={...t,rules:{[r.rule]:"error"},extends:[]});let n=await resolveRules(a);if(!n.ok)return e.error(Error(`Rule resolution failed: ${n.error.message}`)),null;let i=getEnabledRules(n.data.rules);return e.info(`\u276F Loaded ${i.size} active rules in ${(performance.now()-o).toFixed(0)}ms`),e.debug(`Rule resolution: ${(performance.now()-o).toFixed(2)}ms`),i}async function Ve(t,r,e,o,a,n,i){let l=performance.now();a.step("\u276F Planning analysis...");let p=await buildExecutionPlan({files:t,rules:r,rootDir:k.cwd(),cache:e,debug:o.debug,incremental:o.force?{forceRerun:true}:void 0,workerCount:i,overrides:n.overrides});return p.ok?(p.data.precomputedAnalysis?a.info("\u276F Reused cached analysis plan"):a.info(`\u276F Prepared ${p.data.tasks.length.toLocaleString()} checks in ${(performance.now()-l).toFixed(0)}ms`),a.debug(`Plan build: ${(performance.now()-l).toFixed(2)}ms`),p.data):(a.error(Error(`Execution plan building failed: ${p.error.message}`)),null)}async function Je(t,r,e,o,a,n,i,l,p){let R=performance.now();configureRuleExecutor(executeBatchedNewEngineRules,isNewEngineRule);let A=await runAnalysis(t,{rootDir:k.cwd(),cache:r,debug:o.debug,files:n,maxWorkers:e.maxWorkers,typeAwareChunkSize:e.typeAwareChunkSize,typeAwareConcurrency:e.typeAwareConcurrency,typeAwareFileConcurrency:e.typeAwareFileConcurrency,typeAwareIsolation:e.typeAwareIsolation,typeAwareChunkStrategy:e.typeAwareChunkStrategy,skipTypeCheck:o.skipTypeCheck,parserOptions:i?.parserOptions,onProgress:l,onFileProgress:p});return A.ok?(a.debug(`Execution: ${(performance.now()-R).toFixed(2)}ms`),A.data):(a.error(Error(`Analysis failed: ${A.error.message}`)),null)}async function Qe(t,r,e,o){if(!r)return;let a=performance.now(),n=[];for(let i of t)i.taskId&&n.push([i.taskId,i]);n.length>0&&(await r.results.setMany(n),e.debug&&o.debug(`Saved ${n.length} results to cache (${(performance.now()-a).toFixed(2)}ms)`));}function Ce(t,r){t.command("config").description("Inspect and validate ngcompass configuration").command("health").description("Run semantic validation checks for the active configuration").option("-p, --profile <name>","Configuration profile to validate").action(async e=>{try{let o=await validateConfig({cache:e.cache?r:void 0,profile:e.profile});await getConfigReporter().renderHealthReport(o.report),o.report.valid||f();}catch(o){let a=o instanceof Error?o.message:String(o);console.error(`Error: ${a}`),f();}});}function $e(t,r){let e=t.command("cache").description("Inspect and manage analysis cache data");e.command("clear").description("Clear cached data for one cache type or all cache types").option("-p, --profile <name>","Configuration profile used to resolve cache settings").option("--type <type>","Cache type to clear: ast | config | results | all","all").action(async o=>{let a=getCacheReporter();k.stdout.write(h.dim(` \u203A Clearing cache...
`));let n=o.type,i=["ast","config","results","all"];i.includes(n)||(console.error(h.red(`Invalid cache type: ${n}. Must be one of: ${i.join(", ")}`)),f());try{let l=await H(r,{profile:o.profile,allowDisabled:!0});n==="all"?await l.clear():await l.clearType(n),a.renderClearResult(n);}catch(l){console.error(h.red("Error clearing cache:"),l),f();}}),e.command("info").description("Show cache status, size, and usage details").option("-p, --profile <name>","Configuration profile used to resolve cache settings").action(async o=>{let a=getCacheReporter();try{let n=await H(r,{profile:o.profile,allowDisabled:!0}),i=await n.getInfo();a.renderCacheInfo(i);}catch(n){console.error(h.red("Error getting cache info:"),n),f();}}),e.command("path").description("Print the resolved cache directory path").option("-p, --profile <name>","Configuration profile used to resolve cache settings").action(async o=>{let a=await H(r,{profile:o.profile,allowDisabled:true});k.stdout.write(`${a.getCachePath()}
`);});}async function H(t,r={}){let e=r.cwd??k.cwd();try{let o=await resolveConfig({profile:r.profile,cache:t,cwd:e});return !o.report.valid||!o.config?t:createRuntimeCache(o.config,e,{allowDisabled:r.allowDisabled})??t}catch{return t}}function xe(t){t.command("rules [ruleName]").description("Browse available rules or inspect details for a specific rule").option("--preset <name>","Filter by preset: recommended, strict, performance, reactivity, or all").action((r,e)=>{e.preset&&!isBuiltinPreset(e.preset)&&(console.error(h.red(`Unknown preset: "${e.preset}".`)),console.error(h.dim("Available presets: recommended, strict, all, performance, reactivity")),f());let o=getRuleListEntries(),a=getRulesReporter({preset:e.preset});if(r){let n=o.find(i=>i.name===r);if(!n){console.error(h.red(`Rule "${r}" not found.`)),console.error(h.dim("Run `ngcompass rules` to list available rules.")),f();return}a.renderSingleRule(n);}else a.render(o);});}function Ae(t,r){ce(t),ye(t,r),Ce(t,r),$e(t,r),xe(t);}var b=()=>{process.stdout.isTTY&&process.stdout.write("\x1B[?25h");},ve=false,S=async(t,r)=>{if(!ve){if(ve=true,b(),t)try{let e=new Promise(o=>setTimeout(o,1e4).unref());await Promise.race([t.flush(),e]);}catch{}process.exit(r);}};async function Ee(){let t=new Command;t.name("ngcompass").description("Static analysis and architecture insights for Angular codebases.").version(PACKAGE_VERSION,"-V, --version","Display ngcompass version").option("--debug","Enable detailed debug logs across all modules").addHelpText("after",`
`);}stop(){this.timer&&(clearInterval(this.timer),this.timer=null),this.isTTY&&(this.stream.write("\r\x1B[K"),this.stream.write("\x1B[?25h"));}render(){let r=k.cyan(M[this.frameIndex%M.length]);this.frameIndex++,this.stream.write(`\r\x1B[K${r} ${k.dim(this.message)}`);}};var Ce={eco:{typeAwareConcurrency:1,typeAwareFileConcurrency:1,typeAwareChunkSize:100,typeAwareIsolation:"auto",typeAwareChunkStrategy:"dependency"},balanced:{typeAwareConcurrency:1,typeAwareFileConcurrency:1,typeAwareChunkSize:150,typeAwareIsolation:"auto",typeAwareChunkStrategy:"dependency"},turbo:{typeAwareConcurrency:2,typeAwareFileConcurrency:4,typeAwareChunkSize:500,typeAwareIsolation:"off",typeAwareChunkStrategy:"simple"}},j=["eco","balanced","turbo"],xe=new Set(j);function Ee(t,r){if(t===void 0)return;let e=Number(t);if(!Number.isInteger(e)||e<1)throw Error(`${r} must be a positive integer.`);return e}function _(t,r){let e=Ce[(function(n){let o=n??"balanced";if(!xe.has(o))throw Error(`Invalid performance mode "${o}". Expected one of: ${j.join(", ")}.`);return o})(t.mode)];return {maxWorkers:Ee(t.maxWorkers,"--max-workers")??r.maxWorkers,typeAwareChunkSize:e.typeAwareChunkSize,typeAwareConcurrency:e.typeAwareConcurrency,typeAwareFileConcurrency:e.typeAwareFileConcurrency,typeAwareIsolation:e.typeAwareIsolation,typeAwareChunkStrategy:e.typeAwareChunkStrategy}}function F(t){return t==="ui"?"html":t??"console"}function U(t,r){if(t)return F(t);switch(r){case "json":return "json";case "sarif":return "sarif";case "html":return "html";default:return "console"}}function B(t,r){let e=t.failOnSeverity??"error",n=t.maxWarnings??10;return r.totalErrors>0||e==="warn"&&r.totalWarnings>0||r.totalWarnings>n}function Y(t,r){if(!t?.project)return;let e=t.tsconfigRootDir?N.resolve(r,t.tsconfigRootDir):r;return N.resolve(e,t.project)}function q(t){return t instanceof Error?t:Error(String(t))}function G(t){return t.mode??"balanced"}function T(t,r,e){return `Running analysis in ${t} mode: ${r.toLocaleString()}/${e.toLocaleString()} checks complete...`}async function H(t,r,e){let n=performance.now();e.step("\u276F Loading configuration...");let o=await resolveConfig({profile:t.profile,cache:r,cwd:E.cwd()});if(!o.report.valid){let i=o.report.issues.map(u=>{let s=u.path?.join(".")||"root";return `[${u.severity.toUpperCase()}] ${s}: ${u.message}`});return e.error(Error(["Configuration validation failed",...i].join(`
`))),null}if(!o.config)return e.error(Error("No configuration found")),null;let a=o.config.plugins;if(a&&a.length>0){e.step(`\u276F Loading ${a.length} plugin(s)...`);let i=E.cwd();await loadPlugins(a,i,getGlobalRegistry()),e.info(`Loaded ${a.length} plugin(s)`);}return e.debug(`Config resolve: ${(performance.now()-n).toFixed(2)}ms`),{config:o.config}}async function K(t,r,e,n){let o=performance.now();n.step("\u276F Discovering files...");let a=await scan({rootDir:E.cwd(),include:t.include??[...DEFAULT_INCLUDE_PATTERNS],exclude:t.exclude??[],ignorePatterns:t.ignorePatterns,tsConfigPath:Y(t.parserOptions,E.cwd()),respectGitignore:true,debug:r.debug,cache:e});return a.ok?(n.info(`\u276F Found ${a.data.files.length} files in ${(performance.now()-o).toFixed(0)}ms`),n.debug(`File discovery: ${(performance.now()-o).toFixed(2)}ms`),a.data.files):(n.error(Error(`File discovery failed: ${a.error.message}`)),null)}async function V(t,r,e){let n=performance.now();e.step("\u276F Loading rules...");let o=t;r.rule&&(e.info(`Filtering analysis to single rule: ${r.rule}`),o={...t,rules:{[r.rule]:"error"},extends:[]});let a=await resolveRules(o,E.cwd());if(!a.ok)return e.error(Error(`Rule resolution failed: ${a.error.message}`)),null;let i=getEnabledRules(a.data.rules);return e.info(`\u276F Loaded ${i.size} active rules in ${(performance.now()-n).toFixed(0)}ms`),e.debug(`Rule resolution: ${(performance.now()-n).toFixed(2)}ms`),i}async function Z(t,r,e,n,o,a,i){let u=performance.now();o.step("\u276F Planning analysis...");let s=await buildExecutionPlan({files:t,rules:r,rootDir:E.cwd(),cache:e,debug:n.debug,incremental:n.force?{forceRerun:true}:void 0,workerCount:i,overrides:a.overrides});return s.ok?(s.data.precomputedAnalysis?o.info("\u276F Reused cached analysis plan"):o.info(`\u276F Prepared ${s.data.tasks.length.toLocaleString()} checks in ${(performance.now()-u).toFixed(0)}ms`),o.debug(`Plan build: ${(performance.now()-u).toFixed(2)}ms`),s.data):(o.error(Error(`Execution plan building failed: ${s.error.message}`)),null)}async function J(t,r,e,n,o,a,i,u,s){let C=performance.now();configureRuleExecutor(executeBatchedNewEngineRules,isNewEngineRule);let p=await runAnalysis(t,{rootDir:E.cwd(),cache:r,debug:n.debug,files:a,maxWorkers:e.maxWorkers,typeAwareChunkSize:e.typeAwareChunkSize,typeAwareConcurrency:e.typeAwareConcurrency,typeAwareFileConcurrency:e.typeAwareFileConcurrency,typeAwareIsolation:e.typeAwareIsolation,typeAwareChunkStrategy:e.typeAwareChunkStrategy,skipTypeCheck:n.skipTypeCheck,parserOptions:i?.parserOptions,onProgress:u,onFileProgress:s});return p.ok?(o.debug(`Execution: ${(performance.now()-C).toFixed(2)}ms`),p.data):(o.error(Error(`Analysis failed: ${p.error.message}`)),null)}async function Q(t,r,e,n){if(!r)return;let o=performance.now(),a=[];for(let i of t)i.taskId&&a.push([i.taskId,i]);a.length>0&&(await r.results.setMany(a),e.debug&&n.debug(`Saved ${a.length} results to cache (${(performance.now()-o).toFixed(2)}ms)`));}var Oe={taskCount:0,issueCount:0,errorCount:0,warningCount:0,duration:0};function ee(t,r){let e=new Map;for(let n of t.tasks){let o=n.filePath;typeof o=="string"&&o.length!==0&&(n.needsTypeChecker||n.needsProjectContext)===r&&e.set(o,(e.get(o)??0)+1);}return e}function I(t,r){let e=t??Oe;return {taskCount:e.taskCount+r.taskCount,issueCount:e.issueCount+r.issueCount,errorCount:e.errorCount+r.errorCount,warningCount:e.warningCount+r.warningCount,duration:e.duration+r.duration}}function re(t,r,e){let n=ee(t,false),o=ee(t,true),a=new Map,i=new Map,u=new Set,s=new Set,C=(p,c,g)=>{if(s.has(p))return;let m=g?s:u;m.has(p)||(m.add(p),r((function(y,l){let w=l.issueCount>0,v=w?k.red("\u276F"):k.green("\u276F"),A=w?k.red(formatDuration(l.duration)):k.green(formatDuration(l.duration));if(w){let h=`${l.issueCount.toLocaleString()} ${pluralise(l.issueCount,"issue")}`;return `${v} ${k.red(y)} ${A} ${k.red(h)}`}return `${v} ${k.dim(y)} ${A}`})(N.relative(e,p)||p,c)));};return p=>{let c=p.filePath;if(s.has(c))return;if(p.typeAware===false){let l=I(a.get(c),p);a.set(c,l);let w=n.get(c)??l.taskCount;if(l.taskCount<w)return;C(c,l,!o.has(c));return}if(p.typeAware===true){var g;let l=I(i.get(c),p);i.set(c,l);let w=o.get(c)??l.taskCount;if(l.taskCount<w)return;C(c,(g=a.get(c),g?{taskCount:g.taskCount+l.taskCount,issueCount:g.issueCount+l.issueCount,errorCount:g.errorCount+l.errorCount,warningCount:g.warningCount+l.warningCount,duration:g.duration+l.duration}:l),true);return}let m=(n.get(c)??0)+(o.get(c)??0),y=I(a.get(c),p);a.set(c,y),y.taskCount<(m||y.taskCount)||C(c,y,true);}}function oe(t,r){t.command("analyze").description("Analyze your project and report rule violations and architecture risks").option("-p, --profile <name>","Configuration profile to run").option("--force","Ignore cached results and re-run all checks").option("--format <fmt>","Reporter format: console | json | sarif | html | ui").option("--compact","Use compact, ESLint-style output").option("-q, --quiet","Show summary counts only, suppress violation details").option("--no-recommendation","Suppress fix recommendations from output").option("--output <path>","Output path for UI reports (default: ngcompass-report.html)").option("--rule <id>","Run only one rule (useful for debugging or focused checks)").option("--mode <mode>","Performance mode: eco | balanced | turbo (default: balanced)","balanced").option("--max-workers <n>","Cap the number of worker threads (lower = less memory, e.g. --max-workers 2)").option("--skip-type-check","Skip rules that require the TypeScript type checker (fastest, lowest memory)").action(async e=>{let n=performance.now(),o=getReporter(F(e.format),{compact:!!e.compact,outputPath:e.output,quiet:!!e.quiet,noRecommendation:e.recommendation===false}),a=r,i=0;try{let u=await H(e,r,o);if(!u){i=1;return}let{config:s}=u,C=_(e,s);a=createRuntimeCache(s,E.cwd());let p=U(e.format,s.outputFormat);o=getReporter(p,{compact:!!e.compact,outputPath:e.output??s.outputPath,quiet:!!e.quiet,noRecommendation:e.recommendation===!1});let c=await K(s,e,a,o);if(!c){i=1;return}let g=await V(s,e,o);if(!g){i=1;return}let m=await Z(c,g,a,e,o,s,C.maxWorkers);if(!m){i=1;return}let y=p==="console"?E.stdout:E.stderr,l=new R(y),w=m.tasks.length+(m.skippedTasks?.length??0),v=G(e);l.start(T(v,0,w));let A=re(m,x=>l.writeLine(x),E.cwd()),h=await J(m,a,C,e,o,c,s,(x,ge)=>{l.update(T(v,x,ge));},A);if(l.stop(),!h){i=1;return}let fe=performance.now()-n,O={scannedFiles:new Set([...m.tasks.map(x=>x.filePath),...(m.skippedTasks??[]).map(x=>x.filePath)]).size,discoveredFiles:c.length,totalFiles:h.stats.totalFiles,totalTasks:m.tasks.length+(m.skippedTasks?.length??0),cachedTasks:m.precomputedAnalysis?m.tasks.length:void 0,totalErrors:h.stats.totalErrors,totalWarnings:h.stats.totalWarnings,failOnSeverity:s.failOnSeverity,maxWarnings:s.maxWarnings,duration:fe};p==="console"&&o.summary(O),o.parseErrors(h.parseErrors),o.report(h.results),p!=="console"&&(o.step("\u276F Writing report..."),o.summary(O)),m.precomputedAnalysis||await Q(h.results,a,e,o),B(s,h.stats)&&(i=1);}catch(u){o.error(q(u)),i=1;}finally{a&&a!==r&&await a.flush(),i!==0&&f(i);}});}function ne(t,r){t.command("config").description("Inspect and validate ngcompass configuration").command("health").description("Run semantic validation checks for the active configuration").option("-p, --profile <name>","Configuration profile to validate").action(async e=>{try{let n=await validateConfig({cwd:E.cwd(),cache:e.cache?r:void 0,profile:e.profile});await getConfigReporter().renderHealthReport(n.report),n.report.valid||f();}catch(n){d("Error",n),f();}});}var ie=["ast","config","results","all"],Ye=new Set(ie);function se(t,r){let e=t.command("cache").description("Inspect and manage analysis cache data");e.command("clear").description("Clear cached data for one cache type or all cache types").option("-p, --profile <name>","Configuration profile used to resolve cache settings").option("--type <type>","Cache type to clear: ast | config | results | all","all").action(async n=>{var o;let a,i=(a=o=n.type,Ye.has(a)?o:(d(`Invalid cache type: ${o}. Must be one of: ${ie.join(", ")}`),f())),u=getCacheReporter();E.stdout.write(k.dim(` \u203A Clearing cache...
`));try{let s=await z(r,{profile:n.profile,allowDisabled:!0});i==="all"?await s.clear():await s.clearType(i),u.renderClearResult(i);}catch(s){d("Error clearing cache",s),f();}}),e.command("info").description("Show cache status, size, and usage details").option("-p, --profile <name>","Configuration profile used to resolve cache settings").action(async n=>{let o=getCacheReporter();try{let a=await z(r,{profile:n.profile,allowDisabled:!0}),i=await a.getInfo();o.renderCacheInfo(i);}catch(a){d("Error getting cache info",a),f();}}),e.command("path").description("Print the resolved cache directory path").option("-p, --profile <name>","Configuration profile used to resolve cache settings").action(async n=>{let o=await z(r,{profile:n.profile,allowDisabled:true});E.stdout.write(`${o.getCachePath()}
`);});}async function z(t,r={}){let e=r.cwd??E.cwd();try{let n=await resolveConfig({profile:r.profile,cache:t,cwd:e});return !n.report.valid||!n.config?t:createRuntimeCache(n.config,e,{allowDisabled:r.allowDisabled})??t}catch(n){return d("Unable to resolve cache configuration; using default cache",n),t}}function ce(t){t.command("rules [ruleName]").description("Browse available rules or inspect details for a specific rule").option("--preset <name>","Filter by preset: recommended, strict, performance, reactivity, or all").action((r,e)=>{e.preset&&!isBuiltinPreset(e.preset)&&(d(`Unknown preset: "${e.preset}".`),process.stderr.write(k.dim(`Available presets: recommended, strict, all, performance, reactivity
`)),f());let n=getRuleListEntries(),o=getRulesReporter({preset:e.preset});if(r){let a=n.find(i=>i.name===r);if(!a){d(`Rule "${r}" not found.`),process.stderr.write(k.dim("Run `ngcompass rules` to list available rules.\n")),f();return}o.renderSingleRule(a);}else o.render(n);});}function pe(t,r){D(t),oe(t,r),ne(t,r),se(t,r),ce(t);}var ue=false,P=async(t,r)=>{if(!ue){if(ue=true,$(),t)try{let e=new Promise(n=>setTimeout(n,1e4).unref());await Promise.race([t.flush(),e]);}catch(e){d("[ngcompass] Cache flush failed during shutdown",e);}process.exit(r);}},me=(t,r,e)=>{d(`[ngcompass] ${r}`,e),P(t,1);},Qe=async t=>{let{default:r}=await import('picocolors'),e=process.cwd();process.stdout.write(`
${r.dim(">")} ${r.dim(`ngcompass@${PACKAGE_VERSION}`)} ${r.dim(t)} ${r.dim(e)}
${r.dim(">")} ${r.dim("ngcompass")} ${r.dim("run")}
${r.bgCyan(r.white(r.bold(` ${t.toUpperCase()} `)))} ${r.cyan(PACKAGE_VERSION)} ${r.dim(e)}
`);};async function de(){let t=new Command;t.name("ngcompass").description("Static analysis and architecture insights for Angular codebases.").version(PACKAGE_VERSION,"-V, --version","Display ngcompass version").option("--debug","Enable detailed debug logs across all modules").addHelpText("after",`
Examples:

@@ -13,11 +20,3 @@ $ ngcompass init

$ ngcompass cache info
`).hook("preAction",async(e,o)=>{e.opts().debug&&enableDebug("debug","all");let a=o.opts();if(a.format!=="json"&&a.format!=="sarif"&&a.format!=="html"&&a.format!=="ui"){let{default:n}=await import('picocolors'),i=o.parent,l=i&&i.name()!=="ngcompass"?i.name():o.name(),p=process.cwd();process.stdout.write(`
${n.dim(">")} ${n.dim(`ngcompass@${PACKAGE_VERSION}`)} ${n.dim(l)} ${n.dim(p)}
${n.dim(">")} ${n.dim("ngcompass")} ${n.dim("run")}
${n.bgCyan(n.white(n.bold(` ${l.toUpperCase()} `)))} ${n.cyan(PACKAGE_VERSION)} ${n.dim(p)}
`);}});let r=createCacheContext();process.on("SIGINT",()=>{S(r,130);}),process.on("SIGTERM",()=>{S(r,143);}),process.on("uncaughtException",e=>{b(),console.error(`
[ngcompass] Unexpected error: ${e.message}`),S(r,1);}),process.on("unhandledRejection",e=>{b();let o=e instanceof Error?e.message:String(e);console.error(`
[ngcompass] Unhandled promise rejection: ${o}`),S(r,1);});try{if(registerAllBuiltinRules(),Ae(t,r),!process.argv.slice(2).length)return void t.outputHelp();await t.parseAsync(process.argv),await r.flush(),process.exit(0);}catch(e){b();let o=e instanceof Error?e.message:String(e);console.error(`[ngcompass] Fatal error: ${o}`),await S(r,1);}}Ee().catch(t=>{b();let r=t instanceof Error?t.message:String(t);console.error(`[ngcompass] Fatal error: ${r}`),process.exit(1);});export{Ee as run};//# sourceMappingURL=index.js.map
`).hook("preAction",async(e,n)=>{let o;if(e.opts().debug&&enableDebug("debug","all"),(o=n.opts().format)!=="json"&&o!=="sarif"&&o!=="html"&&o!=="ui"){let a=n.parent,i=a&&a.name()!=="ngcompass"?a.name():n.name();await Qe(i);}});let r=createCacheContext();process.on("SIGINT",()=>{P(r,130);}),process.on("SIGTERM",()=>{P(r,143);}),process.on("uncaughtException",e=>{me(r,"Unexpected error",e);}),process.on("unhandledRejection",e=>{me(r,"Unhandled promise rejection",e);});try{if(registerAllBuiltinRules(),pe(t,r),!process.argv.slice(2).length)return void t.outputHelp();await t.parseAsync(process.argv),await r.flush(),process.exit(0);}catch(e){d("[ngcompass] Fatal error",e),await P(r,1);}}de().catch(t=>{d("[ngcompass] Fatal error",t),$(),process.exit(1);});export{de as run};//# sourceMappingURL=index.js.map
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/commands/exit.ts","../src/commands/init.ts","../src/spinner.ts","../src/commands/analyze.ts","../src/commands/config.ts","../src/commands/cache.ts","../src/commands/rules.ts","../src/commands/index.ts","../src/bin/ngcompass.ts"],"names":["exitWithError","code","process","stdout","isTTY","write","exit","registerInitCommand","program","_cache","command","description","option","cwd","action","options","result","initConfig","force","getConfigReporter","renderInitResult","success","alreadyExists","error","console","Error","message","String","FRAMES","Spinner","timer","frameIndex","stream","start","render","setInterval","pc","cyan","dim","update","writeLine","line","stop","clearInterval","frame","length","PERFORMANCE_MODE_PRESETS","eco","typeAwareConcurrency","typeAwareFileConcurrency","typeAwareChunkSize","typeAwareIsolation","typeAwareChunkStrategy","balanced","turbo","PERFORMANCE_MODES","Object","keys","TYPE_AWARE_ISOLATION_MODES","TYPE_AWARE_CHUNK_STRATEGIES","parsePositiveIntegerOption","value","optionName","undefined","parsed","Number","isInteger","normalizeReporterFormat","format","formatDuration","ms","Math","max","round","toFixed","pluralise","count","singular","toLocaleString","formatAnalysisProgressMessage","mode","completed","total","registerAnalyzeCommand","cache","addOption","Option","hideHelp","startTime","performance","now","reporter","getReporter","compact","outputPath","output","quiet","noRecommendation","recommendation","activeCache","exitCode","stats","preset","cliMaxWorkers","cliChunkSize","cliTypeAwareConcurrency","cliTypeAwareFileConcurrency","failOnSeverity","maxWarnings","configResult","loadConfigurationStep","config","performanceOptions","includes","join","maxWorkers","createRuntimeCache","reporterFormat","cliFormat","configFormat","outputFormat","files","discoverFilesStep","enabledRules","resolveRulesStep","plan","buildPlanStep","progressStream","stderr","spinner","totalChecks","tasks","skippedTasks","logFileProgress","syntaxExpected","Map","typeAwareExpected","task","fp","filePath","needsTypeChecker","needsProjectContext","set","get","syntaxDone","typeAwareDone","syntaxLinePrinted","Set","finalLinePrinted","accumulate","map","event","prev","next","taskCount","issueCount","errorCount","warningCount","duration","printFinalLine","acc","has","add","relativePath","path","relative","hasIssues","status","red","green","dur","typeAware","expected","syntaxAcc","totalExpected","analysis","runAnalysisStep","summary","scannedFiles","t","size","discoveredFiles","totalFiles","totalTasks","cachedTasks","precomputedAnalysis","totalErrors","totalWarnings","parseErrors","report","results","step","saveToCacheStep","flush","tStart","resolveConfig","profile","valid","issueLines","issues","issue","pathString","severity","toUpperCase","pluginList","plugins","configDir","loadPlugins","getGlobalRegistry","info","debug","scanResult","scan","rootDir","include","DEFAULT_INCLUDE_PATTERNS","exclude","ignorePatterns","tsConfigPath","parserOptions","project","tsconfigRootDir","resolve","respectGitignore","ok","data","effectiveConfig","rule","rules","extends","rulesResult","resolveRules","getEnabledRules","planResult","buildExecutionPlan","incremental","forceRerun","workerCount","overrides","onProgress","onFileProgress","configureRuleExecutor","executeBatchedNewEngineRules","isNewEngineRule","runAnalysis","skipTypeCheck","cacheEntries","taskId","push","setMany","registerConfigCommand","validateConfig","renderHealthReport","errorMessage","registerCacheCommand","cacheCmd","getCacheReporter","type","validTypes","resolveRuntimeCache","allowDisabled","clear","clearType","renderClearResult","err","getInfo","renderCacheInfo","getCachePath","fallbackCache","registerRulesCommand","ruleName","opts","isBuiltinPreset","entries","getRuleListEntries","getRulesReporter","find","e","name","renderSingleRule","registerCommands","restoreCursor","shutdownInProgress","gracefulShutdown","flushTimeout","Promise","setTimeout","unref","race","run","Command","version","PACKAGE_VERSION","addHelpText","hook","thisCommand","actionCommand","enableDebug","actionOpts","default","parent","commandName","bgCyan","white","bold","createCacheContext","on","reason","msg","registerAllBuiltinRules","argv","slice","outputHelp","parseAsync","catch"],"mappings":"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","file":"index.js","sourcesContent":["export const exitWithError = (s = 1)=>{\n process.stdout.isTTY && process.stdout.write('\\x1B[?25h'), process.exit(s);\n};\n","import { getConfigReporter as r } from '@ngcompass/reporters';\nimport { initConfig as e } from '@ngcompass/config';\nimport { exitWithError as o } from './exit.js';\nexport function registerInitCommand(t, i) {\n t.command('init').description('Create a starter ngcompass configuration in the current project').option('-f, --force', 'Overwrite an existing configuration file').option('--cwd <path>', 'Project directory where the configuration will be created', process.cwd()).action(async (t)=>{\n try {\n let i = await e({\n cwd: t.cwd,\n force: t.force\n }), c = r();\n await c.renderInitResult(i), i.success || i.alreadyExists || o();\n } catch (r) {\n console.error(r instanceof Error ? r.message : String(r)), o();\n }\n });\n}\n","import t from 'picocolors';\nlet FRAMES = [\n '⠋',\n '⠙',\n '⠹',\n '⠸',\n '⠼',\n '⠴',\n '⠦',\n '⠧',\n '⠇',\n '⠏'\n];\nexport class Spinner {\n stream;\n timer = null;\n frameIndex = 0;\n message = '';\n isTTY;\n constructor(t){\n this.stream = t, this.isTTY = !!t.isTTY;\n }\n start(e) {\n (this.message = e, this.frameIndex = 0, this.isTTY) ? (this.stream.write('\\x1B[?25l'), this.render(), this.timer = setInterval(()=>this.render(), 80)) : this.stream.write(`${t.cyan('❯')} ${t.dim(e)}\\n`);\n }\n update(t) {\n this.message = t, this.isTTY && this.timer && this.render();\n }\n writeLine(t) {\n this.isTTY && this.timer ? (this.stream.write('\\r\\x1B[K'), this.stream.write(`${t}\\n`), this.render()) : this.stream.write(`${t}\\n`);\n }\n stop() {\n this.timer && (clearInterval(this.timer), this.timer = null), this.isTTY && (this.stream.write('\\r\\x1B[K'), this.stream.write('\\x1B[?25h'));\n }\n render() {\n let e = t.cyan(FRAMES[this.frameIndex % FRAMES.length]);\n this.frameIndex++, this.stream.write(`\\r\\x1B[K${e} ${t.dim(this.message)}`);\n }\n}\n","import { Option as e } from 'commander';\nimport r from 'node:path';\nimport t from 'picocolors';\nimport { DEFAULT_INCLUDE_PATTERNS as o } from '@ngcompass/common';\nimport { getReporter as n } from '@ngcompass/reporters';\nimport a from 'node:process';\nimport { createRuntimeCache as i } from '@ngcompass/cache';\nimport { exitWithError as s } from './exit.js';\nimport { Spinner as u } from '../spinner.js';\nimport { getGlobalRegistry as l, executeBatchedNewEngineRules as p, isNewEngineRule as c, resolveRules as d, getEnabledRules as m } from '@ngcompass/rules';\nimport { loadPlugins as f, resolveConfig as y } from '@ngcompass/config';\nimport { runAnalysis as g, configureRuleExecutor as w } from '@ngcompass/engine';\nimport { buildExecutionPlan as C } from '@ngcompass/planner';\nimport { scan as h } from '@ngcompass/scanner';\nlet PERFORMANCE_MODE_PRESETS = {\n eco: {\n typeAwareConcurrency: 1,\n typeAwareFileConcurrency: 1,\n typeAwareChunkSize: 100,\n typeAwareIsolation: 'auto',\n typeAwareChunkStrategy: 'dependency'\n },\n balanced: {\n typeAwareConcurrency: 2,\n typeAwareFileConcurrency: 2,\n typeAwareChunkSize: 300,\n typeAwareIsolation: 'auto',\n typeAwareChunkStrategy: 'simple'\n },\n turbo: {\n typeAwareConcurrency: 2,\n typeAwareFileConcurrency: 4,\n typeAwareChunkSize: 500,\n typeAwareIsolation: 'off',\n typeAwareChunkStrategy: 'simple'\n }\n}, PERFORMANCE_MODES = Object.keys(PERFORMANCE_MODE_PRESETS), TYPE_AWARE_ISOLATION_MODES = [\n 'auto',\n 'process',\n 'off'\n], TYPE_AWARE_CHUNK_STRATEGIES = [\n 'dependency',\n 'simple'\n];\nfunction parsePositiveIntegerOption(e, r) {\n if (void 0 === e) return;\n let t = Number(e);\n if (!Number.isInteger(t) || t < 1) throw Error(`${r} must be a positive integer.`);\n return t;\n}\nfunction normalizeReporterFormat(e) {\n return 'ui' === e ? 'html' : e ?? 'console';\n}\nfunction formatDuration(e) {\n return e < 1000 ? `${Math.max(0, Math.round(e))}ms` : `${(e / 1000).toFixed(1)}s`;\n}\nfunction pluralise(e, r) {\n return `${e.toLocaleString()} ${r}${1 === e ? '' : 's'}`;\n}\nfunction formatAnalysisProgressMessage(e, r, t) {\n return `Running analysis in ${e} mode: ${r.toLocaleString()}/${t.toLocaleString()} checks complete...`;\n}\nexport function registerAnalyzeCommand(o, l) {\n o.command('analyze').description('Analyze your project and report rule violations and architecture risks').option('-p, --profile <name>', 'Configuration profile to run').option('--force', 'Ignore cached results and re-run all checks').option('--format <fmt>', 'Reporter format: console | json | sarif | html | ui').option('--compact', 'Use compact, ESLint-style output').option('-q, --quiet', 'Show summary counts only, suppress violation details').option('--no-recommendation', 'Suppress fix recommendations from output').option('--output <path>', 'Output path for UI reports (default: ngcompass-report.html)').option('--rule <id>', 'Run only one rule (useful for debugging or focused checks)').option('--mode <mode>', 'Performance mode: eco | balanced | turbo (default: balanced)', 'balanced').option('--max-workers <n>', 'Cap the number of worker threads (lower = less memory, e.g. --max-workers 2)').addOption(new e('--type-aware-chunk-size <n>', 'Files per type-aware chunk').hideHelp()).addOption(new e('--type-aware-concurrency <n>', 'Concurrent type-aware chunks').hideHelp()).addOption(new e('--type-aware-file-concurrency <n>', 'Concurrent files per type-aware chunk').hideHelp()).addOption(new e('--type-aware-isolation <mode>', 'Type-aware isolation: auto | process | off').hideHelp()).addOption(new e('--type-aware-chunk-strategy <mode>', 'Type-aware chunk ordering: dependency | simple').hideHelp()).option('--skip-type-check', 'Skip rules that require the TypeScript type checker (fastest, lowest memory)').action(async (e)=>{\n let o = performance.now(), p = n(normalizeReporterFormat(e.format), {\n compact: !!e.compact,\n outputPath: e.output,\n quiet: !!e.quiet,\n noRecommendation: !1 === e.recommendation\n }), c = l, d = 0;\n try {\n var m;\n let s, f, y, g, w, C, h, k = await loadConfigurationStep(e, l, p);\n if (!k) {\n d = 1;\n return;\n }\n let { config: A } = k, E = (s = PERFORMANCE_MODE_PRESETS[function(e) {\n let r = e ?? 'balanced';\n if (!PERFORMANCE_MODES.includes(r)) throw Error(`Invalid performance mode \"${r}\". Expected one of: ${PERFORMANCE_MODES.join(', ')}.`);\n return r;\n }(e.mode)], f = parsePositiveIntegerOption(e.maxWorkers, '--max-workers'), y = parsePositiveIntegerOption(e.typeAwareChunkSize, '--type-aware-chunk-size'), g = parsePositiveIntegerOption(e.typeAwareConcurrency, '--type-aware-concurrency'), w = parsePositiveIntegerOption(e.typeAwareFileConcurrency, '--type-aware-file-concurrency'), {\n maxWorkers: f ?? A.maxWorkers,\n typeAwareChunkSize: y ?? s.typeAwareChunkSize,\n typeAwareConcurrency: g ?? s.typeAwareConcurrency,\n typeAwareFileConcurrency: w ?? s.typeAwareFileConcurrency,\n typeAwareIsolation: function(e) {\n if (void 0 !== e) {\n if (!TYPE_AWARE_ISOLATION_MODES.includes(e)) throw Error(`Invalid --type-aware-isolation \"${e}\". Expected one of: ${TYPE_AWARE_ISOLATION_MODES.join(', ')}.`);\n return e;\n }\n }(e.typeAwareIsolation) ?? s.typeAwareIsolation,\n typeAwareChunkStrategy: function(e) {\n if (void 0 !== e) {\n if (!TYPE_AWARE_CHUNK_STRATEGIES.includes(e)) throw Error(`Invalid --type-aware-chunk-strategy \"${e}\". Expected one of: ${TYPE_AWARE_CHUNK_STRATEGIES.join(', ')}.`);\n return e;\n }\n }(e.typeAwareChunkStrategy) ?? s.typeAwareChunkStrategy\n });\n c = i(A, a.cwd());\n let S = function(e, r) {\n if (e) return normalizeReporterFormat(e);\n switch(r){\n case 'json':\n return 'json';\n case 'sarif':\n return 'sarif';\n case 'html':\n return 'html';\n default:\n return 'console';\n }\n }(e.format, A.outputFormat);\n p = n(S, {\n compact: !!e.compact,\n outputPath: e.output ?? A.outputPath,\n quiet: !!e.quiet,\n noRecommendation: !1 === e.recommendation\n });\n let $ = await discoverFilesStep(A, e, c, p);\n if (!$) {\n d = 1;\n return;\n }\n let v = await resolveRulesStep(A, e, p);\n if (!v) {\n d = 1;\n return;\n }\n let P = await buildPlanStep($, v, c, e, p, A, E.maxWorkers);\n if (!P) {\n d = 1;\n return;\n }\n let R = 'console' === S ? a.stdout : a.stderr, F = new u(R), O = P.tasks.length + (P.skippedTasks?.length ?? 0), x = e.mode ?? 'balanced';\n F.start(formatAnalysisProgressMessage(x, 0, O));\n let b = function(e, o, n) {\n let a = new Map(), i = new Map();\n for (let r of e.tasks){\n let e = r.filePath;\n 'string' == typeof e && 0 !== e.length && (r.needsTypeChecker || r.needsProjectContext ? i.set(e, (i.get(e) ?? 0) + 1) : a.set(e, (a.get(e) ?? 0) + 1));\n }\n let s = new Map(), u = new Map(), l = new Set(), p = new Set(), c = (e, r)=>{\n let t = e.get(r.filePath), o = t ? {\n taskCount: t.taskCount + r.taskCount,\n issueCount: t.issueCount + r.issueCount,\n errorCount: t.errorCount + r.errorCount,\n warningCount: t.warningCount + r.warningCount,\n duration: t.duration + r.duration\n } : {\n taskCount: r.taskCount,\n issueCount: r.issueCount,\n errorCount: r.errorCount,\n warningCount: r.warningCount,\n duration: r.duration\n };\n return e.set(r.filePath, o), o;\n }, d = (e, a)=>{\n if (p.has(e)) return;\n p.add(e);\n let i = r.relative(n, e) || e, s = a.issueCount > 0, u = s ? t.red('❯') : t.green('❯'), l = s ? t.red(formatDuration(a.duration)) : t.green(formatDuration(a.duration));\n o(s ? `${u} ${t.red(i)} ${l} ${t.red(pluralise(a.issueCount, 'issue'))}` : `${u} ${t.dim(i)} ${l}`);\n };\n return (e)=>{\n let m = e.filePath;\n if (!p.has(m)) if (!1 === e.typeAware) {\n let u = c(s, e), f = a.get(m) ?? u.taskCount;\n if (u.taskCount < f) return;\n i.has(m) ? ((e, a)=>{\n if (l.has(e) || p.has(e)) return;\n l.add(e);\n let i = r.relative(n, e) || e, s = a.issueCount > 0, u = s ? t.red('❯') : t.green('❯'), c = s ? t.red(formatDuration(a.duration)) : t.green(formatDuration(a.duration));\n o(s ? `${u} ${t.red(i)} ${c} ${t.red(pluralise(a.issueCount, 'issue'))}` : `${u} ${t.dim(i)} ${c}`);\n })(m, u) : d(m, u);\n } else if (!0 === e.typeAware) {\n let r = c(u, e), t = i.get(m) ?? r.taskCount;\n if (r.taskCount < t) return;\n let o = s.get(m);\n d(m, o ? {\n taskCount: o.taskCount + r.taskCount,\n issueCount: o.issueCount + r.issueCount,\n errorCount: o.errorCount + r.errorCount,\n warningCount: o.warningCount + r.warningCount,\n duration: o.duration + r.duration\n } : r);\n } else {\n let r = (a.get(m) ?? 0) + (i.get(m) ?? 0), t = c(s, e);\n if (t.taskCount < (r || t.taskCount)) return;\n d(m, t);\n }\n };\n }(P, (e)=>F.writeLine(e), a.cwd()), T = await runAnalysisStep(P, c, E, e, p, $, A, (e, r)=>{\n F.update(formatAnalysisProgressMessage(x, e, r));\n }, b);\n if (F.stop(), !T) {\n d = 1;\n return;\n }\n let I = performance.now() - o, _ = {\n scannedFiles: new Set([\n ...P.tasks.map((e)=>e.filePath),\n ...(P.skippedTasks ?? []).map((e)=>e.filePath)\n ]).size,\n discoveredFiles: $.length,\n totalFiles: T.stats.totalFiles,\n totalTasks: P.tasks.length + (P.skippedTasks?.length ?? 0),\n cachedTasks: P.precomputedAnalysis ? P.tasks.length : void 0,\n totalErrors: T.stats.totalErrors,\n totalWarnings: T.stats.totalWarnings,\n failOnSeverity: A.failOnSeverity,\n maxWarnings: A.maxWarnings,\n duration: I\n };\n 'console' === S && p.summary(_), p.parseErrors(T.parseErrors), p.report(T.results), 'console' !== S && (p.step('❯ Writing report...'), p.summary(_)), P.precomputedAnalysis || await saveToCacheStep(T.results, c, e, p), m = T.stats, C = A.failOnSeverity ?? 'error', h = A.maxWarnings ?? 10, (m.totalErrors > 0 || 'warn' === C && m.totalWarnings > 0 || m.totalWarnings > h) && (d = 1);\n } catch (e) {\n p.error(e), d = 1;\n } finally{\n c && c !== l && await c.flush(), 0 !== d && s(d);\n }\n });\n}\nasync function loadConfigurationStep(e, r, t) {\n let o = performance.now();\n t.step('❯ Loading configuration...');\n let n = await y({\n profile: e.profile,\n cache: r,\n cwd: a.cwd()\n });\n if (!n.report.valid) {\n let e = n.report.issues.map((e)=>{\n let r = e.path?.join('.') || 'root';\n return `[${e.severity.toUpperCase()}] ${r}: ${e.message}`;\n });\n return t.error(Error([\n 'Configuration validation failed',\n ...e\n ].join('\\n'))), null;\n }\n if (!n.config) return t.error(Error('No configuration found')), null;\n let i = n.config.plugins;\n if (i && i.length > 0) {\n t.step(`❯ Loading ${i.length} plugin(s)...`);\n let e = a.cwd();\n await f(i, e, l()), t.info(`Loaded ${i.length} plugin(s)`);\n }\n return t.debug(`Config resolve: ${(performance.now() - o).toFixed(2)}ms`), {\n config: n.config\n };\n}\nasync function discoverFilesStep(e, t, n, i) {\n let s = performance.now();\n i.step('❯ Discovering files...');\n let u = await h({\n rootDir: a.cwd(),\n include: e.include ?? [\n ...o\n ],\n exclude: e.exclude ?? [],\n ignorePatterns: e.ignorePatterns,\n tsConfigPath: function(e, t) {\n if (!e?.project) return;\n let o = e.tsconfigRootDir ? r.resolve(t, e.tsconfigRootDir) : t;\n return r.resolve(o, e.project);\n }(e.parserOptions, a.cwd()),\n respectGitignore: !0,\n debug: t.debug,\n cache: n\n });\n return u.ok ? (i.info(`❯ Found ${u.data.files.length} files in ${(performance.now() - s).toFixed(0)}ms`), i.debug(`File discovery: ${(performance.now() - s).toFixed(2)}ms`), u.data.files) : (i.error(Error(`File discovery failed: ${u.error.message}`)), null);\n}\nasync function resolveRulesStep(e, r, t) {\n let o = performance.now();\n t.step('❯ Loading rules...');\n let n = e;\n r.rule && (t.info(`Filtering analysis to single rule: ${r.rule}`), n = {\n ...e,\n rules: {\n [r.rule]: 'error'\n },\n extends: []\n });\n let a = await d(n);\n if (!a.ok) return t.error(Error(`Rule resolution failed: ${a.error.message}`)), null;\n let i = m(a.data.rules);\n return t.info(`❯ Loaded ${i.size} active rules in ${(performance.now() - o).toFixed(0)}ms`), t.debug(`Rule resolution: ${(performance.now() - o).toFixed(2)}ms`), i;\n}\nasync function buildPlanStep(e, r, t, o, n, i, s) {\n let u = performance.now();\n n.step('❯ Planning analysis...');\n let l = await C({\n files: e,\n rules: r,\n rootDir: a.cwd(),\n cache: t,\n debug: o.debug,\n incremental: o.force ? {\n forceRerun: !0\n } : void 0,\n workerCount: s,\n overrides: i.overrides\n });\n return l.ok ? (l.data.precomputedAnalysis ? n.info('❯ Reused cached analysis plan') : n.info(`❯ Prepared ${l.data.tasks.length.toLocaleString()} checks in ${(performance.now() - u).toFixed(0)}ms`), n.debug(`Plan build: ${(performance.now() - u).toFixed(2)}ms`), l.data) : (n.error(Error(`Execution plan building failed: ${l.error.message}`)), null);\n}\nasync function runAnalysisStep(e, r, t, o, n, i, s, u, l) {\n let d = performance.now();\n w(p, c);\n let m = await g(e, {\n rootDir: a.cwd(),\n cache: r,\n debug: o.debug,\n files: i,\n maxWorkers: t.maxWorkers,\n typeAwareChunkSize: t.typeAwareChunkSize,\n typeAwareConcurrency: t.typeAwareConcurrency,\n typeAwareFileConcurrency: t.typeAwareFileConcurrency,\n typeAwareIsolation: t.typeAwareIsolation,\n typeAwareChunkStrategy: t.typeAwareChunkStrategy,\n skipTypeCheck: o.skipTypeCheck,\n parserOptions: s?.parserOptions,\n onProgress: u,\n onFileProgress: l\n });\n return m.ok ? (n.debug(`Execution: ${(performance.now() - d).toFixed(2)}ms`), m.data) : (n.error(Error(`Analysis failed: ${m.error.message}`)), null);\n}\nasync function saveToCacheStep(e, r, t, o) {\n if (!r) return;\n let n = performance.now(), a = [];\n for (let r of e)r.taskId && a.push([\n r.taskId,\n r\n ]);\n a.length > 0 && (await r.results.setMany(a), t.debug && o.debug(`Saved ${a.length} results to cache (${(performance.now() - n).toFixed(2)}ms)`));\n}\n","import { getConfigReporter as o } from '@ngcompass/reporters';\nimport { validateConfig as r } from '@ngcompass/config';\nimport { exitWithError as e } from './exit.js';\nexport function registerConfigCommand(i, t) {\n i.command('config').description('Inspect and validate ngcompass configuration').command('health').description('Run semantic validation checks for the active configuration').option('-p, --profile <name>', 'Configuration profile to validate').action(async (i)=>{\n try {\n let a = await r({\n cache: i.cache ? t : void 0,\n profile: i.profile\n }), n = o();\n await n.renderHealthReport(a.report), a.report.valid || e();\n } catch (r) {\n let o = r instanceof Error ? r.message : String(r);\n console.error(`Error: ${o}`), e();\n }\n });\n}\n","import { createRuntimeCache as e } from '@ngcompass/cache';\nimport { getCacheReporter as o } from '@ngcompass/reporters';\nimport { resolveConfig as a } from '@ngcompass/config';\nimport r from 'picocolors';\nimport t from 'node:process';\nimport { exitWithError as i } from './exit.js';\nexport function registerCacheCommand(e, a) {\n let c = e.command('cache').description('Inspect and manage analysis cache data');\n c.command('clear').description('Clear cached data for one cache type or all cache types').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').option('--type <type>', 'Cache type to clear: ast | config | results | all', 'all').action(async (e)=>{\n let c = o();\n t.stdout.write(r.dim(' › Clearing cache...\\n'));\n let l = e.type, n = [\n 'ast',\n 'config',\n 'results',\n 'all'\n ];\n n.includes(l) || (console.error(r.red(`Invalid cache type: ${l}. Must be one of: ${n.join(', ')}`)), i());\n try {\n let o = await resolveRuntimeCache(a, {\n profile: e.profile,\n allowDisabled: !0\n });\n 'all' === l ? await o.clear() : await o.clearType(l), c.renderClearResult(l);\n } catch (e) {\n console.error(r.red('Error clearing cache:'), e), i();\n }\n }), c.command('info').description('Show cache status, size, and usage details').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').action(async (e)=>{\n let t = o();\n try {\n let o = await resolveRuntimeCache(a, {\n profile: e.profile,\n allowDisabled: !0\n }), r = await o.getInfo();\n t.renderCacheInfo(r);\n } catch (e) {\n console.error(r.red('Error getting cache info:'), e), i();\n }\n }), c.command('path').description('Print the resolved cache directory path').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').action(async (e)=>{\n let o = await resolveRuntimeCache(a, {\n profile: e.profile,\n allowDisabled: !0\n });\n t.stdout.write(`${o.getCachePath()}\\n`);\n });\n}\nasync function resolveRuntimeCache(o, r = {}) {\n let i = r.cwd ?? t.cwd();\n try {\n let t = await a({\n profile: r.profile,\n cache: o,\n cwd: i\n });\n if (!t.report.valid || !t.config) return o;\n return e(t.config, i, {\n allowDisabled: r.allowDisabled\n }) ?? o;\n } catch {\n return o;\n }\n}\n","import { getRulesReporter as e } from '@ngcompass/reporters';\nimport { getRuleListEntries as r, isBuiltinPreset as o } from '@ngcompass/rules';\nimport s from 'picocolors';\nimport { exitWithError as t } from './exit.js';\nexport function registerRulesCommand(i) {\n i.command('rules [ruleName]').description('Browse available rules or inspect details for a specific rule').option('--preset <name>', 'Filter by preset: recommended, strict, performance, reactivity, or all').action((i, l)=>{\n l.preset && !o(l.preset) && (console.error(s.red(`Unknown preset: \"${l.preset}\".`)), console.error(s.dim('Available presets: recommended, strict, all, performance, reactivity')), t());\n let n = r(), m = e({\n preset: l.preset\n });\n if (i) {\n let e = n.find((e)=>e.name === i);\n if (!e) {\n console.error(s.red(`Rule \"${i}\" not found.`)), console.error(s.dim('Run `ngcompass rules` to list available rules.')), t();\n return;\n }\n m.renderSingleRule(e);\n } else m.render(n);\n });\n}\n","import { registerInitCommand as o } from './init.js';\nimport { registerAnalyzeCommand as r } from './analyze.js';\nimport { registerConfigCommand as m } from './config.js';\nimport { registerCacheCommand as i } from './cache.js';\nimport { registerRulesCommand as t } from './rules.js';\nexport function registerCommands(s, f) {\n o(s, f), r(s, f), m(s, f), i(s, f), t(s);\n}\n","import { Command as r } from 'commander';\nimport { registerCommands as o } from '../commands/index.js';\nimport { enableDebug as e, PACKAGE_VERSION as s } from '@ngcompass/common';\nimport { createCacheContext as n } from '@ngcompass/cache';\nimport { registerAllBuiltinRules as t } from '@ngcompass/rules';\nlet restoreCursor = ()=>{\n process.stdout.isTTY && process.stdout.write('\\x1B[?25h');\n}, shutdownInProgress = !1, gracefulShutdown = async (r, o)=>{\n if (!shutdownInProgress) {\n if (shutdownInProgress = !0, restoreCursor(), r) try {\n let o = new Promise((r)=>setTimeout(r, 10_000).unref());\n await Promise.race([\n r.flush(),\n o\n ]);\n } catch {}\n process.exit(o);\n }\n};\nexport async function run() {\n let a = new r();\n a.name('ngcompass').description('Static analysis and architecture insights for Angular codebases.').version(s, '-V, --version', 'Display ngcompass version').option('--debug', 'Enable detailed debug logs across all modules').addHelpText('after', '\\nExamples:\\n $ ngcompass init\\n $ ngcompass analyze --profile strict\\n $ ngcompass cache info\\n').hook('preAction', async (r, o)=>{\n r.opts().debug && e('debug', 'all');\n let n = o.opts();\n if ('json' !== n.format && 'sarif' !== n.format && 'html' !== n.format && 'ui' !== n.format) {\n let { default: r } = await import('picocolors'), e = o.parent, n = e && 'ngcompass' !== e.name() ? e.name() : o.name(), t = process.cwd();\n process.stdout.write(`\\n${r.dim('>')} ${r.dim(`ngcompass@${s}`)} ${r.dim(n)} ${r.dim(t)}\\n${r.dim('>')} ${r.dim('ngcompass')} ${r.dim('run')}\\n\\n ${r.bgCyan(r.white(r.bold(` ${n.toUpperCase()} `)))} ${r.cyan(s)} ${r.dim(t)}\\n\\n`);\n }\n });\n let c = n();\n process.on('SIGINT', ()=>void gracefulShutdown(c, 130)), process.on('SIGTERM', ()=>void gracefulShutdown(c, 143)), process.on('uncaughtException', (r)=>{\n restoreCursor(), console.error(`\\n[ngcompass] Unexpected error: ${r.message}`), gracefulShutdown(c, 1);\n }), process.on('unhandledRejection', (r)=>{\n restoreCursor();\n let o = r instanceof Error ? r.message : String(r);\n console.error(`\\n[ngcompass] Unhandled promise rejection: ${o}`), gracefulShutdown(c, 1);\n });\n try {\n if (t(), o(a, c), !process.argv.slice(2).length) return void a.outputHelp();\n await a.parseAsync(process.argv), await c.flush(), process.exit(0);\n } catch (o) {\n restoreCursor();\n let r = o instanceof Error ? o.message : String(o);\n console.error(`[ngcompass] Fatal error: ${r}`), await gracefulShutdown(c, 1);\n }\n}\nrun().catch((r)=>{\n restoreCursor();\n let o = r instanceof Error ? r.message : String(r);\n console.error(`[ngcompass] Fatal error: ${o}`), process.exit(1);\n});\n"]}
{"version":3,"sources":["../src/commands/exit.ts","../src/commands/init.ts","../src/spinner.ts","../src/commands/analyze/options.ts","../src/commands/analyze/resolve.ts","../src/commands/analyze/steps.ts","../src/commands/analyze/progress.ts","../src/commands/analyze/index.ts","../src/commands/config.ts","../src/commands/cache.ts","../src/commands/rules.ts","../src/commands/index.ts","../src/bin/ngcompass.ts"],"names":["restoreCursor","process","stdout","isTTY","write","exitWithError","code","exit","printError","message","detail","tail","undefined","Error","String","console","error","pc","red","registerInitCommand","program","_cache","command","description","option","cwd","action","options","result","initConfig","force","getConfigReporter","renderInitResult","success","alreadyExists","FRAMES","Spinner","timer","frameIndex","stream","start","render","setInterval","cyan","dim","update","writeLine","line","stop","clearInterval","frame","length","PERFORMANCE_MODE_PRESETS","eco","typeAwareConcurrency","typeAwareFileConcurrency","typeAwareChunkSize","typeAwareIsolation","typeAwareChunkStrategy","balanced","turbo","PERFORMANCE_MODES","PERFORMANCE_MODE_VALUES","Set","parsePositiveIntegerOption","value","optionName","parsed","Number","isInteger","resolvePerformanceOptions","config","preset","mode","has","join","maxWorkers","normalizeReporterFormat","format","resolveReporterFormat","cliFormat","configFormat","shouldFailAnalysis","stats","failOnSeverity","maxWarnings","totalErrors","totalWarnings","resolveParserProjectPath","parserOptions","project","rootDir","tsconfigRootDir","path","resolve","toError","getAnalyzeMode","formatAnalysisProgressMessage","completed","total","toLocaleString","loadConfigurationStep","cache","reporter","tStart","performance","now","step","configResult","resolveConfig","profile","report","valid","issueLines","issues","map","issue","pathString","severity","toUpperCase","pluginList","plugins","configDir","loadPlugins","getGlobalRegistry","info","debug","toFixed","discoverFilesStep","scanResult","scan","include","DEFAULT_INCLUDE_PATTERNS","exclude","ignorePatterns","tsConfigPath","respectGitignore","ok","data","files","resolveRulesStep","effectiveConfig","rule","rules","extends","rulesResult","resolveRules","enabledRules","getEnabledRules","size","buildPlanStep","planResult","buildExecutionPlan","incremental","forceRerun","workerCount","overrides","precomputedAnalysis","tasks","runAnalysisStep","plan","performanceOptions","onProgress","onFileProgress","configureRuleExecutor","executeBatchedNewEngineRules","isNewEngineRule","runAnalysis","skipTypeCheck","saveToCacheStep","results","cacheEntries","taskId","push","setMany","ZERO_ACC","taskCount","issueCount","errorCount","warningCount","duration","buildExpectedMap","typeAware","Map","task","fp","filePath","needsTypeChecker","needsProjectContext","set","get","mergeAcc","prev","event","base","createFileProgressLogger","syntaxExpected","typeAwareExpected","syntaxDone","typeAwareDone","syntaxPrinted","finalPrinted","print","acc","isFinal","guard","add","relativePath","hasIssues","status","green","dur","formatDuration","pluralise","relative","expected","a","totalExpected","registerAnalyzeCommand","startTime","getReporter","compact","outputPath","output","quiet","noRecommendation","recommendation","activeCache","exitCode","createRuntimeCache","reporterFormat","outputFormat","progressStream","stderr","spinner","totalChecks","skippedTasks","logFileProgress","analysis","summary","scannedFiles","t","discoveredFiles","totalFiles","totalTasks","cachedTasks","parseErrors","flush","registerConfigCommand","validateConfig","renderHealthReport","CACHE_CLEAR_TYPES","CACHE_CLEAR_TYPE_VALUES","registerCacheCommand","cacheCmd","type","getCacheReporter","resolveRuntimeCache","allowDisabled","clear","clearType","renderClearResult","err","getInfo","renderCacheInfo","getCachePath","fallbackCache","registerRulesCommand","ruleName","opts","isBuiltinPreset","entries","getRuleListEntries","getRulesReporter","find","e","name","renderSingleRule","registerCommands","shutdownInProgress","gracefulShutdown","flushTimeout","Promise","setTimeout","unref","race","handleFatalAsyncFailure","label","reason","printRunBanner","commandName","default","PACKAGE_VERSION","bgCyan","white","bold","run","Command","version","addHelpText","hook","thisCommand","actionCommand","enableDebug","parent","createCacheContext","on","registerAllBuiltinRules","argv","slice","outputHelp","parseAsync","catch"],"mappings":";iyBAEO,IAAMA,CAAAA,CAAgB,IAAA,CACtBC,OAAAA,CAAQC,OAAOC,KAAAA,EACpBF,OAAAA,CAAQC,MAAAA,CAAOE,KAAAA,CAAM,WAAA,EACvB,EAEaC,CAAAA,CAAgB,CAACC,CAAAA,CAAO,CAAA,GAAC,CACpCN,CAAAA,GACAC,OAAAA,CAAQM,IAAAA,CAAKD,CAAAA,EACf,CAAA,CAMaE,CAAAA,CAAa,CAACC,CAAAA,CAAiBC,CAAAA,GAAAA,CAC1C,IAAMC,CAAAA,CAAOD,CAAAA,GAAWE,MAAAA,CAAY,EAAA,CAAK,CAAA,EAAA,EAAuBF,CAAAA,YAJvCG,KAAAA,CAIuCH,CAAAA,CAJxBD,OAAAA,CAAUK,MAAAA,CAIcJ,CAAAA,CAAAA,CAAAA,CAAAA,CAChEK,OAAAA,CAAQC,KAAAA,CAAM,CAAA,EAAGC,CAAAA,CAAGC,IAAIT,CAAAA,CAAAA,CAAAA,EAAWE,CAAAA,CAAAA,CAAM,EAC3C,ECRO,SAASQ,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CAAoB,CAEpBD,CAAAA,CACGE,OAAAA,CAAQ,MAAA,CAAA,CACRC,WAAAA,CACC,iEAAA,CAAA,CAEDC,MAAAA,CAAO,aAAA,CAAe,0CAAA,CAAA,CACtBA,MAAAA,CACC,cAAA,CACA,2DAAA,CACAvB,OAAAA,CAAQwB,GAAAA,EAAG,CAAA,CAEZC,MAAAA,CAAO,MAAOC,CAAAA,EAAAA,CACb,GAAI,CACF,IAAMC,CAAAA,CAAS,MAAMC,UAAAA,CAAW,CAC9BJ,GAAAA,CAAKE,CAAAA,CAAQF,GAAAA,CACbK,KAAAA,CAAOH,CAAAA,CAAQG,KACjB,CAAA,CAAA,CAGA,MADiBC,mBAAAA,CACFC,gBAAAA,CAAiBJ,CAAAA,CAAAA,CAE3BA,CAAAA,CAAOK,OAAAA,EAAYL,EAAOM,aAAAA,EAC7B7B,CAAAA,GAEJ,CAAA,MAASW,CAAAA,CAAgB,CACvBR,EAAW,kCAAA,CAAoCQ,CAAAA,CAAAA,CAC/CX,CAAAA,GACF,CACF,CAAA,EACJ,CC1CA,IAAM8B,CAAAA,CAAS,CAAC,QAAA,CAAK,SAAK,QAAA,CAAK,QAAA,CAAK,QAAA,CAAK,QAAA,CAAK,QAAA,CAAK,QAAA,CAAK,QAAA,CAAK,QAAA,CAAA,CAGhDC,CAAAA,CAAN,KAAMA,CAAAA,MAAAA,CACHC,KAAAA,CAA+B,IAAA,CAC/BC,UAAAA,CAAa,EACb7B,OAAAA,CAAU,EAAA,CACDN,KAAAA,CAEjB,WAAA,CAA6BoC,CAAAA,CAA4B,CAAA,IAAA,CAA5BA,OAAAA,CAAAA,CAC3B,IAAA,CAAKpC,KAAAA,CAAQ,CAAC,CAACoC,CAAAA,CAAOpC,MACxB,CAEAqC,KAAAA,CAAM/B,CAAAA,CAAuB,CAC3B,IAAA,CAAKA,OAAAA,CAAUA,CAAAA,CACf,IAAA,CAAK6B,UAAAA,CAAa,CAAA,CAEb,IAAA,CAAKnC,KAAAA,EAKV,IAAA,CAAKoC,MAAAA,CAAOnC,MAAM,WAAA,CAAA,CAClB,IAAA,CAAKqC,MAAAA,EAAM,CACX,IAAA,CAAKJ,MAAQK,WAAAA,CAAY,IAAM,IAAA,CAAKD,MAAAA,EAAM,CAvB1B,EAAA,GAiBd,IAAA,CAAKF,MAAAA,CAAOnC,KAAAA,CAAM,CAAA,EAAGa,CAAAA,CAAG0B,IAAAA,CAAK,QAAA,CAAA,CAAA,CAAA,EAAQ1B,CAAAA,CAAG2B,GAAAA,CAAInC,CAAAA,CAAAA;AAAY,CAAA,EAO5D,CAEAoC,MAAAA,CAAOpC,CAAAA,CAAuB,CAC5B,IAAA,CAAKA,OAAAA,CAAUA,CAAAA,CAEX,IAAA,CAAKN,KAAAA,EAAS,IAAA,CAAKkC,KAAAA,EACrB,IAAA,CAAKI,SAET,CAEAK,SAAAA,CAAUC,CAAAA,CAAoB,CACxB,IAAA,CAAK5C,KAAAA,EAAS,IAAA,CAAKkC,OACrB,IAAA,CAAKE,MAAAA,CAAOnC,KAAAA,CAAM,UAAA,CAAA,CAClB,IAAA,CAAKmC,MAAAA,CAAOnC,KAAAA,CAAM,GAAG2C,CAAAA;AAAQ,CAAA,CAAA,CAC7B,KAAKN,MAAAA,EAAM,EAEX,KAAKF,MAAAA,CAAOnC,KAAAA,CAAM,GAAG2C,CAAAA;CAAQ,EAEjC,CAEAC,IAAAA,EAAa,CACP,IAAA,CAAKX,KAAAA,GACPY,cAAc,IAAA,CAAKZ,KAAK,CAAA,CACxB,IAAA,CAAKA,KAAAA,CAAQ,IAAA,CAAA,CAGX,KAAKlC,KAAAA,GACP,IAAA,CAAKoC,MAAAA,CAAOnC,KAAAA,CAAM,UAAA,CAAA,CAClB,KAAKmC,MAAAA,CAAOnC,KAAAA,CAAM,WAAA,CAAA,EAEtB,CAEQqC,MAAAA,EAAe,CACrB,IAAMS,CAAAA,CAAQjC,CAAAA,CAAG0B,IAAAA,CAAKR,CAAAA,CAAO,IAAA,CAAKG,WAAaH,CAAAA,CAAOgB,MAAM,CAAC,CAAA,CAC7D,IAAA,CAAKb,UAAAA,EAAAA,CACL,KAAKC,MAAAA,CAAOnC,KAAAA,CAAM,CAAA,QAAA,EAAW8C,CAAAA,CAAAA,CAAAA,EAASjC,CAAAA,CAAG2B,GAAAA,CAAI,IAAA,CAAKnC,OAAO,CAAA,CAAA,CAAG,EAC9D,CACF,CAAA,CC5BA,IAAM2C,EAAAA,CAEF,CACFC,GAAAA,CAAK,CACHC,oBAAAA,CAAsB,CAAA,CACtBC,yBAA0B,CAAA,CAC1BC,kBAAAA,CAAoB,GAAA,CACpBC,kBAAAA,CAAoB,MAAA,CACpBC,sBAAAA,CAAwB,YAC1B,CAAA,CACAC,QAAAA,CAAU,CACRL,oBAAAA,CAAsB,CAAA,CACtBC,wBAAAA,CAA0B,CAAA,CAC1BC,kBAAAA,CAAoB,GAAA,CACpBC,kBAAAA,CAAoB,MAAA,CACpBC,sBAAAA,CAAwB,YAC1B,CAAA,CACAE,MAAO,CACLN,oBAAAA,CAAsB,CAAA,CACtBC,wBAAAA,CAA0B,CAAA,CAC1BC,kBAAAA,CAAoB,IACpBC,kBAAAA,CAAoB,KAAA,CACpBC,sBAAAA,CAAwB,QAC1B,CACF,CAAA,CAEMG,EAAgD,CACpD,KAAA,CACA,UAAA,CACA,OAAA,CAAA,CAEIC,EAAAA,CAA0B,IAAIC,GAAAA,CAAYF,CAAAA,CAAAA,CAEzC,SAASG,EAAAA,CACdC,CAAAA,CACAC,CAAAA,CAAkB,CAElB,GAAID,CAAAA,GAAUrD,MAAAA,CACZ,OAGF,IAAMuD,CAAAA,CAASC,MAAAA,CAAOH,CAAAA,CAAAA,CACtB,GAAI,CAACG,MAAAA,CAAOC,SAAAA,CAAUF,CAAAA,GAAWA,CAAAA,CAAS,CAAA,CACxC,MAAUtD,KAAAA,CAAM,CAAA,EAAGqD,CAAAA,CAAAA,4BAAAA,CAAwC,CAAA,CAG7D,OAAOC,CACT,CAiBO,SAASG,CAAAA,CACd3C,CAAAA,CACA4C,EAAoD,CAGpD,IAAMC,CAAAA,CAASpB,EAAAA,CAAAA,CAhBjB,SAA8Ba,CAAAA,CAAyB,CACrD,IAAMQ,CAAAA,CAAOR,CAAAA,EAAS,UAAA,CACtB,GAAA,CALOH,GAAwBY,GAAAA,CAKRD,CAAAA,CAAAA,CACrB,MAAU5D,KAAAA,CACR,CAAA,0BAAA,EAA6B4D,CAAAA,CAAAA,oBAAAA,EAA2BZ,CAAAA,CAAkBc,IAAAA,CAAK,IAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAI3F,OAAOF,CACT,CAAA,EAMoC9C,CAAAA,CAAQ8C,IAAI,CAAA,CAAA,CAO9C,OAAO,CACLG,UAAAA,CANoBZ,EAAAA,CACpBrC,CAAAA,CAAQiD,UAAAA,CACR,eAAA,GAI6BL,CAAAA,CAAOK,UAAAA,CACpCpB,kBAAAA,CAAoBgB,CAAAA,CAAOhB,kBAAAA,CAC3BF,oBAAAA,CAAsBkB,CAAAA,CAAOlB,oBAAAA,CAC7BC,wBAAAA,CAA0BiB,CAAAA,CAAOjB,wBAAAA,CACjCE,kBAAAA,CAAoBe,CAAAA,CAAOf,kBAAAA,CAC3BC,uBAAwBc,CAAAA,CAAOd,sBACjC,CACF,CC9GO,SAASmB,CAAAA,CACdC,CAAAA,CAAkC,CAAA,OAE9BA,CAAAA,GAAW,IAAA,CAAa,OACrBA,CAAAA,EAAU,SACnB,CAEO,SAASC,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CAAkE,CAElE,GAAID,CAAAA,CACF,OAAOH,CAAAA,CAAwBG,CAAAA,CAAAA,CAGjC,OAAQC,CAAAA,EACN,KAAK,MAAA,CACH,OAAO,MAAA,CACT,KAAK,OAAA,CACH,OAAO,OAAA,CACT,KAAK,MAAA,CACH,OAAO,OACT,QAEE,OAAO,SAGX,CACF,CAEO,SAASC,CAAAA,CACdX,CAAAA,CACAY,CAAAA,CAAqE,CAErE,IAAMC,CAAAA,CAAiBb,CAAAA,CAAOa,cAAAA,EAAkB,QAC1CC,CAAAA,CAAcd,CAAAA,CAAOc,WAAAA,EAAe,EAAA,CAAA,OAEtCF,CAAAA,CAAMG,WAAAA,CAAc,GAIpBF,CAAAA,GAAmB,MAAA,EAAUD,CAAAA,CAAMI,aAAAA,CAAgB,CAAA,EAIhDJ,CAAAA,CAAMI,cAAgBF,CAC/B,CAEO,SAASG,CAAAA,CACdC,CAAAA,CACAhE,CAAAA,CAAW,CAEX,GAAI,CAACgE,CAAAA,EAAeC,OAAAA,CAClB,OAGF,IAAMC,CAAAA,CAAUF,EAAcG,eAAAA,CAC1BC,CAAAA,CAAKC,OAAAA,CAAQrE,CAAAA,CAAKgE,CAAAA,CAAcG,eAAe,EAC/CnE,CAAAA,CAEJ,OAAOoE,CAAAA,CAAKC,OAAAA,CAAQH,CAAAA,CAASF,CAAAA,CAAcC,OAAO,CACpD,CAEO,SAASK,CAAAA,CAAQ/E,CAAAA,CAAc,CACpC,OAAOA,CAAAA,YAAiBH,KAAAA,CAAQG,CAAAA,CAAYH,KAAAA,CAAMC,MAAAA,CAAOE,CAAAA,CAAAA,CAC3D,CAEO,SAASgF,CAAAA,CAAerE,CAAAA,CAAuB,CACpD,OAAOA,EAAQ8C,IAAAA,EAAQ,UACzB,CAEO,SAASwB,CAAAA,CACdxB,CAAAA,CACAyB,EACAC,CAAAA,CAAa,CAEb,OAAO,CAAA,oBAAA,EAAuB1B,CAAAA,CAAAA,OAAAA,EAAcyB,CAAAA,CAAUE,cAAAA,EAAc,CAAA,CAAA,EAAMD,CAAAA,CAAMC,cAAAA,EAAc,CAAA,mBAAA,CAChG,CCvDA,eAAsBC,CAAAA,CACpB1E,CAAAA,CACA2E,EACAC,CAAAA,CAAkB,CAElB,IAAMC,CAAAA,CAASC,WAAAA,CAAYC,GAAAA,EAAG,CAC9BH,CAAAA,CAASI,IAAAA,CAAK,iCAAA,CAAA,CAEd,IAAMC,CAAAA,CAAe,MAAMC,cAAc,CACvCC,OAAAA,CAASnF,CAAAA,CAAQmF,OAAAA,CACjBR,KAAAA,CAAAA,CAAAA,CACA7E,IAAKxB,CAAAA,CAAQwB,GAAAA,EACf,CAAA,CAAA,CAEA,GAAI,CAACmF,CAAAA,CAAaG,MAAAA,CAAOC,KAAAA,CAAO,CAC9B,IAAMC,CAAAA,CAAaL,CAAAA,CAAaG,MAAAA,CAAOG,MAAAA,CAAOC,GAAAA,CAAKC,CAAAA,EAAAA,CACjD,IAAMC,CAAAA,CAAaD,EAAMvB,IAAAA,EAAMlB,IAAAA,CAAK,GAAA,CAAA,EAAQ,MAAA,CAC5C,OAAO,IAAIyC,CAAAA,CAAME,QAAAA,CAASC,WAAAA,EAAW,CAAA,EAAA,EAAOF,CAAAA,KAAeD,CAAAA,CAAM3G,OAAO,CAAA,CAC1E,CAAA,CAAA,CAIA,OAHA8F,CAAAA,CAASvF,KAAAA,CACHH,KAAAA,CAAM,CAAC,iCAAA,CAAA,GAAsCoG,CAAAA,CAAAA,CAAYtC,IAAAA,CAAK;CAAA,CAAA,CAAA,EAE7D,IACT,CAEA,GAAI,CAACiC,CAAAA,CAAarC,OAEhB,OADAgC,CAAAA,CAASvF,MAAUH,KAAAA,CAAM,wBAAA,CAAA,CAAA,CAClB,IAAA,CAGT,IAAM2G,CAAAA,CAAaZ,CAAAA,CAAarC,OAAOkD,OAAAA,CACvC,GAAID,GAAcA,CAAAA,CAAWrE,MAAAA,CAAS,EAAG,CACvCoD,CAAAA,CAASI,KAAK,CAAA,eAAA,EAAaa,CAAAA,CAAWrE,MAAM,CAAA,aAAA,CAAe,CAAA,CAC3D,IAAMuE,CAAAA,CAAYzH,CAAAA,CAAQwB,KAAG,CAC7B,MAAMkG,YAAYH,CAAAA,CAAYE,CAAAA,CAAWE,iBAAAA,EAAAA,CAAAA,CACzCrB,CAAAA,CAASsB,KAAK,CAAA,OAAA,EAAUL,CAAAA,CAAWrE,MAAM,CAAA,UAAA,CAAY,EACvD,CAKA,OAHAoD,CAAAA,CAASuB,MACP,CAAA,gBAAA,EAAA,CAAoBrB,WAAAA,CAAYC,KAAG,CAAKF,CAAAA,EAAQuB,QAAQ,CAAA,CAAA,IAAM,CAAA,CAEzD,CAAExD,OAAQqC,CAAAA,CAAarC,MAAO,CACvC,CAEA,eAAsByD,EACpBzD,CAAAA,CACA5C,CAAAA,CACA2E,EACAC,CAAAA,CAAkB,CAElB,IAAMC,CAAAA,CAASC,WAAAA,CAAYC,KAAG,CAC9BH,CAAAA,CAASI,KAAK,6BAAA,CAAA,CAEd,IAAMsB,CAAAA,CAAa,MAAMC,IAAAA,CAAK,CAC5BvC,OAAAA,CAAS1F,CAAAA,CAAQwB,KAAG,CACpB0G,OAAAA,CAAS5D,EAAO4D,OAAAA,EAAW,CAAA,GAAIC,0BAC/BC,OAAAA,CAAS9D,CAAAA,CAAO8D,SAAW,EAAA,CAC3BC,eAAgB/D,CAAAA,CAAO+D,cAAAA,CACvBC,aAAc/C,CAAAA,CAAyBjB,CAAAA,CAAOkB,cAAexF,CAAAA,CAAQwB,GAAAA,EAAG,CAAA,CACxE+G,gBAAAA,CAAkB,KAClBV,KAAAA,CAAOnG,CAAAA,CAAQmG,MACfxB,KAAAA,CAAAA,CACF,CAAA,CAAA,CAAA,OAEK2B,CAAAA,CAAWQ,IAOhBlC,CAAAA,CAASsB,IAAAA,CACP,gBAAWI,CAAAA,CAAWS,IAAAA,CAAKC,MAAMxF,MAAM,CAAA,UAAA,EAAA,CAAcsD,YAAYC,GAAAA,EAAG,CAAKF,CAAAA,EAAQuB,OAAAA,CAAQ,CAAA,CAAA,IAAM,CAAA,CAEjGxB,CAAAA,CAASuB,MACP,CAAA,gBAAA,EAAA,CAAoBrB,WAAAA,CAAYC,KAAG,CAAKF,CAAAA,EAAQuB,QAAQ,CAAA,CAAA,IAAM,CAAA,CAEzDE,CAAAA,CAAWS,KAAKC,KAAAA,GAZrBpC,CAAAA,CAASvF,MACHH,KAAAA,CAAM,CAAA,uBAAA,EAA0BoH,CAAAA,CAAWjH,KAAAA,CAAMP,OAAO,CAAA,CAAE,CAAA,CAAA,CAEzD,IAAA,CAUX,CAEA,eAAsBmI,CAAAA,CACpBrE,EACA5C,CAAAA,CACA4E,CAAAA,CAAkB,CAElB,IAAMC,CAAAA,CAASC,YAAYC,GAAAA,EAAG,CAC9BH,EAASI,IAAAA,CAAK,yBAAA,EAEd,IAAIkC,CAAAA,CAA4CtE,CAAAA,CAC5C5C,CAAAA,CAAQmH,IAAAA,GACVvC,CAAAA,CAASsB,KAAK,CAAA,mCAAA,EAAsClG,CAAAA,CAAQmH,IAAI,CAAA,CAAE,CAAA,CAClED,EAAkB,CAChB,GAAGtE,EACHwE,KAAAA,CAAO,CACL,CAACpH,CAAAA,CAAQmH,IAAI,EAAG,OAClB,CAAA,CACAE,QAAS,EACX,GAGF,IAAMC,CAAAA,CAAc,MAAMC,YAAAA,CAAaL,CAAAA,CAAiB5I,EAAQwB,GAAAA,EAAG,EAEnE,GAAI,CAACwH,EAAYR,EAAAA,CAIf,OAHAlC,EAASvF,KAAAA,CACHH,KAAAA,CAAM,2BAA2BoI,CAAAA,CAAYjI,KAAAA,CAAMP,OAAO,CAAA,CAAE,CAAA,CAAA,CAE3D,IAAA,CAGT,IAAM0I,CAAAA,CAAeC,gBAAgBH,CAAAA,CAAYP,IAAAA,CAAKK,KAAK,CAAA,CAO3D,OANAxC,EAASsB,IAAAA,CACP,CAAA,cAAA,EAAYsB,EAAaE,IAAI,CAAA,iBAAA,EAAA,CAAqB5C,YAAYC,GAAAA,EAAG,CAAKF,GAAQuB,OAAAA,CAAQ,CAAA,CAAA,CAAA,EAAA,CAAM,CAAA,CAE9FxB,CAAAA,CAASuB,KAAAA,CACP,CAAA,iBAAA,EAAA,CAAqBrB,WAAAA,CAAYC,KAAG,CAAKF,CAAAA,EAAQuB,QAAQ,CAAA,CAAA,IAAM,CAAA,CAE1DoB,CACT,CAEA,eAAsBG,CAAAA,CACpBX,EACAI,CAAAA,CACAzC,CAAAA,CACA3E,EACA4E,CAAAA,CACAhC,CAAAA,CACAK,EAAkB,CAElB,IAAM4B,CAAAA,CAASC,WAAAA,CAAYC,GAAAA,EAAG,CAC9BH,EAASI,IAAAA,CAAK,6BAAA,EAEd,IAAM4C,CAAAA,CAAa,MAAMC,kBAAAA,CAAmB,CAC1Cb,MAAAA,CAAAA,CACAI,KAAAA,CAAAA,EACApD,OAAAA,CAAS1F,CAAAA,CAAQwB,KAAG,CACpB6E,KAAAA,CAAAA,EACAwB,KAAAA,CAAOnG,CAAAA,CAAQmG,MACf2B,WAAAA,CAAa9H,CAAAA,CAAQG,MAAQ,CAAE4H,UAAAA,CAAY,IAAK,CAAA,CAAI9I,MAAAA,CACpD+I,YAAa/E,CAAAA,CACbgF,SAAAA,CAAWrF,EAAOqF,SACpB,CAAA,SAEKL,CAAAA,CAAWd,EAAAA,EAOZc,EAAWb,IAAAA,CAAKmB,mBAAAA,CAClBtD,EAASsB,IAAAA,CAAK,oCAAA,CAAA,CAEdtB,CAAAA,CAASsB,IAAAA,CACP,CAAA,gBAAA,EAAc0B,EAAWb,IAAAA,CAAKoB,KAAAA,CAAM3G,OAAOiD,cAAAA,EAAc,eAAiBK,WAAAA,CAAYC,GAAAA,GAAQF,CAAAA,EAAQuB,OAAAA,CAAQ,CAAA,CAAA,CAAA,EAAA,CAAM,EAIxHxB,CAAAA,CAASuB,KAAAA,CAAM,gBAAgBrB,WAAAA,CAAYC,GAAAA,EAAG,CAAKF,CAAAA,EAAQuB,OAAAA,CAAQ,CAAA,CAAA,CAAA,EAAA,CAAM,CAAA,CAClEwB,EAAWb,IAAAA,GAfhBnC,CAAAA,CAASvF,MACHH,KAAAA,CAAM,CAAA,gCAAA,EAAmC0I,EAAWvI,KAAAA,CAAMP,OAAO,EAAE,CAAA,CAAA,CAElE,KAaX,CAEA,eAAsBsJ,EACpBC,CAAAA,CACA1D,CAAAA,CACA2D,CAAAA,CACAtI,CAAAA,CACA4E,CAAAA,CACAoC,CAAAA,CACApE,EACA2F,CAAAA,CACAC,CAAAA,CAAqD,CAErD,IAAM3D,CAAAA,CAASC,YAAYC,GAAAA,EAAG,CAE9B0D,sBAAsBC,4BAAAA,CAA8BC,eAAAA,EAEpD,IAAM1I,CAAAA,CAAS,MAAM2I,WAAAA,CAAYP,CAAAA,CAAM,CACrCrE,OAAAA,CAAS1F,CAAAA,CAAQwB,KAAG,CACpB6E,KAAAA,CAAAA,EACAwB,KAAAA,CAAOnG,CAAAA,CAAQmG,MACfa,KAAAA,CAAAA,CAAAA,CACA/D,WAAYqF,CAAAA,CAAmBrF,UAAAA,CAC/BpB,mBAAoByG,CAAAA,CAAmBzG,kBAAAA,CACvCF,qBAAsB2G,CAAAA,CAAmB3G,oBAAAA,CACzCC,yBAA0B0G,CAAAA,CAAmB1G,wBAAAA,CAC7CE,mBAAoBwG,CAAAA,CAAmBxG,kBAAAA,CACvCC,sBAAAA,CAAwBuG,CAAAA,CAAmBvG,sBAAAA,CAC3C8G,aAAAA,CAAe7I,EAAQ6I,aAAAA,CACvB/E,aAAAA,CAAelB,GAAQkB,aAAAA,CACvByE,UAAAA,CAAAA,EACAC,cAAAA,CAAAA,CACF,CAAA,CAAA,CAAA,OAEKvI,CAAAA,CAAO6G,IAKZlC,CAAAA,CAASuB,KAAAA,CAAM,eAAerB,WAAAA,CAAYC,GAAAA,GAAQF,CAAAA,EAAQuB,OAAAA,CAAQ,CAAA,CAAA,CAAA,EAAA,CAAM,CAAA,CACjEnG,EAAO8G,IAAAA,GALZnC,CAAAA,CAASvF,MAAUH,KAAAA,CAAM,CAAA,iBAAA,EAAoBe,EAAOZ,KAAAA,CAAMP,OAAO,EAAE,CAAA,CAAA,CAC5D,KAKX,CAEA,eAAsBgK,EACpBC,CAAAA,CACApE,CAAAA,CACA3E,EACA4E,CAAAA,CAAkB,CAElB,GAAI,CAACD,CAAAA,CACH,OAEF,IAAME,CAAAA,CAASC,WAAAA,CAAYC,KAAG,CACxBiE,CAAAA,CAAuC,EAAA,CAE7C,IAAA,IAAW/I,KAAU8I,CAAAA,CACf9I,CAAAA,CAAOgJ,QACTD,CAAAA,CAAaE,IAAAA,CAAK,CAACjJ,CAAAA,CAAOgJ,MAAAA,CAAQhJ,EAAO,CAAA,CAIzC+I,CAAAA,CAAaxH,OAAS,CAAA,GACxB,MAAMmD,EAAMoE,OAAAA,CAAQI,OAAAA,CAAQH,CAAAA,CAAAA,CACxBhJ,CAAAA,CAAQmG,OACVvB,CAAAA,CAASuB,KAAAA,CACP,SAAS6C,CAAAA,CAAaxH,MAAM,uBAAuBsD,WAAAA,CAAYC,GAAAA,GAAQF,CAAAA,EAAQuB,OAAAA,CAAQ,CAAA,CAAA,CAAA,GAAA,CAAO,CAAA,EAItG,CCrPA,IAAMgD,EAAAA,CAAiC,CACrCC,SAAAA,CAAW,CAAA,CACXC,WAAY,CAAA,CACZC,UAAAA,CAAY,EACZC,YAAAA,CAAc,CAAA,CACdC,QAAAA,CAAU,CACZ,CAAA,CAEA,SAASC,GACPrB,CAAAA,CACAsB,CAAAA,CAAkB,CAElB,IAAMnE,CAAAA,CAAM,IAAIoE,GAAAA,CAChB,IAAA,IAAWC,KAAQxB,CAAAA,CAAKF,KAAAA,CAAO,CAC7B,IAAM2B,CAAAA,CAAKD,EAAKE,QAAAA,CACZ,OAAOD,GAAO,QAAA,EAAYA,CAAAA,CAAGtI,MAAAA,GAAW,CAAA,EAAA,CACpBqI,CAAAA,CAAKG,gBAAAA,EAAoBH,EAAKI,mBAAAA,IAC9BN,CAAAA,EACxBnE,EAAI0E,GAAAA,CAAIJ,CAAAA,CAAAA,CAAKtE,EAAI2E,GAAAA,CAAIL,CAAAA,GAAO,CAAA,EAAK,CAAA,EACnC,CACA,OAAOtE,CACT,CAEA,SAAS4E,EACPC,CAAAA,CACAC,CAAAA,CAA2B,CAE3B,IAAMC,CAAAA,CAAOF,GAAQjB,EAAAA,CACrB,OAAO,CACLC,SAAAA,CAAWkB,CAAAA,CAAKlB,UAAYiB,CAAAA,CAAMjB,SAAAA,CAClCC,WAAYiB,CAAAA,CAAKjB,UAAAA,CAAagB,EAAMhB,UAAAA,CACpCC,UAAAA,CAAYgB,EAAKhB,UAAAA,CAAae,CAAAA,CAAMf,WACpCC,YAAAA,CAAce,CAAAA,CAAKf,YAAAA,CAAec,CAAAA,CAAMd,YAAAA,CACxCC,QAAAA,CAAUc,EAAKd,QAAAA,CAAWa,CAAAA,CAAMb,QAClC,CACF,CAgCO,SAASe,EAAAA,CACdnC,CAAAA,CACAlH,EACArB,CAAAA,CAAW,CAEX,IAAM2K,CAAAA,CAAiBf,EAAAA,CAAiBrB,EAAM,KAAA,CAAA,CACxCqC,EAAoBhB,EAAAA,CAAiBrB,CAAAA,CAAM,IAAA,CAAA,CAE3CsC,CAAAA,CAAa,IAAIf,IACjBgB,CAAAA,CAAgB,IAAIhB,IACpBiB,CAAAA,CAAgB,IAAIzI,IACpB0I,CAAAA,CAAe,IAAI1I,IAEnB2I,CAAAA,CAAQ,CACZhB,EACAiB,CAAAA,CACAC,CAAAA,GAAAA,CAEA,GAAIH,CAAAA,CAAa/H,IAAIgH,CAAAA,CAAAA,CAAW,OAChC,IAAMmB,CAAAA,CAAQD,CAAAA,CAAUH,EAAeD,CAAAA,CACnCK,CAAAA,CAAMnI,IAAIgH,CAAAA,CAAAA,GACdmB,EAAMC,GAAAA,CAAIpB,CAAAA,EAEV5I,CAAAA,CAAAA,CAvCJ,SACEiK,EACAJ,CAAAA,CAAyB,CAEzB,IAAMK,CAAAA,CAAYL,CAAAA,CAAI1B,WAAa,CAAA,CAC7BgC,CAAAA,CAASD,EAAY/L,CAAAA,CAAGC,GAAAA,CAAI,QAAA,CAAA,CAAOD,CAAAA,CAAGiM,MAAM,QAAA,CAAA,CAC5CC,EAAMH,CAAAA,CACR/L,CAAAA,CAAGC,IAAIkM,cAAAA,CAAeT,CAAAA,CAAIvB,QAAQ,CAAA,CAAA,CAClCnK,EAAGiM,KAAAA,CAAME,cAAAA,CAAeT,EAAIvB,QAAQ,CAAA,CAAA,CACxC,GAAI4B,CAAAA,CAAW,CACb,IAAM9F,CAAAA,CAAS,CAAA,EAAGyF,EAAI1B,UAAAA,CAAW7E,cAAAA,EAAc,CAAA,CAAA,EAAMiH,SAAAA,CAAUV,EAAI1B,UAAAA,CAAY,OAAA,CAAA,CAAA,CAAA,CAC/E,OAAO,GAAGgC,CAAAA,CAAAA,CAAAA,EAAUhM,EAAGC,GAAAA,CAAI6L,CAAAA,CAAAA,CAAAA,EAAAA,EAAkBI,CAAAA,CAAAA,GAAAA,EAASlM,EAAGC,GAAAA,CAAIgG,CAAAA,CAAAA,CAAAA,CAC/D,CACA,OAAO,CAAA,EAAG+F,CAAAA,IAAUhM,CAAAA,CAAG2B,GAAAA,CAAImK,CAAAA,CAAAA,CAAAA,EAAAA,EAAkBI,CAAAA,CAAAA,CAC/C,CAAA,EAwByBtH,EAAKyH,QAAAA,CAAS7L,CAAAA,CAAKiK,CAAAA,CAAAA,EAAaA,CAAAA,CACViB,CAAAA,CAAAA,CAAAA,EAC7C,CAAA,CAEA,OAAQV,CAAAA,EAAAA,CACN,IAAMR,CAAAA,CAAKQ,CAAAA,CAAMP,SACjB,GAAIe,CAAAA,CAAa/H,IAAI+G,CAAAA,CAAAA,CAAK,OAE1B,GAAIQ,CAAAA,CAAMX,YAAc,KAAA,CAAO,CAC7B,IAAMqB,CAAAA,CAAMZ,CAAAA,CAASO,EAAWR,GAAAA,CAAIL,CAAAA,EAAKQ,CAAAA,CAAAA,CACzCK,EAAWT,GAAAA,CAAIJ,CAAAA,CAAIkB,CAAAA,CAAAA,CACnB,IAAMY,EAAWnB,CAAAA,CAAeN,GAAAA,CAAIL,CAAAA,CAAAA,EAAOkB,CAAAA,CAAI3B,UAC/C,GAAI2B,CAAAA,CAAI3B,SAAAA,CAAYuC,CAAAA,CAAU,OAC9Bb,CAAAA,CAAMjB,EAAIkB,CAAAA,CAAK,CAACN,EAAkB3H,GAAAA,CAAI+G,CAAAA,CAAAA,CAAAA,CACtC,MACF,CAEA,GAAIQ,CAAAA,CAAMX,YAAc,IAAA,CAAM,CAAA,IApEhCkC,EAqEI,IAAMb,CAAAA,CAAMZ,EAASQ,CAAAA,CAAcT,GAAAA,CAAIL,CAAAA,CAAAA,CAAKQ,CAAAA,EAC5CM,CAAAA,CAAcV,GAAAA,CAAIJ,EAAIkB,CAAAA,CAAAA,CACtB,IAAMY,CAAAA,CAAWlB,CAAAA,CAAkBP,IAAIL,CAAAA,CAAAA,EAAOkB,EAAI3B,SAAAA,CAClD,GAAI2B,EAAI3B,SAAAA,CAAYuC,CAAAA,CAAU,OAC9Bb,CAAAA,CAAMjB,CAAAA,EAzEV+B,CAAAA,CAyEyBlB,CAAAA,CAAWR,GAAAA,CAAIL,CAAAA,EAtEnC+B,CAAAA,CACE,CACLxC,UAAWwC,CAAAA,CAAExC,SAAAA,CAoE8B2B,EApEhB3B,SAAAA,CAC3BC,UAAAA,CAAYuC,EAAEvC,UAAAA,CAmE6B0B,CAAAA,CAnEd1B,WAC7BC,UAAAA,CAAYsC,CAAAA,CAAEtC,WAkE6ByB,CAAAA,CAlEdzB,UAAAA,CAC7BC,aAAcqC,CAAAA,CAAErC,YAAAA,CAiE2BwB,EAjEVxB,YAAAA,CACjCC,QAAAA,CAAUoC,EAAEpC,QAAAA,CAgE+BuB,CAAAA,CAhElBvB,QAC3B,CAAA,CA+D6CuB,CAAAA,EAAM,IAAA,CAAA,CAC/C,MACF,CAEA,IAAMc,CAAAA,CAAAA,CACHrB,EAAeN,GAAAA,CAAIL,CAAAA,GAAO,CAAA,GAAMY,CAAAA,CAAkBP,IAAIL,CAAAA,CAAAA,EAAO,CAAA,CAAA,CAC1DkB,CAAAA,CAAMZ,CAAAA,CAASO,CAAAA,CAAWR,IAAIL,CAAAA,CAAAA,CAAKQ,CAAAA,CAAAA,CACzCK,CAAAA,CAAWT,IAAIJ,CAAAA,CAAIkB,CAAAA,EACfA,CAAAA,CAAI3B,SAAAA,EAAayC,GAAiBd,CAAAA,CAAI3B,SAAAA,CAAAA,EAC1C0B,EAAMjB,CAAAA,CAAIkB,CAAAA,CAAK,IAAA,EACjB,CACF,CC/GO,SAASe,EAAAA,CACdtM,CAAAA,CACAkF,EAAmB,CAEnBlF,CAAAA,CACGE,QAAQ,SAAA,CAAA,CACRC,YACC,wEAAA,CAAA,CAEDC,OAAO,sBAAA,CAAwB,8BAAA,EAC/BA,MAAAA,CAAO,SAAA,CAAW,6CAAA,CAAA,CAClBA,MAAAA,CACC,iBACA,qDAAA,CAAA,CAEDA,MAAAA,CAAO,WAAA,CAAa,kCAAA,CAAA,CACpBA,OACC,aAAA,CACA,sDAAA,EAEDA,MAAAA,CAAO,qBAAA,CAAuB,0CAAA,CAAA,CAC9BA,MAAAA,CACC,kBACA,6DAAA,CAAA,CAEDA,OACC,aAAA,CACA,4DAAA,EAEDA,MAAAA,CACC,eAAA,CACA,+DACA,UAAA,CAAA,CAEDA,OACC,mBAAA,CACA,8EAAA,EAEDA,MAAAA,CACC,mBAAA,CACA,8EAAA,CAAA,CAEDE,MAAAA,CAAO,MAAOC,CAAAA,EAAAA,CACb,IAAMgM,CAAAA,CAAYlH,WAAAA,CAAYC,KAAG,CAC7BH,CAAAA,CAAWqH,YAAY/I,CAAAA,CAAwBlD,CAAAA,CAAQmD,MAAM,CAAA,CAAG,CAClE+I,OAAAA,CAAS,CAAC,CAAClM,CAAAA,CAAQkM,QACnBC,UAAAA,CAAYnM,CAAAA,CAAQoM,OACpBC,KAAAA,CAAO,CAAC,CAACrM,CAAAA,CAAQqM,KAAAA,CACjBC,iBAAkBtM,CAAAA,CAAQuM,cAAAA,GAAmB,KAC/C,CAAA,CAAA,CACIC,EAAwC7H,CAAAA,CAExC8H,CAAAA,CAAW,EAEf,GAAI,CACF,IAAMxH,CAAAA,CAAe,MAAMP,CAAAA,CACzB1E,EACA2E,CAAAA,CACAC,CAAAA,EAEF,GAAI,CAACK,EAAc,CACjBwH,CAAAA,CAAW,EACX,MACF,CAEA,GAAM,CAAE7J,MAAAA,CAAAA,CAAM,CAAA,CAAKqC,CAAAA,CACbqD,EAAqB3F,CAAAA,CAA0B3C,CAAAA,CAAS4C,CAAAA,CAAAA,CAC9D4J,CAAAA,CAAcE,kBAAAA,CAAmB9J,EAAQtE,CAAAA,CAAQwB,GAAAA,EAAG,CAAA,CACpD,IAAM6M,EAAiBvJ,CAAAA,CACrBpD,CAAAA,CAAQmD,OACRP,CAAAA,CAAOgK,YAAY,EAErBhI,CAAAA,CAAWqH,WAAAA,CAAYU,EAAgB,CACrCT,OAAAA,CAAS,CAAC,CAAClM,CAAAA,CAAQkM,QACnBC,UAAAA,CAAYnM,CAAAA,CAAQoM,QAAUxJ,CAAAA,CAAOuJ,UAAAA,CACrCE,MAAO,CAAC,CAACrM,EAAQqM,KAAAA,CACjBC,gBAAAA,CAAkBtM,EAAQuM,cAAAA,GAAmB,CAAA,CAC/C,CAAA,CAAA,CAEA,IAAMvF,EAAQ,MAAMX,CAAAA,CAClBzD,EACA5C,CAAAA,CACAwM,CAAAA,CACA5H,CAAAA,CAAAA,CAEF,GAAI,CAACoC,EAAO,CACVyF,CAAAA,CAAW,EACX,MACF,CAEA,IAAMjF,CAAAA,CAAe,MAAMP,EAAiBrE,CAAAA,CAAQ5C,CAAAA,CAAS4E,CAAAA,CAAAA,CAC7D,GAAI,CAAC4C,CAAAA,CAAc,CACjBiF,EAAW,CAAA,CACX,MACF,CAEA,IAAMpE,CAAAA,CAAO,MAAMV,EACjBX,CAAAA,CACAQ,CAAAA,CACAgF,EACAxM,CAAAA,CACA4E,CAAAA,CACAhC,EACA0F,CAAAA,CAAmBrF,UAAU,EAE/B,GAAI,CAACoF,EAAM,CACToE,CAAAA,CAAW,EACX,MACF,CAEA,IAAMI,CAAAA,CACJF,CAAAA,GAAmB,SAAA,CAAYrO,CAAAA,CAAQC,MAAAA,CAASD,CAAAA,CAAQwO,OACpDC,CAAAA,CAAU,IAAItM,EAAQoM,CAAAA,CAAAA,CACtBG,EACJ3E,CAAAA,CAAKF,KAAAA,CAAM3G,QAAU6G,CAAAA,CAAK4E,YAAAA,EAAczL,QAAU,CAAA,CAAA,CAC9CsB,CAAAA,CAAOuB,EAAerE,CAAAA,CAAAA,CAC5B+M,EAAQlM,KAAAA,CAAMyD,CAAAA,CAA8BxB,EAAM,CAAA,CAAGkK,CAAAA,CAAAA,CAAAA,CACrD,IAAME,EAAkB1C,EAAAA,CACtBnC,CAAAA,CACCjH,GAAS2L,CAAAA,CAAQ5L,SAAAA,CAAUC,CAAAA,CAAAA,CAC5B9C,CAAAA,CAAQwB,KAAG,CAAA,CAQPqN,EAAW,MAAM/E,CAAAA,CACrBC,EACAmE,CAAAA,CACAlE,CAAAA,CACAtI,CAAAA,CACA4E,CAAAA,CACAoC,CAAAA,CACApE,CAAAA,CAb6B,CAC7B2B,CAAAA,CACAC,EAAAA,GAAAA,CAEAuI,CAAAA,CAAQ7L,MAAAA,CAAOoD,EAA8BxB,CAAAA,CAAMyB,CAAAA,CAAWC,EAAAA,CAAAA,EAChE,EAUE0I,CAAAA,CAAAA,CAGF,GADAH,CAAAA,CAAQ1L,IAAAA,GACJ,CAAC8L,CAAAA,CAAU,CACbV,CAAAA,CAAW,CAAA,CACX,MACF,CAEA,IAAMhD,EAAAA,CAAW3E,YAAYC,GAAAA,EAAG,CAAKiH,EAM/BoB,CAAAA,CAAyB,CAC7BC,aANmB,IAAIjL,GAAAA,CAAI,IACxBiG,CAAAA,CAAKF,KAAAA,CAAM3C,IAAK8H,CAAAA,EAAMA,CAAAA,CAAEvD,QAAQ,CAAA,CAAA,GAAA,CAC/B1B,CAAAA,CAAK4E,YAAAA,EAAgB,EAAA,EAAIzH,GAAAA,CAAK8H,GAAMA,CAAAA,CAAEvD,QAAQ,EACnD,CAAA,CAAErC,IAAAA,CAID6F,gBAAiBvG,CAAAA,CAAMxF,MAAAA,CACvBgM,WAAYL,CAAAA,CAAS3J,KAAAA,CAAMgK,WAC3BC,UAAAA,CAAYpF,CAAAA,CAAKF,MAAM3G,MAAAA,EAAU6G,CAAAA,CAAK4E,cAAczL,MAAAA,EAAU,CAAA,CAAA,CAC9DkM,YAAarF,CAAAA,CAAKH,mBAAAA,CAAsBG,EAAKF,KAAAA,CAAM3G,MAAAA,CAASvC,OAC5D0E,WAAAA,CAAawJ,CAAAA,CAAS3J,MAAMG,WAAAA,CAC5BC,aAAAA,CAAeuJ,EAAS3J,KAAAA,CAAMI,aAAAA,CAC9BH,eAAgBb,CAAAA,CAAOa,cAAAA,CACvBC,YAAad,CAAAA,CAAOc,WAAAA,CACpB+F,SAAAA,EACF,CAAA,CACIkD,CAAAA,GAAmB,SAAA,EACrB/H,CAAAA,CAASwI,OAAAA,CAAQA,CAAAA,CAAAA,CAGnBxI,CAAAA,CAAS+I,YAAYR,CAAAA,CAASQ,WAAW,EACzC/I,CAAAA,CAASQ,MAAAA,CAAO+H,EAASpE,OAAO,CAAA,CAE5B4D,IAAmB,SAAA,GACrB/H,CAAAA,CAASI,KAAK,0BAAA,CAAA,CACdJ,EAASwI,OAAAA,CAAQA,CAAAA,CAAAA,CAAAA,CAGd/E,CAAAA,CAAKH,mBAAAA,EACR,MAAMY,EACJqE,CAAAA,CAASpE,OAAAA,CACTyD,EACAxM,CAAAA,CACA4E,CAAAA,EAIArB,CAAAA,CAAmBX,CAAAA,CAAQuK,EAAS3J,KAAK,CAAA,GAC3CiJ,EAAW,CAAA,EAEf,CAAA,MAASpN,EAAgB,CACvBuF,CAAAA,CAASvF,MAAM+E,CAAAA,CAAQ/E,CAAAA,CAAAA,CAAAA,CACvBoN,CAAAA,CAAW,EACb,QAAA,CACMD,CAAAA,EAAeA,IAAgB7H,CAAAA,EACjC,MAAM6H,EAAYoB,KAAAA,EAAK,CAErBnB,IAAa,CAAA,EACf/N,CAAAA,CAAc+N,CAAAA,EAElB,CACF,CAAA,EACJ,CCpNO,SAASoB,GACdpO,CAAAA,CACAkF,CAAAA,CAAmB,CAEClF,CAAAA,CACjBE,OAAAA,CAAQ,QAAA,CAAA,CACRC,WAAAA,CAAY,8CAAA,CAAA,CAGZD,OAAAA,CAAQ,QAAA,CAAA,CACRC,WAAAA,CAAY,6DAAA,CAAA,CACZC,MAAAA,CAAO,sBAAA,CAAwB,mCAAA,CAAA,CAC/BE,MAAAA,CAAO,MAAOC,CAAAA,EAAAA,CACb,GAAI,CACF,IAAMC,EAAS,MAAM6N,cAAAA,CAAe,CAClChO,GAAAA,CAAKxB,CAAAA,CAAQwB,KAAG,CAChB6E,KAAAA,CAAO3E,EAAQ2E,KAAAA,CAAQA,CAAAA,CAAQ1F,KAAAA,CAAAA,CAC/BkG,OAAAA,CAASnF,CAAAA,CAAQmF,OACnB,CAAA,CAAA,CAGA,MADiB/E,mBAAAA,CACF2N,kBAAAA,CAAmB9N,EAAOmF,MAAM,CAAA,CAE1CnF,EAAOmF,MAAAA,CAAOC,KAAAA,EACjB3G,IAEJ,CAAA,MAASW,EAAgB,CACvBR,CAAAA,CAAW,QAASQ,CAAAA,CAAAA,CACpBX,CAAAA,GACF,CACF,CAAA,EACJ,CClCA,IAAMsP,GAA+C,CACnD,KAAA,CACA,SACA,SAAA,CACA,KAAA,CAAA,CAEIC,GAA0B,IAAI7L,GAAAA,CAAY4L,EAAAA,CAAAA,CAiBzC,SAASE,GACdzO,CAAAA,CACAkF,CAAAA,CAAmB,CAEnB,IAAMwJ,CAAAA,CAAW1O,EACdE,OAAAA,CAAQ,OAAA,EACRC,WAAAA,CAAY,wCAAA,CAAA,CAEfuO,CAAAA,CACGxO,OAAAA,CAAQ,OAAA,EACRC,WAAAA,CAAY,yDAAA,EACZC,MAAAA,CACC,sBAAA,CACA,sDAAA,CAAA,CAEDA,MAAAA,CACC,gBACA,mDAAA,CACA,KAAA,EAEDE,MAAAA,CAAO,MAAOC,GAAAA,CAAAA,IA/BUsC,CAAAA,CAAAA,IAJHA,EAoCd8L,CAAAA,EApCc9L,CAAAA,CAIGA,CAAAA,CAgCUtC,CAAAA,CAAQoO,IAAAA,CAnCtCH,EAAAA,CAAwBlL,IAAIT,CAAAA,CAAAA,CAK1BA,GAGTzD,CAAAA,CACE,CAAA,oBAAA,EAAuByD,CAAAA,CAAAA,kBAAAA,EAA0B0L,EAAAA,CAAkBhL,KAAK,IAAA,CAAA,EAAO,CAAA,CAE1EtE,CAAAA,KA0BGkG,CAAAA,CAAWyJ,gBAAAA,GACjB/P,CAAAA,CAAQC,MAAAA,CAAOE,KAAAA,CAAMa,CAAAA,CAAG2B,GAAAA,CAAI,CAAA;AAAA,CAAA,CAAA,CAAA,CAE5B,GAAI,CACF,IAAMuL,CAAAA,CAAc,MAAM8B,CAAAA,CAAoB3J,CAAAA,CAAO,CACnDQ,OAAAA,CAASnF,CAAAA,CAAQmF,OAAAA,CACjBoJ,cAAe,CAAA,CACjB,CAAA,CAAA,CAEIH,CAAAA,GAAS,KAAA,CACX,MAAM5B,CAAAA,CAAYgC,KAAAA,EAAK,CAEvB,MAAMhC,CAAAA,CAAYiC,SAAAA,CAAUL,CAAAA,CAAAA,CAE9BxJ,CAAAA,CAAS8J,iBAAAA,CAAkBN,CAAAA,EAC7B,CAAA,MAASO,CAAAA,CAAK,CACZ9P,CAAAA,CAAW,sBAAA,CAAwB8P,CAAAA,CAAAA,CACnCjQ,CAAAA,GACF,CACF,CAAA,CAAA,CAEFyP,CAAAA,CACGxO,OAAAA,CAAQ,MAAA,EACRC,WAAAA,CAAY,4CAAA,CAAA,CACZC,MAAAA,CACC,sBAAA,CACA,sDAAA,CAAA,CAEDE,MAAAA,CAAO,MAAOC,CAAAA,EAAAA,CACb,IAAM4E,CAAAA,CAAWyJ,gBAAAA,EAAAA,CACjB,GAAI,CACF,IAAM7B,CAAAA,CAAc,MAAM8B,CAAAA,CAAoB3J,CAAAA,CAAO,CACnDQ,OAAAA,CAASnF,CAAAA,CAAQmF,OAAAA,CACjBoJ,aAAAA,CAAe,CAAA,CACjB,CAAA,CAAA,CACMrI,CAAAA,CAAO,MAAMsG,CAAAA,CAAYoC,SAAO,CACtChK,CAAAA,CAASiK,eAAAA,CAAgB3I,CAAAA,EAC3B,CAAA,MAASyI,CAAAA,CAAK,CACZ9P,CAAAA,CAAW,0BAAA,CAA4B8P,CAAAA,CAAAA,CACvCjQ,CAAAA,GACF,CACF,CAAA,EAEFyP,CAAAA,CACGxO,OAAAA,CAAQ,MAAA,CAAA,CACRC,WAAAA,CAAY,yCAAA,CAAA,CACZC,MAAAA,CACC,sBAAA,CACA,sDAAA,CAAA,CAEDE,MAAAA,CAAO,MAAOC,CAAAA,EAAAA,CACb,IAAMwM,EAAc,MAAM8B,CAAAA,CAAoB3J,CAAAA,CAAO,CACnDQ,OAAAA,CAASnF,CAAAA,CAAQmF,OAAAA,CACjBoJ,aAAAA,CAAe,IACjB,CAAA,CAAA,CACAjQ,CAAAA,CAAQC,MAAAA,CAAOE,KAAAA,CAAM,CAAA,EAAG+N,CAAAA,CAAYsC,cAAY;CAAM,EACxD,CAAA,EACJ,CAEA,eAAeR,CAAAA,CACbS,EACA/O,CAAAA,CAAuE,EAAC,CAAC,CAEzE,IAAMF,CAAAA,CAAME,EAAQF,GAAAA,EAAOxB,CAAAA,CAAQwB,GAAAA,EAAG,CAEtC,GAAI,CACF,IAAMmF,CAAAA,CAAe,MAAMC,aAAAA,CAAc,CACvCC,OAAAA,CAASnF,CAAAA,CAAQmF,OAAAA,CACjBR,MAAOoK,CAAAA,CACPjP,GAAAA,CAAAA,CACF,CAAA,CAAA,CAEA,OAAI,CAACmF,CAAAA,CAAaG,MAAAA,CAAOC,KAAAA,EAAS,CAACJ,CAAAA,CAAarC,MAAAA,CACvCmM,CAAAA,CAIPrC,mBAAmBzH,CAAAA,CAAarC,MAAAA,CAAQ9C,CAAAA,CAAK,CAC3CyO,aAAAA,CAAevO,CAAAA,CAAQuO,aACzB,CAAA,CAAA,EAAMQ,CAEV,CAAA,MAAS1P,CAAAA,CAAgB,CAKvB,OAJAR,EACE,4DAAA,CACAQ,CAAAA,CAAAA,CAEK0P,CACT,CACF,CCzIO,SAASC,EAAAA,CAAqBvP,CAAAA,CAAgB,CACnDA,CAAAA,CACGE,OAAAA,CAAQ,kBAAA,CAAA,CACRC,WAAAA,CACC,+DAAA,CAAA,CAEDC,MAAAA,CACC,iBAAA,CACA,wEAAA,CAAA,CAEDE,MAAAA,CAAO,CAACkP,CAAAA,CAA8BC,CAAAA,GAAAA,CACjCA,CAAAA,CAAKrM,MAAAA,EAAU,CAACsM,eAAAA,CAAgBD,EAAKrM,MAAM,CAAA,GAC7ChE,CAAAA,CAAW,CAAA,iBAAA,EAAoBqQ,CAAAA,CAAKrM,MAAM,CAAA,EAAA,CAAI,CAAA,CAC9CvE,OAAAA,CAAQwO,MAAAA,CAAOrO,KAAAA,CACba,CAAAA,CAAG2B,GAAAA,CACD,CAAA;CAAA,CAAA,CAAA,CAGJvC,GAAAA,CAAAA,CAGF,IAAM0Q,EAAUC,kBAAAA,EAAAA,CACVzK,EAAW0K,gBAAAA,CAAiB,CAAEzM,OAAQqM,CAAAA,CAAKrM,MAAO,CAAA,CAAA,CAExD,GAAIoM,EAAU,CACZ,IAAM9H,EAAOiI,CAAAA,CAAQG,IAAAA,CAAMC,GAAMA,CAAAA,CAAEC,IAAAA,GAASR,CAAAA,CAAAA,CAC5C,GAAI,CAAC9H,CAAAA,CAAM,CACTtI,EAAW,CAAA,MAAA,EAASoQ,CAAAA,cAAsB,CAAA,CAC1C3Q,OAAAA,CAAQwO,OAAOrO,KAAAA,CACba,CAAAA,CAAG2B,IAAI,kDAAA,CAAA,EAETvC,CAAAA,EAAAA,CACA,MACF,CACAkG,CAAAA,CAAS8K,iBAAiBvI,CAAAA,EAC5B,MACEvC,CAAAA,CAAS9D,MAAAA,CAAOsO,CAAAA,EAEpB,CAAA,EACJ,CCrCO,SAASO,GAAiBlQ,CAAAA,CAAkBkF,CAAAA,CAAmB,CACpEnF,CAAAA,CAAoBC,CAASkF,CAAAA,CAC7BoH,EAAAA,CAAuBtM,EAASkF,CAAAA,CAAAA,CAChCkJ,GAAsBpO,CAAAA,CAASkF,CAAAA,EAC/BuJ,EAAAA,CAAqBzO,CAAAA,CAASkF,CAAAA,CAAAA,CAC9BqK,EAAAA,CAAqBvP,CAAAA,EACvB,CCFA,IAAImQ,GAAqB,KAAA,CACnBC,CAAAA,CAAmB,MACvBlL,CAAAA,CACA8H,CAAAA,GAAAA,CAEA,GAAA,CAAImD,GAAAA,CAKJ,GAJAA,GAAqB,IAAA,CAErBvR,CAAAA,GAEIsG,CAAAA,CACF,GAAI,CACF,IAAMmL,CAAAA,CAAe,IAAIC,OAAAA,CAAe5L,CAAAA,EACtC6L,WAAW7L,CAAAA,CAlBM,GAAA,EAkBqB8L,KAAAA,EAAK,EAE7C,MAAMF,OAAAA,CAAQG,KAAK,CAACvL,CAAAA,CAAMiJ,OAAK,CAAIkC,CAAAA,CAAa,EAClD,CAAA,MAASzQ,CAAAA,CAAgB,CACvBR,CAAAA,CAAW,gDAAA,CAAkDQ,CAAAA,EAC/D,CAGFf,QAAQM,IAAAA,CAAK6N,CAAAA,GACf,CAAA,CAEM0D,EAAAA,CAA0B,CAC9BxL,CAAAA,CACAyL,CAAAA,CACAC,IAAAA,CAEAxR,CAAAA,CAAW,eAAeuR,CAAAA,CAAAA,CAAAA,CAASC,CAAAA,CAAAA,CAC9BR,CAAAA,CAAiBlL,EAAO,CAAA,EAC/B,EAEM2L,EAAAA,CAAiB,MAAOC,GAAAA,CAC5B,GAAM,CAAEC,OAAAA,CAASlR,CAAE,EAAK,MAAM,OAAO,YAAA,CAAA,CAC/BQ,CAAAA,CAAMxB,QAAQwB,GAAAA,EAAG,CACvBxB,OAAAA,CAAQC,MAAAA,CAAOE,KAAAA,CACb;AAEKa,EAAAA,CAAAA,CAAG2B,IAAI,GAAA,CAAA,IAAQ3B,CAAAA,CAAG2B,GAAAA,CAAI,aAAawP,eAAAA,CAAAA,CAAiB,CAAA,CAAA,CAAA,EAAKnR,CAAAA,CAAG2B,IAAIsP,CAAAA,CAAAA,IAAgBjR,CAAAA,CAAG2B,GAAAA,CAAInB,CAAAA,CAAAA;AACvFR,EAAAA,CAAAA,CAAG2B,GAAAA,CAAI,GAAA,CAAA,CAAA,CAAA,EAAQ3B,CAAAA,CAAG2B,GAAAA,CAAI,WAAA,CAAA,CAAA,CAAA,EAAgB3B,CAAAA,CAAG2B,GAAAA,CAAI,KAAA,CAAA;;GAE5C3B,CAAAA,CAAGoR,MAAAA,CAAOpR,EAAGqR,KAAAA,CAAMrR,CAAAA,CAAGsR,KAAK,CAAA,CAAA,EAAIL,CAAAA,CAAY3K,WAAAA,EAAW,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,EAAA,EAAQtG,EAAG0B,IAAAA,CAAKyP,eAAAA,CAAAA,CAAAA,EAAAA,EAAqBnR,CAAAA,CAAG2B,GAAAA,CAAInB,CAAAA,CAAAA;;CAG5G,EAEL,CAAA,CAWA,eAAsB+Q,EAAAA,EAAAA,CACpB,IAAMpR,EAAU,IAAIqR,OAAAA,CAEpBrR,CAAAA,CACGgQ,IAAAA,CAAK,WAAA,CAAA,CACL7P,YACC,kEAAA,CAAA,CAEDmR,OAAAA,CAAQN,eAAAA,CAAiB,eAAA,CAAiB,2BAAA,CAAA,CAC1C5Q,MAAAA,CAAO,SAAA,CAAW,+CAAA,CAAA,CAClBmR,WAAAA,CACC,OAAA,CACA;;;;;AAAA,CAAA,CAAA,CAEDC,KAAK,WAAA,CAAa,MAAOC,CAAAA,CAAaC,CAAAA,GAAAA,KAvBThO,CAAAA,CA8B5B,GANa+N,CAAAA,CAAYhC,IAAAA,GAChB/I,KAAAA,EACPiL,WAAAA,CAAY,QAAS,KAAA,CAAA,CAAA,CA1BKjO,EA6BTgO,CAAAA,CAAcjC,IAAAA,EAAI,CACI/L,MAAAA,IA5BhC,QACXA,CAAAA,GAAW,OAAA,EACXA,CAAAA,GAAW,MAAA,EACXA,IAAW,IAAA,CAyByC,CAChD,IAAMkO,CAAAA,CAASF,EAAcE,MAAAA,CACvBd,CAAAA,CACJc,GAAUA,CAAAA,CAAO5B,IAAAA,KAAW,WAAA,CACxB4B,CAAAA,CAAO5B,IAAAA,EAAI,CACX0B,EAAc1B,IAAAA,EAAI,CACxB,MAAMa,EAAAA,CAAeC,CAAAA,EACvB,CACF,CAAA,CAAA,CAEF,IAAM5L,CAAAA,CAAQ2M,kBAAAA,GAEdhT,OAAAA,CAAQiT,EAAAA,CAAG,SAAU,IAAA,CAAW1B,CAAAA,CAAiBlL,CAAAA,CA9F1B,GAAA,EAAA,CAAA,CAAA,CA+FvBrG,OAAAA,CAAQiT,EAAAA,CAAG,UAAW,IAAA,CAAW1B,CAAAA,CAAiBlL,CAAAA,CA9F1B,GAAA,EAAA,CAAA,CAAA,CAgGxBrG,QAAQiT,EAAAA,CAAG,mBAAA,CAAsB5C,GAAAA,CAC/BwB,EAAAA,CAAwBxL,CAAAA,CAAO,kBAAA,CAAoBgK,CAAAA,EACrD,CAAA,CAAA,CAEArQ,OAAAA,CAAQiT,GAAG,oBAAA,CAAuBlB,CAAAA,EAAAA,CAChCF,EAAAA,CAAwBxL,EAAO,6BAAA,CAA+B0L,CAAAA,EAChE,CAAA,CAAA,CAEA,GAAI,CAKF,GAJAmB,uBAAAA,EAAAA,CAEA7B,GAAiBlQ,CAAAA,CAASkF,CAAAA,CAAAA,CAEtB,CAACrG,QAAQmT,IAAAA,CAAKC,KAAAA,CAAM,CAAA,CAAA,CAAGlQ,OAAQ,OAAA,KACjC/B,EAAQkS,UAAAA,EAAU,CAIpB,MAAMlS,CAAAA,CAAQmS,UAAAA,CAAWtT,OAAAA,CAAQmT,IAAI,EAErC,MAAM9M,CAAAA,CAAMiJ,KAAAA,EAAK,CAEjBtP,QAAQM,IAAAA,CAAK,CAAA,EACf,CAAA,MAAS+P,EAAc,CACrB9P,CAAAA,CAAW,0BAA2B8P,CAAAA,CAAAA,CACtC,MAAMkB,CAAAA,CAAiBlL,CAAAA,CAAO,CAAA,EAChC,CACF,CAEAkM,EAAAA,EAAAA,CAAMgB,KAAAA,CAAOlD,GAAAA,CACX9P,CAAAA,CAAW,yBAAA,CAA2B8P,CAAAA,EACtCtQ,CAAAA,EAAAA,CACAC,QAAQM,IAAAA,CAAK,CAAA,EACf,CAAA,CAAA","file":"index.js","sourcesContent":["import r from 'picocolors';\nexport const restoreCursor = ()=>{\n process.stdout.isTTY && process.stdout.write('\\x1B[?25h');\n};\nexport const exitWithError = (r = 1)=>{\n restoreCursor(), process.exit(r);\n};\nexport const printError = (o, s)=>{\n let t = void 0 === s ? '' : `: ${s instanceof Error ? s.message : String(s)}`;\n console.error(`${r.red(o)}${t}`);\n};\n","import { getConfigReporter as r } from '@ngcompass/reporters';\nimport { initConfig as t } from '@ngcompass/config';\nimport { exitWithError as i, printError as o } from './exit.js';\nexport function registerInitCommand(e, n) {\n e.command('init').description('Create a starter ngcompass configuration in the current project').option('-f, --force', 'Overwrite an existing configuration file').option('--cwd <path>', 'Project directory where the configuration will be created', process.cwd()).action(async (e)=>{\n try {\n let o = await t({\n cwd: e.cwd,\n force: e.force\n }), n = r();\n await n.renderInitResult(o), o.success || o.alreadyExists || i();\n } catch (r) {\n o('Error initializing configuration', r), i();\n }\n });\n}\n","import t from 'picocolors';\nlet FRAMES = [\n '⠋',\n '⠙',\n '⠹',\n '⠸',\n '⠼',\n '⠴',\n '⠦',\n '⠧',\n '⠇',\n '⠏'\n];\nexport class Spinner {\n stream;\n timer = null;\n frameIndex = 0;\n message = '';\n isTTY;\n constructor(t){\n this.stream = t, this.isTTY = !!t.isTTY;\n }\n start(e) {\n (this.message = e, this.frameIndex = 0, this.isTTY) ? (this.stream.write('\\x1B[?25l'), this.render(), this.timer = setInterval(()=>this.render(), 80)) : this.stream.write(`${t.cyan('❯')} ${t.dim(e)}\\n`);\n }\n update(t) {\n this.message = t, this.isTTY && this.timer && this.render();\n }\n writeLine(t) {\n this.isTTY && this.timer ? (this.stream.write('\\r\\x1B[K'), this.stream.write(`${t}\\n`), this.render()) : this.stream.write(`${t}\\n`);\n }\n stop() {\n this.timer && (clearInterval(this.timer), this.timer = null), this.isTTY && (this.stream.write('\\r\\x1B[K'), this.stream.write('\\x1B[?25h'));\n }\n render() {\n let e = t.cyan(FRAMES[this.frameIndex % FRAMES.length]);\n this.frameIndex++, this.stream.write(`\\r\\x1B[K${e} ${t.dim(this.message)}`);\n }\n}\n","let PERFORMANCE_MODE_PRESETS = {\n eco: {\n typeAwareConcurrency: 1,\n typeAwareFileConcurrency: 1,\n typeAwareChunkSize: 100,\n typeAwareIsolation: 'auto',\n typeAwareChunkStrategy: 'dependency'\n },\n balanced: {\n typeAwareConcurrency: 1,\n typeAwareFileConcurrency: 1,\n typeAwareChunkSize: 150,\n typeAwareIsolation: 'auto',\n typeAwareChunkStrategy: 'dependency'\n },\n turbo: {\n typeAwareConcurrency: 2,\n typeAwareFileConcurrency: 4,\n typeAwareChunkSize: 500,\n typeAwareIsolation: 'off',\n typeAwareChunkStrategy: 'simple'\n }\n}, PERFORMANCE_MODES = [\n 'eco',\n 'balanced',\n 'turbo'\n], PERFORMANCE_MODE_VALUES = new Set(PERFORMANCE_MODES);\nexport function parsePositiveIntegerOption(e, r) {\n if (void 0 === e) return;\n let t = Number(e);\n if (!Number.isInteger(t) || t < 1) throw Error(`${r} must be a positive integer.`);\n return t;\n}\nexport function resolvePerformanceOptions(e, r) {\n let t = PERFORMANCE_MODE_PRESETS[function(e) {\n let r = e ?? 'balanced';\n if (!PERFORMANCE_MODE_VALUES.has(r)) throw Error(`Invalid performance mode \"${r}\". Expected one of: ${PERFORMANCE_MODES.join(', ')}.`);\n return r;\n }(e.mode)];\n return {\n maxWorkers: parsePositiveIntegerOption(e.maxWorkers, '--max-workers') ?? r.maxWorkers,\n typeAwareChunkSize: t.typeAwareChunkSize,\n typeAwareConcurrency: t.typeAwareConcurrency,\n typeAwareFileConcurrency: t.typeAwareFileConcurrency,\n typeAwareIsolation: t.typeAwareIsolation,\n typeAwareChunkStrategy: t.typeAwareChunkStrategy\n };\n}\n","import r from 'node:path';\nexport function normalizeReporterFormat(r) {\n return 'ui' === r ? 'html' : r ?? 'console';\n}\nexport function resolveReporterFormat(r, e) {\n if (r) return normalizeReporterFormat(r);\n switch(e){\n case 'json':\n return 'json';\n case 'sarif':\n return 'sarif';\n case 'html':\n return 'html';\n default:\n return 'console';\n }\n}\nexport function shouldFailAnalysis(r, e) {\n let t = r.failOnSeverity ?? 'error', o = r.maxWarnings ?? 10;\n return e.totalErrors > 0 || 'warn' === t && e.totalWarnings > 0 || e.totalWarnings > o;\n}\nexport function resolveParserProjectPath(e, t) {\n if (!e?.project) return;\n let o = e.tsconfigRootDir ? r.resolve(t, e.tsconfigRootDir) : t;\n return r.resolve(o, e.project);\n}\nexport function toError(r) {\n return r instanceof Error ? r : Error(String(r));\n}\nexport function getAnalyzeMode(r) {\n return r.mode ?? 'balanced';\n}\nexport function formatAnalysisProgressMessage(r, e, t) {\n return `Running analysis in ${r} mode: ${e.toLocaleString()}/${t.toLocaleString()} checks complete...`;\n}\n","import e from 'node:process';\nimport { DEFAULT_INCLUDE_PATTERNS as r } from '@ngcompass/common';\nimport { loadPlugins as o, resolveConfig as n } from '@ngcompass/config';\nimport { configureRuleExecutor as t, runAnalysis as i } from '@ngcompass/engine';\nimport { buildExecutionPlan as a } from '@ngcompass/planner';\nimport { scan as s } from '@ngcompass/scanner';\nimport { executeBatchedNewEngineRules as l, getEnabledRules as p, getGlobalRegistry as c, isNewEngineRule as u, resolveRules as d } from '@ngcompass/rules';\nimport { resolveParserProjectPath as f } from './resolve.js';\nexport async function loadConfigurationStep(r, t, i) {\n let a = performance.now();\n i.step('❯ Loading configuration...');\n let s = await n({\n profile: r.profile,\n cache: t,\n cwd: e.cwd()\n });\n if (!s.report.valid) {\n let e = s.report.issues.map((e)=>{\n let r = e.path?.join('.') || 'root';\n return `[${e.severity.toUpperCase()}] ${r}: ${e.message}`;\n });\n return i.error(Error([\n 'Configuration validation failed',\n ...e\n ].join('\\n'))), null;\n }\n if (!s.config) return i.error(Error('No configuration found')), null;\n let l = s.config.plugins;\n if (l && l.length > 0) {\n i.step(`❯ Loading ${l.length} plugin(s)...`);\n let r = e.cwd();\n await o(l, r, c()), i.info(`Loaded ${l.length} plugin(s)`);\n }\n return i.debug(`Config resolve: ${(performance.now() - a).toFixed(2)}ms`), {\n config: s.config\n };\n}\nexport async function discoverFilesStep(o, n, t, i) {\n let a = performance.now();\n i.step('❯ Discovering files...');\n let l = await s({\n rootDir: e.cwd(),\n include: o.include ?? [\n ...r\n ],\n exclude: o.exclude ?? [],\n ignorePatterns: o.ignorePatterns,\n tsConfigPath: f(o.parserOptions, e.cwd()),\n respectGitignore: !0,\n debug: n.debug,\n cache: t\n });\n return l.ok ? (i.info(`❯ Found ${l.data.files.length} files in ${(performance.now() - a).toFixed(0)}ms`), i.debug(`File discovery: ${(performance.now() - a).toFixed(2)}ms`), l.data.files) : (i.error(Error(`File discovery failed: ${l.error.message}`)), null);\n}\nexport async function resolveRulesStep(r, o, n) {\n let t = performance.now();\n n.step('❯ Loading rules...');\n let i = r;\n o.rule && (n.info(`Filtering analysis to single rule: ${o.rule}`), i = {\n ...r,\n rules: {\n [o.rule]: 'error'\n },\n extends: []\n });\n let a = await d(i, e.cwd());\n if (!a.ok) return n.error(Error(`Rule resolution failed: ${a.error.message}`)), null;\n let s = p(a.data.rules);\n return n.info(`❯ Loaded ${s.size} active rules in ${(performance.now() - t).toFixed(0)}ms`), n.debug(`Rule resolution: ${(performance.now() - t).toFixed(2)}ms`), s;\n}\nexport async function buildPlanStep(r, o, n, t, i, s, l) {\n let p = performance.now();\n i.step('❯ Planning analysis...');\n let c = await a({\n files: r,\n rules: o,\n rootDir: e.cwd(),\n cache: n,\n debug: t.debug,\n incremental: t.force ? {\n forceRerun: !0\n } : void 0,\n workerCount: l,\n overrides: s.overrides\n });\n return c.ok ? (c.data.precomputedAnalysis ? i.info('❯ Reused cached analysis plan') : i.info(`❯ Prepared ${c.data.tasks.length.toLocaleString()} checks in ${(performance.now() - p).toFixed(0)}ms`), i.debug(`Plan build: ${(performance.now() - p).toFixed(2)}ms`), c.data) : (i.error(Error(`Execution plan building failed: ${c.error.message}`)), null);\n}\nexport async function runAnalysisStep(r, o, n, a, s, p, c, d, f) {\n let g = performance.now();\n t(l, u);\n let m = await i(r, {\n rootDir: e.cwd(),\n cache: o,\n debug: a.debug,\n files: p,\n maxWorkers: n.maxWorkers,\n typeAwareChunkSize: n.typeAwareChunkSize,\n typeAwareConcurrency: n.typeAwareConcurrency,\n typeAwareFileConcurrency: n.typeAwareFileConcurrency,\n typeAwareIsolation: n.typeAwareIsolation,\n typeAwareChunkStrategy: n.typeAwareChunkStrategy,\n skipTypeCheck: a.skipTypeCheck,\n parserOptions: c?.parserOptions,\n onProgress: d,\n onFileProgress: f\n });\n return m.ok ? (s.debug(`Execution: ${(performance.now() - g).toFixed(2)}ms`), m.data) : (s.error(Error(`Analysis failed: ${m.error.message}`)), null);\n}\nexport async function saveToCacheStep(e, r, o, n) {\n if (!r) return;\n let t = performance.now(), i = [];\n for (let r of e)r.taskId && i.push([\n r.taskId,\n r\n ]);\n i.length > 0 && (await r.results.setMany(i), o.debug && n.debug(`Saved ${i.length} results to cache (${(performance.now() - t).toFixed(2)}ms)`));\n}\n","import t from 'node:path';\nimport e from 'picocolors';\nimport { formatDuration as n, pluralise as r } from '@ngcompass/common';\nlet ZERO_ACC = {\n taskCount: 0,\n issueCount: 0,\n errorCount: 0,\n warningCount: 0,\n duration: 0\n};\nfunction buildExpectedMap(t, e) {\n let n = new Map();\n for (let r of t.tasks){\n let t = r.filePath;\n 'string' == typeof t && 0 !== t.length && (r.needsTypeChecker || r.needsProjectContext) === e && n.set(t, (n.get(t) ?? 0) + 1);\n }\n return n;\n}\nfunction mergeAcc(t, e) {\n let n = t ?? ZERO_ACC;\n return {\n taskCount: n.taskCount + e.taskCount,\n issueCount: n.issueCount + e.issueCount,\n errorCount: n.errorCount + e.errorCount,\n warningCount: n.warningCount + e.warningCount,\n duration: n.duration + e.duration\n };\n}\nexport function createFileProgressLogger(o, u, s) {\n let i = buildExpectedMap(o, !1), a = buildExpectedMap(o, !0), C = new Map(), g = new Map(), d = new Set(), l = new Set(), c = (o, i, a)=>{\n if (l.has(o)) return;\n let C = a ? l : d;\n C.has(o) || (C.add(o), u(function(t, o) {\n let u = o.issueCount > 0, s = u ? e.red('❯') : e.green('❯'), i = u ? e.red(n(o.duration)) : e.green(n(o.duration));\n if (u) {\n let n = `${o.issueCount.toLocaleString()} ${r(o.issueCount, 'issue')}`;\n return `${s} ${e.red(t)} ${i} ${e.red(n)}`;\n }\n return `${s} ${e.dim(t)} ${i}`;\n }(t.relative(s, o) || o, i)));\n };\n return (t)=>{\n let e = t.filePath;\n if (l.has(e)) return;\n if (!1 === t.typeAware) {\n let n = mergeAcc(C.get(e), t);\n C.set(e, n);\n let r = i.get(e) ?? n.taskCount;\n if (n.taskCount < r) return;\n c(e, n, !a.has(e));\n return;\n }\n if (!0 === t.typeAware) {\n var n;\n let r = mergeAcc(g.get(e), t);\n g.set(e, r);\n let o = a.get(e) ?? r.taskCount;\n if (r.taskCount < o) return;\n c(e, (n = C.get(e), n ? {\n taskCount: n.taskCount + r.taskCount,\n issueCount: n.issueCount + r.issueCount,\n errorCount: n.errorCount + r.errorCount,\n warningCount: n.warningCount + r.warningCount,\n duration: n.duration + r.duration\n } : r), !0);\n return;\n }\n let r = (i.get(e) ?? 0) + (a.get(e) ?? 0), o = mergeAcc(C.get(e), t);\n C.set(e, o), o.taskCount < (r || o.taskCount) || c(e, o, !0);\n };\n}\n","import t from 'node:process';\nimport { createRuntimeCache as e } from '@ngcompass/cache';\nimport { getReporter as o } from '@ngcompass/reporters';\nimport { Spinner as r } from '../../spinner.js';\nimport { exitWithError as s } from '../exit.js';\nimport { resolvePerformanceOptions as a } from './options.js';\nimport { formatAnalysisProgressMessage as n, getAnalyzeMode as i, normalizeReporterFormat as p, resolveReporterFormat as m, shouldFailAnalysis as l, toError as c } from './resolve.js';\nimport { buildPlanStep as u, discoverFilesStep as f, loadConfigurationStep as d, resolveRulesStep as h, runAnalysisStep as k, saveToCacheStep as g } from './steps.js';\nimport { createFileProgressLogger as y } from './progress.js';\nexport function registerAnalyzeCommand(w, j) {\n w.command('analyze').description('Analyze your project and report rule violations and architecture risks').option('-p, --profile <name>', 'Configuration profile to run').option('--force', 'Ignore cached results and re-run all checks').option('--format <fmt>', 'Reporter format: console | json | sarif | html | ui').option('--compact', 'Use compact, ESLint-style output').option('-q, --quiet', 'Show summary counts only, suppress violation details').option('--no-recommendation', 'Suppress fix recommendations from output').option('--output <path>', 'Output path for UI reports (default: ngcompass-report.html)').option('--rule <id>', 'Run only one rule (useful for debugging or focused checks)').option('--mode <mode>', 'Performance mode: eco | balanced | turbo (default: balanced)', 'balanced').option('--max-workers <n>', 'Cap the number of worker threads (lower = less memory, e.g. --max-workers 2)').option('--skip-type-check', 'Skip rules that require the TypeScript type checker (fastest, lowest memory)').action(async (w)=>{\n let x = performance.now(), S = o(p(w.format), {\n compact: !!w.compact,\n outputPath: w.output,\n quiet: !!w.quiet,\n noRecommendation: !1 === w.recommendation\n }), q = j, v = 0;\n try {\n let s = await d(w, j, S);\n if (!s) {\n v = 1;\n return;\n }\n let { config: p } = s, c = a(w, p);\n q = e(p, t.cwd());\n let b = m(w.format, p.outputFormat);\n S = o(b, {\n compact: !!w.compact,\n outputPath: w.output ?? p.outputPath,\n quiet: !!w.quiet,\n noRecommendation: !1 === w.recommendation\n });\n let P = await f(p, w, q, S);\n if (!P) {\n v = 1;\n return;\n }\n let T = await h(p, w, S);\n if (!T) {\n v = 1;\n return;\n }\n let W = await u(P, T, q, w, S, p, c.maxWorkers);\n if (!W) {\n v = 1;\n return;\n }\n let E = 'console' === b ? t.stdout : t.stderr, F = new r(E), z = W.tasks.length + (W.skippedTasks?.length ?? 0), A = i(w);\n F.start(n(A, 0, z));\n let R = y(W, (t)=>F.writeLine(t), t.cwd()), C = await k(W, q, c, w, S, P, p, (t, e)=>{\n F.update(n(A, t, e));\n }, R);\n if (F.stop(), !C) {\n v = 1;\n return;\n }\n let O = performance.now() - x, I = {\n scannedFiles: new Set([\n ...W.tasks.map((t)=>t.filePath),\n ...(W.skippedTasks ?? []).map((t)=>t.filePath)\n ]).size,\n discoveredFiles: P.length,\n totalFiles: C.stats.totalFiles,\n totalTasks: W.tasks.length + (W.skippedTasks?.length ?? 0),\n cachedTasks: W.precomputedAnalysis ? W.tasks.length : void 0,\n totalErrors: C.stats.totalErrors,\n totalWarnings: C.stats.totalWarnings,\n failOnSeverity: p.failOnSeverity,\n maxWarnings: p.maxWarnings,\n duration: O\n };\n 'console' === b && S.summary(I), S.parseErrors(C.parseErrors), S.report(C.results), 'console' !== b && (S.step('❯ Writing report...'), S.summary(I)), W.precomputedAnalysis || await g(C.results, q, w, S), l(p, C.stats) && (v = 1);\n } catch (t) {\n S.error(c(t)), v = 1;\n } finally{\n q && q !== j && await q.flush(), 0 !== v && s(v);\n }\n });\n}\n","import o from 'node:process';\nimport { getConfigReporter as r } from '@ngcompass/reporters';\nimport { validateConfig as i } from '@ngcompass/config';\nimport { exitWithError as t, printError as e } from './exit.js';\nexport function registerConfigCommand(a, n) {\n a.command('config').description('Inspect and validate ngcompass configuration').command('health').description('Run semantic validation checks for the active configuration').option('-p, --profile <name>', 'Configuration profile to validate').action(async (a)=>{\n try {\n let e = await i({\n cwd: o.cwd(),\n cache: a.cache ? n : void 0,\n profile: a.profile\n }), c = r();\n await c.renderHealthReport(e.report), e.report.valid || t();\n } catch (o) {\n e('Error', o), t();\n }\n });\n}\n","import { createRuntimeCache as e } from '@ngcompass/cache';\nimport { getCacheReporter as a } from '@ngcompass/reporters';\nimport { resolveConfig as o } from '@ngcompass/config';\nimport t from 'picocolors';\nimport r from 'node:process';\nimport { exitWithError as i, printError as c } from './exit.js';\nlet CACHE_CLEAR_TYPES = [\n 'ast',\n 'config',\n 'results',\n 'all'\n], CACHE_CLEAR_TYPE_VALUES = new Set(CACHE_CLEAR_TYPES);\nexport function registerCacheCommand(e, o) {\n let n = e.command('cache').description('Inspect and manage analysis cache data');\n n.command('clear').description('Clear cached data for one cache type or all cache types').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').option('--type <type>', 'Cache type to clear: ast | config | results | all', 'all').action(async (e)=>{\n var n;\n let l, s = (l = n = e.type, CACHE_CLEAR_TYPE_VALUES.has(l)) ? n : (c(`Invalid cache type: ${n}. Must be one of: ${CACHE_CLEAR_TYPES.join(', ')}`), i()), p = a();\n r.stdout.write(t.dim(' › Clearing cache...\\n'));\n try {\n let a = await resolveRuntimeCache(o, {\n profile: e.profile,\n allowDisabled: !0\n });\n 'all' === s ? await a.clear() : await a.clearType(s), p.renderClearResult(s);\n } catch (e) {\n c('Error clearing cache', e), i();\n }\n }), n.command('info').description('Show cache status, size, and usage details').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').action(async (e)=>{\n let t = a();\n try {\n let a = await resolveRuntimeCache(o, {\n profile: e.profile,\n allowDisabled: !0\n }), r = await a.getInfo();\n t.renderCacheInfo(r);\n } catch (e) {\n c('Error getting cache info', e), i();\n }\n }), n.command('path').description('Print the resolved cache directory path').option('-p, --profile <name>', 'Configuration profile used to resolve cache settings').action(async (e)=>{\n let a = await resolveRuntimeCache(o, {\n profile: e.profile,\n allowDisabled: !0\n });\n r.stdout.write(`${a.getCachePath()}\\n`);\n });\n}\nasync function resolveRuntimeCache(a, t = {}) {\n let i = t.cwd ?? r.cwd();\n try {\n let r = await o({\n profile: t.profile,\n cache: a,\n cwd: i\n });\n if (!r.report.valid || !r.config) return a;\n return e(r.config, i, {\n allowDisabled: t.allowDisabled\n }) ?? a;\n } catch (e) {\n return c('Unable to resolve cache configuration; using default cache', e), a;\n }\n}\n","import { getRulesReporter as e } from '@ngcompass/reporters';\nimport { getRuleListEntries as r, isBuiltinPreset as t } from '@ngcompass/rules';\nimport s from 'picocolors';\nimport { exitWithError as o, printError as i } from './exit.js';\nexport function registerRulesCommand(n) {\n n.command('rules [ruleName]').description('Browse available rules or inspect details for a specific rule').option('--preset <name>', 'Filter by preset: recommended, strict, performance, reactivity, or all').action((n, l)=>{\n l.preset && !t(l.preset) && (i(`Unknown preset: \"${l.preset}\".`), process.stderr.write(s.dim('Available presets: recommended, strict, all, performance, reactivity\\n')), o());\n let p = r(), m = e({\n preset: l.preset\n });\n if (n) {\n let e = p.find((e)=>e.name === n);\n if (!e) {\n i(`Rule \"${n}\" not found.`), process.stderr.write(s.dim('Run `ngcompass rules` to list available rules.\\n')), o();\n return;\n }\n m.renderSingleRule(e);\n } else m.render(p);\n });\n}\n","import { registerInitCommand as o } from './init.js';\nimport { registerAnalyzeCommand as r } from './analyze/index.js';\nimport { registerConfigCommand as m } from './config.js';\nimport { registerCacheCommand as i } from './cache.js';\nimport { registerRulesCommand as t } from './rules.js';\nexport function registerCommands(s, e) {\n o(s, e), r(s, e), m(s, e), i(s, e), t(s);\n}\n","import { Command as e } from 'commander';\nimport { registerCommands as s } from '../commands/index.js';\nimport { enableDebug as o, PACKAGE_VERSION as n } from '@ngcompass/common';\nimport { createCacheContext as a } from '@ngcompass/cache';\nimport { registerAllBuiltinRules as r } from '@ngcompass/rules';\nimport { restoreCursor as t, printError as c } from '../commands/exit.js';\nlet shutdownInProgress = !1, gracefulShutdown = async (e, s)=>{\n if (!shutdownInProgress) {\n if (shutdownInProgress = !0, t(), e) try {\n let s = new Promise((e)=>setTimeout(e, 10_000).unref());\n await Promise.race([\n e.flush(),\n s\n ]);\n } catch (e) {\n c('[ngcompass] Cache flush failed during shutdown', e);\n }\n process.exit(s);\n }\n}, handleFatalAsyncFailure = (e, s, o)=>{\n c(`[ngcompass] ${s}`, o), gracefulShutdown(e, 1);\n}, printRunBanner = async (e)=>{\n let { default: s } = await import('picocolors'), o = process.cwd();\n process.stdout.write(`\\n${s.dim('>')} ${s.dim(`ngcompass@${n}`)} ${s.dim(e)} ${s.dim(o)}\\n${s.dim('>')} ${s.dim('ngcompass')} ${s.dim('run')}\\n\\n ${s.bgCyan(s.white(s.bold(` ${e.toUpperCase()} `)))} ${s.cyan(n)} ${s.dim(o)}\\n\\n`);\n};\nexport async function run() {\n let t = new e();\n t.name('ngcompass').description('Static analysis and architecture insights for Angular codebases.').version(n, '-V, --version', 'Display ngcompass version').option('--debug', 'Enable detailed debug logs across all modules').addHelpText('after', '\\nExamples:\\n $ ngcompass init\\n $ ngcompass analyze --profile strict\\n $ ngcompass cache info\\n').hook('preAction', async (e, s)=>{\n let n;\n if (e.opts().debug && o('debug', 'all'), 'json' !== (n = s.opts().format) && 'sarif' !== n && 'html' !== n && 'ui' !== n) {\n let e = s.parent, o = e && 'ngcompass' !== e.name() ? e.name() : s.name();\n await printRunBanner(o);\n }\n });\n let i = a();\n process.on('SIGINT', ()=>void gracefulShutdown(i, 130)), process.on('SIGTERM', ()=>void gracefulShutdown(i, 143)), process.on('uncaughtException', (e)=>{\n handleFatalAsyncFailure(i, 'Unexpected error', e);\n }), process.on('unhandledRejection', (e)=>{\n handleFatalAsyncFailure(i, 'Unhandled promise rejection', e);\n });\n try {\n if (r(), s(t, i), !process.argv.slice(2).length) return void t.outputHelp();\n await t.parseAsync(process.argv), await i.flush(), process.exit(0);\n } catch (e) {\n c('[ngcompass] Fatal error', e), await gracefulShutdown(i, 1);\n }\n}\nrun().catch((e)=>{\n c('[ngcompass] Fatal error', e), t(), process.exit(1);\n});\n"]}
{
"name": "ngcompass",
"version": "0.1.6-beta",
"version": "0.1.7-beta",
"description": "Command line interface for ngcompass",

@@ -21,6 +21,12 @@ "sideEffects": false,

"require": "./dist/index.cjs"
}
},
"./schematics/*": "./schematics/*"
},
"schematics": "./schematics/collection.json",
"ng-add": {
"save": "devDependencies"
},
"files": [
"dist",
"schematics",
"README.md"

@@ -31,11 +37,11 @@ ],

"picocolors": "^1.1.1",
"@ngcompass/common": "0.1.6-beta",
"@ngcompass/reporters": "0.1.6-beta",
"@ngcompass/rules": "0.1.6-beta",
"@ngcompass/cache": "0.1.6-beta",
"@ngcompass/config": "0.1.6-beta",
"@ngcompass/engine": "0.1.6-beta",
"@ngcompass/scanner": "0.1.6-beta",
"@ngcompass/planner": "0.1.6-beta",
"@ngcompass/ast": "0.1.6-beta"
"@ngcompass/common": "0.1.7-beta",
"@ngcompass/reporters": "0.1.7-beta",
"@ngcompass/rules": "0.1.7-beta",
"@ngcompass/config": "0.1.7-beta",
"@ngcompass/cache": "0.1.7-beta",
"@ngcompass/engine": "0.1.7-beta",
"@ngcompass/scanner": "0.1.7-beta",
"@ngcompass/planner": "0.1.7-beta",
"@ngcompass/ast": "0.1.7-beta"
},

@@ -52,3 +58,12 @@ "keywords": [

},
"peerDependencies": {
"@angular-devkit/schematics": ">=17.0.0"
},
"peerDependenciesMeta": {
"@angular-devkit/schematics": {
"optional": true
}
},
"devDependencies": {
"@angular-devkit/schematics": "^19.0.0",
"@types/node": "^25.1.0",

@@ -55,0 +70,0 @@ "typescript": "5.9.3"

+61
-62

@@ -20,10 +20,10 @@ <div align="center">

| Area | What ngcompass helps find |
|---|---|
| Architecture | Circular dependencies, boundary violations, and fragile component relationships |
| Performance | Missing `OnPush`, expensive template expressions, missing `trackBy`, and inefficient bindings |
| SSR | Browser-only APIs in universal code, hydration risks, and render lifecycle pitfalls |
| Security | Unsafe template bindings and sanitizer bypasses |
| Reactivity | RxJS subscription issues, Signals misuse, and migration opportunities |
| Code quality | Deprecated patterns, focused tests, and modern Angular API improvements |
| Area | What ngcompass helps find |
| ------------ | --------------------------------------------------------------------------------------------- |
| Architecture | Circular dependencies, boundary violations, and fragile component relationships |
| Performance | Missing `OnPush`, expensive template expressions, missing `trackBy`, and inefficient bindings |
| SSR | Browser-only APIs in universal code, hydration risks, and render lifecycle pitfalls |
| Security | Unsafe template bindings and sanitizer bypasses |
| Reactivity | RxJS subscription issues, Signals misuse, and migration opportunities |
| Code quality | Deprecated patterns, focused tests, and modern Angular API improvements |

@@ -75,10 +75,10 @@ ## Installation

| Command | Output |
|---|---|
| `ngcompass analyze` | Default terminal report |
| `ngcompass analyze --format console --compact` | Compact one-line issue output |
| `ngcompass analyze --format html --output report.html` | Self-contained HTML report |
| `ngcompass analyze --format ui` | Interactive HTML report alias |
| `ngcompass analyze --format json > results.json` | Machine-readable JSON |
| `ngcompass analyze --format sarif > results.sarif` | SARIF for GitHub Code Scanning |
| Command | Output |
| ------------------------------------------------------ | ------------------------------ |
| `ngcompass analyze` | Default terminal report |
| `ngcompass analyze --format console --compact` | Compact one-line issue output |
| `ngcompass analyze --format html --output report.html` | Self-contained HTML report |
| `ngcompass analyze --format ui` | Interactive HTML report alias |
| `ngcompass analyze --format json > results.json` | Machine-readable JSON |
| `ngcompass analyze --format sarif > results.sarif` | SARIF for GitHub Code Scanning |

@@ -124,11 +124,11 @@ ## Configuration

| Preset | Purpose |
|---|---|
| `ngcompass:recommended` | Balanced default for most Angular projects |
| `ngcompass:strict` | Stronger enforcement for mature codebases |
| `ngcompass:performance` | Rendering and change-detection checks |
| `ngcompass:reactivity` | Signals and RxJS correctness |
| `ngcompass:security` | Security-focused Angular checks |
| `ngcompass:ssr` | Server rendering and hydration safety |
| `ngcompass:all` | Every built-in rule at its default severity |
| Preset | Purpose |
| ----------------------- | ------------------------------------------- |
| `ngcompass:recommended` | Balanced default for most Angular projects |
| `ngcompass:strict` | Stronger enforcement for mature codebases |
| `ngcompass:performance` | Rendering and change-detection checks |
| `ngcompass:reactivity` | Signals and RxJS correctness |
| `ngcompass:security` | Security-focused Angular checks |
| `ngcompass:ssr` | Server rendering and hydration safety |
| `ngcompass:all` | Every built-in rule at its default severity |

@@ -149,28 +149,28 @@ Override individual rules in the same config:

| Command | Description |
|---|---|
| `ngcompass init` | Create `ngcompass.config.ts` |
| `ngcompass analyze` | Run analysis |
| `ngcompass rules` | List available rules |
| `ngcompass rules <name>` | Inspect one rule |
| `ngcompass config health` | Validate configuration |
| `ngcompass cache info` | Show cache status |
| `ngcompass cache clear` | Clear cached analysis data |
| `ngcompass cache path` | Print the cache directory |
| Command | Description |
| ------------------------- | ---------------------------- |
| `ngcompass init` | Create `ngcompass.config.ts` |
| `ngcompass analyze` | Run analysis |
| `ngcompass rules` | List available rules |
| `ngcompass rules <name>` | Inspect one rule |
| `ngcompass config health` | Validate configuration |
| `ngcompass cache info` | Show cache status |
| `ngcompass cache clear` | Clear cached analysis data |
| `ngcompass cache path` | Print the cache directory |
### Analyze Options
| Option | Description |
|---|---|
| `--format <fmt>` | `console`, `json`, `sarif`, `html`, or `ui` |
| `--output <path>` | Output path for HTML/UI reports |
| `--compact` | Use compact issue output |
| `-q, --quiet` | Show summary counts only |
| `--no-recommendation` | Hide fix recommendations |
| `--rule <id>` | Run one rule in isolation |
| `--force` | Ignore cached results |
| `-p, --profile <name>` | Run a named config profile |
| `--mode <mode>` | Performance mode: `eco`, `balanced`, or `turbo` |
| `--max-workers <n>` | Limit worker threads |
| `--skip-type-check` | Skip rules that require TypeScript type checking |
| Option | Description |
| ---------------------- | ------------------------------------------------ |
| `--format <fmt>` | `console`, `json`, `sarif`, `html`, or `ui` |
| `--output <path>` | Output path for HTML/UI reports |
| `--compact` | Use compact issue output |
| `-q, --quiet` | Show summary counts only |
| `--no-recommendation` | Hide fix recommendations |
| `--rule <id>` | Run one rule in isolation |
| `--force` | Ignore cached results |
| `-p, --profile <name>` | Run a named config profile |
| `--mode <mode>` | Performance mode: `eco`, `balanced`, or `turbo` |
| `--max-workers <n>` | Limit worker threads |
| `--skip-type-check` | Skip rules that require TypeScript type checking |

@@ -203,15 +203,15 @@ ## CI

| Package | Responsibility |
|---|---|
| [`ngcompass`](packages/cli) | CLI entry point |
| [`@ngcompass/config`](packages/config) | Config loading, validation, profiles, and health checks |
| [`@ngcompass/scanner`](packages/scanner) | File discovery and filtering |
| [`@ngcompass/rules`](packages/rules) | Built-in rules, presets, and rule registry |
| [`@ngcompass/planner`](packages/planner) | Incremental execution planning |
| [`@ngcompass/engine`](packages/engine) | Rule execution and analysis orchestration |
| [`@ngcompass/ast`](packages/ast) | TypeScript, template, and style parsing helpers |
| [`@ngcompass/cache`](packages/cache) | Memory and disk cache services |
| [`@ngcompass/reporters`](packages/reporters) | Console, JSON, SARIF, and HTML reporters |
| [`@ngcompass/common`](packages/common) | Shared types and utilities |
| [`@ngcompass/site`](packages/site) | Documentation site |
| Package | Responsibility |
| -------------------------------------------- | ------------------------------------------------------- |
| [`ngcompass`](packages/cli) | CLI entry point |
| [`@ngcompass/config`](packages/config) | Config loading, validation, profiles, and health checks |
| [`@ngcompass/scanner`](packages/scanner) | File discovery and filtering |
| [`@ngcompass/rules`](packages/rules) | Built-in rules, presets, and rule registry |
| [`@ngcompass/planner`](packages/planner) | Incremental execution planning |
| [`@ngcompass/engine`](packages/engine) | Rule execution and analysis orchestration |
| [`@ngcompass/ast`](packages/ast) | TypeScript, template, and style parsing helpers |
| [`@ngcompass/cache`](packages/cache) | Memory and disk cache services |
| [`@ngcompass/reporters`](packages/reporters) | Console, JSON, SARIF, and HTML reporters |
| [`@ngcompass/common`](packages/common) | Shared types and utilities |
| [`@ngcompass/site`](packages/site) | Documentation site |

@@ -246,2 +246,1 @@ ## Development

- Validate ngcompass against your project before making it a required CI gate.