diff --git a/.eslintrc.js b/.eslintrc.js index b02fe791c370a6..689cd7fb23f01b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -68,7 +68,7 @@ module.exports = { files: ['**/*.md/*.cjs', '**/*.md/*.js'], parserOptions: { sourceType: 'script', - ecmaFeatures: { impliedStrict: true } + ecmaFeatures: { impliedStrict: true }, }, rules: { strict: 'off' }, }, @@ -103,11 +103,11 @@ module.exports = { }, { name: 'Buffer', - message: 'Import Buffer instead of using the global' + message: 'Import Buffer instead of using the global', }, { name: 'process', - message: 'Import process instead of using the global' + message: 'Import process instead of using the global', }, ] }, }, @@ -134,13 +134,7 @@ module.exports = { ignorePattern: '.*', }, }], - 'comma-dangle': ['error', { - arrays: 'always-multiline', - exports: 'only-multiline', - functions: 'only-multiline', - imports: 'only-multiline', - objects: 'only-multiline', - }], + 'comma-dangle': ['error', 'always-multiline'], 'comma-spacing': 'error', 'comma-style': 'error', 'computed-property-spacing': 'error', diff --git a/benchmark/.eslintrc.yaml b/benchmark/.eslintrc.yaml index aa014eec4e3627..821b2381d3e215 100644 --- a/benchmark/.eslintrc.yaml +++ b/benchmark/.eslintrc.yaml @@ -5,4 +5,11 @@ env: es6: true rules: + comma-dangle: [error, { + arrays: always-multiline, + exports: only-multiline, + functions: only-multiline, + imports: only-multiline, + objects: only-multiline, + }] prefer-arrow-callback: error diff --git a/doc/.eslintrc.yaml b/doc/.eslintrc.yaml index 5703dc6f8584c5..e8d24adb6e00aa 100644 --- a/doc/.eslintrc.yaml +++ b/doc/.eslintrc.yaml @@ -15,4 +15,3 @@ rules: # Stylistic Issues no-multiple-empty-lines: [error, {max: 1, maxEOF: 0, maxBOF: 0}] - comma-dangle: [error, always-multiline] diff --git a/lib/.eslintrc.yaml b/lib/.eslintrc.yaml index 2cfbf0894f2a3a..b9ff435f10bb1e 100644 --- a/lib/.eslintrc.yaml +++ b/lib/.eslintrc.yaml @@ -2,6 +2,13 @@ env: es6: true rules: + comma-dangle: [error, { + arrays: always-multiline, + exports: only-multiline, + functions: only-multiline, + imports: only-multiline, + objects: only-multiline, + }] prefer-object-spread: error no-buffer-constructor: error no-mixed-operators: diff --git a/tools/build-addons.mjs b/tools/build-addons.mjs index 9f757bd798bcf0..b0ec02d8e90cba 100755 --- a/tools/build-addons.mjs +++ b/tools/build-addons.mjs @@ -31,7 +31,7 @@ async function buildAddon(dir) { await execFile(process.execPath, [nodeGyp, 'rebuild', `--directory=${dir}`], { stdio: 'inherit', - env: { ...process.env, MAKEFLAGS: '-j1' } + env: { ...process.env, MAKEFLAGS: '-j1' }, }); // We buffer the output and print it out once the process is done in order diff --git a/tools/doc/addon-verify.mjs b/tools/doc/addon-verify.mjs index 8829f00884f79d..8760d0c206fea3 100644 --- a/tools/doc/addon-verify.mjs +++ b/tools/doc/addon-verify.mjs @@ -38,7 +38,7 @@ tree.children.forEach((node) => { await Promise.all( Object.keys(addons).flatMap( - (header) => verifyFiles(addons[header].files, header) + (header) => verifyFiles(addons[header].files, header), )); function verifyFiles(files, blockName) { @@ -82,8 +82,8 @@ ${files[name].replace( sources: files.map(({ name }) => name), includes: ['../common.gypi'], }, - ] - }) + ], + }), }); const dirCreation = mkdir(dir); diff --git a/tools/doc/allhtml.mjs b/tools/doc/allhtml.mjs index fb0b719ac8a8a9..cdf7140f728469 100644 --- a/tools/doc/allhtml.mjs +++ b/tools/doc/allhtml.mjs @@ -96,8 +96,8 @@ all = all.slice(0, apiStart.index + apiStart[0].length) '\n', buildCSSForFlavoredJS(new Set(Array.from( apicontent.matchAll(/(?<=
)/g),
-        (x) => Number(x[0])
-      ))) + '\n'
+        (x) => Number(x[0]),
+      ))) + '\n',
     ) +
   apicontent +
   all.slice(apiEnd);
