{"version":3,"file":"file.cjs","sources":["../src/file.ts"],"sourcesContent":["import * as fs from 'fs';\nimport { extname, join, resolve } from 'path';\nimport logger from './logger.js';\n\n/**\n * Gets all of the files in the given `path` that match the extensions listed in extensions.\n *\n * @param path The path to look for all the files in.\n * @param extensions The file extensions to accept. If `undefined`, accepts all files.\n * @returns\n */\nexport function getAllFiles(path: string, extensions?: Set<string>): string[] {\n  if (includesExtension(path)) return [path];\n  return getNestedFiles(path, extensions);\n}\n\nfunction getNestedFiles(path: string, extensions?: Set<string>): string[] {\n  const filesAndDirs = fs.readdirSync(path);\n  const files = filesAndDirs\n    .filter((file) => extname(file) !== '')\n    .filter((file) => !extensions || extensions.has(extname(file)))\n    .map((file) => join(path, file));\n  const dirs = filesAndDirs.filter((file) => extname(file) === '');\n  for (const dir of dirs) {\n    if (dir) {\n      files.push(...getNestedFiles(join(path, dir), extensions));\n    }\n  }\n\n  return files;\n}\n\nfunction includesExtension(path: string) {\n  return extname(path) !== '';\n}\n\n/**\n * Gets the package.json object.\n *\n * @returns The package json relative to the directory of the running script.\n */\nexport function getPackageJson() {\n  const contents = fs.readFileSync(resolve('./package.json'));\n  return JSON.parse(contents.toString('utf-8'));\n}\n\n/**\n * Loads a modules default export.\n *\n * @param path The path of the module.\n * @param warn Whether to display warnings.\n * @returns The default export of the module.\n */\nexport async function loadModule<T>(\n  path: string,\n  warn = false,\n): Promise<T | undefined> {\n  const file = resolve(path);\n  try {\n    return (await import(`file://${file}`)).default;\n  } catch (e) {\n    if (warn) {\n      logger.error(e);\n    }\n  }\n  return undefined;\n}\n\n/**\n * Checks whether a `path` is a directory.\n *\n * @param path The path to check.\n * @returns true if the path is a directory.\n */\nexport function isDir(path: string) {\n  return !includesExtension(path);\n}\n\n/**\n * Recursively cleans out a directory.\n *\n * @param path Path of the directory to recursively delete all of the files in.\n */\nexport function cleanDir(path: string) {\n  if (fs.existsSync(path)) fs.rmSync(path, { recursive: true });\n}\n\nconst COMMON_CONFIG_EXTENSIONS = /\\.(config\\.js|json|.*rc|jsonrc)$/;\n\n/**\n * Searches for and loads a config.\n *\n * @param configType The type of config to search for\n * @param warn Whether to warn on errors.\n * @param extensionRegex List of valid extensions to search for.\n * @returns The default export of the config module.\n */\nexport async function readConfig<T>(\n  configType: 'es-exec',\n  warn = false,\n  extensionRegex = COMMON_CONFIG_EXTENSIONS,\n): Promise<T | undefined> {\n  const file = fs\n    .readdirSync(resolve())\n    .filter((file) => extensionRegex.test(file))\n    .find((file) => file.includes(configType));\n  return await loadModule<T>(file ?? '', warn);\n}\n"],"names":["path","fs","extname","join","resolve","logger","file"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWgB,SAAA,WAAA,CAAY,MAAc,UAAoC,EAAA;AAC5E,EAAA,IAAI,kBAAkB,IAAI,CAAA;AAAG,IAAA,OAAO,CAAC,IAAI,CAAA,CAAA;AACzC,EAAO,OAAA,cAAA,CAAe,MAAM,UAAU,CAAA,CAAA;AACxC,CAAA;AAEA,SAAS,cAAA,CAAeA,QAAc,UAAoC,EAAA;AACxE,EAAM,MAAA,YAAA,GAAeC,aAAG,CAAA,WAAA,CAAYD,MAAI,CAAA,CAAA;AACxC,EAAA,MAAM,KAAQ,GAAA,YAAA,CACX,MAAO,CAAA,CAAC,IAAS,KAAAE,YAAA,CAAQ,IAAI,CAAA,KAAM,EAAE,CAAA,CACrC,MAAO,CAAA,CAAC,IAAS,KAAA,CAAC,UAAc,IAAA,UAAA,CAAW,GAAI,CAAAA,YAAA,CAAQ,IAAI,CAAC,CAAC,CAAA,CAC7D,GAAI,CAAA,CAAC,IAAS,KAAAC,SAAA,CAAKH,MAAM,EAAA,IAAI,CAAC,CAAA,CAAA;AACjC,EAAM,MAAA,IAAA,GAAO,aAAa,MAAO,CAAA,CAAC,SAASE,YAAQ,CAAA,IAAI,MAAM,EAAE,CAAA,CAAA;AAC/D,EAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACtB,IAAA,IAAI,GAAK,EAAA;AACP,MAAM,KAAA,CAAA,IAAA,CAAK,GAAG,cAAe,CAAAC,SAAA,CAAKH,QAAM,GAAG,CAAA,EAAG,UAAU,CAAC,CAAA,CAAA;AAAA,KAC3D;AAAA,GACF;AAEA,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;AAEA,SAAS,kBAAkBA,MAAc,EAAA;AACvC,EAAO,OAAAE,YAAA,CAAQF,MAAI,CAAM,KAAA,EAAA,CAAA;AAC3B,CAAA;AAOO,SAAS,cAAiB,GAAA;AAC/B,EAAA,MAAM,QAAW,GAAAC,aAAA,CAAG,YAAa,CAAAG,YAAA,CAAQ,gBAAgB,CAAC,CAAA,CAAA;AAC1D,EAAA,OAAO,IAAK,CAAA,KAAA,CAAM,QAAS,CAAA,QAAA,CAAS,OAAO,CAAC,CAAA,CAAA;AAC9C,CAAA;AASsB,eAAA,UAAA,CACpBJ,MACA,EAAA,IAAA,GAAO,KACiB,EAAA;AACxB,EAAM,MAAA,IAAA,GAAOI,aAAQJ,MAAI,CAAA,CAAA;AACzB,EAAI,IAAA;AACF,IAAQ,OAAA,CAAA,MAAM,sHAAO,CAAA,OAAA,EAAU,IAAS,CAAA,CAAA,CAAA,EAAA,OAAA,CAAA;AAAA,WACjC,CAAP,EAAA;AACA,IAAA,IAAI,IAAM,EAAA;AACR,MAAAK,iBAAA,CAAO,MAAM,CAAC,CAAA,CAAA;AAAA,KAChB;AAAA,GACF;AACA,EAAO,OAAA,KAAA,CAAA,CAAA;AACT,CAAA;AAQO,SAAS,MAAM,IAAc,EAAA;AAClC,EAAO,OAAA,CAAC,kBAAkB,IAAI,CAAA,CAAA;AAChC,CAAA;AAOO,SAAS,SAAS,IAAc,EAAA;AACrC,EAAI,IAAAJ,aAAA,CAAG,WAAW,IAAI,CAAA;AAAG,IAAAA,aAAA,CAAG,MAAO,CAAA,IAAA,EAAM,EAAE,SAAA,EAAW,MAAM,CAAA,CAAA;AAC9D,CAAA;AAEA,MAAM,wBAA2B,GAAA,kCAAA,CAAA;AAUjC,eAAsB,UACpB,CAAA,UAAA,EACA,IAAO,GAAA,KAAA,EACP,iBAAiB,wBACO,EAAA;AACxB,EAAM,MAAA,IAAA,GAAOA,cACV,WAAY,CAAAG,YAAA,EAAS,CACrB,CAAA,MAAA,CAAO,CAACE,KAAS,KAAA,cAAA,CAAe,KAAKA,KAAI,CAAC,EAC1C,IAAK,CAAA,CAACA,UAASA,KAAK,CAAA,QAAA,CAAS,UAAU,CAAC,CAAA,CAAA;AAC3C,EAAA,OAAO,MAAM,UAAA,CAAc,IAAQ,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,EAAI,IAAI,CAAA,CAAA;AAC7C;;;;;;;;;"}