@ngcompass/scanner 0.1.2-beta → 0.1.4-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 +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';var promises=require('fs/promises'),
|
|
2
|
-
`).filter(a=>a.trim().length>0).map(a=>
|
|
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=
|
|
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
|
package/dist/index.cjs.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.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
|
|
2
|
-
`).filter(a=>a.trim().length>0).map(a=>
|
|
3
|
-
export{
|
|
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.
|
|
3
|
+
"version": "0.1.4-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.
|
|
28
|
-
"@ngcompass/common": "0.1.
|
|
27
|
+
"@ngcompass/cache": "0.1.4-beta",
|
|
28
|
+
"@ngcompass/common": "0.1.4-beta"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"typescript": "5.9.3"
|