diff --git a/tools/doc/alljson.mjs b/tools/doc/alljson.mjs
index 47b0d6a14dab33..a5ff7c7e9badaf 100644
--- a/tools/doc/alljson.mjs
+++ b/tools/doc/alljson.mjs
@@ -18,7 +18,7 @@ const results = {
   modules: [],
   classes: [],
   globals: [],
-  methods: []
+  methods: [],
 };
 
 // Identify files that should be skipped. As files are processed, they
@@ -33,7 +33,7 @@ for (const link of toc.match(//g)) {
   if (!jsonFiles.includes(json) || seen.has(json)) continue;
   const data = JSON.parse(
     fs.readFileSync(new URL(`./${json}`, source), 'utf8')
-      .replace(/ {
     assert.strictEqual(
       headingNode?.children[0]?.value.substring(0, 9),
       `${expectedDeprecationCode}: `,
-      'Ill-formed or out-of-order deprecation code.'
+      'Ill-formed or out-of-order deprecation code.',
     );
   } catch (e) {
     throw addMarkdownPathToErrorStack(e, headingNode);
@@ -39,7 +39,7 @@ const testYAMLComment = (commentNode) => {
     assert.match(
       commentNode?.value?.substring(0, 21),
       /^/sg, '');
   let text = current.textRaw;
diff --git a/tools/doc/markdown.mjs b/tools/doc/markdown.mjs
index 7c9ebfbf7471e4..21104e592b8a24 100644
--- a/tools/doc/markdown.mjs
+++ b/tools/doc/markdown.mjs
@@ -10,7 +10,7 @@ export function replaceLinks({ filename, linksMapper }) {
       if (node.url) {
         node.url = node.url.replace(
           referenceToLocalMdFile,
-          (_, filename, hash) => `${filename}.html${hash || ''}`
+          (_, filename, hash) => `${filename}.html${hash || ''}`,
         );
       }
     });
diff --git a/tools/doc/type-parser.mjs b/tools/doc/type-parser.mjs
index 5adc6e0c5a8e41..9c1b11afe00e13 100644
--- a/tools/doc/type-parser.mjs
+++ b/tools/doc/type-parser.mjs
@@ -8,7 +8,7 @@ const jsPrimitives = {
   number: 'Number',
   string: 'String',
   symbol: 'Symbol',
-  undefined: 'Undefined'
+  undefined: 'Undefined',
 };
 
 const jsGlobalObjectsUrl = `${jsDocPrefix}Reference/Global_Objects/`;
@@ -301,7 +301,7 @@ export function toLink(typeInput) {
       } else {
         throw new Error(
           `Unrecognized type: '${typeTextFull}'.\n` +
-          `Please, edit the type or update '${import.meta.url}'.`
+          `Please, edit the type or update '${import.meta.url}'.`,
         );
       }
     } else {
diff --git a/tools/eslint-rules/alphabetize-errors.js b/tools/eslint-rules/alphabetize-errors.js
index b2dcacbb866816..8d25f7973d62a6 100644
--- a/tools/eslint-rules/alphabetize-errors.js
+++ b/tools/eslint-rules/alphabetize-errors.js
@@ -26,7 +26,7 @@ module.exports = {
           const message = [prefix, prev, opStr, curr].join('');
           context.report({ node, message });
         }
-      }
+      },
     };
-  }
+  },
 };
diff --git a/tools/eslint-rules/async-iife-no-unused-result.js b/tools/eslint-rules/async-iife-no-unused-result.js
index bb089de8832d88..901ebca9cd2252 100644
--- a/tools/eslint-rules/async-iife-no-unused-result.js
+++ b/tools/eslint-rules/async-iife-no-unused-result.js
@@ -13,7 +13,7 @@ const message =
 
 module.exports = {
   meta: {
-    fixable: 'code'
+    fixable: 'code',
   },
   create: function(context) {
     let hasCommonModule = false;
@@ -31,10 +31,10 @@ module.exports = {
             fix: (fixer) => {
               if (hasCommonModule)
                 return fixer.insertTextAfter(node, '.then(common.mustCall())');
-            }
+            },
           });
         }
-      }
+      },
     };
