{"version":3,"file":"files.cjs","names":["isHiddenPath","process","globToRegExp"],"sources":["../../src/node/files.ts"],"sourcesContent":["import { readdirSync, statSync } from 'node:fs'\nimport { join, resolve } from 'node:path'\nimport process from 'node:process'\nimport { isHiddenPath } from './fs'\nimport { globToRegExp } from './glob'\n\nexport function getStat(path: string): any {\n  try {\n    return statSync(path)\n  }\n  catch (err) { }\n}\n\nexport function getFingerprint(path: string) {\n  const { mtimeMs, size } = getStat(path) ?? {}\n  return `${path}|${mtimeMs}|${size}`\n}\n\nexport function walkSync(rootFolder: string, subFolder = '', ignoreHidden = true) {\n  let resultPaths: string[] = []\n  const paths = readdirSync(resolve(rootFolder, subFolder))\n  if (paths != null && paths.length > 0) {\n    for (let file of paths) {\n      file = join(subFolder, file)\n      if (ignoreHidden && isHiddenPath(file))\n        continue\n      const realFile = join(rootFolder, file)\n      const stat = getStat(realFile)\n      if (stat && stat.isDirectory())\n        resultPaths = [...resultPaths, ...walkSync(rootFolder, file) || []]\n      else\n        resultPaths.push(file)\n    }\n  }\n  return resultPaths\n}\n\nexport function files(opt: {\n  basePath?: string\n  pattern?: string | RegExp\n  filter?: (name: string) => boolean\n  ignoreHidden?: boolean\n} = {}) {\n  let {\n    pattern,\n    filter,\n    basePath = process.cwd(),\n    ignoreHidden = false,\n  } = opt\n\n  let paths = walkSync(basePath, '', ignoreHidden)\n\n  paths = paths.filter(\n    path =>\n      !(ignoreHidden && (path.startsWith('.') || path.includes('/.'))),\n  )\n\n  if (pattern) {\n    if (typeof pattern === 'string')\n      pattern = globToRegExp(pattern)\n    if (pattern instanceof RegExp) {\n      const rx = pattern\n      rx.lastIndex = 0\n      paths = paths.filter(path => rx.test(path))\n    }\n  }\n\n  if (filter)\n    paths = paths.filter(filter)\n\n  return paths\n}\n"],"mappings":";;;;;;;;;;AAMA,SAAgB,QAAQ,MAAmB;AACzC,KAAI;AACF,+BAAgB,KAAK;UAEhB,KAAK;;AAGd,SAAgB,eAAe,MAAc;CAC3C,MAAM,EAAE,SAAS,SAAS,QAAQ,KAAK,IAAI,EAAE;AAC7C,QAAO,GAAG,KAAK,GAAG,QAAQ,GAAG;;AAG/B,SAAgB,SAAS,YAAoB,YAAY,IAAI,eAAe,MAAM;CAChF,IAAI,cAAwB,EAAE;CAC9B,MAAM,wDAA4B,YAAY,UAAU,CAAC;AACzD,KAAI,SAAS,QAAQ,MAAM,SAAS,EAClC,MAAK,IAAI,QAAQ,OAAO;AACtB,6BAAY,WAAW,KAAK;AAC5B,MAAI,gBAAgBA,6BAAa,KAAK,CACpC;EAEF,MAAM,OAAO,4BADS,YAAY,KAAK,CACT;AAC9B,MAAI,QAAQ,KAAK,aAAa,CAC5B,eAAc,CAAC,GAAG,aAAa,GAAG,SAAS,YAAY,KAAK,IAAI,EAAE,CAAC;MAEnE,aAAY,KAAK,KAAK;;AAG5B,QAAO;;AAGT,SAAgB,MAAM,MAKlB,EAAE,EAAE;CACN,IAAI,EACF,SACA,QACA,WAAWC,qBAAQ,KAAK,EACxB,eAAe,UACb;CAEJ,IAAI,QAAQ,SAAS,UAAU,IAAI,aAAa;AAEhD,SAAQ,MAAM,QACZ,SACE,EAAE,iBAAiB,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,KAAK,GACjE;AAED,KAAI,SAAS;AACX,MAAI,OAAO,YAAY,SACrB,WAAUC,+BAAa,QAAQ;AACjC,MAAI,mBAAmB,QAAQ;GAC7B,MAAM,KAAK;AACX,MAAG,YAAY;AACf,WAAQ,MAAM,QAAO,SAAQ,GAAG,KAAK,KAAK,CAAC;;;AAI/C,KAAI,OACF,SAAQ,MAAM,OAAO,OAAO;AAE9B,QAAO"}