@ngcompass/scanner 0.1.1-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 promises=require('fs/promises'),p=require('path'),common=require('@ngcompass/common'),tinyglobby=require('tinyglobby'),minimatch=require('minimatch'),I=require('ignore'),child_process=require('child_process'),util=require('util');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var p__default=/*#__PURE__*/_interopDefault(p);var I__default=/*#__PURE__*/_interopDefault(I);var le=["**/*.ts","**/*.html","**/*.scss","**/*.css","**/*.sass","**/*.less"],S=e=>({rootDir:p__default.default.resolve(e.rootDir),include:e.include.length>0?e.include:le,exclude:e.exclude,ignorePatterns:e.ignorePatterns??[],respectGitignore:e.respectGitignore??true,followSymlinks:e.followSymlinks??false,dot:e.dot??false}),se=e=>{let r=[];return e.rootDir&&e.rootDir.trim()!==""||r.push("rootDir cannot be empty"),e.include&&e.include.length!==0||r.push("No include patterns specified (will use defaults)"),r};var F=e=>e.replace(/\\/g,"/"),P=e=>({include:e.include.map(F),ignore:[...e.exclude.map(F),...e.ignorePatterns.map(F)]}),H=e=>!(e.trim()===""||e.includes("***")),ce=e=>{let r=[],t=[];for(let i of e)H(i)?r.push(i):t.push(`Invalid pattern: "${i}"`);return [r,t]};var A=async(e,r,t)=>{try{let i=await tinyglobby.glob([...e.include],{cwd:r,ignore:[...e.ignore],absolute:!0,followSymbolicLinks:t.followSymlinks,onlyFiles:!0,dot:t.dot});return common.Ok({files:i})}catch(i){return common.Err(Error(`Glob execution failed: ${i.message}`))}};var me=async e=>{let r=p__default.default.join(e,".gitignore");try{return await promises.readFile(r,"utf-8")}catch{return common.debug("scanner",`Failed to load .gitignore from ${e}`),null}},pe=e=>{let r=I__default.default().add(e);return (t,i)=>{let o=p__default.default.relative(i,t);return !r.ignores(o)}},M=()=>()=>true;var O=async(e,r)=>{try{let t=new Set;for(let o of(t.add(e),r)){let n=p__default.default.dirname(o);for(;n.startsWith(e)&&n!==p__default.default.dirname(e)&&(t.add(n),n!==e);)n=p__default.default.dirname(n);}let i=[];for(let o of t){let n=await me(o);n&&i.push({dir:o,ig:I__default.default().add(n)});}return i.length===0?common.Ok(M()):common.Ok(o=>{for(let{dir:n,ig:a}of i){let c=p__default.default.relative(n,o).replace(/\\/g,"/");if(!c.startsWith("..")&&!p__default.default.isAbsolute(c)&&a.ignores(c))return !1}return !0})}catch(t){return common.Err(Error(`Failed to load gitignore filters: ${t.message}`))}};var U=e=>Array.from(new Set(e)),ye=(e,r,t)=>e.filter(i=>t(i,r)),J=async(e,r)=>{try{let t=e.files,i=t.length;if(r.respectGitignore){let o=await O(r.rootDir,t);if(!o.ok)return o;t=ye(t,r.rootDir,o.data);}return t=U(t),common.Ok({files:t,filtered:i-t.length})}catch(t){return common.Err(Error(`Filtering failed: ${t.message}`))}},he=(e,r)=>{let t=new Set(r);return e.filter(i=>{let o=i.substring(i.lastIndexOf("."));return t.has(o)})},we=(e,r)=>e.filter(t=>r.test(t)),K=(e,r,t,i)=>e.filter(o=>{let n=p__default.default.relative(i,o).replace(/\\/g,"/");return !(!r.some(a=>minimatch.minimatch(n,a,{dot:true}))||t.some(a=>minimatch.minimatch(n,a,{dot:true})))});var ve=async(e,r)=>{let t=Array(e.length),i=0,o=async()=>{for(;i<e.length;){let n=i++;try{t[n]={status:"fulfilled",value:await e[n]()};}catch(a){t[n]={status:"rejected",reason:a};}}};return await Promise.all(Array.from({length:Math.min(r,e.length)},o)),t},Fe=async e=>{let r=e.map(t=>()=>promises.stat(t));return (await ve(r,128)).reduce((t,i)=>t+(i.status==="fulfilled"?i.value.size:0),0)},D=async(e,r,t=false)=>{let i=e.reduce((a,c)=>{let f=p__default.default.extname(c)||".no-extension",g=a.get(f)??0;return a.set(f,g+1),a},new Map),o=await Fe(e),n=performance.now()-r;return {totalFiles:e.length,byExtension:i,totalSize:o,scanTime:n,cacheHit:t}};var z=util.promisify(child_process.exec),_=async e=>{try{return await z("git rev-parse --is-inside-work-tree",{cwd:e}),!0}catch{return false}},q=async e=>new Promise(r=>{try{let t=child_process.spawn("git",["ls-files","-c","-o","--exclude-standard"],{cwd:e}),i=[];t.stdout.setEncoding("utf8"),t.stdout.on("data",o=>{i.push(o);}),t.on("close",o=>{if(o!==0){common.debug("scanner",`git ls-files exited with code ${o}`),r([]);return}let n=i.join("").split(`
2
- `).filter(a=>a.trim().length>0).map(a=>p__default.default.resolve(e,a));r(n);}),t.on("error",o=>{common.debug("scanner",`Git discovery failed: ${o.message}`),r([]);});}catch(t){common.debug("scanner",`Git discovery failed: ${t.message}`),r([]);}}),Q=async e=>{try{let{stdout:r}=await z("git rev-parse HEAD",{cwd:e});try{let{stdout:t}=await z("git rev-parse --show-toplevel",{cwd:e}),i=p__default.default.join(t.trim(),".git","index"),o=await promises.stat(i);return `${r.trim()}-${o.mtime.getTime()}`}catch{return r.trim()}}catch(r){return common.debug("scanner",`Failed to get repo fingerprint: ${r instanceof Error?r.message:String(r)}`),""}},X=async e=>{try{let r=await promises.readdir(e,{withFileTypes:!0}),t=await Promise.allSettled(r.map(a=>promises.stat(p__default.default.join(e,a.name)))),i=0,o=0,n=0;for(let a of t)a.status==="fulfilled"&&(i+=a.value.size,a.value.mtimeMs>o&&(o=a.value.mtimeMs),n++);return `dir-${r.length}-${n}-${i}-${o}`}catch(r){return common.debug("scanner",`Failed to get directory fingerprint: ${r instanceof Error?r.message:String(r)}`),""}};var Ae=async e=>{var r,t,i,o,n,a,c,f,g;let j;common.time("file-scan");let L=performance.now(),y=e.onProgress??(()=>{});r=e,common.debug("scanner",`Starting file discovery in: ${r.rootDir}`),common.debug("scanner",`Include patterns: ${r.include.join(", ")}`),common.debug("scanner",`Exclude patterns: ${r.exclude.join(", ")}`),y("normalizing",0);let ee=performance.now(),d=S(e),h=P(d),te=performance.now()-ee;if(t=d,i=h,common.debug("scanner",`Normalized rootDir: ${t.rootDir}`),common.debug("scanner",`Expanded to ${i.include.length} include patterns, ${i.ignore.length} ignore patterns`),e.tsConfigPath){let m=await je(e.tsConfigPath,d.rootDir);m&&(o=h,h={include:(n=m).include.length>0?[...o.include,...n.include]:o.include,ignore:n.exclude.length>0?[...o.ignore,...n.exclude]:o.ignore},common.debug("scanner",`tsconfig patterns merged: +${m.include.length} include, +${m.exclude.length} exclude`));}try{await promises.access(d.rootDir);}catch{return common.timeEnd("file-scan"),common.Err(Error(`rootDir does not exist or is not accessible: ${d.rootDir}`))}let G=await _(d.rootDir),b=await ze(d,h,G,e);if(b)return y("complete",b.length),await Te(b,L);y("discovering",0);let re=performance.now(),v=await Oe(d,h,G);if(!v.ok)return Y("Scan",v.error),v;let N=v.data,ie=performance.now()-re;y("filtering",N.length);let oe=performance.now(),x=await J({files:N},d);if(!x.ok)return Y("Filter",x.error),x;let w=x.data.files,ne=performance.now()-oe;a=w.length,c=x.data.filtered,common.debug("scanner",`After filters: ${a} files (${c} filtered out)`),y("calculating-stats",w.length),await Ce(d,h,w,G,e);let B=await D(w,L,false),R=common.timeEnd("file-scan");return f=B,g=R,common.debug("scanner",`Scan complete: ${f.totalFiles} files in ${g.toFixed(1)}ms`),j=Array.from(f.byExtension.entries()).sort(([,m],[,E])=>E-m).slice(0,5).map(([m,E])=>`${m}:${E}`).join(", "),common.debug("scanner",`Breakdown: ${j}`),f.totalFiles===0&&common.debug("scanner","No files found matching patterns. Check your include/exclude configuration."),y("complete",w.length),common.Ok({files:w,stats:B,timestamp:Date.now(),timings:{normalization:te,discovery:ie,filtering:ne,total:R}})};async function Oe(e,r,t){if(t){common.debug("scanner","Git repository detected. Using fast Git discovery...");let o=await q(e.rootDir);if(o.length===0){common.debug("scanner","Git discovery returned 0 files \u2014 this may indicate a git command failure. Falling back to glob-based scanning.");let a=await A(r,e.rootDir,{followSymlinks:e.followSymlinks,dot:e.dot});return a.ok&&common.debug("scanner",`Glob fallback found ${a.data.files.length} files`),a.ok?common.Ok(a.data.files):a}let n=K(o,r.include,r.ignore,e.rootDir);return common.debug("scanner",`Git discovery found ${n.length} files (after glob filtering)`),common.Ok(n)}common.debug("scanner","Not a Git repository. Falling back to standard globbing...");let i=await A(r,e.rootDir,{followSymlinks:e.followSymlinks,dot:e.dot});return i.ok&&common.debug("scanner",`Glob found ${i.data.files.length} files`),i.ok?common.Ok(i.data.files):i}async function Z(e,r,t,i){if(!i.cache)return null;let o=t?await Q(e.rootDir):await X(e.rootDir);return o?i.cache.computeHash([e.rootDir,JSON.stringify(r),o,"v1"].join("|")):null}async function ze(e,r,t,i){let o=await Z(e,r,t,i);if(!o||!i.cache)return null;let n=await i.cache.files.get(o);return n?(common.debug("scanner",`Cache HIT. Loaded ${n.files.length} files.`),n.files):null}async function Ce(e,r,t,i,o){if(!o.cache||t.length===0)return;let n=await Z(e,r,i,o);n&&(await o.cache.files.set(n,t),common.debug("scanner","File list cached."));}async function Te(e,r){let t=await D(e,r,true),i=performance.now()-r;return common.Ok({files:e,stats:t,timestamp:Date.now(),timings:{normalization:0,discovery:i,filtering:0,total:i}})}function Y(e,r){let t=common.timeEnd("file-scan");common.debug("scanner",`${e} failed after ${t.toFixed(1)}ms: ${r.message}`);}async function je(e,r){try{let t=(await promises.readFile(e,"utf-8")).replace(/\/\/[^\n]*/g,"").replace(/\/\*[\s\S]*?\*\//g,""),i=JSON.parse(t),o=p__default.default.dirname(p__default.default.resolve(e)),n=f=>{let g=p__default.default.resolve(o,f);return p__default.default.relative(r,g).replace(/\\/g,"/")},a=[],c=[];return Array.isArray(i.include)&&a.push(...i.include.map(n)),Array.isArray(i.files)&&a.push(...i.files.map(n)),Array.isArray(i.exclude)&&c.push(...i.exclude.map(n)),{include:a,exclude:c}}catch(t){return common.debug("scanner",`Failed to load tsconfig patterns from ${e}: ${t instanceof Error?t.message:String(t)}`),null}}
3
- Object.defineProperty(exports,"Err",{enumerable:true,get:function(){return common.Err}});Object.defineProperty(exports,"Ok",{enumerable:true,get:function(){return common.Ok}});exports.calculateStats=D;exports.createGitignoreFilter=pe;exports.createPassThroughFilter=M;exports.deduplicateFiles=U;exports.expandPatterns=P;exports.filterByExtension=he;exports.filterByPattern=we;exports.isValidPattern=H;exports.loadAllGitignoreFilters=O;exports.normalizeOptions=S;exports.normalizePattern=F;exports.scan=Ae;exports.validateOptions=se;exports.validatePatterns=ce;//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var promises=require('fs/promises'),g=require('path'),common=require('@ngcompass/common'),tinyglobby=require('tinyglobby'),minimatch=require('minimatch'),Y=require('ignore'),child_process=require('child_process'),util=require('util');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var g__default=/*#__PURE__*/_interopDefault(g);var Y__default=/*#__PURE__*/_interopDefault(Y);var xe=["**/*.ts","**/*.html","**/*.scss","**/*.css","**/*.sass","**/*.less"],j=e=>({rootDir:g__default.default.resolve(e.rootDir),include:e.include.length>0?e.include:xe,exclude:e.exclude,ignorePatterns:e.ignorePatterns??[],respectGitignore:e.respectGitignore??true,followSymlinks:e.followSymlinks??false,dot:e.dot??false}),we=e=>{let r=[];return e.rootDir&&e.rootDir.trim()!==""||r.push("rootDir cannot be empty"),e.include&&e.include.length!==0||r.push("No include patterns specified (will use defaults)"),r};var P=e=>e.replace(/\\/g,"/"),C=e=>({include:e.include.map(P),ignore:[...e.exclude.map(P),...e.ignorePatterns.map(P)]}),X=e=>!(e.trim()===""||e.includes("***")),Fe=e=>{let r=[],t=[];for(let i of e)X(i)?r.push(i):t.push(`Invalid pattern: "${i}"`);return [r,t]};var M=async(e,r,t)=>{try{let i=await tinyglobby.glob([...e.include],{cwd:r,ignore:[...e.ignore],absolute:!0,followSymbolicLinks:t.followSymlinks,onlyFiles:!0,dot:t.dot});return common.Ok({files:i})}catch(i){return common.Err(Error(`Glob execution failed: ${i.message}`))}};var Ee=async e=>{let r=g__default.default.join(e,".gitignore");try{return await promises.readFile(r,"utf-8")}catch{return common.debug("scanner",`Failed to load .gitignore from ${e}`),null}},Se=e=>{let r=Y__default.default().add(e);return (t,i)=>{let n=g__default.default.relative(i,t);return !r.ignores(n)}},Z=()=>()=>true;var L=async(e,r)=>{try{let t=new Set;for(let n of(t.add(e),r)){let o=g__default.default.dirname(n);for(;o.startsWith(e)&&o!==g__default.default.dirname(e)&&(t.add(o),o!==e);)o=g__default.default.dirname(o);}let i=[];for(let n of t){let o=await Ee(n);o&&i.push({dir:n,ig:Y__default.default().add(o)});}return i.length===0?common.Ok(Z()):common.Ok(n=>{for(let{dir:o,ig:a}of i){let u=g__default.default.relative(o,n).replace(/\\/g,"/");if(!u.startsWith("..")&&!g__default.default.isAbsolute(u)&&a.ignores(u))return !1}return !0})}catch(t){return common.Err(Error(`Failed to load gitignore filters: ${t.message}`))}};var te=e=>Array.from(new Set(e)),ke=(e,r,t)=>e.filter(i=>t(i,r)),re=async(e,r)=>{try{let t=e.files,i=t.length;if(r.respectGitignore){let n=await L(r.rootDir,t);if(!n.ok)return n;t=ke(t,r.rootDir,n.data);}return t=te(t),common.Ok({files:t,filtered:i-t.length})}catch(t){return common.Err(Error(`Filtering failed: ${t.message}`))}},Ge=(e,r)=>{let t=new Set(r);return e.filter(i=>{let n=i.substring(i.lastIndexOf("."));return t.has(n)})},Ae=(e,r)=>e.filter(t=>r.test(t)),ie=(e,r,t,i)=>e.filter(n=>{let o=g__default.default.relative(i,n).replace(/\\/g,"/");return !(!r.some(a=>minimatch.minimatch(o,a,{dot:true}))||t.some(a=>minimatch.minimatch(o,a,{dot:true})))});var Te=async(e,r)=>{let t=Array(e.length),i=0,n=async()=>{for(;i<e.length;){let o=i++;try{t[o]={status:"fulfilled",value:await e[o]()};}catch(a){t[o]={status:"rejected",reason:a};}}};return await Promise.all(Array.from({length:Math.min(r,e.length)},n)),t},Oe=async e=>{let r=e.map(t=>()=>promises.stat(t));return (await Te(r,128)).reduce((t,i)=>t+(i.status==="fulfilled"?i.value.size:0),0)},N=async(e,r,t=false)=>{let i=e.reduce((a,u)=>{let p=g__default.default.extname(u)||".no-extension",y=a.get(p)??0;return a.set(p,y+1),a},new Map),n=await Oe(e),o=performance.now()-r;return {totalFiles:e.length,byExtension:i,totalSize:n,scanTime:o,cacheHit:t}};var B=util.promisify(child_process.exec),oe=async e=>{try{return await B("git rev-parse --is-inside-work-tree",{cwd:e}),!0}catch{return false}},ae=async e=>new Promise(r=>{try{let t=child_process.spawn("git",["ls-files","-c","-o","--exclude-standard"],{cwd:e}),i=[];t.stdout.setEncoding("utf8"),t.stdout.on("data",n=>{i.push(n);}),t.on("close",n=>{if(n!==0){common.debug("scanner",`git ls-files exited with code ${n}`),r([]);return}let o=i.join("").split(`
2
+ `).filter(a=>a.trim().length>0).map(a=>g__default.default.resolve(e,a));r(o);}),t.on("error",n=>{common.debug("scanner",`Git discovery failed: ${n.message}`),r([]);});}catch(t){common.debug("scanner",`Git discovery failed: ${t.message}`),r([]);}}),le=async e=>{try{let{stdout:r}=await B("git rev-parse HEAD",{cwd:e});try{let{stdout:t}=await B("git rev-parse --show-toplevel",{cwd:e}),i=g__default.default.join(t.trim(),".git","index"),n=await promises.stat(i);return `${r.trim()}-${n.mtime.getTime()}`}catch{return r.trim()}}catch(r){return common.debug("scanner",`Failed to get repo fingerprint: ${r instanceof Error?r.message:String(r)}`),""}},se=async e=>{try{let r=await promises.readdir(e,{withFileTypes:!0}),t=await Promise.allSettled(r.map(a=>promises.stat(g__default.default.join(e,a.name)))),i=0,n=0,o=0;for(let a of t)a.status==="fulfilled"&&(i+=a.value.size,a.value.mtimeMs>n&&(n=a.value.mtimeMs),o++);return `dir-${r.length}-${o}-${i}-${n}`}catch(r){return common.debug("scanner",`Failed to get directory fingerprint: ${r instanceof Error?r.message:String(r)}`),""}};var Ie=async e=>{var r,t,i,n,o,a,u,p,y,b,G,W;let J;common.time("file-scan");let U=performance.now(),h=e.onProgress??(()=>{});r=e,common.debug("scanner",`Starting file discovery in: ${r.rootDir}`),common.debug("scanner",`Include patterns: ${r.include.join(", ")}`),common.debug("scanner",`Exclude patterns: ${r.exclude.join(", ")}`),h("normalizing",0);let ue=performance.now(),d=j(e),x=C(d),de=performance.now()-ue;if(t=d,i=x,common.debug("scanner",`Normalized rootDir: ${t.rootDir}`),common.debug("scanner",`Expanded to ${i.include.length} include patterns, ${i.ignore.length} ignore patterns`),e.tsConfigPath){let s=await Ue(e.tsConfigPath,d.rootDir);s&&(n=x,x={include:(o=s).include.length>0?[...n.include,...o.include]:n.include,ignore:o.exclude.length>0?[...n.ignore,...o.exclude]:n.ignore},common.debug("scanner",`tsconfig patterns merged: +${s.include.length} include, +${s.exclude.length} exclude`));}try{await promises.access(d.rootDir);}catch{return common.timeEnd("file-scan"),common.Err(Error(`rootDir does not exist or is not accessible: ${d.rootDir}`))}let z=await oe(d.rootDir),T=await We(d,x,z,e);if(T){let s,F,_;return h("complete",T.files.length),a=T,u=U,s=performance.now()-u,_=(F=(function(f){if(!f||typeof f!="object"||typeof f.totalFiles!="number"||typeof f.totalSize!="number"||typeof f.scanTime!="number"||typeof f.cacheHit!="boolean")return null;let $=(function(v){if(v instanceof Map)return v;if(!Array.isArray(v))return null;let S=new Map;for(let H of v){if(!Array.isArray(H)||H.length!==2)return null;let[q,Q]=H;if(typeof q!="string"||typeof Q!="number")return null;S.set(q,Q);}return S})(f.byExtension);return $?{totalFiles:f.totalFiles,byExtension:$,totalSize:f.totalSize,scanTime:f.scanTime,cacheHit:f.cacheHit}:null})(a.stats))?{...F,scanTime:s,cacheHit:true}:{totalFiles:a.files.length,byExtension:(function(f){let $=new Map;for(let v of f){let S=g__default.default.extname(v)||".no-extension";$.set(S,($.get(S)??0)+1);}return $})(a.files),totalSize:0,scanTime:s,cacheHit:true},common.Ok({files:a.files,stats:_,timestamp:Date.now(),timings:{normalization:0,discovery:s,filtering:0,total:s}})}h("discovering",0);let me=performance.now(),A=await Re(d,x,z);if(!A.ok)return ce("Scan",A.error),A;let K=A.data,pe=performance.now()-me;h("filtering",K.length);let ge=performance.now(),E=await re({files:K},d);if(!E.ok)return ce("Filter",E.error),E;let w=E.data.files,ye=performance.now()-ge;p=w.length,y=E.data.filtered,common.debug("scanner",`After filters: ${p} files (${y} filtered out)`),h("calculating-stats",w.length);let O=await N(w,U,false);await Je(d,x,w,{totalFiles:(b=O).totalFiles,byExtension:Array.from(b.byExtension.entries()),totalSize:b.totalSize,scanTime:b.scanTime,cacheHit:b.cacheHit},z,e);let V=common.timeEnd("file-scan");return G=O,W=V,common.debug("scanner",`Scan complete: ${G.totalFiles} files in ${W.toFixed(1)}ms`),J=Array.from(G.byExtension.entries()).sort(([,s],[,F])=>F-s).slice(0,5).map(([s,F])=>`${s}:${F}`).join(", "),common.debug("scanner",`Breakdown: ${J}`),G.totalFiles===0&&common.debug("scanner","No files found matching patterns. Check your include/exclude configuration."),h("complete",w.length),common.Ok({files:w,stats:O,timestamp:Date.now(),timings:{normalization:de,discovery:pe,filtering:ye,total:V}})};async function Re(e,r,t){if(t){common.debug("scanner","Git repository detected. Using fast Git discovery...");let n=await ae(e.rootDir);if(n.length===0){common.debug("scanner","Git discovery returned 0 files \u2014 this may indicate a git command failure. Falling back to glob-based scanning.");let a=await M(r,e.rootDir,{followSymlinks:e.followSymlinks,dot:e.dot});return a.ok&&common.debug("scanner",`Glob fallback found ${a.data.files.length} files`),a.ok?common.Ok(a.data.files):a}let o=ie(n,r.include,r.ignore,e.rootDir);return common.debug("scanner",`Git discovery found ${o.length} files (after glob filtering)`),common.Ok(o)}common.debug("scanner","Not a Git repository. Falling back to standard globbing...");let i=await M(r,e.rootDir,{followSymlinks:e.followSymlinks,dot:e.dot});return i.ok&&common.debug("scanner",`Glob found ${i.data.files.length} files`),i.ok?common.Ok(i.data.files):i}async function fe(e,r,t,i){if(!i.cache)return null;let n=t?await le(e.rootDir):await se(e.rootDir);return n?i.cache.computeHash([e.rootDir,JSON.stringify(r),n,"v1"].join("|")):null}async function We(e,r,t,i){let n=await fe(e,r,t,i);if(!n||!i.cache)return null;let o=await i.cache.files.get(n);return o?(common.debug("scanner",`Cache HIT. Loaded ${o.files.length} files.`),o):null}async function Je(e,r,t,i,n,o){if(!o.cache||t.length===0)return;let a=await fe(e,r,n,o);a&&(await o.cache.files.set(a,t,i),common.debug("scanner","File list cached."));}function ce(e,r){let t=common.timeEnd("file-scan");common.debug("scanner",`${e} failed after ${t.toFixed(1)}ms: ${r.message}`);}async function Ue(e,r){try{let t=(await promises.readFile(e,"utf-8")).replace(/\/\/[^\n]*/g,"").replace(/\/\*[\s\S]*?\*\//g,""),i=JSON.parse(t),n=g__default.default.dirname(g__default.default.resolve(e)),o=p=>{let y=g__default.default.resolve(n,p);return g__default.default.relative(r,y).replace(/\\/g,"/")},a=[],u=[];return Array.isArray(i.include)&&a.push(...i.include.map(o)),Array.isArray(i.files)&&a.push(...i.files.map(o)),Array.isArray(i.exclude)&&u.push(...i.exclude.map(o)),{include:a,exclude:u}}catch(t){return common.debug("scanner",`Failed to load tsconfig patterns from ${e}: ${t instanceof Error?t.message:String(t)}`),null}}
3
+ Object.defineProperty(exports,"Err",{enumerable:true,get:function(){return common.Err}});Object.defineProperty(exports,"Ok",{enumerable:true,get:function(){return common.Ok}});exports.calculateStats=N;exports.createGitignoreFilter=Se;exports.createPassThroughFilter=Z;exports.deduplicateFiles=te;exports.expandPatterns=C;exports.filterByExtension=Ge;exports.filterByPattern=Ae;exports.isValidPattern=X;exports.loadAllGitignoreFilters=L;exports.normalizeOptions=j;exports.normalizePattern=P;exports.scan=Ie;exports.validateOptions=we;exports.validatePatterns=Fe;//# sourceMappingURL=index.cjs.map
4
4
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/normalize.ts","../src/patterns.ts","../src/glob.ts","../src/gitignore.ts","../src/filters.ts","../src/stats.ts","../src/git.ts","../src/scan.ts"],"names":["DEFAULT_INCLUDE","normalizeOptions","options","rootDir","path","resolve","include","length","exclude","ignorePatterns","respectGitignore","followSymlinks","dot","validateOptions","errors","trim","push","normalizePattern","pattern","replace","expandPatterns","map","ignore","isValidPattern","includes","validatePatterns","patterns","valid","executeGlob","files","glob","cwd","absolute","followSymbolicLinks","onlyFiles","Ok","error","Err","Error","message","loadGitignore","gitignorePath","join","readFile","debug","createGitignoreFilter","gitignoreContent","ig","add","file","relative","ignores","createPassThroughFilter","loadAllGitignoreFilters","filePaths","dirsToCheck","Set","filePath","current","dirname","startsWith","dirFilters","dir","content","rel","isAbsolute","deduplicateFiles","Array","from","applyGitignoreFilter","filter","applyFilters","rawFiles","startCount","filterResult","ok","data","filtered","filterByExtension","extensions","extSet","ext","substring","lastIndexOf","has","filterByPattern","test","filterByGlob","relativePath","some","p","minimatch","runWithLimit","tasks","concurrency","results","cursor","worker","i","status","value","reason","Promise","all","Math","min","calculateTotalSize","f","stat","reduce","sum","result","size","calculateStats","startTime","cacheHit","byExtension","extname","count","get","set","Map","totalSize","scanTime","performance","now","totalFiles","execAsync","promisify","exec","isGitRepo","executeGitDiscovery","child","spawn","chunks","stdout","setEncoding","on","chunk","code","split","line","err","getRepoFingerprint","head","root","indexPath","fileStats","mtime","getTime","String","getDirectoryFingerprint","entries","readdir","withFileTypes","statResults","allSettled","entry","name","latestMtime","statSuccessCount","mtimeMs","scan","normalized","tsPatterns","fileCount","filteredCount","stats","breakdown","time","progress","onProgress","t0","normalizationTime","tsConfigPath","loadTsConfigPatterns","access","timeEnd","isGit","cacheResult","tryLoadFromCache","buildCachedResult","t1","discoveryResult","discoverFiles","logAndReturnError","discoveryTime","t2","finalFiles","filteringTime","saveToCache","totalTime","toFixed","sort","a","b","slice","timestamp","Date","timings","normalization","discovery","filtering","total","gitFiles","getCacheKey","cache","fingerprint","computeHash","JSON","stringify","key","cached","phase","stripped","config","parse","configDir","toRootRelative","abs","isArray"],"mappings":"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","file":"index.cjs","sourcesContent":["import e from 'node:path';\nlet DEFAULT_INCLUDE = [\n '**/*.ts',\n '**/*.html',\n '**/*.scss',\n '**/*.css',\n '**/*.sass',\n '**/*.less'\n];\nexport const normalizeOptions = (t)=>({\n rootDir: e.resolve(t.rootDir),\n include: t.include.length > 0 ? t.include : DEFAULT_INCLUDE,\n exclude: t.exclude,\n ignorePatterns: t.ignorePatterns ?? [],\n respectGitignore: t.respectGitignore ?? !0,\n followSymlinks: t.followSymlinks ?? !1,\n dot: t.dot ?? !1\n });\nexport const validateOptions = (e)=>{\n let t = [];\n return e.rootDir && '' !== e.rootDir.trim() || t.push('rootDir cannot be empty'), e.include && 0 !== e.include.length || t.push('No include patterns specified (will use defaults)'), t;\n};\n","export const normalizePattern = (t)=>t.replace(/\\\\/g, '/');\nexport const expandPatterns = (t)=>({\n include: t.include.map(normalizePattern),\n ignore: [\n ...t.exclude.map(normalizePattern),\n ...t.ignorePatterns.map(normalizePattern)\n ]\n });\nexport const isValidPattern = (t)=>!('' === t.trim() || t.includes('***'));\nexport const validatePatterns = (t)=>{\n let e = [], n = [];\n for (let r of t)isValidPattern(r) ? e.push(r) : n.push(`Invalid pattern: \"${r}\"`);\n return [\n e,\n n\n ];\n};\n","import { glob as e } from 'tinyglobby';\nimport { Ok as t, Err as o } from './types.js';\nexport const executeGlob = async (r, l, i)=>{\n try {\n let o = await e([\n ...r.include\n ], {\n cwd: l,\n ignore: [\n ...r.ignore\n ],\n absolute: !0,\n followSymbolicLinks: i.followSymlinks,\n onlyFiles: !0,\n dot: i.dot\n });\n return t({\n files: o\n });\n } catch (e) {\n return o(Error(`Glob execution failed: ${e.message}`));\n }\n};\nexport const patternsLikelyHaveMatches = (e)=>!(0 === e.include.length || e.include.every((e)=>e.startsWith('!')));\n","import r from 'ignore';\nimport { readFile as e } from 'node:fs/promises';\nimport t from 'node:path';\nimport { Ok as o, Err as i } from './types.js';\nimport { debug as a } from '@ngcompass/common';\nexport const loadGitignore = async (r)=>{\n let o = t.join(r, '.gitignore');\n try {\n return await e(o, 'utf-8');\n } catch (e) {\n return a('scanner', `Failed to load .gitignore from ${r}`), null;\n }\n};\nexport const createGitignoreFilter = (e)=>{\n let o = r().add(e);\n return (r, e)=>{\n let i = t.relative(e, r);\n return !o.ignores(i);\n };\n};\nexport const createPassThroughFilter = ()=>()=>!0;\nexport const loadAndCreateGitignoreFilter = async (r)=>{\n try {\n let e = await loadGitignore(r);\n if (!e) return o(createPassThroughFilter());\n let t = createGitignoreFilter(e);\n return o(t);\n } catch (r) {\n return i(Error(`Failed to load .gitignore: ${r.message}`));\n }\n};\nexport const loadAllGitignoreFilters = async (e, a)=>{\n try {\n let i = new Set();\n for (let r of (i.add(e), a)){\n let o = t.dirname(r);\n for(; o.startsWith(e) && o !== t.dirname(e) && (i.add(o), o !== e);)o = t.dirname(o);\n }\n let n = [];\n for (let e of i){\n let t = await loadGitignore(e);\n t && n.push({\n dir: e,\n ig: r().add(t)\n });\n }\n if (0 === n.length) return o(createPassThroughFilter());\n return o((r)=>{\n for (let { dir: e, ig: o } of n){\n let i = t.relative(e, r).replace(/\\\\/g, '/');\n if (!i.startsWith('..') && !t.isAbsolute(i) && o.ignores(i)) return !1;\n }\n return !0;\n });\n } catch (r) {\n return i(Error(`Failed to load gitignore filters: ${r.message}`));\n }\n};\n","import t from 'node:path';\nimport { minimatch as e } from 'minimatch';\nimport { Ok as r, Err as i } from './types.js';\nimport { loadAllGitignoreFilters as o } from './gitignore.js';\nexport const deduplicateFiles = (t)=>Array.from(new Set(t));\nexport const applyGitignoreFilter = (t, e, r)=>t.filter((t)=>r(t, e));\nexport const applyFilters = async (t, e)=>{\n try {\n let i = t.files, l = i.length;\n if (e.respectGitignore) {\n let t = await o(e.rootDir, i);\n if (!t.ok) return t;\n i = applyGitignoreFilter(i, e.rootDir, t.data);\n }\n return i = deduplicateFiles(i), r({\n files: i,\n filtered: l - i.length\n });\n } catch (t) {\n return i(Error(`Filtering failed: ${t.message}`));\n }\n};\nexport const filterByExtension = (t, e)=>{\n let r = new Set(e);\n return t.filter((t)=>{\n let e = t.substring(t.lastIndexOf('.'));\n return r.has(e);\n });\n};\nexport const filterByPattern = (t, e)=>t.filter((t)=>e.test(t));\nexport const filterByGlob = (r, i, o, l)=>r.filter((r)=>{\n let n = t.relative(l, r).replace(/\\\\/g, '/');\n return !(!i.some((t)=>e(n, t, {\n dot: !0\n })) || o.some((t)=>e(n, t, {\n dot: !0\n })));\n });\n","import t from 'node:path';\nimport { stat as e } from 'node:fs/promises';\nlet runWithLimit = async (t, e)=>{\n let a = Array(t.length), l = 0, r = async ()=>{\n for(; l < t.length;){\n let e = l++;\n try {\n a[e] = {\n status: 'fulfilled',\n value: await t[e]()\n };\n } catch (t) {\n a[e] = {\n status: 'rejected',\n reason: t\n };\n }\n }\n };\n return await Promise.all(Array.from({\n length: Math.min(e, t.length)\n }, r)), a;\n}, calculateTotalSize = async (t)=>{\n let a = t.map((t)=>()=>e(t));\n return (await runWithLimit(a, 128)).reduce((t, e)=>t + ('fulfilled' === e.status ? e.value.size : 0), 0);\n};\nexport const calculateStats = async (e, a, l = !1)=>{\n let r = e.reduce((e, a)=>{\n let l = t.extname(a) || '.no-extension', r = e.get(l) ?? 0;\n return e.set(l, r + 1), e;\n }, new Map()), n = await calculateTotalSize(e), i = performance.now() - a;\n return {\n totalFiles: e.length,\n byExtension: r,\n totalSize: n,\n scanTime: i,\n cacheHit: l\n };\n};\n","import { exec as e, spawn as t } from 'node:child_process';\nimport { promisify as r } from 'node:util';\nimport i from 'node:path';\nimport { stat as o, readdir as n } from 'node:fs/promises';\nimport { debug as s } from '@ngcompass/common';\nlet execAsync = r(e);\nexport const isGitRepo = async (e)=>{\n try {\n return await execAsync('git rev-parse --is-inside-work-tree', {\n cwd: e\n }), !0;\n } catch {\n return !1;\n }\n};\nexport const executeGitDiscovery = async (e)=>new Promise((r)=>{\n try {\n let o = t('git', [\n 'ls-files',\n '-c',\n '-o',\n '--exclude-standard'\n ], {\n cwd: e\n }), n = [];\n o.stdout.setEncoding('utf8'), o.stdout.on('data', (e)=>{\n n.push(e);\n }), o.on('close', (t)=>{\n if (0 !== t) {\n s('scanner', `git ls-files exited with code ${t}`), r([]);\n return;\n }\n let o = n.join('').split('\\n').filter((e)=>e.trim().length > 0).map((t)=>i.resolve(e, t));\n r(o);\n }), o.on('error', (e)=>{\n s('scanner', `Git discovery failed: ${e.message}`), r([]);\n });\n } catch (e) {\n s('scanner', `Git discovery failed: ${e.message}`), r([]);\n }\n });\nexport const getRepoFingerprint = async (e)=>{\n try {\n let { stdout: t } = await execAsync('git rev-parse HEAD', {\n cwd: e\n });\n try {\n let { stdout: r } = await execAsync('git rev-parse --show-toplevel', {\n cwd: e\n }), n = i.join(r.trim(), '.git', 'index'), s = await o(n);\n return `${t.trim()}-${s.mtime.getTime()}`;\n } catch {\n return t.trim();\n }\n } catch (e) {\n return s('scanner', `Failed to get repo fingerprint: ${e instanceof Error ? e.message : String(e)}`), '';\n }\n};\nexport const getDirectoryFingerprint = async (e)=>{\n try {\n let t = await n(e, {\n withFileTypes: !0\n }), r = await Promise.allSettled(t.map((t)=>o(i.join(e, t.name)))), s = 0, a = 0, c = 0;\n for (let e of r)'fulfilled' === e.status && (s += e.value.size, e.value.mtimeMs > a && (a = e.value.mtimeMs), c++);\n return `dir-${t.length}-${c}-${s}-${a}`;\n } catch (e) {\n return s('scanner', `Failed to get directory fingerprint: ${e instanceof Error ? e.message : String(e)}`), '';\n }\n};\n","import { access as e, readFile as t } from 'node:fs/promises';\nimport r from 'node:path';\nimport { debug as n, time as i, timeEnd as a } from '@ngcompass/common';\nimport { Ok as o, Err as l } from './types.js';\nimport { normalizeOptions as s } from './normalize.js';\nimport { expandPatterns as c } from './patterns.js';\nimport { executeGlob as f } from './glob.js';\nimport { applyFilters as d, filterByGlob as u } from './filters.js';\nimport { calculateStats as g } from './stats.js';\nimport { isGitRepo as m, executeGitDiscovery as p, getRepoFingerprint as h, getDirectoryFingerprint as y } from './git.js';\nexport const scan = async (t)=>{\n var r, f, u, p, h, y, w, $, v;\n let D;\n i('file-scan');\n let b = performance.now(), k = t.onProgress ?? (()=>void 0);\n r = t, n('scanner', `Starting file discovery in: ${r.rootDir}`), n('scanner', `Include patterns: ${r.include.join(', ')}`), n('scanner', `Exclude patterns: ${r.exclude.join(', ')}`), k('normalizing', 0);\n let x = performance.now(), C = s(t), F = c(C), j = performance.now() - x;\n if (f = C, u = F, n('scanner', `Normalized rootDir: ${f.rootDir}`), n('scanner', `Expanded to ${u.include.length} include patterns, ${u.ignore.length} ignore patterns`), t.tsConfigPath) {\n let e = await loadTsConfigPatterns(t.tsConfigPath, C.rootDir);\n e && (p = F, F = {\n include: (h = e).include.length > 0 ? [\n ...p.include,\n ...h.include\n ] : p.include,\n ignore: h.exclude.length > 0 ? [\n ...p.ignore,\n ...h.exclude\n ] : p.ignore\n }, n('scanner', `tsconfig patterns merged: +${e.include.length} include, +${e.exclude.length} exclude`));\n }\n try {\n await e(C.rootDir);\n } catch {\n return a('file-scan'), l(Error(`rootDir does not exist or is not accessible: ${C.rootDir}`));\n }\n let A = await m(C.rootDir), S = await tryLoadFromCache(C, F, A, t);\n if (S) return k('complete', S.length), await buildCachedResult(S, b);\n k('discovering', 0);\n let E = performance.now(), G = await discoverFiles(C, F, A);\n if (!G.ok) return logAndReturnError('Scan', G.error), G;\n let z = G.data, N = performance.now() - E;\n k('filtering', z.length);\n let P = performance.now(), R = await d({\n files: z\n }, C);\n if (!R.ok) return logAndReturnError('Filter', R.error), R;\n let T = R.data.files, K = performance.now() - P;\n y = T.length, w = R.data.filtered, n('scanner', `After filters: ${y} files (${w} filtered out)`), k('calculating-stats', T.length), await saveToCache(C, F, T, A, t);\n let L = await g(T, b, !1), H = a('file-scan');\n return $ = L, v = H, n('scanner', `Scan complete: ${$.totalFiles} files in ${v.toFixed(1)}ms`), D = Array.from($.byExtension.entries()).sort(([, e], [, t])=>t - e).slice(0, 5).map(([e, t])=>`${e}:${t}`).join(', '), n('scanner', `Breakdown: ${D}`), 0 === $.totalFiles && n('scanner', 'No files found matching patterns. Check your include/exclude configuration.'), k('complete', T.length), o({\n files: T,\n stats: L,\n timestamp: Date.now(),\n timings: {\n normalization: j,\n discovery: N,\n filtering: K,\n total: H\n }\n });\n};\nasync function discoverFiles(e, t, r) {\n if (r) {\n n('scanner', 'Git repository detected. Using fast Git discovery...');\n let r = await p(e.rootDir);\n if (0 === r.length) {\n n('scanner', 'Git discovery returned 0 files — this may indicate a git command failure. Falling back to glob-based scanning.');\n let r = await f(t, e.rootDir, {\n followSymlinks: e.followSymlinks,\n dot: e.dot\n });\n return r.ok && n('scanner', `Glob fallback found ${r.data.files.length} files`), r.ok ? o(r.data.files) : r;\n }\n let i = u(r, t.include, t.ignore, e.rootDir);\n return n('scanner', `Git discovery found ${i.length} files (after glob filtering)`), o(i);\n }\n n('scanner', 'Not a Git repository. Falling back to standard globbing...');\n let i = await f(t, e.rootDir, {\n followSymlinks: e.followSymlinks,\n dot: e.dot\n });\n return i.ok && n('scanner', `Glob found ${i.data.files.length} files`), i.ok ? o(i.data.files) : i;\n}\nasync function getCacheKey(e, t, r, n) {\n if (!n.cache) return null;\n let i = r ? await h(e.rootDir) : await y(e.rootDir);\n return i ? n.cache.computeHash([\n e.rootDir,\n JSON.stringify(t),\n i,\n 'v1'\n ].join('|')) : null;\n}\nasync function tryLoadFromCache(e, t, r, i) {\n let a = await getCacheKey(e, t, r, i);\n if (!a || !i.cache) return null;\n let o = await i.cache.files.get(a);\n return o ? (n('scanner', `Cache HIT. Loaded ${o.files.length} files.`), o.files) : null;\n}\nasync function saveToCache(e, t, r, i, a) {\n if (!a.cache || 0 === r.length) return;\n let o = await getCacheKey(e, t, i, a);\n o && (await a.cache.files.set(o, r), n('scanner', 'File list cached.'));\n}\nasync function buildCachedResult(e, t) {\n let r = await g(e, t, !0), n = performance.now() - t;\n return o({\n files: e,\n stats: r,\n timestamp: Date.now(),\n timings: {\n normalization: 0,\n discovery: n,\n filtering: 0,\n total: n\n }\n });\n}\nfunction logAndReturnError(e, t) {\n let r = a('file-scan');\n n('scanner', `${e} failed after ${r.toFixed(1)}ms: ${t.message}`);\n}\nasync function loadTsConfigPatterns(e, i) {\n try {\n let n = (await t(e, 'utf-8')).replace(/\\/\\/[^\\n]*/g, '').replace(/\\/\\*[\\s\\S]*?\\*\\//g, ''), a = JSON.parse(n), o = r.dirname(r.resolve(e)), l = (e)=>{\n let t = r.resolve(o, e);\n return r.relative(i, t).replace(/\\\\/g, '/');\n }, s = [], c = [];\n return Array.isArray(a.include) && s.push(...a.include.map(l)), Array.isArray(a.files) && s.push(...a.files.map(l)), Array.isArray(a.exclude) && c.push(...a.exclude.map(l)), {\n include: s,\n exclude: c\n };\n } catch (t) {\n return n('scanner', `Failed to load tsconfig patterns from ${e}: ${t instanceof Error ? t.message : String(t)}`), null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/normalize.ts","../src/patterns.ts","../src/glob.ts","../src/gitignore.ts","../src/filters.ts","../src/stats.ts","../src/git.ts","../src/scan.ts"],"names":["DEFAULT_INCLUDE","normalizeOptions","options","rootDir","path","resolve","include","length","exclude","ignorePatterns","respectGitignore","followSymlinks","dot","validateOptions","errors","trim","push","normalizePattern","pattern","replace","expandPatterns","map","ignore","isValidPattern","includes","validatePatterns","patterns","valid","executeGlob","files","glob","cwd","absolute","followSymbolicLinks","onlyFiles","Ok","error","Err","Error","message","loadGitignore","gitignorePath","join","readFile","debug","createGitignoreFilter","gitignoreContent","ig","add","file","relative","ignores","createPassThroughFilter","loadAllGitignoreFilters","filePaths","dirsToCheck","Set","filePath","current","dirname","startsWith","dirFilters","dir","content","rel","isAbsolute","deduplicateFiles","Array","from","applyGitignoreFilter","filter","applyFilters","rawFiles","startCount","filterResult","ok","data","filtered","filterByExtension","extensions","extSet","ext","substring","lastIndexOf","has","filterByPattern","test","filterByGlob","relativePath","some","p","minimatch","runWithLimit","tasks","concurrency","results","cursor","worker","i","status","value","reason","Promise","all","Math","min","calculateTotalSize","f","stat","reduce","sum","result","size","calculateStats","startTime","cacheHit","byExtension","extname","count","get","set","Map","totalSize","scanTime","performance","now","totalFiles","execAsync","promisify","exec","isGitRepo","executeGitDiscovery","child","spawn","chunks","stdout","setEncoding","on","chunk","code","split","line","err","getRepoFingerprint","head","root","indexPath","fileStats","mtime","getTime","String","getDirectoryFingerprint","entries","readdir","withFileTypes","statResults","allSettled","entry","name","latestMtime","statSuccessCount","mtimeMs","scan","normalized","tsPatterns","cached","fileCount","filteredCount","stats","breakdown","time","progress","onProgress","t0","normalizationTime","tsConfigPath","loadTsConfigPatterns","access","timeEnd","isGit","cacheResult","tryLoadFromCache","totalTime","cachedStats","isArray","extension","timestamp","Date","timings","normalization","discovery","filtering","total","t1","discoveryResult","discoverFiles","logAndReturnError","discoveryTime","t2","finalFiles","filteringTime","saveToCache","toFixed","sort","a","b","slice","gitFiles","getCacheKey","cache","fingerprint","computeHash","JSON","stringify","key","phase","stripped","config","parse","configDir","toRootRelative","abs"],"mappings":"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","file":"index.cjs","sourcesContent":["import e from 'node:path';\nlet DEFAULT_INCLUDE = [\n '**/*.ts',\n '**/*.html',\n '**/*.scss',\n '**/*.css',\n '**/*.sass',\n '**/*.less'\n];\nexport const normalizeOptions = (t)=>({\n rootDir: e.resolve(t.rootDir),\n include: t.include.length > 0 ? t.include : DEFAULT_INCLUDE,\n exclude: t.exclude,\n ignorePatterns: t.ignorePatterns ?? [],\n respectGitignore: t.respectGitignore ?? !0,\n followSymlinks: t.followSymlinks ?? !1,\n dot: t.dot ?? !1\n });\nexport const validateOptions = (e)=>{\n let t = [];\n return e.rootDir && '' !== e.rootDir.trim() || t.push('rootDir cannot be empty'), e.include && 0 !== e.include.length || t.push('No include patterns specified (will use defaults)'), t;\n};\n","export const normalizePattern = (t)=>t.replace(/\\\\/g, '/');\nexport const expandPatterns = (t)=>({\n include: t.include.map(normalizePattern),\n ignore: [\n ...t.exclude.map(normalizePattern),\n ...t.ignorePatterns.map(normalizePattern)\n ]\n });\nexport const isValidPattern = (t)=>!('' === t.trim() || t.includes('***'));\nexport const validatePatterns = (t)=>{\n let e = [], n = [];\n for (let r of t)isValidPattern(r) ? e.push(r) : n.push(`Invalid pattern: \"${r}\"`);\n return [\n e,\n n\n ];\n};\n","import { glob as e } from 'tinyglobby';\nimport { Ok as t, Err as o } from './types.js';\nexport const executeGlob = async (r, l, i)=>{\n try {\n let o = await e([\n ...r.include\n ], {\n cwd: l,\n ignore: [\n ...r.ignore\n ],\n absolute: !0,\n followSymbolicLinks: i.followSymlinks,\n onlyFiles: !0,\n dot: i.dot\n });\n return t({\n files: o\n });\n } catch (e) {\n return o(Error(`Glob execution failed: ${e.message}`));\n }\n};\nexport const patternsLikelyHaveMatches = (e)=>!(0 === e.include.length || e.include.every((e)=>e.startsWith('!')));\n","import r from 'ignore';\nimport { readFile as e } from 'node:fs/promises';\nimport t from 'node:path';\nimport { Ok as o, Err as i } from './types.js';\nimport { debug as a } from '@ngcompass/common';\nexport const loadGitignore = async (r)=>{\n let o = t.join(r, '.gitignore');\n try {\n return await e(o, 'utf-8');\n } catch (e) {\n return a('scanner', `Failed to load .gitignore from ${r}`), null;\n }\n};\nexport const createGitignoreFilter = (e)=>{\n let o = r().add(e);\n return (r, e)=>{\n let i = t.relative(e, r);\n return !o.ignores(i);\n };\n};\nexport const createPassThroughFilter = ()=>()=>!0;\nexport const loadAndCreateGitignoreFilter = async (r)=>{\n try {\n let e = await loadGitignore(r);\n if (!e) return o(createPassThroughFilter());\n let t = createGitignoreFilter(e);\n return o(t);\n } catch (r) {\n return i(Error(`Failed to load .gitignore: ${r.message}`));\n }\n};\nexport const loadAllGitignoreFilters = async (e, a)=>{\n try {\n let i = new Set();\n for (let r of (i.add(e), a)){\n let o = t.dirname(r);\n for(; o.startsWith(e) && o !== t.dirname(e) && (i.add(o), o !== e);)o = t.dirname(o);\n }\n let n = [];\n for (let e of i){\n let t = await loadGitignore(e);\n t && n.push({\n dir: e,\n ig: r().add(t)\n });\n }\n if (0 === n.length) return o(createPassThroughFilter());\n return o((r)=>{\n for (let { dir: e, ig: o } of n){\n let i = t.relative(e, r).replace(/\\\\/g, '/');\n if (!i.startsWith('..') && !t.isAbsolute(i) && o.ignores(i)) return !1;\n }\n return !0;\n });\n } catch (r) {\n return i(Error(`Failed to load gitignore filters: ${r.message}`));\n }\n};\n","import t from 'node:path';\nimport { minimatch as e } from 'minimatch';\nimport { Ok as r, Err as i } from './types.js';\nimport { loadAllGitignoreFilters as o } from './gitignore.js';\nexport const deduplicateFiles = (t)=>Array.from(new Set(t));\nexport const applyGitignoreFilter = (t, e, r)=>t.filter((t)=>r(t, e));\nexport const applyFilters = async (t, e)=>{\n try {\n let i = t.files, l = i.length;\n if (e.respectGitignore) {\n let t = await o(e.rootDir, i);\n if (!t.ok) return t;\n i = applyGitignoreFilter(i, e.rootDir, t.data);\n }\n return i = deduplicateFiles(i), r({\n files: i,\n filtered: l - i.length\n });\n } catch (t) {\n return i(Error(`Filtering failed: ${t.message}`));\n }\n};\nexport const filterByExtension = (t, e)=>{\n let r = new Set(e);\n return t.filter((t)=>{\n let e = t.substring(t.lastIndexOf('.'));\n return r.has(e);\n });\n};\nexport const filterByPattern = (t, e)=>t.filter((t)=>e.test(t));\nexport const filterByGlob = (r, i, o, l)=>r.filter((r)=>{\n let n = t.relative(l, r).replace(/\\\\/g, '/');\n return !(!i.some((t)=>e(n, t, {\n dot: !0\n })) || o.some((t)=>e(n, t, {\n dot: !0\n })));\n });\n","import t from 'node:path';\nimport { stat as e } from 'node:fs/promises';\nlet runWithLimit = async (t, e)=>{\n let a = Array(t.length), l = 0, r = async ()=>{\n for(; l < t.length;){\n let e = l++;\n try {\n a[e] = {\n status: 'fulfilled',\n value: await t[e]()\n };\n } catch (t) {\n a[e] = {\n status: 'rejected',\n reason: t\n };\n }\n }\n };\n return await Promise.all(Array.from({\n length: Math.min(e, t.length)\n }, r)), a;\n}, calculateTotalSize = async (t)=>{\n let a = t.map((t)=>()=>e(t));\n return (await runWithLimit(a, 128)).reduce((t, e)=>t + ('fulfilled' === e.status ? e.value.size : 0), 0);\n};\nexport const calculateStats = async (e, a, l = !1)=>{\n let r = e.reduce((e, a)=>{\n let l = t.extname(a) || '.no-extension', r = e.get(l) ?? 0;\n return e.set(l, r + 1), e;\n }, new Map()), n = await calculateTotalSize(e), i = performance.now() - a;\n return {\n totalFiles: e.length,\n byExtension: r,\n totalSize: n,\n scanTime: i,\n cacheHit: l\n };\n};\n","import { exec as e, spawn as t } from 'node:child_process';\nimport { promisify as r } from 'node:util';\nimport i from 'node:path';\nimport { stat as o, readdir as n } from 'node:fs/promises';\nimport { debug as s } from '@ngcompass/common';\nlet execAsync = r(e);\nexport const isGitRepo = async (e)=>{\n try {\n return await execAsync('git rev-parse --is-inside-work-tree', {\n cwd: e\n }), !0;\n } catch {\n return !1;\n }\n};\nexport const executeGitDiscovery = async (e)=>new Promise((r)=>{\n try {\n let o = t('git', [\n 'ls-files',\n '-c',\n '-o',\n '--exclude-standard'\n ], {\n cwd: e\n }), n = [];\n o.stdout.setEncoding('utf8'), o.stdout.on('data', (e)=>{\n n.push(e);\n }), o.on('close', (t)=>{\n if (0 !== t) {\n s('scanner', `git ls-files exited with code ${t}`), r([]);\n return;\n }\n let o = n.join('').split('\\n').filter((e)=>e.trim().length > 0).map((t)=>i.resolve(e, t));\n r(o);\n }), o.on('error', (e)=>{\n s('scanner', `Git discovery failed: ${e.message}`), r([]);\n });\n } catch (e) {\n s('scanner', `Git discovery failed: ${e.message}`), r([]);\n }\n });\nexport const getRepoFingerprint = async (e)=>{\n try {\n let { stdout: t } = await execAsync('git rev-parse HEAD', {\n cwd: e\n });\n try {\n let { stdout: r } = await execAsync('git rev-parse --show-toplevel', {\n cwd: e\n }), n = i.join(r.trim(), '.git', 'index'), s = await o(n);\n return `${t.trim()}-${s.mtime.getTime()}`;\n } catch {\n return t.trim();\n }\n } catch (e) {\n return s('scanner', `Failed to get repo fingerprint: ${e instanceof Error ? e.message : String(e)}`), '';\n }\n};\nexport const getDirectoryFingerprint = async (e)=>{\n try {\n let t = await n(e, {\n withFileTypes: !0\n }), r = await Promise.allSettled(t.map((t)=>o(i.join(e, t.name)))), s = 0, a = 0, c = 0;\n for (let e of r)'fulfilled' === e.status && (s += e.value.size, e.value.mtimeMs > a && (a = e.value.mtimeMs), c++);\n return `dir-${t.length}-${c}-${s}-${a}`;\n } catch (e) {\n return s('scanner', `Failed to get directory fingerprint: ${e instanceof Error ? e.message : String(e)}`), '';\n }\n};\n","import { access as e, readFile as t } from 'node:fs/promises';\nimport n from 'node:path';\nimport { debug as r, time as i, timeEnd as o } from '@ngcompass/common';\nimport { Ok as a, Err as l } from './types.js';\nimport { normalizeOptions as s } from './normalize.js';\nimport { expandPatterns as c } from './patterns.js';\nimport { executeGlob as f } from './glob.js';\nimport { applyFilters as u, filterByGlob as d } from './filters.js';\nimport { calculateStats as m } from './stats.js';\nimport { isGitRepo as g, executeGitDiscovery as p, getRepoFingerprint as h, getDirectoryFingerprint as y } from './git.js';\nexport const scan = async (t)=>{\n var f, d, p, h, y, w, $, b, x, F, v, D;\n let S;\n i('file-scan');\n let A = performance.now(), k = t.onProgress ?? (()=>void 0);\n f = t, r('scanner', `Starting file discovery in: ${f.rootDir}`), r('scanner', `Include patterns: ${f.include.join(', ')}`), r('scanner', `Exclude patterns: ${f.exclude.join(', ')}`), k('normalizing', 0);\n let C = performance.now(), j = s(t), E = c(j), T = performance.now() - C;\n if (d = j, p = E, r('scanner', `Normalized rootDir: ${d.rootDir}`), r('scanner', `Expanded to ${p.include.length} include patterns, ${p.ignore.length} ignore patterns`), t.tsConfigPath) {\n let e = await loadTsConfigPatterns(t.tsConfigPath, j.rootDir);\n e && (h = E, E = {\n include: (y = e).include.length > 0 ? [\n ...h.include,\n ...y.include\n ] : h.include,\n ignore: y.exclude.length > 0 ? [\n ...h.ignore,\n ...y.exclude\n ] : h.ignore\n }, r('scanner', `tsconfig patterns merged: +${e.include.length} include, +${e.exclude.length} exclude`));\n }\n try {\n await e(j.rootDir);\n } catch {\n return o('file-scan'), l(Error(`rootDir does not exist or is not accessible: ${j.rootDir}`));\n }\n let z = await g(j.rootDir), H = await tryLoadFromCache(j, E, z, t);\n if (H) {\n let e, t, r;\n return k('complete', H.files.length), w = H, $ = A, e = performance.now() - $, r = (t = function(e) {\n if (!e || 'object' != typeof e || 'number' != typeof e.totalFiles || 'number' != typeof e.totalSize || 'number' != typeof e.scanTime || 'boolean' != typeof e.cacheHit) return null;\n let t = function(e) {\n if (e instanceof Map) return e;\n if (!Array.isArray(e)) return null;\n let t = new Map();\n for (let n of e){\n if (!Array.isArray(n) || 2 !== n.length) return null;\n let [e, r] = n;\n if ('string' != typeof e || 'number' != typeof r) return null;\n t.set(e, r);\n }\n return t;\n }(e.byExtension);\n return t ? {\n totalFiles: e.totalFiles,\n byExtension: t,\n totalSize: e.totalSize,\n scanTime: e.scanTime,\n cacheHit: e.cacheHit\n } : null;\n }(w.stats)) ? {\n ...t,\n scanTime: e,\n cacheHit: !0\n } : {\n totalFiles: w.files.length,\n byExtension: function(e) {\n let t = new Map();\n for (let r of e){\n let e = n.extname(r) || '.no-extension';\n t.set(e, (t.get(e) ?? 0) + 1);\n }\n return t;\n }(w.files),\n totalSize: 0,\n scanTime: e,\n cacheHit: !0\n }, a({\n files: w.files,\n stats: r,\n timestamp: Date.now(),\n timings: {\n normalization: 0,\n discovery: e,\n filtering: 0,\n total: e\n }\n });\n }\n k('discovering', 0);\n let G = performance.now(), N = await discoverFiles(j, E, z);\n if (!N.ok) return logAndReturnError('Scan', N.error), N;\n let P = N.data, K = performance.now() - G;\n k('filtering', P.length);\n let L = performance.now(), M = await u({\n files: P\n }, j);\n if (!M.ok) return logAndReturnError('Filter', M.error), M;\n let R = M.data.files, I = performance.now() - L;\n b = R.length, x = M.data.filtered, r('scanner', `After filters: ${b} files (${x} filtered out)`), k('calculating-stats', R.length);\n let J = await m(R, A, !1);\n await saveToCache(j, E, R, {\n totalFiles: (F = J).totalFiles,\n byExtension: Array.from(F.byExtension.entries()),\n totalSize: F.totalSize,\n scanTime: F.scanTime,\n cacheHit: F.cacheHit\n }, z, t);\n let O = o('file-scan');\n return v = J, D = O, r('scanner', `Scan complete: ${v.totalFiles} files in ${D.toFixed(1)}ms`), S = Array.from(v.byExtension.entries()).sort(([, e], [, t])=>t - e).slice(0, 5).map(([e, t])=>`${e}:${t}`).join(', '), r('scanner', `Breakdown: ${S}`), 0 === v.totalFiles && r('scanner', 'No files found matching patterns. Check your include/exclude configuration.'), k('complete', R.length), a({\n files: R,\n stats: J,\n timestamp: Date.now(),\n timings: {\n normalization: T,\n discovery: K,\n filtering: I,\n total: O\n }\n });\n};\nasync function discoverFiles(e, t, n) {\n if (n) {\n r('scanner', 'Git repository detected. Using fast Git discovery...');\n let n = await p(e.rootDir);\n if (0 === n.length) {\n r('scanner', 'Git discovery returned 0 files — this may indicate a git command failure. Falling back to glob-based scanning.');\n let n = await f(t, e.rootDir, {\n followSymlinks: e.followSymlinks,\n dot: e.dot\n });\n return n.ok && r('scanner', `Glob fallback found ${n.data.files.length} files`), n.ok ? a(n.data.files) : n;\n }\n let i = d(n, t.include, t.ignore, e.rootDir);\n return r('scanner', `Git discovery found ${i.length} files (after glob filtering)`), a(i);\n }\n r('scanner', 'Not a Git repository. Falling back to standard globbing...');\n let i = await f(t, e.rootDir, {\n followSymlinks: e.followSymlinks,\n dot: e.dot\n });\n return i.ok && r('scanner', `Glob found ${i.data.files.length} files`), i.ok ? a(i.data.files) : i;\n}\nasync function getCacheKey(e, t, n, r) {\n if (!r.cache) return null;\n let i = n ? await h(e.rootDir) : await y(e.rootDir);\n return i ? r.cache.computeHash([\n e.rootDir,\n JSON.stringify(t),\n i,\n 'v1'\n ].join('|')) : null;\n}\nasync function tryLoadFromCache(e, t, n, i) {\n let o = await getCacheKey(e, t, n, i);\n if (!o || !i.cache) return null;\n let a = await i.cache.files.get(o);\n return a ? (r('scanner', `Cache HIT. Loaded ${a.files.length} files.`), a) : null;\n}\nasync function saveToCache(e, t, n, i, o, a) {\n if (!a.cache || 0 === n.length) return;\n let l = await getCacheKey(e, t, o, a);\n l && (await a.cache.files.set(l, n, i), r('scanner', 'File list cached.'));\n}\nfunction logAndReturnError(e, t) {\n let n = o('file-scan');\n r('scanner', `${e} failed after ${n.toFixed(1)}ms: ${t.message}`);\n}\nasync function loadTsConfigPatterns(e, i) {\n try {\n let r = (await t(e, 'utf-8')).replace(/\\/\\/[^\\n]*/g, '').replace(/\\/\\*[\\s\\S]*?\\*\\//g, ''), o = JSON.parse(r), a = n.dirname(n.resolve(e)), l = (e)=>{\n let t = n.resolve(a, e);\n return n.relative(i, t).replace(/\\\\/g, '/');\n }, s = [], c = [];\n return Array.isArray(o.include) && s.push(...o.include.map(l)), Array.isArray(o.files) && s.push(...o.files.map(l)), Array.isArray(o.exclude) && c.push(...o.exclude.map(l)), {\n include: s,\n exclude: c\n };\n } catch (t) {\n return r('scanner', `Failed to load tsconfig patterns from ${e}: ${t instanceof Error ? t.message : String(t)}`), null;\n }\n}\n"]}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import {access,readFile,stat,readdir}from'fs/promises';import p from'path';import {Ok,Err,time,debug,timeEnd}from'@ngcompass/common';export{Err,Ok}from'@ngcompass/common';import {glob}from'tinyglobby';import {minimatch}from'minimatch';import I from'ignore';import {exec,spawn}from'child_process';import {promisify}from'util';var le=["**/*.ts","**/*.html","**/*.scss","**/*.css","**/*.sass","**/*.less"],S=e=>({rootDir:p.resolve(e.rootDir),include:e.include.length>0?e.include:le,exclude:e.exclude,ignorePatterns:e.ignorePatterns??[],respectGitignore:e.respectGitignore??true,followSymlinks:e.followSymlinks??false,dot:e.dot??false}),se=e=>{let r=[];return e.rootDir&&e.rootDir.trim()!==""||r.push("rootDir cannot be empty"),e.include&&e.include.length!==0||r.push("No include patterns specified (will use defaults)"),r};var F=e=>e.replace(/\\/g,"/"),P=e=>({include:e.include.map(F),ignore:[...e.exclude.map(F),...e.ignorePatterns.map(F)]}),H=e=>!(e.trim()===""||e.includes("***")),ce=e=>{let r=[],t=[];for(let i of e)H(i)?r.push(i):t.push(`Invalid pattern: "${i}"`);return [r,t]};var A=async(e,r,t)=>{try{let i=await glob([...e.include],{cwd:r,ignore:[...e.ignore],absolute:!0,followSymbolicLinks:t.followSymlinks,onlyFiles:!0,dot:t.dot});return Ok({files:i})}catch(i){return Err(Error(`Glob execution failed: ${i.message}`))}};var me=async e=>{let r=p.join(e,".gitignore");try{return await readFile(r,"utf-8")}catch{return debug("scanner",`Failed to load .gitignore from ${e}`),null}},pe=e=>{let r=I().add(e);return (t,i)=>{let o=p.relative(i,t);return !r.ignores(o)}},M=()=>()=>true;var O=async(e,r)=>{try{let t=new Set;for(let o of(t.add(e),r)){let n=p.dirname(o);for(;n.startsWith(e)&&n!==p.dirname(e)&&(t.add(n),n!==e);)n=p.dirname(n);}let i=[];for(let o of t){let n=await me(o);n&&i.push({dir:o,ig:I().add(n)});}return i.length===0?Ok(M()):Ok(o=>{for(let{dir:n,ig:a}of i){let c=p.relative(n,o).replace(/\\/g,"/");if(!c.startsWith("..")&&!p.isAbsolute(c)&&a.ignores(c))return !1}return !0})}catch(t){return Err(Error(`Failed to load gitignore filters: ${t.message}`))}};var U=e=>Array.from(new Set(e)),ye=(e,r,t)=>e.filter(i=>t(i,r)),J=async(e,r)=>{try{let t=e.files,i=t.length;if(r.respectGitignore){let o=await O(r.rootDir,t);if(!o.ok)return o;t=ye(t,r.rootDir,o.data);}return t=U(t),Ok({files:t,filtered:i-t.length})}catch(t){return Err(Error(`Filtering failed: ${t.message}`))}},he=(e,r)=>{let t=new Set(r);return e.filter(i=>{let o=i.substring(i.lastIndexOf("."));return t.has(o)})},we=(e,r)=>e.filter(t=>r.test(t)),K=(e,r,t,i)=>e.filter(o=>{let n=p.relative(i,o).replace(/\\/g,"/");return !(!r.some(a=>minimatch(n,a,{dot:true}))||t.some(a=>minimatch(n,a,{dot:true})))});var ve=async(e,r)=>{let t=Array(e.length),i=0,o=async()=>{for(;i<e.length;){let n=i++;try{t[n]={status:"fulfilled",value:await e[n]()};}catch(a){t[n]={status:"rejected",reason:a};}}};return await Promise.all(Array.from({length:Math.min(r,e.length)},o)),t},Fe=async e=>{let r=e.map(t=>()=>stat(t));return (await ve(r,128)).reduce((t,i)=>t+(i.status==="fulfilled"?i.value.size:0),0)},D=async(e,r,t=false)=>{let i=e.reduce((a,c)=>{let f=p.extname(c)||".no-extension",g=a.get(f)??0;return a.set(f,g+1),a},new Map),o=await Fe(e),n=performance.now()-r;return {totalFiles:e.length,byExtension:i,totalSize:o,scanTime:n,cacheHit:t}};var z=promisify(exec),_=async e=>{try{return await z("git rev-parse --is-inside-work-tree",{cwd:e}),!0}catch{return false}},q=async e=>new Promise(r=>{try{let t=spawn("git",["ls-files","-c","-o","--exclude-standard"],{cwd:e}),i=[];t.stdout.setEncoding("utf8"),t.stdout.on("data",o=>{i.push(o);}),t.on("close",o=>{if(o!==0){debug("scanner",`git ls-files exited with code ${o}`),r([]);return}let n=i.join("").split(`
2
- `).filter(a=>a.trim().length>0).map(a=>p.resolve(e,a));r(n);}),t.on("error",o=>{debug("scanner",`Git discovery failed: ${o.message}`),r([]);});}catch(t){debug("scanner",`Git discovery failed: ${t.message}`),r([]);}}),Q=async e=>{try{let{stdout:r}=await z("git rev-parse HEAD",{cwd:e});try{let{stdout:t}=await z("git rev-parse --show-toplevel",{cwd:e}),i=p.join(t.trim(),".git","index"),o=await stat(i);return `${r.trim()}-${o.mtime.getTime()}`}catch{return r.trim()}}catch(r){return debug("scanner",`Failed to get repo fingerprint: ${r instanceof Error?r.message:String(r)}`),""}},X=async e=>{try{let r=await readdir(e,{withFileTypes:!0}),t=await Promise.allSettled(r.map(a=>stat(p.join(e,a.name)))),i=0,o=0,n=0;for(let a of t)a.status==="fulfilled"&&(i+=a.value.size,a.value.mtimeMs>o&&(o=a.value.mtimeMs),n++);return `dir-${r.length}-${n}-${i}-${o}`}catch(r){return debug("scanner",`Failed to get directory fingerprint: ${r instanceof Error?r.message:String(r)}`),""}};var Ae=async e=>{var r,t,i,o,n,a,c,f,g;let j;time("file-scan");let L=performance.now(),y=e.onProgress??(()=>{});r=e,debug("scanner",`Starting file discovery in: ${r.rootDir}`),debug("scanner",`Include patterns: ${r.include.join(", ")}`),debug("scanner",`Exclude patterns: ${r.exclude.join(", ")}`),y("normalizing",0);let ee=performance.now(),d=S(e),h=P(d),te=performance.now()-ee;if(t=d,i=h,debug("scanner",`Normalized rootDir: ${t.rootDir}`),debug("scanner",`Expanded to ${i.include.length} include patterns, ${i.ignore.length} ignore patterns`),e.tsConfigPath){let m=await je(e.tsConfigPath,d.rootDir);m&&(o=h,h={include:(n=m).include.length>0?[...o.include,...n.include]:o.include,ignore:n.exclude.length>0?[...o.ignore,...n.exclude]:o.ignore},debug("scanner",`tsconfig patterns merged: +${m.include.length} include, +${m.exclude.length} exclude`));}try{await access(d.rootDir);}catch{return timeEnd("file-scan"),Err(Error(`rootDir does not exist or is not accessible: ${d.rootDir}`))}let G=await _(d.rootDir),b=await ze(d,h,G,e);if(b)return y("complete",b.length),await Te(b,L);y("discovering",0);let re=performance.now(),v=await Oe(d,h,G);if(!v.ok)return Y("Scan",v.error),v;let N=v.data,ie=performance.now()-re;y("filtering",N.length);let oe=performance.now(),x=await J({files:N},d);if(!x.ok)return Y("Filter",x.error),x;let w=x.data.files,ne=performance.now()-oe;a=w.length,c=x.data.filtered,debug("scanner",`After filters: ${a} files (${c} filtered out)`),y("calculating-stats",w.length),await Ce(d,h,w,G,e);let B=await D(w,L,false),R=timeEnd("file-scan");return f=B,g=R,debug("scanner",`Scan complete: ${f.totalFiles} files in ${g.toFixed(1)}ms`),j=Array.from(f.byExtension.entries()).sort(([,m],[,E])=>E-m).slice(0,5).map(([m,E])=>`${m}:${E}`).join(", "),debug("scanner",`Breakdown: ${j}`),f.totalFiles===0&&debug("scanner","No files found matching patterns. Check your include/exclude configuration."),y("complete",w.length),Ok({files:w,stats:B,timestamp:Date.now(),timings:{normalization:te,discovery:ie,filtering:ne,total:R}})};async function Oe(e,r,t){if(t){debug("scanner","Git repository detected. Using fast Git discovery...");let o=await q(e.rootDir);if(o.length===0){debug("scanner","Git discovery returned 0 files \u2014 this may indicate a git command failure. Falling back to glob-based scanning.");let a=await A(r,e.rootDir,{followSymlinks:e.followSymlinks,dot:e.dot});return a.ok&&debug("scanner",`Glob fallback found ${a.data.files.length} files`),a.ok?Ok(a.data.files):a}let n=K(o,r.include,r.ignore,e.rootDir);return debug("scanner",`Git discovery found ${n.length} files (after glob filtering)`),Ok(n)}debug("scanner","Not a Git repository. Falling back to standard globbing...");let i=await A(r,e.rootDir,{followSymlinks:e.followSymlinks,dot:e.dot});return i.ok&&debug("scanner",`Glob found ${i.data.files.length} files`),i.ok?Ok(i.data.files):i}async function Z(e,r,t,i){if(!i.cache)return null;let o=t?await Q(e.rootDir):await X(e.rootDir);return o?i.cache.computeHash([e.rootDir,JSON.stringify(r),o,"v1"].join("|")):null}async function ze(e,r,t,i){let o=await Z(e,r,t,i);if(!o||!i.cache)return null;let n=await i.cache.files.get(o);return n?(debug("scanner",`Cache HIT. Loaded ${n.files.length} files.`),n.files):null}async function Ce(e,r,t,i,o){if(!o.cache||t.length===0)return;let n=await Z(e,r,i,o);n&&(await o.cache.files.set(n,t),debug("scanner","File list cached."));}async function Te(e,r){let t=await D(e,r,true),i=performance.now()-r;return Ok({files:e,stats:t,timestamp:Date.now(),timings:{normalization:0,discovery:i,filtering:0,total:i}})}function Y(e,r){let t=timeEnd("file-scan");debug("scanner",`${e} failed after ${t.toFixed(1)}ms: ${r.message}`);}async function je(e,r){try{let t=(await readFile(e,"utf-8")).replace(/\/\/[^\n]*/g,"").replace(/\/\*[\s\S]*?\*\//g,""),i=JSON.parse(t),o=p.dirname(p.resolve(e)),n=f=>{let g=p.resolve(o,f);return p.relative(r,g).replace(/\\/g,"/")},a=[],c=[];return Array.isArray(i.include)&&a.push(...i.include.map(n)),Array.isArray(i.files)&&a.push(...i.files.map(n)),Array.isArray(i.exclude)&&c.push(...i.exclude.map(n)),{include:a,exclude:c}}catch(t){return debug("scanner",`Failed to load tsconfig patterns from ${e}: ${t instanceof Error?t.message:String(t)}`),null}}
3
- export{D as calculateStats,pe as createGitignoreFilter,M as createPassThroughFilter,U as deduplicateFiles,P as expandPatterns,he as filterByExtension,we as filterByPattern,H as isValidPattern,O as loadAllGitignoreFilters,S as normalizeOptions,F as normalizePattern,Ae as scan,se as validateOptions,ce as validatePatterns};//# sourceMappingURL=index.js.map
1
+ import {access,readFile,stat,readdir}from'fs/promises';import g from'path';import {Ok,Err,time,debug,timeEnd}from'@ngcompass/common';export{Err,Ok}from'@ngcompass/common';import {glob}from'tinyglobby';import {minimatch}from'minimatch';import Y from'ignore';import {exec,spawn}from'child_process';import {promisify}from'util';var xe=["**/*.ts","**/*.html","**/*.scss","**/*.css","**/*.sass","**/*.less"],j=e=>({rootDir:g.resolve(e.rootDir),include:e.include.length>0?e.include:xe,exclude:e.exclude,ignorePatterns:e.ignorePatterns??[],respectGitignore:e.respectGitignore??true,followSymlinks:e.followSymlinks??false,dot:e.dot??false}),we=e=>{let r=[];return e.rootDir&&e.rootDir.trim()!==""||r.push("rootDir cannot be empty"),e.include&&e.include.length!==0||r.push("No include patterns specified (will use defaults)"),r};var P=e=>e.replace(/\\/g,"/"),C=e=>({include:e.include.map(P),ignore:[...e.exclude.map(P),...e.ignorePatterns.map(P)]}),X=e=>!(e.trim()===""||e.includes("***")),Fe=e=>{let r=[],t=[];for(let i of e)X(i)?r.push(i):t.push(`Invalid pattern: "${i}"`);return [r,t]};var M=async(e,r,t)=>{try{let i=await glob([...e.include],{cwd:r,ignore:[...e.ignore],absolute:!0,followSymbolicLinks:t.followSymlinks,onlyFiles:!0,dot:t.dot});return Ok({files:i})}catch(i){return Err(Error(`Glob execution failed: ${i.message}`))}};var Ee=async e=>{let r=g.join(e,".gitignore");try{return await readFile(r,"utf-8")}catch{return debug("scanner",`Failed to load .gitignore from ${e}`),null}},Se=e=>{let r=Y().add(e);return (t,i)=>{let n=g.relative(i,t);return !r.ignores(n)}},Z=()=>()=>true;var L=async(e,r)=>{try{let t=new Set;for(let n of(t.add(e),r)){let o=g.dirname(n);for(;o.startsWith(e)&&o!==g.dirname(e)&&(t.add(o),o!==e);)o=g.dirname(o);}let i=[];for(let n of t){let o=await Ee(n);o&&i.push({dir:n,ig:Y().add(o)});}return i.length===0?Ok(Z()):Ok(n=>{for(let{dir:o,ig:a}of i){let u=g.relative(o,n).replace(/\\/g,"/");if(!u.startsWith("..")&&!g.isAbsolute(u)&&a.ignores(u))return !1}return !0})}catch(t){return Err(Error(`Failed to load gitignore filters: ${t.message}`))}};var te=e=>Array.from(new Set(e)),ke=(e,r,t)=>e.filter(i=>t(i,r)),re=async(e,r)=>{try{let t=e.files,i=t.length;if(r.respectGitignore){let n=await L(r.rootDir,t);if(!n.ok)return n;t=ke(t,r.rootDir,n.data);}return t=te(t),Ok({files:t,filtered:i-t.length})}catch(t){return Err(Error(`Filtering failed: ${t.message}`))}},Ge=(e,r)=>{let t=new Set(r);return e.filter(i=>{let n=i.substring(i.lastIndexOf("."));return t.has(n)})},Ae=(e,r)=>e.filter(t=>r.test(t)),ie=(e,r,t,i)=>e.filter(n=>{let o=g.relative(i,n).replace(/\\/g,"/");return !(!r.some(a=>minimatch(o,a,{dot:true}))||t.some(a=>minimatch(o,a,{dot:true})))});var Te=async(e,r)=>{let t=Array(e.length),i=0,n=async()=>{for(;i<e.length;){let o=i++;try{t[o]={status:"fulfilled",value:await e[o]()};}catch(a){t[o]={status:"rejected",reason:a};}}};return await Promise.all(Array.from({length:Math.min(r,e.length)},n)),t},Oe=async e=>{let r=e.map(t=>()=>stat(t));return (await Te(r,128)).reduce((t,i)=>t+(i.status==="fulfilled"?i.value.size:0),0)},N=async(e,r,t=false)=>{let i=e.reduce((a,u)=>{let p=g.extname(u)||".no-extension",y=a.get(p)??0;return a.set(p,y+1),a},new Map),n=await Oe(e),o=performance.now()-r;return {totalFiles:e.length,byExtension:i,totalSize:n,scanTime:o,cacheHit:t}};var B=promisify(exec),oe=async e=>{try{return await B("git rev-parse --is-inside-work-tree",{cwd:e}),!0}catch{return false}},ae=async e=>new Promise(r=>{try{let t=spawn("git",["ls-files","-c","-o","--exclude-standard"],{cwd:e}),i=[];t.stdout.setEncoding("utf8"),t.stdout.on("data",n=>{i.push(n);}),t.on("close",n=>{if(n!==0){debug("scanner",`git ls-files exited with code ${n}`),r([]);return}let o=i.join("").split(`
2
+ `).filter(a=>a.trim().length>0).map(a=>g.resolve(e,a));r(o);}),t.on("error",n=>{debug("scanner",`Git discovery failed: ${n.message}`),r([]);});}catch(t){debug("scanner",`Git discovery failed: ${t.message}`),r([]);}}),le=async e=>{try{let{stdout:r}=await B("git rev-parse HEAD",{cwd:e});try{let{stdout:t}=await B("git rev-parse --show-toplevel",{cwd:e}),i=g.join(t.trim(),".git","index"),n=await stat(i);return `${r.trim()}-${n.mtime.getTime()}`}catch{return r.trim()}}catch(r){return debug("scanner",`Failed to get repo fingerprint: ${r instanceof Error?r.message:String(r)}`),""}},se=async e=>{try{let r=await readdir(e,{withFileTypes:!0}),t=await Promise.allSettled(r.map(a=>stat(g.join(e,a.name)))),i=0,n=0,o=0;for(let a of t)a.status==="fulfilled"&&(i+=a.value.size,a.value.mtimeMs>n&&(n=a.value.mtimeMs),o++);return `dir-${r.length}-${o}-${i}-${n}`}catch(r){return debug("scanner",`Failed to get directory fingerprint: ${r instanceof Error?r.message:String(r)}`),""}};var Ie=async e=>{var r,t,i,n,o,a,u,p,y,b,G,W;let J;time("file-scan");let U=performance.now(),h=e.onProgress??(()=>{});r=e,debug("scanner",`Starting file discovery in: ${r.rootDir}`),debug("scanner",`Include patterns: ${r.include.join(", ")}`),debug("scanner",`Exclude patterns: ${r.exclude.join(", ")}`),h("normalizing",0);let ue=performance.now(),d=j(e),x=C(d),de=performance.now()-ue;if(t=d,i=x,debug("scanner",`Normalized rootDir: ${t.rootDir}`),debug("scanner",`Expanded to ${i.include.length} include patterns, ${i.ignore.length} ignore patterns`),e.tsConfigPath){let s=await Ue(e.tsConfigPath,d.rootDir);s&&(n=x,x={include:(o=s).include.length>0?[...n.include,...o.include]:n.include,ignore:o.exclude.length>0?[...n.ignore,...o.exclude]:n.ignore},debug("scanner",`tsconfig patterns merged: +${s.include.length} include, +${s.exclude.length} exclude`));}try{await access(d.rootDir);}catch{return timeEnd("file-scan"),Err(Error(`rootDir does not exist or is not accessible: ${d.rootDir}`))}let z=await oe(d.rootDir),T=await We(d,x,z,e);if(T){let s,F,_;return h("complete",T.files.length),a=T,u=U,s=performance.now()-u,_=(F=(function(f){if(!f||typeof f!="object"||typeof f.totalFiles!="number"||typeof f.totalSize!="number"||typeof f.scanTime!="number"||typeof f.cacheHit!="boolean")return null;let $=(function(v){if(v instanceof Map)return v;if(!Array.isArray(v))return null;let S=new Map;for(let H of v){if(!Array.isArray(H)||H.length!==2)return null;let[q,Q]=H;if(typeof q!="string"||typeof Q!="number")return null;S.set(q,Q);}return S})(f.byExtension);return $?{totalFiles:f.totalFiles,byExtension:$,totalSize:f.totalSize,scanTime:f.scanTime,cacheHit:f.cacheHit}:null})(a.stats))?{...F,scanTime:s,cacheHit:true}:{totalFiles:a.files.length,byExtension:(function(f){let $=new Map;for(let v of f){let S=g.extname(v)||".no-extension";$.set(S,($.get(S)??0)+1);}return $})(a.files),totalSize:0,scanTime:s,cacheHit:true},Ok({files:a.files,stats:_,timestamp:Date.now(),timings:{normalization:0,discovery:s,filtering:0,total:s}})}h("discovering",0);let me=performance.now(),A=await Re(d,x,z);if(!A.ok)return ce("Scan",A.error),A;let K=A.data,pe=performance.now()-me;h("filtering",K.length);let ge=performance.now(),E=await re({files:K},d);if(!E.ok)return ce("Filter",E.error),E;let w=E.data.files,ye=performance.now()-ge;p=w.length,y=E.data.filtered,debug("scanner",`After filters: ${p} files (${y} filtered out)`),h("calculating-stats",w.length);let O=await N(w,U,false);await Je(d,x,w,{totalFiles:(b=O).totalFiles,byExtension:Array.from(b.byExtension.entries()),totalSize:b.totalSize,scanTime:b.scanTime,cacheHit:b.cacheHit},z,e);let V=timeEnd("file-scan");return G=O,W=V,debug("scanner",`Scan complete: ${G.totalFiles} files in ${W.toFixed(1)}ms`),J=Array.from(G.byExtension.entries()).sort(([,s],[,F])=>F-s).slice(0,5).map(([s,F])=>`${s}:${F}`).join(", "),debug("scanner",`Breakdown: ${J}`),G.totalFiles===0&&debug("scanner","No files found matching patterns. Check your include/exclude configuration."),h("complete",w.length),Ok({files:w,stats:O,timestamp:Date.now(),timings:{normalization:de,discovery:pe,filtering:ye,total:V}})};async function Re(e,r,t){if(t){debug("scanner","Git repository detected. Using fast Git discovery...");let n=await ae(e.rootDir);if(n.length===0){debug("scanner","Git discovery returned 0 files \u2014 this may indicate a git command failure. Falling back to glob-based scanning.");let a=await M(r,e.rootDir,{followSymlinks:e.followSymlinks,dot:e.dot});return a.ok&&debug("scanner",`Glob fallback found ${a.data.files.length} files`),a.ok?Ok(a.data.files):a}let o=ie(n,r.include,r.ignore,e.rootDir);return debug("scanner",`Git discovery found ${o.length} files (after glob filtering)`),Ok(o)}debug("scanner","Not a Git repository. Falling back to standard globbing...");let i=await M(r,e.rootDir,{followSymlinks:e.followSymlinks,dot:e.dot});return i.ok&&debug("scanner",`Glob found ${i.data.files.length} files`),i.ok?Ok(i.data.files):i}async function fe(e,r,t,i){if(!i.cache)return null;let n=t?await le(e.rootDir):await se(e.rootDir);return n?i.cache.computeHash([e.rootDir,JSON.stringify(r),n,"v1"].join("|")):null}async function We(e,r,t,i){let n=await fe(e,r,t,i);if(!n||!i.cache)return null;let o=await i.cache.files.get(n);return o?(debug("scanner",`Cache HIT. Loaded ${o.files.length} files.`),o):null}async function Je(e,r,t,i,n,o){if(!o.cache||t.length===0)return;let a=await fe(e,r,n,o);a&&(await o.cache.files.set(a,t,i),debug("scanner","File list cached."));}function ce(e,r){let t=timeEnd("file-scan");debug("scanner",`${e} failed after ${t.toFixed(1)}ms: ${r.message}`);}async function Ue(e,r){try{let t=(await readFile(e,"utf-8")).replace(/\/\/[^\n]*/g,"").replace(/\/\*[\s\S]*?\*\//g,""),i=JSON.parse(t),n=g.dirname(g.resolve(e)),o=p=>{let y=g.resolve(n,p);return g.relative(r,y).replace(/\\/g,"/")},a=[],u=[];return Array.isArray(i.include)&&a.push(...i.include.map(o)),Array.isArray(i.files)&&a.push(...i.files.map(o)),Array.isArray(i.exclude)&&u.push(...i.exclude.map(o)),{include:a,exclude:u}}catch(t){return debug("scanner",`Failed to load tsconfig patterns from ${e}: ${t instanceof Error?t.message:String(t)}`),null}}
3
+ export{N as calculateStats,Se as createGitignoreFilter,Z as createPassThroughFilter,te as deduplicateFiles,C as expandPatterns,Ge as filterByExtension,Ae as filterByPattern,X as isValidPattern,L as loadAllGitignoreFilters,j as normalizeOptions,P as normalizePattern,Ie as scan,we as validateOptions,Fe as validatePatterns};//# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/normalize.ts","../src/patterns.ts","../src/glob.ts","../src/gitignore.ts","../src/filters.ts","../src/stats.ts","../src/git.ts","../src/scan.ts"],"names":["DEFAULT_INCLUDE","normalizeOptions","options","rootDir","path","resolve","include","length","exclude","ignorePatterns","respectGitignore","followSymlinks","dot","validateOptions","errors","trim","push","normalizePattern","pattern","replace","expandPatterns","map","ignore","isValidPattern","includes","validatePatterns","patterns","valid","executeGlob","files","glob","cwd","absolute","followSymbolicLinks","onlyFiles","Ok","error","Err","Error","message","loadGitignore","gitignorePath","join","readFile","debug","createGitignoreFilter","gitignoreContent","ig","add","file","relative","ignores","createPassThroughFilter","loadAllGitignoreFilters","filePaths","dirsToCheck","Set","filePath","current","dirname","startsWith","dirFilters","dir","content","rel","isAbsolute","deduplicateFiles","Array","from","applyGitignoreFilter","filter","applyFilters","rawFiles","startCount","filterResult","ok","data","filtered","filterByExtension","extensions","extSet","ext","substring","lastIndexOf","has","filterByPattern","test","filterByGlob","relativePath","some","p","minimatch","runWithLimit","tasks","concurrency","results","cursor","worker","i","status","value","reason","Promise","all","Math","min","calculateTotalSize","f","stat","reduce","sum","result","size","calculateStats","startTime","cacheHit","byExtension","extname","count","get","set","Map","totalSize","scanTime","performance","now","totalFiles","execAsync","promisify","exec","isGitRepo","executeGitDiscovery","child","spawn","chunks","stdout","setEncoding","on","chunk","code","split","line","err","getRepoFingerprint","head","root","indexPath","fileStats","mtime","getTime","String","getDirectoryFingerprint","entries","readdir","withFileTypes","statResults","allSettled","entry","name","latestMtime","statSuccessCount","mtimeMs","scan","normalized","tsPatterns","fileCount","filteredCount","stats","breakdown","time","progress","onProgress","t0","normalizationTime","tsConfigPath","loadTsConfigPatterns","access","timeEnd","isGit","cacheResult","tryLoadFromCache","buildCachedResult","t1","discoveryResult","discoverFiles","logAndReturnError","discoveryTime","t2","finalFiles","filteringTime","saveToCache","totalTime","toFixed","sort","a","b","slice","timestamp","Date","timings","normalization","discovery","filtering","total","gitFiles","getCacheKey","cache","fingerprint","computeHash","JSON","stringify","key","cached","phase","stripped","config","parse","configDir","toRootRelative","abs","isArray"],"mappings":"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","file":"index.js","sourcesContent":["import e from 'node:path';\nlet DEFAULT_INCLUDE = [\n '**/*.ts',\n '**/*.html',\n '**/*.scss',\n '**/*.css',\n '**/*.sass',\n '**/*.less'\n];\nexport const normalizeOptions = (t)=>({\n rootDir: e.resolve(t.rootDir),\n include: t.include.length > 0 ? t.include : DEFAULT_INCLUDE,\n exclude: t.exclude,\n ignorePatterns: t.ignorePatterns ?? [],\n respectGitignore: t.respectGitignore ?? !0,\n followSymlinks: t.followSymlinks ?? !1,\n dot: t.dot ?? !1\n });\nexport const validateOptions = (e)=>{\n let t = [];\n return e.rootDir && '' !== e.rootDir.trim() || t.push('rootDir cannot be empty'), e.include && 0 !== e.include.length || t.push('No include patterns specified (will use defaults)'), t;\n};\n","export const normalizePattern = (t)=>t.replace(/\\\\/g, '/');\nexport const expandPatterns = (t)=>({\n include: t.include.map(normalizePattern),\n ignore: [\n ...t.exclude.map(normalizePattern),\n ...t.ignorePatterns.map(normalizePattern)\n ]\n });\nexport const isValidPattern = (t)=>!('' === t.trim() || t.includes('***'));\nexport const validatePatterns = (t)=>{\n let e = [], n = [];\n for (let r of t)isValidPattern(r) ? e.push(r) : n.push(`Invalid pattern: \"${r}\"`);\n return [\n e,\n n\n ];\n};\n","import { glob as e } from 'tinyglobby';\nimport { Ok as t, Err as o } from './types.js';\nexport const executeGlob = async (r, l, i)=>{\n try {\n let o = await e([\n ...r.include\n ], {\n cwd: l,\n ignore: [\n ...r.ignore\n ],\n absolute: !0,\n followSymbolicLinks: i.followSymlinks,\n onlyFiles: !0,\n dot: i.dot\n });\n return t({\n files: o\n });\n } catch (e) {\n return o(Error(`Glob execution failed: ${e.message}`));\n }\n};\nexport const patternsLikelyHaveMatches = (e)=>!(0 === e.include.length || e.include.every((e)=>e.startsWith('!')));\n","import r from 'ignore';\nimport { readFile as e } from 'node:fs/promises';\nimport t from 'node:path';\nimport { Ok as o, Err as i } from './types.js';\nimport { debug as a } from '@ngcompass/common';\nexport const loadGitignore = async (r)=>{\n let o = t.join(r, '.gitignore');\n try {\n return await e(o, 'utf-8');\n } catch (e) {\n return a('scanner', `Failed to load .gitignore from ${r}`), null;\n }\n};\nexport const createGitignoreFilter = (e)=>{\n let o = r().add(e);\n return (r, e)=>{\n let i = t.relative(e, r);\n return !o.ignores(i);\n };\n};\nexport const createPassThroughFilter = ()=>()=>!0;\nexport const loadAndCreateGitignoreFilter = async (r)=>{\n try {\n let e = await loadGitignore(r);\n if (!e) return o(createPassThroughFilter());\n let t = createGitignoreFilter(e);\n return o(t);\n } catch (r) {\n return i(Error(`Failed to load .gitignore: ${r.message}`));\n }\n};\nexport const loadAllGitignoreFilters = async (e, a)=>{\n try {\n let i = new Set();\n for (let r of (i.add(e), a)){\n let o = t.dirname(r);\n for(; o.startsWith(e) && o !== t.dirname(e) && (i.add(o), o !== e);)o = t.dirname(o);\n }\n let n = [];\n for (let e of i){\n let t = await loadGitignore(e);\n t && n.push({\n dir: e,\n ig: r().add(t)\n });\n }\n if (0 === n.length) return o(createPassThroughFilter());\n return o((r)=>{\n for (let { dir: e, ig: o } of n){\n let i = t.relative(e, r).replace(/\\\\/g, '/');\n if (!i.startsWith('..') && !t.isAbsolute(i) && o.ignores(i)) return !1;\n }\n return !0;\n });\n } catch (r) {\n return i(Error(`Failed to load gitignore filters: ${r.message}`));\n }\n};\n","import t from 'node:path';\nimport { minimatch as e } from 'minimatch';\nimport { Ok as r, Err as i } from './types.js';\nimport { loadAllGitignoreFilters as o } from './gitignore.js';\nexport const deduplicateFiles = (t)=>Array.from(new Set(t));\nexport const applyGitignoreFilter = (t, e, r)=>t.filter((t)=>r(t, e));\nexport const applyFilters = async (t, e)=>{\n try {\n let i = t.files, l = i.length;\n if (e.respectGitignore) {\n let t = await o(e.rootDir, i);\n if (!t.ok) return t;\n i = applyGitignoreFilter(i, e.rootDir, t.data);\n }\n return i = deduplicateFiles(i), r({\n files: i,\n filtered: l - i.length\n });\n } catch (t) {\n return i(Error(`Filtering failed: ${t.message}`));\n }\n};\nexport const filterByExtension = (t, e)=>{\n let r = new Set(e);\n return t.filter((t)=>{\n let e = t.substring(t.lastIndexOf('.'));\n return r.has(e);\n });\n};\nexport const filterByPattern = (t, e)=>t.filter((t)=>e.test(t));\nexport const filterByGlob = (r, i, o, l)=>r.filter((r)=>{\n let n = t.relative(l, r).replace(/\\\\/g, '/');\n return !(!i.some((t)=>e(n, t, {\n dot: !0\n })) || o.some((t)=>e(n, t, {\n dot: !0\n })));\n });\n","import t from 'node:path';\nimport { stat as e } from 'node:fs/promises';\nlet runWithLimit = async (t, e)=>{\n let a = Array(t.length), l = 0, r = async ()=>{\n for(; l < t.length;){\n let e = l++;\n try {\n a[e] = {\n status: 'fulfilled',\n value: await t[e]()\n };\n } catch (t) {\n a[e] = {\n status: 'rejected',\n reason: t\n };\n }\n }\n };\n return await Promise.all(Array.from({\n length: Math.min(e, t.length)\n }, r)), a;\n}, calculateTotalSize = async (t)=>{\n let a = t.map((t)=>()=>e(t));\n return (await runWithLimit(a, 128)).reduce((t, e)=>t + ('fulfilled' === e.status ? e.value.size : 0), 0);\n};\nexport const calculateStats = async (e, a, l = !1)=>{\n let r = e.reduce((e, a)=>{\n let l = t.extname(a) || '.no-extension', r = e.get(l) ?? 0;\n return e.set(l, r + 1), e;\n }, new Map()), n = await calculateTotalSize(e), i = performance.now() - a;\n return {\n totalFiles: e.length,\n byExtension: r,\n totalSize: n,\n scanTime: i,\n cacheHit: l\n };\n};\n","import { exec as e, spawn as t } from 'node:child_process';\nimport { promisify as r } from 'node:util';\nimport i from 'node:path';\nimport { stat as o, readdir as n } from 'node:fs/promises';\nimport { debug as s } from '@ngcompass/common';\nlet execAsync = r(e);\nexport const isGitRepo = async (e)=>{\n try {\n return await execAsync('git rev-parse --is-inside-work-tree', {\n cwd: e\n }), !0;\n } catch {\n return !1;\n }\n};\nexport const executeGitDiscovery = async (e)=>new Promise((r)=>{\n try {\n let o = t('git', [\n 'ls-files',\n '-c',\n '-o',\n '--exclude-standard'\n ], {\n cwd: e\n }), n = [];\n o.stdout.setEncoding('utf8'), o.stdout.on('data', (e)=>{\n n.push(e);\n }), o.on('close', (t)=>{\n if (0 !== t) {\n s('scanner', `git ls-files exited with code ${t}`), r([]);\n return;\n }\n let o = n.join('').split('\\n').filter((e)=>e.trim().length > 0).map((t)=>i.resolve(e, t));\n r(o);\n }), o.on('error', (e)=>{\n s('scanner', `Git discovery failed: ${e.message}`), r([]);\n });\n } catch (e) {\n s('scanner', `Git discovery failed: ${e.message}`), r([]);\n }\n });\nexport const getRepoFingerprint = async (e)=>{\n try {\n let { stdout: t } = await execAsync('git rev-parse HEAD', {\n cwd: e\n });\n try {\n let { stdout: r } = await execAsync('git rev-parse --show-toplevel', {\n cwd: e\n }), n = i.join(r.trim(), '.git', 'index'), s = await o(n);\n return `${t.trim()}-${s.mtime.getTime()}`;\n } catch {\n return t.trim();\n }\n } catch (e) {\n return s('scanner', `Failed to get repo fingerprint: ${e instanceof Error ? e.message : String(e)}`), '';\n }\n};\nexport const getDirectoryFingerprint = async (e)=>{\n try {\n let t = await n(e, {\n withFileTypes: !0\n }), r = await Promise.allSettled(t.map((t)=>o(i.join(e, t.name)))), s = 0, a = 0, c = 0;\n for (let e of r)'fulfilled' === e.status && (s += e.value.size, e.value.mtimeMs > a && (a = e.value.mtimeMs), c++);\n return `dir-${t.length}-${c}-${s}-${a}`;\n } catch (e) {\n return s('scanner', `Failed to get directory fingerprint: ${e instanceof Error ? e.message : String(e)}`), '';\n }\n};\n","import { access as e, readFile as t } from 'node:fs/promises';\nimport r from 'node:path';\nimport { debug as n, time as i, timeEnd as a } from '@ngcompass/common';\nimport { Ok as o, Err as l } from './types.js';\nimport { normalizeOptions as s } from './normalize.js';\nimport { expandPatterns as c } from './patterns.js';\nimport { executeGlob as f } from './glob.js';\nimport { applyFilters as d, filterByGlob as u } from './filters.js';\nimport { calculateStats as g } from './stats.js';\nimport { isGitRepo as m, executeGitDiscovery as p, getRepoFingerprint as h, getDirectoryFingerprint as y } from './git.js';\nexport const scan = async (t)=>{\n var r, f, u, p, h, y, w, $, v;\n let D;\n i('file-scan');\n let b = performance.now(), k = t.onProgress ?? (()=>void 0);\n r = t, n('scanner', `Starting file discovery in: ${r.rootDir}`), n('scanner', `Include patterns: ${r.include.join(', ')}`), n('scanner', `Exclude patterns: ${r.exclude.join(', ')}`), k('normalizing', 0);\n let x = performance.now(), C = s(t), F = c(C), j = performance.now() - x;\n if (f = C, u = F, n('scanner', `Normalized rootDir: ${f.rootDir}`), n('scanner', `Expanded to ${u.include.length} include patterns, ${u.ignore.length} ignore patterns`), t.tsConfigPath) {\n let e = await loadTsConfigPatterns(t.tsConfigPath, C.rootDir);\n e && (p = F, F = {\n include: (h = e).include.length > 0 ? [\n ...p.include,\n ...h.include\n ] : p.include,\n ignore: h.exclude.length > 0 ? [\n ...p.ignore,\n ...h.exclude\n ] : p.ignore\n }, n('scanner', `tsconfig patterns merged: +${e.include.length} include, +${e.exclude.length} exclude`));\n }\n try {\n await e(C.rootDir);\n } catch {\n return a('file-scan'), l(Error(`rootDir does not exist or is not accessible: ${C.rootDir}`));\n }\n let A = await m(C.rootDir), S = await tryLoadFromCache(C, F, A, t);\n if (S) return k('complete', S.length), await buildCachedResult(S, b);\n k('discovering', 0);\n let E = performance.now(), G = await discoverFiles(C, F, A);\n if (!G.ok) return logAndReturnError('Scan', G.error), G;\n let z = G.data, N = performance.now() - E;\n k('filtering', z.length);\n let P = performance.now(), R = await d({\n files: z\n }, C);\n if (!R.ok) return logAndReturnError('Filter', R.error), R;\n let T = R.data.files, K = performance.now() - P;\n y = T.length, w = R.data.filtered, n('scanner', `After filters: ${y} files (${w} filtered out)`), k('calculating-stats', T.length), await saveToCache(C, F, T, A, t);\n let L = await g(T, b, !1), H = a('file-scan');\n return $ = L, v = H, n('scanner', `Scan complete: ${$.totalFiles} files in ${v.toFixed(1)}ms`), D = Array.from($.byExtension.entries()).sort(([, e], [, t])=>t - e).slice(0, 5).map(([e, t])=>`${e}:${t}`).join(', '), n('scanner', `Breakdown: ${D}`), 0 === $.totalFiles && n('scanner', 'No files found matching patterns. Check your include/exclude configuration.'), k('complete', T.length), o({\n files: T,\n stats: L,\n timestamp: Date.now(),\n timings: {\n normalization: j,\n discovery: N,\n filtering: K,\n total: H\n }\n });\n};\nasync function discoverFiles(e, t, r) {\n if (r) {\n n('scanner', 'Git repository detected. Using fast Git discovery...');\n let r = await p(e.rootDir);\n if (0 === r.length) {\n n('scanner', 'Git discovery returned 0 files — this may indicate a git command failure. Falling back to glob-based scanning.');\n let r = await f(t, e.rootDir, {\n followSymlinks: e.followSymlinks,\n dot: e.dot\n });\n return r.ok && n('scanner', `Glob fallback found ${r.data.files.length} files`), r.ok ? o(r.data.files) : r;\n }\n let i = u(r, t.include, t.ignore, e.rootDir);\n return n('scanner', `Git discovery found ${i.length} files (after glob filtering)`), o(i);\n }\n n('scanner', 'Not a Git repository. Falling back to standard globbing...');\n let i = await f(t, e.rootDir, {\n followSymlinks: e.followSymlinks,\n dot: e.dot\n });\n return i.ok && n('scanner', `Glob found ${i.data.files.length} files`), i.ok ? o(i.data.files) : i;\n}\nasync function getCacheKey(e, t, r, n) {\n if (!n.cache) return null;\n let i = r ? await h(e.rootDir) : await y(e.rootDir);\n return i ? n.cache.computeHash([\n e.rootDir,\n JSON.stringify(t),\n i,\n 'v1'\n ].join('|')) : null;\n}\nasync function tryLoadFromCache(e, t, r, i) {\n let a = await getCacheKey(e, t, r, i);\n if (!a || !i.cache) return null;\n let o = await i.cache.files.get(a);\n return o ? (n('scanner', `Cache HIT. Loaded ${o.files.length} files.`), o.files) : null;\n}\nasync function saveToCache(e, t, r, i, a) {\n if (!a.cache || 0 === r.length) return;\n let o = await getCacheKey(e, t, i, a);\n o && (await a.cache.files.set(o, r), n('scanner', 'File list cached.'));\n}\nasync function buildCachedResult(e, t) {\n let r = await g(e, t, !0), n = performance.now() - t;\n return o({\n files: e,\n stats: r,\n timestamp: Date.now(),\n timings: {\n normalization: 0,\n discovery: n,\n filtering: 0,\n total: n\n }\n });\n}\nfunction logAndReturnError(e, t) {\n let r = a('file-scan');\n n('scanner', `${e} failed after ${r.toFixed(1)}ms: ${t.message}`);\n}\nasync function loadTsConfigPatterns(e, i) {\n try {\n let n = (await t(e, 'utf-8')).replace(/\\/\\/[^\\n]*/g, '').replace(/\\/\\*[\\s\\S]*?\\*\\//g, ''), a = JSON.parse(n), o = r.dirname(r.resolve(e)), l = (e)=>{\n let t = r.resolve(o, e);\n return r.relative(i, t).replace(/\\\\/g, '/');\n }, s = [], c = [];\n return Array.isArray(a.include) && s.push(...a.include.map(l)), Array.isArray(a.files) && s.push(...a.files.map(l)), Array.isArray(a.exclude) && c.push(...a.exclude.map(l)), {\n include: s,\n exclude: c\n };\n } catch (t) {\n return n('scanner', `Failed to load tsconfig patterns from ${e}: ${t instanceof Error ? t.message : String(t)}`), null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/normalize.ts","../src/patterns.ts","../src/glob.ts","../src/gitignore.ts","../src/filters.ts","../src/stats.ts","../src/git.ts","../src/scan.ts"],"names":["DEFAULT_INCLUDE","normalizeOptions","options","rootDir","path","resolve","include","length","exclude","ignorePatterns","respectGitignore","followSymlinks","dot","validateOptions","errors","trim","push","normalizePattern","pattern","replace","expandPatterns","map","ignore","isValidPattern","includes","validatePatterns","patterns","valid","executeGlob","files","glob","cwd","absolute","followSymbolicLinks","onlyFiles","Ok","error","Err","Error","message","loadGitignore","gitignorePath","join","readFile","debug","createGitignoreFilter","gitignoreContent","ig","add","file","relative","ignores","createPassThroughFilter","loadAllGitignoreFilters","filePaths","dirsToCheck","Set","filePath","current","dirname","startsWith","dirFilters","dir","content","rel","isAbsolute","deduplicateFiles","Array","from","applyGitignoreFilter","filter","applyFilters","rawFiles","startCount","filterResult","ok","data","filtered","filterByExtension","extensions","extSet","ext","substring","lastIndexOf","has","filterByPattern","test","filterByGlob","relativePath","some","p","minimatch","runWithLimit","tasks","concurrency","results","cursor","worker","i","status","value","reason","Promise","all","Math","min","calculateTotalSize","f","stat","reduce","sum","result","size","calculateStats","startTime","cacheHit","byExtension","extname","count","get","set","Map","totalSize","scanTime","performance","now","totalFiles","execAsync","promisify","exec","isGitRepo","executeGitDiscovery","child","spawn","chunks","stdout","setEncoding","on","chunk","code","split","line","err","getRepoFingerprint","head","root","indexPath","fileStats","mtime","getTime","String","getDirectoryFingerprint","entries","readdir","withFileTypes","statResults","allSettled","entry","name","latestMtime","statSuccessCount","mtimeMs","scan","normalized","tsPatterns","cached","fileCount","filteredCount","stats","breakdown","time","progress","onProgress","t0","normalizationTime","tsConfigPath","loadTsConfigPatterns","access","timeEnd","isGit","cacheResult","tryLoadFromCache","totalTime","cachedStats","isArray","extension","timestamp","Date","timings","normalization","discovery","filtering","total","t1","discoveryResult","discoverFiles","logAndReturnError","discoveryTime","t2","finalFiles","filteringTime","saveToCache","toFixed","sort","a","b","slice","gitFiles","getCacheKey","cache","fingerprint","computeHash","JSON","stringify","key","phase","stripped","config","parse","configDir","toRootRelative","abs"],"mappings":"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","file":"index.js","sourcesContent":["import e from 'node:path';\nlet DEFAULT_INCLUDE = [\n '**/*.ts',\n '**/*.html',\n '**/*.scss',\n '**/*.css',\n '**/*.sass',\n '**/*.less'\n];\nexport const normalizeOptions = (t)=>({\n rootDir: e.resolve(t.rootDir),\n include: t.include.length > 0 ? t.include : DEFAULT_INCLUDE,\n exclude: t.exclude,\n ignorePatterns: t.ignorePatterns ?? [],\n respectGitignore: t.respectGitignore ?? !0,\n followSymlinks: t.followSymlinks ?? !1,\n dot: t.dot ?? !1\n });\nexport const validateOptions = (e)=>{\n let t = [];\n return e.rootDir && '' !== e.rootDir.trim() || t.push('rootDir cannot be empty'), e.include && 0 !== e.include.length || t.push('No include patterns specified (will use defaults)'), t;\n};\n","export const normalizePattern = (t)=>t.replace(/\\\\/g, '/');\nexport const expandPatterns = (t)=>({\n include: t.include.map(normalizePattern),\n ignore: [\n ...t.exclude.map(normalizePattern),\n ...t.ignorePatterns.map(normalizePattern)\n ]\n });\nexport const isValidPattern = (t)=>!('' === t.trim() || t.includes('***'));\nexport const validatePatterns = (t)=>{\n let e = [], n = [];\n for (let r of t)isValidPattern(r) ? e.push(r) : n.push(`Invalid pattern: \"${r}\"`);\n return [\n e,\n n\n ];\n};\n","import { glob as e } from 'tinyglobby';\nimport { Ok as t, Err as o } from './types.js';\nexport const executeGlob = async (r, l, i)=>{\n try {\n let o = await e([\n ...r.include\n ], {\n cwd: l,\n ignore: [\n ...r.ignore\n ],\n absolute: !0,\n followSymbolicLinks: i.followSymlinks,\n onlyFiles: !0,\n dot: i.dot\n });\n return t({\n files: o\n });\n } catch (e) {\n return o(Error(`Glob execution failed: ${e.message}`));\n }\n};\nexport const patternsLikelyHaveMatches = (e)=>!(0 === e.include.length || e.include.every((e)=>e.startsWith('!')));\n","import r from 'ignore';\nimport { readFile as e } from 'node:fs/promises';\nimport t from 'node:path';\nimport { Ok as o, Err as i } from './types.js';\nimport { debug as a } from '@ngcompass/common';\nexport const loadGitignore = async (r)=>{\n let o = t.join(r, '.gitignore');\n try {\n return await e(o, 'utf-8');\n } catch (e) {\n return a('scanner', `Failed to load .gitignore from ${r}`), null;\n }\n};\nexport const createGitignoreFilter = (e)=>{\n let o = r().add(e);\n return (r, e)=>{\n let i = t.relative(e, r);\n return !o.ignores(i);\n };\n};\nexport const createPassThroughFilter = ()=>()=>!0;\nexport const loadAndCreateGitignoreFilter = async (r)=>{\n try {\n let e = await loadGitignore(r);\n if (!e) return o(createPassThroughFilter());\n let t = createGitignoreFilter(e);\n return o(t);\n } catch (r) {\n return i(Error(`Failed to load .gitignore: ${r.message}`));\n }\n};\nexport const loadAllGitignoreFilters = async (e, a)=>{\n try {\n let i = new Set();\n for (let r of (i.add(e), a)){\n let o = t.dirname(r);\n for(; o.startsWith(e) && o !== t.dirname(e) && (i.add(o), o !== e);)o = t.dirname(o);\n }\n let n = [];\n for (let e of i){\n let t = await loadGitignore(e);\n t && n.push({\n dir: e,\n ig: r().add(t)\n });\n }\n if (0 === n.length) return o(createPassThroughFilter());\n return o((r)=>{\n for (let { dir: e, ig: o } of n){\n let i = t.relative(e, r).replace(/\\\\/g, '/');\n if (!i.startsWith('..') && !t.isAbsolute(i) && o.ignores(i)) return !1;\n }\n return !0;\n });\n } catch (r) {\n return i(Error(`Failed to load gitignore filters: ${r.message}`));\n }\n};\n","import t from 'node:path';\nimport { minimatch as e } from 'minimatch';\nimport { Ok as r, Err as i } from './types.js';\nimport { loadAllGitignoreFilters as o } from './gitignore.js';\nexport const deduplicateFiles = (t)=>Array.from(new Set(t));\nexport const applyGitignoreFilter = (t, e, r)=>t.filter((t)=>r(t, e));\nexport const applyFilters = async (t, e)=>{\n try {\n let i = t.files, l = i.length;\n if (e.respectGitignore) {\n let t = await o(e.rootDir, i);\n if (!t.ok) return t;\n i = applyGitignoreFilter(i, e.rootDir, t.data);\n }\n return i = deduplicateFiles(i), r({\n files: i,\n filtered: l - i.length\n });\n } catch (t) {\n return i(Error(`Filtering failed: ${t.message}`));\n }\n};\nexport const filterByExtension = (t, e)=>{\n let r = new Set(e);\n return t.filter((t)=>{\n let e = t.substring(t.lastIndexOf('.'));\n return r.has(e);\n });\n};\nexport const filterByPattern = (t, e)=>t.filter((t)=>e.test(t));\nexport const filterByGlob = (r, i, o, l)=>r.filter((r)=>{\n let n = t.relative(l, r).replace(/\\\\/g, '/');\n return !(!i.some((t)=>e(n, t, {\n dot: !0\n })) || o.some((t)=>e(n, t, {\n dot: !0\n })));\n });\n","import t from 'node:path';\nimport { stat as e } from 'node:fs/promises';\nlet runWithLimit = async (t, e)=>{\n let a = Array(t.length), l = 0, r = async ()=>{\n for(; l < t.length;){\n let e = l++;\n try {\n a[e] = {\n status: 'fulfilled',\n value: await t[e]()\n };\n } catch (t) {\n a[e] = {\n status: 'rejected',\n reason: t\n };\n }\n }\n };\n return await Promise.all(Array.from({\n length: Math.min(e, t.length)\n }, r)), a;\n}, calculateTotalSize = async (t)=>{\n let a = t.map((t)=>()=>e(t));\n return (await runWithLimit(a, 128)).reduce((t, e)=>t + ('fulfilled' === e.status ? e.value.size : 0), 0);\n};\nexport const calculateStats = async (e, a, l = !1)=>{\n let r = e.reduce((e, a)=>{\n let l = t.extname(a) || '.no-extension', r = e.get(l) ?? 0;\n return e.set(l, r + 1), e;\n }, new Map()), n = await calculateTotalSize(e), i = performance.now() - a;\n return {\n totalFiles: e.length,\n byExtension: r,\n totalSize: n,\n scanTime: i,\n cacheHit: l\n };\n};\n","import { exec as e, spawn as t } from 'node:child_process';\nimport { promisify as r } from 'node:util';\nimport i from 'node:path';\nimport { stat as o, readdir as n } from 'node:fs/promises';\nimport { debug as s } from '@ngcompass/common';\nlet execAsync = r(e);\nexport const isGitRepo = async (e)=>{\n try {\n return await execAsync('git rev-parse --is-inside-work-tree', {\n cwd: e\n }), !0;\n } catch {\n return !1;\n }\n};\nexport const executeGitDiscovery = async (e)=>new Promise((r)=>{\n try {\n let o = t('git', [\n 'ls-files',\n '-c',\n '-o',\n '--exclude-standard'\n ], {\n cwd: e\n }), n = [];\n o.stdout.setEncoding('utf8'), o.stdout.on('data', (e)=>{\n n.push(e);\n }), o.on('close', (t)=>{\n if (0 !== t) {\n s('scanner', `git ls-files exited with code ${t}`), r([]);\n return;\n }\n let o = n.join('').split('\\n').filter((e)=>e.trim().length > 0).map((t)=>i.resolve(e, t));\n r(o);\n }), o.on('error', (e)=>{\n s('scanner', `Git discovery failed: ${e.message}`), r([]);\n });\n } catch (e) {\n s('scanner', `Git discovery failed: ${e.message}`), r([]);\n }\n });\nexport const getRepoFingerprint = async (e)=>{\n try {\n let { stdout: t } = await execAsync('git rev-parse HEAD', {\n cwd: e\n });\n try {\n let { stdout: r } = await execAsync('git rev-parse --show-toplevel', {\n cwd: e\n }), n = i.join(r.trim(), '.git', 'index'), s = await o(n);\n return `${t.trim()}-${s.mtime.getTime()}`;\n } catch {\n return t.trim();\n }\n } catch (e) {\n return s('scanner', `Failed to get repo fingerprint: ${e instanceof Error ? e.message : String(e)}`), '';\n }\n};\nexport const getDirectoryFingerprint = async (e)=>{\n try {\n let t = await n(e, {\n withFileTypes: !0\n }), r = await Promise.allSettled(t.map((t)=>o(i.join(e, t.name)))), s = 0, a = 0, c = 0;\n for (let e of r)'fulfilled' === e.status && (s += e.value.size, e.value.mtimeMs > a && (a = e.value.mtimeMs), c++);\n return `dir-${t.length}-${c}-${s}-${a}`;\n } catch (e) {\n return s('scanner', `Failed to get directory fingerprint: ${e instanceof Error ? e.message : String(e)}`), '';\n }\n};\n","import { access as e, readFile as t } from 'node:fs/promises';\nimport n from 'node:path';\nimport { debug as r, time as i, timeEnd as o } from '@ngcompass/common';\nimport { Ok as a, Err as l } from './types.js';\nimport { normalizeOptions as s } from './normalize.js';\nimport { expandPatterns as c } from './patterns.js';\nimport { executeGlob as f } from './glob.js';\nimport { applyFilters as u, filterByGlob as d } from './filters.js';\nimport { calculateStats as m } from './stats.js';\nimport { isGitRepo as g, executeGitDiscovery as p, getRepoFingerprint as h, getDirectoryFingerprint as y } from './git.js';\nexport const scan = async (t)=>{\n var f, d, p, h, y, w, $, b, x, F, v, D;\n let S;\n i('file-scan');\n let A = performance.now(), k = t.onProgress ?? (()=>void 0);\n f = t, r('scanner', `Starting file discovery in: ${f.rootDir}`), r('scanner', `Include patterns: ${f.include.join(', ')}`), r('scanner', `Exclude patterns: ${f.exclude.join(', ')}`), k('normalizing', 0);\n let C = performance.now(), j = s(t), E = c(j), T = performance.now() - C;\n if (d = j, p = E, r('scanner', `Normalized rootDir: ${d.rootDir}`), r('scanner', `Expanded to ${p.include.length} include patterns, ${p.ignore.length} ignore patterns`), t.tsConfigPath) {\n let e = await loadTsConfigPatterns(t.tsConfigPath, j.rootDir);\n e && (h = E, E = {\n include: (y = e).include.length > 0 ? [\n ...h.include,\n ...y.include\n ] : h.include,\n ignore: y.exclude.length > 0 ? [\n ...h.ignore,\n ...y.exclude\n ] : h.ignore\n }, r('scanner', `tsconfig patterns merged: +${e.include.length} include, +${e.exclude.length} exclude`));\n }\n try {\n await e(j.rootDir);\n } catch {\n return o('file-scan'), l(Error(`rootDir does not exist or is not accessible: ${j.rootDir}`));\n }\n let z = await g(j.rootDir), H = await tryLoadFromCache(j, E, z, t);\n if (H) {\n let e, t, r;\n return k('complete', H.files.length), w = H, $ = A, e = performance.now() - $, r = (t = function(e) {\n if (!e || 'object' != typeof e || 'number' != typeof e.totalFiles || 'number' != typeof e.totalSize || 'number' != typeof e.scanTime || 'boolean' != typeof e.cacheHit) return null;\n let t = function(e) {\n if (e instanceof Map) return e;\n if (!Array.isArray(e)) return null;\n let t = new Map();\n for (let n of e){\n if (!Array.isArray(n) || 2 !== n.length) return null;\n let [e, r] = n;\n if ('string' != typeof e || 'number' != typeof r) return null;\n t.set(e, r);\n }\n return t;\n }(e.byExtension);\n return t ? {\n totalFiles: e.totalFiles,\n byExtension: t,\n totalSize: e.totalSize,\n scanTime: e.scanTime,\n cacheHit: e.cacheHit\n } : null;\n }(w.stats)) ? {\n ...t,\n scanTime: e,\n cacheHit: !0\n } : {\n totalFiles: w.files.length,\n byExtension: function(e) {\n let t = new Map();\n for (let r of e){\n let e = n.extname(r) || '.no-extension';\n t.set(e, (t.get(e) ?? 0) + 1);\n }\n return t;\n }(w.files),\n totalSize: 0,\n scanTime: e,\n cacheHit: !0\n }, a({\n files: w.files,\n stats: r,\n timestamp: Date.now(),\n timings: {\n normalization: 0,\n discovery: e,\n filtering: 0,\n total: e\n }\n });\n }\n k('discovering', 0);\n let G = performance.now(), N = await discoverFiles(j, E, z);\n if (!N.ok) return logAndReturnError('Scan', N.error), N;\n let P = N.data, K = performance.now() - G;\n k('filtering', P.length);\n let L = performance.now(), M = await u({\n files: P\n }, j);\n if (!M.ok) return logAndReturnError('Filter', M.error), M;\n let R = M.data.files, I = performance.now() - L;\n b = R.length, x = M.data.filtered, r('scanner', `After filters: ${b} files (${x} filtered out)`), k('calculating-stats', R.length);\n let J = await m(R, A, !1);\n await saveToCache(j, E, R, {\n totalFiles: (F = J).totalFiles,\n byExtension: Array.from(F.byExtension.entries()),\n totalSize: F.totalSize,\n scanTime: F.scanTime,\n cacheHit: F.cacheHit\n }, z, t);\n let O = o('file-scan');\n return v = J, D = O, r('scanner', `Scan complete: ${v.totalFiles} files in ${D.toFixed(1)}ms`), S = Array.from(v.byExtension.entries()).sort(([, e], [, t])=>t - e).slice(0, 5).map(([e, t])=>`${e}:${t}`).join(', '), r('scanner', `Breakdown: ${S}`), 0 === v.totalFiles && r('scanner', 'No files found matching patterns. Check your include/exclude configuration.'), k('complete', R.length), a({\n files: R,\n stats: J,\n timestamp: Date.now(),\n timings: {\n normalization: T,\n discovery: K,\n filtering: I,\n total: O\n }\n });\n};\nasync function discoverFiles(e, t, n) {\n if (n) {\n r('scanner', 'Git repository detected. Using fast Git discovery...');\n let n = await p(e.rootDir);\n if (0 === n.length) {\n r('scanner', 'Git discovery returned 0 files — this may indicate a git command failure. Falling back to glob-based scanning.');\n let n = await f(t, e.rootDir, {\n followSymlinks: e.followSymlinks,\n dot: e.dot\n });\n return n.ok && r('scanner', `Glob fallback found ${n.data.files.length} files`), n.ok ? a(n.data.files) : n;\n }\n let i = d(n, t.include, t.ignore, e.rootDir);\n return r('scanner', `Git discovery found ${i.length} files (after glob filtering)`), a(i);\n }\n r('scanner', 'Not a Git repository. Falling back to standard globbing...');\n let i = await f(t, e.rootDir, {\n followSymlinks: e.followSymlinks,\n dot: e.dot\n });\n return i.ok && r('scanner', `Glob found ${i.data.files.length} files`), i.ok ? a(i.data.files) : i;\n}\nasync function getCacheKey(e, t, n, r) {\n if (!r.cache) return null;\n let i = n ? await h(e.rootDir) : await y(e.rootDir);\n return i ? r.cache.computeHash([\n e.rootDir,\n JSON.stringify(t),\n i,\n 'v1'\n ].join('|')) : null;\n}\nasync function tryLoadFromCache(e, t, n, i) {\n let o = await getCacheKey(e, t, n, i);\n if (!o || !i.cache) return null;\n let a = await i.cache.files.get(o);\n return a ? (r('scanner', `Cache HIT. Loaded ${a.files.length} files.`), a) : null;\n}\nasync function saveToCache(e, t, n, i, o, a) {\n if (!a.cache || 0 === n.length) return;\n let l = await getCacheKey(e, t, o, a);\n l && (await a.cache.files.set(l, n, i), r('scanner', 'File list cached.'));\n}\nfunction logAndReturnError(e, t) {\n let n = o('file-scan');\n r('scanner', `${e} failed after ${n.toFixed(1)}ms: ${t.message}`);\n}\nasync function loadTsConfigPatterns(e, i) {\n try {\n let r = (await t(e, 'utf-8')).replace(/\\/\\/[^\\n]*/g, '').replace(/\\/\\*[\\s\\S]*?\\*\\//g, ''), o = JSON.parse(r), a = n.dirname(n.resolve(e)), l = (e)=>{\n let t = n.resolve(a, e);\n return n.relative(i, t).replace(/\\\\/g, '/');\n }, s = [], c = [];\n return Array.isArray(o.include) && s.push(...o.include.map(l)), Array.isArray(o.files) && s.push(...o.files.map(l)), Array.isArray(o.exclude) && c.push(...o.exclude.map(l)), {\n include: s,\n exclude: c\n };\n } catch (t) {\n return r('scanner', `Failed to load tsconfig patterns from ${e}: ${t instanceof Error ? t.message : String(t)}`), null;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngcompass/scanner",
3
- "version": "0.1.1-beta",
3
+ "version": "0.1.3-beta",
4
4
  "description": "File system scanning (glob, git, gitignore) for ngcompass",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.cjs",
@@ -24,8 +24,8 @@
24
24
  "ignore": "^7.0.3",
25
25
  "minimatch": "^10.2.4",
26
26
  "tinyglobby": "^0.2.15",
27
- "@ngcompass/cache": "0.1.1-beta",
28
- "@ngcompass/common": "0.1.1-beta"
27
+ "@ngcompass/cache": "0.1.3-beta",
28
+ "@ngcompass/common": "0.1.3-beta"
29
29
  },
30
30
  "peerDependencies": {
31
31
  "typescript": "5.9.3"