@neodx/vfs
Version:
Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover
1 lines • 3 kB
Source Map (JSON)
{"version":3,"file":"glob.mjs","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":["glob","createVfsPlugin","vfs","globImpl","globOrParams","params","globVfs","Array","isArray","isTypeOfString","ignore","timeout","signal","log","child","maxDepth","cache","createScanVfsCache","walkGlob","reader","path","isIgnored","isMatched","isFile","scanVfs","filter","relativePath","barrier"],"mappings":"gNAeO,SAASA,IACd,OAAOC,EAA+B,OAAQC,AAAAA,IAC5C,eAAeC,EACbC,CAA+C,CAC/CC,CAAsB,EAEtB,OAAO,MAAMC,EACXJ,EACAK,MAAMC,OAAO,CAACJ,IAAiBK,EAAeL,GAC1C,CAAE,GAAGC,CAAM,CAAEL,KAAMI,CACnBA,EAAAA,EAER,CAGA,OADAF,EAAIF,IAAI,CAAGG,EACJD,CACT,EACF,CAEO,eAAeI,EACpBJ,CAAY,CACZ,CAAEF,KAAAA,CAAI,CAAEU,OAAAA,CAAM,CAAEC,QAAAA,CAAO,CAAEC,OAAAA,CAAM,CAAEC,IAAAA,EAAMX,EAAIW,GAAG,CAACC,KAAK,CAAC,OAAO,CAAEC,SAAAA,CAAQ,CAAiB,EAEvF,IAAMC,EAAQC,IAEd,OAAO,MAAMC,EAASlB,EAAM,CAC1BW,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,MAAMV,EAAIqB,MAAM,CAACH,GAAcE,EAAUF,GAAQ,CAAC,GAAG,CAAG,EAAE,CACvD,MAAMI,EAAQtB,EAAK,CACxBkB,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"}