{"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"}