-  }
+  },
 };
diff --git a/tools/eslint-rules/avoid-prototype-pollution.js b/tools/eslint-rules/avoid-prototype-pollution.js
index 235ef7a5cbca1d..a7f6420ecfdf4c 100644
--- a/tools/eslint-rules/avoid-prototype-pollution.js
+++ b/tools/eslint-rules/avoid-prototype-pollution.js
@@ -74,7 +74,7 @@ function createUnsafeStringMethodReport(context, name, lookedUpProperty) {
         node,
         message: `${name} looks up the ${lookedUpProperty} property on the first argument`,
       });
-    }
+    },
   };
 }
 
@@ -92,7 +92,7 @@ function createUnsafeStringMethodOnRegexReport(context, name, lookedUpProperty)
         node,
         message: `${name} looks up the ${lookedUpProperty} property of the passed regex, use ${safePrimordialName} directly`,
       });
-    }
+    },
   };
 }
 
@@ -131,7 +131,7 @@ module.exports = {
                 fixer.replaceTextRange(testRange, 'Exec'),
                 fixer.insertTextAfter(node, ' !== null'),
               ];
-            }
+            },
           }],
         });
       },
diff --git a/tools/eslint-rules/crypto-check.js b/tools/eslint-rules/crypto-check.js
index 39d29bba6e0a3d..22271545faef98 100644
--- a/tools/eslint-rules/crypto-check.js
+++ b/tools/eslint-rules/crypto-check.js
@@ -78,7 +78,7 @@ module.exports = {
             if (beforeAllChecks) {
               context.report({
                 node: requireNode,
-                message: msg
+                message: msg,
               });
             }
           });
@@ -106,10 +106,10 @@ module.exports = {
                 commonModuleNode,
                 '\nif (!common.hasCrypto) {' +
                 ' common.skip("missing crypto");' +
-                '}'
+                '}',
               );
             }
-          }
+          },
         });
       });
     }
@@ -118,7 +118,7 @@ module.exports = {
       'CallExpression': (node) => testCryptoUsage(node),
       'IfStatement:exit': (node) => testIfStatement(node),
       'MemberExpression:exit': (node) => testMemberExpression(node),
-      'Program:exit': () => reportIfMissingCheck()
+      'Program:exit': () => reportIfMissingCheck(),
     };
-  }
+  },
 };
diff --git a/tools/eslint-rules/documented-errors.js b/tools/eslint-rules/documented-errors.js
index dad60367cd958a..17bd2221097085 100644
--- a/tools/eslint-rules/documented-errors.js
+++ b/tools/eslint-rules/documented-errors.js
@@ -34,7 +34,7 @@ module.exports = {
             `doc/api/errors.md does not have an anchor for "${code}"`;
           context.report({ node, message });
         }
-      }
+      },
     };
-  }
+  },
 };
diff --git a/tools/eslint-rules/eslint-check.js b/tools/eslint-rules/eslint-check.js
index df82257ccd1443..cedfa970743409 100644
--- a/tools/eslint-rules/eslint-check.js
+++ b/tools/eslint-rules/eslint-check.js
@@ -47,10 +47,10 @@ module.exports = {
               if (commonModuleNode) {
                 return fixer.insertTextAfter(
                   commonModuleNode,
-                  '\ncommon.skipIfEslintMissing();'
+                  '\ncommon.skipIfEslintMissing();',
                 );
               }
-            }
+            },
           });
         });
       }
@@ -59,7 +59,7 @@ module.exports = {
     return {
       'CallExpression': (node) => testEslintUsage(context, node),
       'MemberExpression': (node) => checkMemberExpression(context, node),
-      'Program:exit': () => reportIfMissing(context)
+      'Program:exit': () => reportIfMissing(context),
     };
-  }
+  },
 };
diff --git a/tools/eslint-rules/inspector-check.js b/tools/eslint-rules/inspector-check.js
index 4cc220e68b7ed1..f5c121c5bb95a4 100644
--- a/tools/eslint-rules/inspector-check.js
+++ b/tools/eslint-rules/inspector-check.js
@@ -48,10 +48,10 @@ module.exports = {
               if (commonModuleNode) {
                 return fixer.insertTextAfter(
                   commonModuleNode,
-                  '\ncommon.skipIfInspectorDisabled();'
+                  '\ncommon.skipIfInspectorDisabled();',
                 );
               }
-            }
+            },
           });
         });
       }
