{"version":3,"file":"getFilesWithFS.mjs","sources":[""],"sourcesContent":["import path from \"path\";\nimport { getAsyncImport } from \"./getAsyncImport.ts\";\n\n/**\n * Возвращает массив всех файлов из папки при помощи модуля `fs`\n * @param dir{String} путь к папке\n * @param getFilterFn{Function=} функция фильтрации по файлам\n * @returns {Promise<string[]>}\n * @example\n * import { getFilesWithFS } from \"@delement/ui/utils/node\";\n *\n * const tsFiles = await getFilesWithFS(\"./src\", (file) => file.endsWith(\".ts\"));\n */\nconst getFilesWithFS = async (\n  dir: string = \"\",\n  getFilterFn: ((file: string) => boolean) = (_file: string) => true\n): Promise<string[]> => {\n  if (!dir) {\n    throw new Error(\"[getFilesWithFS] Вirectory not found\");\n  }\n\n  const fs = await getAsyncImport(\"fs/promises\") as typeof import(\"fs/promises\");\n\n  async function* getFileFromDir(currentDir: string): AsyncGenerator<string> {\n    const dirs = await fs.readdir(currentDir, { withFileTypes: true });\n    for (const dirent of dirs) {\n      const resolvedPath = path.resolve(currentDir, dirent.name);\n      if (dirent.isDirectory()) {\n        yield* getFileFromDir(resolvedPath);\n      } else {\n        yield resolvedPath;\n      }\n    }\n  }\n\n  const files: string[] = [];\n  for await (const file of getFileFromDir(dir)) {\n    if (getFilterFn(file)) {\n      files.push(file);\n    }\n  }\n\n  return files;\n};\n\nexport { getFilesWithFS };\n"],"names":["getFilesWithFS","async","dir","getFilterFn","_file","Error","fs","getAsyncImport","getFileFromDir","currentDir","dirs","readdir","withFileTypes","dirent","resolvedPath","path","resolve","name","isDirectory","files","file","push"],"mappings":";;;;;;;;;;GAaA,MAAMA,eAAiBC,MACrBC,IAAc,GACdC,YAA4CC,OAAkB,QAE9D,IAAKF,IACH,MAAM,IAAIG,MAAM,wCAGlB,MAAMC,SAAWC,eAAe,eAEhCN,eAAgBO,eAAeC,YAC7B,MAAMC,WAAaJ,GAAGK,QAAQF,WAAY,CAAEG,cAAe,OAC3D,IAAK,MAAMC,UAAUH,KAAM,CACzB,MAAMI,aAAeC,KAAKC,QAAQP,WAAYI,OAAOI,MACrD,GAAIJ,OAAOK,oBACFV,eAAeM,yBAEhBA,YAEV,CACF,CAEA,MAAMK,MAAkB,GACxB,UAAW,MAAMC,QAAQZ,eAAeN,KACtC,GAAIC,YAAYiB,MACdD,MAAME,KAAKD,MAIf,OAAOD"}