{"version":3,"file":"findEntryPointFile.cjs","names":["languageIdToDefinition","fs"],"sources":["../../src/helpers/findEntryPointFile.ts"],"sourcesContent":["import fs from 'node:fs';\n\nimport { languageIdToDefinition } from '../types/language.js';\n\n// The last is most prioritized.\nconst PRIOTIZED_FILE_NAMES = ['index', 'main'] as const;\n\nconst IGNORED_FILE_EXTENSIONS = ['.DS_Store', '.class'] as const;\n\nexport async function findEntryPointFile(\n  cwd: string,\n  language?: string | readonly string[]\n): Promise<string | undefined> {\n  const fileExtensions =\n    language && [language].flat().flatMap((language) => languageIdToDefinition[language]?.fileExtensions ?? []);\n\n  let mainFileName: string | undefined;\n  let mainFilePrioryty = -1;\n\n  for (const dirent of await fs.promises.readdir(cwd, { withFileTypes: true })) {\n    if (!dirent.isFile()) continue;\n    if (IGNORED_FILE_EXTENSIONS.some((ext) => dirent.name.endsWith(ext))) continue;\n    if (fileExtensions && !fileExtensions.some((ext) => dirent.name.endsWith(ext))) continue;\n\n    const direntPrioryty = PRIOTIZED_FILE_NAMES.findLastIndex((name) =>\n      dirent.name.toLowerCase().startsWith(`${name}.`)\n    );\n\n    if (\n      !mainFileName ||\n      (direntPrioryty === mainFilePrioryty\n        ? dirent.name.localeCompare(mainFileName) < 0\n        : direntPrioryty > mainFilePrioryty)\n    ) {\n      mainFileName = dirent.name;\n      mainFilePrioryty = direntPrioryty;\n    }\n  }\n\n  return mainFileName;\n}\n"],"mappings":"+IAKA,MAAM,EAAuB,CAAC,QAAS,MAAM,EAEvC,EAA0B,CAAC,YAAa,QAAQ,EAEtD,eAAsB,EACpB,EACA,EAC6B,CAC7B,IAAM,EACJ,GAAY,CAAC,CAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,QAAS,GAAaA,EAAAA,uBAAuB,EAAS,EAAE,gBAAkB,CAAC,CAAC,EAExG,EACA,EAAmB,GAEvB,IAAK,IAAM,KAAU,MAAMC,EAAAA,QAAG,SAAS,QAAQ,EAAK,CAAE,cAAe,EAAK,CAAC,EAAG,CAG5E,GAFI,CAAC,EAAO,OAAO,GACf,EAAwB,KAAM,GAAQ,EAAO,KAAK,SAAS,CAAG,CAAC,GAC/D,GAAkB,CAAC,EAAe,KAAM,GAAQ,EAAO,KAAK,SAAS,CAAG,CAAC,EAAG,SAEhF,IAAM,EAAiB,EAAqB,cAAe,GACzD,EAAO,KAAK,YAAY,CAAC,CAAC,WAAW,GAAG,EAAK,EAAE,CACjD,GAGE,CAAC,IACA,IAAmB,EAChB,EAAO,KAAK,cAAc,CAAY,EAAI,EAC1C,EAAiB,MAErB,EAAe,EAAO,KACtB,EAAmB,EAEvB,CAEA,OAAO,CACT"}