@@ -60,7 +60,7 @@ module.exports = {
     return {
       'CallExpression': (node) => testInspectorUsage(context, node),
       'MemberExpression': (node) => checkMemberExpression(context, node),
-      'Program:exit': () => reportIfMissing(context)
+      'Program:exit': () => reportIfMissing(context),
     };
-  }
+  },
 };
diff --git a/tools/eslint-rules/lowercase-name-for-primitive.js b/tools/eslint-rules/lowercase-name-for-primitive.js
index 274dcd1c9dce6e..6b096afa3ebb06 100644
--- a/tools/eslint-rules/lowercase-name-for-primitive.js
+++ b/tools/eslint-rules/lowercase-name-for-primitive.js
@@ -41,19 +41,19 @@ module.exports = function(context) {
         fix: (fixer) => {
           return fixer.replaceText(
             node,
-            `'${lowercaseName}'`
+            `'${lowercaseName}'`,
           );
-        }
+        },
       });
     }
 
   }
 
   return {
-    [astSelector]: (node) => checkNamesArgument(node)
+    [astSelector]: (node) => checkNamesArgument(node),
   };
 };
 
 module.exports.meta = {
-  fixable: 'code'
+  fixable: 'code',
 };
diff --git a/tools/eslint-rules/no-array-destructuring.js b/tools/eslint-rules/no-array-destructuring.js
index 81667e698fbaad..b65849aa95f925 100644
--- a/tools/eslint-rules/no-array-destructuring.js
+++ b/tools/eslint-rules/no-array-destructuring.js
@@ -30,7 +30,7 @@ const findComma = (sourceCode, elements, i, start) => {
     element = elements[--i];
   }
   let token = sourceCode.getTokenAfter(
-    element ?? sourceCode.getTokenByRangeStart(start)
+    element ?? sourceCode.getTokenByRangeStart(start),
   );
   for (; i < originalIndex; i++) {
     token = sourceCode.getTokenAfter(token);
@@ -43,7 +43,7 @@ const createFix = (fixer, sourceCode, { range: [start, end], elements }) => [
   ...elements.map((node, i) =>
     (node === null ?
       fixer.remove(findComma(sourceCode, elements, i, start)) :
-      fixer.insertTextBefore(node, i + ':'))
+      fixer.insertTextBefore(node, i + ':')),
   ),
 ];
 const arrayPatternContainsRestOperator = ({ elements }) =>
diff --git a/tools/eslint-rules/no-duplicate-requires.js b/tools/eslint-rules/no-duplicate-requires.js
index 6e149edceb8d6e..222e61898e5a82 100644
--- a/tools/eslint-rules/no-duplicate-requires.js
+++ b/tools/eslint-rules/no-duplicate-requires.js
@@ -52,7 +52,7 @@ module.exports = (context) => {
           context.report(
             node,
             '\'{{moduleName}}\' require is duplicated.',
-            { moduleName }
+            { moduleName },
           );
         } else {
           required.add(moduleName);
diff --git a/tools/eslint-rules/no-unescaped-regexp-dot.js b/tools/eslint-rules/no-unescaped-regexp-dot.js
index 554eb9bdfb6b3d..07100c20782605 100644
--- a/tools/eslint-rules/no-unescaped-regexp-dot.js
+++ b/tools/eslint-rules/no-unescaped-regexp-dot.js
@@ -20,7 +20,7 @@ module.exports = {
       context.report({
         node,
         loc: sourceCode.getLocFromIndex(indexOfDot),
-        message: 'Unescaped dot character in regular expression'
+        message: 'Unescaped dot character in regular expression',
       });
     }
     const allowedModifiers = ['+', '*', '?', '{'];
@@ -127,7 +127,7 @@ module.exports = {
       'CallExpression': checkRegExpStart,
       'NewExpression': checkRegExpStart,
       'CallExpression:exit': checkRegExpEnd,
-      'NewExpression:exit': checkRegExpEnd
+      'NewExpression:exit': checkRegExpEnd,
     };
-  }
+  },
 };
diff --git a/tools/eslint-rules/non-ascii-character.js b/tools/eslint-rules/non-ascii-character.js
index f9ee24273fdcb6..1d401671d6cb84 100644
--- a/tools/eslint-rules/non-ascii-character.js
+++ b/tools/eslint-rules/non-ascii-character.js
@@ -21,7 +21,7 @@ const suggestions = {
   '”': '"',
   '«': '"',
   '»': '"',
-  '—': '-'
+  '—': '-',
 };
 
 module.exports = (context) => {
@@ -50,6 +50,6 @@ module.exports = (context) => {
   };
 
   return {
-    Program: (node) => reportIfError(node, context.getSourceCode())
+    Program: (node) => reportIfError(node, context.getSourceCode()),
   };
 };
