@ngcompass/config 0.1.2-beta → 0.1.3-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- 'use strict';var zod=require('zod'),Ae=require('os'),lilconfig=require('lilconfig'),jiti=require('jiti'),D=require('fs'),be=require('crypto'),C=require('path'),url=require('url'),common=require('@ngcompass/common'),defu=require('defu'),Ue=require('process'),module$1=require('module'),minimatch=require('minimatch'),ot=require('fs/promises');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var Ae__default=/*#__PURE__*/_interopDefault(Ae);var D__namespace=/*#__PURE__*/_interopNamespace(D);var be__default=/*#__PURE__*/_interopDefault(be);var C__namespace=/*#__PURE__*/_interopNamespace(C);var Ue__default=/*#__PURE__*/_interopDefault(Ue);var ot__default=/*#__PURE__*/_interopDefault(ot);var z=()=>Math.max(1,Ae__default.default.cpus().length-1),P={enabled:true,location:"node_modules/.cache/ngcompass",strategy:"local",ttl:864e5},S={outputFormat:"text",failOnSeverity:"error",maxWarnings:10,include:["src/**/*.ts"],exclude:["node_modules/**","dist/**","**/*.spec.ts","**/*.test.ts"]};var M=zod.z.enum(["warn","error"]),Se=zod.z.enum(["json","text","sarif","html"]),K=zod.z.union([M,zod.z.literal("off"),zod.z.object({severity:zod.z.union([M,zod.z.literal("off")]),options:zod.z.record(zod.z.string(),zod.z.unknown()).optional()})]),Ce=zod.z.object({enabled:zod.z.boolean().optional(),location:zod.z.string().optional(),strategy:zod.z.enum(["memory","local"]).optional(),ttl:zod.z.number().optional()}),Oe=zod.z.object({project:zod.z.string().optional(),tsconfigRootDir:zod.z.string().optional(),sourceType:zod.z.enum(["module","commonjs"]).optional(),ecmaVersion:zod.z.number().optional()}),J=zod.z.object({extends:zod.z.union([zod.z.string(),zod.z.array(zod.z.string())]).optional(),include:zod.z.array(zod.z.string()).default([...S.include]),exclude:zod.z.array(zod.z.string()).default([...S.exclude]),maxWorkers:zod.z.number().optional(),concurrency:zod.z.number().optional(),cache:zod.z.union([zod.z.boolean(),Ce]).optional(),cacheLocation:zod.z.string().optional(),outputFormat:Se.default(S.outputFormat),outputPath:zod.z.string().optional(),failOnSeverity:M.default(S.failOnSeverity),maxWarnings:zod.z.number().default(S.maxWarnings),ignorePatterns:zod.z.array(zod.z.string()).optional(),rules:zod.z.record(zod.z.string(),K).optional(),overrides:zod.z.array(zod.z.object({files:zod.z.union([zod.z.string(),zod.z.array(zod.z.string())]),rules:zod.z.record(zod.z.string(),K).optional()})).optional(),parserOptions:Oe.optional()}),Ne=zod.z.lazy(()=>J.partial()),Z=J.extend({profiles:zod.z.record(zod.z.string(),Ne).optional()}).transform(e=>{let t,r=e.maxWorkers??e.concurrency??z();if(e.cache===false)t={...P,enabled:false};else if(e.cache===true||e.cache===void 0){let s=e.cacheLocation??P.location;t={...P,location:s};}else t={...P,...e.cache};return {...e,maxWorkers:r,cache:t,rules:e.rules??{},overrides:e.overrides??[],ignorePatterns:e.ignorePatterns??[]}});var T="ngcompass",$e=[`${T}.config.ts`,`${T}.config.js`,`${T}.config.mjs`,`${T}.config.cjs`,`${T}.config.json`,`.${T}rc`,`.${T}rc.json`,"package.json"],w=e=>{let t=url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)));return jiti.createJiti(e,{alias:{"@ngcompass/config":C__namespace.default.basename(t).startsWith("index.")?t:url.fileURLToPath(new URL("../index.ts",(typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))))}}).import(e).then(r=>r&&typeof r=="object"&&"default"in r?r.default??r:r)},te=(e,t)=>JSON.parse(t.replace(/^\uFEFF/,"")),U=async(e=process.cwd())=>{common.time("config-discovery"),common.debug("discovery",`Searching for config in: ${e}`);let t=lilconfig.lilconfig(T,{searchPlaces:$e,loaders:{".ts":w,".js":w,".mjs":w,".cjs":w,".json":te,noExt:te}}),r=await t.search(e);if(!r)return common.debug("discovery","No config file found"),common.timeEnd("config-discovery"),null;common.debug("discovery",`Found config: ${r.filepath}`);let s="",i="";common.time("content-hash");try{s=D__namespace.default.readFileSync(r.filepath,"utf-8"),i=be__default.default.createHash("sha1").update(s).digest("hex");let n=common.timeEnd("content-hash");common.debug("discovery",`Content hash: ${i.substring(0,8)}... (${n.toFixed(1)}ms)`);}catch{}let o=common.timeEnd("config-discovery");return common.debug("discovery",`Discovery complete: ${o.toFixed(1)}ms`),{config:r.config,filepath:r.filepath,content:s,contentHash:i,isEmpty:r.isEmpty}};function k(e){return {cwd:Ue__default.default.cwd(),fs:{existsSync:D__namespace.existsSync,accessSync:(t,r)=>D__namespace.accessSync(t,r)},os:{cpus:Ae.cpus},path:{dirname:C__namespace.dirname,resolve:C__namespace.resolve,isAbsolute:C__namespace.isAbsolute},...e}}var u={NEGATIVE_MAX_WARNINGS:e=>({code:"negative-max-warnings",message:`Value for 'maxWarnings' must be non-negative. Received: ${e}.`,suggestion:"Set 'maxWarnings' to 0 or higher, or remove it to use default (10).",severity:"error"}),WORKERS_BELOW_MINIMUM:()=>({code:"workers-below-minimum",message:"Value for 'maxWorkers' must be at least 1.",suggestion:"Set to 1 or higher, or remove to use default (CPU count - 1).",severity:"error"}),NEGATIVE_CACHE_TTL:e=>({code:"negative-cache-ttl",message:`Cache TTL must be non-negative. Received: ${e}ms.`,suggestion:"Set to 0 (default TTL) or higher. Example: 86400000 for 24 hours.",severity:"error"}),WORKERS_EXCESSIVE:(e,t)=>({code:"warn-workers-excessive",message:`Worker count (${e}) exceeds CPU count (${t}). May cause context switching overhead.`,suggestion:`Reduce to ${t} or lower for optimal performance.`,severity:"warning"}),CACHE_TTL_ZERO:()=>({code:"warn-cache-ttl-zero",message:"Cache TTL is set to 0. Using driver default TTL (typically 24 hours).",suggestion:"Set explicit TTL if you need different cache expiration behavior.",severity:"warning"}),INVALID_GLOB_PATTERN:(e,t)=>({code:"invalid-glob-pattern",message:`Glob pattern "${e}" is invalid. Error: ${t}.`,suggestion:"Check pattern syntax. Valid examples: 'src/**/*.ts', '**/*.{ts,html}'.",severity:"error"}),EMPTY_INCLUDE:()=>({code:"empty-include",message:"No include patterns defined. Analysis will skip all files.",suggestion:"Add patterns like ['src/**/*.ts', 'src/**/*.html'] to enable analysis.",severity:"error"}),EMPTY_EXCLUDE:()=>({code:"warn-empty-exclude",message:"No exclude patterns defined. Performance may degrade.",suggestion:"Add common exclusions: ['node_modules/**', 'dist/**', '**/*.spec.ts'].",severity:"warning"}),DUPLICATE_PATTERNS:(e,t)=>({code:"warn-duplicate-patterns",message:`Duplicate patterns found in "${e}": ${t.map(r=>`"${r}"`).join(", ")}.`,suggestion:"Remove duplicate entries to simplify configuration.",severity:"warning"}),EMPTY_GLOB_PATTERN:e=>({code:"empty-glob-pattern",message:`Empty string detected in "${e}" patterns.`,suggestion:"Remove empty strings from the pattern array.",severity:"error"}),TSCONFIG_ROOT_NOT_FOUND:e=>({code:"tsconfig-root-not-found",message:`TSConfig root directory not found: "${e}".`,suggestion:"Verify the directory exists and the path is correct relative to the config file.",severity:"error"}),TSCONFIG_PROJECT_NOT_FOUND:e=>({code:"tsconfig-project-not-found",message:`TSConfig file not found: "${e}".`,suggestion:"Verify the file exists and the path is relative to 'tsconfigRootDir' or config location.",severity:"error"}),OUTPUT_PATH_TRAVERSAL:e=>({code:"output-path-traversal",message:`Output path contains unsafe traversal (..): "${e}".`,suggestion:"Use absolute paths or paths without '..' to prevent security issues.",severity:"error"}),OUTPUT_PATH_SYSTEM_DIR:e=>({code:"output-path-system-dir",message:`Output path points to a system directory: "${e}".`,suggestion:"Choose a safe output location within your project directory.",severity:"error"}),OUTPUT_PATH_NOT_FOUND:e=>({code:"output-path-not-found",message:`Output directory does not exist: "${e}".`,suggestion:"Create the directory or update 'outputPath' to an existing location.",severity:"error"}),OUTPUT_PATH_NOT_WRITABLE:e=>({code:"output-path-not-writable",message:`Output directory is not writable: "${e}".`,suggestion:"Check directory permissions or choose a different output location.",severity:"error"}),CACHE_IN_NODE_MODULES:e=>({code:"cache-in-node-modules",message:`Cache location inside 'node_modules' is unsafe: "${e}". node_modules can be deleted, causing cache loss.`,suggestion:"Use a different directory like '.cache' or 'node_modules/.cache/ngcompass'.",severity:"error"}),CACHE_PARENT_NOT_FOUND:e=>({code:"warn-cache-parent-not-found",message:`Cache parent directory missing: "${e}". It will be created automatically.`,suggestion:"No action needed. Directory will be created on first cache write.",severity:"warning"}),INVALID_RULE_SEVERITY:(e,t)=>({code:"invalid-rule-severity",message:`Rule "${e}" has invalid severity: "${t}".`,suggestion:"Use valid severities: 'off', 'info', 'low', 'moderate', 'high', or 'critical'.",severity:"error"}),NO_RULES_CONFIGURED:()=>({code:"warn-no-rules-configured",message:"No rules configured. Analysis effectively skips checks.",suggestion:"Add rules to enable analysis, or extend from a preset like 'recommended'.",severity:"warning"}),EMPTY_RULE_NAME:()=>({code:"empty-rule-name",message:"Empty rule name detected. Rule keys must be non-empty strings.",suggestion:"Remove empty keys from 'rules' configuration.",severity:"error"}),PROFILE_CIRCULAR_INHERITANCE:e=>({code:"profile-circular-inheritance",message:`Circular profile inheritance detected: ${e.join(" \u2192 ")}.`,suggestion:"Break the circular dependency by removing one 'extends' reference.",severity:"error"}),PROFILE_EMPTY:()=>({code:"warn-profile-empty",message:"Profiles section is defined but empty. Consider removing it.",suggestion:"Remove 'profiles: {}' or add at least one profile like 'dev' or 'ci'.",severity:"warning"}),EXTENDS_NOT_FOUND:e=>({code:"extends-not-found",message:`Cannot resolve preset "${e}". Make sure the package is installed.`,suggestion:`Run: npm install --save-dev ${e}`,severity:"error"}),DEPRECATED_CACHE_LOCATION:()=>({code:"warn-deprecated-cache-location",message:"'cacheLocation' is deprecated. Use 'cache.location' instead.",suggestion:`Replace 'cacheLocation: "..."' with 'cache: { location: "..." }'.`,severity:"warning"}),DEPRECATED_CONCURRENCY:()=>({code:"warn-deprecated-concurrency",message:"'concurrency' is deprecated. Use 'maxWorkers' instead.",suggestion:"Replace 'concurrency: N' with 'maxWorkers: N'.",severity:"warning"})};function W(e,t,r=[]){let s=[];if(e.maxWorkers!==void 0){let i=2*t.os.cpus().length;e.maxWorkers<1?s.push({...u.WORKERS_BELOW_MINIMUM(),path:[...r,"maxWorkers"]}):e.maxWorkers>i&&s.push({...u.WORKERS_EXCESSIVE(e.maxWorkers,i),path:[...r,"maxWorkers"]});}if(e.cache&&typeof e.cache=="object"&&e.cache.ttl!==void 0){let{ttl:i}=e.cache,o=[...r,"cache","ttl"];i<0&&s.push({...u.NEGATIVE_CACHE_TTL(i),path:o});}return {issues:s}}function re(e,t,r=[]){let s=[];if(e.maxWarnings!==void 0){let{maxWarnings:o}=e;o<0&&s.push({...u.NEGATIVE_MAX_WARNINGS(o),path:[...r,"maxWarnings"]});}let{issues:i}=W(e,t,r);return s.push(...i),{issues:s}}function se(e,t=[],r=Ue__default.default.cwd()){let s=[];if(!e.extends)return {issues:s};let i=Array.isArray(e.extends)?e.extends:[e.extends],o=Array.isArray(e.extends);for(let n=0;n<i.length;n++){let c=i[n];if(!(typeof c!="string"||c.trim()===""||(function(l){let d=l.startsWith("."),y=C__namespace.default.isAbsolute(l),E=l.includes(":");return d||y||E})(c))&&(function(l,d){try{let y=C__namespace.default.join(d,"__resolve_anchor__.cjs");return module$1.createRequire(y).resolve(l)}catch{return null}})(c,r)===null){let l=[...t,"extends"];o&&l.push(n),s.push({...u.EXTENDS_NOT_FOUND(c),path:l});}}return {issues:s}}var je=/\/\/\//,Me=/\{/g,Ve=/\}/g;function ne(e,t=[]){let r=[];for(let s of ["include","exclude","ignorePatterns"]){let i=e[s];if(!Array.isArray(i))continue;i.forEach((n,c)=>{r.push(...(function(l,d,y,E){let f=[],p=[...E,l,y];if(!d||d.trim()==="")return f.push({...u.EMPTY_GLOB_PATTERN(l),path:p}),f;if(d.includes("[")&&!d.includes("]"))return f.push({...u.INVALID_GLOB_PATTERN(d,"unclosed bracket"),path:p}),f;if(je.test(d)||d.startsWith("///"))return f.push({...u.INVALID_GLOB_PATTERN(d,"invalid path pattern with multiple slashes"),path:p}),f;(d.endsWith("\\")||d.endsWith("/"))&&f.push({...u.INVALID_GLOB_PATTERN(d,"trailing slash not allowed"),path:p}),(d.match(Me)||[]).length!==(d.match(Ve)||[]).length&&f.push({...u.INVALID_GLOB_PATTERN(d,"unmatched braces"),path:p});try{minimatch.minimatch("sample.ts",d);}catch(g){f.push({...u.INVALID_GLOB_PATTERN(d,g.message),path:p});}return f})(s,n,c,t));});let o=i.filter((n,c)=>i.indexOf(n)!==c);o.length>0&&r.push({...u.DUPLICATE_PATTERNS(s,[...new Set(o)]),path:[...t,s]});}return e.include&&e.include.length!==0||r.push({...u.EMPTY_INCLUDE(),path:[...t,"include"]}),e.exclude&&e.exclude.length!==0||r.push({...u.EMPTY_EXCLUDE(),path:[...t,"exclude"]}),{issues:r}}var We=["/etc/","\\etc\\","/var/","\\var\\"],ie="node_modules";function ce(e,t,r=[]){let s=[],i=o=>t.path.isAbsolute(o)?o:t.path.resolve(t.cwd??process.cwd(),o);if(e.outputPath){let{outputPath:o}=e,n=[...r,"outputPath"];o.includes("..")&&s.push({...u.OUTPUT_PATH_TRAVERSAL(o),path:n}),We.some(l=>o.includes(l))&&s.push({...u.OUTPUT_PATH_SYSTEM_DIR(o),path:n});let c=t.path.dirname(i(o));if(t.fs.existsSync(c))try{t.fs.accessSync(c,D__namespace.constants.W_OK);}catch{s.push({...u.OUTPUT_PATH_NOT_WRITABLE(c),path:n});}else s.push({...u.OUTPUT_PATH_NOT_FOUND(c),path:n});}if(e.cache&&typeof e.cache=="object"&&e.cache.enabled){let{location:o}=e.cache;if(o){let n=[...r,"cache","location"],c=o.includes(ie),l=o.includes(`${ie}/.cache`);c&&!l&&s.push({...u.CACHE_IN_NODE_MODULES(o),path:n});let d=t.path.dirname(i(o));t.fs.existsSync(d)||s.push({...u.CACHE_PARENT_NOT_FOUND(d),path:n});}}if(e.parserOptions){let{project:o,tsconfigRootDir:n}=e.parserOptions,c=o?i(o):void 0,l=n?i(n):void 0;c&&!t.fs.existsSync(c)&&s.push({...u.TSCONFIG_PROJECT_NOT_FOUND(o),path:[...r,"parserOptions","project"]}),l&&!t.fs.existsSync(l)&&s.push({...u.TSCONFIG_ROOT_NOT_FOUND(n),path:[...r,"parserOptions","tsconfigRootDir"]});}return {issues:s}}var Ge={info:0,low:1,warning:2,warn:2,moderate:2,high:3,error:4,critical:4},He=Object.keys(Ge),le=[...He,"off"];function ue(e,t=[]){let r=[],s=(Array.isArray(e.extends)||!!e.extends)&&e.extends.length>0,i=Object.entries(e.rules||{});for(let[o,n]of(i.length>0||s||r.push({...u.NO_RULES_CONFIGURED(),path:[...t,"rules"]}),i)){if(!o||o.trim()===""){r.push({...u.EMPTY_RULE_NAME(),path:[...t,"rules"]});continue}if(typeof n=="object"&&n!==null){let{severity:c}=n;c&&!le.includes(c)&&r.push({...u.INVALID_RULE_SEVERITY(o,c),path:[...t,"rules",o,"severity"]});}}return {issues:r}}function de(e,t=[]){let r=[];return e&&typeof e=="object"&&("cacheLocation"in e&&e.cacheLocation!==void 0&&r.push({...u.DEPRECATED_CACHE_LOCATION(),path:[...t,"cacheLocation"]}),"concurrency"in e&&e.concurrency!==void 0&&r.push({...u.DEPRECATED_CONCURRENCY(),path:[...t,"concurrency"]})),{issues:r}}function fe(e,t){let r=common.ASTUtils.parse(e,t);return common.ASTUtils.generateLocationMap(r)}async function qe(e,t,r,s){if(!r)return fe(e,t);let i=`v${common.CACHE_VERSION}:${s}`,o=await r.get(i);if(o)return o.ast;let n=fe(e,t);return await r.set(i,{filePath:t,ast:n}),n}async function me(e,t,r,s,i){if(e.length===0)return;let o=i??be__default.default.createHash("sha1").update(t).digest("hex"),n=await qe(t,r,s,o);for(let c of e){if(c.file||(c.file=r),!((!c.line||c.line===1)&&c.path))continue;let l=n[c.path.join(".")];l&&(c.line=l.line,c.column=l.column);}}var ze=new Set(["recommended","strict","performance","reactivity","all"]);async function Ke(e,t,r,s,i){if(r)return void await me(e,r,t,s,i);for(let o of e)o.file||(o.file=t);}function ge(e,t){let r,s=[...(r=new Set,e.filter(o=>{let n=`${o.code}:${o.message}:${JSON.stringify(o.path)}`;return !r.has(n)&&(r.add(n),true)}))].sort((o,n)=>o.severity===n.severity?0:o.severity==="error"?-1:1),i=!s.some(o=>o.severity==="error");return {config:i?t:void 0,report:{valid:i,issues:s}}}async function he(e){let t,{config:r,context:s,basePath:i=[],filePath:o,fileContent:n,astCache:c,contentHash:l}=e,{issues:d,validated:y,success:E}=(t=Z.safeParse(r)).success?{issues:[],validated:t.data,success:true}:{issues:t.error.issues.map(p=>({code:p.code.replace(/_/g,"-"),message:p.message,path:[...i,...p.path],severity:"error",file:o})),validated:r,success:false},f=[...d,...(function(p,g,m,h,b){let v=[];for(let O of [{name:"cross-fields",run:()=>re(p,m,h).issues},{name:"glob-patterns",run:()=>ne(p,h).issues},{name:"paths",run:()=>ce(p,m,h).issues},{name:"rules",run:()=>ue(p,h).issues},{name:"extends-chain",run:()=>se(p,h,m.cwd).issues},{name:"deprecated",run:()=>de(g,h).issues}])try{v.push(...O.run());}catch(j){v.push({code:"check-failed",message:`Check "${O.name}" encountered an unexpected error: ${j.message}`,path:h,severity:"error",file:b});}return v})(y,r,s,i,o)];return o&&await Ke(f,o,n,c,l),{issues:f,validated:E?y:void 0}}async function ye(e,t=k(),r,s,i,o){var n;let c={context:t,filePath:r,fileContent:s,astCache:i,contentHash:o},l=e===null||typeof e!="object"?{}:e.profiles??{};if(t.profile){let E=l[t.profile];if(!E){let m,h;return n=t.profile,m=Object.keys(l).join(", "),h=ze.has(n.replace(/^ngcompass:/,""))?` "${n}" is a built-in preset, not a config profile. Use 'extends: "ngcompass:${n.replace(/^ngcompass:/,"")}"' in your config instead.`:"",{config:void 0,report:{valid:false,issues:[{code:"error-profile-not-found",message:`Profile "${n}" not found. Available: [${m}]${h}`,path:["profiles",n],severity:"error",file:r}]}}}let f=defu.defu(E,e),{issues:p,validated:g}=await he({...c,config:f,basePath:["profiles",t.profile]});return ge(p,g)}let{issues:d,validated:y}=await he({...c,config:e});return ge(d,y)}var ve=async e=>{common.time("config-resolution");let{cwd:t=Ue__default.default.cwd(),profile:r,cache:s}=e;common.debug("loader",`Starting config resolution (cwd: ${t}, profile: ${r||"none"})`);let i=await U(t),{hash:o,cachedResult:n}=await tt(i,r,s);if(n){let d=common.timeEnd("config-resolution");return common.debug("loader",`Cache HIT - returning cached result (${d.toFixed(1)}ms)`),n}common.debug("loader","Cache MISS - running validation");let c=await rt(i,r,s);common.debug("loader",`Validation complete: ${c.report.valid?"valid":`invalid (${c.report.issues.length} issues)`}`),s&&o&&(await s.configs.set(o,c),common.debug("loader",`Cached validation result: key=${o.substring(0,8)}...`));let l=common.timeEnd("config-resolution");return common.debug("loader",`Config resolution complete: ${l.toFixed(1)}ms`),c};async function tt(e,t,r){if(!r)return {};let s=[e?.contentHash??"",t??"",common.PACKAGE_VERSION,common.CACHE_VERSION].join("::"),i=r.computeHash(s);common.debug("loader",`Cache lookup: key=${i.substring(0,8)}...`);let o=await r.configs.get(i);return {hash:i,cachedResult:o}}async function rt(e,t,r){return ye(e?.config??{},k({profile:t}),e?.filepath,e?.content,r?.asts,e?.contentHash)}var Te=class extends Error{constructor(t){super(`Configuration file already exists at: ${t}`),this.name="ConfigExistsError";}},nt=`import { defineConfig } from '@ngcompass/config';
1
+ 'use strict';var zod=require('zod'),Ae=require('os'),lilconfig=require('lilconfig'),jiti=require('jiti'),D=require('fs'),be=require('crypto'),C=require('path'),url=require('url'),common=require('@ngcompass/common'),defu=require('defu'),Ue=require('process'),module$1=require('module'),minimatch=require('minimatch'),ot=require('fs/promises');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var Ae__default=/*#__PURE__*/_interopDefault(Ae);var D__namespace=/*#__PURE__*/_interopNamespace(D);var be__default=/*#__PURE__*/_interopDefault(be);var C__namespace=/*#__PURE__*/_interopNamespace(C);var Ue__default=/*#__PURE__*/_interopDefault(Ue);var ot__default=/*#__PURE__*/_interopDefault(ot);var z=()=>Math.max(1,Math.min(4,Ae__default.default.cpus().length-1)),P={enabled:true,location:"node_modules/.cache/ngcompass",strategy:"local",ttl:864e5},S={outputFormat:"text",failOnSeverity:"error",maxWarnings:10,include:["src/**/*.ts"],exclude:["node_modules/**","dist/**","**/*.spec.ts","**/*.test.ts"]};var M=zod.z.enum(["warn","error"]),Se=zod.z.enum(["json","text","sarif","html"]),K=zod.z.union([M,zod.z.literal("off"),zod.z.object({severity:zod.z.union([M,zod.z.literal("off")]),options:zod.z.record(zod.z.string(),zod.z.unknown()).optional()})]),Ce=zod.z.object({enabled:zod.z.boolean().optional(),location:zod.z.string().optional(),strategy:zod.z.enum(["memory","local"]).optional(),ttl:zod.z.number().optional()}),Oe=zod.z.object({project:zod.z.string().optional(),tsconfigRootDir:zod.z.string().optional(),sourceType:zod.z.enum(["module","commonjs"]).optional(),ecmaVersion:zod.z.number().optional()}),J=zod.z.object({extends:zod.z.union([zod.z.string(),zod.z.array(zod.z.string())]).optional(),include:zod.z.array(zod.z.string()).default([...S.include]),exclude:zod.z.array(zod.z.string()).default([...S.exclude]),maxWorkers:zod.z.number().optional(),concurrency:zod.z.number().optional(),cache:zod.z.union([zod.z.boolean(),Ce]).optional(),cacheLocation:zod.z.string().optional(),outputFormat:Se.default(S.outputFormat),outputPath:zod.z.string().optional(),failOnSeverity:M.default(S.failOnSeverity),maxWarnings:zod.z.number().default(S.maxWarnings),ignorePatterns:zod.z.array(zod.z.string()).optional(),rules:zod.z.record(zod.z.string(),K).optional(),overrides:zod.z.array(zod.z.object({files:zod.z.union([zod.z.string(),zod.z.array(zod.z.string())]),rules:zod.z.record(zod.z.string(),K).optional()})).optional(),parserOptions:Oe.optional()}),Ne=zod.z.lazy(()=>J.partial()),Z=J.extend({profiles:zod.z.record(zod.z.string(),Ne).optional()}).transform(e=>{let t,r=e.maxWorkers??e.concurrency??z();if(e.cache===false)t={...P,enabled:false};else if(e.cache===true||e.cache===void 0){let s=e.cacheLocation??P.location;t={...P,location:s};}else t={...P,...e.cache};return {...e,maxWorkers:r,cache:t,rules:e.rules??{},overrides:e.overrides??[],ignorePatterns:e.ignorePatterns??[]}});var T="ngcompass",$e=[`${T}.config.ts`,`${T}.config.js`,`${T}.config.mjs`,`${T}.config.cjs`,`${T}.config.json`,`.${T}rc`,`.${T}rc.json`,"package.json"],w=e=>{let t=url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)));return jiti.createJiti(e,{alias:{"@ngcompass/config":C__namespace.default.basename(t).startsWith("index.")?t:url.fileURLToPath(new URL("../index.ts",(typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))))}}).import(e).then(r=>r&&typeof r=="object"&&"default"in r?r.default??r:r)},te=(e,t)=>JSON.parse(t.replace(/^\uFEFF/,"")),U=async(e=process.cwd())=>{common.time("config-discovery"),common.debug("discovery",`Searching for config in: ${e}`);let t=lilconfig.lilconfig(T,{searchPlaces:$e,loaders:{".ts":w,".js":w,".mjs":w,".cjs":w,".json":te,noExt:te}}),r=await t.search(e);if(!r)return common.debug("discovery","No config file found"),common.timeEnd("config-discovery"),null;common.debug("discovery",`Found config: ${r.filepath}`);let s="",i="";common.time("content-hash");try{s=D__namespace.default.readFileSync(r.filepath,"utf-8"),i=be__default.default.createHash("sha1").update(s).digest("hex");let n=common.timeEnd("content-hash");common.debug("discovery",`Content hash: ${i.substring(0,8)}... (${n.toFixed(1)}ms)`);}catch{}let o=common.timeEnd("config-discovery");return common.debug("discovery",`Discovery complete: ${o.toFixed(1)}ms`),{config:r.config,filepath:r.filepath,content:s,contentHash:i,isEmpty:r.isEmpty}};function k(e){return {cwd:Ue__default.default.cwd(),fs:{existsSync:D__namespace.existsSync,accessSync:(t,r)=>D__namespace.accessSync(t,r)},os:{cpus:Ae.cpus},path:{dirname:C__namespace.dirname,resolve:C__namespace.resolve,isAbsolute:C__namespace.isAbsolute},...e}}var u={NEGATIVE_MAX_WARNINGS:e=>({code:"negative-max-warnings",message:`Value for 'maxWarnings' must be non-negative. Received: ${e}.`,suggestion:"Set 'maxWarnings' to 0 or higher, or remove it to use default (10).",severity:"error"}),WORKERS_BELOW_MINIMUM:()=>({code:"workers-below-minimum",message:"Value for 'maxWorkers' must be at least 1.",suggestion:"Set to 1 or higher, or remove to use default (CPU count - 1).",severity:"error"}),NEGATIVE_CACHE_TTL:e=>({code:"negative-cache-ttl",message:`Cache TTL must be non-negative. Received: ${e}ms.`,suggestion:"Set to 0 (default TTL) or higher. Example: 86400000 for 24 hours.",severity:"error"}),WORKERS_EXCESSIVE:(e,t)=>({code:"warn-workers-excessive",message:`Worker count (${e}) exceeds CPU count (${t}). May cause context switching overhead.`,suggestion:`Reduce to ${t} or lower for optimal performance.`,severity:"warning"}),CACHE_TTL_ZERO:()=>({code:"warn-cache-ttl-zero",message:"Cache TTL is set to 0. Using driver default TTL (typically 24 hours).",suggestion:"Set explicit TTL if you need different cache expiration behavior.",severity:"warning"}),INVALID_GLOB_PATTERN:(e,t)=>({code:"invalid-glob-pattern",message:`Glob pattern "${e}" is invalid. Error: ${t}.`,suggestion:"Check pattern syntax. Valid examples: 'src/**/*.ts', '**/*.{ts,html}'.",severity:"error"}),EMPTY_INCLUDE:()=>({code:"empty-include",message:"No include patterns defined. Analysis will skip all files.",suggestion:"Add patterns like ['src/**/*.ts', 'src/**/*.html'] to enable analysis.",severity:"error"}),EMPTY_EXCLUDE:()=>({code:"warn-empty-exclude",message:"No exclude patterns defined. Performance may degrade.",suggestion:"Add common exclusions: ['node_modules/**', 'dist/**', '**/*.spec.ts'].",severity:"warning"}),DUPLICATE_PATTERNS:(e,t)=>({code:"warn-duplicate-patterns",message:`Duplicate patterns found in "${e}": ${t.map(r=>`"${r}"`).join(", ")}.`,suggestion:"Remove duplicate entries to simplify configuration.",severity:"warning"}),EMPTY_GLOB_PATTERN:e=>({code:"empty-glob-pattern",message:`Empty string detected in "${e}" patterns.`,suggestion:"Remove empty strings from the pattern array.",severity:"error"}),TSCONFIG_ROOT_NOT_FOUND:e=>({code:"tsconfig-root-not-found",message:`TSConfig root directory not found: "${e}".`,suggestion:"Verify the directory exists and the path is correct relative to the config file.",severity:"error"}),TSCONFIG_PROJECT_NOT_FOUND:e=>({code:"tsconfig-project-not-found",message:`TSConfig file not found: "${e}".`,suggestion:"Verify the file exists and the path is relative to 'tsconfigRootDir' or config location.",severity:"error"}),OUTPUT_PATH_TRAVERSAL:e=>({code:"output-path-traversal",message:`Output path contains unsafe traversal (..): "${e}".`,suggestion:"Use absolute paths or paths without '..' to prevent security issues.",severity:"error"}),OUTPUT_PATH_SYSTEM_DIR:e=>({code:"output-path-system-dir",message:`Output path points to a system directory: "${e}".`,suggestion:"Choose a safe output location within your project directory.",severity:"error"}),OUTPUT_PATH_NOT_FOUND:e=>({code:"output-path-not-found",message:`Output directory does not exist: "${e}".`,suggestion:"Create the directory or update 'outputPath' to an existing location.",severity:"error"}),OUTPUT_PATH_NOT_WRITABLE:e=>({code:"output-path-not-writable",message:`Output directory is not writable: "${e}".`,suggestion:"Check directory permissions or choose a different output location.",severity:"error"}),CACHE_IN_NODE_MODULES:e=>({code:"cache-in-node-modules",message:`Cache location inside 'node_modules' is unsafe: "${e}". node_modules can be deleted, causing cache loss.`,suggestion:"Use a different directory like '.cache' or 'node_modules/.cache/ngcompass'.",severity:"error"}),CACHE_PARENT_NOT_FOUND:e=>({code:"warn-cache-parent-not-found",message:`Cache parent directory missing: "${e}". It will be created automatically.`,suggestion:"No action needed. Directory will be created on first cache write.",severity:"warning"}),INVALID_RULE_SEVERITY:(e,t)=>({code:"invalid-rule-severity",message:`Rule "${e}" has invalid severity: "${t}".`,suggestion:"Use valid severities: 'off', 'info', 'low', 'moderate', 'high', or 'critical'.",severity:"error"}),NO_RULES_CONFIGURED:()=>({code:"warn-no-rules-configured",message:"No rules configured. Analysis effectively skips checks.",suggestion:"Add rules to enable analysis, or extend from a preset like 'recommended'.",severity:"warning"}),EMPTY_RULE_NAME:()=>({code:"empty-rule-name",message:"Empty rule name detected. Rule keys must be non-empty strings.",suggestion:"Remove empty keys from 'rules' configuration.",severity:"error"}),PROFILE_CIRCULAR_INHERITANCE:e=>({code:"profile-circular-inheritance",message:`Circular profile inheritance detected: ${e.join(" \u2192 ")}.`,suggestion:"Break the circular dependency by removing one 'extends' reference.",severity:"error"}),PROFILE_EMPTY:()=>({code:"warn-profile-empty",message:"Profiles section is defined but empty. Consider removing it.",suggestion:"Remove 'profiles: {}' or add at least one profile like 'dev' or 'ci'.",severity:"warning"}),EXTENDS_NOT_FOUND:e=>({code:"extends-not-found",message:`Cannot resolve preset "${e}". Make sure the package is installed.`,suggestion:`Run: npm install --save-dev ${e}`,severity:"error"}),DEPRECATED_CACHE_LOCATION:()=>({code:"warn-deprecated-cache-location",message:"'cacheLocation' is deprecated. Use 'cache.location' instead.",suggestion:`Replace 'cacheLocation: "..."' with 'cache: { location: "..." }'.`,severity:"warning"}),DEPRECATED_CONCURRENCY:()=>({code:"warn-deprecated-concurrency",message:"'concurrency' is deprecated. Use 'maxWorkers' instead.",suggestion:"Replace 'concurrency: N' with 'maxWorkers: N'.",severity:"warning"})};function W(e,t,r=[]){let s=[];if(e.maxWorkers!==void 0){let i=2*t.os.cpus().length;e.maxWorkers<1?s.push({...u.WORKERS_BELOW_MINIMUM(),path:[...r,"maxWorkers"]}):e.maxWorkers>i&&s.push({...u.WORKERS_EXCESSIVE(e.maxWorkers,i),path:[...r,"maxWorkers"]});}if(e.cache&&typeof e.cache=="object"&&e.cache.ttl!==void 0){let{ttl:i}=e.cache,o=[...r,"cache","ttl"];i<0&&s.push({...u.NEGATIVE_CACHE_TTL(i),path:o});}return {issues:s}}function re(e,t,r=[]){let s=[];if(e.maxWarnings!==void 0){let{maxWarnings:o}=e;o<0&&s.push({...u.NEGATIVE_MAX_WARNINGS(o),path:[...r,"maxWarnings"]});}let{issues:i}=W(e,t,r);return s.push(...i),{issues:s}}function se(e,t=[],r=Ue__default.default.cwd()){let s=[];if(!e.extends)return {issues:s};let i=Array.isArray(e.extends)?e.extends:[e.extends],o=Array.isArray(e.extends);for(let n=0;n<i.length;n++){let c=i[n];if(!(typeof c!="string"||c.trim()===""||(function(l){let d=l.startsWith("."),y=C__namespace.default.isAbsolute(l),E=l.includes(":");return d||y||E})(c))&&(function(l,d){try{let y=C__namespace.default.join(d,"__resolve_anchor__.cjs");return module$1.createRequire(y).resolve(l)}catch{return null}})(c,r)===null){let l=[...t,"extends"];o&&l.push(n),s.push({...u.EXTENDS_NOT_FOUND(c),path:l});}}return {issues:s}}var je=/\/\/\//,Me=/\{/g,Ve=/\}/g;function ne(e,t=[]){let r=[];for(let s of ["include","exclude","ignorePatterns"]){let i=e[s];if(!Array.isArray(i))continue;i.forEach((n,c)=>{r.push(...(function(l,d,y,E){let f=[],p=[...E,l,y];if(!d||d.trim()==="")return f.push({...u.EMPTY_GLOB_PATTERN(l),path:p}),f;if(d.includes("[")&&!d.includes("]"))return f.push({...u.INVALID_GLOB_PATTERN(d,"unclosed bracket"),path:p}),f;if(je.test(d)||d.startsWith("///"))return f.push({...u.INVALID_GLOB_PATTERN(d,"invalid path pattern with multiple slashes"),path:p}),f;(d.endsWith("\\")||d.endsWith("/"))&&f.push({...u.INVALID_GLOB_PATTERN(d,"trailing slash not allowed"),path:p}),(d.match(Me)||[]).length!==(d.match(Ve)||[]).length&&f.push({...u.INVALID_GLOB_PATTERN(d,"unmatched braces"),path:p});try{minimatch.minimatch("sample.ts",d);}catch(g){f.push({...u.INVALID_GLOB_PATTERN(d,g.message),path:p});}return f})(s,n,c,t));});let o=i.filter((n,c)=>i.indexOf(n)!==c);o.length>0&&r.push({...u.DUPLICATE_PATTERNS(s,[...new Set(o)]),path:[...t,s]});}return e.include&&e.include.length!==0||r.push({...u.EMPTY_INCLUDE(),path:[...t,"include"]}),e.exclude&&e.exclude.length!==0||r.push({...u.EMPTY_EXCLUDE(),path:[...t,"exclude"]}),{issues:r}}var We=["/etc/","\\etc\\","/var/","\\var\\"],ie="node_modules";function ce(e,t,r=[]){let s=[],i=o=>t.path.isAbsolute(o)?o:t.path.resolve(t.cwd??process.cwd(),o);if(e.outputPath){let{outputPath:o}=e,n=[...r,"outputPath"];o.includes("..")&&s.push({...u.OUTPUT_PATH_TRAVERSAL(o),path:n}),We.some(l=>o.includes(l))&&s.push({...u.OUTPUT_PATH_SYSTEM_DIR(o),path:n});let c=t.path.dirname(i(o));if(t.fs.existsSync(c))try{t.fs.accessSync(c,D__namespace.constants.W_OK);}catch{s.push({...u.OUTPUT_PATH_NOT_WRITABLE(c),path:n});}else s.push({...u.OUTPUT_PATH_NOT_FOUND(c),path:n});}if(e.cache&&typeof e.cache=="object"&&e.cache.enabled){let{location:o}=e.cache;if(o){let n=[...r,"cache","location"],c=o.includes(ie),l=o.includes(`${ie}/.cache`);c&&!l&&s.push({...u.CACHE_IN_NODE_MODULES(o),path:n});let d=t.path.dirname(i(o));t.fs.existsSync(d)||s.push({...u.CACHE_PARENT_NOT_FOUND(d),path:n});}}if(e.parserOptions){let{project:o,tsconfigRootDir:n}=e.parserOptions,c=o?i(o):void 0,l=n?i(n):void 0;c&&!t.fs.existsSync(c)&&s.push({...u.TSCONFIG_PROJECT_NOT_FOUND(o),path:[...r,"parserOptions","project"]}),l&&!t.fs.existsSync(l)&&s.push({...u.TSCONFIG_ROOT_NOT_FOUND(n),path:[...r,"parserOptions","tsconfigRootDir"]});}return {issues:s}}var Ge={info:0,low:1,warning:2,warn:2,moderate:2,high:3,error:4,critical:4},He=Object.keys(Ge),le=[...He,"off"];function ue(e,t=[]){let r=[],s=(Array.isArray(e.extends)||!!e.extends)&&e.extends.length>0,i=Object.entries(e.rules||{});for(let[o,n]of(i.length>0||s||r.push({...u.NO_RULES_CONFIGURED(),path:[...t,"rules"]}),i)){if(!o||o.trim()===""){r.push({...u.EMPTY_RULE_NAME(),path:[...t,"rules"]});continue}if(typeof n=="object"&&n!==null){let{severity:c}=n;c&&!le.includes(c)&&r.push({...u.INVALID_RULE_SEVERITY(o,c),path:[...t,"rules",o,"severity"]});}}return {issues:r}}function de(e,t=[]){let r=[];return e&&typeof e=="object"&&("cacheLocation"in e&&e.cacheLocation!==void 0&&r.push({...u.DEPRECATED_CACHE_LOCATION(),path:[...t,"cacheLocation"]}),"concurrency"in e&&e.concurrency!==void 0&&r.push({...u.DEPRECATED_CONCURRENCY(),path:[...t,"concurrency"]})),{issues:r}}function fe(e,t){let r=common.ASTUtils.parse(e,t);return common.ASTUtils.generateLocationMap(r)}async function qe(e,t,r,s){if(!r)return fe(e,t);let i=`v${common.CACHE_VERSION}:${s}`,o=await r.get(i);if(o)return o.ast;let n=fe(e,t);return await r.set(i,{filePath:t,ast:n}),n}async function me(e,t,r,s,i){if(e.length===0)return;let o=i??be__default.default.createHash("sha1").update(t).digest("hex"),n=await qe(t,r,s,o);for(let c of e){if(c.file||(c.file=r),!((!c.line||c.line===1)&&c.path))continue;let l=n[c.path.join(".")];l&&(c.line=l.line,c.column=l.column);}}var ze=new Set(["recommended","strict","performance","reactivity","all"]);async function Ke(e,t,r,s,i){if(r)return void await me(e,r,t,s,i);for(let o of e)o.file||(o.file=t);}function ge(e,t){let r,s=[...(r=new Set,e.filter(o=>{let n=`${o.code}:${o.message}:${JSON.stringify(o.path)}`;return !r.has(n)&&(r.add(n),true)}))].sort((o,n)=>o.severity===n.severity?0:o.severity==="error"?-1:1),i=!s.some(o=>o.severity==="error");return {config:i?t:void 0,report:{valid:i,issues:s}}}async function he(e){let t,{config:r,context:s,basePath:i=[],filePath:o,fileContent:n,astCache:c,contentHash:l}=e,{issues:d,validated:y,success:E}=(t=Z.safeParse(r)).success?{issues:[],validated:t.data,success:true}:{issues:t.error.issues.map(p=>({code:p.code.replace(/_/g,"-"),message:p.message,path:[...i,...p.path],severity:"error",file:o})),validated:r,success:false},f=[...d,...(function(p,g,m,h,b){let v=[];for(let O of [{name:"cross-fields",run:()=>re(p,m,h).issues},{name:"glob-patterns",run:()=>ne(p,h).issues},{name:"paths",run:()=>ce(p,m,h).issues},{name:"rules",run:()=>ue(p,h).issues},{name:"extends-chain",run:()=>se(p,h,m.cwd).issues},{name:"deprecated",run:()=>de(g,h).issues}])try{v.push(...O.run());}catch(j){v.push({code:"check-failed",message:`Check "${O.name}" encountered an unexpected error: ${j.message}`,path:h,severity:"error",file:b});}return v})(y,r,s,i,o)];return o&&await Ke(f,o,n,c,l),{issues:f,validated:E?y:void 0}}async function ye(e,t=k(),r,s,i,o){var n;let c={context:t,filePath:r,fileContent:s,astCache:i,contentHash:o},l=e===null||typeof e!="object"?{}:e.profiles??{};if(t.profile){let E=l[t.profile];if(!E){let m,h;return n=t.profile,m=Object.keys(l).join(", "),h=ze.has(n.replace(/^ngcompass:/,""))?` "${n}" is a built-in preset, not a config profile. Use 'extends: "ngcompass:${n.replace(/^ngcompass:/,"")}"' in your config instead.`:"",{config:void 0,report:{valid:false,issues:[{code:"error-profile-not-found",message:`Profile "${n}" not found. Available: [${m}]${h}`,path:["profiles",n],severity:"error",file:r}]}}}let f=defu.defu(E,e),{issues:p,validated:g}=await he({...c,config:f,basePath:["profiles",t.profile]});return ge(p,g)}let{issues:d,validated:y}=await he({...c,config:e});return ge(d,y)}var ve=async e=>{common.time("config-resolution");let{cwd:t=Ue__default.default.cwd(),profile:r,cache:s}=e;common.debug("loader",`Starting config resolution (cwd: ${t}, profile: ${r||"none"})`);let i=await U(t),{hash:o,cachedResult:n}=await tt(i,r,s);if(n){let d=common.timeEnd("config-resolution");return common.debug("loader",`Cache HIT - returning cached result (${d.toFixed(1)}ms)`),n}common.debug("loader","Cache MISS - running validation");let c=await rt(i,r,s);common.debug("loader",`Validation complete: ${c.report.valid?"valid":`invalid (${c.report.issues.length} issues)`}`),s&&o&&(await s.configs.set(o,c),common.debug("loader",`Cached validation result: key=${o.substring(0,8)}...`));let l=common.timeEnd("config-resolution");return common.debug("loader",`Config resolution complete: ${l.toFixed(1)}ms`),c};async function tt(e,t,r){if(!r)return {};let s=[e?.contentHash??"",t??"",common.PACKAGE_VERSION,common.CACHE_VERSION].join("::"),i=r.computeHash(s);common.debug("loader",`Cache lookup: key=${i.substring(0,8)}...`);let o=await r.configs.get(i);return {hash:i,cachedResult:o}}async function rt(e,t,r){return ye(e?.config??{},k({profile:t}),e?.filepath,e?.content,r?.asts,e?.contentHash)}var Te=class extends Error{constructor(t){super(`Configuration file already exists at: ${t}`),this.name="ConfigExistsError";}},nt=`import { defineConfig } from '@ngcompass/config';
2
2
 
