UNPKG

@neodx/vfs

Version:

Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover

1 lines 3.03 kB
{"version":3,"file":"glob.cjs","sources":["../../../src/plugins/glob.ts"],"sourcesContent":["import { walkGlob, type WalkGlobCommonParams } from '@neodx/glob';\nimport { isTypeOfString } from '@neodx/std';\nimport type { BaseVfs } from '../core/types.ts';\nimport { createVfsPlugin } from '../create-vfs-plugin.ts';\nimport { createScanVfsCache, scanVfs, type ScanVfsParams } from './scan.ts';\n\nexport interface GlobPluginApi {\n glob(params: GlobVfsParams): Promise<string[]>;\n glob(glob: string | string[], params?: Omit<GlobVfsParams, 'glob'>): Promise<string[]>;\n}\n\nexport interface GlobVfsParams extends Pick<ScanVfsParams, 'maxDepth'>, WalkGlobCommonParams {\n glob: string | string[];\n}\n\nexport function glob() {\n return createVfsPlugin<GlobPluginApi>('glob', vfs => {\n async function globImpl(\n globOrParams: string | string[] | GlobVfsParams,\n params?: GlobVfsParams\n ) {\n return await globVfs(\n vfs,\n Array.isArray(globOrParams) || isTypeOfString(globOrParams)\n ? { ...params, glob: globOrParams }\n : globOrParams\n );\n }\n\n vfs.glob = globImpl;\n return vfs;\n });\n}\n\nexport async function globVfs(\n vfs: BaseVfs,\n { glob, ignore, timeout, signal, log = vfs.log.child('glob'), maxDepth }: GlobVfsParams\n) {\n const cache = createScanVfsCache();\n\n return await walkGlob(glob, {\n timeout,\n ignore,\n signal,\n log,\n async reader({ path, isIgnored, isMatched, signal }) {\n if (await vfs.isFile(path)) return isMatched(path) ? [''] : [];\n return await scanVfs(vfs, {\n path,\n cache,\n signal,\n maxDepth,\n filter: ({ relativePath }) => isMatched(relativePath),\n barrier: ({ relativePath }) => isIgnored(relativePath)\n });\n }\n });\n}\n"],"names":["globVfs","vfs","glob","ignore","timeout","signal","log","child","maxDepth","cache","createScanVfsCache","walkGlob","reader","path","isIgnored","isMatched","isFile","scanVfs","filter","relativePath","barrier","createVfsPlugin","globImpl","globOrParams","params","Array","isArray","isTypeOfString"],"mappings":"sIAkCO,eAAeA,EACpBC,CAAY,CACZ,CAAEC,KAAAA,CAAI,CAAEC,OAAAA,CAAM,CAAEC,QAAAA,CAAO,CAAEC,OAAAA,CAAM,CAAEC,IAAAA,EAAML,EAAIK,GAAG,CAACC,KAAK,CAAC,OAAO,CAAEC,SAAAA,CAAQ,CAAiB,EAEvF,IAAMC,EAAQC,EAAAA,kBAAAA,GAEd,OAAO,MAAMC,WAAST,EAAM,CAC1BE,QAAAA,EACAD,OAAAA,EACAE,OAAAA,EACAC,IAAAA,EACMM,OAAN,MAAa,CAAEC,KAAAA,CAAI,CAAEC,UAAAA,CAAS,CAAEC,UAAAA,CAAS,CAAEV,OAAAA,CAAM,CAAE,GACjD,AAAI,MAAMJ,EAAIe,MAAM,CAACH,GAAcE,EAAUF,GAAQ,CAAC,GAAG,CAAG,EAAE,CACvD,MAAMI,UAAQhB,EAAK,CACxBY,KAAAA,EACAJ,MAAAA,EACAJ,OAAAA,EACAG,SAAAA,EACAU,OAAQ,CAAC,CAAEC,aAAAA,CAAY,CAAE,GAAKJ,EAAUI,GACxCC,QAAS,CAAC,CAAED,aAAAA,CAAY,CAAE,GAAKL,EAAUK,EAC3C,EAEJ,EACF,cA1CO,WACL,OAAOE,EAAAA,eAAAA,CAA+B,OAAQpB,AAAAA,IAC5C,eAAeqB,EACbC,CAA+C,CAC/CC,CAAsB,EAEtB,OAAO,MAAMxB,EACXC,EACAwB,MAAMC,OAAO,CAACH,IAAiBI,iBAAeJ,GAC1C,CAAE,GAAGC,CAAM,CAAEtB,KAAMqB,CACnBA,EAAAA,EAER,CAGA,OADAtB,EAAIC,IAAI,CAAGoB,EACJrB,CACT,EACF"}