diff --git a/tools/eslint-rules/prefer-assert-iferror.js b/tools/eslint-rules/prefer-assert-iferror.js
index 63430d70af93e4..25f881fc0c0cdf 100644
--- a/tools/eslint-rules/prefer-assert-iferror.js
+++ b/tools/eslint-rules/prefer-assert-iferror.js
@@ -9,7 +9,7 @@ const utils = require('./rules-utils.js');
 
 module.exports = {
   meta: {
-    fixable: 'code'
+    fixable: 'code',
   },
   create(context) {
     const sourceCode = context.getSourceCode();
@@ -52,13 +52,13 @@ module.exports = {
               if (assertImported) {
                 return fixer.replaceText(
                   node,
-                  `assert.ifError(${argument});`
+                  `assert.ifError(${argument});`,
                 );
               }
-            }
+            },
           });
         }
-      }
+      },
     };
-  }
+  },
 };
diff --git a/tools/eslint-rules/prefer-assert-methods.js b/tools/eslint-rules/prefer-assert-methods.js
index 0b82e9984a0693..d279cf47c56d8e 100644
--- a/tools/eslint-rules/prefer-assert-methods.js
+++ b/tools/eslint-rules/prefer-assert-methods.js
@@ -16,7 +16,7 @@ const preferredAssertMethod = {
   '===': 'strictEqual',
   '!==': 'notStrictEqual',
   '==': 'equal',
-  '!=': 'notEqual'
+  '!=': 'notEqual',
 };
 
 module.exports = function(context) {
@@ -34,15 +34,15 @@ module.exports = function(context) {
             const right = sourceCode.getText(arg.right);
             return fixer.replaceText(
               node,
-              `assert.${assertMethod}(${left}, ${right});`
+              `assert.${assertMethod}(${left}, ${right});`,
             );
-          }
+          },
         });
       }
-    }
+    },
   };
 };
 
 module.exports.meta = {
-  fixable: 'code'
+  fixable: 'code',
 };
diff --git a/tools/eslint-rules/prefer-common-mustnotcall.js b/tools/eslint-rules/prefer-common-mustnotcall.js
index ef3c5fb729f31f..2b04806d6a01e9 100644
--- a/tools/eslint-rules/prefer-common-mustnotcall.js
+++ b/tools/eslint-rules/prefer-common-mustnotcall.js
@@ -25,6 +25,6 @@ module.exports = function(context) {
     [arg0Selector]: report,
 
     // Catch common.mustCall(fn, 0)
-    [arg1Selector]: report
+    [arg1Selector]: report,
   };
 };
diff --git a/tools/eslint-rules/prefer-common-mustsucceed.js b/tools/eslint-rules/prefer-common-mustsucceed.js
index 433e8c7610f253..49795f2559fb19 100644
--- a/tools/eslint-rules/prefer-common-mustsucceed.js
+++ b/tools/eslint-rules/prefer-common-mustsucceed.js
@@ -61,6 +61,6 @@ module.exports = (context) => {
           }
         }
       }
-    }
+    },
   };
 };
