diff --git a/.eslintrc.js b/.eslintrc.js index d3c900637a..d379a078aa 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -119,6 +119,7 @@ module.exports = { 'global-require': WARNING, 'prefer-destructuring': WARNING, yoda: WARNING, + 'no-await-in-loop': OFF, 'no-control-regex': WARNING, 'no-empty': [WARNING, {allowEmptyCatch: true}], 'no-prototype-builtins': WARNING, diff --git a/packages/docusaurus-plugin-content-blog/src/authors.ts b/packages/docusaurus-plugin-content-blog/src/authors.ts index 3bca2ebef3..ab77371e3d 100644 --- a/packages/docusaurus-plugin-content-blog/src/authors.ts +++ b/packages/docusaurus-plugin-content-blog/src/authors.ts @@ -43,12 +43,8 @@ export async function readAuthorsMapFile( ): Promise { if (await fs.pathExists(filePath)) { const contentString = await fs.readFile(filePath, {encoding: 'utf8'}); - const parse = - filePath.endsWith('.yml') || filePath.endsWith('.yaml') - ? Yaml.load - : JSON.parse; try { - const unsafeContent = parse(contentString); + const unsafeContent = Yaml.load(contentString); return validateAuthorsMapFile(unsafeContent); } catch (e) { // TODO replace later by error cause: see https://v8.dev/features/error-cause diff --git a/packages/docusaurus-plugin-content-docs/src/sidebars/generator.ts b/packages/docusaurus-plugin-content-docs/src/sidebars/generator.ts index 49e551e9c6..d5dde0d7f1 100644 --- a/packages/docusaurus-plugin-content-docs/src/sidebars/generator.ts +++ b/packages/docusaurus-plugin-content-docs/src/sidebars/generator.ts @@ -65,37 +65,31 @@ const CategoryMetadatasFileSchema = Joi.object({ async function readCategoryMetadatasFile( categoryDirPath: string, ): Promise { - async function tryReadFile( - fileNameWithExtension: string, - parse: (content: string) => unknown, - ): Promise { + async function tryReadFile(filePath: string): Promise { + const contentString = await fs.readFile(filePath, {encoding: 'utf8'}); + const unsafeContent = Yaml.load(contentString); + try { + return Joi.attempt(unsafeContent, CategoryMetadatasFileSchema); + } catch (e) { + console.error( + chalk.red( + `The docs sidebar category metadata file looks invalid!\nPath: ${filePath}`, + ), + ); + throw e; + } + } + // eslint-disable-next-line no-restricted-syntax + for (const ext of ['.json', '.yml', '.yaml']) { // Simpler to use only posix paths for mocking file metadatas in tests const filePath = posixPath( - path.join(categoryDirPath, fileNameWithExtension), + path.join(categoryDirPath, `${CategoryMetadataFilenameBase}${ext}`), ); if (await fs.pathExists(filePath)) { - const contentString = await fs.readFile(filePath, {encoding: 'utf8'}); - const unsafeContent = parse(contentString); - try { - return Joi.attempt(unsafeContent, CategoryMetadatasFileSchema); - } catch (e) { - console.error( - chalk.red( - `The docs sidebar category metadata file looks invalid!\nPath: ${filePath}`, - ), - ); - throw e; - } + return tryReadFile(filePath); } - return null; } - - return ( - (await tryReadFile(`${CategoryMetadataFilenameBase}.json`, JSON.parse)) ?? - (await tryReadFile(`${CategoryMetadataFilenameBase}.yml`, Yaml.load)) ?? - // eslint-disable-next-line no-return-await - (await tryReadFile(`${CategoryMetadataFilenameBase}.yaml`, Yaml.load)) - ); + return null; } // Comment for this feature: https://github.com/facebook/docusaurus/issues/3464#issuecomment-818670449 diff --git a/packages/docusaurus-theme-classic/update-code-translations.js b/packages/docusaurus-theme-classic/update-code-translations.js index b5857991dc..18e570c06d 100644 --- a/packages/docusaurus-theme-classic/update-code-translations.js +++ b/packages/docusaurus-theme-classic/update-code-translations.js @@ -216,7 +216,6 @@ async function updateCodeTranslations() { // eslint-disable-next-line no-restricted-syntax for (const localeFile of localesFiles) { logSection(`Will update ${path.basename(localeFile)}`); - // eslint-disable-next-line no-await-in-loop await updateLocaleCodeTranslations(localeFile, baseFileMessages); } } diff --git a/packages/docusaurus-utils/src/codeTranslationsUtils.ts b/packages/docusaurus-utils/src/codeTranslationsUtils.ts index b908d380df..a627a1559a 100644 --- a/packages/docusaurus-utils/src/codeTranslationsUtils.ts +++ b/packages/docusaurus-utils/src/codeTranslationsUtils.ts @@ -44,9 +44,7 @@ export async function readDefaultCodeTranslationMessages({ for (const fileName of localesToTry) { const filePath = path.resolve(dirPath, `${fileName}.json`); - // eslint-disable-next-line no-await-in-loop if (await fs.pathExists(filePath)) { - // eslint-disable-next-line no-await-in-loop const fileContent = await fs.readFile(filePath, 'utf8'); return JSON.parse(fileContent); } diff --git a/packages/docusaurus-utils/src/index.ts b/packages/docusaurus-utils/src/index.ts index e21f77c131..e7b8fdf9ab 100644 --- a/packages/docusaurus-utils/src/index.ts +++ b/packages/docusaurus-utils/src/index.ts @@ -313,7 +313,6 @@ export async function mapAsyncSequencial( const results: R[] = []; // eslint-disable-next-line no-restricted-syntax for (const t of array) { - // eslint-disable-next-line no-await-in-loop const result = await action(t); results.push(result); } @@ -326,7 +325,6 @@ export async function findAsyncSequential( ): Promise { // eslint-disable-next-line no-restricted-syntax for (const t of array) { - // eslint-disable-next-line no-await-in-loop if (await predicate(t)) { return t; }