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