diff --git a/tools/eslint-rules/prefer-primordials.js b/tools/eslint-rules/prefer-primordials.js
index d2531556de225d..9afdfa41c00ac9 100644
--- a/tools/eslint-rules/prefer-primordials.js
+++ b/tools/eslint-rules/prefer-primordials.js
@@ -73,8 +73,8 @@ const identifierSelector = parentSelectors.map((selector) => `[type!=${selector}
 module.exports = {
   meta: {
     messages: {
-      error: 'Use `const { {{name}} } = primordials;` instead of the global.'
-    }
+      error: 'Use `const { {{name}} } = primordials;` instead of the global.',
+    },
   },
   create(context) {
     const globalScope = context.getSourceCode().scopeManager.globalScope;
@@ -86,7 +86,7 @@ module.exports = {
       const names = option.ignore || [];
       nameMap.set(
         option.name,
-        new Map(names.map((name) => [name, { ignored: true }]))
+        new Map(names.map((name) => [name, { ignored: true }])),
       );
       if (option.into) {
         renameMap.set(option.name, option.into);
@@ -111,7 +111,7 @@ module.exports = {
         const name = node.name;
         const parent = getDestructuringAssignmentParent(
           context.getScope(),
-          node
+          node,
         );
         const parentName = parent?.name;
         if (!isTarget(nameMap, name) && !isTarget(nameMap, parentName)) {
@@ -129,8 +129,8 @@ module.exports = {
               node,
               messageId: 'error',
               data: {
-                name: getReportName({ into, parentName, name })
-              }
+                name: getReportName({ into, parentName, name }),
+              },
             });
           }
           return;
@@ -142,8 +142,8 @@ module.exports = {
             node,
             messageId: 'error',
             data: {
-              name: getReportName({ into, parentName, name })
-            }
+              name: getReportName({ into, parentName, name }),
+            },
           });
         }
       },
@@ -162,7 +162,7 @@ module.exports = {
             messageId: 'error',
             data: {
               name: toPrimordialsName(obj, prop),
-            }
+            },
           });
         }
       },
@@ -180,5 +180,5 @@ module.exports = {
         }
       },
     };
-  }
+  },
 };
diff --git a/tools/eslint-rules/prefer-util-format-errors.js b/tools/eslint-rules/prefer-util-format-errors.js
index 407b6e20dd23ea..91021dc4c7272d 100644
--- a/tools/eslint-rules/prefer-util-format-errors.js
+++ b/tools/eslint-rules/prefer-util-format-errors.js
@@ -33,7 +33,7 @@ module.exports = {
         });
         if (hasSequentialParams)
           context.report(msg, errMsg);
-      }
+      },
     };
-  }
+  },
 };
diff --git a/tools/eslint-rules/require-common-first.js b/tools/eslint-rules/require-common-first.js
index 15a696586cbac7..d09313a5074e9c 100644
--- a/tools/eslint-rules/require-common-first.js
+++ b/tools/eslint-rules/require-common-first.js
@@ -52,10 +52,10 @@ module.exports = function(context) {
           node,
           'Mandatory module "{{moduleName}}" must be loaded ' +
           'before any other modules.',
-          { moduleName: requiredModule }
+          { moduleName: requiredModule },
         );
       }
-    }
+    },
   };
 
   if (isESM) {
diff --git a/tools/eslint-rules/required-modules.js b/tools/eslint-rules/required-modules.js
index 93a5cb340edab2..879a39630dc9e3 100644
--- a/tools/eslint-rules/required-modules.js
+++ b/tools/eslint-rules/required-modules.js
@@ -56,17 +56,17 @@ module.exports = function(context) {
     'Program:exit'(node) {
       if (foundModules.length < requiredModules.length) {
         const missingModules = requiredModules.filter(
-          ([module]) => foundModules.indexOf(module) === -1
+          ([module]) => foundModules.indexOf(module) === -1,
         );
         missingModules.forEach(([moduleName]) => {
           context.report(
             node,
             'Mandatory module "{{moduleName}}" must be loaded.',
-            { moduleName: moduleName }
+            { moduleName: moduleName },
           );
         });
       }
-    }
+    },
   };
 
   if (isESM) {
@@ -95,7 +95,7 @@ module.exports.meta = {
   schema: [{
     'type': 'object',
     'additionalProperties': {
-      'type': 'string'
+      'type': 'string',
     },
   }],
 };
diff --git a/tools/find-inactive-collaborators.mjs b/tools/find-inactive-collaborators.mjs
index f6062b046391fa..1b9637f5ef2cd5 100755
--- a/tools/find-inactive-collaborators.mjs
+++ b/tools/find-inactive-collaborators.mjs
@@ -11,7 +11,7 @@ import { parseArgs } from 'node:util';
 
 const args = parseArgs({
   allowPositionals: true,
-  options: { verbose: { type: 'boolean', short: 'v' } }
+  options: { verbose: { type: 'boolean', short: 'v' } },
 });
 
 const verbose = args.values.verbose;
@@ -27,7 +27,7 @@ async function runGitCommand(cmd, mapFn) {
     input: childProcess.stdout,
   });
   const errorHandler = new Promise(
-    (_, reject) => childProcess.on('error', reject)
+    (_, reject) => childProcess.on('error', reject),
   );
   let returnValue = mapFn ? new Set() : '';
   await Promise.race([errorHandler, Promise.resolve()]);
@@ -50,13 +50,13 @@ async function runGitCommand(cmd, mapFn) {
 // Get all commit authors during the time period.
 const authors = await runGitCommand(
   `git shortlog -n -s --email --since="${SINCE}" HEAD`,
-  (line) => line.trim().split('\t', 2)[1]
+  (line) => line.trim().split('\t', 2)[1],
 );
 
 // Get all approving reviewers of landed commits during the time period.
 const approvingReviewers = await runGitCommand(
   `git log --since="${SINCE}" | egrep "^    Reviewed-By: "`,
-  (line) => /^ {4}Reviewed-By: ([^<]+)/.exec(line)[1].trim()
+  (line) => /^ {4}Reviewed-By: ([^<]+)/.exec(line)[1].trim(),
 );
 
 async function getCollaboratorsFromReadme() {
@@ -81,7 +81,7 @@ async function getCollaboratorsFromReadme() {
     if (line.startsWith('  **') && isCollaborator) {
       const [, name, email] = /^ {2}\*\*([^*]+)\*\* <<(.+)>>/.exec(line);
       const mailmap = await runGitCommand(
-        `git check-mailmap '${name} <${email}>'`
+        `git check-mailmap '${name} <${email}>'`,
       );
       if (mailmap !== `${name} <${email}>`) {
         console.log(`README entry for Collaborator does not match mailmap:\n  ${name} <${email}> => ${mailmap}`);
@@ -191,7 +191,7 @@ if (verbose) {
 }
 const inactive = collaborators.filter((collaborator) =>
   !authors.has(collaborator.mailmap) &&
-  !approvingReviewers.has(collaborator.name)
+  !approvingReviewers.has(collaborator.name),
 );
 
 if (inactive.length) {
diff --git a/tools/find-inactive-tsc.mjs b/tools/find-inactive-tsc.mjs
index 5fc31bc745dc80..2d4b71ad5b7430 100755
--- a/tools/find-inactive-tsc.mjs
+++ b/tools/find-inactive-tsc.mjs
@@ -16,7 +16,7 @@ import { parseArgs } from 'node:util';
 
 const args = parseArgs({
   allowPositionals: true,
-  options: { verbose: { type: 'boolean', short: 'v' } }
+  options: { verbose: { type: 'boolean', short: 'v' } },
 });
 
 const verbose = args.values.verbose;
@@ -32,7 +32,7 @@ async function runGitCommand(cmd, options = {}) {
     input: childProcess.stdout,
   });
   const errorHandler = new Promise(
-    (_, reject) => childProcess.on('error', reject)
+    (_, reject) => childProcess.on('error', reject),
   );
   let returnValue = options.mapFn ? new Set() : '';
   await Promise.race([errorHandler, Promise.resolve()]);
@@ -122,7 +122,7 @@ async function getVotingRecords(tscMembers, votes) {
   for (const vote of votes) {
     // Get the vote data.
     const voteData = JSON.parse(
-      await fs.promises.readFile(path.join('.tmp', vote), 'utf8')
+      await fs.promises.readFile(path.join('.tmp', vote), 'utf8'),
     );
     for (const member in voteData.votes) {
       if (tscMembers.includes(member)) {
@@ -227,33 +227,33 @@ await runGitCommand('git reset HEAD README.md');
 await runGitCommand('git checkout -- README.md');
 
 const tscMembers = tscMembersAtEnd.filter(
-  (memberAtEnd) => tscMembersAtStart.includes(memberAtEnd)
+  (memberAtEnd) => tscMembersAtStart.includes(memberAtEnd),
 );
 
 // Get all meetings since SINCE.
 // Assumes that the TSC repo is cloned in the .tmp dir.
 const meetings = await runGitCommand(
   `git whatchanged --since '${SINCE}' --name-only --pretty=format: meetings`,
-  { cwd: '.tmp', mapFn: (line) => line }
+  { cwd: '.tmp', mapFn: (line) => line },
 );
 
 // Get TSC meeting attendance.
 const attendance = await getAttendance(tscMembers, meetings);
 const lightAttendance = tscMembers.filter(
-  (member) => attendance[member] < meetings.size * 0.25
+  (member) => attendance[member] < meetings.size * 0.25,
 );
 
 // Get all votes since SINCE.
 // Assumes that the TSC repo is cloned in the .tmp dir.
 const votes = await runGitCommand(
   `git whatchanged --since '${SINCE}' --name-only --pretty=format: votes/*.json`,
-  { cwd: '.tmp', mapFn: (line) => line }
+  { cwd: '.tmp', mapFn: (line) => line },
 );
 
 // Check voting record.
 const votingRecords = await getVotingRecords(tscMembers, votes);
 const noVotes = tscMembers.filter(
-  (member) => votingRecords[member] === 0
+  (member) => votingRecords[member] === 0,
 );
 
 const inactive = lightAttendance.filter((member) => noVotes.includes(member));
diff --git a/tools/license2rtf.mjs b/tools/license2rtf.mjs
index d982e679c3e653..47a55d0d3dd9bd 100644
--- a/tools/license2rtf.mjs
+++ b/tools/license2rtf.mjs
@@ -63,7 +63,7 @@ class ParagraphParser extends Stream {
     this.paragraph = {
       li: '',
       inLicenseBlock: this.blockIsLicenseBlock,
-      lines: []
+      lines: [],
     };
   }
 
diff --git a/tools/lint-md/list-released-versions-from-changelogs.mjs b/tools/lint-md/list-released-versions-from-changelogs.mjs
index 81b7d17197e7f9..39835136c31219 100755
--- a/tools/lint-md/list-released-versions-from-changelogs.mjs
+++ b/tools/lint-md/list-released-versions-from-changelogs.mjs
@@ -32,7 +32,7 @@ const dir = await fs.promises.opendir(dataFolder);
 for await (const dirent of dir) {
   if (dirent.isFile()) {
     filesToCheck.push(
-      getVersionsFromFile(new URL(dirent.name, dataFolder))
+      getVersionsFromFile(new URL(dirent.name, dataFolder)),
     );
   }
 }
diff --git a/tools/lint-pr-url.mjs b/tools/lint-pr-url.mjs
index c32473ccb89d84..1b0ada0508a7cf 100755
--- a/tools/lint-pr-url.mjs
+++ b/tools/lint-pr-url.mjs
@@ -28,7 +28,7 @@ for await (const line of diff) {
   } else if (!validatePrUrl(line.match(prUrlDefinition)?.[1])) {
     console.warn(
       `::warning file=${currentFile},line=${currentLine++},col=${line.length}` +
-      '::pr-url doesn\'t match the URL of the current PR.'
+      '::pr-url doesn\'t match the URL of the current PR.',
     );
   } else if (line[0] !== '-') {
     // Increment line counter if line is not being deleted.
diff --git a/tools/lint-sh.mjs b/tools/lint-sh.mjs
index 681c7cd5665dce..3c6815815ebcf1 100755
--- a/tools/lint-sh.mjs
+++ b/tools/lint-sh.mjs
@@ -77,12 +77,12 @@ async function checkFiles(...files) {
             (process.env.GITHUB_ACTIONS ?
               `::error file=${file},line=1,col=1::` :
               'Fixable with --fix: ') +
-              `Invalid hashbang for ${file} (expected /bin/sh).`
+              `Invalid hashbang for ${file} (expected /bin/sh).`,
           );
         }
       }
       await fd.close();
-    })
+    }),
   );
 
   const stdout = await new Promise((resolve, reject) => {
@@ -102,7 +102,7 @@ async function checkFiles(...files) {
           files.map((filePath) => relative(SPAWN_OPTIONS.cwd, filePath)) :
           files),
       ],
-      SPAWN_OPTIONS
+      SPAWN_OPTIONS,
     );
     shellcheck.once('error', reject);
 
@@ -138,7 +138,7 @@ async function checkFiles(...files) {
     const data = JSON.parse(stdout);
     for (const { file, line, column, message } of data) {
       console.error(
-        `::error file=${file},line=${line},col=${column}::${file}:${line}:${column}: ${message}`
+        `::error file=${file},line=${line},col=${column}::${file}:${line}:${column}: ${message}`,
       );
     }
   }
diff --git a/tools/update-authors.mjs b/tools/update-authors.mjs
index 7dfae178e33eff..b0b001d2fbdbe4 100755
--- a/tools/update-authors.mjs
+++ b/tools/update-authors.mjs
@@ -17,7 +17,7 @@ const log = spawn(
   'git',
   // Inspect author name/email and body.
   ['log', '--reverse', '--format=Author: %aN <%aE>\n%b'], {
-    stdio: ['inherit', 'pipe', 'inherit']
+    stdio: ['inherit', 'pipe', 'inherit'],
   });
 const rl = readline.createInterface({ input: log.stdout });