3
3
  export default defineConfig({
4
4
  extends: 'ngcompass:recommended',
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/schemas/defaults.ts","../src/schemas/schema.ts","../src/loaders/discovery.ts","../src/health/context.ts","../src/health/messages.ts","../src/health/checks/base.ts","../src/health/checks/cross-fields.ts","../src/health/checks/extends.ts","../src/health/checks/globs.ts","../src/health/checks/paths.ts","../src/health/constants.ts","../src/health/checks/rules.ts","../src/health/checks/deprecated.ts","../src/health/enricher.ts","../src/health/validator.ts","../src/loaders/loader.ts","../src/actions/init.ts","../src/actions/healthcheck.ts","../src/define-config.ts","../src/plugin-loader.ts"],"names":["getDefaultMaxWorkers","Math","max","os","cpus","length","DEFAULT_CACHE_OPTIONS","enabled","location","strategy","ttl","DEFAULT_CONFIG","outputFormat","failOnSeverity","maxWarnings","include","exclude","SeveritySchema","z","enum","OutputFormatSchema","RuleDefinitionSchema","union","literal","object","severity","options","record","string","unknown","optional","CacheOptionsSchema","boolean","number","ParserOptionsSchema","project","tsconfigRootDir","sourceType","ecmaVersion","BaseAnalyzerConfigSchema","extends","array","default","maxWorkers","concurrency","cache","cacheLocation","outputPath","ignorePatterns","rules","overrides","files","parserOptions","ProfileConfigSchema","lazy","partial","AnalyzerConfigSchema","extend","profiles","transform","data","undefined","MODULE_NAME","SEARCH_PLACES","jitiLoader","filepath","currentFile","fileURLToPath","createJiti","alias","path","basename","startsWith","URL","import","then","mod","jsonLoader","_filepath","content","JSON","parse","replace","findAndLoadConfig","cwd","process","time","debug","explorer","lilconfig","searchPlaces","loaders","noExt","result","search","timeEnd","contentHash","fs","readFileSync","crypto","createHash","update","digest","hashTime","substring","toFixed","discoveryTime","config","isEmpty","createDefaultContext","existsSync","accessSync","p","mode","dirname","resolve","isAbsolute","MESSAGES","NEGATIVE_MAX_WARNINGS","val","code","message","suggestion","WORKERS_BELOW_MINIMUM","NEGATIVE_CACHE_TTL","WORKERS_EXCESSIVE","workers","limit","CACHE_TTL_ZERO","INVALID_GLOB_PATTERN","pattern","error","EMPTY_INCLUDE","EMPTY_EXCLUDE","DUPLICATE_PATTERNS","field","patterns","map","join","EMPTY_GLOB_PATTERN","TSCONFIG_ROOT_NOT_FOUND","TSCONFIG_PROJECT_NOT_FOUND","OUTPUT_PATH_TRAVERSAL","OUTPUT_PATH_SYSTEM_DIR","OUTPUT_PATH_NOT_FOUND","dir","OUTPUT_PATH_NOT_WRITABLE","CACHE_IN_NODE_MODULES","CACHE_PARENT_NOT_FOUND","INVALID_RULE_SEVERITY","ruleName","NO_RULES_CONFIGURED","EMPTY_RULE_NAME","PROFILE_CIRCULAR_INHERITANCE","chain","PROFILE_EMPTY","EXTENDS_NOT_FOUND","preset","DEPRECATED_CACHE_LOCATION","DEPRECATED_CONCURRENCY","validateConfigBlock","block","context","basePath","issues","workerLimit","push","validateCrossFields","blockIssues","validateExtendsChain","extendsList","Array","isArray","i","trim","isLocal","nodePath","isPluginSpecifier","includes","anchorFile","createRequire","issuePath","n","s","l","validateGlobPatterns","forEach","index","GLOB_RULES","test","endsWith","match","minimatch","err","duplicates","filter","item","indexOf","Set","t","c","validatePaths","resolveFromCwd","targetPath","PATH_RULES","some","constants","W_OK","isInNodeModules","isStandardCache","cacheDir","resolvedProject","resolvedTsconfigRootDir","SEVERITY_LEVELS","info","low","warning","warn","moderate","high","critical","VALID_SEVERITIES","Object","keys","VALID_RULE_SEVERITIES","validateRules","hasExtends","ruleEntries","entries","ruleConfig","validateDeprecatedFields","rawConfig","buildLocationMap","fileContent","filePath","sourceFile","ASTUtils","generateLocationMap","resolveLocationMap","astCache","versionedKey","CACHE_VERSION","cachedEntry","get","ast","locationMap","set","enrichIssueLocations","hash","issue","file","line","column","BUILTIN_PRESETS","attachFileLocations","buildValidationResult","finalConfig","seen","unique","key","stringify","has","add","sort","a","b","valid","report","validateBlock","schemaIssues","validated","success","safeParse","allIssues","check","name","run","validateConfiguration","profile","baseOptions","availableProfiles","profileConfig","available","presetHint","merged","defu","resolveConfig","loaded","cachedResult","tryLoadFromCache","resolutionTime","runValidation","configs","hashInput","PACKAGE_VERSION","computeHash","asts","ConfigExistsError","Error","TEMPLATE","initConfig","existing","force","alreadyExists","writeFile","validateConfig","String","defineConfig","DEFAULT_CAPABILITIES","typeCheckingEnabled","templateASTEnabled","cssASTEnabled","loadPlugins","plugins","configDir","registry","capabilities","_require","pluginErrors","pluginRef","resolvedPath","module","rawExport","pluginList","registeredCount","plugin","value","handler","handle","Function","manifest","rangeError","currentVersion","range","pluginName","pluginVersion","trimmed","current","parseVersion","expanded","base","parsed","slice","constraint","split","Boolean","op","required","diff","engineVersionRange","version","req","label","register","e","v","Number"],"mappings":"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","file":"index.cjs","sourcesContent":["import t from 'node:os';\nexport const getDefaultMaxWorkers = ()=>Math.max(1, t.cpus().length - 1);\nexport const DEFAULT_CACHE_OPTIONS = {\n enabled: !0,\n location: 'node_modules/.cache/ngcompass',\n strategy: 'local',\n ttl: 86400000\n};\nexport const DEFAULT_CONFIG = {\n outputFormat: 'text',\n failOnSeverity: 'error',\n maxWarnings: 10,\n include: [\n 'src/**/*.ts'\n ],\n exclude: [\n 'node_modules/**',\n 'dist/**',\n '**/*.spec.ts',\n '**/*.test.ts'\n ]\n};\n","import { z as e } from 'zod';\nimport { DEFAULT_CONFIG as o, DEFAULT_CACHE_OPTIONS as n, getDefaultMaxWorkers as r } from './defaults.js';\nlet SeveritySchema = e.enum([\n 'warn',\n 'error'\n]), OutputFormatSchema = e.enum([\n 'json',\n 'text',\n 'sarif',\n 'html'\n]), RuleDefinitionSchema = e.union([\n SeveritySchema,\n e.literal('off'),\n e.object({\n severity: e.union([\n SeveritySchema,\n e.literal('off')\n ]),\n options: e.record(e.string(), e.unknown()).optional()\n })\n]), CacheOptionsSchema = e.object({\n enabled: e.boolean().optional(),\n location: e.string().optional(),\n strategy: e.enum([\n 'memory',\n 'local'\n ]).optional(),\n ttl: e.number().optional()\n}), ParserOptionsSchema = e.object({\n project: e.string().optional(),\n tsconfigRootDir: e.string().optional(),\n sourceType: e.enum([\n 'module',\n 'commonjs'\n ]).optional(),\n ecmaVersion: e.number().optional()\n}), BaseAnalyzerConfigSchema = e.object({\n extends: e.union([\n e.string(),\n e.array(e.string())\n ]).optional(),\n include: e.array(e.string()).default([\n ...o.include\n ]),\n exclude: e.array(e.string()).default([\n ...o.exclude\n ]),\n maxWorkers: e.number().optional(),\n concurrency: e.number().optional(),\n cache: e.union([\n e.boolean(),\n CacheOptionsSchema\n ]).optional(),\n cacheLocation: e.string().optional(),\n outputFormat: OutputFormatSchema.default(o.outputFormat),\n outputPath: e.string().optional(),\n failOnSeverity: SeveritySchema.default(o.failOnSeverity),\n maxWarnings: e.number().default(o.maxWarnings),\n ignorePatterns: e.array(e.string()).optional(),\n rules: e.record(e.string(), RuleDefinitionSchema).optional(),\n overrides: e.array(e.object({\n files: e.union([\n e.string(),\n e.array(e.string())\n ]),\n rules: e.record(e.string(), RuleDefinitionSchema).optional()\n })).optional(),\n parserOptions: ParserOptionsSchema.optional()\n});\nexport const ProfileConfigSchema = e.lazy(()=>BaseAnalyzerConfigSchema.partial());\nexport const AnalyzerConfigSchema = BaseAnalyzerConfigSchema.extend({\n profiles: e.record(e.string(), ProfileConfigSchema).optional()\n}).transform((e)=>{\n let o, t = e.maxWorkers ?? e.concurrency ?? r();\n if (!1 === e.cache) o = {\n ...n,\n enabled: !1\n };\n else if (!0 === e.cache || void 0 === e.cache) {\n let r = e.cacheLocation ?? n.location;\n o = {\n ...n,\n location: r\n };\n } else o = {\n ...n,\n ...e.cache\n };\n return {\n ...e,\n maxWorkers: t,\n cache: o,\n rules: e.rules ?? {},\n overrides: e.overrides ?? [],\n ignorePatterns: e.ignorePatterns ?? []\n };\n});\n","import { lilconfig as o } from 'lilconfig';\nimport { createJiti as e } from 'jiti';\nimport i from 'node:fs';\nimport t from 'node:crypto';\nimport r from 'node:path';\nimport { fileURLToPath as n } from 'node:url';\nimport { debug as s, time as c, timeEnd as a } from '@ngcompass/common';\nlet MODULE_NAME = 'ngcompass', SEARCH_PLACES = [\n `${MODULE_NAME}.config.ts`,\n `${MODULE_NAME}.config.js`,\n `${MODULE_NAME}.config.mjs`,\n `${MODULE_NAME}.config.cjs`,\n `${MODULE_NAME}.config.json`,\n `.${MODULE_NAME}rc`,\n `.${MODULE_NAME}rc.json`,\n 'package.json'\n], jitiLoader = (o)=>{\n let i = n(import.meta.url);\n return e(o, {\n alias: {\n '@ngcompass/config': r.basename(i).startsWith('index.') ? i : n(new URL('../index.ts', import.meta.url))\n }\n }).import(o).then((o)=>o && 'object' == typeof o && 'default' in o ? o.default ?? o : o);\n}, jsonLoader = (o, e)=>JSON.parse(e.replace(/^\\uFEFF/, ''));\nexport const findAndLoadConfig = async (e = process.cwd())=>{\n c('config-discovery'), s('discovery', `Searching for config in: ${e}`);\n let r = o(MODULE_NAME, {\n searchPlaces: SEARCH_PLACES,\n loaders: {\n '.ts': jitiLoader,\n '.js': jitiLoader,\n '.mjs': jitiLoader,\n '.cjs': jitiLoader,\n '.json': jsonLoader,\n noExt: jsonLoader\n }\n }), n = await r.search(e);\n if (!n) return s('discovery', 'No config file found'), a('config-discovery'), null;\n s('discovery', `Found config: ${n.filepath}`);\n let f = '', d = '';\n c('content-hash');\n try {\n f = i.readFileSync(n.filepath, 'utf-8'), d = t.createHash('sha1').update(f).digest('hex');\n let o = a('content-hash');\n s('discovery', `Content hash: ${d.substring(0, 8)}... (${o.toFixed(1)}ms)`);\n } catch {}\n let m = a('config-discovery');\n return s('discovery', `Discovery complete: ${m.toFixed(1)}ms`), {\n config: n.config,\n filepath: n.filepath,\n content: f,\n contentHash: d,\n isEmpty: n.isEmpty\n };\n};\n","import * as e from \"node:fs\";\nimport * as o from \"node:path\";\nimport { cpus as s } from \"node:os\";\nimport r from \"node:process\";\nexport function createDefaultContext(t) {\n return {\n cwd: r.cwd(),\n fs: {\n existsSync: e.existsSync,\n accessSync: (o, s)=>e.accessSync(o, s)\n },\n os: {\n cpus: s\n },\n path: {\n dirname: o.dirname,\n resolve: o.resolve,\n isAbsolute: o.isAbsolute\n },\n ...t\n };\n}\n","export const MESSAGES = {\n NEGATIVE_MAX_WARNINGS: (e)=>({\n code: \"negative-max-warnings\",\n message: `Value for 'maxWarnings' must be non-negative. Received: ${e}.`,\n suggestion: \"Set 'maxWarnings' to 0 or higher, or remove it to use default (10).\",\n severity: \"error\"\n }),\n WORKERS_BELOW_MINIMUM: ()=>({\n code: \"workers-below-minimum\",\n message: \"Value for 'maxWorkers' must be at least 1.\",\n suggestion: \"Set to 1 or higher, or remove to use default (CPU count - 1).\",\n severity: \"error\"\n }),\n NEGATIVE_CACHE_TTL: (e)=>({\n code: \"negative-cache-ttl\",\n message: `Cache TTL must be non-negative. Received: ${e}ms.`,\n suggestion: \"Set to 0 (default TTL) or higher. Example: 86400000 for 24 hours.\",\n severity: \"error\"\n }),\n WORKERS_EXCESSIVE: (e, t)=>({\n code: \"warn-workers-excessive\",\n message: `Worker count (${e}) exceeds CPU count (${t}). May cause context switching overhead.`,\n suggestion: `Reduce to ${t} or lower for optimal performance.`,\n severity: \"warning\"\n }),\n CACHE_TTL_ZERO: ()=>({\n code: \"warn-cache-ttl-zero\",\n message: \"Cache TTL is set to 0. Using driver default TTL (typically 24 hours).\",\n suggestion: \"Set explicit TTL if you need different cache expiration behavior.\",\n severity: \"warning\"\n }),\n INVALID_GLOB_PATTERN: (e, t)=>({\n code: \"invalid-glob-pattern\",\n message: `Glob pattern \"${e}\" is invalid. Error: ${t}.`,\n suggestion: \"Check pattern syntax. Valid examples: 'src/**/*.ts', '**/*.{ts,html}'.\",\n severity: \"error\"\n }),\n EMPTY_INCLUDE: ()=>({\n code: \"empty-include\",\n message: \"No include patterns defined. Analysis will skip all files.\",\n suggestion: \"Add patterns like ['src/**/*.ts', 'src/**/*.html'] to enable analysis.\",\n severity: \"error\"\n }),\n EMPTY_EXCLUDE: ()=>({\n code: \"warn-empty-exclude\",\n message: \"No exclude patterns defined. Performance may degrade.\",\n suggestion: \"Add common exclusions: ['node_modules/**', 'dist/**', '**/*.spec.ts'].\",\n severity: \"warning\"\n }),\n DUPLICATE_PATTERNS: (e, t)=>({\n code: \"warn-duplicate-patterns\",\n message: `Duplicate patterns found in \"${e}\": ${t.map((e)=>`\"${e}\"`).join(\", \")}.`,\n suggestion: \"Remove duplicate entries to simplify configuration.\",\n severity: \"warning\"\n }),\n EMPTY_GLOB_PATTERN: (e)=>({\n code: \"empty-glob-pattern\",\n message: `Empty string detected in \"${e}\" patterns.`,\n suggestion: \"Remove empty strings from the pattern array.\",\n severity: \"error\"\n }),\n TSCONFIG_ROOT_NOT_FOUND: (e)=>({\n code: \"tsconfig-root-not-found\",\n message: `TSConfig root directory not found: \"${e}\".`,\n suggestion: \"Verify the directory exists and the path is correct relative to the config file.\",\n severity: \"error\"\n }),\n TSCONFIG_PROJECT_NOT_FOUND: (e)=>({\n code: \"tsconfig-project-not-found\",\n message: `TSConfig file not found: \"${e}\".`,\n suggestion: \"Verify the file exists and the path is relative to 'tsconfigRootDir' or config location.\",\n severity: \"error\"\n }),\n OUTPUT_PATH_TRAVERSAL: (e)=>({\n code: \"output-path-traversal\",\n message: `Output path contains unsafe traversal (..): \"${e}\".`,\n suggestion: \"Use absolute paths or paths without '..' to prevent security issues.\",\n severity: \"error\"\n }),\n OUTPUT_PATH_SYSTEM_DIR: (e)=>({\n code: \"output-path-system-dir\",\n message: `Output path points to a system directory: \"${e}\".`,\n suggestion: \"Choose a safe output location within your project directory.\",\n severity: \"error\"\n }),\n OUTPUT_PATH_NOT_FOUND: (e)=>({\n code: \"output-path-not-found\",\n message: `Output directory does not exist: \"${e}\".`,\n suggestion: \"Create the directory or update 'outputPath' to an existing location.\",\n severity: \"error\"\n }),\n OUTPUT_PATH_NOT_WRITABLE: (e)=>({\n code: \"output-path-not-writable\",\n message: `Output directory is not writable: \"${e}\".`,\n suggestion: \"Check directory permissions or choose a different output location.\",\n severity: \"error\"\n }),\n CACHE_IN_NODE_MODULES: (e)=>({\n code: \"cache-in-node-modules\",\n message: `Cache location inside 'node_modules' is unsafe: \"${e}\". node_modules can be deleted, causing cache loss.`,\n suggestion: \"Use a different directory like '.cache' or 'node_modules/.cache/ngcompass'.\",\n severity: \"error\"\n }),\n CACHE_PARENT_NOT_FOUND: (e)=>({\n code: \"warn-cache-parent-not-found\",\n message: `Cache parent directory missing: \"${e}\". It will be created automatically.`,\n suggestion: \"No action needed. Directory will be created on first cache write.\",\n severity: \"warning\"\n }),\n INVALID_RULE_SEVERITY: (e, t)=>({\n code: \"invalid-rule-severity\",\n message: `Rule \"${e}\" has invalid severity: \"${t}\".`,\n suggestion: \"Use valid severities: 'off', 'info', 'low', 'moderate', 'high', or 'critical'.\",\n severity: \"error\"\n }),\n NO_RULES_CONFIGURED: ()=>({\n code: \"warn-no-rules-configured\",\n message: \"No rules configured. Analysis effectively skips checks.\",\n suggestion: \"Add rules to enable analysis, or extend from a preset like 'recommended'.\",\n severity: \"warning\"\n }),\n EMPTY_RULE_NAME: ()=>({\n code: \"empty-rule-name\",\n message: \"Empty rule name detected. Rule keys must be non-empty strings.\",\n suggestion: \"Remove empty keys from 'rules' configuration.\",\n severity: \"error\"\n }),\n PROFILE_CIRCULAR_INHERITANCE: (e)=>({\n code: \"profile-circular-inheritance\",\n message: `Circular profile inheritance detected: ${e.join(\" → \")}.`,\n suggestion: \"Break the circular dependency by removing one 'extends' reference.\",\n severity: \"error\"\n }),\n PROFILE_EMPTY: ()=>({\n code: \"warn-profile-empty\",\n message: \"Profiles section is defined but empty. Consider removing it.\",\n suggestion: \"Remove 'profiles: {}' or add at least one profile like 'dev' or 'ci'.\",\n severity: \"warning\"\n }),\n EXTENDS_NOT_FOUND: (e)=>({\n code: \"extends-not-found\",\n message: `Cannot resolve preset \"${e}\". Make sure the package is installed.`,\n suggestion: `Run: npm install --save-dev ${e}`,\n severity: \"error\"\n }),\n DEPRECATED_CACHE_LOCATION: ()=>({\n code: \"warn-deprecated-cache-location\",\n message: \"'cacheLocation' is deprecated. Use 'cache.location' instead.\",\n suggestion: \"Replace 'cacheLocation: \\\"...\\\"' with 'cache: { location: \\\"...\\\" }'.\",\n severity: \"warning\"\n }),\n DEPRECATED_CONCURRENCY: ()=>({\n code: \"warn-deprecated-concurrency\",\n message: \"'concurrency' is deprecated. Use 'maxWorkers' instead.\",\n suggestion: \"Replace 'concurrency: N' with 'maxWorkers: N'.\",\n severity: \"warning\"\n })\n};\n","import { MESSAGES as e } from \"../messages.js\";\nexport function validateConfigBlock(o, r, t = []) {\n let a = [];\n if (void 0 !== o.maxWorkers) {\n let s = 2 * r.os.cpus().length;\n o.maxWorkers < 1 ? a.push({\n ...e.WORKERS_BELOW_MINIMUM(),\n path: [\n ...t,\n \"maxWorkers\"\n ]\n }) : o.maxWorkers > s && a.push({\n ...e.WORKERS_EXCESSIVE(o.maxWorkers, s),\n path: [\n ...t,\n \"maxWorkers\"\n ]\n });\n }\n if (o.cache && \"object\" == typeof o.cache && void 0 !== o.cache.ttl) {\n let { ttl: r } = o.cache, s = [\n ...t,\n \"cache\",\n \"ttl\"\n ];\n r < 0 && a.push({\n ...e.NEGATIVE_CACHE_TTL(r),\n path: s\n });\n }\n return {\n issues: a\n };\n}\n","import { MESSAGES as s } from \"../messages.js\";\nimport { validateConfigBlock as e } from \"./base.js\";\nexport function validateCrossFields(i, r, t = []) {\n let a = [];\n if (void 0 !== i.maxWarnings) {\n let { maxWarnings: e } = i;\n e < 0 && a.push({\n ...s.NEGATIVE_MAX_WARNINGS(e),\n path: [\n ...t,\n \"maxWarnings\"\n ]\n });\n }\n let { issues: o } = e(i, r, t);\n return a.push(...o), {\n issues: a\n };\n}\n","import { createRequire as e } from \"node:module\";\nimport t from \"node:path\";\nimport r from \"node:process\";\nimport { MESSAGES as n } from \"../messages.js\";\nexport function validateExtendsChain(s, o = [], i = r.cwd()) {\n let l = [];\n if (!s.extends) return {\n issues: l\n };\n let u = Array.isArray(s.extends) ? s.extends : [\n s.extends\n ], d = Array.isArray(s.extends);\n for(let r = 0; r < u.length; r++){\n let s = u[r];\n if (!(\"string\" != typeof s || \"\" === s.trim() || function(e) {\n let r = e.startsWith(\".\"), n = t.isAbsolute(e), s = e.includes(\":\");\n return r || n || s;\n }(s)) && null === function(r, n) {\n try {\n let s = t.join(n, \"__resolve_anchor__.cjs\");\n return e(s).resolve(r);\n } catch {\n return null;\n }\n }(s, i)) {\n let e = [\n ...o,\n \"extends\"\n ];\n d && e.push(r), l.push({\n ...n.EXTENDS_NOT_FOUND(s),\n path: e\n });\n }\n }\n return {\n issues: l\n };\n}\n","import { minimatch as e } from \"minimatch\";\nimport { MESSAGES as t } from \"../messages.js\";\nlet n = /\\/\\/\\//, s = /\\{/g, l = /\\}/g;\nexport function validateGlobPatterns(r, i = []) {\n let h = [];\n for (let u of [\n \"include\",\n \"exclude\",\n \"ignorePatterns\"\n ]){\n let a = r[u];\n if (!Array.isArray(a)) continue;\n a.forEach((r, a)=>{\n h.push(...function(r, i, h, u) {\n let a = [], c = [\n ...u,\n r,\n h\n ];\n if (!i || \"\" === i.trim()) return a.push({\n ...t.EMPTY_GLOB_PATTERN(r),\n path: c\n }), a;\n if (i.includes(\"[\") && !i.includes(\"]\")) return a.push({\n ...t.INVALID_GLOB_PATTERN(i, \"unclosed bracket\"),\n path: c\n }), a;\n if (n.test(i) || i.startsWith(\"///\")) return a.push({\n ...t.INVALID_GLOB_PATTERN(i, \"invalid path pattern with multiple slashes\"),\n path: c\n }), a;\n (i.endsWith(\"\\\\\") || i.endsWith(\"/\")) && a.push({\n ...t.INVALID_GLOB_PATTERN(i, \"trailing slash not allowed\"),\n path: c\n }), (i.match(s) || []).length !== (i.match(l) || []).length && a.push({\n ...t.INVALID_GLOB_PATTERN(i, \"unmatched braces\"),\n path: c\n });\n try {\n e(\"sample.ts\", i);\n } catch (e) {\n a.push({\n ...t.INVALID_GLOB_PATTERN(i, e.message),\n path: c\n });\n }\n return a;\n }(u, r, a, i));\n });\n let c = a.filter((e, t)=>a.indexOf(e) !== t);\n c.length > 0 && h.push({\n ...t.DUPLICATE_PATTERNS(u, [\n ...new Set(c)\n ]),\n path: [\n ...i,\n u\n ]\n });\n }\n return r.include && 0 !== r.include.length || h.push({\n ...t.EMPTY_INCLUDE(),\n path: [\n ...i,\n \"include\"\n ]\n }), r.exclude && 0 !== r.exclude.length || h.push({\n ...t.EMPTY_EXCLUDE(),\n path: [\n ...i,\n \"exclude\"\n ]\n }), {\n issues: h\n };\n}\n","import * as s from \"node:fs\";\nimport { MESSAGES as e } from \"../messages.js\";\nlet t = [\n \"/etc/\",\n \"\\\\etc\\\\\",\n \"/var/\",\n \"\\\\var\\\\\"\n], c = \"node_modules\";\nexport function validatePaths(a, o, p = []) {\n let i = [], n = (s)=>o.path.isAbsolute(s) ? s : o.path.resolve(o.cwd ?? process.cwd(), s);\n if (a.outputPath) {\n let { outputPath: c } = a, h = [\n ...p,\n \"outputPath\"\n ];\n c.includes(\"..\") && i.push({\n ...e.OUTPUT_PATH_TRAVERSAL(c),\n path: h\n }), t.some((s)=>c.includes(s)) && i.push({\n ...e.OUTPUT_PATH_SYSTEM_DIR(c),\n path: h\n });\n let r = o.path.dirname(n(c));\n if (o.fs.existsSync(r)) try {\n o.fs.accessSync(r, s.constants.W_OK);\n } catch {\n i.push({\n ...e.OUTPUT_PATH_NOT_WRITABLE(r),\n path: h\n });\n }\n else i.push({\n ...e.OUTPUT_PATH_NOT_FOUND(r),\n path: h\n });\n }\n if (a.cache && \"object\" == typeof a.cache && a.cache.enabled) {\n let { location: s } = a.cache;\n if (s) {\n let t = [\n ...p,\n \"cache\",\n \"location\"\n ], a = s.includes(c), h = s.includes(`${c}/.cache`);\n a && !h && i.push({\n ...e.CACHE_IN_NODE_MODULES(s),\n path: t\n });\n let r = o.path.dirname(n(s));\n o.fs.existsSync(r) || i.push({\n ...e.CACHE_PARENT_NOT_FOUND(r),\n path: t\n });\n }\n }\n if (a.parserOptions) {\n let { project: s, tsconfigRootDir: t } = a.parserOptions, c = s ? n(s) : void 0, h = t ? n(t) : void 0;\n c && !o.fs.existsSync(c) && i.push({\n ...e.TSCONFIG_PROJECT_NOT_FOUND(s),\n path: [\n ...p,\n \"parserOptions\",\n \"project\"\n ]\n }), h && !o.fs.existsSync(h) && i.push({\n ...e.TSCONFIG_ROOT_NOT_FOUND(t),\n path: [\n ...p,\n \"parserOptions\",\n \"tsconfigRootDir\"\n ]\n });\n }\n return {\n issues: i\n };\n}\n","export const SEVERITY_LEVELS = {\n info: 0,\n low: 1,\n warning: 2,\n warn: 2,\n moderate: 2,\n high: 3,\n error: 4,\n critical: 4\n};\nexport const VALID_SEVERITIES = Object.keys(SEVERITY_LEVELS);\nexport const VALID_RULE_SEVERITIES = [\n ...VALID_SEVERITIES,\n \"off\"\n];\n","import { VALID_RULE_SEVERITIES as e } from \"../constants.js\";\nimport { MESSAGES as t } from \"../messages.js\";\nexport function validateRules(s, r = []) {\n let n = [], l = Array.isArray(s.extends) ? s.extends.length > 0 : !!s.extends && s.extends.length > 0, u = Object.entries(s.rules || {});\n for (let [s, i] of (u.length > 0 || l || n.push({\n ...t.NO_RULES_CONFIGURED(),\n path: [\n ...r,\n \"rules\"\n ]\n }), u)){\n if (!s || \"\" === s.trim()) {\n n.push({\n ...t.EMPTY_RULE_NAME(),\n path: [\n ...r,\n \"rules\"\n ]\n });\n continue;\n }\n if (\"object\" == typeof i && null !== i) {\n let { severity: l } = i;\n l && !e.includes(l) && n.push({\n ...t.INVALID_RULE_SEVERITY(s, l),\n path: [\n ...r,\n \"rules\",\n s,\n \"severity\"\n ]\n });\n }\n }\n return {\n issues: n\n };\n}\n","import { MESSAGES as c } from \"../messages.js\";\nexport function validateDeprecatedFields(e, o = []) {\n let n = [];\n return e && \"object\" == typeof e && (\"cacheLocation\" in e && void 0 !== e.cacheLocation && n.push({\n ...c.DEPRECATED_CACHE_LOCATION(),\n path: [\n ...o,\n \"cacheLocation\"\n ]\n }), \"concurrency\" in e && void 0 !== e.concurrency && n.push({\n ...c.DEPRECATED_CONCURRENCY(),\n path: [\n ...o,\n \"concurrency\"\n ]\n })), {\n issues: n\n };\n}\n","import { ASTUtils as t, CACHE_VERSION as e } from \"@ngcompass/common\";\nimport n from \"node:crypto\";\nfunction buildLocationMap(e, n) {\n let o = t.parse(e, n);\n return t.generateLocationMap(o);\n}\nasync function resolveLocationMap(t, n, o, a) {\n if (!o) return buildLocationMap(t, n);\n let i = `v${e}:${a}`, r = await o.get(i);\n if (r) return r.ast;\n let c = buildLocationMap(t, n);\n return await o.set(i, {\n filePath: n,\n ast: c\n }), c;\n}\nexport async function enrichIssueLocations(t, e, o, a, i) {\n if (0 === t.length) return;\n let r = i ?? n.createHash(\"sha1\").update(e).digest(\"hex\"), c = await resolveLocationMap(e, o, a, r);\n for (let e of t){\n if (e.file || (e.file = o), !((!e.line || 1 === e.line) && e.path)) continue;\n let t = c[e.path.join(\".\")];\n t && (e.line = t.line, e.column = t.column);\n }\n}\n","import { defu as e } from \"defu\";\nimport { AnalyzerConfigSchema as s } from \"../schemas/schema.js\";\nimport { createDefaultContext as r } from \"./context.js\";\nimport { validateCrossFields as i, validateExtendsChain as t, validateGlobPatterns as a, validatePaths as o, validateRules as n, validateDeprecatedFields as l } from \"./checks/index.js\";\nimport { enrichIssueLocations as c } from \"./enricher.js\";\nlet BUILTIN_PRESETS = new Set([\n \"recommended\",\n \"strict\",\n \"performance\",\n \"reactivity\",\n \"all\"\n]);\nasync function attachFileLocations(e, s, r, i, t) {\n if (r) return void await c(e, r, s, i, t);\n for (let r of e)r.file || (r.file = s);\n}\nfunction buildValidationResult(e, s) {\n let r, i = [\n ...(r = new Set(), e.filter((e)=>{\n let s = `${e.code}:${e.message}:${JSON.stringify(e.path)}`;\n return !r.has(s) && (r.add(s), !0);\n }))\n ].sort((e, s)=>e.severity === s.severity ? 0 : \"error\" === e.severity ? -1 : 1), t = !i.some((e)=>\"error\" === e.severity);\n return {\n config: t ? s : void 0,\n report: {\n valid: t,\n issues: i\n }\n };\n}\nasync function validateBlock(e) {\n let r, { config: c, context: u, basePath: f = [], filePath: d, fileContent: p, astCache: m, contentHash: v } = e, { issues: h, validated: g, success: y } = (r = s.safeParse(c)).success ? {\n issues: [],\n validated: r.data,\n success: !0\n } : {\n issues: r.error.issues.map((e)=>({\n code: e.code.replace(/_/g, \"-\"),\n message: e.message,\n path: [\n ...f,\n ...e.path\n ],\n severity: \"error\",\n file: d\n })),\n validated: c,\n success: !1\n }, $ = [\n ...h,\n ...function(e, s, r, c, u) {\n let f = [];\n for (let d of [\n {\n name: \"cross-fields\",\n run: ()=>i(e, r, c).issues\n },\n {\n name: \"glob-patterns\",\n run: ()=>a(e, c).issues\n },\n {\n name: \"paths\",\n run: ()=>o(e, r, c).issues\n },\n {\n name: \"rules\",\n run: ()=>n(e, c).issues\n },\n {\n name: \"extends-chain\",\n run: ()=>t(e, c, r.cwd).issues\n },\n {\n name: \"deprecated\",\n run: ()=>l(s, c).issues\n }\n ])try {\n f.push(...d.run());\n } catch (e) {\n f.push({\n code: \"check-failed\",\n message: `Check \"${d.name}\" encountered an unexpected error: ${e.message}`,\n path: c,\n severity: \"error\",\n file: u\n });\n }\n return f;\n }(g, c, u, f, d)\n ];\n return d && await attachFileLocations($, d, p, m, v), {\n issues: $,\n validated: y ? g : void 0\n };\n}\nexport async function validateConfiguration(s, i = r(), t, a, o, n) {\n var l;\n let c = {\n context: i,\n filePath: t,\n fileContent: a,\n astCache: o,\n contentHash: n\n }, u = null === s || \"object\" != typeof s ? {} : s.profiles ?? {};\n if (i.profile) {\n let r = u[i.profile];\n if (!r) {\n let e, s;\n return l = i.profile, e = Object.keys(u).join(\", \"), s = BUILTIN_PRESETS.has(l.replace(/^ngcompass:/, \"\")) ? ` \"${l}\" is a built-in preset, not a config profile. Use 'extends: \"ngcompass:${l.replace(/^ngcompass:/, \"\")}\"' in your config instead.` : \"\", {\n config: void 0,\n report: {\n valid: !1,\n issues: [\n {\n code: \"error-profile-not-found\",\n message: `Profile \"${l}\" not found. Available: [${e}]${s}`,\n path: [\n \"profiles\",\n l\n ],\n severity: \"error\",\n file: t\n }\n ]\n }\n };\n }\n let a = e(r, s), { issues: o, validated: n } = await validateBlock({\n ...c,\n config: a,\n basePath: [\n \"profiles\",\n i.profile\n ]\n });\n return buildValidationResult(o, n);\n }\n let { issues: f, validated: d } = await validateBlock({\n ...c,\n config: s\n });\n return buildValidationResult(f, d);\n}\n","import { findAndLoadConfig as o } from './discovery.js';\nimport { validateConfiguration as t } from '../health/index.js';\nimport { createDefaultContext as e } from '../health/context.js';\nimport { PACKAGE_VERSION as n, CACHE_VERSION as i, debug as r, time as a, timeEnd as s } from '@ngcompass/common';\nimport l from 'node:process';\nexport const resolveConfig = async (t)=>{\n a('config-resolution');\n let { cwd: e = l.cwd(), profile: n, cache: i } = t;\n r('loader', `Starting config resolution (cwd: ${e}, profile: ${n || 'none'})`);\n let c = await o(e), { hash: d, cachedResult: u } = await tryLoadFromCache(c, n, i);\n if (u) {\n let o = s('config-resolution');\n return r('loader', `Cache HIT - returning cached result (${o.toFixed(1)}ms)`), u;\n }\n r('loader', 'Cache MISS - running validation');\n let f = await runValidation(c, n, i);\n r('loader', `Validation complete: ${f.report.valid ? 'valid' : `invalid (${f.report.issues.length} issues)`}`), i && d && (await i.configs.set(d, f), r('loader', `Cached validation result: key=${d.substring(0, 8)}...`));\n let m = s('config-resolution');\n return r('loader', `Config resolution complete: ${m.toFixed(1)}ms`), f;\n};\nasync function tryLoadFromCache(o, t, e) {\n if (!e) return {};\n let a = [\n o?.contentHash ?? '',\n t ?? '',\n n,\n i\n ].join('::'), s = e.computeHash(a);\n r('loader', `Cache lookup: key=${s.substring(0, 8)}...`);\n let l = await e.configs.get(s);\n return {\n hash: s,\n cachedResult: l\n };\n}\nasync function runValidation(o, n, i) {\n return t(o?.config ?? {}, e({\n profile: n\n }), o?.filepath, o?.content, i?.asts, o?.contentHash);\n}\n","import e from 'node:fs/promises';\nimport s from 'node:path';\nimport { findAndLoadConfig as r } from '../loaders/discovery.js';\nexport class ConfigExistsError extends Error {\n constructor(e){\n super(`Configuration file already exists at: ${e}`), this.name = 'ConfigExistsError';\n }\n}\nlet TEMPLATE = `import { defineConfig } from '@ngcompass/config';\n\nexport default defineConfig({\n extends: 'ngcompass:recommended',\n\n include: [\n 'src/**/*.ts',\n 'src/**/*.html',\n ],\n\n exclude: [\n 'node_modules/**',\n 'dist/**',\n 'build/**',\n 'coverage/**',\n '**/*.d.ts',\n '**/*.spec.ts',\n '**/*.test.ts',\n ],\n\n profiles: {\n ci: {\n outputFormat: 'json',\n maxWarnings: 0,\n },\n },\n});\n`;\nexport async function initConfig(t = {}) {\n let o = t.cwd ?? process.cwd(), i = s.join(o, 'ngcompass.config.ts'), n = await r(o);\n if (n && !t.force) return {\n success: !1,\n filePath: n.filepath,\n alreadyExists: !0\n };\n try {\n return await e.writeFile(i, TEMPLATE, 'utf-8'), {\n success: !0,\n filePath: i\n };\n } catch (e) {\n return {\n success: !1,\n filePath: i\n };\n }\n}\n","import { resolveConfig as r } from '../loaders/loader.js';\nexport async function validateConfig(e = {}) {\n try {\n return await r(e);\n } catch (r) {\n return {\n config: void 0,\n report: {\n valid: !1,\n issues: [\n {\n code: \"error-conf-semantic\",\n message: r instanceof Error ? r.message : String(r),\n path: [],\n severity: \"error\"\n }\n ]\n }\n };\n }\n}\n","export function defineConfig(n) {\n return n;\n}\n","import { createRequire as e } from 'node:module';\nimport { warn as r, debug as n, PACKAGE_VERSION as t } from '@ngcompass/common';\nlet DEFAULT_CAPABILITIES = {\n typeCheckingEnabled: !1,\n templateASTEnabled: !0,\n cssASTEnabled: !0\n};\nexport const loadPlugins = async (l, i, a, o = DEFAULT_CAPABILITIES)=>{\n if (0 === l.length) return;\n n('plugin-loader', `Initializing loader for ${l.length} plugin(s) at ${i}`);\n let u = e(i + '/package.json'), s = [];\n for (let e of l)try {\n let l;\n try {\n l = u.resolve(e);\n } catch {\n l = e;\n }\n let i = await import(l), s = i.default ?? i, f = Array.isArray(s) ? s : [\n s\n ], c = 0;\n for (let l of f){\n if (!function(e) {\n if (!e || 'object' != typeof e) return !1;\n let r = e.handler;\n return 'string' == typeof e.name && e.name.length > 0 && r?.handle instanceof Function;\n }(l)) {\n r('plugin-loader', `Plugin \"${e}\" exported an invalid structure. Skipping.`);\n continue;\n }\n let { manifest: i } = l;\n if (i) {\n let e = function(e, r) {\n let n = function(e, r, n, t) {\n let l = r.trim();\n if (!l || '*' === l) return null;\n let i = parseVersion(e);\n if (!i) return null;\n let a = l.startsWith('^') ? function(e) {\n let r = parseVersion(e);\n return r ? `>=${e} <${r[0] + 1}.0.0` : null;\n }(l.slice(1)) : l;\n if (!a) return null;\n for (let l of a.split(/\\s+/).filter(Boolean)){\n let a = l.match(/^(>=|<=|>|<|=|==)(\\d+\\.\\d+\\.\\d+.*)$/);\n if (!a) continue;\n let o = a[1], u = parseVersion(a[2]);\n if (!u) continue;\n let s = function(e, r) {\n for(let n = 0; n < 3; n++)if (e[n] !== r[n]) return e[n] > r[n] ? 1 : -1;\n return 0;\n }(i, u);\n if (!('>=' === o ? s >= 0 : '<=' === o ? s <= 0 : '>' === o ? s > 0 : '<' === o ? s < 0 : 0 === s)) return `Plugin \"${n}@${t}\" requires engine \"${r}\", found \"${e}\".`;\n }\n return null;\n }(t.replace(/^v/, ''), e.engineVersionRange, e.name, e.version);\n if (n) return n;\n for (let n of [\n {\n key: 'requiresTypeInfo',\n current: r.typeCheckingEnabled,\n label: 'Type Information'\n },\n {\n key: 'requiresTemplateAST',\n current: r.templateASTEnabled,\n label: 'Template AST'\n },\n {\n key: 'requiresCssAST',\n current: r.cssASTEnabled,\n label: 'CSS AST'\n }\n ])if (e.capabilities?.[n.key] && !n.current) return `Plugin \"${e.name}@${e.version}\" requires ${n.label} support, which is currently disabled.`;\n return null;\n }(i, o);\n if (e) throw Error(e);\n n('plugin-loader', `❯ Validated: ${i.name}@${i.version}`);\n } else r('plugin-loader', `Plugin \"${e}\" is missing a manifest. Please update for future compatibility.`);\n a.register(l), c++, n('plugin-loader', `❯ Registered Rule: ${l.name}`);\n }\n n('plugin-loader', `Plugin \"${e}\" processed: ${c} rules active.`);\n } catch (n) {\n let r = n instanceof Error ? n.message : String(n);\n s.push(`- \"${e}\": ${r}`);\n }\n if (s.length > 0) throw Error(`[ngcompass] Plugin Load Failure:\\n${s.join('\\n')}\\nEnsure plugins are installed and satisfy version requirements.`);\n};\nfunction parseVersion(e) {\n let r = e.trim().match(/^v?\\.?(\\d+)\\.(\\d+)\\.(\\d+)(?:[-+].*)?$/);\n return r ? [\n Number(r[1]),\n Number(r[2]),\n Number(r[3])\n ] : null;\n}\n"]}
1
+ {"version":3,"sources":["../src/schemas/defaults.ts","../src/schemas/schema.ts","../src/loaders/discovery.ts","../src/health/context.ts","../src/health/messages.ts","../src/health/checks/base.ts","../src/health/checks/cross-fields.ts","../src/health/checks/extends.ts","../src/health/checks/globs.ts","../src/health/checks/paths.ts","../src/health/constants.ts","../src/health/checks/rules.ts","../src/health/checks/deprecated.ts","../src/health/enricher.ts","../src/health/validator.ts","../src/loaders/loader.ts","../src/actions/init.ts","../src/actions/healthcheck.ts","../src/define-config.ts","../src/plugin-loader.ts"],"names":["getDefaultMaxWorkers","Math","max","min","os","cpus","length","DEFAULT_CACHE_OPTIONS","enabled","location","strategy","ttl","DEFAULT_CONFIG","outputFormat","failOnSeverity","maxWarnings","include","exclude","SeveritySchema","z","enum","OutputFormatSchema","RuleDefinitionSchema","union","literal","object","severity","options","record","string","unknown","optional","CacheOptionsSchema","boolean","number","ParserOptionsSchema","project","tsconfigRootDir","sourceType","ecmaVersion","BaseAnalyzerConfigSchema","extends","array","default","maxWorkers","concurrency","cache","cacheLocation","outputPath","ignorePatterns","rules","overrides","files","parserOptions","ProfileConfigSchema","lazy","partial","AnalyzerConfigSchema","extend","profiles","transform","data","undefined","MODULE_NAME","SEARCH_PLACES","jitiLoader","filepath","currentFile","fileURLToPath","createJiti","alias","path","basename","startsWith","URL","import","then","mod","jsonLoader","_filepath","content","JSON","parse","replace","findAndLoadConfig","cwd","process","time","debug","explorer","lilconfig","searchPlaces","loaders","noExt","result","search","timeEnd","contentHash","fs","readFileSync","crypto","createHash","update","digest","hashTime","substring","toFixed","discoveryTime","config","isEmpty","createDefaultContext","existsSync","accessSync","p","mode","dirname","resolve","isAbsolute","MESSAGES","NEGATIVE_MAX_WARNINGS","val","code","message","suggestion","WORKERS_BELOW_MINIMUM","NEGATIVE_CACHE_TTL","WORKERS_EXCESSIVE","workers","limit","CACHE_TTL_ZERO","INVALID_GLOB_PATTERN","pattern","error","EMPTY_INCLUDE","EMPTY_EXCLUDE","DUPLICATE_PATTERNS","field","patterns","map","join","EMPTY_GLOB_PATTERN","TSCONFIG_ROOT_NOT_FOUND","TSCONFIG_PROJECT_NOT_FOUND","OUTPUT_PATH_TRAVERSAL","OUTPUT_PATH_SYSTEM_DIR","OUTPUT_PATH_NOT_FOUND","dir","OUTPUT_PATH_NOT_WRITABLE","CACHE_IN_NODE_MODULES","CACHE_PARENT_NOT_FOUND","INVALID_RULE_SEVERITY","ruleName","NO_RULES_CONFIGURED","EMPTY_RULE_NAME","PROFILE_CIRCULAR_INHERITANCE","chain","PROFILE_EMPTY","EXTENDS_NOT_FOUND","preset","DEPRECATED_CACHE_LOCATION","DEPRECATED_CONCURRENCY","validateConfigBlock","block","context","basePath","issues","workerLimit","push","validateCrossFields","blockIssues","validateExtendsChain","extendsList","Array","isArray","i","trim","isLocal","nodePath","isPluginSpecifier","includes","anchorFile","createRequire","issuePath","n","s","l","validateGlobPatterns","forEach","index","GLOB_RULES","test","endsWith","match","minimatch","err","duplicates","filter","item","indexOf","Set","t","c","validatePaths","resolveFromCwd","targetPath","PATH_RULES","some","constants","W_OK","isInNodeModules","isStandardCache","cacheDir","resolvedProject","resolvedTsconfigRootDir","SEVERITY_LEVELS","info","low","warning","warn","moderate","high","critical","VALID_SEVERITIES","Object","keys","VALID_RULE_SEVERITIES","validateRules","hasExtends","ruleEntries","entries","ruleConfig","validateDeprecatedFields","rawConfig","buildLocationMap","fileContent","filePath","sourceFile","ASTUtils","generateLocationMap","resolveLocationMap","astCache","versionedKey","CACHE_VERSION","cachedEntry","get","ast","locationMap","set","enrichIssueLocations","hash","issue","file","line","column","BUILTIN_PRESETS","attachFileLocations","buildValidationResult","finalConfig","seen","unique","key","stringify","has","add","sort","a","b","valid","report","validateBlock","schemaIssues","validated","success","safeParse","allIssues","check","name","run","validateConfiguration","profile","baseOptions","availableProfiles","profileConfig","available","presetHint","merged","defu","resolveConfig","loaded","cachedResult","tryLoadFromCache","resolutionTime","runValidation","configs","hashInput","PACKAGE_VERSION","computeHash","asts","ConfigExistsError","Error","TEMPLATE","initConfig","existing","force","alreadyExists","writeFile","validateConfig","String","defineConfig","DEFAULT_CAPABILITIES","typeCheckingEnabled","templateASTEnabled","cssASTEnabled","loadPlugins","plugins","configDir","registry","capabilities","_require","pluginErrors","pluginRef","resolvedPath","module","rawExport","pluginList","registeredCount","plugin","value","handler","handle","Function","manifest","rangeError","currentVersion","range","pluginName","pluginVersion","trimmed","current","parseVersion","expanded","base","parsed","slice","constraint","split","Boolean","op","required","diff","engineVersionRange","version","req","label","register","e","v","Number"],"mappings":"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","file":"index.cjs","sourcesContent":["import t from 'node:os';\nexport const getDefaultMaxWorkers = ()=>Math.max(1, Math.min(4, t.cpus().length - 1));\nexport const DEFAULT_CACHE_OPTIONS = {\n enabled: !0,\n location: 'node_modules/.cache/ngcompass',\n strategy: 'local',\n ttl: 86400000\n};\nexport const DEFAULT_CONFIG = {\n outputFormat: 'text',\n failOnSeverity: 'error',\n maxWarnings: 10,\n include: [\n 'src/**/*.ts'\n ],\n exclude: [\n 'node_modules/**',\n 'dist/**',\n '**/*.spec.ts',\n '**/*.test.ts'\n ]\n};\n","import { z as e } from 'zod';\nimport { DEFAULT_CONFIG as o, DEFAULT_CACHE_OPTIONS as n, getDefaultMaxWorkers as r } from './defaults.js';\nlet SeveritySchema = e.enum([\n 'warn',\n 'error'\n]), OutputFormatSchema = e.enum([\n 'json',\n 'text',\n 'sarif',\n 'html'\n]), RuleDefinitionSchema = e.union([\n SeveritySchema,\n e.literal('off'),\n e.object({\n severity: e.union([\n SeveritySchema,\n e.literal('off')\n ]),\n options: e.record(e.string(), e.unknown()).optional()\n })\n]), CacheOptionsSchema = e.object({\n enabled: e.boolean().optional(),\n location: e.string().optional(),\n strategy: e.enum([\n 'memory',\n 'local'\n ]).optional(),\n ttl: e.number().optional()\n}), ParserOptionsSchema = e.object({\n project: e.string().optional(),\n tsconfigRootDir: e.string().optional(),\n sourceType: e.enum([\n 'module',\n 'commonjs'\n ]).optional(),\n ecmaVersion: e.number().optional()\n}), BaseAnalyzerConfigSchema = e.object({\n extends: e.union([\n e.string(),\n e.array(e.string())\n ]).optional(),\n include: e.array(e.string()).default([\n ...o.include\n ]),\n exclude: e.array(e.string()).default([\n ...o.exclude\n ]),\n maxWorkers: e.number().optional(),\n concurrency: e.number().optional(),\n cache: e.union([\n e.boolean(),\n CacheOptionsSchema\n ]).optional(),\n cacheLocation: e.string().optional(),\n outputFormat: OutputFormatSchema.default(o.outputFormat),\n outputPath: e.string().optional(),\n failOnSeverity: SeveritySchema.default(o.failOnSeverity),\n maxWarnings: e.number().default(o.maxWarnings),\n ignorePatterns: e.array(e.string()).optional(),\n rules: e.record(e.string(), RuleDefinitionSchema).optional(),\n overrides: e.array(e.object({\n files: e.union([\n e.string(),\n e.array(e.string())\n ]),\n rules: e.record(e.string(), RuleDefinitionSchema).optional()\n })).optional(),\n parserOptions: ParserOptionsSchema.optional()\n});\nexport const ProfileConfigSchema = e.lazy(()=>BaseAnalyzerConfigSchema.partial());\nexport const AnalyzerConfigSchema = BaseAnalyzerConfigSchema.extend({\n profiles: e.record(e.string(), ProfileConfigSchema).optional()\n}).transform((e)=>{\n let o, t = e.maxWorkers ?? e.concurrency ?? r();\n if (!1 === e.cache) o = {\n ...n,\n enabled: !1\n };\n else if (!0 === e.cache || void 0 === e.cache) {\n let r = e.cacheLocation ?? n.location;\n o = {\n ...n,\n location: r\n };\n } else o = {\n ...n,\n ...e.cache\n };\n return {\n ...e,\n maxWorkers: t,\n cache: o,\n rules: e.rules ?? {},\n overrides: e.overrides ?? [],\n ignorePatterns: e.ignorePatterns ?? []\n };\n});\n","import { lilconfig as o } from 'lilconfig';\nimport { createJiti as e } from 'jiti';\nimport i from 'node:fs';\nimport t from 'node:crypto';\nimport r from 'node:path';\nimport { fileURLToPath as n } from 'node:url';\nimport { debug as s, time as c, timeEnd as a } from '@ngcompass/common';\nlet MODULE_NAME = 'ngcompass', SEARCH_PLACES = [\n `${MODULE_NAME}.config.ts`,\n `${MODULE_NAME}.config.js`,\n `${MODULE_NAME}.config.mjs`,\n `${MODULE_NAME}.config.cjs`,\n `${MODULE_NAME}.config.json`,\n `.${MODULE_NAME}rc`,\n `.${MODULE_NAME}rc.json`,\n 'package.json'\n], jitiLoader = (o)=>{\n let i = n(import.meta.url);\n return e(o, {\n alias: {\n '@ngcompass/config': r.basename(i).startsWith('index.') ? i : n(new URL('../index.ts', import.meta.url))\n }\n }).import(o).then((o)=>o && 'object' == typeof o && 'default' in o ? o.default ?? o : o);\n}, jsonLoader = (o, e)=>JSON.parse(e.replace(/^\\uFEFF/, ''));\nexport const findAndLoadConfig = async (e = process.cwd())=>{\n c('config-discovery'), s('discovery', `Searching for config in: ${e}`);\n let r = o(MODULE_NAME, {\n searchPlaces: SEARCH_PLACES,\n loaders: {\n '.ts': jitiLoader,\n '.js': jitiLoader,\n '.mjs': jitiLoader,\n '.cjs': jitiLoader,\n '.json': jsonLoader,\n noExt: jsonLoader\n }\n }), n = await r.search(e);\n if (!n) return s('discovery', 'No config file found'), a('config-discovery'), null;\n s('discovery', `Found config: ${n.filepath}`);\n let f = '', d = '';\n c('content-hash');\n try {\n f = i.readFileSync(n.filepath, 'utf-8'), d = t.createHash('sha1').update(f).digest('hex');\n let o = a('content-hash');\n s('discovery', `Content hash: ${d.substring(0, 8)}... (${o.toFixed(1)}ms)`);\n } catch {}\n let m = a('config-discovery');\n return s('discovery', `Discovery complete: ${m.toFixed(1)}ms`), {\n config: n.config,\n filepath: n.filepath,\n content: f,\n contentHash: d,\n isEmpty: n.isEmpty\n };\n};\n","import * as e from \"node:fs\";\nimport * as o from \"node:path\";\nimport { cpus as s } from \"node:os\";\nimport r from \"node:process\";\nexport function createDefaultContext(t) {\n return {\n cwd: r.cwd(),\n fs: {\n existsSync: e.existsSync,\n accessSync: (o, s)=>e.accessSync(o, s)\n },\n os: {\n cpus: s\n },\n path: {\n dirname: o.dirname,\n resolve: o.resolve,\n isAbsolute: o.isAbsolute\n },\n ...t\n };\n}\n","export const MESSAGES = {\n NEGATIVE_MAX_WARNINGS: (e)=>({\n code: \"negative-max-warnings\",\n message: `Value for 'maxWarnings' must be non-negative. Received: ${e}.`,\n suggestion: \"Set 'maxWarnings' to 0 or higher, or remove it to use default (10).\",\n severity: \"error\"\n }),\n WORKERS_BELOW_MINIMUM: ()=>({\n code: \"workers-below-minimum\",\n message: \"Value for 'maxWorkers' must be at least 1.\",\n suggestion: \"Set to 1 or higher, or remove to use default (CPU count - 1).\",\n severity: \"error\"\n }),\n NEGATIVE_CACHE_TTL: (e)=>({\n code: \"negative-cache-ttl\",\n message: `Cache TTL must be non-negative. Received: ${e}ms.`,\n suggestion: \"Set to 0 (default TTL) or higher. Example: 86400000 for 24 hours.\",\n severity: \"error\"\n }),\n WORKERS_EXCESSIVE: (e, t)=>({\n code: \"warn-workers-excessive\",\n message: `Worker count (${e}) exceeds CPU count (${t}). May cause context switching overhead.`,\n suggestion: `Reduce to ${t} or lower for optimal performance.`,\n severity: \"warning\"\n }),\n CACHE_TTL_ZERO: ()=>({\n code: \"warn-cache-ttl-zero\",\n message: \"Cache TTL is set to 0. Using driver default TTL (typically 24 hours).\",\n suggestion: \"Set explicit TTL if you need different cache expiration behavior.\",\n severity: \"warning\"\n }),\n INVALID_GLOB_PATTERN: (e, t)=>({\n code: \"invalid-glob-pattern\",\n message: `Glob pattern \"${e}\" is invalid. Error: ${t}.`,\n suggestion: \"Check pattern syntax. Valid examples: 'src/**/*.ts', '**/*.{ts,html}'.\",\n severity: \"error\"\n }),\n EMPTY_INCLUDE: ()=>({\n code: \"empty-include\",\n message: \"No include patterns defined. Analysis will skip all files.\",\n suggestion: \"Add patterns like ['src/**/*.ts', 'src/**/*.html'] to enable analysis.\",\n severity: \"error\"\n }),\n EMPTY_EXCLUDE: ()=>({\n code: \"warn-empty-exclude\",\n message: \"No exclude patterns defined. Performance may degrade.\",\n suggestion: \"Add common exclusions: ['node_modules/**', 'dist/**', '**/*.spec.ts'].\",\n severity: \"warning\"\n }),\n DUPLICATE_PATTERNS: (e, t)=>({\n code: \"warn-duplicate-patterns\",\n message: `Duplicate patterns found in \"${e}\": ${t.map((e)=>`\"${e}\"`).join(\", \")}.`,\n suggestion: \"Remove duplicate entries to simplify configuration.\",\n severity: \"warning\"\n }),\n EMPTY_GLOB_PATTERN: (e)=>({\n code: \"empty-glob-pattern\",\n message: `Empty string detected in \"${e}\" patterns.`,\n suggestion: \"Remove empty strings from the pattern array.\",\n severity: \"error\"\n }),\n TSCONFIG_ROOT_NOT_FOUND: (e)=>({\n code: \"tsconfig-root-not-found\",\n message: `TSConfig root directory not found: \"${e}\".`,\n suggestion: \"Verify the directory exists and the path is correct relative to the config file.\",\n severity: \"error\"\n }),\n TSCONFIG_PROJECT_NOT_FOUND: (e)=>({\n code: \"tsconfig-project-not-found\",\n message: `TSConfig file not found: \"${e}\".`,\n suggestion: \"Verify the file exists and the path is relative to 'tsconfigRootDir' or config location.\",\n severity: \"error\"\n }),\n OUTPUT_PATH_TRAVERSAL: (e)=>({\n code: \"output-path-traversal\",\n message: `Output path contains unsafe traversal (..): \"${e}\".`,\n suggestion: \"Use absolute paths or paths without '..' to prevent security issues.\",\n severity: \"error\"\n }),\n OUTPUT_PATH_SYSTEM_DIR: (e)=>({\n code: \"output-path-system-dir\",\n message: `Output path points to a system directory: \"${e}\".`,\n suggestion: \"Choose a safe output location within your project directory.\",\n severity: \"error\"\n }),\n OUTPUT_PATH_NOT_FOUND: (e)=>({\n code: \"output-path-not-found\",\n message: `Output directory does not exist: \"${e}\".`,\n suggestion: \"Create the directory or update 'outputPath' to an existing location.\",\n severity: \"error\"\n }),\n OUTPUT_PATH_NOT_WRITABLE: (e)=>({\n code: \"output-path-not-writable\",\n message: `Output directory is not writable: \"${e}\".`,\n suggestion: \"Check directory permissions or choose a different output location.\",\n severity: \"error\"\n }),\n CACHE_IN_NODE_MODULES: (e)=>({\n code: \"cache-in-node-modules\",\n message: `Cache location inside 'node_modules' is unsafe: \"${e}\". node_modules can be deleted, causing cache loss.`,\n suggestion: \"Use a different directory like '.cache' or 'node_modules/.cache/ngcompass'.\",\n severity: \"error\"\n }),\n CACHE_PARENT_NOT_FOUND: (e)=>({\n code: \"warn-cache-parent-not-found\",\n message: `Cache parent directory missing: \"${e}\". It will be created automatically.`,\n suggestion: \"No action needed. Directory will be created on first cache write.\",\n severity: \"warning\"\n }),\n INVALID_RULE_SEVERITY: (e, t)=>({\n code: \"invalid-rule-severity\",\n message: `Rule \"${e}\" has invalid severity: \"${t}\".`,\n suggestion: \"Use valid severities: 'off', 'info', 'low', 'moderate', 'high', or 'critical'.\",\n severity: \"error\"\n }),\n NO_RULES_CONFIGURED: ()=>({\n code: \"warn-no-rules-configured\",\n message: \"No rules configured. Analysis effectively skips checks.\",\n suggestion: \"Add rules to enable analysis, or extend from a preset like 'recommended'.\",\n severity: \"warning\"\n }),\n EMPTY_RULE_NAME: ()=>({\n code: \"empty-rule-name\",\n message: \"Empty rule name detected. Rule keys must be non-empty strings.\",\n suggestion: \"Remove empty keys from 'rules' configuration.\",\n severity: \"error\"\n }),\n PROFILE_CIRCULAR_INHERITANCE: (e)=>({\n code: \"profile-circular-inheritance\",\n message: `Circular profile inheritance detected: ${e.join(\" → \")}.`,\n suggestion: \"Break the circular dependency by removing one 'extends' reference.\",\n severity: \"error\"\n }),\n PROFILE_EMPTY: ()=>({\n code: \"warn-profile-empty\",\n message: \"Profiles section is defined but empty. Consider removing it.\",\n suggestion: \"Remove 'profiles: {}' or add at least one profile like 'dev' or 'ci'.\",\n severity: \"warning\"\n }),\n EXTENDS_NOT_FOUND: (e)=>({\n code: \"extends-not-found\",\n message: `Cannot resolve preset \"${e}\". Make sure the package is installed.`,\n suggestion: `Run: npm install --save-dev ${e}`,\n severity: \"error\"\n }),\n DEPRECATED_CACHE_LOCATION: ()=>({\n code: \"warn-deprecated-cache-location\",\n message: \"'cacheLocation' is deprecated. Use 'cache.location' instead.\",\n suggestion: \"Replace 'cacheLocation: \\\"...\\\"' with 'cache: { location: \\\"...\\\" }'.\",\n severity: \"warning\"\n }),\n DEPRECATED_CONCURRENCY: ()=>({\n code: \"warn-deprecated-concurrency\",\n message: \"'concurrency' is deprecated. Use 'maxWorkers' instead.\",\n suggestion: \"Replace 'concurrency: N' with 'maxWorkers: N'.\",\n severity: \"warning\"\n })\n};\n","import { MESSAGES as e } from \"../messages.js\";\nexport function validateConfigBlock(o, r, t = []) {\n let a = [];\n if (void 0 !== o.maxWorkers) {\n let s = 2 * r.os.cpus().length;\n o.maxWorkers < 1 ? a.push({\n ...e.WORKERS_BELOW_MINIMUM(),\n path: [\n ...t,\n \"maxWorkers\"\n ]\n }) : o.maxWorkers > s && a.push({\n ...e.WORKERS_EXCESSIVE(o.maxWorkers, s),\n path: [\n ...t,\n \"maxWorkers\"\n ]\n });\n }\n if (o.cache && \"object\" == typeof o.cache && void 0 !== o.cache.ttl) {\n let { ttl: r } = o.cache, s = [\n ...t,\n \"cache\",\n \"ttl\"\n ];\n r < 0 && a.push({\n ...e.NEGATIVE_CACHE_TTL(r),\n path: s\n });\n }\n return {\n issues: a\n };\n}\n","import { MESSAGES as s } from \"../messages.js\";\nimport { validateConfigBlock as e } from \"./base.js\";\nexport function validateCrossFields(i, r, t = []) {\n let a = [];\n if (void 0 !== i.maxWarnings) {\n let { maxWarnings: e } = i;\n e < 0 && a.push({\n ...s.NEGATIVE_MAX_WARNINGS(e),\n path: [\n ...t,\n \"maxWarnings\"\n ]\n });\n }\n let { issues: o } = e(i, r, t);\n return a.push(...o), {\n issues: a\n };\n}\n","import { createRequire as e } from \"node:module\";\nimport t from \"node:path\";\nimport r from \"node:process\";\nimport { MESSAGES as n } from \"../messages.js\";\nexport function validateExtendsChain(s, o = [], i = r.cwd()) {\n let l = [];\n if (!s.extends) return {\n issues: l\n };\n let u = Array.isArray(s.extends) ? s.extends : [\n s.extends\n ], d = Array.isArray(s.extends);\n for(let r = 0; r < u.length; r++){\n let s = u[r];\n if (!(\"string\" != typeof s || \"\" === s.trim() || function(e) {\n let r = e.startsWith(\".\"), n = t.isAbsolute(e), s = e.includes(\":\");\n return r || n || s;\n }(s)) && null === function(r, n) {\n try {\n let s = t.join(n, \"__resolve_anchor__.cjs\");\n return e(s).resolve(r);\n } catch {\n return null;\n }\n }(s, i)) {\n let e = [\n ...o,\n \"extends\"\n ];\n d && e.push(r), l.push({\n ...n.EXTENDS_NOT_FOUND(s),\n path: e\n });\n }\n }\n return {\n issues: l\n };\n}\n","import { minimatch as e } from \"minimatch\";\nimport { MESSAGES as t } from \"../messages.js\";\nlet n = /\\/\\/\\//, s = /\\{/g, l = /\\}/g;\nexport function validateGlobPatterns(r, i = []) {\n let h = [];\n for (let u of [\n \"include\",\n \"exclude\",\n \"ignorePatterns\"\n ]){\n let a = r[u];\n if (!Array.isArray(a)) continue;\n a.forEach((r, a)=>{\n h.push(...function(r, i, h, u) {\n let a = [], c = [\n ...u,\n r,\n h\n ];\n if (!i || \"\" === i.trim()) return a.push({\n ...t.EMPTY_GLOB_PATTERN(r),\n path: c\n }), a;\n if (i.includes(\"[\") && !i.includes(\"]\")) return a.push({\n ...t.INVALID_GLOB_PATTERN(i, \"unclosed bracket\"),\n path: c\n }), a;\n if (n.test(i) || i.startsWith(\"///\")) return a.push({\n ...t.INVALID_GLOB_PATTERN(i, \"invalid path pattern with multiple slashes\"),\n path: c\n }), a;\n (i.endsWith(\"\\\\\") || i.endsWith(\"/\")) && a.push({\n ...t.INVALID_GLOB_PATTERN(i, \"trailing slash not allowed\"),\n path: c\n }), (i.match(s) || []).length !== (i.match(l) || []).length && a.push({\n ...t.INVALID_GLOB_PATTERN(i, \"unmatched braces\"),\n path: c\n });\n try {\n e(\"sample.ts\", i);\n } catch (e) {\n a.push({\n ...t.INVALID_GLOB_PATTERN(i, e.message),\n path: c\n });\n }\n return a;\n }(u, r, a, i));\n });\n let c = a.filter((e, t)=>a.indexOf(e) !== t);\n c.length > 0 && h.push({\n ...t.DUPLICATE_PATTERNS(u, [\n ...new Set(c)\n ]),\n path: [\n ...i,\n u\n ]\n });\n }\n return r.include && 0 !== r.include.length || h.push({\n ...t.EMPTY_INCLUDE(),\n path: [\n ...i,\n \"include\"\n ]\n }), r.exclude && 0 !== r.exclude.length || h.push({\n ...t.EMPTY_EXCLUDE(),\n path: [\n ...i,\n \"exclude\"\n ]\n }), {\n issues: h\n };\n}\n","import * as s from \"node:fs\";\nimport { MESSAGES as e } from \"../messages.js\";\nlet t = [\n \"/etc/\",\n \"\\\\etc\\\\\",\n \"/var/\",\n \"\\\\var\\\\\"\n], c = \"node_modules\";\nexport function validatePaths(a, o, p = []) {\n let i = [], n = (s)=>o.path.isAbsolute(s) ? s : o.path.resolve(o.cwd ?? process.cwd(), s);\n if (a.outputPath) {\n let { outputPath: c } = a, h = [\n ...p,\n \"outputPath\"\n ];\n c.includes(\"..\") && i.push({\n ...e.OUTPUT_PATH_TRAVERSAL(c),\n path: h\n }), t.some((s)=>c.includes(s)) && i.push({\n ...e.OUTPUT_PATH_SYSTEM_DIR(c),\n path: h\n });\n let r = o.path.dirname(n(c));\n if (o.fs.existsSync(r)) try {\n o.fs.accessSync(r, s.constants.W_OK);\n } catch {\n i.push({\n ...e.OUTPUT_PATH_NOT_WRITABLE(r),\n path: h\n });\n }\n else i.push({\n ...e.OUTPUT_PATH_NOT_FOUND(r),\n path: h\n });\n }\n if (a.cache && \"object\" == typeof a.cache && a.cache.enabled) {\n let { location: s } = a.cache;\n if (s) {\n let t = [\n ...p,\n \"cache\",\n \"location\"\n ], a = s.includes(c), h = s.includes(`${c}/.cache`);\n a && !h && i.push({\n ...e.CACHE_IN_NODE_MODULES(s),\n path: t\n });\n let r = o.path.dirname(n(s));\n o.fs.existsSync(r) || i.push({\n ...e.CACHE_PARENT_NOT_FOUND(r),\n path: t\n });\n }\n }\n if (a.parserOptions) {\n let { project: s, tsconfigRootDir: t } = a.parserOptions, c = s ? n(s) : void 0, h = t ? n(t) : void 0;\n c && !o.fs.existsSync(c) && i.push({\n ...e.TSCONFIG_PROJECT_NOT_FOUND(s),\n path: [\n ...p,\n \"parserOptions\",\n \"project\"\n ]\n }), h && !o.fs.existsSync(h) && i.push({\n ...e.TSCONFIG_ROOT_NOT_FOUND(t),\n path: [\n ...p,\n \"parserOptions\",\n \"tsconfigRootDir\"\n ]\n });\n }\n return {\n issues: i\n };\n}\n","export const SEVERITY_LEVELS = {\n info: 0,\n low: 1,\n warning: 2,\n warn: 2,\n moderate: 2,\n high: 3,\n error: 4,\n critical: 4\n};\nexport const VALID_SEVERITIES = Object.keys(SEVERITY_LEVELS);\nexport const VALID_RULE_SEVERITIES = [\n ...VALID_SEVERITIES,\n \"off\"\n];\n","import { VALID_RULE_SEVERITIES as e } from \"../constants.js\";\nimport { MESSAGES as t } from \"../messages.js\";\nexport function validateRules(s, r = []) {\n let n = [], l = Array.isArray(s.extends) ? s.extends.length > 0 : !!s.extends && s.extends.length > 0, u = Object.entries(s.rules || {});\n for (let [s, i] of (u.length > 0 || l || n.push({\n ...t.NO_RULES_CONFIGURED(),\n path: [\n ...r,\n \"rules\"\n ]\n }), u)){\n if (!s || \"\" === s.trim()) {\n n.push({\n ...t.EMPTY_RULE_NAME(),\n path: [\n ...r,\n \"rules\"\n ]\n });\n continue;\n }\n if (\"object\" == typeof i && null !== i) {\n let { severity: l } = i;\n l && !e.includes(l) && n.push({\n ...t.INVALID_RULE_SEVERITY(s, l),\n path: [\n ...r,\n \"rules\",\n s,\n \"severity\"\n ]\n });\n }\n }\n return {\n issues: n\n };\n}\n","import { MESSAGES as c } from \"../messages.js\";\nexport function validateDeprecatedFields(e, o = []) {\n let n = [];\n return e && \"object\" == typeof e && (\"cacheLocation\" in e && void 0 !== e.cacheLocation && n.push({\n ...c.DEPRECATED_CACHE_LOCATION(),\n path: [\n ...o,\n \"cacheLocation\"\n ]\n }), \"concurrency\" in e && void 0 !== e.concurrency && n.push({\n ...c.DEPRECATED_CONCURRENCY(),\n path: [\n ...o,\n \"concurrency\"\n ]\n })), {\n issues: n\n };\n}\n","import { ASTUtils as t, CACHE_VERSION as e } from \"@ngcompass/common\";\nimport n from \"node:crypto\";\nfunction buildLocationMap(e, n) {\n let o = t.parse(e, n);\n return t.generateLocationMap(o);\n}\nasync function resolveLocationMap(t, n, o, a) {\n if (!o) return buildLocationMap(t, n);\n let i = `v${e}:${a}`, r = await o.get(i);\n if (r) return r.ast;\n let c = buildLocationMap(t, n);\n return await o.set(i, {\n filePath: n,\n ast: c\n }), c;\n}\nexport async function enrichIssueLocations(t, e, o, a, i) {\n if (0 === t.length) return;\n let r = i ?? n.createHash(\"sha1\").update(e).digest(\"hex\"), c = await resolveLocationMap(e, o, a, r);\n for (let e of t){\n if (e.file || (e.file = o), !((!e.line || 1 === e.line) && e.path)) continue;\n let t = c[e.path.join(\".\")];\n t && (e.line = t.line, e.column = t.column);\n }\n}\n","import { defu as e } from \"defu\";\nimport { AnalyzerConfigSchema as s } from \"../schemas/schema.js\";\nimport { createDefaultContext as r } from \"./context.js\";\nimport { validateCrossFields as i, validateExtendsChain as t, validateGlobPatterns as a, validatePaths as o, validateRules as n, validateDeprecatedFields as l } from \"./checks/index.js\";\nimport { enrichIssueLocations as c } from \"./enricher.js\";\nlet BUILTIN_PRESETS = new Set([\n \"recommended\",\n \"strict\",\n \"performance\",\n \"reactivity\",\n \"all\"\n]);\nasync function attachFileLocations(e, s, r, i, t) {\n if (r) return void await c(e, r, s, i, t);\n for (let r of e)r.file || (r.file = s);\n}\nfunction buildValidationResult(e, s) {\n let r, i = [\n ...(r = new Set(), e.filter((e)=>{\n let s = `${e.code}:${e.message}:${JSON.stringify(e.path)}`;\n return !r.has(s) && (r.add(s), !0);\n }))\n ].sort((e, s)=>e.severity === s.severity ? 0 : \"error\" === e.severity ? -1 : 1), t = !i.some((e)=>\"error\" === e.severity);\n return {\n config: t ? s : void 0,\n report: {\n valid: t,\n issues: i\n }\n };\n}\nasync function validateBlock(e) {\n let r, { config: c, context: u, basePath: f = [], filePath: d, fileContent: p, astCache: m, contentHash: v } = e, { issues: h, validated: g, success: y } = (r = s.safeParse(c)).success ? {\n issues: [],\n validated: r.data,\n success: !0\n } : {\n issues: r.error.issues.map((e)=>({\n code: e.code.replace(/_/g, \"-\"),\n message: e.message,\n path: [\n ...f,\n ...e.path\n ],\n severity: \"error\",\n file: d\n })),\n validated: c,\n success: !1\n }, $ = [\n ...h,\n ...function(e, s, r, c, u) {\n let f = [];\n for (let d of [\n {\n name: \"cross-fields\",\n run: ()=>i(e, r, c).issues\n },\n {\n name: \"glob-patterns\",\n run: ()=>a(e, c).issues\n },\n {\n name: \"paths\",\n run: ()=>o(e, r, c).issues\n },\n {\n name: \"rules\",\n run: ()=>n(e, c).issues\n },\n {\n name: \"extends-chain\",\n run: ()=>t(e, c, r.cwd).issues\n },\n {\n name: \"deprecated\",\n run: ()=>l(s, c).issues\n }\n ])try {\n f.push(...d.run());\n } catch (e) {\n f.push({\n code: \"check-failed\",\n message: `Check \"${d.name}\" encountered an unexpected error: ${e.message}`,\n path: c,\n severity: \"error\",\n file: u\n });\n }\n return f;\n }(g, c, u, f, d)\n ];\n return d && await attachFileLocations($, d, p, m, v), {\n issues: $,\n validated: y ? g : void 0\n };\n}\nexport async function validateConfiguration(s, i = r(), t, a, o, n) {\n var l;\n let c = {\n context: i,\n filePath: t,\n fileContent: a,\n astCache: o,\n contentHash: n\n }, u = null === s || \"object\" != typeof s ? {} : s.profiles ?? {};\n if (i.profile) {\n let r = u[i.profile];\n if (!r) {\n let e, s;\n return l = i.profile, e = Object.keys(u).join(\", \"), s = BUILTIN_PRESETS.has(l.replace(/^ngcompass:/, \"\")) ? ` \"${l}\" is a built-in preset, not a config profile. Use 'extends: \"ngcompass:${l.replace(/^ngcompass:/, \"\")}\"' in your config instead.` : \"\", {\n config: void 0,\n report: {\n valid: !1,\n issues: [\n {\n code: \"error-profile-not-found\",\n message: `Profile \"${l}\" not found. Available: [${e}]${s}`,\n path: [\n \"profiles\",\n l\n ],\n severity: \"error\",\n file: t\n }\n ]\n }\n };\n }\n let a = e(r, s), { issues: o, validated: n } = await validateBlock({\n ...c,\n config: a,\n basePath: [\n \"profiles\",\n i.profile\n ]\n });\n return buildValidationResult(o, n);\n }\n let { issues: f, validated: d } = await validateBlock({\n ...c,\n config: s\n });\n return buildValidationResult(f, d);\n}\n","import { findAndLoadConfig as o } from './discovery.js';\nimport { validateConfiguration as t } from '../health/index.js';\nimport { createDefaultContext as e } from '../health/context.js';\nimport { PACKAGE_VERSION as n, CACHE_VERSION as i, debug as r, time as a, timeEnd as s } from '@ngcompass/common';\nimport l from 'node:process';\nexport const resolveConfig = async (t)=>{\n a('config-resolution');\n let { cwd: e = l.cwd(), profile: n, cache: i } = t;\n r('loader', `Starting config resolution (cwd: ${e}, profile: ${n || 'none'})`);\n let c = await o(e), { hash: d, cachedResult: u } = await tryLoadFromCache(c, n, i);\n if (u) {\n let o = s('config-resolution');\n return r('loader', `Cache HIT - returning cached result (${o.toFixed(1)}ms)`), u;\n }\n r('loader', 'Cache MISS - running validation');\n let f = await runValidation(c, n, i);\n r('loader', `Validation complete: ${f.report.valid ? 'valid' : `invalid (${f.report.issues.length} issues)`}`), i && d && (await i.configs.set(d, f), r('loader', `Cached validation result: key=${d.substring(0, 8)}...`));\n let m = s('config-resolution');\n return r('loader', `Config resolution complete: ${m.toFixed(1)}ms`), f;\n};\nasync function tryLoadFromCache(o, t, e) {\n if (!e) return {};\n let a = [\n o?.contentHash ?? '',\n t ?? '',\n n,\n i\n ].join('::'), s = e.computeHash(a);\n r('loader', `Cache lookup: key=${s.substring(0, 8)}...`);\n let l = await e.configs.get(s);\n return {\n hash: s,\n cachedResult: l\n };\n}\nasync function runValidation(o, n, i) {\n return t(o?.config ?? {}, e({\n profile: n\n }), o?.filepath, o?.content, i?.asts, o?.contentHash);\n}\n","import e from 'node:fs/promises';\nimport s from 'node:path';\nimport { findAndLoadConfig as r } from '../loaders/discovery.js';\nexport class ConfigExistsError extends Error {\n constructor(e){\n super(`Configuration file already exists at: ${e}`), this.name = 'ConfigExistsError';\n }\n}\nlet TEMPLATE = `import { defineConfig } from '@ngcompass/config';\n\nexport default defineConfig({\n extends: 'ngcompass:recommended',\n\n include: [\n 'src/**/*.ts',\n 'src/**/*.html',\n ],\n\n exclude: [\n 'node_modules/**',\n 'dist/**',\n 'build/**',\n 'coverage/**',\n '**/*.d.ts',\n '**/*.spec.ts',\n '**/*.test.ts',\n ],\n\n profiles: {\n ci: {\n outputFormat: 'json',\n maxWarnings: 0,\n },\n },\n});\n`;\nexport async function initConfig(t = {}) {\n let o = t.cwd ?? process.cwd(), i = s.join(o, 'ngcompass.config.ts'), n = await r(o);\n if (n && !t.force) return {\n success: !1,\n filePath: n.filepath,\n alreadyExists: !0\n };\n try {\n return await e.writeFile(i, TEMPLATE, 'utf-8'), {\n success: !0,\n filePath: i\n };\n } catch (e) {\n return {\n success: !1,\n filePath: i\n };\n }\n}\n","import { resolveConfig as r } from '../loaders/loader.js';\nexport async function validateConfig(e = {}) {\n try {\n return await r(e);\n } catch (r) {\n return {\n config: void 0,\n report: {\n valid: !1,\n issues: [\n {\n code: \"error-conf-semantic\",\n message: r instanceof Error ? r.message : String(r),\n path: [],\n severity: \"error\"\n }\n ]\n }\n };\n }\n}\n","export function defineConfig(n) {\n return n;\n}\n","import { createRequire as e } from 'node:module';\nimport { warn as r, debug as n, PACKAGE_VERSION as t } from '@ngcompass/common';\nlet DEFAULT_CAPABILITIES = {\n typeCheckingEnabled: !1,\n templateASTEnabled: !0,\n cssASTEnabled: !0\n};\nexport const loadPlugins = async (l, i, a, o = DEFAULT_CAPABILITIES)=>{\n if (0 === l.length) return;\n n('plugin-loader', `Initializing loader for ${l.length} plugin(s) at ${i}`);\n let u = e(i + '/package.json'), s = [];\n for (let e of l)try {\n let l;\n try {\n l = u.resolve(e);\n } catch {\n l = e;\n }\n let i = await import(l), s = i.default ?? i, f = Array.isArray(s) ? s : [\n s\n ], c = 0;\n for (let l of f){\n if (!function(e) {\n if (!e || 'object' != typeof e) return !1;\n let r = e.handler;\n return 'string' == typeof e.name && e.name.length > 0 && r?.handle instanceof Function;\n }(l)) {\n r('plugin-loader', `Plugin \"${e}\" exported an invalid structure. Skipping.`);\n continue;\n }\n let { manifest: i } = l;\n if (i) {\n let e = function(e, r) {\n let n = function(e, r, n, t) {\n let l = r.trim();\n if (!l || '*' === l) return null;\n let i = parseVersion(e);\n if (!i) return null;\n let a = l.startsWith('^') ? function(e) {\n let r = parseVersion(e);\n return r ? `>=${e} <${r[0] + 1}.0.0` : null;\n }(l.slice(1)) : l;\n if (!a) return null;\n for (let l of a.split(/\\s+/).filter(Boolean)){\n let a = l.match(/^(>=|<=|>|<|=|==)(\\d+\\.\\d+\\.\\d+.*)$/);\n if (!a) continue;\n let o = a[1], u = parseVersion(a[2]);\n if (!u) continue;\n let s = function(e, r) {\n for(let n = 0; n < 3; n++)if (e[n] !== r[n]) return e[n] > r[n] ? 1 : -1;\n return 0;\n }(i, u);\n if (!('>=' === o ? s >= 0 : '<=' === o ? s <= 0 : '>' === o ? s > 0 : '<' === o ? s < 0 : 0 === s)) return `Plugin \"${n}@${t}\" requires engine \"${r}\", found \"${e}\".`;\n }\n return null;\n }(t.replace(/^v/, ''), e.engineVersionRange, e.name, e.version);\n if (n) return n;\n for (let n of [\n {\n key: 'requiresTypeInfo',\n current: r.typeCheckingEnabled,\n label: 'Type Information'\n },\n {\n key: 'requiresTemplateAST',\n current: r.templateASTEnabled,\n label: 'Template AST'\n },\n {\n key: 'requiresCssAST',\n current: r.cssASTEnabled,\n label: 'CSS AST'\n }\n ])if (e.capabilities?.[n.key] && !n.current) return `Plugin \"${e.name}@${e.version}\" requires ${n.label} support, which is currently disabled.`;\n return null;\n }(i, o);\n if (e) throw Error(e);\n n('plugin-loader', `❯ Validated: ${i.name}@${i.version}`);\n } else r('plugin-loader', `Plugin \"${e}\" is missing a manifest. Please update for future compatibility.`);\n a.register(l), c++, n('plugin-loader', `❯ Registered Rule: ${l.name}`);\n }\n n('plugin-loader', `Plugin \"${e}\" processed: ${c} rules active.`);\n } catch (n) {\n let r = n instanceof Error ? n.message : String(n);\n s.push(`- \"${e}\": ${r}`);\n }\n if (s.length > 0) throw Error(`[ngcompass] Plugin Load Failure:\\n${s.join('\\n')}\\nEnsure plugins are installed and satisfy version requirements.`);\n};\nfunction parseVersion(e) {\n let r = e.trim().match(/^v?\\.?(\\d+)\\.(\\d+)\\.(\\d+)(?:[-+].*)?$/);\n return r ? [\n Number(r[1]),\n Number(r[2]),\n Number(r[3])\n ] : null;\n}\n"]}
package/dist/index.d.cts CHANGED
@@ -202,7 +202,8 @@ declare function validateConfigBlock(block: ConfigBlock, context: ValidationCont
202
202
  /**
203
203
  * Calculates the recommended default number of worker threads based on
204
204
  * the host's hardware. It reserves at least one core for the main
205
- * process to ensure system responsiveness during heavy analysis.
205
+ * process and caps the default for system responsiveness during heavy
206
+ * analysis. Users can still opt into more parallelism with `maxWorkers`.
206
207
  *
207
208
  * @returns {number} The suggested number of CPU cores to utilize.
208
209
  */
package/dist/index.d.ts CHANGED
@@ -202,7 +202,8 @@ declare function validateConfigBlock(block: ConfigBlock, context: ValidationCont
202
202
  /**
203
203
  * Calculates the recommended default number of worker threads based on
204
204
  * the host's hardware. It reserves at least one core for the main
205
- * process to ensure system responsiveness during heavy analysis.
205
+ * process and caps the default for system responsiveness during heavy
206
+ * analysis. Users can still opt into more parallelism with `maxWorkers`.
206
207
  *
207
208
  * @returns {number} The suggested number of CPU cores to utilize.
208
209
  */
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import {z as z$1}from'zod';import Ae,{cpus}from'os';import {lilconfig}from'lilconfig';import {createJiti}from'jiti';import*as D from'fs';import D__default from'fs';import be from'crypto';import*as C from'path';import C__default from'path';import {fileURLToPath}from'url';import {time,debug,timeEnd,PACKAGE_VERSION,CACHE_VERSION,warn,ASTUtils}from'@ngcompass/common';import {defu}from'defu';import Ue from'process';import {createRequire}from'module';import {minimatch}from'minimatch';import ot from'fs/promises';var z=()=>Math.max(1,Ae.cpus().length-1),P={enabled:true,location:"node_modules/.cache/ngcompass",strategy:"local",ttl:864e5},S={outputFormat:"text",failOnSeverity:"error",maxWarnings:10,include:["src/**/*.ts"],exclude:["node_modules/**","dist/**","**/*.spec.ts","**/*.test.ts"]};var M=z$1.enum(["warn","error"]),Se=z$1.enum(["json","text","sarif","html"]),K=z$1.union([M,z$1.literal("off"),z$1.object({severity:z$1.union([M,z$1.literal("off")]),options:z$1.record(z$1.string(),z$1.unknown()).optional()})]),Ce=z$1.object({enabled:z$1.boolean().optional(),location:z$1.string().optional(),strategy:z$1.enum(["memory","local"]).optional(),ttl:z$1.number().optional()}),Oe=z$1.object({project:z$1.string().optional(),tsconfigRootDir:z$1.string().optional(),sourceType:z$1.enum(["module","commonjs"]).optional(),ecmaVersion:z$1.number().optional()}),J=z$1.object({extends:z$1.union([z$1.string(),z$1.array(z$1.string())]).optional(),include:z$1.array(z$1.string()).default([...S.include]),exclude:z$1.array(z$1.string()).default([...S.exclude]),maxWorkers:z$1.number().optional(),concurrency:z$1.number().optional(),cache:z$1.union([z$1.boolean(),Ce]).optional(),cacheLocation:z$1.string().optional(),outputFormat:Se.default(S.outputFormat),outputPath:z$1.string().optional(),failOnSeverity:M.default(S.failOnSeverity),maxWarnings:z$1.number().default(S.maxWarnings),ignorePatterns:z$1.array(z$1.string()).optional(),rules:z$1.record(z$1.string(),K).optional(),overrides:z$1.array(z$1.object({files:z$1.union([z$1.string(),z$1.array(z$1.string())]),rules:z$1.record(z$1.string(),K).optional()})).optional(),parserOptions:Oe.optional()}),Ne=z$1.lazy(()=>J.partial()),Z=J.extend({profiles:z$1.record(z$1.string(),Ne).optional()}).transform(e=>{let t,r=e.maxWorkers??e.concurrency??z();if(e.cache===false)t={...P,enabled:false};else if(e.cache===true||e.cache===void 0){let s=e.cacheLocation??P.location;t={...P,location:s};}else t={...P,...e.cache};return {...e,maxWorkers:r,cache:t,rules:e.rules??{},overrides:e.overrides??[],ignorePatterns:e.ignorePatterns??[]}});var T="ngcompass",$e=[`${T}.config.ts`,`${T}.config.js`,`${T}.config.mjs`,`${T}.config.cjs`,`${T}.config.json`,`.${T}rc`,`.${T}rc.json`,"package.json"],w=e=>{let t=fileURLToPath(import.meta.url);return createJiti(e,{alias:{"@ngcompass/config":C__default.basename(t).startsWith("index.")?t:fileURLToPath(new URL("../index.ts",import.meta.url))}}).import(e).then(r=>r&&typeof r=="object"&&"default"in r?r.default??r:r)},te=(e,t)=>JSON.parse(t.replace(/^\uFEFF/,"")),U=async(e=process.cwd())=>{time("config-discovery"),debug("discovery",`Searching for config in: ${e}`);let t=lilconfig(T,{searchPlaces:$e,loaders:{".ts":w,".js":w,".mjs":w,".cjs":w,".json":te,noExt:te}}),r=await t.search(e);if(!r)return debug("discovery","No config file found"),timeEnd("config-discovery"),null;debug("discovery",`Found config: ${r.filepath}`);let s="",i="";time("content-hash");try{s=D__default.readFileSync(r.filepath,"utf-8"),i=be.createHash("sha1").update(s).digest("hex");let n=timeEnd("content-hash");debug("discovery",`Content hash: ${i.substring(0,8)}... (${n.toFixed(1)}ms)`);}catch{}let o=timeEnd("config-discovery");return debug("discovery",`Discovery complete: ${o.toFixed(1)}ms`),{config:r.config,filepath:r.filepath,content:s,contentHash:i,isEmpty:r.isEmpty}};function k(e){return {cwd:Ue.cwd(),fs:{existsSync:D.existsSync,accessSync:(t,r)=>D.accessSync(t,r)},os:{cpus:cpus},path:{dirname:C.dirname,resolve:C.resolve,isAbsolute:C.isAbsolute},...e}}var u={NEGATIVE_MAX_WARNINGS:e=>({code:"negative-max-warnings",message:`Value for 'maxWarnings' must be non-negative. Received: ${e}.`,suggestion:"Set 'maxWarnings' to 0 or higher, or remove it to use default (10).",severity:"error"}),WORKERS_BELOW_MINIMUM:()=>({code:"workers-below-minimum",message:"Value for 'maxWorkers' must be at least 1.",suggestion:"Set to 1 or higher, or remove to use default (CPU count - 1).",severity:"error"}),NEGATIVE_CACHE_TTL:e=>({code:"negative-cache-ttl",message:`Cache TTL must be non-negative. Received: ${e}ms.`,suggestion:"Set to 0 (default TTL) or higher. Example: 86400000 for 24 hours.",severity:"error"}),WORKERS_EXCESSIVE:(e,t)=>({code:"warn-workers-excessive",message:`Worker count (${e}) exceeds CPU count (${t}). May cause context switching overhead.`,suggestion:`Reduce to ${t} or lower for optimal performance.`,severity:"warning"}),CACHE_TTL_ZERO:()=>({code:"warn-cache-ttl-zero",message:"Cache TTL is set to 0. Using driver default TTL (typically 24 hours).",suggestion:"Set explicit TTL if you need different cache expiration behavior.",severity:"warning"}),INVALID_GLOB_PATTERN:(e,t)=>({code:"invalid-glob-pattern",message:`Glob pattern "${e}" is invalid. Error: ${t}.`,suggestion:"Check pattern syntax. Valid examples: 'src/**/*.ts', '**/*.{ts,html}'.",severity:"error"}),EMPTY_INCLUDE:()=>({code:"empty-include",message:"No include patterns defined. Analysis will skip all files.",suggestion:"Add patterns like ['src/**/*.ts', 'src/**/*.html'] to enable analysis.",severity:"error"}),EMPTY_EXCLUDE:()=>({code:"warn-empty-exclude",message:"No exclude patterns defined. Performance may degrade.",suggestion:"Add common exclusions: ['node_modules/**', 'dist/**', '**/*.spec.ts'].",severity:"warning"}),DUPLICATE_PATTERNS:(e,t)=>({code:"warn-duplicate-patterns",message:`Duplicate patterns found in "${e}": ${t.map(r=>`"${r}"`).join(", ")}.`,suggestion:"Remove duplicate entries to simplify configuration.",severity:"warning"}),EMPTY_GLOB_PATTERN:e=>({code:"empty-glob-pattern",message:`Empty string detected in "${e}" patterns.`,suggestion:"Remove empty strings from the pattern array.",severity:"error"}),TSCONFIG_ROOT_NOT_FOUND:e=>({code:"tsconfig-root-not-found",message:`TSConfig root directory not found: "${e}".`,suggestion:"Verify the directory exists and the path is correct relative to the config file.",severity:"error"}),TSCONFIG_PROJECT_NOT_FOUND:e=>({code:"tsconfig-project-not-found",message:`TSConfig file not found: "${e}".`,suggestion:"Verify the file exists and the path is relative to 'tsconfigRootDir' or config location.",severity:"error"}),OUTPUT_PATH_TRAVERSAL:e=>({code:"output-path-traversal",message:`Output path contains unsafe traversal (..): "${e}".`,suggestion:"Use absolute paths or paths without '..' to prevent security issues.",severity:"error"}),OUTPUT_PATH_SYSTEM_DIR:e=>({code:"output-path-system-dir",message:`Output path points to a system directory: "${e}".`,suggestion:"Choose a safe output location within your project directory.",severity:"error"}),OUTPUT_PATH_NOT_FOUND:e=>({code:"output-path-not-found",message:`Output directory does not exist: "${e}".`,suggestion:"Create the directory or update 'outputPath' to an existing location.",severity:"error"}),OUTPUT_PATH_NOT_WRITABLE:e=>({code:"output-path-not-writable",message:`Output directory is not writable: "${e}".`,suggestion:"Check directory permissions or choose a different output location.",severity:"error"}),CACHE_IN_NODE_MODULES:e=>({code:"cache-in-node-modules",message:`Cache location inside 'node_modules' is unsafe: "${e}". node_modules can be deleted, causing cache loss.`,suggestion:"Use a different directory like '.cache' or 'node_modules/.cache/ngcompass'.",severity:"error"}),CACHE_PARENT_NOT_FOUND:e=>({code:"warn-cache-parent-not-found",message:`Cache parent directory missing: "${e}". It will be created automatically.`,suggestion:"No action needed. Directory will be created on first cache write.",severity:"warning"}),INVALID_RULE_SEVERITY:(e,t)=>({code:"invalid-rule-severity",message:`Rule "${e}" has invalid severity: "${t}".`,suggestion:"Use valid severities: 'off', 'info', 'low', 'moderate', 'high', or 'critical'.",severity:"error"}),NO_RULES_CONFIGURED:()=>({code:"warn-no-rules-configured",message:"No rules configured. Analysis effectively skips checks.",suggestion:"Add rules to enable analysis, or extend from a preset like 'recommended'.",severity:"warning"}),EMPTY_RULE_NAME:()=>({code:"empty-rule-name",message:"Empty rule name detected. Rule keys must be non-empty strings.",suggestion:"Remove empty keys from 'rules' configuration.",severity:"error"}),PROFILE_CIRCULAR_INHERITANCE:e=>({code:"profile-circular-inheritance",message:`Circular profile inheritance detected: ${e.join(" \u2192 ")}.`,suggestion:"Break the circular dependency by removing one 'extends' reference.",severity:"error"}),PROFILE_EMPTY:()=>({code:"warn-profile-empty",message:"Profiles section is defined but empty. Consider removing it.",suggestion:"Remove 'profiles: {}' or add at least one profile like 'dev' or 'ci'.",severity:"warning"}),EXTENDS_NOT_FOUND:e=>({code:"extends-not-found",message:`Cannot resolve preset "${e}". Make sure the package is installed.`,suggestion:`Run: npm install --save-dev ${e}`,severity:"error"}),DEPRECATED_CACHE_LOCATION:()=>({code:"warn-deprecated-cache-location",message:"'cacheLocation' is deprecated. Use 'cache.location' instead.",suggestion:`Replace 'cacheLocation: "..."' with 'cache: { location: "..." }'.`,severity:"warning"}),DEPRECATED_CONCURRENCY:()=>({code:"warn-deprecated-concurrency",message:"'concurrency' is deprecated. Use 'maxWorkers' instead.",suggestion:"Replace 'concurrency: N' with 'maxWorkers: N'.",severity:"warning"})};function W(e,t,r=[]){let s=[];if(e.maxWorkers!==void 0){let i=2*t.os.cpus().length;e.maxWorkers<1?s.push({...u.WORKERS_BELOW_MINIMUM(),path:[...r,"maxWorkers"]}):e.maxWorkers>i&&s.push({...u.WORKERS_EXCESSIVE(e.maxWorkers,i),path:[...r,"maxWorkers"]});}if(e.cache&&typeof e.cache=="object"&&e.cache.ttl!==void 0){let{ttl:i}=e.cache,o=[...r,"cache","ttl"];i<0&&s.push({...u.NEGATIVE_CACHE_TTL(i),path:o});}return {issues:s}}function re(e,t,r=[]){let s=[];if(e.maxWarnings!==void 0){let{maxWarnings:o}=e;o<0&&s.push({...u.NEGATIVE_MAX_WARNINGS(o),path:[...r,"maxWarnings"]});}let{issues:i}=W(e,t,r);return s.push(...i),{issues:s}}function se(e,t=[],r=Ue.cwd()){let s=[];if(!e.extends)return {issues:s};let i=Array.isArray(e.extends)?e.extends:[e.extends],o=Array.isArray(e.extends);for(let n=0;n<i.length;n++){let c=i[n];if(!(typeof c!="string"||c.trim()===""||(function(l){let d=l.startsWith("."),y=C__default.isAbsolute(l),E=l.includes(":");return d||y||E})(c))&&(function(l,d){try{let y=C__default.join(d,"__resolve_anchor__.cjs");return createRequire(y).resolve(l)}catch{return null}})(c,r)===null){let l=[...t,"extends"];o&&l.push(n),s.push({...u.EXTENDS_NOT_FOUND(c),path:l});}}return {issues:s}}var je=/\/\/\//,Me=/\{/g,Ve=/\}/g;function ne(e,t=[]){let r=[];for(let s of ["include","exclude","ignorePatterns"]){let i=e[s];if(!Array.isArray(i))continue;i.forEach((n,c)=>{r.push(...(function(l,d,y,E){let f=[],p=[...E,l,y];if(!d||d.trim()==="")return f.push({...u.EMPTY_GLOB_PATTERN(l),path:p}),f;if(d.includes("[")&&!d.includes("]"))return f.push({...u.INVALID_GLOB_PATTERN(d,"unclosed bracket"),path:p}),f;if(je.test(d)||d.startsWith("///"))return f.push({...u.INVALID_GLOB_PATTERN(d,"invalid path pattern with multiple slashes"),path:p}),f;(d.endsWith("\\")||d.endsWith("/"))&&f.push({...u.INVALID_GLOB_PATTERN(d,"trailing slash not allowed"),path:p}),(d.match(Me)||[]).length!==(d.match(Ve)||[]).length&&f.push({...u.INVALID_GLOB_PATTERN(d,"unmatched braces"),path:p});try{minimatch("sample.ts",d);}catch(g){f.push({...u.INVALID_GLOB_PATTERN(d,g.message),path:p});}return f})(s,n,c,t));});let o=i.filter((n,c)=>i.indexOf(n)!==c);o.length>0&&r.push({...u.DUPLICATE_PATTERNS(s,[...new Set(o)]),path:[...t,s]});}return e.include&&e.include.length!==0||r.push({...u.EMPTY_INCLUDE(),path:[...t,"include"]}),e.exclude&&e.exclude.length!==0||r.push({...u.EMPTY_EXCLUDE(),path:[...t,"exclude"]}),{issues:r}}var We=["/etc/","\\etc\\","/var/","\\var\\"],ie="node_modules";function ce(e,t,r=[]){let s=[],i=o=>t.path.isAbsolute(o)?o:t.path.resolve(t.cwd??process.cwd(),o);if(e.outputPath){let{outputPath:o}=e,n=[...r,"outputPath"];o.includes("..")&&s.push({...u.OUTPUT_PATH_TRAVERSAL(o),path:n}),We.some(l=>o.includes(l))&&s.push({...u.OUTPUT_PATH_SYSTEM_DIR(o),path:n});let c=t.path.dirname(i(o));if(t.fs.existsSync(c))try{t.fs.accessSync(c,D.constants.W_OK);}catch{s.push({...u.OUTPUT_PATH_NOT_WRITABLE(c),path:n});}else s.push({...u.OUTPUT_PATH_NOT_FOUND(c),path:n});}if(e.cache&&typeof e.cache=="object"&&e.cache.enabled){let{location:o}=e.cache;if(o){let n=[...r,"cache","location"],c=o.includes(ie),l=o.includes(`${ie}/.cache`);c&&!l&&s.push({...u.CACHE_IN_NODE_MODULES(o),path:n});let d=t.path.dirname(i(o));t.fs.existsSync(d)||s.push({...u.CACHE_PARENT_NOT_FOUND(d),path:n});}}if(e.parserOptions){let{project:o,tsconfigRootDir:n}=e.parserOptions,c=o?i(o):void 0,l=n?i(n):void 0;c&&!t.fs.existsSync(c)&&s.push({...u.TSCONFIG_PROJECT_NOT_FOUND(o),path:[...r,"parserOptions","project"]}),l&&!t.fs.existsSync(l)&&s.push({...u.TSCONFIG_ROOT_NOT_FOUND(n),path:[...r,"parserOptions","tsconfigRootDir"]});}return {issues:s}}var Ge={info:0,low:1,warning:2,warn:2,moderate:2,high:3,error:4,critical:4},He=Object.keys(Ge),le=[...He,"off"];function ue(e,t=[]){let r=[],s=(Array.isArray(e.extends)||!!e.extends)&&e.extends.length>0,i=Object.entries(e.rules||{});for(let[o,n]of(i.length>0||s||r.push({...u.NO_RULES_CONFIGURED(),path:[...t,"rules"]}),i)){if(!o||o.trim()===""){r.push({...u.EMPTY_RULE_NAME(),path:[...t,"rules"]});continue}if(typeof n=="object"&&n!==null){let{severity:c}=n;c&&!le.includes(c)&&r.push({...u.INVALID_RULE_SEVERITY(o,c),path:[...t,"rules",o,"severity"]});}}return {issues:r}}function de(e,t=[]){let r=[];return e&&typeof e=="object"&&("cacheLocation"in e&&e.cacheLocation!==void 0&&r.push({...u.DEPRECATED_CACHE_LOCATION(),path:[...t,"cacheLocation"]}),"concurrency"in e&&e.concurrency!==void 0&&r.push({...u.DEPRECATED_CONCURRENCY(),path:[...t,"concurrency"]})),{issues:r}}function fe(e,t){let r=ASTUtils.parse(e,t);return ASTUtils.generateLocationMap(r)}async function qe(e,t,r,s){if(!r)return fe(e,t);let i=`v${CACHE_VERSION}:${s}`,o=await r.get(i);if(o)return o.ast;let n=fe(e,t);return await r.set(i,{filePath:t,ast:n}),n}async function me(e,t,r,s,i){if(e.length===0)return;let o=i??be.createHash("sha1").update(t).digest("hex"),n=await qe(t,r,s,o);for(let c of e){if(c.file||(c.file=r),!((!c.line||c.line===1)&&c.path))continue;let l=n[c.path.join(".")];l&&(c.line=l.line,c.column=l.column);}}var ze=new Set(["recommended","strict","performance","reactivity","all"]);async function Ke(e,t,r,s,i){if(r)return void await me(e,r,t,s,i);for(let o of e)o.file||(o.file=t);}function ge(e,t){let r,s=[...(r=new Set,e.filter(o=>{let n=`${o.code}:${o.message}:${JSON.stringify(o.path)}`;return !r.has(n)&&(r.add(n),true)}))].sort((o,n)=>o.severity===n.severity?0:o.severity==="error"?-1:1),i=!s.some(o=>o.severity==="error");return {config:i?t:void 0,report:{valid:i,issues:s}}}async function he(e){let t,{config:r,context:s,basePath:i=[],filePath:o,fileContent:n,astCache:c,contentHash:l}=e,{issues:d,validated:y,success:E}=(t=Z.safeParse(r)).success?{issues:[],validated:t.data,success:true}:{issues:t.error.issues.map(p=>({code:p.code.replace(/_/g,"-"),message:p.message,path:[...i,...p.path],severity:"error",file:o})),validated:r,success:false},f=[...d,...(function(p,g,m,h,b){let v=[];for(let O of [{name:"cross-fields",run:()=>re(p,m,h).issues},{name:"glob-patterns",run:()=>ne(p,h).issues},{name:"paths",run:()=>ce(p,m,h).issues},{name:"rules",run:()=>ue(p,h).issues},{name:"extends-chain",run:()=>se(p,h,m.cwd).issues},{name:"deprecated",run:()=>de(g,h).issues}])try{v.push(...O.run());}catch(j){v.push({code:"check-failed",message:`Check "${O.name}" encountered an unexpected error: ${j.message}`,path:h,severity:"error",file:b});}return v})(y,r,s,i,o)];return o&&await Ke(f,o,n,c,l),{issues:f,validated:E?y:void 0}}async function ye(e,t=k(),r,s,i,o){var n;let c={context:t,filePath:r,fileContent:s,astCache:i,contentHash:o},l=e===null||typeof e!="object"?{}:e.profiles??{};if(t.profile){let E=l[t.profile];if(!E){let m,h;return n=t.profile,m=Object.keys(l).join(", "),h=ze.has(n.replace(/^ngcompass:/,""))?` "${n}" is a built-in preset, not a config profile. Use 'extends: "ngcompass:${n.replace(/^ngcompass:/,"")}"' in your config instead.`:"",{config:void 0,report:{valid:false,issues:[{code:"error-profile-not-found",message:`Profile "${n}" not found. Available: [${m}]${h}`,path:["profiles",n],severity:"error",file:r}]}}}let f=defu(E,e),{issues:p,validated:g}=await he({...c,config:f,basePath:["profiles",t.profile]});return ge(p,g)}let{issues:d,validated:y}=await he({...c,config:e});return ge(d,y)}var ve=async e=>{time("config-resolution");let{cwd:t=Ue.cwd(),profile:r,cache:s}=e;debug("loader",`Starting config resolution (cwd: ${t}, profile: ${r||"none"})`);let i=await U(t),{hash:o,cachedResult:n}=await tt(i,r,s);if(n){let d=timeEnd("config-resolution");return debug("loader",`Cache HIT - returning cached result (${d.toFixed(1)}ms)`),n}debug("loader","Cache MISS - running validation");let c=await rt(i,r,s);debug("loader",`Validation complete: ${c.report.valid?"valid":`invalid (${c.report.issues.length} issues)`}`),s&&o&&(await s.configs.set(o,c),debug("loader",`Cached validation result: key=${o.substring(0,8)}...`));let l=timeEnd("config-resolution");return debug("loader",`Config resolution complete: ${l.toFixed(1)}ms`),c};async function tt(e,t,r){if(!r)return {};let s=[e?.contentHash??"",t??"",PACKAGE_VERSION,CACHE_VERSION].join("::"),i=r.computeHash(s);debug("loader",`Cache lookup: key=${i.substring(0,8)}...`);let o=await r.configs.get(i);return {hash:i,cachedResult:o}}async function rt(e,t,r){return ye(e?.config??{},k({profile:t}),e?.filepath,e?.content,r?.asts,e?.contentHash)}var Te=class extends Error{constructor(t){super(`Configuration file already exists at: ${t}`),this.name="ConfigExistsError";}},nt=`import { defineConfig } from '@ngcompass/config';
1
+ import {z as z$1}from'zod';import Ae,{cpus}from'os';import {lilconfig}from'lilconfig';import {createJiti}from'jiti';import*as D from'fs';import D__default from'fs';import be from'crypto';import*as C from'path';import C__default from'path';import {fileURLToPath}from'url';import {time,debug,timeEnd,PACKAGE_VERSION,CACHE_VERSION,warn,ASTUtils}from'@ngcompass/common';import {defu}from'defu';import Ue from'process';import {createRequire}from'module';import {minimatch}from'minimatch';import ot from'fs/promises';var z=()=>Math.max(1,Math.min(4,Ae.cpus().length-1)),P={enabled:true,location:"node_modules/.cache/ngcompass",strategy:"local",ttl:864e5},S={outputFormat:"text",failOnSeverity:"error",maxWarnings:10,include:["src/**/*.ts"],exclude:["node_modules/**","dist/**","**/*.spec.ts","**/*.test.ts"]};var M=z$1.enum(["warn","error"]),Se=z$1.enum(["json","text","sarif","html"]),K=z$1.union([M,z$1.literal("off"),z$1.object({severity:z$1.union([M,z$1.literal("off")]),options:z$1.record(z$1.string(),z$1.unknown()).optional()})]),Ce=z$1.object({enabled:z$1.boolean().optional(),location:z$1.string().optional(),strategy:z$1.enum(["memory","local"]).optional(),ttl:z$1.number().optional()}),Oe=z$1.object({project:z$1.string().optional(),tsconfigRootDir:z$1.string().optional(),sourceType:z$1.enum(["module","commonjs"]).optional(),ecmaVersion:z$1.number().optional()}),J=z$1.object({extends:z$1.union([z$1.string(),z$1.array(z$1.string())]).optional(),include:z$1.array(z$1.string()).default([...S.include]),exclude:z$1.array(z$1.string()).default([...S.exclude]),maxWorkers:z$1.number().optional(),concurrency:z$1.number().optional(),cache:z$1.union([z$1.boolean(),Ce]).optional(),cacheLocation:z$1.string().optional(),outputFormat:Se.default(S.outputFormat),outputPath:z$1.string().optional(),failOnSeverity:M.default(S.failOnSeverity),maxWarnings:z$1.number().default(S.maxWarnings),ignorePatterns:z$1.array(z$1.string()).optional(),rules:z$1.record(z$1.string(),K).optional(),overrides:z$1.array(z$1.object({files:z$1.union([z$1.string(),z$1.array(z$1.string())]),rules:z$1.record(z$1.string(),K).optional()})).optional(),parserOptions:Oe.optional()}),Ne=z$1.lazy(()=>J.partial()),Z=J.extend({profiles:z$1.record(z$1.string(),Ne).optional()}).transform(e=>{let t,r=e.maxWorkers??e.concurrency??z();if(e.cache===false)t={...P,enabled:false};else if(e.cache===true||e.cache===void 0){let s=e.cacheLocation??P.location;t={...P,location:s};}else t={...P,...e.cache};return {...e,maxWorkers:r,cache:t,rules:e.rules??{},overrides:e.overrides??[],ignorePatterns:e.ignorePatterns??[]}});var T="ngcompass",$e=[`${T}.config.ts`,`${T}.config.js`,`${T}.config.mjs`,`${T}.config.cjs`,`${T}.config.json`,`.${T}rc`,`.${T}rc.json`,"package.json"],w=e=>{let t=fileURLToPath(import.meta.url);return createJiti(e,{alias:{"@ngcompass/config":C__default.basename(t).startsWith("index.")?t:fileURLToPath(new URL("../index.ts",import.meta.url))}}).import(e).then(r=>r&&typeof r=="object"&&"default"in r?r.default??r:r)},te=(e,t)=>JSON.parse(t.replace(/^\uFEFF/,"")),U=async(e=process.cwd())=>{time("config-discovery"),debug("discovery",`Searching for config in: ${e}`);let t=lilconfig(T,{searchPlaces:$e,loaders:{".ts":w,".js":w,".mjs":w,".cjs":w,".json":te,noExt:te}}),r=await t.search(e);if(!r)return debug("discovery","No config file found"),timeEnd("config-discovery"),null;debug("discovery",`Found config: ${r.filepath}`);let s="",i="";time("content-hash");try{s=D__default.readFileSync(r.filepath,"utf-8"),i=be.createHash("sha1").update(s).digest("hex");let n=timeEnd("content-hash");debug("discovery",`Content hash: ${i.substring(0,8)}... (${n.toFixed(1)}ms)`);}catch{}let o=timeEnd("config-discovery");return debug("discovery",`Discovery complete: ${o.toFixed(1)}ms`),{config:r.config,filepath:r.filepath,content:s,contentHash:i,isEmpty:r.isEmpty}};function k(e){return {cwd:Ue.cwd(),fs:{existsSync:D.existsSync,accessSync:(t,r)=>D.accessSync(t,r)},os:{cpus:cpus},path:{dirname:C.dirname,resolve:C.resolve,isAbsolute:C.isAbsolute},...e}}var u={NEGATIVE_MAX_WARNINGS:e=>({code:"negative-max-warnings",message:`Value for 'maxWarnings' must be non-negative. Received: ${e}.`,suggestion:"Set 'maxWarnings' to 0 or higher, or remove it to use default (10).",severity:"error"}),WORKERS_BELOW_MINIMUM:()=>({code:"workers-below-minimum",message:"Value for 'maxWorkers' must be at least 1.",suggestion:"Set to 1 or higher, or remove to use default (CPU count - 1).",severity:"error"}),NEGATIVE_CACHE_TTL:e=>({code:"negative-cache-ttl",message:`Cache TTL must be non-negative. Received: ${e}ms.`,suggestion:"Set to 0 (default TTL) or higher. Example: 86400000 for 24 hours.",severity:"error"}),WORKERS_EXCESSIVE:(e,t)=>({code:"warn-workers-excessive",message:`Worker count (${e}) exceeds CPU count (${t}). May cause context switching overhead.`,suggestion:`Reduce to ${t} or lower for optimal performance.`,severity:"warning"}),CACHE_TTL_ZERO:()=>({code:"warn-cache-ttl-zero",message:"Cache TTL is set to 0. Using driver default TTL (typically 24 hours).",suggestion:"Set explicit TTL if you need different cache expiration behavior.",severity:"warning"}),INVALID_GLOB_PATTERN:(e,t)=>({code:"invalid-glob-pattern",message:`Glob pattern "${e}" is invalid. Error: ${t}.`,suggestion:"Check pattern syntax. Valid examples: 'src/**/*.ts', '**/*.{ts,html}'.",severity:"error"}),EMPTY_INCLUDE:()=>({code:"empty-include",message:"No include patterns defined. Analysis will skip all files.",suggestion:"Add patterns like ['src/**/*.ts', 'src/**/*.html'] to enable analysis.",severity:"error"}),EMPTY_EXCLUDE:()=>({code:"warn-empty-exclude",message:"No exclude patterns defined. Performance may degrade.",suggestion:"Add common exclusions: ['node_modules/**', 'dist/**', '**/*.spec.ts'].",severity:"warning"}),DUPLICATE_PATTERNS:(e,t)=>({code:"warn-duplicate-patterns",message:`Duplicate patterns found in "${e}": ${t.map(r=>`"${r}"`).join(", ")}.`,suggestion:"Remove duplicate entries to simplify configuration.",severity:"warning"}),EMPTY_GLOB_PATTERN:e=>({code:"empty-glob-pattern",message:`Empty string detected in "${e}" patterns.`,suggestion:"Remove empty strings from the pattern array.",severity:"error"}),TSCONFIG_ROOT_NOT_FOUND:e=>({code:"tsconfig-root-not-found",message:`TSConfig root directory not found: "${e}".`,suggestion:"Verify the directory exists and the path is correct relative to the config file.",severity:"error"}),TSCONFIG_PROJECT_NOT_FOUND:e=>({code:"tsconfig-project-not-found",message:`TSConfig file not found: "${e}".`,suggestion:"Verify the file exists and the path is relative to 'tsconfigRootDir' or config location.",severity:"error"}),OUTPUT_PATH_TRAVERSAL:e=>({code:"output-path-traversal",message:`Output path contains unsafe traversal (..): "${e}".`,suggestion:"Use absolute paths or paths without '..' to prevent security issues.",severity:"error"}),OUTPUT_PATH_SYSTEM_DIR:e=>({code:"output-path-system-dir",message:`Output path points to a system directory: "${e}".`,suggestion:"Choose a safe output location within your project directory.",severity:"error"}),OUTPUT_PATH_NOT_FOUND:e=>({code:"output-path-not-found",message:`Output directory does not exist: "${e}".`,suggestion:"Create the directory or update 'outputPath' to an existing location.",severity:"error"}),OUTPUT_PATH_NOT_WRITABLE:e=>({code:"output-path-not-writable",message:`Output directory is not writable: "${e}".`,suggestion:"Check directory permissions or choose a different output location.",severity:"error"}),CACHE_IN_NODE_MODULES:e=>({code:"cache-in-node-modules",message:`Cache location inside 'node_modules' is unsafe: "${e}". node_modules can be deleted, causing cache loss.`,suggestion:"Use a different directory like '.cache' or 'node_modules/.cache/ngcompass'.",severity:"error"}),CACHE_PARENT_NOT_FOUND:e=>({code:"warn-cache-parent-not-found",message:`Cache parent directory missing: "${e}". It will be created automatically.`,suggestion:"No action needed. Directory will be created on first cache write.",severity:"warning"}),INVALID_RULE_SEVERITY:(e,t)=>({code:"invalid-rule-severity",message:`Rule "${e}" has invalid severity: "${t}".`,suggestion:"Use valid severities: 'off', 'info', 'low', 'moderate', 'high', or 'critical'.",severity:"error"}),NO_RULES_CONFIGURED:()=>({code:"warn-no-rules-configured",message:"No rules configured. Analysis effectively skips checks.",suggestion:"Add rules to enable analysis, or extend from a preset like 'recommended'.",severity:"warning"}),EMPTY_RULE_NAME:()=>({code:"empty-rule-name",message:"Empty rule name detected. Rule keys must be non-empty strings.",suggestion:"Remove empty keys from 'rules' configuration.",severity:"error"}),PROFILE_CIRCULAR_INHERITANCE:e=>({code:"profile-circular-inheritance",message:`Circular profile inheritance detected: ${e.join(" \u2192 ")}.`,suggestion:"Break the circular dependency by removing one 'extends' reference.",severity:"error"}),PROFILE_EMPTY:()=>({code:"warn-profile-empty",message:"Profiles section is defined but empty. Consider removing it.",suggestion:"Remove 'profiles: {}' or add at least one profile like 'dev' or 'ci'.",severity:"warning"}),EXTENDS_NOT_FOUND:e=>({code:"extends-not-found",message:`Cannot resolve preset "${e}". Make sure the package is installed.`,suggestion:`Run: npm install --save-dev ${e}`,severity:"error"}),DEPRECATED_CACHE_LOCATION:()=>({code:"warn-deprecated-cache-location",message:"'cacheLocation' is deprecated. Use 'cache.location' instead.",suggestion:`Replace 'cacheLocation: "..."' with 'cache: { location: "..." }'.`,severity:"warning"}),DEPRECATED_CONCURRENCY:()=>({code:"warn-deprecated-concurrency",message:"'concurrency' is deprecated. Use 'maxWorkers' instead.",suggestion:"Replace 'concurrency: N' with 'maxWorkers: N'.",severity:"warning"})};function W(e,t,r=[]){let s=[];if(e.maxWorkers!==void 0){let i=2*t.os.cpus().length;e.maxWorkers<1?s.push({...u.WORKERS_BELOW_MINIMUM(),path:[...r,"maxWorkers"]}):e.maxWorkers>i&&s.push({...u.WORKERS_EXCESSIVE(e.maxWorkers,i),path:[...r,"maxWorkers"]});}if(e.cache&&typeof e.cache=="object"&&e.cache.ttl!==void 0){let{ttl:i}=e.cache,o=[...r,"cache","ttl"];i<0&&s.push({...u.NEGATIVE_CACHE_TTL(i),path:o});}return {issues:s}}function re(e,t,r=[]){let s=[];if(e.maxWarnings!==void 0){let{maxWarnings:o}=e;o<0&&s.push({...u.NEGATIVE_MAX_WARNINGS(o),path:[...r,"maxWarnings"]});}let{issues:i}=W(e,t,r);return s.push(...i),{issues:s}}function se(e,t=[],r=Ue.cwd()){let s=[];if(!e.extends)return {issues:s};let i=Array.isArray(e.extends)?e.extends:[e.extends],o=Array.isArray(e.extends);for(let n=0;n<i.length;n++){let c=i[n];if(!(typeof c!="string"||c.trim()===""||(function(l){let d=l.startsWith("."),y=C__default.isAbsolute(l),E=l.includes(":");return d||y||E})(c))&&(function(l,d){try{let y=C__default.join(d,"__resolve_anchor__.cjs");return createRequire(y).resolve(l)}catch{return null}})(c,r)===null){let l=[...t,"extends"];o&&l.push(n),s.push({...u.EXTENDS_NOT_FOUND(c),path:l});}}return {issues:s}}var je=/\/\/\//,Me=/\{/g,Ve=/\}/g;function ne(e,t=[]){let r=[];for(let s of ["include","exclude","ignorePatterns"]){let i=e[s];if(!Array.isArray(i))continue;i.forEach((n,c)=>{r.push(...(function(l,d,y,E){let f=[],p=[...E,l,y];if(!d||d.trim()==="")return f.push({...u.EMPTY_GLOB_PATTERN(l),path:p}),f;if(d.includes("[")&&!d.includes("]"))return f.push({...u.INVALID_GLOB_PATTERN(d,"unclosed bracket"),path:p}),f;if(je.test(d)||d.startsWith("///"))return f.push({...u.INVALID_GLOB_PATTERN(d,"invalid path pattern with multiple slashes"),path:p}),f;(d.endsWith("\\")||d.endsWith("/"))&&f.push({...u.INVALID_GLOB_PATTERN(d,"trailing slash not allowed"),path:p}),(d.match(Me)||[]).length!==(d.match(Ve)||[]).length&&f.push({...u.INVALID_GLOB_PATTERN(d,"unmatched braces"),path:p});try{minimatch("sample.ts",d);}catch(g){f.push({...u.INVALID_GLOB_PATTERN(d,g.message),path:p});}return f})(s,n,c,t));});let o=i.filter((n,c)=>i.indexOf(n)!==c);o.length>0&&r.push({...u.DUPLICATE_PATTERNS(s,[...new Set(o)]),path:[...t,s]});}return e.include&&e.include.length!==0||r.push({...u.EMPTY_INCLUDE(),path:[...t,"include"]}),e.exclude&&e.exclude.length!==0||r.push({...u.EMPTY_EXCLUDE(),path:[...t,"exclude"]}),{issues:r}}var We=["/etc/","\\etc\\","/var/","\\var\\"],ie="node_modules";function ce(e,t,r=[]){let s=[],i=o=>t.path.isAbsolute(o)?o:t.path.resolve(t.cwd??process.cwd(),o);if(e.outputPath){let{outputPath:o}=e,n=[...r,"outputPath"];o.includes("..")&&s.push({...u.OUTPUT_PATH_TRAVERSAL(o),path:n}),We.some(l=>o.includes(l))&&s.push({...u.OUTPUT_PATH_SYSTEM_DIR(o),path:n});let c=t.path.dirname(i(o));if(t.fs.existsSync(c))try{t.fs.accessSync(c,D.constants.W_OK);}catch{s.push({...u.OUTPUT_PATH_NOT_WRITABLE(c),path:n});}else s.push({...u.OUTPUT_PATH_NOT_FOUND(c),path:n});}if(e.cache&&typeof e.cache=="object"&&e.cache.enabled){let{location:o}=e.cache;if(o){let n=[...r,"cache","location"],c=o.includes(ie),l=o.includes(`${ie}/.cache`);c&&!l&&s.push({...u.CACHE_IN_NODE_MODULES(o),path:n});let d=t.path.dirname(i(o));t.fs.existsSync(d)||s.push({...u.CACHE_PARENT_NOT_FOUND(d),path:n});}}if(e.parserOptions){let{project:o,tsconfigRootDir:n}=e.parserOptions,c=o?i(o):void 0,l=n?i(n):void 0;c&&!t.fs.existsSync(c)&&s.push({...u.TSCONFIG_PROJECT_NOT_FOUND(o),path:[...r,"parserOptions","project"]}),l&&!t.fs.existsSync(l)&&s.push({...u.TSCONFIG_ROOT_NOT_FOUND(n),path:[...r,"parserOptions","tsconfigRootDir"]});}return {issues:s}}var Ge={info:0,low:1,warning:2,warn:2,moderate:2,high:3,error:4,critical:4},He=Object.keys(Ge),le=[...He,"off"];function ue(e,t=[]){let r=[],s=(Array.isArray(e.extends)||!!e.extends)&&e.extends.length>0,i=Object.entries(e.rules||{});for(let[o,n]of(i.length>0||s||r.push({...u.NO_RULES_CONFIGURED(),path:[...t,"rules"]}),i)){if(!o||o.trim()===""){r.push({...u.EMPTY_RULE_NAME(),path:[...t,"rules"]});continue}if(typeof n=="object"&&n!==null){let{severity:c}=n;c&&!le.includes(c)&&r.push({...u.INVALID_RULE_SEVERITY(o,c),path:[...t,"rules",o,"severity"]});}}return {issues:r}}function de(e,t=[]){let r=[];return e&&typeof e=="object"&&("cacheLocation"in e&&e.cacheLocation!==void 0&&r.push({...u.DEPRECATED_CACHE_LOCATION(),path:[...t,"cacheLocation"]}),"concurrency"in e&&e.concurrency!==void 0&&r.push({...u.DEPRECATED_CONCURRENCY(),path:[...t,"concurrency"]})),{issues:r}}function fe(e,t){let r=ASTUtils.parse(e,t);return ASTUtils.generateLocationMap(r)}async function qe(e,t,r,s){if(!r)return fe(e,t);let i=`v${CACHE_VERSION}:${s}`,o=await r.get(i);if(o)return o.ast;let n=fe(e,t);return await r.set(i,{filePath:t,ast:n}),n}async function me(e,t,r,s,i){if(e.length===0)return;let o=i??be.createHash("sha1").update(t).digest("hex"),n=await qe(t,r,s,o);for(let c of e){if(c.file||(c.file=r),!((!c.line||c.line===1)&&c.path))continue;let l=n[c.path.join(".")];l&&(c.line=l.line,c.column=l.column);}}var ze=new Set(["recommended","strict","performance","reactivity","all"]);async function Ke(e,t,r,s,i){if(r)return void await me(e,r,t,s,i);for(let o of e)o.file||(o.file=t);}function ge(e,t){let r,s=[...(r=new Set,e.filter(o=>{let n=`${o.code}:${o.message}:${JSON.stringify(o.path)}`;return !r.has(n)&&(r.add(n),true)}))].sort((o,n)=>o.severity===n.severity?0:o.severity==="error"?-1:1),i=!s.some(o=>o.severity==="error");return {config:i?t:void 0,report:{valid:i,issues:s}}}async function he(e){let t,{config:r,context:s,basePath:i=[],filePath:o,fileContent:n,astCache:c,contentHash:l}=e,{issues:d,validated:y,success:E}=(t=Z.safeParse(r)).success?{issues:[],validated:t.data,success:true}:{issues:t.error.issues.map(p=>({code:p.code.replace(/_/g,"-"),message:p.message,path:[...i,...p.path],severity:"error",file:o})),validated:r,success:false},f=[...d,...(function(p,g,m,h,b){let v=[];for(let O of [{name:"cross-fields",run:()=>re(p,m,h).issues},{name:"glob-patterns",run:()=>ne(p,h).issues},{name:"paths",run:()=>ce(p,m,h).issues},{name:"rules",run:()=>ue(p,h).issues},{name:"extends-chain",run:()=>se(p,h,m.cwd).issues},{name:"deprecated",run:()=>de(g,h).issues}])try{v.push(...O.run());}catch(j){v.push({code:"check-failed",message:`Check "${O.name}" encountered an unexpected error: ${j.message}`,path:h,severity:"error",file:b});}return v})(y,r,s,i,o)];return o&&await Ke(f,o,n,c,l),{issues:f,validated:E?y:void 0}}async function ye(e,t=k(),r,s,i,o){var n;let c={context:t,filePath:r,fileContent:s,astCache:i,contentHash:o},l=e===null||typeof e!="object"?{}:e.profiles??{};if(t.profile){let E=l[t.profile];if(!E){let m,h;return n=t.profile,m=Object.keys(l).join(", "),h=ze.has(n.replace(/^ngcompass:/,""))?` "${n}" is a built-in preset, not a config profile. Use 'extends: "ngcompass:${n.replace(/^ngcompass:/,"")}"' in your config instead.`:"",{config:void 0,report:{valid:false,issues:[{code:"error-profile-not-found",message:`Profile "${n}" not found. Available: [${m}]${h}`,path:["profiles",n],severity:"error",file:r}]}}}let f=defu(E,e),{issues:p,validated:g}=await he({...c,config:f,basePath:["profiles",t.profile]});return ge(p,g)}let{issues:d,validated:y}=await he({...c,config:e});return ge(d,y)}var ve=async e=>{time("config-resolution");let{cwd:t=Ue.cwd(),profile:r,cache:s}=e;debug("loader",`Starting config resolution (cwd: ${t}, profile: ${r||"none"})`);let i=await U(t),{hash:o,cachedResult:n}=await tt(i,r,s);if(n){let d=timeEnd("config-resolution");return debug("loader",`Cache HIT - returning cached result (${d.toFixed(1)}ms)`),n}debug("loader","Cache MISS - running validation");let c=await rt(i,r,s);debug("loader",`Validation complete: ${c.report.valid?"valid":`invalid (${c.report.issues.length} issues)`}`),s&&o&&(await s.configs.set(o,c),debug("loader",`Cached validation result: key=${o.substring(0,8)}...`));let l=timeEnd("config-resolution");return debug("loader",`Config resolution complete: ${l.toFixed(1)}ms`),c};async function tt(e,t,r){if(!r)return {};let s=[e?.contentHash??"",t??"",PACKAGE_VERSION,CACHE_VERSION].join("::"),i=r.computeHash(s);debug("loader",`Cache lookup: key=${i.substring(0,8)}...`);let o=await r.configs.get(i);return {hash:i,cachedResult:o}}async function rt(e,t,r){return ye(e?.config??{},k({profile:t}),e?.filepath,e?.content,r?.asts,e?.contentHash)}var Te=class extends Error{constructor(t){super(`Configuration file already exists at: ${t}`),this.name="ConfigExistsError";}},nt=`import { defineConfig } from '@ngcompass/config';
2
2
 
3
3
  export default defineConfig({
4
4
  extends: 'ngcompass:recommended',
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/schemas/defaults.ts","../src/schemas/schema.ts","../src/loaders/discovery.ts","../src/health/context.ts","../src/health/messages.ts","../src/health/checks/base.ts","../src/health/checks/cross-fields.ts","../src/health/checks/extends.ts","../src/health/checks/globs.ts","../src/health/checks/paths.ts","../src/health/constants.ts","../src/health/checks/rules.ts","../src/health/checks/deprecated.ts","../src/health/enricher.ts","../src/health/validator.ts","../src/loaders/loader.ts","../src/actions/init.ts","../src/actions/healthcheck.ts","../src/define-config.ts","../src/plugin-loader.ts"],"names":["getDefaultMaxWorkers","Math","max","os","cpus","length","DEFAULT_CACHE_OPTIONS","enabled","location","strategy","ttl","DEFAULT_CONFIG","outputFormat","failOnSeverity","maxWarnings","include","exclude","SeveritySchema","z","enum","OutputFormatSchema","RuleDefinitionSchema","union","literal","object","severity","options","record","string","unknown","optional","CacheOptionsSchema","boolean","number","ParserOptionsSchema","project","tsconfigRootDir","sourceType","ecmaVersion","BaseAnalyzerConfigSchema","extends","array","default","maxWorkers","concurrency","cache","cacheLocation","outputPath","ignorePatterns","rules","overrides","files","parserOptions","ProfileConfigSchema","lazy","partial","AnalyzerConfigSchema","extend","profiles","transform","data","undefined","MODULE_NAME","SEARCH_PLACES","jitiLoader","filepath","currentFile","fileURLToPath","url","createJiti","alias","path","basename","startsWith","URL","import","then","mod","jsonLoader","_filepath","content","JSON","parse","replace","findAndLoadConfig","cwd","process","time","debug","explorer","lilconfig","searchPlaces","loaders","noExt","result","search","timeEnd","contentHash","fs","readFileSync","crypto","createHash","update","digest","hashTime","substring","toFixed","discoveryTime","config","isEmpty","createDefaultContext","existsSync","accessSync","p","mode","dirname","resolve","isAbsolute","MESSAGES","NEGATIVE_MAX_WARNINGS","val","code","message","suggestion","WORKERS_BELOW_MINIMUM","NEGATIVE_CACHE_TTL","WORKERS_EXCESSIVE","workers","limit","CACHE_TTL_ZERO","INVALID_GLOB_PATTERN","pattern","error","EMPTY_INCLUDE","EMPTY_EXCLUDE","DUPLICATE_PATTERNS","field","patterns","map","join","EMPTY_GLOB_PATTERN","TSCONFIG_ROOT_NOT_FOUND","TSCONFIG_PROJECT_NOT_FOUND","OUTPUT_PATH_TRAVERSAL","OUTPUT_PATH_SYSTEM_DIR","OUTPUT_PATH_NOT_FOUND","dir","OUTPUT_PATH_NOT_WRITABLE","CACHE_IN_NODE_MODULES","CACHE_PARENT_NOT_FOUND","INVALID_RULE_SEVERITY","ruleName","NO_RULES_CONFIGURED","EMPTY_RULE_NAME","PROFILE_CIRCULAR_INHERITANCE","chain","PROFILE_EMPTY","EXTENDS_NOT_FOUND","preset","DEPRECATED_CACHE_LOCATION","DEPRECATED_CONCURRENCY","validateConfigBlock","block","context","basePath","issues","workerLimit","push","validateCrossFields","blockIssues","validateExtendsChain","extendsList","Array","isArray","i","trim","isLocal","nodePath","isPluginSpecifier","includes","anchorFile","createRequire","issuePath","n","s","l","validateGlobPatterns","forEach","index","GLOB_RULES","test","endsWith","match","minimatch","err","duplicates","filter","item","indexOf","Set","t","c","validatePaths","resolveFromCwd","targetPath","PATH_RULES","some","constants","W_OK","isInNodeModules","isStandardCache","cacheDir","resolvedProject","resolvedTsconfigRootDir","SEVERITY_LEVELS","info","low","warning","warn","moderate","high","critical","VALID_SEVERITIES","Object","keys","VALID_RULE_SEVERITIES","validateRules","hasExtends","ruleEntries","entries","ruleConfig","validateDeprecatedFields","rawConfig","buildLocationMap","fileContent","filePath","sourceFile","ASTUtils","generateLocationMap","resolveLocationMap","astCache","versionedKey","CACHE_VERSION","cachedEntry","get","ast","locationMap","set","enrichIssueLocations","hash","issue","file","line","column","BUILTIN_PRESETS","attachFileLocations","buildValidationResult","finalConfig","seen","unique","key","stringify","has","add","sort","a","b","valid","report","validateBlock","schemaIssues","validated","success","safeParse","allIssues","check","name","run","validateConfiguration","profile","baseOptions","availableProfiles","profileConfig","available","presetHint","merged","defu","resolveConfig","loaded","cachedResult","tryLoadFromCache","resolutionTime","runValidation","configs","hashInput","PACKAGE_VERSION","computeHash","asts","ConfigExistsError","Error","TEMPLATE","initConfig","existing","force","alreadyExists","writeFile","validateConfig","String","defineConfig","DEFAULT_CAPABILITIES","typeCheckingEnabled","templateASTEnabled","cssASTEnabled","loadPlugins","plugins","configDir","registry","capabilities","_require","pluginErrors","pluginRef","resolvedPath","module","rawExport","pluginList","registeredCount","plugin","value","handler","handle","Function","manifest","rangeError","currentVersion","range","pluginName","pluginVersion","trimmed","current","parseVersion","expanded","base","parsed","slice","constraint","split","Boolean","op","required","diff","engineVersionRange","version","req","label","register","e","v","Number"],"mappings":"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","file":"index.js","sourcesContent":["import t from 'node:os';\nexport const getDefaultMaxWorkers = ()=>Math.max(1, t.cpus().length - 1);\nexport const DEFAULT_CACHE_OPTIONS = {\n enabled: !0,\n location: 'node_modules/.cache/ngcompass',\n strategy: 'local',\n ttl: 86400000\n};\nexport const DEFAULT_CONFIG = {\n outputFormat: 'text',\n failOnSeverity: 'error',\n maxWarnings: 10,\n include: [\n 'src/**/*.ts'\n ],\n exclude: [\n 'node_modules/**',\n 'dist/**',\n '**/*.spec.ts',\n '**/*.test.ts'\n ]\n};\n","import { z as e } from 'zod';\nimport { DEFAULT_CONFIG as o, DEFAULT_CACHE_OPTIONS as n, getDefaultMaxWorkers as r } from './defaults.js';\nlet SeveritySchema = e.enum([\n 'warn',\n 'error'\n]), OutputFormatSchema = e.enum([\n 'json',\n 'text',\n 'sarif',\n 'html'\n]), RuleDefinitionSchema = e.union([\n SeveritySchema,\n e.literal('off'),\n e.object({\n severity: e.union([\n SeveritySchema,\n e.literal('off')\n ]),\n options: e.record(e.string(), e.unknown()).optional()\n })\n]), CacheOptionsSchema = e.object({\n enabled: e.boolean().optional(),\n location: e.string().optional(),\n strategy: e.enum([\n 'memory',\n 'local'\n ]).optional(),\n ttl: e.number().optional()\n}), ParserOptionsSchema = e.object({\n project: e.string().optional(),\n tsconfigRootDir: e.string().optional(),\n sourceType: e.enum([\n 'module',\n 'commonjs'\n ]).optional(),\n ecmaVersion: e.number().optional()\n}), BaseAnalyzerConfigSchema = e.object({\n extends: e.union([\n e.string(),\n e.array(e.string())\n ]).optional(),\n include: e.array(e.string()).default([\n ...o.include\n ]),\n exclude: e.array(e.string()).default([\n ...o.exclude\n ]),\n maxWorkers: e.number().optional(),\n concurrency: e.number().optional(),\n cache: e.union([\n e.boolean(),\n CacheOptionsSchema\n ]).optional(),\n cacheLocation: e.string().optional(),\n outputFormat: OutputFormatSchema.default(o.outputFormat),\n outputPath: e.string().optional(),\n failOnSeverity: SeveritySchema.default(o.failOnSeverity),\n maxWarnings: e.number().default(o.maxWarnings),\n ignorePatterns: e.array(e.string()).optional(),\n rules: e.record(e.string(), RuleDefinitionSchema).optional(),\n overrides: e.array(e.object({\n files: e.union([\n e.string(),\n e.array(e.string())\n ]),\n rules: e.record(e.string(), RuleDefinitionSchema).optional()\n })).optional(),\n parserOptions: ParserOptionsSchema.optional()\n});\nexport const ProfileConfigSchema = e.lazy(()=>BaseAnalyzerConfigSchema.partial());\nexport const AnalyzerConfigSchema = BaseAnalyzerConfigSchema.extend({\n profiles: e.record(e.string(), ProfileConfigSchema).optional()\n}).transform((e)=>{\n let o, t = e.maxWorkers ?? e.concurrency ?? r();\n if (!1 === e.cache) o = {\n ...n,\n enabled: !1\n };\n else if (!0 === e.cache || void 0 === e.cache) {\n let r = e.cacheLocation ?? n.location;\n o = {\n ...n,\n location: r\n };\n } else o = {\n ...n,\n ...e.cache\n };\n return {\n ...e,\n maxWorkers: t,\n cache: o,\n rules: e.rules ?? {},\n overrides: e.overrides ?? [],\n ignorePatterns: e.ignorePatterns ?? []\n };\n});\n","import { lilconfig as o } from 'lilconfig';\nimport { createJiti as e } from 'jiti';\nimport i from 'node:fs';\nimport t from 'node:crypto';\nimport r from 'node:path';\nimport { fileURLToPath as n } from 'node:url';\nimport { debug as s, time as c, timeEnd as a } from '@ngcompass/common';\nlet MODULE_NAME = 'ngcompass', SEARCH_PLACES = [\n `${MODULE_NAME}.config.ts`,\n `${MODULE_NAME}.config.js`,\n `${MODULE_NAME}.config.mjs`,\n `${MODULE_NAME}.config.cjs`,\n `${MODULE_NAME}.config.json`,\n `.${MODULE_NAME}rc`,\n `.${MODULE_NAME}rc.json`,\n 'package.json'\n], jitiLoader = (o)=>{\n let i = n(import.meta.url);\n return e(o, {\n alias: {\n '@ngcompass/config': r.basename(i).startsWith('index.') ? i : n(new URL('../index.ts', import.meta.url))\n }\n }).import(o).then((o)=>o && 'object' == typeof o && 'default' in o ? o.default ?? o : o);\n}, jsonLoader = (o, e)=>JSON.parse(e.replace(/^\\uFEFF/, ''));\nexport const findAndLoadConfig = async (e = process.cwd())=>{\n c('config-discovery'), s('discovery', `Searching for config in: ${e}`);\n let r = o(MODULE_NAME, {\n searchPlaces: SEARCH_PLACES,\n loaders: {\n '.ts': jitiLoader,\n '.js': jitiLoader,\n '.mjs': jitiLoader,\n '.cjs': jitiLoader,\n '.json': jsonLoader,\n noExt: jsonLoader\n }\n }), n = await r.search(e);\n if (!n) return s('discovery', 'No config file found'), a('config-discovery'), null;\n s('discovery', `Found config: ${n.filepath}`);\n let f = '', d = '';\n c('content-hash');\n try {\n f = i.readFileSync(n.filepath, 'utf-8'), d = t.createHash('sha1').update(f).digest('hex');\n let o = a('content-hash');\n s('discovery', `Content hash: ${d.substring(0, 8)}... (${o.toFixed(1)}ms)`);\n } catch {}\n let m = a('config-discovery');\n return s('discovery', `Discovery complete: ${m.toFixed(1)}ms`), {\n config: n.config,\n filepath: n.filepath,\n content: f,\n contentHash: d,\n isEmpty: n.isEmpty\n };\n};\n","import * as e from \"node:fs\";\nimport * as o from \"node:path\";\nimport { cpus as s } from \"node:os\";\nimport r from \"node:process\";\nexport function createDefaultContext(t) {\n return {\n cwd: r.cwd(),\n fs: {\n existsSync: e.existsSync,\n accessSync: (o, s)=>e.accessSync(o, s)\n },\n os: {\n cpus: s\n },\n path: {\n dirname: o.dirname,\n resolve: o.resolve,\n isAbsolute: o.isAbsolute\n },\n ...t\n };\n}\n","export const MESSAGES = {\n NEGATIVE_MAX_WARNINGS: (e)=>({\n code: \"negative-max-warnings\",\n message: `Value for 'maxWarnings' must be non-negative. Received: ${e}.`,\n suggestion: \"Set 'maxWarnings' to 0 or higher, or remove it to use default (10).\",\n severity: \"error\"\n }),\n WORKERS_BELOW_MINIMUM: ()=>({\n code: \"workers-below-minimum\",\n message: \"Value for 'maxWorkers' must be at least 1.\",\n suggestion: \"Set to 1 or higher, or remove to use default (CPU count - 1).\",\n severity: \"error\"\n }),\n NEGATIVE_CACHE_TTL: (e)=>({\n code: \"negative-cache-ttl\",\n message: `Cache TTL must be non-negative. Received: ${e}ms.`,\n suggestion: \"Set to 0 (default TTL) or higher. Example: 86400000 for 24 hours.\",\n severity: \"error\"\n }),\n WORKERS_EXCESSIVE: (e, t)=>({\n code: \"warn-workers-excessive\",\n message: `Worker count (${e}) exceeds CPU count (${t}). May cause context switching overhead.`,\n suggestion: `Reduce to ${t} or lower for optimal performance.`,\n severity: \"warning\"\n }),\n CACHE_TTL_ZERO: ()=>({\n code: \"warn-cache-ttl-zero\",\n message: \"Cache TTL is set to 0. Using driver default TTL (typically 24 hours).\",\n suggestion: \"Set explicit TTL if you need different cache expiration behavior.\",\n severity: \"warning\"\n }),\n INVALID_GLOB_PATTERN: (e, t)=>({\n code: \"invalid-glob-pattern\",\n message: `Glob pattern \"${e}\" is invalid. Error: ${t}.`,\n suggestion: \"Check pattern syntax. Valid examples: 'src/**/*.ts', '**/*.{ts,html}'.\",\n severity: \"error\"\n }),\n EMPTY_INCLUDE: ()=>({\n code: \"empty-include\",\n message: \"No include patterns defined. Analysis will skip all files.\",\n suggestion: \"Add patterns like ['src/**/*.ts', 'src/**/*.html'] to enable analysis.\",\n severity: \"error\"\n }),\n EMPTY_EXCLUDE: ()=>({\n code: \"warn-empty-exclude\",\n message: \"No exclude patterns defined. Performance may degrade.\",\n suggestion: \"Add common exclusions: ['node_modules/**', 'dist/**', '**/*.spec.ts'].\",\n severity: \"warning\"\n }),\n DUPLICATE_PATTERNS: (e, t)=>({\n code: \"warn-duplicate-patterns\",\n message: `Duplicate patterns found in \"${e}\": ${t.map((e)=>`\"${e}\"`).join(\", \")}.`,\n suggestion: \"Remove duplicate entries to simplify configuration.\",\n severity: \"warning\"\n }),\n EMPTY_GLOB_PATTERN: (e)=>({\n code: \"empty-glob-pattern\",\n message: `Empty string detected in \"${e}\" patterns.`,\n suggestion: \"Remove empty strings from the pattern array.\",\n severity: \"error\"\n }),\n TSCONFIG_ROOT_NOT_FOUND: (e)=>({\n code: \"tsconfig-root-not-found\",\n message: `TSConfig root directory not found: \"${e}\".`,\n suggestion: \"Verify the directory exists and the path is correct relative to the config file.\",\n severity: \"error\"\n }),\n TSCONFIG_PROJECT_NOT_FOUND: (e)=>({\n code: \"tsconfig-project-not-found\",\n message: `TSConfig file not found: \"${e}\".`,\n suggestion: \"Verify the file exists and the path is relative to 'tsconfigRootDir' or config location.\",\n severity: \"error\"\n }),\n OUTPUT_PATH_TRAVERSAL: (e)=>({\n code: \"output-path-traversal\",\n message: `Output path contains unsafe traversal (..): \"${e}\".`,\n suggestion: \"Use absolute paths or paths without '..' to prevent security issues.\",\n severity: \"error\"\n }),\n OUTPUT_PATH_SYSTEM_DIR: (e)=>({\n code: \"output-path-system-dir\",\n message: `Output path points to a system directory: \"${e}\".`,\n suggestion: \"Choose a safe output location within your project directory.\",\n severity: \"error\"\n }),\n OUTPUT_PATH_NOT_FOUND: (e)=>({\n code: \"output-path-not-found\",\n message: `Output directory does not exist: \"${e}\".`,\n suggestion: \"Create the directory or update 'outputPath' to an existing location.\",\n severity: \"error\"\n }),\n OUTPUT_PATH_NOT_WRITABLE: (e)=>({\n code: \"output-path-not-writable\",\n message: `Output directory is not writable: \"${e}\".`,\n suggestion: \"Check directory permissions or choose a different output location.\",\n severity: \"error\"\n }),\n CACHE_IN_NODE_MODULES: (e)=>({\n code: \"cache-in-node-modules\",\n message: `Cache location inside 'node_modules' is unsafe: \"${e}\". node_modules can be deleted, causing cache loss.`,\n suggestion: \"Use a different directory like '.cache' or 'node_modules/.cache/ngcompass'.\",\n severity: \"error\"\n }),\n CACHE_PARENT_NOT_FOUND: (e)=>({\n code: \"warn-cache-parent-not-found\",\n message: `Cache parent directory missing: \"${e}\". It will be created automatically.`,\n suggestion: \"No action needed. Directory will be created on first cache write.\",\n severity: \"warning\"\n }),\n INVALID_RULE_SEVERITY: (e, t)=>({\n code: \"invalid-rule-severity\",\n message: `Rule \"${e}\" has invalid severity: \"${t}\".`,\n suggestion: \"Use valid severities: 'off', 'info', 'low', 'moderate', 'high', or 'critical'.\",\n severity: \"error\"\n }),\n NO_RULES_CONFIGURED: ()=>({\n code: \"warn-no-rules-configured\",\n message: \"No rules configured. Analysis effectively skips checks.\",\n suggestion: \"Add rules to enable analysis, or extend from a preset like 'recommended'.\",\n severity: \"warning\"\n }),\n EMPTY_RULE_NAME: ()=>({\n code: \"empty-rule-name\",\n message: \"Empty rule name detected. Rule keys must be non-empty strings.\",\n suggestion: \"Remove empty keys from 'rules' configuration.\",\n severity: \"error\"\n }),\n PROFILE_CIRCULAR_INHERITANCE: (e)=>({\n code: \"profile-circular-inheritance\",\n message: `Circular profile inheritance detected: ${e.join(\" → \")}.`,\n suggestion: \"Break the circular dependency by removing one 'extends' reference.\",\n severity: \"error\"\n }),\n PROFILE_EMPTY: ()=>({\n code: \"warn-profile-empty\",\n message: \"Profiles section is defined but empty. Consider removing it.\",\n suggestion: \"Remove 'profiles: {}' or add at least one profile like 'dev' or 'ci'.\",\n severity: \"warning\"\n }),\n EXTENDS_NOT_FOUND: (e)=>({\n code: \"extends-not-found\",\n message: `Cannot resolve preset \"${e}\". Make sure the package is installed.`,\n suggestion: `Run: npm install --save-dev ${e}`,\n severity: \"error\"\n }),\n DEPRECATED_CACHE_LOCATION: ()=>({\n code: \"warn-deprecated-cache-location\",\n message: \"'cacheLocation' is deprecated. Use 'cache.location' instead.\",\n suggestion: \"Replace 'cacheLocation: \\\"...\\\"' with 'cache: { location: \\\"...\\\" }'.\",\n severity: \"warning\"\n }),\n DEPRECATED_CONCURRENCY: ()=>({\n code: \"warn-deprecated-concurrency\",\n message: \"'concurrency' is deprecated. Use 'maxWorkers' instead.\",\n suggestion: \"Replace 'concurrency: N' with 'maxWorkers: N'.\",\n severity: \"warning\"\n })\n};\n","import { MESSAGES as e } from \"../messages.js\";\nexport function validateConfigBlock(o, r, t = []) {\n let a = [];\n if (void 0 !== o.maxWorkers) {\n let s = 2 * r.os.cpus().length;\n o.maxWorkers < 1 ? a.push({\n ...e.WORKERS_BELOW_MINIMUM(),\n path: [\n ...t,\n \"maxWorkers\"\n ]\n }) : o.maxWorkers > s && a.push({\n ...e.WORKERS_EXCESSIVE(o.maxWorkers, s),\n path: [\n ...t,\n \"maxWorkers\"\n ]\n });\n }\n if (o.cache && \"object\" == typeof o.cache && void 0 !== o.cache.ttl) {\n let { ttl: r } = o.cache, s = [\n ...t,\n \"cache\",\n \"ttl\"\n ];\n r < 0 && a.push({\n ...e.NEGATIVE_CACHE_TTL(r),\n path: s\n });\n }\n return {\n issues: a\n };\n}\n","import { MESSAGES as s } from \"../messages.js\";\nimport { validateConfigBlock as e } from \"./base.js\";\nexport function validateCrossFields(i, r, t = []) {\n let a = [];\n if (void 0 !== i.maxWarnings) {\n let { maxWarnings: e } = i;\n e < 0 && a.push({\n ...s.NEGATIVE_MAX_WARNINGS(e),\n path: [\n ...t,\n \"maxWarnings\"\n ]\n });\n }\n let { issues: o } = e(i, r, t);\n return a.push(...o), {\n issues: a\n };\n}\n","import { createRequire as e } from \"node:module\";\nimport t from \"node:path\";\nimport r from \"node:process\";\nimport { MESSAGES as n } from \"../messages.js\";\nexport function validateExtendsChain(s, o = [], i = r.cwd()) {\n let l = [];\n if (!s.extends) return {\n issues: l\n };\n let u = Array.isArray(s.extends) ? s.extends : [\n s.extends\n ], d = Array.isArray(s.extends);\n for(let r = 0; r < u.length; r++){\n let s = u[r];\n if (!(\"string\" != typeof s || \"\" === s.trim() || function(e) {\n let r = e.startsWith(\".\"), n = t.isAbsolute(e), s = e.includes(\":\");\n return r || n || s;\n }(s)) && null === function(r, n) {\n try {\n let s = t.join(n, \"__resolve_anchor__.cjs\");\n return e(s).resolve(r);\n } catch {\n return null;\n }\n }(s, i)) {\n let e = [\n ...o,\n \"extends\"\n ];\n d && e.push(r), l.push({\n ...n.EXTENDS_NOT_FOUND(s),\n path: e\n });\n }\n }\n return {\n issues: l\n };\n}\n","import { minimatch as e } from \"minimatch\";\nimport { MESSAGES as t } from \"../messages.js\";\nlet n = /\\/\\/\\//, s = /\\{/g, l = /\\}/g;\nexport function validateGlobPatterns(r, i = []) {\n let h = [];\n for (let u of [\n \"include\",\n \"exclude\",\n \"ignorePatterns\"\n ]){\n let a = r[u];\n if (!Array.isArray(a)) continue;\n a.forEach((r, a)=>{\n h.push(...function(r, i, h, u) {\n let a = [], c = [\n ...u,\n r,\n h\n ];\n if (!i || \"\" === i.trim()) return a.push({\n ...t.EMPTY_GLOB_PATTERN(r),\n path: c\n }), a;\n if (i.includes(\"[\") && !i.includes(\"]\")) return a.push({\n ...t.INVALID_GLOB_PATTERN(i, \"unclosed bracket\"),\n path: c\n }), a;\n if (n.test(i) || i.startsWith(\"///\")) return a.push({\n ...t.INVALID_GLOB_PATTERN(i, \"invalid path pattern with multiple slashes\"),\n path: c\n }), a;\n (i.endsWith(\"\\\\\") || i.endsWith(\"/\")) && a.push({\n ...t.INVALID_GLOB_PATTERN(i, \"trailing slash not allowed\"),\n path: c\n }), (i.match(s) || []).length !== (i.match(l) || []).length && a.push({\n ...t.INVALID_GLOB_PATTERN(i, \"unmatched braces\"),\n path: c\n });\n try {\n e(\"sample.ts\", i);\n } catch (e) {\n a.push({\n ...t.INVALID_GLOB_PATTERN(i, e.message),\n path: c\n });\n }\n return a;\n }(u, r, a, i));\n });\n let c = a.filter((e, t)=>a.indexOf(e) !== t);\n c.length > 0 && h.push({\n ...t.DUPLICATE_PATTERNS(u, [\n ...new Set(c)\n ]),\n path: [\n ...i,\n u\n ]\n });\n }\n return r.include && 0 !== r.include.length || h.push({\n ...t.EMPTY_INCLUDE(),\n path: [\n ...i,\n \"include\"\n ]\n }), r.exclude && 0 !== r.exclude.length || h.push({\n ...t.EMPTY_EXCLUDE(),\n path: [\n ...i,\n \"exclude\"\n ]\n }), {\n issues: h\n };\n}\n","import * as s from \"node:fs\";\nimport { MESSAGES as e } from \"../messages.js\";\nlet t = [\n \"/etc/\",\n \"\\\\etc\\\\\",\n \"/var/\",\n \"\\\\var\\\\\"\n], c = \"node_modules\";\nexport function validatePaths(a, o, p = []) {\n let i = [], n = (s)=>o.path.isAbsolute(s) ? s : o.path.resolve(o.cwd ?? process.cwd(), s);\n if (a.outputPath) {\n let { outputPath: c } = a, h = [\n ...p,\n \"outputPath\"\n ];\n c.includes(\"..\") && i.push({\n ...e.OUTPUT_PATH_TRAVERSAL(c),\n path: h\n }), t.some((s)=>c.includes(s)) && i.push({\n ...e.OUTPUT_PATH_SYSTEM_DIR(c),\n path: h\n });\n let r = o.path.dirname(n(c));\n if (o.fs.existsSync(r)) try {\n o.fs.accessSync(r, s.constants.W_OK);\n } catch {\n i.push({\n ...e.OUTPUT_PATH_NOT_WRITABLE(r),\n path: h\n });\n }\n else i.push({\n ...e.OUTPUT_PATH_NOT_FOUND(r),\n path: h\n });\n }\n if (a.cache && \"object\" == typeof a.cache && a.cache.enabled) {\n let { location: s } = a.cache;\n if (s) {\n let t = [\n ...p,\n \"cache\",\n \"location\"\n ], a = s.includes(c), h = s.includes(`${c}/.cache`);\n a && !h && i.push({\n ...e.CACHE_IN_NODE_MODULES(s),\n path: t\n });\n let r = o.path.dirname(n(s));\n o.fs.existsSync(r) || i.push({\n ...e.CACHE_PARENT_NOT_FOUND(r),\n path: t\n });\n }\n }\n if (a.parserOptions) {\n let { project: s, tsconfigRootDir: t } = a.parserOptions, c = s ? n(s) : void 0, h = t ? n(t) : void 0;\n c && !o.fs.existsSync(c) && i.push({\n ...e.TSCONFIG_PROJECT_NOT_FOUND(s),\n path: [\n ...p,\n \"parserOptions\",\n \"project\"\n ]\n }), h && !o.fs.existsSync(h) && i.push({\n ...e.TSCONFIG_ROOT_NOT_FOUND(t),\n path: [\n ...p,\n \"parserOptions\",\n \"tsconfigRootDir\"\n ]\n });\n }\n return {\n issues: i\n };\n}\n","export const SEVERITY_LEVELS = {\n info: 0,\n low: 1,\n warning: 2,\n warn: 2,\n moderate: 2,\n high: 3,\n error: 4,\n critical: 4\n};\nexport const VALID_SEVERITIES = Object.keys(SEVERITY_LEVELS);\nexport const VALID_RULE_SEVERITIES = [\n ...VALID_SEVERITIES,\n \"off\"\n];\n","import { VALID_RULE_SEVERITIES as e } from \"../constants.js\";\nimport { MESSAGES as t } from \"../messages.js\";\nexport function validateRules(s, r = []) {\n let n = [], l = Array.isArray(s.extends) ? s.extends.length > 0 : !!s.extends && s.extends.length > 0, u = Object.entries(s.rules || {});\n for (let [s, i] of (u.length > 0 || l || n.push({\n ...t.NO_RULES_CONFIGURED(),\n path: [\n ...r,\n \"rules\"\n ]\n }), u)){\n if (!s || \"\" === s.trim()) {\n n.push({\n ...t.EMPTY_RULE_NAME(),\n path: [\n ...r,\n \"rules\"\n ]\n });\n continue;\n }\n if (\"object\" == typeof i && null !== i) {\n let { severity: l } = i;\n l && !e.includes(l) && n.push({\n ...t.INVALID_RULE_SEVERITY(s, l),\n path: [\n ...r,\n \"rules\",\n s,\n \"severity\"\n ]\n });\n }\n }\n return {\n issues: n\n };\n}\n","import { MESSAGES as c } from \"../messages.js\";\nexport function validateDeprecatedFields(e, o = []) {\n let n = [];\n return e && \"object\" == typeof e && (\"cacheLocation\" in e && void 0 !== e.cacheLocation && n.push({\n ...c.DEPRECATED_CACHE_LOCATION(),\n path: [\n ...o,\n \"cacheLocation\"\n ]\n }), \"concurrency\" in e && void 0 !== e.concurrency && n.push({\n ...c.DEPRECATED_CONCURRENCY(),\n path: [\n ...o,\n \"concurrency\"\n ]\n })), {\n issues: n\n };\n}\n","import { ASTUtils as t, CACHE_VERSION as e } from \"@ngcompass/common\";\nimport n from \"node:crypto\";\nfunction buildLocationMap(e, n) {\n let o = t.parse(e, n);\n return t.generateLocationMap(o);\n}\nasync function resolveLocationMap(t, n, o, a) {\n if (!o) return buildLocationMap(t, n);\n let i = `v${e}:${a}`, r = await o.get(i);\n if (r) return r.ast;\n let c = buildLocationMap(t, n);\n return await o.set(i, {\n filePath: n,\n ast: c\n }), c;\n}\nexport async function enrichIssueLocations(t, e, o, a, i) {\n if (0 === t.length) return;\n let r = i ?? n.createHash(\"sha1\").update(e).digest(\"hex\"), c = await resolveLocationMap(e, o, a, r);\n for (let e of t){\n if (e.file || (e.file = o), !((!e.line || 1 === e.line) && e.path)) continue;\n let t = c[e.path.join(\".\")];\n t && (e.line = t.line, e.column = t.column);\n }\n}\n","import { defu as e } from \"defu\";\nimport { AnalyzerConfigSchema as s } from \"../schemas/schema.js\";\nimport { createDefaultContext as r } from \"./context.js\";\nimport { validateCrossFields as i, validateExtendsChain as t, validateGlobPatterns as a, validatePaths as o, validateRules as n, validateDeprecatedFields as l } from \"./checks/index.js\";\nimport { enrichIssueLocations as c } from \"./enricher.js\";\nlet BUILTIN_PRESETS = new Set([\n \"recommended\",\n \"strict\",\n \"performance\",\n \"reactivity\",\n \"all\"\n]);\nasync function attachFileLocations(e, s, r, i, t) {\n if (r) return void await c(e, r, s, i, t);\n for (let r of e)r.file || (r.file = s);\n}\nfunction buildValidationResult(e, s) {\n let r, i = [\n ...(r = new Set(), e.filter((e)=>{\n let s = `${e.code}:${e.message}:${JSON.stringify(e.path)}`;\n return !r.has(s) && (r.add(s), !0);\n }))\n ].sort((e, s)=>e.severity === s.severity ? 0 : \"error\" === e.severity ? -1 : 1), t = !i.some((e)=>\"error\" === e.severity);\n return {\n config: t ? s : void 0,\n report: {\n valid: t,\n issues: i\n }\n };\n}\nasync function validateBlock(e) {\n let r, { config: c, context: u, basePath: f = [], filePath: d, fileContent: p, astCache: m, contentHash: v } = e, { issues: h, validated: g, success: y } = (r = s.safeParse(c)).success ? {\n issues: [],\n validated: r.data,\n success: !0\n } : {\n issues: r.error.issues.map((e)=>({\n code: e.code.replace(/_/g, \"-\"),\n message: e.message,\n path: [\n ...f,\n ...e.path\n ],\n severity: \"error\",\n file: d\n })),\n validated: c,\n success: !1\n }, $ = [\n ...h,\n ...function(e, s, r, c, u) {\n let f = [];\n for (let d of [\n {\n name: \"cross-fields\",\n run: ()=>i(e, r, c).issues\n },\n {\n name: \"glob-patterns\",\n run: ()=>a(e, c).issues\n },\n {\n name: \"paths\",\n run: ()=>o(e, r, c).issues\n },\n {\n name: \"rules\",\n run: ()=>n(e, c).issues\n },\n {\n name: \"extends-chain\",\n run: ()=>t(e, c, r.cwd).issues\n },\n {\n name: \"deprecated\",\n run: ()=>l(s, c).issues\n }\n ])try {\n f.push(...d.run());\n } catch (e) {\n f.push({\n code: \"check-failed\",\n message: `Check \"${d.name}\" encountered an unexpected error: ${e.message}`,\n path: c,\n severity: \"error\",\n file: u\n });\n }\n return f;\n }(g, c, u, f, d)\n ];\n return d && await attachFileLocations($, d, p, m, v), {\n issues: $,\n validated: y ? g : void 0\n };\n}\nexport async function validateConfiguration(s, i = r(), t, a, o, n) {\n var l;\n let c = {\n context: i,\n filePath: t,\n fileContent: a,\n astCache: o,\n contentHash: n\n }, u = null === s || \"object\" != typeof s ? {} : s.profiles ?? {};\n if (i.profile) {\n let r = u[i.profile];\n if (!r) {\n let e, s;\n return l = i.profile, e = Object.keys(u).join(\", \"), s = BUILTIN_PRESETS.has(l.replace(/^ngcompass:/, \"\")) ? ` \"${l}\" is a built-in preset, not a config profile. Use 'extends: \"ngcompass:${l.replace(/^ngcompass:/, \"\")}\"' in your config instead.` : \"\", {\n config: void 0,\n report: {\n valid: !1,\n issues: [\n {\n code: \"error-profile-not-found\",\n message: `Profile \"${l}\" not found. Available: [${e}]${s}`,\n path: [\n \"profiles\",\n l\n ],\n severity: \"error\",\n file: t\n }\n ]\n }\n };\n }\n let a = e(r, s), { issues: o, validated: n } = await validateBlock({\n ...c,\n config: a,\n basePath: [\n \"profiles\",\n i.profile\n ]\n });\n return buildValidationResult(o, n);\n }\n let { issues: f, validated: d } = await validateBlock({\n ...c,\n config: s\n });\n return buildValidationResult(f, d);\n}\n","import { findAndLoadConfig as o } from './discovery.js';\nimport { validateConfiguration as t } from '../health/index.js';\nimport { createDefaultContext as e } from '../health/context.js';\nimport { PACKAGE_VERSION as n, CACHE_VERSION as i, debug as r, time as a, timeEnd as s } from '@ngcompass/common';\nimport l from 'node:process';\nexport const resolveConfig = async (t)=>{\n a('config-resolution');\n let { cwd: e = l.cwd(), profile: n, cache: i } = t;\n r('loader', `Starting config resolution (cwd: ${e}, profile: ${n || 'none'})`);\n let c = await o(e), { hash: d, cachedResult: u } = await tryLoadFromCache(c, n, i);\n if (u) {\n let o = s('config-resolution');\n return r('loader', `Cache HIT - returning cached result (${o.toFixed(1)}ms)`), u;\n }\n r('loader', 'Cache MISS - running validation');\n let f = await runValidation(c, n, i);\n r('loader', `Validation complete: ${f.report.valid ? 'valid' : `invalid (${f.report.issues.length} issues)`}`), i && d && (await i.configs.set(d, f), r('loader', `Cached validation result: key=${d.substring(0, 8)}...`));\n let m = s('config-resolution');\n return r('loader', `Config resolution complete: ${m.toFixed(1)}ms`), f;\n};\nasync function tryLoadFromCache(o, t, e) {\n if (!e) return {};\n let a = [\n o?.contentHash ?? '',\n t ?? '',\n n,\n i\n ].join('::'), s = e.computeHash(a);\n r('loader', `Cache lookup: key=${s.substring(0, 8)}...`);\n let l = await e.configs.get(s);\n return {\n hash: s,\n cachedResult: l\n };\n}\nasync function runValidation(o, n, i) {\n return t(o?.config ?? {}, e({\n profile: n\n }), o?.filepath, o?.content, i?.asts, o?.contentHash);\n}\n","import e from 'node:fs/promises';\nimport s from 'node:path';\nimport { findAndLoadConfig as r } from '../loaders/discovery.js';\nexport class ConfigExistsError extends Error {\n constructor(e){\n super(`Configuration file already exists at: ${e}`), this.name = 'ConfigExistsError';\n }\n}\nlet TEMPLATE = `import { defineConfig } from '@ngcompass/config';\n\nexport default defineConfig({\n extends: 'ngcompass:recommended',\n\n include: [\n 'src/**/*.ts',\n 'src/**/*.html',\n ],\n\n exclude: [\n 'node_modules/**',\n 'dist/**',\n 'build/**',\n 'coverage/**',\n '**/*.d.ts',\n '**/*.spec.ts',\n '**/*.test.ts',\n ],\n\n profiles: {\n ci: {\n outputFormat: 'json',\n maxWarnings: 0,\n },\n },\n});\n`;\nexport async function initConfig(t = {}) {\n let o = t.cwd ?? process.cwd(), i = s.join(o, 'ngcompass.config.ts'), n = await r(o);\n if (n && !t.force) return {\n success: !1,\n filePath: n.filepath,\n alreadyExists: !0\n };\n try {\n return await e.writeFile(i, TEMPLATE, 'utf-8'), {\n success: !0,\n filePath: i\n };\n } catch (e) {\n return {\n success: !1,\n filePath: i\n };\n }\n}\n","import { resolveConfig as r } from '../loaders/loader.js';\nexport async function validateConfig(e = {}) {\n try {\n return await r(e);\n } catch (r) {\n return {\n config: void 0,\n report: {\n valid: !1,\n issues: [\n {\n code: \"error-conf-semantic\",\n message: r instanceof Error ? r.message : String(r),\n path: [],\n severity: \"error\"\n }\n ]\n }\n };\n }\n}\n","export function defineConfig(n) {\n return n;\n}\n","import { createRequire as e } from 'node:module';\nimport { warn as r, debug as n, PACKAGE_VERSION as t } from '@ngcompass/common';\nlet DEFAULT_CAPABILITIES = {\n typeCheckingEnabled: !1,\n templateASTEnabled: !0,\n cssASTEnabled: !0\n};\nexport const loadPlugins = async (l, i, a, o = DEFAULT_CAPABILITIES)=>{\n if (0 === l.length) return;\n n('plugin-loader', `Initializing loader for ${l.length} plugin(s) at ${i}`);\n let u = e(i + '/package.json'), s = [];\n for (let e of l)try {\n let l;\n try {\n l = u.resolve(e);\n } catch {\n l = e;\n }\n let i = await import(l), s = i.default ?? i, f = Array.isArray(s) ? s : [\n s\n ], c = 0;\n for (let l of f){\n if (!function(e) {\n if (!e || 'object' != typeof e) return !1;\n let r = e.handler;\n return 'string' == typeof e.name && e.name.length > 0 && r?.handle instanceof Function;\n }(l)) {\n r('plugin-loader', `Plugin \"${e}\" exported an invalid structure. Skipping.`);\n continue;\n }\n let { manifest: i } = l;\n if (i) {\n let e = function(e, r) {\n let n = function(e, r, n, t) {\n let l = r.trim();\n if (!l || '*' === l) return null;\n let i = parseVersion(e);\n if (!i) return null;\n let a = l.startsWith('^') ? function(e) {\n let r = parseVersion(e);\n return r ? `>=${e} <${r[0] + 1}.0.0` : null;\n }(l.slice(1)) : l;\n if (!a) return null;\n for (let l of a.split(/\\s+/).filter(Boolean)){\n let a = l.match(/^(>=|<=|>|<|=|==)(\\d+\\.\\d+\\.\\d+.*)$/);\n if (!a) continue;\n let o = a[1], u = parseVersion(a[2]);\n if (!u) continue;\n let s = function(e, r) {\n for(let n = 0; n < 3; n++)if (e[n] !== r[n]) return e[n] > r[n] ? 1 : -1;\n return 0;\n }(i, u);\n if (!('>=' === o ? s >= 0 : '<=' === o ? s <= 0 : '>' === o ? s > 0 : '<' === o ? s < 0 : 0 === s)) return `Plugin \"${n}@${t}\" requires engine \"${r}\", found \"${e}\".`;\n }\n return null;\n }(t.replace(/^v/, ''), e.engineVersionRange, e.name, e.version);\n if (n) return n;\n for (let n of [\n {\n key: 'requiresTypeInfo',\n current: r.typeCheckingEnabled,\n label: 'Type Information'\n },\n {\n key: 'requiresTemplateAST',\n current: r.templateASTEnabled,\n label: 'Template AST'\n },\n {\n key: 'requiresCssAST',\n current: r.cssASTEnabled,\n label: 'CSS AST'\n }\n ])if (e.capabilities?.[n.key] && !n.current) return `Plugin \"${e.name}@${e.version}\" requires ${n.label} support, which is currently disabled.`;\n return null;\n }(i, o);\n if (e) throw Error(e);\n n('plugin-loader', `❯ Validated: ${i.name}@${i.version}`);\n } else r('plugin-loader', `Plugin \"${e}\" is missing a manifest. Please update for future compatibility.`);\n a.register(l), c++, n('plugin-loader', `❯ Registered Rule: ${l.name}`);\n }\n n('plugin-loader', `Plugin \"${e}\" processed: ${c} rules active.`);\n } catch (n) {\n let r = n instanceof Error ? n.message : String(n);\n s.push(`- \"${e}\": ${r}`);\n }\n if (s.length > 0) throw Error(`[ngcompass] Plugin Load Failure:\\n${s.join('\\n')}\\nEnsure plugins are installed and satisfy version requirements.`);\n};\nfunction parseVersion(e) {\n let r = e.trim().match(/^v?\\.?(\\d+)\\.(\\d+)\\.(\\d+)(?:[-+].*)?$/);\n return r ? [\n Number(r[1]),\n Number(r[2]),\n Number(r[3])\n ] : null;\n}\n"]}
1
+ {"version":3,"sources":["../src/schemas/defaults.ts","../src/schemas/schema.ts","../src/loaders/discovery.ts","../src/health/context.ts","../src/health/messages.ts","../src/health/checks/base.ts","../src/health/checks/cross-fields.ts","../src/health/checks/extends.ts","../src/health/checks/globs.ts","../src/health/checks/paths.ts","../src/health/constants.ts","../src/health/checks/rules.ts","../src/health/checks/deprecated.ts","../src/health/enricher.ts","../src/health/validator.ts","../src/loaders/loader.ts","../src/actions/init.ts","../src/actions/healthcheck.ts","../src/define-config.ts","../src/plugin-loader.ts"],"names":["getDefaultMaxWorkers","Math","max","min","os","cpus","length","DEFAULT_CACHE_OPTIONS","enabled","location","strategy","ttl","DEFAULT_CONFIG","outputFormat","failOnSeverity","maxWarnings","include","exclude","SeveritySchema","z","enum","OutputFormatSchema","RuleDefinitionSchema","union","literal","object","severity","options","record","string","unknown","optional","CacheOptionsSchema","boolean","number","ParserOptionsSchema","project","tsconfigRootDir","sourceType","ecmaVersion","BaseAnalyzerConfigSchema","extends","array","default","maxWorkers","concurrency","cache","cacheLocation","outputPath","ignorePatterns","rules","overrides","files","parserOptions","ProfileConfigSchema","lazy","partial","AnalyzerConfigSchema","extend","profiles","transform","data","undefined","MODULE_NAME","SEARCH_PLACES","jitiLoader","filepath","currentFile","fileURLToPath","url","createJiti","alias","path","basename","startsWith","URL","import","then","mod","jsonLoader","_filepath","content","JSON","parse","replace","findAndLoadConfig","cwd","process","time","debug","explorer","lilconfig","searchPlaces","loaders","noExt","result","search","timeEnd","contentHash","fs","readFileSync","crypto","createHash","update","digest","hashTime","substring","toFixed","discoveryTime","config","isEmpty","createDefaultContext","existsSync","accessSync","p","mode","dirname","resolve","isAbsolute","MESSAGES","NEGATIVE_MAX_WARNINGS","val","code","message","suggestion","WORKERS_BELOW_MINIMUM","NEGATIVE_CACHE_TTL","WORKERS_EXCESSIVE","workers","limit","CACHE_TTL_ZERO","INVALID_GLOB_PATTERN","pattern","error","EMPTY_INCLUDE","EMPTY_EXCLUDE","DUPLICATE_PATTERNS","field","patterns","map","join","EMPTY_GLOB_PATTERN","TSCONFIG_ROOT_NOT_FOUND","TSCONFIG_PROJECT_NOT_FOUND","OUTPUT_PATH_TRAVERSAL","OUTPUT_PATH_SYSTEM_DIR","OUTPUT_PATH_NOT_FOUND","dir","OUTPUT_PATH_NOT_WRITABLE","CACHE_IN_NODE_MODULES","CACHE_PARENT_NOT_FOUND","INVALID_RULE_SEVERITY","ruleName","NO_RULES_CONFIGURED","EMPTY_RULE_NAME","PROFILE_CIRCULAR_INHERITANCE","chain","PROFILE_EMPTY","EXTENDS_NOT_FOUND","preset","DEPRECATED_CACHE_LOCATION","DEPRECATED_CONCURRENCY","validateConfigBlock","block","context","basePath","issues","workerLimit","push","validateCrossFields","blockIssues","validateExtendsChain","extendsList","Array","isArray","i","trim","isLocal","nodePath","isPluginSpecifier","includes","anchorFile","createRequire","issuePath","n","s","l","validateGlobPatterns","forEach","index","GLOB_RULES","test","endsWith","match","minimatch","err","duplicates","filter","item","indexOf","Set","t","c","validatePaths","resolveFromCwd","targetPath","PATH_RULES","some","constants","W_OK","isInNodeModules","isStandardCache","cacheDir","resolvedProject","resolvedTsconfigRootDir","SEVERITY_LEVELS","info","low","warning","warn","moderate","high","critical","VALID_SEVERITIES","Object","keys","VALID_RULE_SEVERITIES","validateRules","hasExtends","ruleEntries","entries","ruleConfig","validateDeprecatedFields","rawConfig","buildLocationMap","fileContent","filePath","sourceFile","ASTUtils","generateLocationMap","resolveLocationMap","astCache","versionedKey","CACHE_VERSION","cachedEntry","get","ast","locationMap","set","enrichIssueLocations","hash","issue","file","line","column","BUILTIN_PRESETS","attachFileLocations","buildValidationResult","finalConfig","seen","unique","key","stringify","has","add","sort","a","b","valid","report","validateBlock","schemaIssues","validated","success","safeParse","allIssues","check","name","run","validateConfiguration","profile","baseOptions","availableProfiles","profileConfig","available","presetHint","merged","defu","resolveConfig","loaded","cachedResult","tryLoadFromCache","resolutionTime","runValidation","configs","hashInput","PACKAGE_VERSION","computeHash","asts","ConfigExistsError","Error","TEMPLATE","initConfig","existing","force","alreadyExists","writeFile","validateConfig","String","defineConfig","DEFAULT_CAPABILITIES","typeCheckingEnabled","templateASTEnabled","cssASTEnabled","loadPlugins","plugins","configDir","registry","capabilities","_require","pluginErrors","pluginRef","resolvedPath","module","rawExport","pluginList","registeredCount","plugin","value","handler","handle","Function","manifest","rangeError","currentVersion","range","pluginName","pluginVersion","trimmed","current","parseVersion","expanded","base","parsed","slice","constraint","split","Boolean","op","required","diff","engineVersionRange","version","req","label","register","e","v","Number"],"mappings":"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","file":"index.js","sourcesContent":["import t from 'node:os';\nexport const getDefaultMaxWorkers = ()=>Math.max(1, Math.min(4, t.cpus().length - 1));\nexport const DEFAULT_CACHE_OPTIONS = {\n enabled: !0,\n location: 'node_modules/.cache/ngcompass',\n strategy: 'local',\n ttl: 86400000\n};\nexport const DEFAULT_CONFIG = {\n outputFormat: 'text',\n failOnSeverity: 'error',\n maxWarnings: 10,\n include: [\n 'src/**/*.ts'\n ],\n exclude: [\n 'node_modules/**',\n 'dist/**',\n '**/*.spec.ts',\n '**/*.test.ts'\n ]\n};\n","import { z as e } from 'zod';\nimport { DEFAULT_CONFIG as o, DEFAULT_CACHE_OPTIONS as n, getDefaultMaxWorkers as r } from './defaults.js';\nlet SeveritySchema = e.enum([\n 'warn',\n 'error'\n]), OutputFormatSchema = e.enum([\n 'json',\n 'text',\n 'sarif',\n 'html'\n]), RuleDefinitionSchema = e.union([\n SeveritySchema,\n e.literal('off'),\n e.object({\n severity: e.union([\n SeveritySchema,\n e.literal('off')\n ]),\n options: e.record(e.string(), e.unknown()).optional()\n })\n]), CacheOptionsSchema = e.object({\n enabled: e.boolean().optional(),\n location: e.string().optional(),\n strategy: e.enum([\n 'memory',\n 'local'\n ]).optional(),\n ttl: e.number().optional()\n}), ParserOptionsSchema = e.object({\n project: e.string().optional(),\n tsconfigRootDir: e.string().optional(),\n sourceType: e.enum([\n 'module',\n 'commonjs'\n ]).optional(),\n ecmaVersion: e.number().optional()\n}), BaseAnalyzerConfigSchema = e.object({\n extends: e.union([\n e.string(),\n e.array(e.string())\n ]).optional(),\n include: e.array(e.string()).default([\n ...o.include\n ]),\n exclude: e.array(e.string()).default([\n ...o.exclude\n ]),\n maxWorkers: e.number().optional(),\n concurrency: e.number().optional(),\n cache: e.union([\n e.boolean(),\n CacheOptionsSchema\n ]).optional(),\n cacheLocation: e.string().optional(),\n outputFormat: OutputFormatSchema.default(o.outputFormat),\n outputPath: e.string().optional(),\n failOnSeverity: SeveritySchema.default(o.failOnSeverity),\n maxWarnings: e.number().default(o.maxWarnings),\n ignorePatterns: e.array(e.string()).optional(),\n rules: e.record(e.string(), RuleDefinitionSchema).optional(),\n overrides: e.array(e.object({\n files: e.union([\n e.string(),\n e.array(e.string())\n ]),\n rules: e.record(e.string(), RuleDefinitionSchema).optional()\n })).optional(),\n parserOptions: ParserOptionsSchema.optional()\n});\nexport const ProfileConfigSchema = e.lazy(()=>BaseAnalyzerConfigSchema.partial());\nexport const AnalyzerConfigSchema = BaseAnalyzerConfigSchema.extend({\n profiles: e.record(e.string(), ProfileConfigSchema).optional()\n}).transform((e)=>{\n let o, t = e.maxWorkers ?? e.concurrency ?? r();\n if (!1 === e.cache) o = {\n ...n,\n enabled: !1\n };\n else if (!0 === e.cache || void 0 === e.cache) {\n let r = e.cacheLocation ?? n.location;\n o = {\n ...n,\n location: r\n };\n } else o = {\n ...n,\n ...e.cache\n };\n return {\n ...e,\n maxWorkers: t,\n cache: o,\n rules: e.rules ?? {},\n overrides: e.overrides ?? [],\n ignorePatterns: e.ignorePatterns ?? []\n };\n});\n","import { lilconfig as o } from 'lilconfig';\nimport { createJiti as e } from 'jiti';\nimport i from 'node:fs';\nimport t from 'node:crypto';\nimport r from 'node:path';\nimport { fileURLToPath as n } from 'node:url';\nimport { debug as s, time as c, timeEnd as a } from '@ngcompass/common';\nlet MODULE_NAME = 'ngcompass', SEARCH_PLACES = [\n `${MODULE_NAME}.config.ts`,\n `${MODULE_NAME}.config.js`,\n `${MODULE_NAME}.config.mjs`,\n `${MODULE_NAME}.config.cjs`,\n `${MODULE_NAME}.config.json`,\n `.${MODULE_NAME}rc`,\n `.${MODULE_NAME}rc.json`,\n 'package.json'\n], jitiLoader = (o)=>{\n let i = n(import.meta.url);\n return e(o, {\n alias: {\n '@ngcompass/config': r.basename(i).startsWith('index.') ? i : n(new URL('../index.ts', import.meta.url))\n }\n }).import(o).then((o)=>o && 'object' == typeof o && 'default' in o ? o.default ?? o : o);\n}, jsonLoader = (o, e)=>JSON.parse(e.replace(/^\\uFEFF/, ''));\nexport const findAndLoadConfig = async (e = process.cwd())=>{\n c('config-discovery'), s('discovery', `Searching for config in: ${e}`);\n let r = o(MODULE_NAME, {\n searchPlaces: SEARCH_PLACES,\n loaders: {\n '.ts': jitiLoader,\n '.js': jitiLoader,\n '.mjs': jitiLoader,\n '.cjs': jitiLoader,\n '.json': jsonLoader,\n noExt: jsonLoader\n }\n }), n = await r.search(e);\n if (!n) return s('discovery', 'No config file found'), a('config-discovery'), null;\n s('discovery', `Found config: ${n.filepath}`);\n let f = '', d = '';\n c('content-hash');\n try {\n f = i.readFileSync(n.filepath, 'utf-8'), d = t.createHash('sha1').update(f).digest('hex');\n let o = a('content-hash');\n s('discovery', `Content hash: ${d.substring(0, 8)}... (${o.toFixed(1)}ms)`);\n } catch {}\n let m = a('config-discovery');\n return s('discovery', `Discovery complete: ${m.toFixed(1)}ms`), {\n config: n.config,\n filepath: n.filepath,\n content: f,\n contentHash: d,\n isEmpty: n.isEmpty\n };\n};\n","import * as e from \"node:fs\";\nimport * as o from \"node:path\";\nimport { cpus as s } from \"node:os\";\nimport r from \"node:process\";\nexport function createDefaultContext(t) {\n return {\n cwd: r.cwd(),\n fs: {\n existsSync: e.existsSync,\n accessSync: (o, s)=>e.accessSync(o, s)\n },\n os: {\n cpus: s\n },\n path: {\n dirname: o.dirname,\n resolve: o.resolve,\n isAbsolute: o.isAbsolute\n },\n ...t\n };\n}\n","export const MESSAGES = {\n NEGATIVE_MAX_WARNINGS: (e)=>({\n code: \"negative-max-warnings\",\n message: `Value for 'maxWarnings' must be non-negative. Received: ${e}.`,\n suggestion: \"Set 'maxWarnings' to 0 or higher, or remove it to use default (10).\",\n severity: \"error\"\n }),\n WORKERS_BELOW_MINIMUM: ()=>({\n code: \"workers-below-minimum\",\n message: \"Value for 'maxWorkers' must be at least 1.\",\n suggestion: \"Set to 1 or higher, or remove to use default (CPU count - 1).\",\n severity: \"error\"\n }),\n NEGATIVE_CACHE_TTL: (e)=>({\n code: \"negative-cache-ttl\",\n message: `Cache TTL must be non-negative. Received: ${e}ms.`,\n suggestion: \"Set to 0 (default TTL) or higher. Example: 86400000 for 24 hours.\",\n severity: \"error\"\n }),\n WORKERS_EXCESSIVE: (e, t)=>({\n code: \"warn-workers-excessive\",\n message: `Worker count (${e}) exceeds CPU count (${t}). May cause context switching overhead.`,\n suggestion: `Reduce to ${t} or lower for optimal performance.`,\n severity: \"warning\"\n }),\n CACHE_TTL_ZERO: ()=>({\n code: \"warn-cache-ttl-zero\",\n message: \"Cache TTL is set to 0. Using driver default TTL (typically 24 hours).\",\n suggestion: \"Set explicit TTL if you need different cache expiration behavior.\",\n severity: \"warning\"\n }),\n INVALID_GLOB_PATTERN: (e, t)=>({\n code: \"invalid-glob-pattern\",\n message: `Glob pattern \"${e}\" is invalid. Error: ${t}.`,\n suggestion: \"Check pattern syntax. Valid examples: 'src/**/*.ts', '**/*.{ts,html}'.\",\n severity: \"error\"\n }),\n EMPTY_INCLUDE: ()=>({\n code: \"empty-include\",\n message: \"No include patterns defined. Analysis will skip all files.\",\n suggestion: \"Add patterns like ['src/**/*.ts', 'src/**/*.html'] to enable analysis.\",\n severity: \"error\"\n }),\n EMPTY_EXCLUDE: ()=>({\n code: \"warn-empty-exclude\",\n message: \"No exclude patterns defined. Performance may degrade.\",\n suggestion: \"Add common exclusions: ['node_modules/**', 'dist/**', '**/*.spec.ts'].\",\n severity: \"warning\"\n }),\n DUPLICATE_PATTERNS: (e, t)=>({\n code: \"warn-duplicate-patterns\",\n message: `Duplicate patterns found in \"${e}\": ${t.map((e)=>`\"${e}\"`).join(\", \")}.`,\n suggestion: \"Remove duplicate entries to simplify configuration.\",\n severity: \"warning\"\n }),\n EMPTY_GLOB_PATTERN: (e)=>({\n code: \"empty-glob-pattern\",\n message: `Empty string detected in \"${e}\" patterns.`,\n suggestion: \"Remove empty strings from the pattern array.\",\n severity: \"error\"\n }),\n TSCONFIG_ROOT_NOT_FOUND: (e)=>({\n code: \"tsconfig-root-not-found\",\n message: `TSConfig root directory not found: \"${e}\".`,\n suggestion: \"Verify the directory exists and the path is correct relative to the config file.\",\n severity: \"error\"\n }),\n TSCONFIG_PROJECT_NOT_FOUND: (e)=>({\n code: \"tsconfig-project-not-found\",\n message: `TSConfig file not found: \"${e}\".`,\n suggestion: \"Verify the file exists and the path is relative to 'tsconfigRootDir' or config location.\",\n severity: \"error\"\n }),\n OUTPUT_PATH_TRAVERSAL: (e)=>({\n code: \"output-path-traversal\",\n message: `Output path contains unsafe traversal (..): \"${e}\".`,\n suggestion: \"Use absolute paths or paths without '..' to prevent security issues.\",\n severity: \"error\"\n }),\n OUTPUT_PATH_SYSTEM_DIR: (e)=>({\n code: \"output-path-system-dir\",\n message: `Output path points to a system directory: \"${e}\".`,\n suggestion: \"Choose a safe output location within your project directory.\",\n severity: \"error\"\n }),\n OUTPUT_PATH_NOT_FOUND: (e)=>({\n code: \"output-path-not-found\",\n message: `Output directory does not exist: \"${e}\".`,\n suggestion: \"Create the directory or update 'outputPath' to an existing location.\",\n severity: \"error\"\n }),\n OUTPUT_PATH_NOT_WRITABLE: (e)=>({\n code: \"output-path-not-writable\",\n message: `Output directory is not writable: \"${e}\".`,\n suggestion: \"Check directory permissions or choose a different output location.\",\n severity: \"error\"\n }),\n CACHE_IN_NODE_MODULES: (e)=>({\n code: \"cache-in-node-modules\",\n message: `Cache location inside 'node_modules' is unsafe: \"${e}\". node_modules can be deleted, causing cache loss.`,\n suggestion: \"Use a different directory like '.cache' or 'node_modules/.cache/ngcompass'.\",\n severity: \"error\"\n }),\n CACHE_PARENT_NOT_FOUND: (e)=>({\n code: \"warn-cache-parent-not-found\",\n message: `Cache parent directory missing: \"${e}\". It will be created automatically.`,\n suggestion: \"No action needed. Directory will be created on first cache write.\",\n severity: \"warning\"\n }),\n INVALID_RULE_SEVERITY: (e, t)=>({\n code: \"invalid-rule-severity\",\n message: `Rule \"${e}\" has invalid severity: \"${t}\".`,\n suggestion: \"Use valid severities: 'off', 'info', 'low', 'moderate', 'high', or 'critical'.\",\n severity: \"error\"\n }),\n NO_RULES_CONFIGURED: ()=>({\n code: \"warn-no-rules-configured\",\n message: \"No rules configured. Analysis effectively skips checks.\",\n suggestion: \"Add rules to enable analysis, or extend from a preset like 'recommended'.\",\n severity: \"warning\"\n }),\n EMPTY_RULE_NAME: ()=>({\n code: \"empty-rule-name\",\n message: \"Empty rule name detected. Rule keys must be non-empty strings.\",\n suggestion: \"Remove empty keys from 'rules' configuration.\",\n severity: \"error\"\n }),\n PROFILE_CIRCULAR_INHERITANCE: (e)=>({\n code: \"profile-circular-inheritance\",\n message: `Circular profile inheritance detected: ${e.join(\" → \")}.`,\n suggestion: \"Break the circular dependency by removing one 'extends' reference.\",\n severity: \"error\"\n }),\n PROFILE_EMPTY: ()=>({\n code: \"warn-profile-empty\",\n message: \"Profiles section is defined but empty. Consider removing it.\",\n suggestion: \"Remove 'profiles: {}' or add at least one profile like 'dev' or 'ci'.\",\n severity: \"warning\"\n }),\n EXTENDS_NOT_FOUND: (e)=>({\n code: \"extends-not-found\",\n message: `Cannot resolve preset \"${e}\". Make sure the package is installed.`,\n suggestion: `Run: npm install --save-dev ${e}`,\n severity: \"error\"\n }),\n DEPRECATED_CACHE_LOCATION: ()=>({\n code: \"warn-deprecated-cache-location\",\n message: \"'cacheLocation' is deprecated. Use 'cache.location' instead.\",\n suggestion: \"Replace 'cacheLocation: \\\"...\\\"' with 'cache: { location: \\\"...\\\" }'.\",\n severity: \"warning\"\n }),\n DEPRECATED_CONCURRENCY: ()=>({\n code: \"warn-deprecated-concurrency\",\n message: \"'concurrency' is deprecated. Use 'maxWorkers' instead.\",\n suggestion: \"Replace 'concurrency: N' with 'maxWorkers: N'.\",\n severity: \"warning\"\n })\n};\n","import { MESSAGES as e } from \"../messages.js\";\nexport function validateConfigBlock(o, r, t = []) {\n let a = [];\n if (void 0 !== o.maxWorkers) {\n let s = 2 * r.os.cpus().length;\n o.maxWorkers < 1 ? a.push({\n ...e.WORKERS_BELOW_MINIMUM(),\n path: [\n ...t,\n \"maxWorkers\"\n ]\n }) : o.maxWorkers > s && a.push({\n ...e.WORKERS_EXCESSIVE(o.maxWorkers, s),\n path: [\n ...t,\n \"maxWorkers\"\n ]\n });\n }\n if (o.cache && \"object\" == typeof o.cache && void 0 !== o.cache.ttl) {\n let { ttl: r } = o.cache, s = [\n ...t,\n \"cache\",\n \"ttl\"\n ];\n r < 0 && a.push({\n ...e.NEGATIVE_CACHE_TTL(r),\n path: s\n });\n }\n return {\n issues: a\n };\n}\n","import { MESSAGES as s } from \"../messages.js\";\nimport { validateConfigBlock as e } from \"./base.js\";\nexport function validateCrossFields(i, r, t = []) {\n let a = [];\n if (void 0 !== i.maxWarnings) {\n let { maxWarnings: e } = i;\n e < 0 && a.push({\n ...s.NEGATIVE_MAX_WARNINGS(e),\n path: [\n ...t,\n \"maxWarnings\"\n ]\n });\n }\n let { issues: o } = e(i, r, t);\n return a.push(...o), {\n issues: a\n };\n}\n","import { createRequire as e } from \"node:module\";\nimport t from \"node:path\";\nimport r from \"node:process\";\nimport { MESSAGES as n } from \"../messages.js\";\nexport function validateExtendsChain(s, o = [], i = r.cwd()) {\n let l = [];\n if (!s.extends) return {\n issues: l\n };\n let u = Array.isArray(s.extends) ? s.extends : [\n s.extends\n ], d = Array.isArray(s.extends);\n for(let r = 0; r < u.length; r++){\n let s = u[r];\n if (!(\"string\" != typeof s || \"\" === s.trim() || function(e) {\n let r = e.startsWith(\".\"), n = t.isAbsolute(e), s = e.includes(\":\");\n return r || n || s;\n }(s)) && null === function(r, n) {\n try {\n let s = t.join(n, \"__resolve_anchor__.cjs\");\n return e(s).resolve(r);\n } catch {\n return null;\n }\n }(s, i)) {\n let e = [\n ...o,\n \"extends\"\n ];\n d && e.push(r), l.push({\n ...n.EXTENDS_NOT_FOUND(s),\n path: e\n });\n }\n }\n return {\n issues: l\n };\n}\n","import { minimatch as e } from \"minimatch\";\nimport { MESSAGES as t } from \"../messages.js\";\nlet n = /\\/\\/\\//, s = /\\{/g, l = /\\}/g;\nexport function validateGlobPatterns(r, i = []) {\n let h = [];\n for (let u of [\n \"include\",\n \"exclude\",\n \"ignorePatterns\"\n ]){\n let a = r[u];\n if (!Array.isArray(a)) continue;\n a.forEach((r, a)=>{\n h.push(...function(r, i, h, u) {\n let a = [], c = [\n ...u,\n r,\n h\n ];\n if (!i || \"\" === i.trim()) return a.push({\n ...t.EMPTY_GLOB_PATTERN(r),\n path: c\n }), a;\n if (i.includes(\"[\") && !i.includes(\"]\")) return a.push({\n ...t.INVALID_GLOB_PATTERN(i, \"unclosed bracket\"),\n path: c\n }), a;\n if (n.test(i) || i.startsWith(\"///\")) return a.push({\n ...t.INVALID_GLOB_PATTERN(i, \"invalid path pattern with multiple slashes\"),\n path: c\n }), a;\n (i.endsWith(\"\\\\\") || i.endsWith(\"/\")) && a.push({\n ...t.INVALID_GLOB_PATTERN(i, \"trailing slash not allowed\"),\n path: c\n }), (i.match(s) || []).length !== (i.match(l) || []).length && a.push({\n ...t.INVALID_GLOB_PATTERN(i, \"unmatched braces\"),\n path: c\n });\n try {\n e(\"sample.ts\", i);\n } catch (e) {\n a.push({\n ...t.INVALID_GLOB_PATTERN(i, e.message),\n path: c\n });\n }\n return a;\n }(u, r, a, i));\n });\n let c = a.filter((e, t)=>a.indexOf(e) !== t);\n c.length > 0 && h.push({\n ...t.DUPLICATE_PATTERNS(u, [\n ...new Set(c)\n ]),\n path: [\n ...i,\n u\n ]\n });\n }\n return r.include && 0 !== r.include.length || h.push({\n ...t.EMPTY_INCLUDE(),\n path: [\n ...i,\n \"include\"\n ]\n }), r.exclude && 0 !== r.exclude.length || h.push({\n ...t.EMPTY_EXCLUDE(),\n path: [\n ...i,\n \"exclude\"\n ]\n }), {\n issues: h\n };\n}\n","import * as s from \"node:fs\";\nimport { MESSAGES as e } from \"../messages.js\";\nlet t = [\n \"/etc/\",\n \"\\\\etc\\\\\",\n \"/var/\",\n \"\\\\var\\\\\"\n], c = \"node_modules\";\nexport function validatePaths(a, o, p = []) {\n let i = [], n = (s)=>o.path.isAbsolute(s) ? s : o.path.resolve(o.cwd ?? process.cwd(), s);\n if (a.outputPath) {\n let { outputPath: c } = a, h = [\n ...p,\n \"outputPath\"\n ];\n c.includes(\"..\") && i.push({\n ...e.OUTPUT_PATH_TRAVERSAL(c),\n path: h\n }), t.some((s)=>c.includes(s)) && i.push({\n ...e.OUTPUT_PATH_SYSTEM_DIR(c),\n path: h\n });\n let r = o.path.dirname(n(c));\n if (o.fs.existsSync(r)) try {\n o.fs.accessSync(r, s.constants.W_OK);\n } catch {\n i.push({\n ...e.OUTPUT_PATH_NOT_WRITABLE(r),\n path: h\n });\n }\n else i.push({\n ...e.OUTPUT_PATH_NOT_FOUND(r),\n path: h\n });\n }\n if (a.cache && \"object\" == typeof a.cache && a.cache.enabled) {\n let { location: s } = a.cache;\n if (s) {\n let t = [\n ...p,\n \"cache\",\n \"location\"\n ], a = s.includes(c), h = s.includes(`${c}/.cache`);\n a && !h && i.push({\n ...e.CACHE_IN_NODE_MODULES(s),\n path: t\n });\n let r = o.path.dirname(n(s));\n o.fs.existsSync(r) || i.push({\n ...e.CACHE_PARENT_NOT_FOUND(r),\n path: t\n });\n }\n }\n if (a.parserOptions) {\n let { project: s, tsconfigRootDir: t } = a.parserOptions, c = s ? n(s) : void 0, h = t ? n(t) : void 0;\n c && !o.fs.existsSync(c) && i.push({\n ...e.TSCONFIG_PROJECT_NOT_FOUND(s),\n path: [\n ...p,\n \"parserOptions\",\n \"project\"\n ]\n }), h && !o.fs.existsSync(h) && i.push({\n ...e.TSCONFIG_ROOT_NOT_FOUND(t),\n path: [\n ...p,\n \"parserOptions\",\n \"tsconfigRootDir\"\n ]\n });\n }\n return {\n issues: i\n };\n}\n","export const SEVERITY_LEVELS = {\n info: 0,\n low: 1,\n warning: 2,\n warn: 2,\n moderate: 2,\n high: 3,\n error: 4,\n critical: 4\n};\nexport const VALID_SEVERITIES = Object.keys(SEVERITY_LEVELS);\nexport const VALID_RULE_SEVERITIES = [\n ...VALID_SEVERITIES,\n \"off\"\n];\n","import { VALID_RULE_SEVERITIES as e } from \"../constants.js\";\nimport { MESSAGES as t } from \"../messages.js\";\nexport function validateRules(s, r = []) {\n let n = [], l = Array.isArray(s.extends) ? s.extends.length > 0 : !!s.extends && s.extends.length > 0, u = Object.entries(s.rules || {});\n for (let [s, i] of (u.length > 0 || l || n.push({\n ...t.NO_RULES_CONFIGURED(),\n path: [\n ...r,\n \"rules\"\n ]\n }), u)){\n if (!s || \"\" === s.trim()) {\n n.push({\n ...t.EMPTY_RULE_NAME(),\n path: [\n ...r,\n \"rules\"\n ]\n });\n continue;\n }\n if (\"object\" == typeof i && null !== i) {\n let { severity: l } = i;\n l && !e.includes(l) && n.push({\n ...t.INVALID_RULE_SEVERITY(s, l),\n path: [\n ...r,\n \"rules\",\n s,\n \"severity\"\n ]\n });\n }\n }\n return {\n issues: n\n };\n}\n","import { MESSAGES as c } from \"../messages.js\";\nexport function validateDeprecatedFields(e, o = []) {\n let n = [];\n return e && \"object\" == typeof e && (\"cacheLocation\" in e && void 0 !== e.cacheLocation && n.push({\n ...c.DEPRECATED_CACHE_LOCATION(),\n path: [\n ...o,\n \"cacheLocation\"\n ]\n }), \"concurrency\" in e && void 0 !== e.concurrency && n.push({\n ...c.DEPRECATED_CONCURRENCY(),\n path: [\n ...o,\n \"concurrency\"\n ]\n })), {\n issues: n\n };\n}\n","import { ASTUtils as t, CACHE_VERSION as e } from \"@ngcompass/common\";\nimport n from \"node:crypto\";\nfunction buildLocationMap(e, n) {\n let o = t.parse(e, n);\n return t.generateLocationMap(o);\n}\nasync function resolveLocationMap(t, n, o, a) {\n if (!o) return buildLocationMap(t, n);\n let i = `v${e}:${a}`, r = await o.get(i);\n if (r) return r.ast;\n let c = buildLocationMap(t, n);\n return await o.set(i, {\n filePath: n,\n ast: c\n }), c;\n}\nexport async function enrichIssueLocations(t, e, o, a, i) {\n if (0 === t.length) return;\n let r = i ?? n.createHash(\"sha1\").update(e).digest(\"hex\"), c = await resolveLocationMap(e, o, a, r);\n for (let e of t){\n if (e.file || (e.file = o), !((!e.line || 1 === e.line) && e.path)) continue;\n let t = c[e.path.join(\".\")];\n t && (e.line = t.line, e.column = t.column);\n }\n}\n","import { defu as e } from \"defu\";\nimport { AnalyzerConfigSchema as s } from \"../schemas/schema.js\";\nimport { createDefaultContext as r } from \"./context.js\";\nimport { validateCrossFields as i, validateExtendsChain as t, validateGlobPatterns as a, validatePaths as o, validateRules as n, validateDeprecatedFields as l } from \"./checks/index.js\";\nimport { enrichIssueLocations as c } from \"./enricher.js\";\nlet BUILTIN_PRESETS = new Set([\n \"recommended\",\n \"strict\",\n \"performance\",\n \"reactivity\",\n \"all\"\n]);\nasync function attachFileLocations(e, s, r, i, t) {\n if (r) return void await c(e, r, s, i, t);\n for (let r of e)r.file || (r.file = s);\n}\nfunction buildValidationResult(e, s) {\n let r, i = [\n ...(r = new Set(), e.filter((e)=>{\n let s = `${e.code}:${e.message}:${JSON.stringify(e.path)}`;\n return !r.has(s) && (r.add(s), !0);\n }))\n ].sort((e, s)=>e.severity === s.severity ? 0 : \"error\" === e.severity ? -1 : 1), t = !i.some((e)=>\"error\" === e.severity);\n return {\n config: t ? s : void 0,\n report: {\n valid: t,\n issues: i\n }\n };\n}\nasync function validateBlock(e) {\n let r, { config: c, context: u, basePath: f = [], filePath: d, fileContent: p, astCache: m, contentHash: v } = e, { issues: h, validated: g, success: y } = (r = s.safeParse(c)).success ? {\n issues: [],\n validated: r.data,\n success: !0\n } : {\n issues: r.error.issues.map((e)=>({\n code: e.code.replace(/_/g, \"-\"),\n message: e.message,\n path: [\n ...f,\n ...e.path\n ],\n severity: \"error\",\n file: d\n })),\n validated: c,\n success: !1\n }, $ = [\n ...h,\n ...function(e, s, r, c, u) {\n let f = [];\n for (let d of [\n {\n name: \"cross-fields\",\n run: ()=>i(e, r, c).issues\n },\n {\n name: \"glob-patterns\",\n run: ()=>a(e, c).issues\n },\n {\n name: \"paths\",\n run: ()=>o(e, r, c).issues\n },\n {\n name: \"rules\",\n run: ()=>n(e, c).issues\n },\n {\n name: \"extends-chain\",\n run: ()=>t(e, c, r.cwd).issues\n },\n {\n name: \"deprecated\",\n run: ()=>l(s, c).issues\n }\n ])try {\n f.push(...d.run());\n } catch (e) {\n f.push({\n code: \"check-failed\",\n message: `Check \"${d.name}\" encountered an unexpected error: ${e.message}`,\n path: c,\n severity: \"error\",\n file: u\n });\n }\n return f;\n }(g, c, u, f, d)\n ];\n return d && await attachFileLocations($, d, p, m, v), {\n issues: $,\n validated: y ? g : void 0\n };\n}\nexport async function validateConfiguration(s, i = r(), t, a, o, n) {\n var l;\n let c = {\n context: i,\n filePath: t,\n fileContent: a,\n astCache: o,\n contentHash: n\n }, u = null === s || \"object\" != typeof s ? {} : s.profiles ?? {};\n if (i.profile) {\n let r = u[i.profile];\n if (!r) {\n let e, s;\n return l = i.profile, e = Object.keys(u).join(\", \"), s = BUILTIN_PRESETS.has(l.replace(/^ngcompass:/, \"\")) ? ` \"${l}\" is a built-in preset, not a config profile. Use 'extends: \"ngcompass:${l.replace(/^ngcompass:/, \"\")}\"' in your config instead.` : \"\", {\n config: void 0,\n report: {\n valid: !1,\n issues: [\n {\n code: \"error-profile-not-found\",\n message: `Profile \"${l}\" not found. Available: [${e}]${s}`,\n path: [\n \"profiles\",\n l\n ],\n severity: \"error\",\n file: t\n }\n ]\n }\n };\n }\n let a = e(r, s), { issues: o, validated: n } = await validateBlock({\n ...c,\n config: a,\n basePath: [\n \"profiles\",\n i.profile\n ]\n });\n return buildValidationResult(o, n);\n }\n let { issues: f, validated: d } = await validateBlock({\n ...c,\n config: s\n });\n return buildValidationResult(f, d);\n}\n","import { findAndLoadConfig as o } from './discovery.js';\nimport { validateConfiguration as t } from '../health/index.js';\nimport { createDefaultContext as e } from '../health/context.js';\nimport { PACKAGE_VERSION as n, CACHE_VERSION as i, debug as r, time as a, timeEnd as s } from '@ngcompass/common';\nimport l from 'node:process';\nexport const resolveConfig = async (t)=>{\n a('config-resolution');\n let { cwd: e = l.cwd(), profile: n, cache: i } = t;\n r('loader', `Starting config resolution (cwd: ${e}, profile: ${n || 'none'})`);\n let c = await o(e), { hash: d, cachedResult: u } = await tryLoadFromCache(c, n, i);\n if (u) {\n let o = s('config-resolution');\n return r('loader', `Cache HIT - returning cached result (${o.toFixed(1)}ms)`), u;\n }\n r('loader', 'Cache MISS - running validation');\n let f = await runValidation(c, n, i);\n r('loader', `Validation complete: ${f.report.valid ? 'valid' : `invalid (${f.report.issues.length} issues)`}`), i && d && (await i.configs.set(d, f), r('loader', `Cached validation result: key=${d.substring(0, 8)}...`));\n let m = s('config-resolution');\n return r('loader', `Config resolution complete: ${m.toFixed(1)}ms`), f;\n};\nasync function tryLoadFromCache(o, t, e) {\n if (!e) return {};\n let a = [\n o?.contentHash ?? '',\n t ?? '',\n n,\n i\n ].join('::'), s = e.computeHash(a);\n r('loader', `Cache lookup: key=${s.substring(0, 8)}...`);\n let l = await e.configs.get(s);\n return {\n hash: s,\n cachedResult: l\n };\n}\nasync function runValidation(o, n, i) {\n return t(o?.config ?? {}, e({\n profile: n\n }), o?.filepath, o?.content, i?.asts, o?.contentHash);\n}\n","import e from 'node:fs/promises';\nimport s from 'node:path';\nimport { findAndLoadConfig as r } from '../loaders/discovery.js';\nexport class ConfigExistsError extends Error {\n constructor(e){\n super(`Configuration file already exists at: ${e}`), this.name = 'ConfigExistsError';\n }\n}\nlet TEMPLATE = `import { defineConfig } from '@ngcompass/config';\n\nexport default defineConfig({\n extends: 'ngcompass:recommended',\n\n include: [\n 'src/**/*.ts',\n 'src/**/*.html',\n ],\n\n exclude: [\n 'node_modules/**',\n 'dist/**',\n 'build/**',\n 'coverage/**',\n '**/*.d.ts',\n '**/*.spec.ts',\n '**/*.test.ts',\n ],\n\n profiles: {\n ci: {\n outputFormat: 'json',\n maxWarnings: 0,\n },\n },\n});\n`;\nexport async function initConfig(t = {}) {\n let o = t.cwd ?? process.cwd(), i = s.join(o, 'ngcompass.config.ts'), n = await r(o);\n if (n && !t.force) return {\n success: !1,\n filePath: n.filepath,\n alreadyExists: !0\n };\n try {\n return await e.writeFile(i, TEMPLATE, 'utf-8'), {\n success: !0,\n filePath: i\n };\n } catch (e) {\n return {\n success: !1,\n filePath: i\n };\n }\n}\n","import { resolveConfig as r } from '../loaders/loader.js';\nexport async function validateConfig(e = {}) {\n try {\n return await r(e);\n } catch (r) {\n return {\n config: void 0,\n report: {\n valid: !1,\n issues: [\n {\n code: \"error-conf-semantic\",\n message: r instanceof Error ? r.message : String(r),\n path: [],\n severity: \"error\"\n }\n ]\n }\n };\n }\n}\n","export function defineConfig(n) {\n return n;\n}\n","import { createRequire as e } from 'node:module';\nimport { warn as r, debug as n, PACKAGE_VERSION as t } from '@ngcompass/common';\nlet DEFAULT_CAPABILITIES = {\n typeCheckingEnabled: !1,\n templateASTEnabled: !0,\n cssASTEnabled: !0\n};\nexport const loadPlugins = async (l, i, a, o = DEFAULT_CAPABILITIES)=>{\n if (0 === l.length) return;\n n('plugin-loader', `Initializing loader for ${l.length} plugin(s) at ${i}`);\n let u = e(i + '/package.json'), s = [];\n for (let e of l)try {\n let l;\n try {\n l = u.resolve(e);\n } catch {\n l = e;\n }\n let i = await import(l), s = i.default ?? i, f = Array.isArray(s) ? s : [\n s\n ], c = 0;\n for (let l of f){\n if (!function(e) {\n if (!e || 'object' != typeof e) return !1;\n let r = e.handler;\n return 'string' == typeof e.name && e.name.length > 0 && r?.handle instanceof Function;\n }(l)) {\n r('plugin-loader', `Plugin \"${e}\" exported an invalid structure. Skipping.`);\n continue;\n }\n let { manifest: i } = l;\n if (i) {\n let e = function(e, r) {\n let n = function(e, r, n, t) {\n let l = r.trim();\n if (!l || '*' === l) return null;\n let i = parseVersion(e);\n if (!i) return null;\n let a = l.startsWith('^') ? function(e) {\n let r = parseVersion(e);\n return r ? `>=${e} <${r[0] + 1}.0.0` : null;\n }(l.slice(1)) : l;\n if (!a) return null;\n for (let l of a.split(/\\s+/).filter(Boolean)){\n let a = l.match(/^(>=|<=|>|<|=|==)(\\d+\\.\\d+\\.\\d+.*)$/);\n if (!a) continue;\n let o = a[1], u = parseVersion(a[2]);\n if (!u) continue;\n let s = function(e, r) {\n for(let n = 0; n < 3; n++)if (e[n] !== r[n]) return e[n] > r[n] ? 1 : -1;\n return 0;\n }(i, u);\n if (!('>=' === o ? s >= 0 : '<=' === o ? s <= 0 : '>' === o ? s > 0 : '<' === o ? s < 0 : 0 === s)) return `Plugin \"${n}@${t}\" requires engine \"${r}\", found \"${e}\".`;\n }\n return null;\n }(t.replace(/^v/, ''), e.engineVersionRange, e.name, e.version);\n if (n) return n;\n for (let n of [\n {\n key: 'requiresTypeInfo',\n current: r.typeCheckingEnabled,\n label: 'Type Information'\n },\n {\n key: 'requiresTemplateAST',\n current: r.templateASTEnabled,\n label: 'Template AST'\n },\n {\n key: 'requiresCssAST',\n current: r.cssASTEnabled,\n label: 'CSS AST'\n }\n ])if (e.capabilities?.[n.key] && !n.current) return `Plugin \"${e.name}@${e.version}\" requires ${n.label} support, which is currently disabled.`;\n return null;\n }(i, o);\n if (e) throw Error(e);\n n('plugin-loader', `❯ Validated: ${i.name}@${i.version}`);\n } else r('plugin-loader', `Plugin \"${e}\" is missing a manifest. Please update for future compatibility.`);\n a.register(l), c++, n('plugin-loader', `❯ Registered Rule: ${l.name}`);\n }\n n('plugin-loader', `Plugin \"${e}\" processed: ${c} rules active.`);\n } catch (n) {\n let r = n instanceof Error ? n.message : String(n);\n s.push(`- \"${e}\": ${r}`);\n }\n if (s.length > 0) throw Error(`[ngcompass] Plugin Load Failure:\\n${s.join('\\n')}\\nEnsure plugins are installed and satisfy version requirements.`);\n};\nfunction parseVersion(e) {\n let r = e.trim().match(/^v?\\.?(\\d+)\\.(\\d+)\\.(\\d+)(?:[-+].*)?$/);\n return r ? [\n Number(r[1]),\n Number(r[2]),\n Number(r[3])\n ] : null;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngcompass/config",
3
- "version": "0.1.2-beta",
3
+ "version": "0.1.3-beta",
4
4
  "description": "Config loading, resolution and validation for ngcompass",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.cjs",
@@ -27,8 +27,8 @@
27
27
  "minimatch": "^10.2.4",
28
28
  "zod": "^4.3.6",
29
29
  "zod-validation-error": "^5.0.0",
30
- "@ngcompass/cache": "0.1.2-beta",
31
- "@ngcompass/common": "0.1.2-beta"
30
+ "@ngcompass/cache": "0.1.3-beta",
31
+ "@ngcompass/common": "0.1.3-beta"
32
32
  },
33
33
  "peerDependencies": {
34
34
  "typescript": "5.9.3"