Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pr 10297 / 2 #33

Closed
thorn0 opened this issue Feb 18, 2021 · 4 comments
Closed

pr 10297 / 2 #33

thorn0 opened this issue Feb 18, 2021 · 4 comments

Comments

@thorn0
Copy link
Member

thorn0 commented Feb 18, 2021

No description provided.

@thorn0
Copy link
Member Author

thorn0 commented Feb 18, 2021

run #10297

@github-actions
Copy link
Contributor

github-actions bot commented Feb 18, 2021

prettier/prettier#10297 VS prettier/prettier@main

Diff (3727 lines)
diff --git ORI/babel/packages/babel-cli/test/index.js ALT/babel/packages/babel-cli/test/index.js
index 7cedb49e3..bd2f64c1b 100644
--- ORI/babel/packages/babel-cli/test/index.js
+++ ALT/babel/packages/babel-cli/test/index.js
@@ -52,19 +52,21 @@ const saveInFiles = function (files) {
 };
 
 const normalizeOutput = function (str, cwd) {
-  let result = str
-    .replace(/\(\d+ms\)/g, "(123ms)")
-    .replace(new RegExp(escapeRegExp(cwd), "g"), "<CWD>")
-    // (non-win32) /foo/babel/packages -> <CWD>/packages
-    // (win32) C:\foo\babel\packages -> <CWD>\packages
-    .replace(new RegExp(escapeRegExp(rootDir), "g"), "<ROOTDIR>");
+  let result =
+    str
+      .replace(/\(\d+ms\)/g, "(123ms)")
+      .replace(new RegExp(escapeRegExp(cwd), "g"), "<CWD>")
+      // (non-win32) /foo/babel/packages -> <CWD>/packages
+      // (win32) C:\foo\babel\packages -> <CWD>\packages
+      .replace(new RegExp(escapeRegExp(rootDir), "g"), "<ROOTDIR>");
   if (process.platform === "win32") {
-    result = result
-      // C:\\foo\\babel\\packages -> <CWD>\\packages (in js string literal)
-      .replace(
-        new RegExp(escapeRegExp(rootDir.replace(/\\/g, "\\\\")), "g"),
-        "<ROOTDIR>",
-      );
+    result =
+      result
+        // C:\\foo\\babel\\packages -> <CWD>\\packages (in js string literal)
+        .replace(
+          new RegExp(escapeRegExp(rootDir.replace(/\\/g, "\\\\")), "g"),
+          "<ROOTDIR>",
+        );
   }
   return result;
 };
diff --git ORI/babel/packages/babel-core/src/config/files/configuration.js ALT/babel/packages/babel-core/src/config/files/configuration.js
index 8a3bed914..19fcb9ed2 100644
--- ORI/babel/packages/babel-core/src/config/files/configuration.js
+++ ALT/babel/packages/babel-core/src/config/files/configuration.js
@@ -278,10 +278,11 @@ const readConfigJSON5 = makeStaticFileCache((filepath, content): ConfigFile => {
 
 const readIgnoreConfig = makeStaticFileCache((filepath, content) => {
   const ignoreDir = path.dirname(filepath);
-  const ignorePatterns = content
-    .split("\n")
-    .map<string>(line => line.replace(/#(.*?)$/, "").trim())
-    .filter(line => !!line);
+  const ignorePatterns =
+    content
+      .split("\n")
+      .map<string>(line => line.replace(/#(.*?)$/, "").trim())
+      .filter(line => !!line);
 
   for (const pattern of ignorePatterns) {
     if (pattern[0] === "!") {
diff --git ORI/babel/packages/babel-core/src/config/full.js ALT/babel/packages/babel-core/src/config/full.js
index 75fbe293c..2efa73342 100644
--- ORI/babel/packages/babel-core/src/config/full.js
+++ ALT/babel/packages/babel-core/src/config/full.js
@@ -186,10 +186,11 @@ export default gensync<[any], ResolvedConfig | null>(function* loadFullConfig(
   })();
 
   opts.plugins = passes[0];
-  opts.presets = passes
-    .slice(1)
-    .filter(plugins => plugins.length > 0)
-    .map(plugins => ({ plugins }));
+  opts.presets =
+    passes
+      .slice(1)
+      .filter(plugins => plugins.length > 0)
+      .map(plugins => ({ plugins }));
   opts.passPerPreset = opts.presets.length > 0;
 
   return {
diff --git ORI/babel/packages/babel-core/src/transformation/file/merge-map.js ALT/babel/packages/babel-core/src/transformation/file/merge-map.js
index 911867d96..70d64b276 100644
--- ORI/babel/packages/babel-core/src/transformation/file/merge-map.js
+++ ALT/babel/packages/babel-core/src/transformation/file/merge-map.js
@@ -242,19 +242,20 @@ function buildMappingData(map: SourceMap): ResolvedMappings {
 
       sourceData.mappings.push({
         original: obj,
-        generated: consumer
-          .allGeneratedPositionsFor({
-            source: m.source,
-            line: m.originalLine,
-            column: m.originalColumn,
-          })
-          .map(item => ({
-            line: item.line,
-            columnStart: item.column,
-            // source-map's lastColumn is inclusive, not exclusive, so we need
-            // to add 1 to it.
-            columnEnd: item.lastColumn + 1,
-          })),
+        generated:
+          consumer
+            .allGeneratedPositionsFor({
+              source: m.source,
+              line: m.originalLine,
+              column: m.originalColumn,
+            })
+            .map(item => ({
+              line: item.line,
+              columnStart: item.column,
+              // source-map's lastColumn is inclusive, not exclusive, so we need
+              // to add 1 to it.
+              columnEnd: item.lastColumn + 1,
+            })),
       });
     },
     null,
diff --git ORI/babel/packages/babel-helper-compilation-targets/src/index.js ALT/babel/packages/babel-helper-compilation-targets/src/index.js
index 4fff39876..3723a0435 100644
--- ORI/babel/packages/babel-helper-compilation-targets/src/index.js
+++ ALT/babel/packages/babel-helper-compilation-targets/src/index.js
@@ -160,9 +160,10 @@ export default function getTargets(
   // These values OVERRIDE the `browsers` field.
   if (inputTargets.esmodules) {
     const supportsESModules = browserModulesData["es6.module"];
-    browsers = Object.keys(supportsESModules)
-      .map(browser => `${browser} ${supportsESModules[browser]}`)
-      .join(", ");
+    browsers =
+      Object.keys(supportsESModules)
+        .map(browser => `${browser} ${supportsESModules[browser]}`)
+        .join(", ");
   }
 
   // Parse browsers target via browserslist
diff --git ORI/babel/packages/babel-helper-module-transforms/src/get-module-name.js ALT/babel/packages/babel-helper-module-transforms/src/get-module-name.js
index 0e4e81ad3..228aef281 100644
--- ORI/babel/packages/babel-helper-module-transforms/src/get-module-name.js
+++ ALT/babel/packages/babel-helper-module-transforms/src/get-module-name.js
@@ -33,11 +33,12 @@ export default function getModuleName(
     const sourceRootReplacer =
       sourceRoot != null ? new RegExp("^" + sourceRoot + "/?") : "";
 
-    moduleName += filenameRelative
-      // remove sourceRoot from filename
-      .replace(sourceRootReplacer, "")
-      // remove extension
-      .replace(/\.(\w*?)$/, "");
+    moduleName +=
+      filenameRelative
+        // remove sourceRoot from filename
+        .replace(sourceRootReplacer, "")
+        // remove extension
+        .replace(/\.(\w*?)$/, "");
   }
 
   // normalize path separators
diff --git ORI/babel/packages/babel-helper-transform-fixture-test-runner/src/index.js ALT/babel/packages/babel-helper-transform-fixture-test-runner/src/index.js
index 1b5116349..1fa64d029 100644
--- ORI/babel/packages/babel-helper-transform-fixture-test-runner/src/index.js
+++ ALT/babel/packages/babel-helper-transform-fixture-test-runner/src/index.js
@@ -325,23 +325,25 @@ function validateFile(actualCode, expectedLoc, expectedCode) {
 function normalizeOutput(code) {
   const projectRoot = path.resolve(__dirname, "../../../");
   const cwdSymbol = "<CWD>";
-  let result = code
-    .trim()
-    // (non-win32) /foo/babel/packages -> <CWD>/packages
-    // (win32) C:\foo\babel\packages -> <CWD>\packages
-    .replace(new RegExp(escapeRegExp(projectRoot), "g"), cwdSymbol);
+  let result =
+    code
+      .trim()
+      // (non-win32) /foo/babel/packages -> <CWD>/packages
+      // (win32) C:\foo\babel\packages -> <CWD>\packages
+      .replace(new RegExp(escapeRegExp(projectRoot), "g"), cwdSymbol);
   if (process.platform === "win32") {
-    result = result
-      // C:/foo/babel/packages -> <CWD>/packages
-      .replace(
-        new RegExp(escapeRegExp(projectRoot.replace(/\\/g, "/")), "g"),
-        cwdSymbol,
-      )
-      // C:\\foo\\babel\\packages -> <CWD>\\packages (in js string literal)
-      .replace(
-        new RegExp(escapeRegExp(projectRoot.replace(/\\/g, "\\\\")), "g"),
-        cwdSymbol,
-      );
+    result =
+      result
+        // C:/foo/babel/packages -> <CWD>/packages
+        .replace(
+          new RegExp(escapeRegExp(projectRoot.replace(/\\/g, "/")), "g"),
+          cwdSymbol,
+        )
+        // C:\\foo\\babel\\packages -> <CWD>\\packages (in js string literal)
+        .replace(
+          new RegExp(escapeRegExp(projectRoot.replace(/\\/g, "\\\\")), "g"),
+          cwdSymbol,
+        );
   }
   return result;
 }
diff --git ORI/babel/packages/babel-helpers/src/index.js ALT/babel/packages/babel-helpers/src/index.js
index 067719614..1a6155c51 100644
--- ORI/babel/packages/babel-helpers/src/index.js
+++ ALT/babel/packages/babel-helpers/src/index.js
@@ -303,8 +303,9 @@ export function ensure(name: string, newFileClass?) {
   loadHelper(name);
 }
 
-export const list = Object.keys(helpers)
-  .map(name => name.replace(/^_/, ""))
-  .filter(name => name !== "__esModule");
+export const list =
+  Object.keys(helpers)
+    .map(name => name.replace(/^_/, ""))
+    .filter(name => name !== "__esModule");
 
 export default get;
diff --git ORI/babel/packages/babel-highlight/src/index.js ALT/babel/packages/babel-highlight/src/index.js
index f2639a521..1a89ce0fd 100644
--- ORI/babel/packages/babel-highlight/src/index.js
+++ ALT/babel/packages/babel-highlight/src/index.js
@@ -204,10 +204,11 @@ function highlightTokens(defs: Object, text: string) {
   for (const { type, value } of tokenize(text)) {
     const colorize = defs[type];
     if (colorize) {
-      highlighted += value
-        .split(NEWLINE)
-        .map(str => colorize(str))
-        .join("\n");
+      highlighted +=
+        value
+          .split(NEWLINE)
+          .map(str => colorize(str))
+          .join("\n");
     } else {
       highlighted += value;
     }
diff --git ORI/babel/packages/babel-parser/src/parser/expression.js ALT/babel/packages/babel-parser/src/parser/expression.js
index b50aed34e..c9a06b149 100644
--- ORI/babel/packages/babel-parser/src/parser/expression.js
+++ ALT/babel/packages/babel-parser/src/parser/expression.js
@@ -1552,9 +1552,10 @@ export default class ExpressionParser extends LValParser {
       }
     }
     elem.value = {
-      raw: this.input
-        .slice(this.state.start, this.state.end)
-        .replace(/\r\n?/g, "\n"),
+      raw:
+        this.input
+          .slice(this.state.start, this.state.end)
+          .replace(/\r\n?/g, "\n"),
       cooked: this.state.value,
     };
     this.next();
diff --git ORI/babel/packages/babel-parser/src/tokenizer/index.js ALT/babel/packages/babel-parser/src/tokenizer/index.js
index 7c119c7d1..2c23b7ae2 100644
--- ORI/babel/packages/babel-parser/src/tokenizer/index.js
+++ ALT/babel/packages/babel-parser/src/tokenizer/index.js
@@ -1381,9 +1381,10 @@ export default class Tokenizer extends ParserErrors {
       default:
         if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {
           const codePos = this.state.pos - 1;
-          const match = this.input
-            .substr(this.state.pos - 1, 3)
-            .match(/^[0-7]+/);
+          const match =
+            this.input
+              .substr(this.state.pos - 1, 3)
+              .match(/^[0-7]+/);
 
           // This is never null, because of the if condition above.
           /*:: invariant(match !== null) */
diff --git ORI/babel/packages/babel-plugin-proposal-object-rest-spread/src/index.js ALT/babel/packages/babel-plugin-proposal-object-rest-spread/src/index.js
index 387e2634c..c0741f2f8 100644
--- ORI/babel/packages/babel-plugin-proposal-object-rest-spread/src/index.js
+++ ALT/babel/packages/babel-plugin-proposal-object-rest-spread/src/index.js
@@ -394,9 +394,10 @@ export default declare((api, opts) => {
         const declaration = path.get("declaration");
         if (!declaration.isVariableDeclaration()) return;
 
-        const hasRest = declaration
-          .get("declarations")
-          .some(path => hasObjectPatternRestElement(path.get("id")));
+        const hasRest =
+          declaration
+            .get("declarations")
+            .some(path => hasObjectPatternRestElement(path.get("id")));
         if (!hasRest) return;
 
         const specifiers = [];
diff --git ORI/babel/packages/babel-plugin-transform-flow-comments/src/index.js ALT/babel/packages/babel-plugin-transform-flow-comments/src/index.js
index db926052c..afa1486ad 100644
--- ORI/babel/packages/babel-plugin-transform-flow-comments/src/index.js
+++ ALT/babel/packages/babel-plugin-transform-flow-comments/src/index.js
@@ -68,10 +68,11 @@ export default declare(api => {
   }
 
   function generateComment(path, optional) {
-    let comment = path
-      .getSource()
-      .replace(/\*-\//g, "*-ESCAPED/")
-      .replace(/\*\//g, "*-/");
+    let comment =
+      path
+        .getSource()
+        .replace(/\*-\//g, "*-ESCAPED/")
+        .replace(/\*\//g, "*-/");
     if (optional) comment = "?" + comment;
     if (comment[0] !== ":") comment = ":: " + comment;
     return comment;
diff --git ORI/babel/packages/babel-plugin-transform-modules-amd/src/index.js ALT/babel/packages/babel-plugin-transform-modules-amd/src/index.js
index 7ea2b150f..adb8d0e21 100644
--- ORI/babel/packages/babel-plugin-transform-modules-amd/src/index.js
+++ ALT/babel/packages/babel-plugin-transform-modules-amd/src/index.js
@@ -27,10 +27,11 @@ function injectWrapper(path, wrapper) {
   path.node.directives = [];
   path.node.body = [];
   const amdWrapper = path.pushContainer("body", wrapper)[0];
-  const amdFactory = amdWrapper
-    .get("expression.arguments")
-    .filter(arg => arg.isFunctionExpression())[0]
-    .get("body");
+  const amdFactory =
+    amdWrapper
+      .get("expression.arguments")
+      .filter(arg => arg.isFunctionExpression())[0]
+      .get("body");
   amdFactory.pushContainer("directives", directives);
   amdFactory.pushContainer("body", body);
 }
diff --git ORI/babel/packages/babel-plugin-transform-modules-umd/src/index.js ALT/babel/packages/babel-plugin-transform-modules-umd/src/index.js
index 0f85d5f9a..0752f4ad6 100644
--- ORI/babel/packages/babel-plugin-transform-modules-umd/src/index.js
+++ ALT/babel/packages/babel-plugin-transform-modules-umd/src/index.js
@@ -108,12 +108,13 @@ export default declare((api, options) => {
     if (exactGlobals) {
       const globalRef = browserGlobals[source];
       if (globalRef) {
-        memberExpression = globalRef
-          .split(".")
-          .reduce(
-            (accum, curr) => t.memberExpression(accum, t.identifier(curr)),
-            t.identifier("global"),
-          );
+        memberExpression =
+          globalRef
+            .split(".")
+            .reduce(
+              (accum, curr) => t.memberExpression(accum, t.identifier(curr)),
+              t.identifier("global"),
+            );
       } else {
         memberExpression = t.memberExpression(
           t.identifier("global"),
@@ -228,9 +229,10 @@ export default declare((api, options) => {
               ),
             }),
           ])[0];
-          const umdFactory = umdWrapper
-            .get("expression.arguments")[1]
-            .get("body");
+          const umdFactory =
+            umdWrapper
+              .get("expression.arguments")[1]
+              .get("body");
           umdFactory.pushContainer("directives", directives);
           umdFactory.pushContainer("body", body);
         },
diff --git ORI/babel/packages/babel-plugin-transform-parameters/src/rest.js ALT/babel/packages/babel-plugin-transform-parameters/src/rest.js
index cfba76ce4..42db73bfe 100644
--- ORI/babel/packages/babel-plugin-transform-parameters/src/rest.js
+++ ALT/babel/packages/babel-plugin-transform-parameters/src/rest.js
@@ -349,9 +349,10 @@ export default function convertFunctionRest(path) {
   if (state.deopted) {
     node.body.body.unshift(loop);
   } else {
-    let target = path
-      .getEarliestCommonAncestorFrom(state.references)
-      .getStatementParent();
+    let target =
+      path
+        .getEarliestCommonAncestorFrom(state.references)
+        .getStatementParent();
 
     // don't perform the allocation inside a loop
     target.findParent(path => {
diff --git ORI/babel/packages/babel-preset-env/src/debug.js ALT/babel/packages/babel-preset-env/src/debug.js
index b91499e72..9a180a71e 100644
--- ORI/babel/packages/babel-preset-env/src/debug.js
+++ ALT/babel/packages/babel-preset-env/src/debug.js
@@ -18,10 +18,11 @@ export const logPluginOrPolyfill = (
 ) => {
   const filteredList = getInclusionReasons(item, targetVersions, list);
 
-  const formattedTargets = JSON.stringify(filteredList)
-    .replace(/,/g, ", ")
-    .replace(/^\{"/, '{ "')
-    .replace(/"\}$/, '" }');
+  const formattedTargets =
+    JSON.stringify(filteredList)
+      .replace(/,/g, ", ")
+      .replace(/^\{"/, '{ "')
+      .replace(/"\}$/, '" }');
 
   console.log(`  ${item} ${formattedTargets}`);
 };
diff --git ORI/babel/packages/babel-preset-env/src/index.js ALT/babel/packages/babel-preset-env/src/index.js
index 90384f610..eec73efbb 100644
--- ORI/babel/packages/babel-preset-env/src/index.js
+++ ALT/babel/packages/babel-preset-env/src/index.js
@@ -326,30 +326,31 @@ option \`forceAllTransforms: true\` instead.
   });
 
   const pluginUseBuiltIns = useBuiltIns !== false;
-  const plugins = Array.from(pluginNames)
-    .map(pluginName => {
-      if (
-        pluginName === "proposal-class-properties" ||
-        pluginName === "proposal-private-methods" ||
-        // This is not included in preset-env yet, but let's keep it here so we
-        // don't forget about it in the future.
-        pluginName === "proposal-private-property-in-object"
-      ) {
+  const plugins =
+    Array.from(pluginNames)
+      .map(pluginName => {
+        if (
+          pluginName === "proposal-class-properties" ||
+          pluginName === "proposal-private-methods" ||
+          // This is not included in preset-env yet, but let's keep it here so we
+          // don't forget about it in the future.
+          pluginName === "proposal-private-property-in-object"
+        ) {
+          return [
+            getPlugin(pluginName),
+            {
+              loose: loose
+                ? "#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error"
+                : "#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error",
+            },
+          ];
+        }
         return [
           getPlugin(pluginName),
-          {
-            loose: loose
-              ? "#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error"
-              : "#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error",
-          },
+          { spec, loose, useBuiltIns: pluginUseBuiltIns },
         ];
-      }
-      return [
-        getPlugin(pluginName),
-        { spec, loose, useBuiltIns: pluginUseBuiltIns },
-      ];
-    })
-    .concat(polyfillPlugins);
+      })
+      .concat(polyfillPlugins);
 
   if (debug) {
     console.log("@babel/preset-env: `DEBUG` option");
diff --git ORI/babel/packages/babel-preset-env/src/polyfills/corejs3/entry-plugin.js ALT/babel/packages/babel-preset-env/src/polyfills/corejs3/entry-plugin.js
index caa8de4cf..96c4a6a5b 100644
--- ORI/babel/packages/babel-preset-env/src/polyfills/corejs3/entry-plugin.js
+++ ALT/babel/packages/babel-preset-env/src/polyfills/corejs3/entry-plugin.js
@@ -23,10 +23,11 @@ function isBabelPolyfillSource(source) {
 
 function isCoreJSSource(source) {
   if (typeof source === "string") {
-    source = source
-      .replace(/\\/g, "/")
-      .replace(/(\/(index)?)?(\.js)?$/i, "")
-      .toLowerCase();
+    source =
+      source
+        .replace(/\\/g, "/")
+        .replace(/(\/(index)?)?(\.js)?$/i, "")
+        .toLowerCase();
   }
   return has(corejsEntries, source) && corejsEntries[source];
 }
diff --git ORI/babel/packages/babel-preset-env/src/polyfills/corejs3/usage-plugin.js ALT/babel/packages/babel-preset-env/src/polyfills/corejs3/usage-plugin.js
index 37370a9b6..77edfac37 100644
--- ORI/babel/packages/babel-preset-env/src/polyfills/corejs3/usage-plugin.js
+++ ALT/babel/packages/babel-preset-env/src/polyfills/corejs3/usage-plugin.js
@@ -32,12 +32,13 @@ const NO_DIRECT_POLYFILL_IMPORT = `
   When setting \`useBuiltIns: 'usage'\`, polyfills are automatically imported when needed.
   Please remove the direct import of \`core-js\` or use \`useBuiltIns: 'entry'\` instead.`;
 
-const corejs3PolyfillsWithoutProposals = Object.keys(corejs3Polyfills)
-  .filter(name => !name.startsWith("esnext."))
-  .reduce((memo, key) => {
-    memo[key] = corejs3Polyfills[key];
-    return memo;
-  }, {});
+const corejs3PolyfillsWithoutProposals =
+  Object.keys(corejs3Polyfills)
+    .filter(name => !name.startsWith("esnext."))
+    .reduce((memo, key) => {
+      memo[key] = corejs3Polyfills[key];
+      return memo;
+    }, {});
 
 const corejs3PolyfillsWithShippedProposals =
   (corejs3ShippedProposalsList: string[]).reduce(
diff --git ORI/babel/packages/babel-traverse/test/evaluation.js ALT/babel/packages/babel-traverse/test/evaluation.js
index d90ab87ff..ff8625c01 100644
--- ORI/babel/packages/babel-traverse/test/evaluation.js
+++ ALT/babel/packages/babel-traverse/test/evaluation.js
@@ -107,12 +107,14 @@ describe("evaluation", function () {
     const member_expr = getPath(
       "var x = Math.min(2,Math.max(3,4));var y = Math.random();",
     );
-    const eval_member_expr = member_expr
-      .get("body.0.declarations.0.init")
-      .evaluate();
-    const eval_invalid_call = member_expr
-      .get("body.1.declarations.0.init")
-      .evaluate();
+    const eval_member_expr =
+      member_expr
+        .get("body.0.declarations.0.init")
+        .evaluate();
+    const eval_invalid_call =
+      member_expr
+        .get("body.1.declarations.0.init")
+        .evaluate();
     expect(eval_member_expr.value).toBe(2);
     expect(eval_invalid_call.confident).toBe(false);
   });
@@ -177,15 +179,18 @@ describe("evaluation", function () {
   });
 
   it("should deopt redefined primitives - undefined, NaN and Infinity", () => {
-    const eval_undef = getPath("let undefined; undefined;")
-      .get("body.1.expression")
-      .evaluate();
-    const eval_nan = getPath("let NaN; NaN;")
-      .get("body.1.expression")
-      .evaluate();
-    const eval_inf = getPath("let Infinity; Infinity;")
-      .get("body.1.expression")
-      .evaluate();
+    const eval_undef =
+      getPath("let undefined; undefined;")
+        .get("body.1.expression")
+        .evaluate();
+    const eval_nan =
+      getPath("let NaN; NaN;")
+        .get("body.1.expression")
+        .evaluate();
+    const eval_inf =
+      getPath("let Infinity; Infinity;")
+        .get("body.1.expression")
+        .evaluate();
     expect(eval_undef.confident).toBe(false);
     expect(eval_nan.confident).toBe(false);
     expect(eval_inf.confident).toBe(false);
diff --git ORI/babel/packages/babel-traverse/test/inference.js ALT/babel/packages/babel-traverse/test/inference.js
index dde8bd227..1d9d2614d 100644
--- ORI/babel/packages/babel-traverse/test/inference.js
+++ ALT/babel/packages/babel-traverse/test/inference.js
@@ -17,9 +17,10 @@ function getPath(code) {
 describe("inference", function () {
   describe("baseTypeStrictlyMatches", function () {
     it("it should work with null", function () {
-      const path = getPath("var x = null; x === null")
-        .get("body")[1]
-        .get("expression");
+      const path =
+        getPath("var x = null; x === null")
+          .get("body")[1]
+          .get("expression");
       const left = path.get("left");
       const right = path.get("right");
       const strictMatch = left.baseTypeStrictlyMatches(right);
@@ -28,9 +29,10 @@ describe("inference", function () {
     });
 
     it("it should work with numbers", function () {
-      const path = getPath("var x = 1; x === 2")
-        .get("body")[1]
-        .get("expression");
+      const path =
+        getPath("var x = 1; x === 2")
+          .get("body")[1]
+          .get("expression");
       const left = path.get("left");
       const right = path.get("right");
       const strictMatch = left.baseTypeStrictlyMatches(right);
@@ -39,9 +41,10 @@ describe("inference", function () {
     });
 
     it("it should bail when type changes", function () {
-      const path = getPath("var x = 1; if (foo) x = null;else x = 3; x === 2")
-        .get("body")[2]
-        .get("expression");
+      const path =
+        getPath("var x = 1; if (foo) x = null;else x = 3; x === 2")
+          .get("body")[2]
+          .get("expression");
       const left = path.get("left");
       const right = path.get("right");
 
@@ -51,9 +54,10 @@ describe("inference", function () {
     });
 
     it("it should differentiate between null and undefined", function () {
-      const path = getPath("var x; x === null")
-        .get("body")[1]
-        .get("expression");
+      const path =
+        getPath("var x; x === null")
+          .get("body")[1]
+          .get("expression");
       const left = path.get("left");
       const right = path.get("right");
       const strictMatch = left.baseTypeStrictlyMatches(right);
@@ -141,34 +145,38 @@ describe("inference", function () {
       ).toBeTruthy();
     });
     it("should infer Function from function", function () {
-      const path = getPath("(function (): string {})")
-        .get("body")[0]
-        .get("expression");
+      const path =
+        getPath("(function (): string {})")
+          .get("body")[0]
+          .get("expression");
       const type = path.getTypeAnnotation();
       expect(
         t.isGenericTypeAnnotation(type) && type.id.name === "Function",
       ).toBeTruthy();
     });
     it("should infer call return type using function", function () {
-      const path = getPath("(function (): string {})()")
-        .get("body")[0]
-        .get("expression");
+      const path =
+        getPath("(function (): string {})()")
+          .get("body")[0]
+          .get("expression");
       const type = path.getTypeAnnotation();
       expect(t.isStringTypeAnnotation(type)).toBeTruthy();
     });
     it("should infer call return type using async function", function () {
-      const path = getPath("(async function (): string {})()")
-        .get("body")[0]
-        .get("expression");
+      const path =
+        getPath("(async function (): string {})()")
+          .get("body")[0]
+          .get("expression");
       const type = path.getTypeAnnotation();
       expect(
         t.isGenericTypeAnnotation(type) && type.id.name === "Promise",
       ).toBeTruthy();
     });
     it("should infer call return type using async generator function", function () {
-      const path = getPath("(async function * (): string {})()")
-        .get("body")[0]
-        .get("expression");
+      const path =
+        getPath("(async function * (): string {})()")
+          .get("body")[0]
+          .get("expression");
       const type = path.getTypeAnnotation();
       expect(
         t.isGenericTypeAnnotation(type) && type.id.name === "AsyncIterator",
@@ -197,9 +205,10 @@ describe("inference", function () {
       expect(t.isNumberTypeAnnotation(type.types[1])).toBeTruthy();
     });
     it("should infer type of tagged template literal", function () {
-      const path = getPath("(function (): RegExp {}) `hey`")
-        .get("body")[0]
-        .get("expression");
+      const path =
+        getPath("(function (): RegExp {}) `hey`")
+          .get("body")[0]
+          .get("expression");
       const type = path.getTypeAnnotation();
       expect(
         t.isGenericTypeAnnotation(type) && type.id.name === "RegExp",
diff --git ORI/eslint-plugin-vue/docs/.vuepress/config.js ALT/eslint-plugin-vue/docs/.vuepress/config.js
index fb7719f..fdd16d2 100644
--- ORI/eslint-plugin-vue/docs/.vuepress/config.js
+++ ALT/eslint-plugin-vue/docs/.vuepress/config.js
@@ -60,21 +60,23 @@ const sidebarCategories = [
 
 const categorizedRules = []
 for (const { title, categoryIds } of sidebarCategories) {
-  const categoryRules = rules
-    .filter((rule) => rule.meta.docs.categories && !rule.meta.deprecated)
-    .filter((rule) =>
-      categoryIds.every((categoryId) =>
-        rule.meta.docs.categories.includes(categoryId)
+  const categoryRules =
+    rules
+      .filter((rule) => rule.meta.docs.categories && !rule.meta.deprecated)
+      .filter((rule) =>
+        categoryIds.every((categoryId) =>
+          rule.meta.docs.categories.includes(categoryId)
+        )
       )
-    )
-  const children = categoryRules
-    .filter(({ ruleId }) => {
-      const exists = categorizedRules.some(({ children }) =>
-        children.some(([, alreadyRuleId]) => alreadyRuleId === ruleId)
-      )
-      return !exists
-    })
-    .map(({ ruleId, name }) => [`/rules/${name}`, ruleId])
+  const children =
+    categoryRules
+      .filter(({ ruleId }) => {
+        const exists = categorizedRules.some(({ children }) =>
+          children.some(([, alreadyRuleId]) => alreadyRuleId === ruleId)
+        )
+        return !exists
+      })
+      .map(({ ruleId, name }) => [`/rules/${name}`, ruleId])
 
   if (children.length === 0) {
     continue
diff --git ORI/eslint-plugin-vue/eslint-internal-rules/require-meta-docs-url.js ALT/eslint-plugin-vue/eslint-internal-rules/require-meta-docs-url.js
index 88cd9de..ebc9087 100644
--- ORI/eslint-plugin-vue/eslint-internal-rules/require-meta-docs-url.js
+++ ALT/eslint-plugin-vue/eslint-internal-rules/require-meta-docs-url.js
@@ -68,64 +68,65 @@ function getRuleInfo(ast) {
   let exportsVarOverridden = false
   let exportsIsFunction = false
 
-  const exportNodes = ast.body
-    .filter((statement) => statement.type === 'ExpressionStatement')
-    .map((statement) => statement.expression)
-    .filter((expression) => expression.type === 'AssignmentExpression')
-    .filter((expression) => expression.left.type === 'MemberExpression')
-    .reduce((currentExports, node) => {
-      if (
-        node.left.object.type === 'Identifier' &&
-        node.left.object.name === 'module' &&
-        node.left.property.type === 'Identifier' &&
-        node.left.property.name === 'exports'
-      ) {
-        exportsVarOverridden = true
+  const exportNodes =
+    ast.body
+      .filter((statement) => statement.type === 'ExpressionStatement')
+      .map((statement) => statement.expression)
+      .filter((expression) => expression.type === 'AssignmentExpression')
+      .filter((expression) => expression.left.type === 'MemberExpression')
+      .reduce((currentExports, node) => {
+        if (
+          node.left.object.type === 'Identifier' &&
+          node.left.object.name === 'module' &&
+          node.left.property.type === 'Identifier' &&
+          node.left.property.name === 'exports'
+        ) {
+          exportsVarOverridden = true
 
-        if (isNormalFunctionExpression(node.right)) {
-          // Check `module.exports = function () {}`
+          if (isNormalFunctionExpression(node.right)) {
+            // Check `module.exports = function () {}`
 
-          exportsIsFunction = true
-          return { create: node.right, meta: null }
-        } else if (node.right.type === 'ObjectExpression') {
-          // Check `module.exports = { create: function () {}, meta: {} }`
+            exportsIsFunction = true
+            return { create: node.right, meta: null }
+          } else if (node.right.type === 'ObjectExpression') {
+            // Check `module.exports = { create: function () {}, meta: {} }`
 
-          exportsIsFunction = false
-          return node.right.properties.reduce((parsedProps, prop) => {
-            const keyValue = getKeyName(prop)
-            if (INTERESTING_KEYS.has(keyValue)) {
-              parsedProps[keyValue] = prop.value
-            }
-            return parsedProps
-          }, {})
-        }
-        return {}
-      } else if (
-        !exportsIsFunction &&
-        node.left.object.type === 'MemberExpression' &&
-        node.left.object.object.type === 'Identifier' &&
-        node.left.object.object.name === 'module' &&
-        node.left.object.property.type === 'Identifier' &&
-        node.left.object.property.name === 'exports' &&
-        node.left.property.type === 'Identifier' &&
-        INTERESTING_KEYS.has(node.left.property.name)
-      ) {
-        // Check `module.exports.create = () => {}`
+            exportsIsFunction = false
+            return node.right.properties.reduce((parsedProps, prop) => {
+              const keyValue = getKeyName(prop)
+              if (INTERESTING_KEYS.has(keyValue)) {
+                parsedProps[keyValue] = prop.value
+              }
+              return parsedProps
+            }, {})
+          }
+          return {}
+        } else if (
+          !exportsIsFunction &&
+          node.left.object.type === 'MemberExpression' &&
+          node.left.object.object.type === 'Identifier' &&
+          node.left.object.object.name === 'module' &&
+          node.left.object.property.type === 'Identifier' &&
+          node.left.object.property.name === 'exports' &&
+          node.left.property.type === 'Identifier' &&
+          INTERESTING_KEYS.has(node.left.property.name)
+        ) {
+          // Check `module.exports.create = () => {}`
 
-        currentExports[node.left.property.name] = node.right
-      } else if (
-        !exportsVarOverridden &&
-        node.left.object.type === 'Identifier' &&
-        node.left.object.name === 'exports' &&
-        node.left.property.type === 'Identifier' &&
-        INTERESTING_KEYS.has(node.left.property.name)
-      ) {
-        // Check `exports.create = () => {}`
+          currentExports[node.left.property.name] = node.right
+        } else if (
+          !exportsVarOverridden &&
+          node.left.object.type === 'Identifier' &&
+          node.left.object.name === 'exports' &&
+          node.left.property.type === 'Identifier' &&
+          INTERESTING_KEYS.has(node.left.property.name)
+        ) {
+          // Check `exports.create = () => {}`
 
-        currentExports[node.left.property.name] = node.right
-      }
-      return currentExports
-    }, {})
+          currentExports[node.left.property.name] = node.right
+        }
+        return currentExports
+      }, {})
 
   return Object.prototype.hasOwnProperty.call(exportNodes, 'create')
     ? Object.assign({ isNewStyle: !exportsIsFunction, meta: null }, exportNodes)
diff --git ORI/eslint-plugin-vue/lib/rules/experimental-script-setup-vars.js ALT/eslint-plugin-vue/lib/rules/experimental-script-setup-vars.js
index d215a27..b303b40 100644
--- ORI/eslint-plugin-vue/lib/rules/experimental-script-setup-vars.js
+++ ALT/eslint-plugin-vue/lib/rules/experimental-script-setup-vars.js
@@ -38,14 +38,15 @@ module.exports = {
       return {}
     }
     const sourceCode = context.getSourceCode()
-    const scriptElement = documentFragment.children
-      .filter(utils.isVElement)
-      .find(
-        (element) =>
-          element.name === 'script' &&
-          element.range[0] <= sourceCode.ast.range[0] &&
-          sourceCode.ast.range[1] <= element.range[1]
-      )
+    const scriptElement =
+      documentFragment.children
+        .filter(utils.isVElement)
+        .find(
+          (element) =>
+            element.name === 'script' &&
+            element.range[0] <= sourceCode.ast.range[0] &&
+            sourceCode.ast.range[1] <= element.range[1]
+        )
     if (!scriptElement) {
       return {}
     }
diff --git ORI/eslint-plugin-vue/lib/rules/no-deprecated-v-bind-sync.js ALT/eslint-plugin-vue/lib/rules/no-deprecated-v-bind-sync.js
index 786ecb9..eef0741 100644
--- ORI/eslint-plugin-vue/lib/rules/no-deprecated-v-bind-sync.js
+++ ALT/eslint-plugin-vue/lib/rules/no-deprecated-v-bind-sync.js
@@ -49,9 +49,10 @@ module.exports = {
                 return null
               }
 
-              const bindArgument = context
-                .getSourceCode()
-                .getText(node.key.argument)
+              const bindArgument =
+                context
+                  .getSourceCode()
+                  .getText(node.key.argument)
               return fixer.replaceText(node.key, `v-model:${bindArgument}`)
             }
           })
diff --git ORI/eslint-plugin-vue/lib/rules/no-potential-component-option-typo.js ALT/eslint-plugin-vue/lib/rules/no-potential-component-option-typo.js
index f3ac473..8b578ab 100644
--- ORI/eslint-plugin-vue/lib/rules/no-potential-component-option-typo.js
+++ ALT/eslint-plugin-vue/lib/rules/no-potential-component-option-typo.js
@@ -75,20 +75,21 @@ module.exports = {
       return {}
     }
     return utils.executeOnVue(context, (obj) => {
-      const componentInstanceOptions = obj.properties
-        .map((p) => {
-          if (p.type === 'Property') {
-            const name = utils.getStaticPropertyName(p)
-            if (name != null) {
-              return {
-                name,
-                key: p.key
+      const componentInstanceOptions =
+        obj.properties
+          .map((p) => {
+            if (p.type === 'Property') {
+              const name = utils.getStaticPropertyName(p)
+              if (name != null) {
+                return {
+                  name,
+                  key: p.key
+                }
               }
             }
-          }
-          return null
-        })
-        .filter(utils.isDef)
+            return null
+          })
+          .filter(utils.isDef)
 
       if (!componentInstanceOptions.length) {
         return
@@ -99,10 +100,11 @@ module.exports = {
         if (candidateOptionSet.has(name)) {
           return
         }
-        const potentialTypoList = candidateOptionList
-          .map((o) => ({ option: o, distance: utils.editDistance(o, name) }))
-          .filter(({ distance }) => distance <= threshold && distance > 0)
-          .sort((a, b) => a.distance - b.distance)
+        const potentialTypoList =
+          candidateOptionList
+            .map((o) => ({ option: o, distance: utils.editDistance(o, name) }))
+            .filter(({ distance }) => distance <= threshold && distance > 0)
+            .sort((a, b) => a.distance - b.distance)
         if (potentialTypoList.length) {
           context.report({
             node: id,
diff --git ORI/eslint-plugin-vue/lib/rules/no-unregistered-components.js ALT/eslint-plugin-vue/lib/rules/no-unregistered-components.js
index 6e6cb2a..5a3f29f 100644
--- ORI/eslint-plugin-vue/lib/rules/no-unregistered-components.js
+++ ALT/eslint-plugin-vue/lib/rules/no-unregistered-components.js
@@ -133,9 +133,10 @@ module.exports = {
           )
 
           // All registered components using kebab-case syntax
-          const componentsRegisteredAsKebabCase = registeredComponents
-            .filter(({ name }) => name === casing.kebabCase(name))
-            .map(({ name }) => name)
+          const componentsRegisteredAsKebabCase =
+            registeredComponents
+              .filter(({ name }) => name === casing.kebabCase(name))
+              .map(({ name }) => name)
 
           usedComponentNodes
             .filter(({ name }) => {
diff --git ORI/eslint-plugin-vue/lib/rules/no-useless-mustaches.js ALT/eslint-plugin-vue/lib/rules/no-useless-mustaches.js
index 709617e..9021628 100644
--- ORI/eslint-plugin-vue/lib/rules/no-useless-mustaches.js
+++ ALT/eslint-plugin-vue/lib/rules/no-useless-mustaches.js
@@ -93,9 +93,10 @@ module.exports = {
       }
 
       const tokenStore = context.parserServices.getTemplateBodyTokenStore()
-      const hasComment = tokenStore
-        .getTokens(node, { includeComments: true })
-        .some((t) => t.type === 'Block' || t.type === 'Line')
+      const hasComment =
+        tokenStore
+          .getTokens(node, { includeComments: true })
+          .some((t) => t.type === 'Block' || t.type === 'Line')
       if (ignoreIncludesComment && hasComment) {
         return
       }
diff --git ORI/eslint-plugin-vue/lib/rules/no-useless-v-bind.js ALT/eslint-plugin-vue/lib/rules/no-useless-v-bind.js
index c2440da..fd934d7 100644
--- ORI/eslint-plugin-vue/lib/rules/no-useless-v-bind.js
+++ ALT/eslint-plugin-vue/lib/rules/no-useless-v-bind.js
@@ -76,9 +76,10 @@ module.exports = {
       }
 
       const tokenStore = context.parserServices.getTemplateBodyTokenStore()
-      const hasComment = tokenStore
-        .getTokens(value, { includeComments: true })
-        .some((t) => t.type === 'Block' || t.type === 'Line')
+      const hasComment =
+        tokenStore
+          .getTokens(value, { includeComments: true })
+          .some((t) => t.type === 'Block' || t.type === 'Line')
       if (ignoreIncludesComment && hasComment) {
         return
       }
@@ -134,9 +135,10 @@ module.exports = {
           } else if (quoteChar === "'") {
             attrValue = strValue.replace(SINGLE_QUOTES_RE, '&apos;')
           } else {
-            attrValue = strValue
-              .replace(DOUBLE_QUOTES_RE, '&quot;')
-              .replace(SINGLE_QUOTES_RE, '&apos;')
+            attrValue =
+              strValue
+                .replace(DOUBLE_QUOTES_RE, '&quot;')
+                .replace(SINGLE_QUOTES_RE, '&apos;')
           }
           yield fixer.replaceText(expression, attrValue)
         }
diff --git ORI/eslint-plugin-vue/lib/rules/order-in-components.js ALT/eslint-plugin-vue/lib/rules/order-in-components.js
index 5f33734..0681c85 100644
--- ORI/eslint-plugin-vue/lib/rules/order-in-components.js
+++ ALT/eslint-plugin-vue/lib/rules/order-in-components.js
@@ -271,13 +271,14 @@ module.exports = {
           return
         }
         const propertiesAbove = properties.slice(0, i)
-        const unorderedProperties = propertiesAbove
-          .filter(
-            (p) => getOrderPosition(p.name) > getOrderPosition(property.name)
-          )
-          .sort((p1, p2) =>
-            getOrderPosition(p1.name) > getOrderPosition(p2.name) ? 1 : -1
-          )
+        const unorderedProperties =
+          propertiesAbove
+            .filter(
+              (p) => getOrderPosition(p.name) > getOrderPosition(property.name)
+            )
+            .sort((p1, p2) =>
+              getOrderPosition(p1.name) > getOrderPosition(p2.name) ? 1 : -1
+            )
 
         const firstUnorderedProperty = unorderedProperties[0]
 
@@ -294,15 +295,16 @@ module.exports = {
             *fix(fixer) {
               const propertyNode = property.node
               const firstUnorderedPropertyNode = firstUnorderedProperty.node
-              const hasSideEffectsPossibility = propertiesNodes
-                .slice(
-                  propertiesNodes.indexOf(firstUnorderedPropertyNode),
-                  propertiesNodes.indexOf(propertyNode) + 1
-                )
-                .some(
-                  (property) =>
-                    !isNotSideEffectsNode(property, sourceCode.visitorKeys)
-                )
+              const hasSideEffectsPossibility =
+                propertiesNodes
+                  .slice(
+                    propertiesNodes.indexOf(firstUnorderedPropertyNode),
+                    propertiesNodes.indexOf(propertyNode) + 1
+                  )
+                  .some(
+                    (property) =>
+                      !isNotSideEffectsNode(property, sourceCode.visitorKeys)
+                  )
               if (hasSideEffectsPossibility) {
                 return
               }
diff --git ORI/eslint-plugin-vue/lib/rules/require-default-prop.js ALT/eslint-plugin-vue/lib/rules/require-default-prop.js
index e0e29b6..cb70b3e 100644
--- ORI/eslint-plugin-vue/lib/rules/require-default-prop.js
+++ ALT/eslint-plugin-vue/lib/rules/require-default-prop.js
@@ -158,13 +158,14 @@ module.exports = {
     // ----------------------------------------------------------------------
 
     return utils.executeOnVue(context, (obj) => {
-      const props = utils
-        .getComponentProps(obj)
-        .filter(
-          (prop) =>
-            prop.value &&
-            !(prop.node.type === 'Property' && prop.node.shorthand)
-        )
+      const props =
+        utils
+          .getComponentProps(obj)
+          .filter(
+            (prop) =>
+              prop.value &&
+              !(prop.node.type === 'Property' && prop.node.shorthand)
+          )
 
       const propsWithoutDefault = findPropsWithoutDefaultValue(
         /** @type {ComponentObjectProp[]} */ (props)
diff --git ORI/eslint-plugin-vue/lib/utils/indent-common.js ALT/eslint-plugin-vue/lib/utils/indent-common.js
index c4818b4..b947776 100644
--- ORI/eslint-plugin-vue/lib/utils/indent-common.js
+++ ALT/eslint-plugin-vue/lib/utils/indent-common.js
@@ -1878,12 +1878,14 @@ module.exports.defineVisitor = function create(
     /** @param {TemplateLiteral} node */
     TemplateLiteral(node) {
       const firstToken = tokenStore.getFirstToken(node)
-      const quasiTokens = node.quasis
-        .slice(1)
-        .map((n) => tokenStore.getFirstToken(n))
-      const expressionToken = node.quasis
-        .slice(0, -1)
-        .map((n) => tokenStore.getTokenAfter(n))
+      const quasiTokens =
+        node.quasis
+          .slice(1)
+          .map((n) => tokenStore.getFirstToken(n))
+      const expressionToken =
+        node.quasis
+          .slice(0, -1)
+          .map((n) => tokenStore.getTokenAfter(n))
 
       setOffset(quasiTokens, 0, firstToken)
       setOffset(expressionToken, 1, firstToken)
diff --git ORI/eslint-plugin-vue/lib/utils/index.js ALT/eslint-plugin-vue/lib/utils/index.js
index 055ffb4..5e8d004 100644
--- ORI/eslint-plugin-vue/lib/utils/index.js
+++ ALT/eslint-plugin-vue/lib/utils/index.js
@@ -2033,9 +2033,10 @@ function getComponentComments(context) {
     return tokens
   }
   const sourceCode = context.getSourceCode()
-  tokens = sourceCode
-    .getAllComments()
-    .filter((comment) => /@vue\/component/g.test(comment.value))
+  tokens =
+    sourceCode
+      .getAllComments()
+      .filter((comment) => /@vue\/component/g.test(comment.value))
   componentComments.set(context, tokens)
   return tokens
 }
diff --git ORI/eslint-plugin-vue/tests/lib/rules/html-indent.js ALT/eslint-plugin-vue/tests/lib/rules/html-indent.js
index 316eb92..5f705b8 100644
--- ORI/eslint-plugin-vue/tests/lib/rules/html-indent.js
+++ ALT/eslint-plugin-vue/tests/lib/rules/html-indent.js
@@ -50,36 +50,41 @@ function loadPatterns(additionalValid, additionalInvalid) {
     }
     return Object.assign(baseObj, { code, filename })
   })
-  const invalid = valid
-    .map((pattern) => {
-      const kind =
-        (pattern.options && pattern.options[0]) === 'tab' ? 'tab' : 'space'
-      const output = pattern.code
-      const lines = output.split('\n').map((text, number) => ({
-        number,
-        text,
-        indentSize: (/^[ \t]+/.exec(text) || [''])[0].length
-      }))
-      const code = lines
-        .map((line) => line.text.replace(/^[ \t]+/, ''))
-        .join('\n')
-      const errors = lines
-        .map((line) =>
-          line.indentSize === 0
-            ? null
-            : {
-                message: `Expected indentation of ${line.indentSize} ${kind}${
-                  line.indentSize === 1 ? '' : 's'
-                } but found 0 ${kind}s.`,
-                line: line.number + 1
-              }
-        )
-        .filter(Boolean)
+  const invalid =
+    valid
+      .map((pattern) => {
+        const kind =
+          (pattern.options && pattern.options[0]) === 'tab' ? 'tab' : 'space'
+        const output = pattern.code
+        const lines = output.split('\n').map((text, number) => ({
+          number,
+          text,
+          indentSize: (/^[ \t]+/.exec(text) || [''])[0].length
+        }))
+        const code =
+          lines
+            .map((line) => line.text.replace(/^[ \t]+/, ''))
+            .join('\n')
+        const errors =
+          lines
+            .map((line) =>
+              line.indentSize === 0
+                ? null
+                : {
+                    message: `Expected indentation of ${
+                      line.indentSize
+                    } ${kind}${
+                      line.indentSize === 1 ? '' : 's'
+                    } but found 0 ${kind}s.`,
+                    line: line.number + 1
+                  }
+            )
+            .filter(Boolean)
 
-      return Object.assign({}, pattern, { code, output, errors })
-    })
-    .filter((invalid) => invalid.errors.length > 0) // Empty errors cannot be verified with eslint 7.3.
-    .filter(Boolean)
+        return Object.assign({}, pattern, { code, output, errors })
+      })
+      .filter((invalid) => invalid.errors.length > 0) // Empty errors cannot be verified with eslint 7.3.
+      .filter(Boolean)
 
   return {
     valid: valid.concat(additionalValid),
@@ -94,13 +99,15 @@ function loadPatterns(additionalValid, additionalInvalid) {
  */
 function unIndent(strings) {
   const templateValue = strings[0]
-  const lines = templateValue
-    .replace(/^\n/, '')
-    .replace(/\n\s*$/, '')
-    .split('\n')
-  const lineIndents = lines
-    .filter((line) => line.trim())
-    .map((line) => line.match(/ */)[0].length)
+  const lines =
+    templateValue
+      .replace(/^\n/, '')
+      .replace(/\n\s*$/, '')
+      .split('\n')
+  const lineIndents =
+    lines
+      .filter((line) => line.trim())
+      .map((line) => line.match(/ */)[0].length)
   const minLineIndent = Math.min.apply(null, lineIndents)
 
   return lines.map((line) => line.slice(minLineIndent)).join('\n')
diff --git ORI/eslint-plugin-vue/tests/lib/rules/script-indent.js ALT/eslint-plugin-vue/tests/lib/rules/script-indent.js
index 865e731..cbe90f2 100644
--- ORI/eslint-plugin-vue/tests/lib/rules/script-indent.js
+++ ALT/eslint-plugin-vue/tests/lib/rules/script-indent.js
@@ -51,36 +51,41 @@ function loadPatterns(additionalValid, additionalInvalid) {
     }
     return Object.assign(baseObj, { code, filename })
   })
-  const invalid = valid
-    .map((pattern) => {
-      const kind =
-        (pattern.options && pattern.options[0]) === 'tab' ? 'tab' : 'space'
-      const output = pattern.code
-      const lines = output.split('\n').map((text, number) => ({
-        number,
-        text,
-        indentSize: (/^[ \t]+/.exec(text) || [''])[0].length
-      }))
-      const code = lines
-        .map((line) => line.text.replace(/^[ \t]+/, ''))
-        .join('\n')
-      const errors = lines
-        .map((line) =>
-          line.indentSize === 0
-            ? null
-            : {
-                message: `Expected indentation of ${line.indentSize} ${kind}${
-                  line.indentSize === 1 ? '' : 's'
-                } but found 0 ${kind}s.`,
-                line: line.number + 1
-              }
-        )
-        .filter(Boolean)
+  const invalid =
+    valid
+      .map((pattern) => {
+        const kind =
+          (pattern.options && pattern.options[0]) === 'tab' ? 'tab' : 'space'
+        const output = pattern.code
+        const lines = output.split('\n').map((text, number) => ({
+          number,
+          text,
+          indentSize: (/^[ \t]+/.exec(text) || [''])[0].length
+        }))
+        const code =
+          lines
+            .map((line) => line.text.replace(/^[ \t]+/, ''))
+            .join('\n')
+        const errors =
+          lines
+            .map((line) =>
+              line.indentSize === 0
+                ? null
+                : {
+                    message: `Expected indentation of ${
+                      line.indentSize
+                    } ${kind}${
+                      line.indentSize === 1 ? '' : 's'
+                    } but found 0 ${kind}s.`,
+                    line: line.number + 1
+                  }
+            )
+            .filter(Boolean)
 
-      return Object.assign({}, pattern, { code, output, errors })
-    })
-    .filter((invalid) => invalid.errors.length > 0) // Empty errors cannot be verified with eslint 7.3.
-    .filter(Boolean)
+        return Object.assign({}, pattern, { code, output, errors })
+      })
+      .filter((invalid) => invalid.errors.length > 0) // Empty errors cannot be verified with eslint 7.3.
+      .filter(Boolean)
 
   return {
     valid: valid.concat(additionalValid),
@@ -95,13 +100,15 @@ function loadPatterns(additionalValid, additionalInvalid) {
  */
 function unIndent(strings) {
   const templateValue = strings[0]
-  const lines = templateValue
-    .replace(/^\n/, '')
-    .replace(/\n\s*$/, '')
-    .split('\n')
-  const lineIndents = lines
-    .filter((line) => line.trim())
-    .map((line) => line.match(/ */)[0].length)
+  const lines =
+    templateValue
+      .replace(/^\n/, '')
+      .replace(/\n\s*$/, '')
+      .split('\n')
+  const lineIndents =
+    lines
+      .filter((line) => line.trim())
+      .map((line) => line.match(/ */)[0].length)
   const minLineIndent = Math.min.apply(null, lineIndents)
 
   return lines.map((line) => line.slice(minLineIndent)).join('\n')
diff --git ORI/eslint-plugin-vue/tests/lib/rules/this-in-template.js ALT/eslint-plugin-vue/tests/lib/rules/this-in-template.js
index 5f36b57..00b174a 100644
--- ORI/eslint-plugin-vue/tests/lib/rules/this-in-template.js
+++ ALT/eslint-plugin-vue/tests/lib/rules/this-in-template.js
@@ -185,41 +185,43 @@ function createInvalidTests(prefix, options, message, type) {
 }
 
 ruleTester.run('this-in-template', rule, {
-  valid: ['', '<template></template>', '<template><div></div></template>']
-    .concat(createValidTests('', []))
-    .concat(createValidTests('', ['never']))
-    .concat(createValidTests('this.', ['always']))
-    .concat(createValidTests('this?.', ['always'])),
-  invalid: []
-    .concat(
-      createInvalidTests(
-        'this.',
-        [],
-        "Unexpected usage of 'this'.",
-        'ThisExpression'
-      ),
-      createInvalidTests(
-        'this?.',
-        [],
-        "Unexpected usage of 'this'.",
-        'ThisExpression'
+  valid:
+    ['', '<template></template>', '<template><div></div></template>']
+      .concat(createValidTests('', []))
+      .concat(createValidTests('', ['never']))
+      .concat(createValidTests('this.', ['always']))
+      .concat(createValidTests('this?.', ['always'])),
+  invalid:
+    []
+      .concat(
+        createInvalidTests(
+          'this.',
+          [],
+          "Unexpected usage of 'this'.",
+          'ThisExpression'
+        ),
+        createInvalidTests(
+          'this?.',
+          [],
+          "Unexpected usage of 'this'.",
+          'ThisExpression'
+        )
       )
-    )
-    .concat(
-      createInvalidTests(
-        'this.',
-        ['never'],
-        "Unexpected usage of 'this'.",
-        'ThisExpression'
-      ),
-      createInvalidTests(
-        'this?.',
-        ['never'],
-        "Unexpected usage of 'this'.",
-        'ThisExpression'
+      .concat(
+        createInvalidTests(
+          'this.',
+          ['never'],
+          "Unexpected usage of 'this'.",
+          'ThisExpression'
+        ),
+        createInvalidTests(
+          'this?.',
+          ['never'],
+          "Unexpected usage of 'this'.",
+          'ThisExpression'
+        )
+      )
+      .concat(
+        createInvalidTests('', ['always'], "Expected 'this'.", 'Identifier')
       )
-    )
-    .concat(
-      createInvalidTests('', ['always'], "Expected 'this'.", 'Identifier')
-    )
 })
diff --git ORI/eslint-plugin-vue/tests/lib/utils/vue-component.js ALT/eslint-plugin-vue/tests/lib/utils/vue-component.js
index 91da3d2..0845ea4 100644
--- ORI/eslint-plugin-vue/tests/lib/utils/vue-component.js
+++ ALT/eslint-plugin-vue/tests/lib/utils/vue-component.js
@@ -327,31 +327,33 @@ function invalidTests(ext) {
 
 const ruleTester = new RuleTester()
 ruleTester.run('vue-component', rule, {
-  valid: [
-    {
-      filename: 'test.js',
-      code: `export default { }`,
-      parserOptions
-    }
-  ]
-    .concat(validTests('js'))
-    .concat(validTests('jsx'))
-    .concat(validTests('vue')),
-  invalid: [
-    {
-      filename: 'test.vue',
-      code: `export default { }`,
-      parserOptions,
-      errors: [makeError(1)]
-    },
-    {
-      filename: 'test.jsx',
-      code: `export default { }`,
-      parserOptions,
-      errors: [makeError(1)]
-    }
-  ]
-    .concat(invalidTests('js'))
-    .concat(invalidTests('jsx'))
-    .concat(invalidTests('vue'))
+  valid:
+    [
+      {
+        filename: 'test.js',
+        code: `export default { }`,
+        parserOptions
+      }
+    ]
+      .concat(validTests('js'))
+      .concat(validTests('jsx'))
+      .concat(validTests('vue')),
+  invalid:
+    [
+      {
+        filename: 'test.vue',
+        code: `export default { }`,
+        parserOptions,
+        errors: [makeError(1)]
+      },
+      {
+        filename: 'test.jsx',
+        code: `export default { }`,
+        parserOptions,
+        errors: [makeError(1)]
+      }
+    ]
+      .concat(invalidTests('js'))
+      .concat(invalidTests('jsx'))
+      .concat(invalidTests('vue'))
 })
diff --git ORI/eslint-plugin-vue/tools/lib/categories.js ALT/eslint-plugin-vue/tools/lib/categories.js
index 9f7fd79..6f96b6f 100644
--- ORI/eslint-plugin-vue/tools/lib/categories.js
+++ ALT/eslint-plugin-vue/tools/lib/categories.js
@@ -75,12 +75,13 @@ for (const rule of rules) {
   }
 }
 
-module.exports = categoryIds
-  .map((categoryId) => ({
-    categoryId,
-    title: categoryTitles[categoryId],
-    rules: (categoryRules[categoryId] || []).filter(
-      (rule) => !rule.meta.deprecated
-    )
-  }))
-  .filter((category) => category.rules.length >= 1)
+module.exports =
+  categoryIds
+    .map((categoryId) => ({
+      categoryId,
+      title: categoryTitles[categoryId],
+      rules: (categoryRules[categoryId] || []).filter(
+        (rule) => !rule.meta.deprecated
+      )
+    }))
+    .filter((category) => category.rules.length >= 1)
diff --git ORI/eslint-plugin-vue/tools/lib/configs.js ALT/eslint-plugin-vue/tools/lib/configs.js
index 031f41e..14cc8c5 100644
--- ORI/eslint-plugin-vue/tools/lib/configs.js
+++ ALT/eslint-plugin-vue/tools/lib/configs.js
@@ -9,7 +9,8 @@ const fs = require('fs')
 const path = require('path')
 const ROOT = path.resolve(__dirname, '../../lib/configs')
 
-module.exports = fs
-  .readdirSync(ROOT)
-  .filter((file) => path.extname(file) === '.js')
-  .map((file) => path.basename(file, '.js'))
+module.exports =
+  fs
+    .readdirSync(ROOT)
+    .filter((file) => path.extname(file) === '.js')
+    .map((file) => path.basename(file, '.js'))
diff --git ORI/eslint-plugin-vue/tools/lib/rules.js ALT/eslint-plugin-vue/tools/lib/rules.js
index 745c635..27f4be5 100644
--- ORI/eslint-plugin-vue/tools/lib/rules.js
+++ ALT/eslint-plugin-vue/tools/lib/rules.js
@@ -9,20 +9,21 @@ const fs = require('fs')
 const path = require('path')
 const ROOT = path.resolve(__dirname, '../../lib/rules')
 
-module.exports = fs
-  .readdirSync(ROOT)
-  .filter((file) => path.extname(file) === '.js')
-  .map((file) => path.basename(file, '.js'))
-  .map((name) => {
-    const meta = { ...require(path.join(ROOT, name)).meta }
-    if (meta.docs && !meta.docs.categories && meta.docs.category) {
-      // for vue3 migration
-      meta.docs = { ...meta.docs }
-      meta.docs.categories = [meta.docs.category]
-    }
-    return {
-      ruleId: `vue/${name}`,
-      name,
-      meta
-    }
-  })
+module.exports =
+  fs
+    .readdirSync(ROOT)
+    .filter((file) => path.extname(file) === '.js')
+    .map((file) => path.basename(file, '.js'))
+    .map((name) => {
+      const meta = { ...require(path.join(ROOT, name)).meta }
+      if (meta.docs && !meta.docs.categories && meta.docs.category) {
+        // for vue3 migration
+        meta.docs = { ...meta.docs }
+        meta.docs.categories = [meta.docs.category]
+      }
+      return {
+        ruleId: `vue/${name}`,
+        name,
+        meta
+      }
+    })
diff --git ORI/eslint-plugin-vue/tools/update-docs-rules-index.js ALT/eslint-plugin-vue/tools/update-docs-rules-index.js
index 6e9c0f0..cf7d66e 100644
--- ORI/eslint-plugin-vue/tools/update-docs-rules-index.js
+++ ALT/eslint-plugin-vue/tools/update-docs-rules-index.js
@@ -37,17 +37,19 @@ function toRuleRow(rule) {
 function toDeprecatedRuleRow(rule) {
   const link = `[${rule.ruleId}](./${rule.name}.md)`
   const replacedRules = rule.meta.docs.replacedBy || []
-  const replacedBy = replacedRules
-    .map((name) => `[vue/${name}](./${name}.md)`)
-    .join(', ')
+  const replacedBy =
+    replacedRules
+      .map((name) => `[vue/${name}](./${name}.md)`)
+      .join(', ')
 
   return `| ${link} | ${replacedBy || '(no replacement)'} |`
 }
 
 // -----------------------------------------------------------------------------
-let rulesTableContent = categories
-  .map(
-    (category) => `
+let rulesTableContent =
+  categories
+    .map(
+      (category) => `
 ## ${category.title.vuepress}
 
 Enforce all the rules in this category, as well as all higher priority rules, with:
@@ -62,8 +64,8 @@ Enforce all the rules in this category, as well as all higher priority rules, wi
 |:--------|:------------|:---|
 ${category.rules.map(toRuleRow).join('\n')}
 `
-  )
-  .join('')
+    )
+    .join('')
 
 // -----------------------------------------------------------------------------
 if (uncategorizedRules.length || uncategorizedExtensionRule.length) {

diff --git ORI/prettier/scripts/build/cache.js ALT/prettier/scripts/build/cache.js
index 8f7b5c961..5a40389b6 100644
--- ORI/prettier/scripts/build/cache.js
+++ ALT/prettier/scripts/build/cache.js
@@ -67,9 +67,10 @@ class Cache {
     const bundle = await rollup(getRollupConfig(inputOptions));
     const { output } = await bundle.generate(outputOptions);
 
-    const modules = output
-      .filter((mod) => !/\0/.test(mod.facadeModuleId))
-      .map((mod) => [path.relative(ROOT, mod.facadeModuleId), mod.code]);
+    const modules =
+      output
+        .filter((mod) => !/\0/.test(mod.facadeModuleId))
+        .map((mod) => [path.relative(ROOT, mod.facadeModuleId), mod.code]);
 
     for (const [id, code] of modules) {
       newFiles.push(id);
diff --git ORI/prettier/scripts/draft-blog-post.js ALT/prettier/scripts/draft-blog-post.js
index eca419567..06997825b 100644
--- ORI/prettier/scripts/draft-blog-post.js
+++ ALT/prettier/scripts/draft-blog-post.js
@@ -51,9 +51,10 @@ const categoriesByDir = categories.reduce((result, category) => {
   return result;
 }, {});
 
-const dirs = fs
-  .readdirSync(changelogUnreleasedDir, { withFileTypes: true })
-  .filter((entry) => entry.isDirectory());
+const dirs =
+  fs
+    .readdirSync(changelogUnreleasedDir, { withFileTypes: true })
+    .filter((entry) => entry.isDirectory());
 
 for (const dir of dirs) {
   const dirPath = path.join(changelogUnreleasedDir, dir.name);
@@ -63,20 +64,22 @@ for (const dir of dirs) {
     throw new Error("Unknown category: " + dir.name);
   }
 
-  category.entries = fs
-    .readdirSync(dirPath)
-    .filter((fileName) => /^\d+\.md$/.test(fileName))
-    .map((fileName) => {
-      const [title, ...rest] = fs
-        .readFileSync(path.join(dirPath, fileName), "utf8")
-        .trim()
-        .split("\n");
-      return {
-        breaking: title.includes("[BREAKING]"),
-        highlight: title.includes("[HIGHLIGHT]"),
-        content: [processTitle(title), ...rest].join("\n"),
-      };
-    });
+  category.entries =
+    fs
+      .readdirSync(dirPath)
+      .filter((fileName) => /^\d+\.md$/.test(fileName))
+      .map((fileName) => {
+        const [title, ...rest] =
+          fs
+            .readFileSync(path.join(dirPath, fileName), "utf8")
+            .trim()
+            .split("\n");
+        return {
+          breaking: title.includes("[BREAKING]"),
+          highlight: title.includes("[HIGHLIGHT]"),
+          content: [processTitle(title), ...rest].join("\n"),
+        };
+      });
 }
 
 rimraf.sync(postGlob);
diff --git ORI/prettier/scripts/release/release.js ALT/prettier/scripts/release/release.js
index f063191be..feacf9a1a 100644
--- ORI/prettier/scripts/release/release.js
+++ ALT/prettier/scripts/release/release.js
@@ -18,9 +18,10 @@ async function run() {
     alias: { v: "version" },
   });
 
-  const previousVersion = execSync("git describe --tags --abbrev=0")
-    .toString()
-    .trim();
+  const previousVersion =
+    execSync("git describe --tags --abbrev=0")
+      .toString()
+      .trim();
 
   if (semver.parse(previousVersion) === null) {
     throw new Error(`Unexpected previousVersion: ${previousVersion}`);
diff --git ORI/prettier/src/cli/expand-patterns.js ALT/prettier/src/cli/expand-patterns.js
index b840ce723..f130df44d 100644
--- ORI/prettier/src/cli/expand-patterns.js
+++ ALT/prettier/src/cli/expand-patterns.js
@@ -55,9 +55,10 @@ function* expandPatternsInternal(context) {
 
   const globOptions = {
     dot: true,
-    ignore: Object.entries(silentlyIgnoredDirs)
-      .filter(([, ignored]) => ignored)
-      .map(([dir]) => "**/" + dir),
+    ignore:
+      Object.entries(silentlyIgnoredDirs)
+        .filter(([, ignored]) => ignored)
+        .map(([dir]) => "**/" + dir),
   };
 
   let supportedFilesGlob;
diff --git ORI/prettier/src/cli/usage.js ALT/prettier/src/cli/usage.js
index 2685b3bc6..3ce552a82 100644
--- ORI/prettier/src/cli/usage.js
+++ ALT/prettier/src/cli/usage.js
@@ -140,11 +140,12 @@ function createUsage(context) {
   ];
 
   const optionsUsage = allCategories.map((category) => {
-    const categoryOptions = groupedOptions[category]
-      .map((option) =>
-        createOptionUsage(context, option, OPTION_USAGE_THRESHOLD)
-      )
-      .join("\n");
+    const categoryOptions =
+      groupedOptions[category]
+        .map((option) =>
+          createOptionUsage(context, option, OPTION_USAGE_THRESHOLD)
+        )
+        .join("\n");
     return `${category} options:\n\n${indent(categoryOptions, 2)}`;
   });
 
diff --git ORI/prettier/src/document/doc-printer.js ALT/prettier/src/document/doc-printer.js
index 5e2558f1a..3769f4f1a 100644
--- ORI/prettier/src/document/doc-printer.js
+++ ALT/prettier/src/document/doc-printer.js
@@ -546,9 +546,10 @@ function printDocToString(doc, options) {
       cursorPlaceholderIndex + 1
     );
     const beforeCursor = out.slice(0, cursorPlaceholderIndex).join("");
-    const aroundCursor = out
-      .slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex)
-      .join("");
+    const aroundCursor =
+      out
+        .slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex)
+        .join("");
     const afterCursor = out.slice(otherCursorPlaceholderIndex + 1).join("");
 
     return {
diff --git ORI/prettier/src/language-handlebars/printer-glimmer.js ALT/prettier/src/language-handlebars/printer-glimmer.js
index fccfa2dea..e0d17fde6 100644
--- ORI/prettier/src/language-handlebars/printer-glimmer.js
+++ ALT/prettier/src/language-handlebars/printer-glimmer.js
@@ -406,14 +406,15 @@ function print(path, options, print) {
 function printStartingTag(path, print) {
   const node = path.getValue();
 
-  const attributesLike = ["attributes", "modifiers", "comments", "blockParams"]
-    .filter((property) => isNonEmptyArray(node[property]))
-    .map((property) => [
-      line,
-      property === "blockParams"
-        ? printBlockParams(node)
-        : join(line, path.map(print, property)),
-    ]);
+  const attributesLike =
+    ["attributes", "modifiers", "comments", "blockParams"]
+      .filter((property) => isNonEmptyArray(node[property]))
+      .map((property) => [
+        line,
+        property === "blockParams"
+          ? printBlockParams(node)
+          : join(line, path.map(print, property)),
+      ]);
 
   return [
     "<",
diff --git ORI/prettier/src/language-html/parser-html.js ALT/prettier/src/language-html/parser-html.js
index 748c3cf7a..a407c41a9 100644
--- ORI/prettier/src/language-html/parser-html.js
+++ ALT/prettier/src/language-html/parser-html.js
@@ -196,9 +196,10 @@ function ngHtmlParser(
         }
       }
     } else if (node instanceof Comment) {
-      node.value = node.sourceSpan
-        .toString()
-        .slice("<!--".length, -"-->".length);
+      node.value =
+        node.sourceSpan
+          .toString()
+          .slice("<!--".length, -"-->".length);
     } else if (node instanceof Text) {
       node.value = node.sourceSpan.toString();
     }
diff --git ORI/prettier/src/language-html/print-preprocess.js ALT/prettier/src/language-html/print-preprocess.js
index 600947b77..25d831b9e 100644
--- ORI/prettier/src/language-html/print-preprocess.js
+++ ALT/prettier/src/language-html/print-preprocess.js
@@ -327,60 +327,61 @@ function extractWhitespaces(ast /*, options*/) {
     return node.clone({
       isWhitespaceSensitive,
       isIndentationSensitive,
-      children: node.children
-        // extract whitespace nodes
-        .reduce((newChildren, child) => {
-          if (child.type !== "text" || isWhitespaceSensitive) {
-            return [...newChildren, child];
-          }
-
-          const localChildren = [];
-
-          const { leadingWhitespace, text, trailingWhitespace } =
-            getLeadingAndTrailingHtmlWhitespace(child.value);
-
-          if (leadingWhitespace) {
-            localChildren.push({ type: TYPE_WHITESPACE });
-          }
-
-          if (text) {
-            localChildren.push({
-              type: "text",
-              value: text,
-              sourceSpan: new ParseSourceSpan(
-                child.sourceSpan.start.moveBy(leadingWhitespace.length),
-                child.sourceSpan.end.moveBy(-trailingWhitespace.length)
-              ),
-            });
-          }
-
-          if (trailingWhitespace) {
-            localChildren.push({ type: TYPE_WHITESPACE });
-          }
-
-          return [...newChildren, ...localChildren];
-        }, [])
-        // set hasLeadingSpaces/hasTrailingSpaces and filter whitespace nodes
-        .reduce((newChildren, child, i, children) => {
-          if (child.type === TYPE_WHITESPACE) {
-            return newChildren;
-          }
-
-          const hasLeadingSpaces =
-            i !== 0 && children[i - 1].type === TYPE_WHITESPACE;
-          const hasTrailingSpaces =
-            i !== children.length - 1 &&
-            children[i + 1].type === TYPE_WHITESPACE;
-
-          return [
-            ...newChildren,
-            {
-              ...child,
-              hasLeadingSpaces,
-              hasTrailingSpaces,
-            },
-          ];
-        }, []),
+      children:
+        node.children
+          // extract whitespace nodes
+          .reduce((newChildren, child) => {
+            if (child.type !== "text" || isWhitespaceSensitive) {
+              return [...newChildren, child];
+            }
+
+            const localChildren = [];
+
+            const { leadingWhitespace, text, trailingWhitespace } =
+              getLeadingAndTrailingHtmlWhitespace(child.value);
+
+            if (leadingWhitespace) {
+              localChildren.push({ type: TYPE_WHITESPACE });
+            }
+
+            if (text) {
+              localChildren.push({
+                type: "text",
+                value: text,
+                sourceSpan: new ParseSourceSpan(
+                  child.sourceSpan.start.moveBy(leadingWhitespace.length),
+                  child.sourceSpan.end.moveBy(-trailingWhitespace.length)
+                ),
+              });
+            }
+
+            if (trailingWhitespace) {
+              localChildren.push({ type: TYPE_WHITESPACE });
+            }
+
+            return [...newChildren, ...localChildren];
+          }, [])
+          // set hasLeadingSpaces/hasTrailingSpaces and filter whitespace nodes
+          .reduce((newChildren, child, i, children) => {
+            if (child.type === TYPE_WHITESPACE) {
+              return newChildren;
+            }
+
+            const hasLeadingSpaces =
+              i !== 0 && children[i - 1].type === TYPE_WHITESPACE;
+            const hasTrailingSpaces =
+              i !== children.length - 1 &&
+              children[i + 1].type === TYPE_WHITESPACE;
+
+            return [
+              ...newChildren,
+              {
+                ...child,
+                hasLeadingSpaces,
+                hasTrailingSpaces,
+              },
+            ];
+          }, []),
     });
   });
 }
@@ -439,28 +440,32 @@ function addIsSpaceSensitive(ast, options) {
     }
 
     return node.clone({
-      children: node.children
-        .map((child) => ({
-          ...child,
-          isLeadingSpaceSensitive: isLeadingSpaceSensitiveNode(child, options),
-          isTrailingSpaceSensitive: isTrailingSpaceSensitiveNode(
-            child,
-            options
-          ),
-        }))
-        .map((child, index, children) => ({
-          ...child,
-          isLeadingSpaceSensitive:
-            index === 0
-              ? child.isLeadingSpaceSensitive
-              : children[index - 1].isTrailingSpaceSensitive &&
-                child.isLeadingSpaceSensitive,
-          isTrailingSpaceSensitive:
-            index === children.length - 1
-              ? child.isTrailingSpaceSensitive
-              : children[index + 1].isLeadingSpaceSensitive &&
-                child.isTrailingSpaceSensitive,
-        })),
+      children:
+        node.children
+          .map((child) => ({
+            ...child,
+            isLeadingSpaceSensitive: isLeadingSpaceSensitiveNode(
+              child,
+              options
+            ),
+            isTrailingSpaceSensitive: isTrailingSpaceSensitiveNode(
+              child,
+              options
+            ),
+          }))
+          .map((child, index, children) => ({
+            ...child,
+            isLeadingSpaceSensitive:
+              index === 0
+                ? child.isLeadingSpaceSensitive
+                : children[index - 1].isTrailingSpaceSensitive &&
+                  child.isLeadingSpaceSensitive,
+            isTrailingSpaceSensitive:
+              index === children.length - 1
+                ? child.isTrailingSpaceSensitive
+                : children[index + 1].isLeadingSpaceSensitive &&
+                  child.isTrailingSpaceSensitive,
+          })),
     });
   });
 }
diff --git ORI/prettier/src/language-html/syntax-attribute.js ALT/prettier/src/language-html/syntax-attribute.js
index 3180ae3b2..e37ba122d 100644
--- ORI/prettier/src/language-html/syntax-attribute.js
+++ ALT/prettier/src/language-html/syntax-attribute.js
@@ -30,9 +30,10 @@ function printImgSrcset(value) {
   const urls = srcset.map((src) => src.url);
   const maxUrlLength = getMax(urls.map((url) => url.length));
 
-  const descriptors = srcset
-    .map((src) => src[key])
-    .map((descriptor) => (descriptor ? descriptor.toString() : ""));
+  const descriptors =
+    srcset
+      .map((src) => src[key])
+      .map((descriptor) => (descriptor ? descriptor.toString() : ""));
   const descriptorLeftLengths = descriptors.map((descriptor) => {
     const index = descriptor.indexOf(".");
     return index === -1 ? descriptor.length : index;
diff --git ORI/prettier/src/language-js/embed/html.js ALT/prettier/src/language-js/embed/html.js
index cb2e41306..4e0b11d02 100644
--- ORI/prettier/src/language-js/embed/html.js
+++ ALT/prettier/src/language-js/embed/html.js
@@ -19,13 +19,14 @@ function format(path, print, textToDoc, options, { parser }) {
   const composePlaceholder = (index) =>
     `PRETTIER_HTML_PLACEHOLDER_${index}_${counter}_IN_JS`;
 
-  const text = node.quasis
-    .map((quasi, index, quasis) =>
-      index === quasis.length - 1
-        ? quasi.value.cooked
-        : quasi.value.cooked + composePlaceholder(index)
-    )
-    .join("");
+  const text =
+    node.quasis
+      .map((quasi, index, quasis) =>
+        index === quasis.length - 1
+          ? quasi.value.cooked
+          : quasi.value.cooked + composePlaceholder(index)
+      )
+      .join("");
 
   const expressionDocs = printTemplateExpressions(path, print);
   if (expressionDocs.length === 0 && text.trim().length === 0) {
diff --git ORI/prettier/src/language-js/print/member-chain.js ALT/prettier/src/language-js/print/member-chain.js
index b12c6c191..baf115b34 100644
--- ORI/prettier/src/language-js/print/member-chain.js
+++ ALT/prettier/src/language-js/print/member-chain.js
@@ -360,9 +360,10 @@ function printMemberChain(path, options, print) {
     printIndentedGroup(groups.slice(shouldMerge ? 2 : 1)),
   ];
 
-  const callExpressions = printedNodes
-    .map(({ node }) => node)
-    .filter(isCallOrOptionalCallExpression);
+  const callExpressions =
+    printedNodes
+      .map(({ node }) => node)
+      .filter(isCallOrOptionalCallExpression);
 
   function lastGroupWillBreakAndOtherCallsHaveFunctionArguments() {
     const lastGroupNode = getLast(getLast(groups)).node;
diff --git ORI/prettier/src/language-js/print/object.js ALT/prettier/src/language-js/print/object.js
index c8ff9dc45..b1c3d3223 100644
--- ORI/prettier/src/language-js/print/object.js
+++ ALT/prettier/src/language-js/print/object.js
@@ -110,24 +110,25 @@ function printObject(path, options, print) {
 
   /** @type {Doc[]} */
   let separatorParts = [];
-  const props = propsAndLoc
-    .sort((a, b) => a.loc - b.loc)
-    .map((prop) => {
-      const result = [...separatorParts, group(prop.printed)];
-      separatorParts = [separator, line];
-      if (
-        (prop.node.type === "TSPropertySignature" ||
-          prop.node.type === "TSMethodSignature" ||
-          prop.node.type === "TSConstructSignatureDeclaration") &&
-        hasComment(prop.node, CommentCheckFlags.PrettierIgnore)
-      ) {
-        separatorParts.shift();
-      }
-      if (isNextLineEmpty(prop.node, options)) {
-        separatorParts.push(hardline);
-      }
-      return result;
-    });
+  const props =
+    propsAndLoc
+      .sort((a, b) => a.loc - b.loc)
+      .map((prop) => {
+        const result = [...separatorParts, group(prop.printed)];
+        separatorParts = [separator, line];
+        if (
+          (prop.node.type === "TSPropertySignature" ||
+            prop.node.type === "TSMethodSignature" ||
+            prop.node.type === "TSConstructSignatureDeclaration") &&
+          hasComment(prop.node, CommentCheckFlags.PrettierIgnore)
+        ) {
+          separatorParts.shift();
+        }
+        if (isNextLineEmpty(prop.node, options)) {
+          separatorParts.push(hardline);
+        }
+        return result;
+      });
 
   if (n.inexact) {
     let printed;
diff --git ORI/prettier/src/language-js/printer-estree.js ALT/prettier/src/language-js/printer-estree.js
index a2fc6dbd5..df8ef9578 100644
--- ORI/prettier/src/language-js/printer-estree.js
+++ ALT/prettier/src/language-js/printer-estree.js
@@ -1034,9 +1034,10 @@ function printPathNoParens(path, options, print, args) {
         const commentStartIndex = options.originalText.lastIndexOf("/*", start);
         const commentEndIndex = options.originalText.indexOf("*/", end);
         if (commentStartIndex !== -1 && commentEndIndex !== -1) {
-          const comment = options.originalText
-            .slice(commentStartIndex + 2, commentEndIndex)
-            .trim();
+          const comment =
+            options.originalText
+              .slice(commentStartIndex + 2, commentEndIndex)
+              .trim();
           if (
             comment.startsWith("::") &&
             !comment.includes("/*") &&
diff --git ORI/prettier/src/language-markdown/clean.js ALT/prettier/src/language-markdown/clean.js
index 869eef9dd..fffd2e578 100644
--- ORI/prettier/src/language-markdown/clean.js
+++ ALT/prettier/src/language-markdown/clean.js
@@ -43,10 +43,11 @@ function clean(ast, newObj, parent) {
   }
 
   if (ast.type === "definition" || ast.type === "linkReference") {
-    newObj.label = ast.label
-      .trim()
-      .replace(/[\t\n ]+/g, " ")
-      .toLowerCase();
+    newObj.label =
+      ast.label
+        .trim()
+        .replace(/[\t\n ]+/g, " ")
+        .toLowerCase();
   }
 
   if (
diff --git ORI/prettier/src/language-markdown/constants.evaluate.js ALT/prettier/src/language-markdown/constants.evaluate.js
index 45c799f9e..024d46b41 100644
--- ORI/prettier/src/language-markdown/constants.evaluate.js
+++ ALT/prettier/src/language-markdown/constants.evaluate.js
@@ -22,9 +22,10 @@ const cjkPattern = `(?:${cjkRegex()
   Block: ["Variation_Selectors", "Variation_Selectors_Supplement"],
 }).toString()})?`;
 
-const kPattern = unicodeRegex({ Script: ["Hangul"] })
-  .union(unicodeRegex({ Script_Extensions: ["Hangul"] }))
-  .toString();
+const kPattern =
+  unicodeRegex({ Script: ["Hangul"] })
+    .union(unicodeRegex({ Script_Extensions: ["Hangul"] }))
+    .toString();
 
 // http://spec.commonmark.org/0.25/#ascii-punctuation-character
 const asciiPunctuationCharset =
diff --git ORI/prettier/src/language-markdown/parser-markdown.js ALT/prettier/src/language-markdown/parser-markdown.js
index 494b77977..d7120cfbe 100644
--- ORI/prettier/src/language-markdown/parser-markdown.js
+++ ALT/prettier/src/language-markdown/parser-markdown.js
@@ -26,19 +26,20 @@ const mdx = require("./mdx");
  */
 function createParse({ isMDX }) {
   return (text) => {
-    const processor = unified()
-      .use(remarkParse, {
-        commonmark: true,
-        ...(isMDX && { blocks: [mdx.BLOCKS_REGEX] }),
-      })
-      .use(footnotes)
-      .use(frontMatter)
-      .use(remarkMath)
-      .use(isMDX ? mdx.esSyntax : identity)
-      .use(liquid)
-      .use(isMDX ? htmlToJsx : identity)
-      .use(wikiLink)
-      .use(looseItems);
+    const processor =
+      unified()
+        .use(remarkParse, {
+          commonmark: true,
+          ...(isMDX && { blocks: [mdx.BLOCKS_REGEX] }),
+        })
+        .use(footnotes)
+        .use(frontMatter)
+        .use(remarkMath)
+        .use(isMDX ? mdx.esSyntax : identity)
+        .use(liquid)
+        .use(isMDX ? htmlToJsx : identity)
+        .use(wikiLink)
+        .use(looseItems);
     return processor.runSync(processor.parse(text));
   };
 }
diff --git ORI/prettier/src/language-markdown/printer-markdown.js ALT/prettier/src/language-markdown/printer-markdown.js
index 179132dc2..34b6c2eb8 100644
--- ORI/prettier/src/language-markdown/printer-markdown.js
+++ ALT/prettier/src/language-markdown/printer-markdown.js
@@ -96,22 +96,23 @@ function genericPrint(path, options, print) {
     case "sentence":
       return printChildren(path, options, print);
     case "word": {
-      let escapedValue = node.value
-        .replace(/\*/g, "\\$&") // escape all `*`
-        .replace(
-          new RegExp(
-            [
-              `(^|${punctuationPattern})(_+)`,
-              `(_+)(${punctuationPattern}|$)`,
-            ].join("|"),
-            "g"
-          ),
-          (_, text1, underscore1, underscore2, text2) =>
-            (underscore1
-              ? `${text1}${underscore1}`
-              : `${underscore2}${text2}`
-            ).replace(/_/g, "\\_")
-        ); // escape all `_` except concating with non-punctuation, e.g. `1_2_3` is not considered emphasis
+      let escapedValue =
+        node.value
+          .replace(/\*/g, "\\$&") // escape all `*`
+          .replace(
+            new RegExp(
+              [
+                `(^|${punctuationPattern})(_+)`,
+                `(_+)(${punctuationPattern}|$)`,
+              ].join("|"),
+              "g"
+            ),
+            (_, text1, underscore1, underscore2, text2) =>
+              (underscore1
+                ? `${text1}${underscore1}`
+                : `${underscore2}${text2}`
+              ).replace(/_/g, "\\_")
+          ); // escape all `_` except concating with non-punctuation, e.g. `1_2_3` is not considered emphasis
 
       const isFirstSentence = (node, name, index) =>
         node.type === "sentence" && index === 0;
diff --git ORI/prettier/src/language-markdown/utils.js ALT/prettier/src/language-markdown/utils.js
index 4b7d2608e..926ca0f06 100644
--- ORI/prettier/src/language-markdown/utils.js
+++ ALT/prettier/src/language-markdown/utils.js
@@ -153,12 +153,13 @@ function splitText(text, options) {
 }
 
 function getOrderedListItemInfo(orderListItem, originalText) {
-  const [, numberText, marker, leadingSpaces] = originalText
-    .slice(
-      orderListItem.position.start.offset,
-      orderListItem.position.end.offset
-    )
-    .match(/^\s*(\d+)(\.|\))(\s*)/);
+  const [, numberText, marker, leadingSpaces] =
+    originalText
+      .slice(
+        orderListItem.position.start.offset,
+        orderListItem.position.end.offset
+      )
+      .match(/^\s*(\d+)(\.|\))(\s*)/);
 
   return { numberText, marker, leadingSpaces };
 }
diff --git ORI/prettier/src/language-yaml/utils.js ALT/prettier/src/language-yaml/utils.js
index 2151c65bc..fef001f74 100644
--- ORI/prettier/src/language-yaml/utils.js
+++ ALT/prettier/src/language-yaml/utils.js
@@ -193,17 +193,18 @@ function splitWithSingleSpace(text) {
 }
 
 function getFlowScalarLineContents(nodeType, content, options) {
-  const rawLineContents = content
-    .split("\n")
-    .map((lineContent, index, lineContents) =>
-      index === 0 && index === lineContents.length - 1
-        ? lineContent
-        : index !== 0 && index !== lineContents.length - 1
-        ? lineContent.trim()
-        : index === 0
-        ? lineContent.trimEnd()
-        : lineContent.trimStart()
-    );
+  const rawLineContents =
+    content
+      .split("\n")
+      .map((lineContent, index, lineContents) =>
+        index === 0 && index === lineContents.length - 1
+          ? lineContent
+          : index !== 0 && index !== lineContents.length - 1
+          ? lineContent.trim()
+          : index === 0
+          ? lineContent.trimEnd()
+          : lineContent.trimStart()
+      );
 
   if (options.proseWrap === "preserve") {
     return rawLineContents.map((lineContent) =>
@@ -260,9 +261,10 @@ function getBlockValueLineContents(
         )
       : node.indent - 1 + parentIndent;
 
-  const rawLineContents = content
-    .split("\n")
-    .map((lineContent) => lineContent.slice(leadingSpaceCount));
+  const rawLineContents =
+    content
+      .split("\n")
+      .map((lineContent) => lineContent.slice(leadingSpaceCount));
 
   if (options.proseWrap === "preserve" || node.type === "blockLiteral") {
     return removeUnnecessaryTrailingNewlines(
diff --git ORI/prettier/src/main/options.js ALT/prettier/src/main/options.js
index a12b5bcad..fbd13b464 100644
--- ORI/prettier/src/main/options.js
+++ ALT/prettier/src/main/options.js
@@ -68,19 +68,20 @@ function normalize(options, opts = {}) {
   const plugin = getPlugin(rawOptions);
   rawOptions.printer = plugin.printers[rawOptions.astFormat];
 
-  const pluginDefaults = supportOptions
-    .filter(
-      (optionInfo) =>
-        optionInfo.pluginDefaults &&
-        optionInfo.pluginDefaults[plugin.name] !== undefined
-    )
-    .reduce(
-      (reduced, optionInfo) =>
-        Object.assign(reduced, {
-          [optionInfo.name]: optionInfo.pluginDefaults[plugin.name],
-        }),
-      {}
-    );
+  const pluginDefaults =
+    supportOptions
+      .filter(
+        (optionInfo) =>
+          optionInfo.pluginDefaults &&
+          optionInfo.pluginDefaults[plugin.name] !== undefined
+      )
+      .reduce(
+        (reduced, optionInfo) =>
+          Object.assign(reduced, {
+            [optionInfo.name]: optionInfo.pluginDefaults[plugin.name],
+          }),
+        {}
+      );
 
   const mixedDefaults = { ...defaults, ...pluginDefaults };
 
diff --git ORI/prettier/src/main/support.js ALT/prettier/src/main/support.js
index a6aa0d83f..37c9b567c 100644
--- ORI/prettier/src/main/support.js
+++ ALT/prettier/src/main/support.js
@@ -29,54 +29,57 @@ function getSupportInfo({
   // we need to treat it as the normal one so as to test new features.
   const version = currentVersion.split("-", 1)[0];
 
-  const languages = plugins
-    .reduce((all, plugin) => [...all, ...(plugin.languages || [])], [])
-    .filter(filterSince);
+  const languages =
+    plugins
+      .reduce((all, plugin) => [...all, ...(plugin.languages || [])], [])
+      .filter(filterSince);
 
-  const options = arrayify(
-    Object.assign({}, ...plugins.map(({ options }) => options), coreOptions),
-    "name"
-  )
-    .filter((option) => filterSince(option) && filterDeprecated(option))
-    .sort((a, b) => (a.name === b.name ? 0 : a.name < b.name ? -1 : 1))
-    .map(mapInternal)
-    .map((option) => {
-      option = { ...option };
+  const options =
+    arrayify(
+      Object.assign({}, ...plugins.map(({ options }) => options), coreOptions),
+      "name"
+    )
+      .filter((option) => filterSince(option) && filterDeprecated(option))
+      .sort((a, b) => (a.name === b.name ? 0 : a.name < b.name ? -1 : 1))
+      .map(mapInternal)
+      .map((option) => {
+        option = { ...option };
 
-      if (Array.isArray(option.default)) {
-        option.default =
-          option.default.length === 1
-            ? option.default[0].value
-            : option.default
-                .filter(filterSince)
-                .sort((info1, info2) =>
-                  semver.compare(info2.since, info1.since)
-                )[0].value;
-      }
+        if (Array.isArray(option.default)) {
+          option.default =
+            option.default.length === 1
+              ? option.default[0].value
+              : option.default
+                  .filter(filterSince)
+                  .sort((info1, info2) =>
+                    semver.compare(info2.since, info1.since)
+                  )[0].value;
+        }
 
-      if (Array.isArray(option.choices)) {
-        option.choices = option.choices.filter(
-          (option) => filterSince(option) && filterDeprecated(option)
-        );
+        if (Array.isArray(option.choices)) {
+          option.choices = option.choices.filter(
+            (option) => filterSince(option) && filterDeprecated(option)
+          );
 
-        if (option.name === "parser") {
-          collectParsersFromLanguages(option, languages, plugins);
+          if (option.name === "parser") {
+            collectParsersFromLanguages(option, languages, plugins);
+          }
         }
-      }
 
-      const pluginDefaults = plugins
-        .filter(
-          (plugin) =>
-            plugin.defaultOptions &&
-            plugin.defaultOptions[option.name] !== undefined
-        )
-        .reduce((reduced, plugin) => {
-          reduced[plugin.name] = plugin.defaultOptions[option.name];
-          return reduced;
-        }, {});
+        const pluginDefaults =
+          plugins
+            .filter(
+              (plugin) =>
+                plugin.defaultOptions &&
+                plugin.defaultOptions[option.name] !== undefined
+            )
+            .reduce((reduced, plugin) => {
+              reduced[plugin.name] = plugin.defaultOptions[option.name];
+              return reduced;
+            }, {});
 
-      return { ...option, pluginDefaults };
-    });
+        return { ...option, pluginDefaults };
+      });
 
   return { languages, options };
 
diff --git ORI/prettier/tests/js/bom/jsfmt.spec.js ALT/prettier/tests/js/bom/jsfmt.spec.js
index 851064803..6501e2f16 100644
--- ORI/prettier/tests/js/bom/jsfmt.spec.js
+++ ALT/prettier/tests/js/bom/jsfmt.spec.js
@@ -2,18 +2,19 @@ const fs = require("fs");
 const path = require("path");
 const fixtureDirectory = path.join(__dirname, "../eol");
 
-const snippets = fs
-  .readdirSync(fixtureDirectory)
-  .filter(
-    (fileName) => fileName !== "__snapshots__" && fileName !== "jsfmt.spec.js"
-  )
-  .map((fileName) => {
-    const file = path.join(fixtureDirectory, fileName);
-    const code = "\uFEFF" + fs.readFileSync(file, "utf8");
-    return {
-      name: fileName,
-      code,
-    };
-  });
+const snippets =
+  fs
+    .readdirSync(fixtureDirectory)
+    .filter(
+      (fileName) => fileName !== "__snapshots__" && fileName !== "jsfmt.spec.js"
+    )
+    .map((fileName) => {
+      const file = path.join(fixtureDirectory, fileName);
+      const code = "\uFEFF" + fs.readFileSync(file, "utf8");
+      return {
+        name: fileName,
+        code,
+      };
+    });
 
 run_spec({ dirname: __dirname, snippets }, ["babel"]);
diff --git ORI/prettier/tests/misc/empty/jsfmt.spec.js ALT/prettier/tests/misc/empty/jsfmt.spec.js
index 349f87d36..da6569e51 100644
--- ORI/prettier/tests/misc/empty/jsfmt.spec.js
+++ ALT/prettier/tests/misc/empty/jsfmt.spec.js
@@ -1,8 +1,9 @@
-const parsers = require("prettier-local")
-  .getSupportInfo()
-  .options.find((option) => option.name === "parser")
-  .choices.filter((choice) => !choice.deprecated)
-  .map((choice) => choice.value);
+const parsers =
+  require("prettier-local")
+    .getSupportInfo()
+    .options.find((option) => option.name === "parser")
+    .choices.filter((choice) => !choice.deprecated)
+    .map((choice) => choice.value);
 
 run_spec(
   {
diff --git ORI/prettier/tests_config/require_standalone.js ALT/prettier/tests_config/require_standalone.js
index 310dbb4b6..2be1957ee 100644
--- ORI/prettier/tests_config/require_standalone.js
+++ ALT/prettier/tests_config/require_standalone.js
@@ -6,13 +6,14 @@ const globby = require("globby");
 
 const sandbox = vm.createContext();
 
-const source = globby
-  .sync(["standalone.js", "parser-*.js"], {
-    cwd: process.env.PRETTIER_DIR,
-    absolute: true,
-  })
-  .map((file) => fs.readFileSync(file, "utf8"))
-  .join(";");
+const source =
+  globby
+    .sync(["standalone.js", "parser-*.js"], {
+      cwd: process.env.PRETTIER_DIR,
+      absolute: true,
+    })
+    .map((file) => fs.readFileSync(file, "utf8"))
+    .join(";");
 
 vm.runInContext(source, sandbox);
 
diff --git ORI/prettier/tests_config/run_spec.js ALT/prettier/tests_config/run_spec.js
index 8bb577930..03fce5bb5 100644
--- ORI/prettier/tests_config/run_spec.js
+++ ALT/prettier/tests_config/run_spec.js
@@ -118,29 +118,30 @@ function runSpec(fixtures, parsers, options) {
     };
   });
 
-  const files = fs
-    .readdirSync(dirname, { withFileTypes: true })
-    .map((file) => {
-      const basename = file.name;
-      const filename = path.join(dirname, basename);
-      if (
-        path.extname(basename) === ".snap" ||
-        !file.isFile() ||
-        basename[0] === "." ||
-        basename === "jsfmt.spec.js"
-      ) {
-        return;
-      }
+  const files =
+    fs
+      .readdirSync(dirname, { withFileTypes: true })
+      .map((file) => {
+        const basename = file.name;
+        const filename = path.join(dirname, basename);
+        if (
+          path.extname(basename) === ".snap" ||
+          !file.isFile() ||
+          basename[0] === "." ||
+          basename === "jsfmt.spec.js"
+        ) {
+          return;
+        }
 
-      const text = fs.readFileSync(filename, "utf8");
+        const text = fs.readFileSync(filename, "utf8");
 
-      return {
-        name: basename,
-        filename,
-        code: text,
-      };
-    })
-    .filter(Boolean);
+        return {
+          name: basename,
+          filename,
+          code: text,
+        };
+      })
+      .filter(Boolean);
 
   // Make sure tests are in correct location
   if (process.env.CHECK_TEST_PARSERS) {
@@ -399,13 +400,14 @@ const indexProperties = [
   },
 ];
 function replacePlaceholders(originalText, originalOptions) {
-  const indexes = indexProperties
-    .map(({ property, placeholder }) => {
-      const value = originalText.indexOf(placeholder);
-      return value === -1 ? undefined : { property, value, placeholder };
-    })
-    .filter(Boolean)
-    .sort((a, b) => a.value - b.value);
+  const indexes =
+    indexProperties
+      .map(({ property, placeholder }) => {
+        const value = originalText.indexOf(placeholder);
+        return value === -1 ? undefined : { property, value, placeholder };
+      })
+      .filter(Boolean)
+      .sort((a, b) => a.value - b.value);
 
   const options = { ...originalOptions };
   let text = originalText;
diff --git ORI/prettier/tests_integration/__tests__/bundle.js ALT/prettier/tests_integration/__tests__/bundle.js
index 1a2f85bab..b6c984c55 100644
--- ORI/prettier/tests_integration/__tests__/bundle.js
+++ ALT/prettier/tests_integration/__tests__/bundle.js
@@ -13,15 +13,17 @@ const distDirectory = path.join(projectRoot, "dist");
 
 describe("standalone", () => {
   const standalone = require(path.join(distDirectory, "standalone.js"));
-  const plugins = globby
-    .sync(["parser-*.js"], { cwd: distDirectory, absolute: true })
-    .map((file) => require(file));
+  const plugins =
+    globby
+      .sync(["parser-*.js"], { cwd: distDirectory, absolute: true })
+      .map((file) => require(file));
 
   const esmStandalone = require(path.join(distDirectory, "esm/standalone.mjs"))
     .default;
-  const esmPlugins = globby
-    .sync(["esm/parser-*.mjs"], { cwd: distDirectory, absolute: true })
-    .map((file) => require(file).default);
+  const esmPlugins =
+    globby
+      .sync(["esm/parser-*.mjs"], { cwd: distDirectory, absolute: true })
+      .map((file) => require(file).default);
 
   for (const parser of parserNames) {
     test(parser, () => {
diff --git ORI/prettier/website/blog/2020-08-24-2.1.0.md ALT/prettier/website/blog/2020-08-24-2.1.0.md
index 215b2102c..78474a301 100644
--- ORI/prettier/website/blog/2020-08-24-2.1.0.md
+++ ALT/prettier/website/blog/2020-08-24-2.1.0.md
@@ -2163,11 +2163,12 @@ npm install --save-dev --save-exact prettier @prettier/plugin-php
 ```
 
 ```js
-const hasPhpParser = prettier
-  .getSupportInfo()
-  .options.find((option) => option.name === "parser")
-  .choices.map((choice) => choice.value)
-  .includes("php"); // false in Prettier 2.0, true in Prettier 2.1
+const hasPhpParser =
+  prettier
+    .getSupportInfo()
+    .options.find((option) => option.name === "parser")
+    .choices.map((choice) => choice.value)
+    .includes("php"); // false in Prettier 2.0, true in Prettier 2.1
 ```
 
 #### Fix `prettier.getFileInfo()` ([#8548](https://github.com/prettier/prettier/pull/8548), [#8551](https://github.com/prettier/prettier/pull/8551), [#8585](https://github.com/prettier/prettier/pull/8585) by [@fisker](https://github.com/fisker))
diff --git ORI/prettier/website/pages/en/index.js ALT/prettier/website/pages/en/index.js
index 0a212f30d..5cbe57622 100755
--- ORI/prettier/website/pages/en/index.js
+++ ALT/prettier/website/pages/en/index.js
@@ -239,13 +239,14 @@ const EditorSupportSection = () => (
 );
 
 const UsersSection = ({ language }) => {
-  const showcase = siteConfig.users
-    .filter((user) => user.pinned)
-    .map((user, i) => (
-      <a key={i} className="growOnHover alignCenter" href={user.infoLink}>
-        <img className="user" src={user.greyImage} title={user.caption} />
-      </a>
-    ));
+  const showcase =
+    siteConfig.users
+      .filter((user) => user.pinned)
+      .map((user, i) => (
+        <a key={i} className="growOnHover alignCenter" href={user.infoLink}>
+          <img className="user" src={user.greyImage} title={user.caption} />
+        </a>
+      ));
 
   return (
     <div className="usersSection productShowcaseSection">
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/consistent-type-imports.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/consistent-type-imports.ts
index 096deaff..8d9d6de9 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/consistent-type-imports.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/consistent-type-imports.ts
@@ -592,9 +592,10 @@ export default util.createRule<Options, MessageIds>({
           );
           // import Type , {...} from 'foo'
           //        ^^^^^ pick
-          const defaultText = sourceCode.text
-            .slice(defaultSpecifier.range[0], commaToken.range[0])
-            .trim();
+          const defaultText =
+            sourceCode.text
+              .slice(defaultSpecifier.range[0], commaToken.range[0])
+              .trim();
           yield fixer.insertTextBefore(
             node,
             `import type ${defaultText} from ${sourceCode.getText(
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/func-call-spacing.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/func-call-spacing.ts
index 08d72181..c9d94183 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/func-call-spacing.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/func-call-spacing.ts
@@ -99,9 +99,10 @@ export default util.createRule<Options, MessageIds>({
         util.isNotOptionalChainPunctuator,
       )!;
 
-      const textBetweenTokens = text
-        .slice(lastCalleeToken.range[1], openingParenToken.range[0])
-        .replace(/\/\*.*?\*\//gu, '');
+      const textBetweenTokens =
+        text
+          .slice(lastCalleeToken.range[1], openingParenToken.range[0])
+          .replace(/\/\*.*?\*\//gu, '');
       const hasWhitespace = /\s/u.test(textBetweenTokens);
       const hasNewline =
         hasWhitespace && util.LINEBREAK_MATCHER.test(textBetweenTokens);
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/method-signature-style.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/method-signature-style.ts
index 4775a1fe..02a704b0 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/method-signature-style.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/method-signature-style.ts
@@ -154,13 +154,14 @@ export default util.createRule<Options, MessageIds>({
                   methodNode,
                   ...duplicatedKeyMethodNodes,
                 ].sort((a, b) => (a.range[0] < b.range[0] ? -1 : 1));
-                const typeString = methodNodes
-                  .map(node => {
-                    const params = getMethodParams(node);
-                    const returnType = getMethodReturnType(node);
-                    return `(${params} => ${returnType})`;
-                  })
-                  .join(' & ');
+                const typeString =
+                  methodNodes
+                    .map(node => {
+                      const params = getMethodParams(node);
+                      const returnType = getMethodReturnType(node);
+                      return `(${params} => ${returnType})`;
+                    })
+                    .join(' & ');
                 const key = getMethodKey(methodNode);
                 const delimiter = getDelimiter(methodNode);
                 yield fixer.replaceText(
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention-utils/parse-options.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention-utils/parse-options.ts
index c4e6e36b..b0e1386f 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention-utils/parse-options.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention-utils/parse-options.ts
@@ -80,9 +80,10 @@ function normalizeOption(option: Selector): NormalizedSelector[] {
 }
 
 function parseOptions(context: Context): ParsedOptions {
-  const normalizedOptions = context.options
-    .map(opt => normalizeOption(opt))
-    .reduce((acc, val) => acc.concat(val), []);
+  const normalizedOptions =
+    context.options
+      .map(opt => normalizeOption(opt))
+      .reduce((acc, val) => acc.concat(val), []);
   return util.getEnumNames(Selectors).reduce((acc, k) => {
     acc[k] = createValidator(k, context, normalizedOptions);
     return acc;
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention-utils/validator.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention-utils/validator.ts
index a683933d..0297f62c 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention-utils/validator.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention-utils/validator.ts
@@ -28,46 +28,47 @@ function createValidator(
 ): (node: TSESTree.Identifier | TSESTree.Literal) => void {
   // make sure the "highest priority" configs are checked first
   const selectorType = Selectors[type];
-  const configs = allConfigs
-    // gather all of the applicable selectors
-    .filter(
-      c =>
-        (c.selector & selectorType) !== 0 ||
-        c.selector === MetaSelectors.default,
-    )
-    .sort((a, b) => {
-      if (a.selector === b.selector) {
-        // in the event of the same selector, order by modifier weight
-        // sort descending - the type modifiers are "more important"
-        return b.modifierWeight - a.modifierWeight;
-      }
+  const configs =
+    allConfigs
+      // gather all of the applicable selectors
+      .filter(
+        c =>
+          (c.selector & selectorType) !== 0 ||
+          c.selector === MetaSelectors.default,
+      )
+      .sort((a, b) => {
+        if (a.selector === b.selector) {
+          // in the event of the same selector, order by modifier weight
+          // sort descending - the type modifiers are "more important"
+          return b.modifierWeight - a.modifierWeight;
+        }
 
-      const aIsMeta = isMetaSelector(a.selector);
-      const bIsMeta = isMetaSelector(b.selector);
+        const aIsMeta = isMetaSelector(a.selector);
+        const bIsMeta = isMetaSelector(b.selector);
 
-      // non-meta selectors should go ahead of meta selectors
-      if (aIsMeta && !bIsMeta) {
-        return 1;
-      }
-      if (!aIsMeta && bIsMeta) {
-        return -1;
-      }
+        // non-meta selectors should go ahead of meta selectors
+        if (aIsMeta && !bIsMeta) {
+          return 1;
+        }
+        if (!aIsMeta && bIsMeta) {
+          return -1;
+        }
 
-      const aIsMethodOrProperty = isMethodOrPropertySelector(a.selector);
-      const bIsMethodOrProperty = isMethodOrPropertySelector(b.selector);
+        const aIsMethodOrProperty = isMethodOrPropertySelector(a.selector);
+        const bIsMethodOrProperty = isMethodOrPropertySelector(b.selector);
 
-      // for backward compatibility, method and property have higher precedence than other meta selectors
-      if (aIsMethodOrProperty && !bIsMethodOrProperty) {
-        return -1;
-      }
-      if (!aIsMethodOrProperty && bIsMethodOrProperty) {
-        return 1;
-      }
+        // for backward compatibility, method and property have higher precedence than other meta selectors
+        if (aIsMethodOrProperty && !bIsMethodOrProperty) {
+          return -1;
+        }
+        if (!aIsMethodOrProperty && bIsMethodOrProperty) {
+          return 1;
+        }
 
-      // both aren't meta selectors
-      // sort descending - the meta selectors are "least important"
-      return b.selector - a.selector;
-    });
+        // both aren't meta selectors
+        // sort descending - the meta selectors are "least important"
+        return b.selector - a.selector;
+      });
 
   return (
     node: TSESTree.Identifier | TSESTree.Literal,
@@ -429,10 +430,11 @@ function isCorrectType(
   const { esTreeNodeToTSNodeMap, program } = util.getParserServices(context);
   const checker = program.getTypeChecker();
   const tsNode = esTreeNodeToTSNodeMap.get(node);
-  const type = checker
-    .getTypeAtLocation(tsNode)
-    // remove null and undefined from the type, as we don't care about it here
-    .getNonNullableType();
+  const type =
+    checker
+      .getTypeAtLocation(tsNode)
+      // remove null and undefined from the type, as we don't care about it here
+      .getNonNullableType();
 
   for (const allowedType of config.types) {
     switch (allowedType) {
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention.ts
index 16e31b62..91c6dc0c 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention.ts
@@ -96,9 +96,10 @@ export default util.createRule<Options, MessageIds>({
     const validators = parseOptions(context);
 
     // getParserServices(context, false) -- dirty hack to work around the docs checker test...
-    const compilerOptions = util
-      .getParserServices(context, true)
-      .program.getCompilerOptions();
+    const compilerOptions =
+      util
+        .getParserServices(context, true)
+        .program.getCompilerOptions();
     function handleMember(
       validator: ValidatorFunction | null,
       node:
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/no-invalid-void-type.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/no-invalid-void-type.ts
index 0dff489e..3ef3fcbb 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/no-invalid-void-type.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/no-invalid-void-type.ts
@@ -102,9 +102,10 @@ export default util.createRule<[Options], MessageIds>({
       // check whitelist
       if (Array.isArray(allowInGenericTypeArguments)) {
         const sourceCode = context.getSourceCode();
-        const fullyQualifiedName = sourceCode
-          .getText(node.parent.parent.typeName)
-          .replace(/ /gu, '');
+        const fullyQualifiedName =
+          sourceCode
+            .getText(node.parent.parent.typeName)
+            .replace(/ /gu, '');
 
         if (
           !allowInGenericTypeArguments
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/no-loop-func.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/no-loop-func.ts
index 44d0178e..99153caa 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/no-loop-func.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/no-loop-func.ts
@@ -49,9 +49,10 @@ export default util.createRule<Options, MessageIds>({
       }
 
       const references = context.getScope().through;
-      const unsafeRefs = references
-        .filter(r => !isSafe(loopNode, r))
-        .map(r => r.identifier.name);
+      const unsafeRefs =
+        references
+          .filter(r => !isSafe(loopNode, r))
+          .map(r => r.identifier.name);
 
       if (unsafeRefs.length > 0) {
         context.report({
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/no-redeclare.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/no-redeclare.ts
index 21456319..d6d58ade 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/no-redeclare.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/no-redeclare.ts
@@ -101,15 +101,16 @@ export default util.createRule<Options, MessageIds>({
         }
       }
 
-      const identifiers = variable.identifiers
-        .map(id => ({
-          identifier: id,
-          parent: id.parent!,
-        }))
-        // ignore function declarations because TS will treat them as an overload
-        .filter(
-          ({ parent }) => parent.type !== AST_NODE_TYPES.TSDeclareFunction,
-        );
+      const identifiers =
+        variable.identifiers
+          .map(id => ({
+            identifier: id,
+            parent: id.parent!,
+          }))
+          // ignore function declarations because TS will treat them as an overload
+          .filter(
+            ({ parent }) => parent.type !== AST_NODE_TYPES.TSDeclareFunction,
+          );
 
       if (options.ignoreDeclarationMerge && identifiers.length > 1) {
         if (
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/prefer-includes.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/prefer-includes.ts
index d21b088d..cc5a0136 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/prefer-includes.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/prefer-includes.ts
@@ -146,9 +146,10 @@ export default createRule({
 
         // Get the symbol of `indexOf` method.
         const tsNode = services.esTreeNodeToTSNodeMap.get(node.property);
-        const indexofMethodDeclarations = types
-          .getSymbolAtLocation(tsNode)
-          ?.getDeclarations();
+        const indexofMethodDeclarations =
+          types
+            .getSymbolAtLocation(tsNode)
+            ?.getDeclarations();
         if (
           indexofMethodDeclarations == null ||
           indexofMethodDeclarations.length === 0
@@ -161,9 +162,10 @@ export default createRule({
         for (const instanceofMethodDecl of indexofMethodDeclarations) {
           const typeDecl = instanceofMethodDecl.parent;
           const type = types.getTypeAtLocation(typeDecl);
-          const includesMethodDecl = type
-            .getProperty('includes')
-            ?.getDeclarations();
+          const includesMethodDecl =
+            type
+              .getProperty('includes')
+              ?.getDeclarations();
           if (
             includesMethodDecl == null ||
             !includesMethodDecl.some(includesMethodDecl =>
@@ -204,9 +206,10 @@ export default createRule({
         const tsNode = services.esTreeNodeToTSNodeMap.get(argument);
         const type = getConstrainedTypeAtLocation(types, tsNode);
 
-        const includesMethodDecl = type
-          .getProperty('includes')
-          ?.getDeclarations();
+        const includesMethodDecl =
+          type
+            .getProperty('includes')
+            ?.getDeclarations();
         if (includesMethodDecl == null) {
           return;
         }
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/promise-function-async.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/promise-function-async.ts
index 00888c8f..1bcb2f96 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/promise-function-async.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/promise-function-async.ts
@@ -99,9 +99,10 @@ export default util.createRule<Options, MessageIds>({
         | TSESTree.FunctionExpression,
     ): void {
       const originalNode = parserServices.esTreeNodeToTSNodeMap.get(node);
-      const signatures = checker
-        .getTypeAtLocation(originalNode)
-        .getCallSignatures();
+      const signatures =
+        checker
+          .getTypeAtLocation(originalNode)
+          .getCallSignatures();
       if (!signatures.length) {
         return;
       }
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts
index ff4a4d1a..e738a517 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts
@@ -210,11 +210,14 @@ export default util.createRule<Options, MessageIds>({
           }
 
           const fix: TSESLint.ReportFixFunction = fixer => {
-            const sorted = expectedOrder
-              .map(t => t.text)
-              .join(
-                node.type === AST_NODE_TYPES.TSIntersectionType ? ' & ' : ' | ',
-              );
+            const sorted =
+              expectedOrder
+                .map(t => t.text)
+                .join(
+                  node.type === AST_NODE_TYPES.TSIntersectionType
+                    ? ' & '
+                    : ' | ',
+                );
 
             return fixer.replaceText(node, sorted);
           };
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/switch-exhaustiveness-check.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/switch-exhaustiveness-check.ts
index 8881473d..99d911d8 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/switch-exhaustiveness-check.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/switch-exhaustiveness-check.ts
@@ -88,9 +88,10 @@ export default createRule({
         );
       }
 
-      const fixString = missingCases
-        .map(code => `${caseIndent}${code}`)
-        .join('\n');
+      const fixString =
+        missingCases
+          .map(code => `${caseIndent}${code}`)
+          .join('\n');
 
       if (lastCase) {
         return fixer.insertTextAfter(lastCase, `\n${fixString}`);
@@ -141,13 +142,14 @@ export default createRule({
           node: node.discriminant,
           messageId: 'switchIsNotExhaustive',
           data: {
-            missingBranches: missingBranchTypes
-              .map(missingType =>
-                isTypeFlagSet(missingType, ts.TypeFlags.ESSymbolLike)
-                  ? `typeof ${missingType.getSymbol()?.escapedName}`
-                  : checker.typeToString(missingType),
-              )
-              .join(' | '),
+            missingBranches:
+              missingBranchTypes
+                .map(missingType =>
+                  isTypeFlagSet(missingType, ts.TypeFlags.ESSymbolLike)
+                    ? `typeof ${missingType.getSymbol()?.escapedName}`
+                    : checker.typeToString(missingType),
+                )
+                .join(' | '),
           },
           suggest: [
             {
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/unbound-method.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/unbound-method.ts
index 407d04c1..ffacd370 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/unbound-method.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/unbound-method.ts
@@ -81,23 +81,24 @@ const SUPPORTED_GLOBALS = [
   'JSON',
   'Intl',
 ] as const;
-const nativelyBoundMembers = SUPPORTED_GLOBALS.map(namespace => {
-  if (!(namespace in global)) {
-    // node.js might not have namespaces like Intl depending on compilation options
-    // https://nodejs.org/api/intl.html#intl_options_for_building_node_js
-    return [];
-  }
-  const object = global[namespace];
-  return Object.getOwnPropertyNames(object)
-    .filter(
-      name =>
-        !name.startsWith('_') &&
-        typeof (object as Record<string, unknown>)[name] === 'function',
-    )
-    .map(name => `${namespace}.${name}`);
-})
-  .reduce((arr, names) => arr.concat(names), [])
-  .filter(name => !nativelyNotBoundMembers.has(name));
+const nativelyBoundMembers =
+  SUPPORTED_GLOBALS.map(namespace => {
+    if (!(namespace in global)) {
+      // node.js might not have namespaces like Intl depending on compilation options
+      // https://nodejs.org/api/intl.html#intl_options_for_building_node_js
+      return [];
+    }
+    const object = global[namespace];
+    return Object.getOwnPropertyNames(object)
+      .filter(
+        name =>
+          !name.startsWith('_') &&
+          typeof (object as Record<string, unknown>)[name] === 'function',
+      )
+      .map(name => `${namespace}.${name}`);
+  })
+    .reduce((arr, names) => arr.concat(names), [])
+    .filter(name => !nativelyNotBoundMembers.has(name));
 
 const isNotImported = (
   symbol: ts.Symbol,
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/util/propertyTypes.ts ALT/typescript-eslint/packages/eslint-plugin/src/util/propertyTypes.ts
index 5e2f1054..4b4a25b2 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/util/propertyTypes.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/util/propertyTypes.ts
@@ -13,9 +13,10 @@ export function getTypeOfPropertyOfName(
 
   // Symbolic names may differ in their escaped name compared to their human-readable name
   // https://github.com/typescript-eslint/typescript-eslint/issues/2143
-  const escapedProperty = type
-    .getProperties()
-    .find(property => property.escapedName === escapedName);
+  const escapedProperty =
+    type
+      .getProperties()
+      .find(property => property.escapedName === escapedName);
 
   return escapedProperty
     ? checker.getDeclaredTypeOfSymbol(escapedProperty)
diff --git ORI/typescript-eslint/packages/eslint-plugin/tests/configs.test.ts ALT/typescript-eslint/packages/eslint-plugin/tests/configs.test.ts
index f8fc068a..ed879e52 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tests/configs.test.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tests/configs.test.ts
@@ -2,17 +2,18 @@ import rules from '../src/rules';
 import plugin from '../src/index';
 
 const RULE_NAME_PREFIX = '@typescript-eslint/';
-const EXTENSION_RULES = Object.entries(rules)
-  .filter(([, rule]) => rule.meta.docs?.extendsBaseRule)
-  .map(
-    ([ruleName, rule]) =>
-      [
-        `${RULE_NAME_PREFIX}${ruleName}`,
-        typeof rule.meta.docs?.extendsBaseRule === 'string'
-          ? rule.meta.docs.extendsBaseRule
-          : ruleName,
-      ] as const,
-  );
+const EXTENSION_RULES =
+  Object.entries(rules)
+    .filter(([, rule]) => rule.meta.docs?.extendsBaseRule)
+    .map(
+      ([ruleName, rule]) =>
+        [
+          `${RULE_NAME_PREFIX}${ruleName}`,
+          typeof rule.meta.docs?.extendsBaseRule === 'string'
+            ? rule.meta.docs.extendsBaseRule
+            : ruleName,
+        ] as const,
+    );
 
 function entriesToObject<T = unknown>(value: [string, T][]): Record<string, T> {
   return value.reduce<Record<string, T>>((accum, [k, v]) => {
@@ -49,9 +50,13 @@ describe('all.json config', () => {
     plugin.configs.all.rules;
   const configRules = filterRules(unfilteredConfigRules);
   // note: exclude deprecated rules, this config is allowed to change between minor versions
-  const ruleConfigs = Object.entries(rules)
-    .filter(([, rule]) => !rule.meta.deprecated)
-    .map<[string, string]>(([name]) => [`${RULE_NAME_PREFIX}${name}`, 'error']);
+  const ruleConfigs =
+    Object.entries(rules)
+      .filter(([, rule]) => !rule.meta.deprecated)
+      .map<[string, string]>(([name]) => [
+        `${RULE_NAME_PREFIX}${name}`,
+        'error',
+      ]);
 
   it('contains all of the rules, excluding the deprecated ones', () => {
     expect(entriesToObject(ruleConfigs)).toEqual(entriesToObject(configRules));
@@ -65,16 +70,17 @@ describe('recommended.json config', () => {
     plugin.configs.recommended.rules;
   const configRules = filterRules(unfilteredConfigRules);
   // note: include deprecated rules so that the config doesn't change between major bumps
-  const ruleConfigs = Object.entries(rules)
-    .filter(
-      ([, rule]) =>
-        rule.meta.docs?.recommended !== false &&
-        rule.meta.docs?.requiresTypeChecking !== true,
-    )
-    .map<[string, string]>(([name, rule]) => [
-      `${RULE_NAME_PREFIX}${name}`,
-      rule.meta.docs?.recommended ? rule.meta.docs.recommended : 'off',
-    ]);
+  const ruleConfigs =
+    Object.entries(rules)
+      .filter(
+        ([, rule]) =>
+          rule.meta.docs?.recommended !== false &&
+          rule.meta.docs?.requiresTypeChecking !== true,
+      )
+      .map<[string, string]>(([name, rule]) => [
+        `${RULE_NAME_PREFIX}${name}`,
+        rule.meta.docs?.recommended ? rule.meta.docs.recommended : 'off',
+      ]);
 
   it("contains all recommended rules that don't require typechecking, excluding the deprecated ones", () => {
     expect(entriesToObject(ruleConfigs)).toEqual(entriesToObject(configRules));
@@ -88,16 +94,17 @@ describe('recommended-requiring-type-checking.json config', () => {
     plugin.configs['recommended-requiring-type-checking'].rules;
   const configRules = filterRules(unfilteredConfigRules);
   // note: include deprecated rules so that the config doesn't change between major bumps
-  const ruleConfigs = Object.entries(rules)
-    .filter(
-      ([, rule]) =>
-        rule.meta.docs?.recommended !== false &&
-        rule.meta.docs?.requiresTypeChecking === true,
-    )
-    .map<[string, string]>(([name, rule]) => [
-      `${RULE_NAME_PREFIX}${name}`,
-      rule.meta.docs?.recommended ? rule.meta.docs.recommended : 'off',
-    ]);
+  const ruleConfigs =
+    Object.entries(rules)
+      .filter(
+        ([, rule]) =>
+          rule.meta.docs?.recommended !== false &&
+          rule.meta.docs?.requiresTypeChecking === true,
+      )
+      .map<[string, string]>(([name, rule]) => [
+        `${RULE_NAME_PREFIX}${name}`,
+        rule.meta.docs?.recommended ? rule.meta.docs.recommended : 'off',
+      ]);
 
   it('contains all recommended rules that require type checking, excluding the deprecated ones', () => {
     expect(entriesToObject(ruleConfigs)).toEqual(entriesToObject(configRules));
diff --git ORI/typescript-eslint/packages/eslint-plugin/tests/docs.test.ts ALT/typescript-eslint/packages/eslint-plugin/tests/docs.test.ts
index d67ff887..230e312b 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tests/docs.test.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tests/docs.test.ts
@@ -41,13 +41,15 @@ function parseReadme(): {
 
 describe('Validating rule docs', () => {
   it('All rules must have a corresponding rule doc', () => {
-    const files = fs
-      .readdirSync(docsRoot)
-      // this rule doc was left behind on purpose for legacy reasons
-      .filter(rule => rule !== 'camelcase.md');
-    const ruleFiles = Object.keys(rules)
-      .map(rule => `${rule}.md`)
-      .sort();
+    const files =
+      fs
+        .readdirSync(docsRoot)
+        // this rule doc was left behind on purpose for legacy reasons
+        .filter(rule => rule !== 'camelcase.md');
+    const ruleFiles =
+      Object.keys(rules)
+        .map(rule => `${rule}.md`)
+        .sort();
 
     expect(files.sort()).toEqual(ruleFiles);
   });
@@ -115,20 +117,22 @@ describe('Validating README.md', () => {
   );
 
   it('All non-deprecated base rules should have a row in the base rules table, and the table should be ordered alphabetically', () => {
-    const baseRuleNames = baseRules
-      .map(([ruleName]) => ruleName)
-      .sort()
-      .map(createRuleLink);
+    const baseRuleNames =
+      baseRules
+        .map(([ruleName]) => ruleName)
+        .sort()
+        .map(createRuleLink);
 
     expect(rulesTables.base.cells.map(row => row[0])).toStrictEqual(
       baseRuleNames,
     );
   });
   it('All non-deprecated extension rules should have a row in the base rules table, and the table should be ordered alphabetically', () => {
-    const extensionRuleNames = extensionRules
-      .map(([ruleName]) => ruleName)
-      .sort()
-      .map(createRuleLink);
+    const extensionRuleNames =
+      extensionRules
+        .map(([ruleName]) => ruleName)
+        .sort()
+        .map(createRuleLink);
 
     expect(rulesTables.extension.cells.map(row => row[0])).toStrictEqual(
       extensionRuleNames,
diff --git ORI/typescript-eslint/packages/eslint-plugin/tests/index.test.ts ALT/typescript-eslint/packages/eslint-plugin/tests/index.test.ts
index 3cac8304..6ca70b85 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tests/index.test.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tests/index.test.ts
@@ -8,10 +8,13 @@ describe('eslint-plugin ("./src/index.ts")', () => {
   const ruleKeys = Object.keys(rules);
   const eslintPluginRuleKeys = Object.keys(eslintPlugin.rules);
 
-  const configs = fs
-    .readdirSync('./src/configs')
-    .filter(file => ['.json', '.ts'].includes(path.extname(file).toLowerCase()))
-    .map(file => path.basename(file, path.extname(file)));
+  const configs =
+    fs
+      .readdirSync('./src/configs')
+      .filter(file =>
+        ['.json', '.ts'].includes(path.extname(file).toLowerCase()),
+      )
+      .map(file => path.basename(file, path.extname(file)));
   const eslintPluginConfigKeys = Object.keys(eslintPlugin.configs);
 
   it('exports all available rules', () => {
diff --git ORI/typescript-eslint/packages/eslint-plugin/tests/rules/indent/indent.test.ts ALT/typescript-eslint/packages/eslint-plugin/tests/rules/indent/indent.test.ts
index 8296bf19..22d15332 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tests/rules/indent/indent.test.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tests/rules/indent/indent.test.ts
@@ -640,30 +640,31 @@ type Foo = string | {
         // test the fixer by removing all the spaces
         code: code.replace(new RegExp(indent, 'g'), ''),
         output: code,
-        errors: code
-          .split('\n')
-          .map<TSESLint.TestCaseError<MessageIds> | null>((line, lineNum) => {
-            const indentCount = line.split(indent).length - 1;
-            const spaceCount = indentCount * indent.length;
+        errors:
+          code
+            .split('\n')
+            .map<TSESLint.TestCaseError<MessageIds> | null>((line, lineNum) => {
+              const indentCount = line.split(indent).length - 1;
+              const spaceCount = indentCount * indent.length;
 
-            if (indentCount < 1) {
-              return null;
-            }
+              if (indentCount < 1) {
+                return null;
+              }
 
-            return {
-              messageId: 'wrongIndentation',
-              data: {
-                expected: `${spaceCount} spaces`,
-                actual: 0,
-              },
-              line: lineNum + 1,
-              column: 1,
-            };
-          })
-          .filter(
-            (error): error is TSESLint.TestCaseError<MessageIds> =>
-              error !== null,
-          ),
+              return {
+                messageId: 'wrongIndentation',
+                data: {
+                  expected: `${spaceCount} spaces`,
+                  actual: 0,
+                },
+                line: lineNum + 1,
+                column: 1,
+              };
+            })
+            .filter(
+              (error): error is TSESLint.TestCaseError<MessageIds> =>
+                error !== null,
+            ),
       };
       if (invalid.errors.length > 0) {
         invalidCases.push(invalid);
diff --git ORI/typescript-eslint/packages/eslint-plugin/tests/rules/indent/utils.ts ALT/typescript-eslint/packages/eslint-plugin/tests/rules/indent/utils.ts
index badfbc1c..cd868ac7 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tests/rules/indent/utils.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tests/rules/indent/utils.ts
@@ -19,13 +19,15 @@ type MessageIds = InferMessageIdsTypeFromRule<typeof rule>;
 export function unIndent(strings: TemplateStringsArray): string {
   const WHITESPACE_REGEX = / */u;
   const templateValue = strings[0];
-  const lines = templateValue
-    .replace(/^\n/u, '')
-    .replace(/\n\s*$/u, '')
-    .split('\n');
-  const lineIndents = lines
-    .filter(line => line.trim())
-    .map(line => WHITESPACE_REGEX.exec(line)![0].length);
+  const lines =
+    templateValue
+      .replace(/^\n/u, '')
+      .replace(/\n\s*$/u, '')
+      .split('\n');
+  const lineIndents =
+    lines
+      .filter(line => line.trim())
+      .map(line => WHITESPACE_REGEX.exec(line)![0].length);
   const minLineIndent = Math.min(...lineIndents);
 
   return lines.map(line => line.slice(minLineIndent)).join('\n');
diff --git ORI/typescript-eslint/packages/eslint-plugin/tests/rules/index.test.ts ALT/typescript-eslint/packages/eslint-plugin/tests/rules/index.test.ts
index c9160c05..1139ce3e 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tests/rules/index.test.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tests/rules/index.test.ts
@@ -4,9 +4,10 @@ import rules from '../../src/rules';
 
 describe('./src/rules/index.ts', () => {
   const ruleNames = Object.keys(rules).map(name => `${name}.ts`);
-  const files = fs
-    .readdirSync('./src/rules')
-    .filter(file => file !== 'index.ts' && file.endsWith('.ts'));
+  const files =
+    fs
+      .readdirSync('./src/rules')
+      .filter(file => file !== 'index.ts' && file.endsWith('.ts'));
 
   it('imports all available rule modules', () => {
     expect(ruleNames).toEqual(expect.arrayContaining(files));
diff --git ORI/typescript-eslint/packages/eslint-plugin/tests/rules/prefer-readonly-parameter-types.test.ts ALT/typescript-eslint/packages/eslint-plugin/tests/rules/prefer-readonly-parameter-types.test.ts
index 9278420a..59ac6ffc 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tests/rules/prefer-readonly-parameter-types.test.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tests/rules/prefer-readonly-parameter-types.test.ts
@@ -269,10 +269,11 @@ ruleTester.run('prefer-readonly-parameter-types', rule, {
   invalid: [
     // arrays
     ...arrays.map<TSESLint.InvalidTestCase<MessageIds, Options>>(baseType => {
-      const type = baseType
-        .replace(/readonly /g, '')
-        .replace(/Readonly<(.+?)>/g, '$1')
-        .replace(/ReadonlyArray/g, 'Array');
+      const type =
+        baseType
+          .replace(/readonly /g, '')
+          .replace(/Readonly<(.+?)>/g, '$1')
+          .replace(/ReadonlyArray/g, 'Array');
       return {
         code: `function foo(arg: ${type}) {}`,
         errors: [
diff --git ORI/typescript-eslint/packages/eslint-plugin/tools/generate-configs.ts ALT/typescript-eslint/packages/eslint-plugin/tools/generate-configs.ts
index ed84f286..1f6698f3 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tools/generate-configs.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tools/generate-configs.ts
@@ -161,16 +161,17 @@ console.log();
 console.log(
   '------------------------------ recommended.ts (should not require program) ------------------------------',
 );
-const recommendedRules = ruleEntries
-  .filter(entry => !!entry[1].meta.docs?.recommended)
-  .reduce<LinterConfigRules>(
-    (config, entry) =>
-      reducer(config, entry, {
-        filterDeprecated: false,
-        filterRequiresTypeChecking: 'exclude',
-      }),
-    {},
-  );
+const recommendedRules =
+  ruleEntries
+    .filter(entry => !!entry[1].meta.docs?.recommended)
+    .reduce<LinterConfigRules>(
+      (config, entry) =>
+        reducer(config, entry, {
+          filterDeprecated: false,
+          filterRequiresTypeChecking: 'exclude',
+        }),
+      {},
+    );
 const recommendedConfig: LinterConfig = {
   extends: EXTENDS,
   rules: recommendedRules,
@@ -184,16 +185,17 @@ console.log();
 console.log(
   '--------------------------------- recommended-requiring-type-checking.ts ---------------------------------',
 );
-const recommendedRulesRequiringProgram = ruleEntries
-  .filter(entry => !!entry[1].meta.docs?.recommended)
-  .reduce<LinterConfigRules>(
-    (config, entry) =>
-      reducer(config, entry, {
-        filterDeprecated: false,
-        filterRequiresTypeChecking: 'include',
-      }),
-    {},
-  );
+const recommendedRulesRequiringProgram =
+  ruleEntries
+    .filter(entry => !!entry[1].meta.docs?.recommended)
+    .reduce<LinterConfigRules>(
+      (config, entry) =>
+        reducer(config, entry, {
+          filterDeprecated: false,
+          filterRequiresTypeChecking: 'include',
+        }),
+      {},
+    );
 const recommendedRequiringTypeCheckingConfig: LinterConfig = {
   extends: EXTENDS,
   rules: recommendedRulesRequiringProgram,
diff --git ORI/typescript-eslint/packages/eslint-plugin/tools/generate-rules-lists.ts ALT/typescript-eslint/packages/eslint-plugin/tools/generate-rules-lists.ts
index cffe4006..809c9248 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tools/generate-rules-lists.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tools/generate-rules-lists.ts
@@ -105,16 +105,17 @@ const updateRulesList = (
   ].join('\n');
 };
 
-const rulesDetails: RuleDetails[] = Object.entries(rules)
-  .filter(([, rule]) => rule.meta.deprecated !== true)
-  .map(([name, rule]) => ({
-    name,
-    description: rule.meta.docs?.description ?? '',
-    recommended: !!rule.meta.docs?.recommended ?? false,
-    fixable: !!rule.meta.fixable,
-    requiresTypeChecking: rule.meta.docs?.requiresTypeChecking ?? false,
-    extendsBaseRule: !!rule.meta.docs?.extendsBaseRule ?? false,
-  }));
+const rulesDetails: RuleDetails[] =
+  Object.entries(rules)
+    .filter(([, rule]) => rule.meta.deprecated !== true)
+    .map(([name, rule]) => ({
+      name,
+      description: rule.meta.docs?.description ?? '',
+      recommended: !!rule.meta.docs?.recommended ?? false,
+      fixable: !!rule.meta.fixable,
+      requiresTypeChecking: rule.meta.docs?.requiresTypeChecking ?? false,
+      extendsBaseRule: !!rule.meta.docs?.extendsBaseRule ?? false,
+    }));
 
 const baseRules = rulesDetails.filter(rule => !rule.extendsBaseRule);
 const extensionRules = rulesDetails.filter(rule => rule.extendsBaseRule);
diff --git ORI/typescript-eslint/packages/parser/src/parser.ts ALT/typescript-eslint/packages/parser/src/parser.ts
index f304a837..cd6fd0d1 100644
--- ORI/typescript-eslint/packages/parser/src/parser.ts
+++ ALT/typescript-eslint/packages/parser/src/parser.ts
@@ -154,9 +154,10 @@ function parseForESLint(
         compilerOptions.jsxFragmentFactory != null
       ) {
         // in case the user has specified something like "preact.Fragment"
-        const fragFactory = compilerOptions.jsxFragmentFactory
-          .split('.')[0]
-          .trim();
+        const fragFactory =
+          compilerOptions.jsxFragmentFactory
+            .split('.')[0]
+            .trim();
         analyzeOptions.jsxFragmentName = fragFactory;
         log(
           'Resolved jsxFragmentName from program: %s',
diff --git ORI/typescript-eslint/packages/scope-manager/tests/fixtures.test.ts ALT/typescript-eslint/packages/scope-manager/tests/fixtures.test.ts
index 5255ed02..5f5a2295 100644
--- ORI/typescript-eslint/packages/scope-manager/tests/fixtures.test.ts
+++ ALT/typescript-eslint/packages/scope-manager/tests/fixtures.test.ts
@@ -12,24 +12,25 @@ const ONLY = [].join(path.sep);
 
 const FIXTURES_DIR = path.resolve(__dirname, 'fixtures');
 
-const fixtures = glob
-  .sync(`${FIXTURES_DIR}/**/*.{js,ts,jsx,tsx}`, {
-    ignore: ['fixtures.test.ts'],
-  })
-  .map(absolute => {
-    const relative = path.relative(FIXTURES_DIR, absolute);
-    const { name, dir, ext } = path.parse(relative);
-    const segments = dir.split(path.sep);
-    const snapshotPath = path.join(FIXTURES_DIR, dir);
-    return {
-      absolute,
-      name,
-      ext,
-      segments,
-      snapshotPath,
-      snapshotFile: path.join(snapshotPath, `${name}${ext}.shot`),
-    };
-  });
+const fixtures =
+  glob
+    .sync(`${FIXTURES_DIR}/**/*.{js,ts,jsx,tsx}`, {
+      ignore: ['fixtures.test.ts'],
+    })
+    .map(absolute => {
+      const relative = path.relative(FIXTURES_DIR, absolute);
+      const { name, dir, ext } = path.parse(relative);
+      const segments = dir.split(path.sep);
+      const snapshotPath = path.join(FIXTURES_DIR, dir);
+      return {
+        absolute,
+        name,
+        ext,
+        segments,
+        snapshotPath,
+        snapshotFile: path.join(snapshotPath, `${name}${ext}.shot`),
+      };
+    });
 
 const FOUR_SLASH = /^\/\/\/\/[ ]+@(\w+)[ ]*=[ ]*(.+)$/;
 const QUOTED_STRING = /^["'](.+?)['"]$/;
diff --git ORI/typescript-eslint/packages/typescript-estree/src/convert.ts ALT/typescript-eslint/packages/typescript-estree/src/convert.ts
index f5a6a230..8c0ecfc7 100644
--- ORI/typescript-eslint/packages/typescript-estree/src/convert.ts
+++ ALT/typescript-eslint/packages/typescript-estree/src/convert.ts
@@ -1953,12 +1953,13 @@ export class Converter {
       case SyntaxKind.BigIntLiteral: {
         const range = getRange(node, this.ast);
         const rawValue = this.ast.text.slice(range[0], range[1]);
-        const bigint = rawValue
-          // remove suffix `n`
-          .slice(0, -1)
-          // `BigInt` doesn't accept numeric separator
-          // and `bigint` property should not include numeric separator
-          .replace(/_/g, '');
+        const bigint =
+          rawValue
+            // remove suffix `n`
+            .slice(0, -1)
+            // `BigInt` doesn't accept numeric separator
+            // and `bigint` property should not include numeric separator
+            .replace(/_/g, '');
         const value = typeof BigInt !== 'undefined' ? BigInt(bigint) : null;
         return this.createNode<TSESTree.BigIntLiteral>(node, {
           type: AST_NODE_TYPES.Literal,
diff --git ORI/typescript-eslint/packages/typescript-estree/src/create-program/createWatchProgram.ts ALT/typescript-eslint/packages/typescript-estree/src/create-program/createWatchProgram.ts
index a3f007a0..599cfeed 100644
--- ORI/typescript-eslint/packages/typescript-estree/src/create-program/createWatchProgram.ts
+++ ALT/typescript-eslint/packages/typescript-estree/src/create-program/createWatchProgram.ts
@@ -289,12 +289,14 @@ function createWatchProgram(
   // ensure process doesn't emit programs
   watchCompilerHost.afterProgramCreate = (program): void => {
     // report error if there are any errors in the config file
-    const configFileDiagnostics = program
-      .getConfigFileParsingDiagnostics()
-      .filter(
-        diag =>
-          diag.category === ts.DiagnosticCategory.Error && diag.code !== 18003,
-      );
+    const configFileDiagnostics =
+      program
+        .getConfigFileParsingDiagnostics()
+        .filter(
+          diag =>
+            diag.category === ts.DiagnosticCategory.Error &&
+            diag.code !== 18003,
+        );
     if (configFileDiagnostics.length > 0) {
       diagnosticReporter(configFileDiagnostics[0]);
     }
diff --git ORI/typescript-eslint/packages/typescript-estree/src/parser.ts ALT/typescript-eslint/packages/typescript-estree/src/parser.ts
index dd765eb5..4e118007 100644
--- ORI/typescript-eslint/packages/typescript-estree/src/parser.ts
+++ ALT/typescript-eslint/packages/typescript-estree/src/parser.ts
@@ -264,17 +264,16 @@ function applyParserOptionsToExtra(options: TSESTreeOptions): void {
   // NOTE - ensureAbsolutePath relies upon having the correct tsconfigRootDir in extra
   extra.filePath = ensureAbsolutePath(extra.filePath, extra);
 
-  const projectFolderIgnoreList = (
-    options.projectFolderIgnoreList ?? ['**/node_modules/**']
-  )
-    .reduce<string[]>((acc, folder) => {
-      if (typeof folder === 'string') {
-        acc.push(folder);
-      }
-      return acc;
-    }, [])
-    // prefix with a ! for not match glob
-    .map(folder => (folder.startsWith('!') ? folder : `!${folder}`));
+  const projectFolderIgnoreList =
+    (options.projectFolderIgnoreList ?? ['**/node_modules/**'])
+      .reduce<string[]>((acc, folder) => {
+        if (typeof folder === 'string') {
+          acc.push(folder);
+        }
+        return acc;
+      }, [])
+      // prefix with a ! for not match glob
+      .map(folder => (folder.startsWith('!') ? folder : `!${folder}`));
   // NOTE - prepareAndTransformProjects relies upon having the correct tsconfigRootDir in extra
   extra.projects = prepareAndTransformProjects(
     options.project,
diff --git ORI/typescript-eslint/tools/generate-contributors.ts ALT/typescript-eslint/tools/generate-contributors.ts
index 6bb908b3..fb6dc4df 100644
--- ORI/typescript-eslint/tools/generate-contributors.ts
+++ ALT/typescript-eslint/tools/generate-contributors.ts
@@ -83,19 +83,20 @@ async function main(): Promise<void> {
     }),
   );
 
-  const contributors = users
-    // remove ignored users
-    .filter(u => !IGNORED_USERS.has(u.login))
-    // fetch the in-depth information for each user
-    .map<AllContributorsUser>(usr => {
-      return {
-        login: usr.login,
-        name: usr.name || usr.login,
-        avatar_url: usr.avatar_url,
-        profile: usr.html_url,
-        contributions: [],
-      };
-    });
+  const contributors =
+    users
+      // remove ignored users
+      .filter(u => !IGNORED_USERS.has(u.login))
+      // fetch the in-depth information for each user
+      .map<AllContributorsUser>(usr => {
+        return {
+          login: usr.login,
+          name: usr.name || usr.login,
+          avatar_url: usr.avatar_url,
+          profile: usr.html_url,
+          contributions: [],
+        };
+      });
 
   // build + write the .all-contributorsrc
   const allContributorsConfig = {

@sosukesuzuki
Copy link
Member

run #10297

@github-actions
Copy link
Contributor

github-actions bot commented Feb 18, 2021

prettier/prettier#10297 VS prettier/prettier@main

Diff (3915 lines)
diff --git ORI/babel/packages/babel-cli/test/index.js ALT/babel/packages/babel-cli/test/index.js
index 7cedb49e3..bd2f64c1b 100644
--- ORI/babel/packages/babel-cli/test/index.js
+++ ALT/babel/packages/babel-cli/test/index.js
@@ -52,19 +52,21 @@ const saveInFiles = function (files) {
 };
 
 const normalizeOutput = function (str, cwd) {
-  let result = str
-    .replace(/\(\d+ms\)/g, "(123ms)")
-    .replace(new RegExp(escapeRegExp(cwd), "g"), "<CWD>")
-    // (non-win32) /foo/babel/packages -> <CWD>/packages
-    // (win32) C:\foo\babel\packages -> <CWD>\packages
-    .replace(new RegExp(escapeRegExp(rootDir), "g"), "<ROOTDIR>");
+  let result =
+    str
+      .replace(/\(\d+ms\)/g, "(123ms)")
+      .replace(new RegExp(escapeRegExp(cwd), "g"), "<CWD>")
+      // (non-win32) /foo/babel/packages -> <CWD>/packages
+      // (win32) C:\foo\babel\packages -> <CWD>\packages
+      .replace(new RegExp(escapeRegExp(rootDir), "g"), "<ROOTDIR>");
   if (process.platform === "win32") {
-    result = result
-      // C:\\foo\\babel\\packages -> <CWD>\\packages (in js string literal)
-      .replace(
-        new RegExp(escapeRegExp(rootDir.replace(/\\/g, "\\\\")), "g"),
-        "<ROOTDIR>",
-      );
+    result =
+      result
+        // C:\\foo\\babel\\packages -> <CWD>\\packages (in js string literal)
+        .replace(
+          new RegExp(escapeRegExp(rootDir.replace(/\\/g, "\\\\")), "g"),
+          "<ROOTDIR>",
+        );
   }
   return result;
 };
diff --git ORI/babel/packages/babel-core/src/config/files/configuration.js ALT/babel/packages/babel-core/src/config/files/configuration.js
index 8a3bed914..19fcb9ed2 100644
--- ORI/babel/packages/babel-core/src/config/files/configuration.js
+++ ALT/babel/packages/babel-core/src/config/files/configuration.js
@@ -278,10 +278,11 @@ const readConfigJSON5 = makeStaticFileCache((filepath, content): ConfigFile => {
 
 const readIgnoreConfig = makeStaticFileCache((filepath, content) => {
   const ignoreDir = path.dirname(filepath);
-  const ignorePatterns = content
-    .split("\n")
-    .map<string>(line => line.replace(/#(.*?)$/, "").trim())
-    .filter(line => !!line);
+  const ignorePatterns =
+    content
+      .split("\n")
+      .map<string>(line => line.replace(/#(.*?)$/, "").trim())
+      .filter(line => !!line);
 
   for (const pattern of ignorePatterns) {
     if (pattern[0] === "!") {
diff --git ORI/babel/packages/babel-core/src/config/full.js ALT/babel/packages/babel-core/src/config/full.js
index 75fbe293c..2efa73342 100644
--- ORI/babel/packages/babel-core/src/config/full.js
+++ ALT/babel/packages/babel-core/src/config/full.js
@@ -186,10 +186,11 @@ export default gensync<[any], ResolvedConfig | null>(function* loadFullConfig(
   })();
 
   opts.plugins = passes[0];
-  opts.presets = passes
-    .slice(1)
-    .filter(plugins => plugins.length > 0)
-    .map(plugins => ({ plugins }));
+  opts.presets =
+    passes
+      .slice(1)
+      .filter(plugins => plugins.length > 0)
+      .map(plugins => ({ plugins }));
   opts.passPerPreset = opts.presets.length > 0;
 
   return {
diff --git ORI/babel/packages/babel-core/src/transformation/file/merge-map.js ALT/babel/packages/babel-core/src/transformation/file/merge-map.js
index 911867d96..70d64b276 100644
--- ORI/babel/packages/babel-core/src/transformation/file/merge-map.js
+++ ALT/babel/packages/babel-core/src/transformation/file/merge-map.js
@@ -242,19 +242,20 @@ function buildMappingData(map: SourceMap): ResolvedMappings {
 
       sourceData.mappings.push({
         original: obj,
-        generated: consumer
-          .allGeneratedPositionsFor({
-            source: m.source,
-            line: m.originalLine,
-            column: m.originalColumn,
-          })
-          .map(item => ({
-            line: item.line,
-            columnStart: item.column,
-            // source-map's lastColumn is inclusive, not exclusive, so we need
-            // to add 1 to it.
-            columnEnd: item.lastColumn + 1,
-          })),
+        generated:
+          consumer
+            .allGeneratedPositionsFor({
+              source: m.source,
+              line: m.originalLine,
+              column: m.originalColumn,
+            })
+            .map(item => ({
+              line: item.line,
+              columnStart: item.column,
+              // source-map's lastColumn is inclusive, not exclusive, so we need
+              // to add 1 to it.
+              columnEnd: item.lastColumn + 1,
+            })),
       });
     },
     null,
diff --git ORI/babel/packages/babel-helper-compilation-targets/src/index.js ALT/babel/packages/babel-helper-compilation-targets/src/index.js
index 4fff39876..3723a0435 100644
--- ORI/babel/packages/babel-helper-compilation-targets/src/index.js
+++ ALT/babel/packages/babel-helper-compilation-targets/src/index.js
@@ -160,9 +160,10 @@ export default function getTargets(
   // These values OVERRIDE the `browsers` field.
   if (inputTargets.esmodules) {
     const supportsESModules = browserModulesData["es6.module"];
-    browsers = Object.keys(supportsESModules)
-      .map(browser => `${browser} ${supportsESModules[browser]}`)
-      .join(", ");
+    browsers =
+      Object.keys(supportsESModules)
+        .map(browser => `${browser} ${supportsESModules[browser]}`)
+        .join(", ");
   }
 
   // Parse browsers target via browserslist
diff --git ORI/babel/packages/babel-helper-module-transforms/src/get-module-name.js ALT/babel/packages/babel-helper-module-transforms/src/get-module-name.js
index 0e4e81ad3..228aef281 100644
--- ORI/babel/packages/babel-helper-module-transforms/src/get-module-name.js
+++ ALT/babel/packages/babel-helper-module-transforms/src/get-module-name.js
@@ -33,11 +33,12 @@ export default function getModuleName(
     const sourceRootReplacer =
       sourceRoot != null ? new RegExp("^" + sourceRoot + "/?") : "";
 
-    moduleName += filenameRelative
-      // remove sourceRoot from filename
-      .replace(sourceRootReplacer, "")
-      // remove extension
-      .replace(/\.(\w*?)$/, "");
+    moduleName +=
+      filenameRelative
+        // remove sourceRoot from filename
+        .replace(sourceRootReplacer, "")
+        // remove extension
+        .replace(/\.(\w*?)$/, "");
   }
 
   // normalize path separators
diff --git ORI/babel/packages/babel-helper-transform-fixture-test-runner/src/index.js ALT/babel/packages/babel-helper-transform-fixture-test-runner/src/index.js
index 1b5116349..1fa64d029 100644
--- ORI/babel/packages/babel-helper-transform-fixture-test-runner/src/index.js
+++ ALT/babel/packages/babel-helper-transform-fixture-test-runner/src/index.js
@@ -325,23 +325,25 @@ function validateFile(actualCode, expectedLoc, expectedCode) {
 function normalizeOutput(code) {
   const projectRoot = path.resolve(__dirname, "../../../");
   const cwdSymbol = "<CWD>";
-  let result = code
-    .trim()
-    // (non-win32) /foo/babel/packages -> <CWD>/packages
-    // (win32) C:\foo\babel\packages -> <CWD>\packages
-    .replace(new RegExp(escapeRegExp(projectRoot), "g"), cwdSymbol);
+  let result =
+    code
+      .trim()
+      // (non-win32) /foo/babel/packages -> <CWD>/packages
+      // (win32) C:\foo\babel\packages -> <CWD>\packages
+      .replace(new RegExp(escapeRegExp(projectRoot), "g"), cwdSymbol);
   if (process.platform === "win32") {
-    result = result
-      // C:/foo/babel/packages -> <CWD>/packages
-      .replace(
-        new RegExp(escapeRegExp(projectRoot.replace(/\\/g, "/")), "g"),
-        cwdSymbol,
-      )
-      // C:\\foo\\babel\\packages -> <CWD>\\packages (in js string literal)
-      .replace(
-        new RegExp(escapeRegExp(projectRoot.replace(/\\/g, "\\\\")), "g"),
-        cwdSymbol,
-      );
+    result =
+      result
+        // C:/foo/babel/packages -> <CWD>/packages
+        .replace(
+          new RegExp(escapeRegExp(projectRoot.replace(/\\/g, "/")), "g"),
+          cwdSymbol,
+        )
+        // C:\\foo\\babel\\packages -> <CWD>\\packages (in js string literal)
+        .replace(
+          new RegExp(escapeRegExp(projectRoot.replace(/\\/g, "\\\\")), "g"),
+          cwdSymbol,
+        );
   }
   return result;
 }
diff --git ORI/babel/packages/babel-helpers/src/index.js ALT/babel/packages/babel-helpers/src/index.js
index 067719614..1a6155c51 100644
--- ORI/babel/packages/babel-helpers/src/index.js
+++ ALT/babel/packages/babel-helpers/src/index.js
@@ -303,8 +303,9 @@ export function ensure(name: string, newFileClass?) {
   loadHelper(name);
 }
 
-export const list = Object.keys(helpers)
-  .map(name => name.replace(/^_/, ""))
-  .filter(name => name !== "__esModule");
+export const list =
+  Object.keys(helpers)
+    .map(name => name.replace(/^_/, ""))
+    .filter(name => name !== "__esModule");
 
 export default get;
diff --git ORI/babel/packages/babel-highlight/src/index.js ALT/babel/packages/babel-highlight/src/index.js
index f2639a521..1a89ce0fd 100644
--- ORI/babel/packages/babel-highlight/src/index.js
+++ ALT/babel/packages/babel-highlight/src/index.js
@@ -204,10 +204,11 @@ function highlightTokens(defs: Object, text: string) {
   for (const { type, value } of tokenize(text)) {
     const colorize = defs[type];
     if (colorize) {
-      highlighted += value
-        .split(NEWLINE)
-        .map(str => colorize(str))
-        .join("\n");
+      highlighted +=
+        value
+          .split(NEWLINE)
+          .map(str => colorize(str))
+          .join("\n");
     } else {
       highlighted += value;
     }
diff --git ORI/babel/packages/babel-parser/src/parser/expression.js ALT/babel/packages/babel-parser/src/parser/expression.js
index b50aed34e..c9a06b149 100644
--- ORI/babel/packages/babel-parser/src/parser/expression.js
+++ ALT/babel/packages/babel-parser/src/parser/expression.js
@@ -1552,9 +1552,10 @@ export default class ExpressionParser extends LValParser {
       }
     }
     elem.value = {
-      raw: this.input
-        .slice(this.state.start, this.state.end)
-        .replace(/\r\n?/g, "\n"),
+      raw:
+        this.input
+          .slice(this.state.start, this.state.end)
+          .replace(/\r\n?/g, "\n"),
       cooked: this.state.value,
     };
     this.next();
diff --git ORI/babel/packages/babel-parser/src/tokenizer/index.js ALT/babel/packages/babel-parser/src/tokenizer/index.js
index 7c119c7d1..2c23b7ae2 100644
--- ORI/babel/packages/babel-parser/src/tokenizer/index.js
+++ ALT/babel/packages/babel-parser/src/tokenizer/index.js
@@ -1381,9 +1381,10 @@ export default class Tokenizer extends ParserErrors {
       default:
         if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {
           const codePos = this.state.pos - 1;
-          const match = this.input
-            .substr(this.state.pos - 1, 3)
-            .match(/^[0-7]+/);
+          const match =
+            this.input
+              .substr(this.state.pos - 1, 3)
+              .match(/^[0-7]+/);
 
           // This is never null, because of the if condition above.
           /*:: invariant(match !== null) */
diff --git ORI/babel/packages/babel-plugin-proposal-object-rest-spread/src/index.js ALT/babel/packages/babel-plugin-proposal-object-rest-spread/src/index.js
index 387e2634c..c0741f2f8 100644
--- ORI/babel/packages/babel-plugin-proposal-object-rest-spread/src/index.js
+++ ALT/babel/packages/babel-plugin-proposal-object-rest-spread/src/index.js
@@ -394,9 +394,10 @@ export default declare((api, opts) => {
         const declaration = path.get("declaration");
         if (!declaration.isVariableDeclaration()) return;
 
-        const hasRest = declaration
-          .get("declarations")
-          .some(path => hasObjectPatternRestElement(path.get("id")));
+        const hasRest =
+          declaration
+            .get("declarations")
+            .some(path => hasObjectPatternRestElement(path.get("id")));
         if (!hasRest) return;
 
         const specifiers = [];
diff --git ORI/babel/packages/babel-plugin-transform-flow-comments/src/index.js ALT/babel/packages/babel-plugin-transform-flow-comments/src/index.js
index db926052c..afa1486ad 100644
--- ORI/babel/packages/babel-plugin-transform-flow-comments/src/index.js
+++ ALT/babel/packages/babel-plugin-transform-flow-comments/src/index.js
@@ -68,10 +68,11 @@ export default declare(api => {
   }
 
   function generateComment(path, optional) {
-    let comment = path
-      .getSource()
-      .replace(/\*-\//g, "*-ESCAPED/")
-      .replace(/\*\//g, "*-/");
+    let comment =
+      path
+        .getSource()
+        .replace(/\*-\//g, "*-ESCAPED/")
+        .replace(/\*\//g, "*-/");
     if (optional) comment = "?" + comment;
     if (comment[0] !== ":") comment = ":: " + comment;
     return comment;
diff --git ORI/babel/packages/babel-plugin-transform-modules-amd/src/index.js ALT/babel/packages/babel-plugin-transform-modules-amd/src/index.js
index 7ea2b150f..adb8d0e21 100644
--- ORI/babel/packages/babel-plugin-transform-modules-amd/src/index.js
+++ ALT/babel/packages/babel-plugin-transform-modules-amd/src/index.js
@@ -27,10 +27,11 @@ function injectWrapper(path, wrapper) {
   path.node.directives = [];
   path.node.body = [];
   const amdWrapper = path.pushContainer("body", wrapper)[0];
-  const amdFactory = amdWrapper
-    .get("expression.arguments")
-    .filter(arg => arg.isFunctionExpression())[0]
-    .get("body");
+  const amdFactory =
+    amdWrapper
+      .get("expression.arguments")
+      .filter(arg => arg.isFunctionExpression())[0]
+      .get("body");
   amdFactory.pushContainer("directives", directives);
   amdFactory.pushContainer("body", body);
 }
diff --git ORI/babel/packages/babel-plugin-transform-modules-umd/src/index.js ALT/babel/packages/babel-plugin-transform-modules-umd/src/index.js
index 0f85d5f9a..0752f4ad6 100644
--- ORI/babel/packages/babel-plugin-transform-modules-umd/src/index.js
+++ ALT/babel/packages/babel-plugin-transform-modules-umd/src/index.js
@@ -108,12 +108,13 @@ export default declare((api, options) => {
     if (exactGlobals) {
       const globalRef = browserGlobals[source];
       if (globalRef) {
-        memberExpression = globalRef
-          .split(".")
-          .reduce(
-            (accum, curr) => t.memberExpression(accum, t.identifier(curr)),
-            t.identifier("global"),
-          );
+        memberExpression =
+          globalRef
+            .split(".")
+            .reduce(
+              (accum, curr) => t.memberExpression(accum, t.identifier(curr)),
+              t.identifier("global"),
+            );
       } else {
         memberExpression = t.memberExpression(
           t.identifier("global"),
@@ -228,9 +229,10 @@ export default declare((api, options) => {
               ),
             }),
           ])[0];
-          const umdFactory = umdWrapper
-            .get("expression.arguments")[1]
-            .get("body");
+          const umdFactory =
+            umdWrapper
+              .get("expression.arguments")[1]
+              .get("body");
           umdFactory.pushContainer("directives", directives);
           umdFactory.pushContainer("body", body);
         },
diff --git ORI/babel/packages/babel-plugin-transform-parameters/src/rest.js ALT/babel/packages/babel-plugin-transform-parameters/src/rest.js
index cfba76ce4..42db73bfe 100644
--- ORI/babel/packages/babel-plugin-transform-parameters/src/rest.js
+++ ALT/babel/packages/babel-plugin-transform-parameters/src/rest.js
@@ -349,9 +349,10 @@ export default function convertFunctionRest(path) {
   if (state.deopted) {
     node.body.body.unshift(loop);
   } else {
-    let target = path
-      .getEarliestCommonAncestorFrom(state.references)
-      .getStatementParent();
+    let target =
+      path
+        .getEarliestCommonAncestorFrom(state.references)
+        .getStatementParent();
 
     // don't perform the allocation inside a loop
     target.findParent(path => {
diff --git ORI/babel/packages/babel-preset-env/src/debug.js ALT/babel/packages/babel-preset-env/src/debug.js
index b91499e72..9a180a71e 100644
--- ORI/babel/packages/babel-preset-env/src/debug.js
+++ ALT/babel/packages/babel-preset-env/src/debug.js
@@ -18,10 +18,11 @@ export const logPluginOrPolyfill = (
 ) => {
   const filteredList = getInclusionReasons(item, targetVersions, list);
 
-  const formattedTargets = JSON.stringify(filteredList)
-    .replace(/,/g, ", ")
-    .replace(/^\{"/, '{ "')
-    .replace(/"\}$/, '" }');
+  const formattedTargets =
+    JSON.stringify(filteredList)
+      .replace(/,/g, ", ")
+      .replace(/^\{"/, '{ "')
+      .replace(/"\}$/, '" }');
 
   console.log(`  ${item} ${formattedTargets}`);
 };
diff --git ORI/babel/packages/babel-preset-env/src/index.js ALT/babel/packages/babel-preset-env/src/index.js
index 90384f610..eec73efbb 100644
--- ORI/babel/packages/babel-preset-env/src/index.js
+++ ALT/babel/packages/babel-preset-env/src/index.js
@@ -326,30 +326,31 @@ option \`forceAllTransforms: true\` instead.
   });
 
   const pluginUseBuiltIns = useBuiltIns !== false;
-  const plugins = Array.from(pluginNames)
-    .map(pluginName => {
-      if (
-        pluginName === "proposal-class-properties" ||
-        pluginName === "proposal-private-methods" ||
-        // This is not included in preset-env yet, but let's keep it here so we
-        // don't forget about it in the future.
-        pluginName === "proposal-private-property-in-object"
-      ) {
+  const plugins =
+    Array.from(pluginNames)
+      .map(pluginName => {
+        if (
+          pluginName === "proposal-class-properties" ||
+          pluginName === "proposal-private-methods" ||
+          // This is not included in preset-env yet, but let's keep it here so we
+          // don't forget about it in the future.
+          pluginName === "proposal-private-property-in-object"
+        ) {
+          return [
+            getPlugin(pluginName),
+            {
+              loose: loose
+                ? "#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error"
+                : "#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error",
+            },
+          ];
+        }
         return [
           getPlugin(pluginName),
-          {
-            loose: loose
-              ? "#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error"
-              : "#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error",
-          },
+          { spec, loose, useBuiltIns: pluginUseBuiltIns },
         ];
-      }
-      return [
-        getPlugin(pluginName),
-        { spec, loose, useBuiltIns: pluginUseBuiltIns },
-      ];
-    })
-    .concat(polyfillPlugins);
+      })
+      .concat(polyfillPlugins);
 
   if (debug) {
     console.log("@babel/preset-env: `DEBUG` option");
diff --git ORI/babel/packages/babel-preset-env/src/polyfills/corejs3/entry-plugin.js ALT/babel/packages/babel-preset-env/src/polyfills/corejs3/entry-plugin.js
index caa8de4cf..96c4a6a5b 100644
--- ORI/babel/packages/babel-preset-env/src/polyfills/corejs3/entry-plugin.js
+++ ALT/babel/packages/babel-preset-env/src/polyfills/corejs3/entry-plugin.js
@@ -23,10 +23,11 @@ function isBabelPolyfillSource(source) {
 
 function isCoreJSSource(source) {
   if (typeof source === "string") {
-    source = source
-      .replace(/\\/g, "/")
-      .replace(/(\/(index)?)?(\.js)?$/i, "")
-      .toLowerCase();
+    source =
+      source
+        .replace(/\\/g, "/")
+        .replace(/(\/(index)?)?(\.js)?$/i, "")
+        .toLowerCase();
   }
   return has(corejsEntries, source) && corejsEntries[source];
 }
diff --git ORI/babel/packages/babel-preset-env/src/polyfills/corejs3/usage-plugin.js ALT/babel/packages/babel-preset-env/src/polyfills/corejs3/usage-plugin.js
index 37370a9b6..77edfac37 100644
--- ORI/babel/packages/babel-preset-env/src/polyfills/corejs3/usage-plugin.js
+++ ALT/babel/packages/babel-preset-env/src/polyfills/corejs3/usage-plugin.js
@@ -32,12 +32,13 @@ const NO_DIRECT_POLYFILL_IMPORT = `
   When setting \`useBuiltIns: 'usage'\`, polyfills are automatically imported when needed.
   Please remove the direct import of \`core-js\` or use \`useBuiltIns: 'entry'\` instead.`;
 
-const corejs3PolyfillsWithoutProposals = Object.keys(corejs3Polyfills)
-  .filter(name => !name.startsWith("esnext."))
-  .reduce((memo, key) => {
-    memo[key] = corejs3Polyfills[key];
-    return memo;
-  }, {});
+const corejs3PolyfillsWithoutProposals =
+  Object.keys(corejs3Polyfills)
+    .filter(name => !name.startsWith("esnext."))
+    .reduce((memo, key) => {
+      memo[key] = corejs3Polyfills[key];
+      return memo;
+    }, {});
 
 const corejs3PolyfillsWithShippedProposals =
   (corejs3ShippedProposalsList: string[]).reduce(
diff --git ORI/babel/packages/babel-traverse/test/evaluation.js ALT/babel/packages/babel-traverse/test/evaluation.js
index d90ab87ff..ff8625c01 100644
--- ORI/babel/packages/babel-traverse/test/evaluation.js
+++ ALT/babel/packages/babel-traverse/test/evaluation.js
@@ -107,12 +107,14 @@ describe("evaluation", function () {
     const member_expr = getPath(
       "var x = Math.min(2,Math.max(3,4));var y = Math.random();",
     );
-    const eval_member_expr = member_expr
-      .get("body.0.declarations.0.init")
-      .evaluate();
-    const eval_invalid_call = member_expr
-      .get("body.1.declarations.0.init")
-      .evaluate();
+    const eval_member_expr =
+      member_expr
+        .get("body.0.declarations.0.init")
+        .evaluate();
+    const eval_invalid_call =
+      member_expr
+        .get("body.1.declarations.0.init")
+        .evaluate();
     expect(eval_member_expr.value).toBe(2);
     expect(eval_invalid_call.confident).toBe(false);
   });
@@ -177,15 +179,18 @@ describe("evaluation", function () {
   });
 
   it("should deopt redefined primitives - undefined, NaN and Infinity", () => {
-    const eval_undef = getPath("let undefined; undefined;")
-      .get("body.1.expression")
-      .evaluate();
-    const eval_nan = getPath("let NaN; NaN;")
-      .get("body.1.expression")
-      .evaluate();
-    const eval_inf = getPath("let Infinity; Infinity;")
-      .get("body.1.expression")
-      .evaluate();
+    const eval_undef =
+      getPath("let undefined; undefined;")
+        .get("body.1.expression")
+        .evaluate();
+    const eval_nan =
+      getPath("let NaN; NaN;")
+        .get("body.1.expression")
+        .evaluate();
+    const eval_inf =
+      getPath("let Infinity; Infinity;")
+        .get("body.1.expression")
+        .evaluate();
     expect(eval_undef.confident).toBe(false);
     expect(eval_nan.confident).toBe(false);
     expect(eval_inf.confident).toBe(false);
diff --git ORI/babel/packages/babel-traverse/test/inference.js ALT/babel/packages/babel-traverse/test/inference.js
index dde8bd227..1d9d2614d 100644
--- ORI/babel/packages/babel-traverse/test/inference.js
+++ ALT/babel/packages/babel-traverse/test/inference.js
@@ -17,9 +17,10 @@ function getPath(code) {
 describe("inference", function () {
   describe("baseTypeStrictlyMatches", function () {
     it("it should work with null", function () {
-      const path = getPath("var x = null; x === null")
-        .get("body")[1]
-        .get("expression");
+      const path =
+        getPath("var x = null; x === null")
+          .get("body")[1]
+          .get("expression");
       const left = path.get("left");
       const right = path.get("right");
       const strictMatch = left.baseTypeStrictlyMatches(right);
@@ -28,9 +29,10 @@ describe("inference", function () {
     });
 
     it("it should work with numbers", function () {
-      const path = getPath("var x = 1; x === 2")
-        .get("body")[1]
-        .get("expression");
+      const path =
+        getPath("var x = 1; x === 2")
+          .get("body")[1]
+          .get("expression");
       const left = path.get("left");
       const right = path.get("right");
       const strictMatch = left.baseTypeStrictlyMatches(right);
@@ -39,9 +41,10 @@ describe("inference", function () {
     });
 
     it("it should bail when type changes", function () {
-      const path = getPath("var x = 1; if (foo) x = null;else x = 3; x === 2")
-        .get("body")[2]
-        .get("expression");
+      const path =
+        getPath("var x = 1; if (foo) x = null;else x = 3; x === 2")
+          .get("body")[2]
+          .get("expression");
       const left = path.get("left");
       const right = path.get("right");
 
@@ -51,9 +54,10 @@ describe("inference", function () {
     });
 
     it("it should differentiate between null and undefined", function () {
-      const path = getPath("var x; x === null")
-        .get("body")[1]
-        .get("expression");
+      const path =
+        getPath("var x; x === null")
+          .get("body")[1]
+          .get("expression");
       const left = path.get("left");
       const right = path.get("right");
       const strictMatch = left.baseTypeStrictlyMatches(right);
@@ -141,34 +145,38 @@ describe("inference", function () {
       ).toBeTruthy();
     });
     it("should infer Function from function", function () {
-      const path = getPath("(function (): string {})")
-        .get("body")[0]
-        .get("expression");
+      const path =
+        getPath("(function (): string {})")
+          .get("body")[0]
+          .get("expression");
       const type = path.getTypeAnnotation();
       expect(
         t.isGenericTypeAnnotation(type) && type.id.name === "Function",
       ).toBeTruthy();
     });
     it("should infer call return type using function", function () {
-      const path = getPath("(function (): string {})()")
-        .get("body")[0]
-        .get("expression");
+      const path =
+        getPath("(function (): string {})()")
+          .get("body")[0]
+          .get("expression");
       const type = path.getTypeAnnotation();
       expect(t.isStringTypeAnnotation(type)).toBeTruthy();
     });
     it("should infer call return type using async function", function () {
-      const path = getPath("(async function (): string {})()")
-        .get("body")[0]
-        .get("expression");
+      const path =
+        getPath("(async function (): string {})()")
+          .get("body")[0]
+          .get("expression");
       const type = path.getTypeAnnotation();
       expect(
         t.isGenericTypeAnnotation(type) && type.id.name === "Promise",
       ).toBeTruthy();
     });
     it("should infer call return type using async generator function", function () {
-      const path = getPath("(async function * (): string {})()")
-        .get("body")[0]
-        .get("expression");
+      const path =
+        getPath("(async function * (): string {})()")
+          .get("body")[0]
+          .get("expression");
       const type = path.getTypeAnnotation();
       expect(
         t.isGenericTypeAnnotation(type) && type.id.name === "AsyncIterator",
@@ -197,9 +205,10 @@ describe("inference", function () {
       expect(t.isNumberTypeAnnotation(type.types[1])).toBeTruthy();
     });
     it("should infer type of tagged template literal", function () {
-      const path = getPath("(function (): RegExp {}) `hey`")
-        .get("body")[0]
-        .get("expression");
+      const path =
+        getPath("(function (): RegExp {}) `hey`")
+          .get("body")[0]
+          .get("expression");
       const type = path.getTypeAnnotation();
       expect(
         t.isGenericTypeAnnotation(type) && type.id.name === "RegExp",
diff --git ORI/eslint-plugin-vue/docs/.vuepress/config.js ALT/eslint-plugin-vue/docs/.vuepress/config.js
index fb7719f..fdd16d2 100644
--- ORI/eslint-plugin-vue/docs/.vuepress/config.js
+++ ALT/eslint-plugin-vue/docs/.vuepress/config.js
@@ -60,21 +60,23 @@ const sidebarCategories = [
 
 const categorizedRules = []
 for (const { title, categoryIds } of sidebarCategories) {
-  const categoryRules = rules
-    .filter((rule) => rule.meta.docs.categories && !rule.meta.deprecated)
-    .filter((rule) =>
-      categoryIds.every((categoryId) =>
-        rule.meta.docs.categories.includes(categoryId)
+  const categoryRules =
+    rules
+      .filter((rule) => rule.meta.docs.categories && !rule.meta.deprecated)
+      .filter((rule) =>
+        categoryIds.every((categoryId) =>
+          rule.meta.docs.categories.includes(categoryId)
+        )
       )
-    )
-  const children = categoryRules
-    .filter(({ ruleId }) => {
-      const exists = categorizedRules.some(({ children }) =>
-        children.some(([, alreadyRuleId]) => alreadyRuleId === ruleId)
-      )
-      return !exists
-    })
-    .map(({ ruleId, name }) => [`/rules/${name}`, ruleId])
+  const children =
+    categoryRules
+      .filter(({ ruleId }) => {
+        const exists = categorizedRules.some(({ children }) =>
+          children.some(([, alreadyRuleId]) => alreadyRuleId === ruleId)
+        )
+        return !exists
+      })
+      .map(({ ruleId, name }) => [`/rules/${name}`, ruleId])
 
   if (children.length === 0) {
     continue
diff --git ORI/eslint-plugin-vue/eslint-internal-rules/require-meta-docs-url.js ALT/eslint-plugin-vue/eslint-internal-rules/require-meta-docs-url.js
index 88cd9de..ebc9087 100644
--- ORI/eslint-plugin-vue/eslint-internal-rules/require-meta-docs-url.js
+++ ALT/eslint-plugin-vue/eslint-internal-rules/require-meta-docs-url.js
@@ -68,64 +68,65 @@ function getRuleInfo(ast) {
   let exportsVarOverridden = false
   let exportsIsFunction = false
 
-  const exportNodes = ast.body
-    .filter((statement) => statement.type === 'ExpressionStatement')
-    .map((statement) => statement.expression)
-    .filter((expression) => expression.type === 'AssignmentExpression')
-    .filter((expression) => expression.left.type === 'MemberExpression')
-    .reduce((currentExports, node) => {
-      if (
-        node.left.object.type === 'Identifier' &&
-        node.left.object.name === 'module' &&
-        node.left.property.type === 'Identifier' &&
-        node.left.property.name === 'exports'
-      ) {
-        exportsVarOverridden = true
+  const exportNodes =
+    ast.body
+      .filter((statement) => statement.type === 'ExpressionStatement')
+      .map((statement) => statement.expression)
+      .filter((expression) => expression.type === 'AssignmentExpression')
+      .filter((expression) => expression.left.type === 'MemberExpression')
+      .reduce((currentExports, node) => {
+        if (
+          node.left.object.type === 'Identifier' &&
+          node.left.object.name === 'module' &&
+          node.left.property.type === 'Identifier' &&
+          node.left.property.name === 'exports'
+        ) {
+          exportsVarOverridden = true
 
-        if (isNormalFunctionExpression(node.right)) {
-          // Check `module.exports = function () {}`
+          if (isNormalFunctionExpression(node.right)) {
+            // Check `module.exports = function () {}`
 
-          exportsIsFunction = true
-          return { create: node.right, meta: null }
-        } else if (node.right.type === 'ObjectExpression') {
-          // Check `module.exports = { create: function () {}, meta: {} }`
+            exportsIsFunction = true
+            return { create: node.right, meta: null }
+          } else if (node.right.type === 'ObjectExpression') {
+            // Check `module.exports = { create: function () {}, meta: {} }`
 
-          exportsIsFunction = false
-          return node.right.properties.reduce((parsedProps, prop) => {
-            const keyValue = getKeyName(prop)
-            if (INTERESTING_KEYS.has(keyValue)) {
-              parsedProps[keyValue] = prop.value
-            }
-            return parsedProps
-          }, {})
-        }
-        return {}
-      } else if (
-        !exportsIsFunction &&
-        node.left.object.type === 'MemberExpression' &&
-        node.left.object.object.type === 'Identifier' &&
-        node.left.object.object.name === 'module' &&
-        node.left.object.property.type === 'Identifier' &&
-        node.left.object.property.name === 'exports' &&
-        node.left.property.type === 'Identifier' &&
-        INTERESTING_KEYS.has(node.left.property.name)
-      ) {
-        // Check `module.exports.create = () => {}`
+            exportsIsFunction = false
+            return node.right.properties.reduce((parsedProps, prop) => {
+              const keyValue = getKeyName(prop)
+              if (INTERESTING_KEYS.has(keyValue)) {
+                parsedProps[keyValue] = prop.value
+              }
+              return parsedProps
+            }, {})
+          }
+          return {}
+        } else if (
+          !exportsIsFunction &&
+          node.left.object.type === 'MemberExpression' &&
+          node.left.object.object.type === 'Identifier' &&
+          node.left.object.object.name === 'module' &&
+          node.left.object.property.type === 'Identifier' &&
+          node.left.object.property.name === 'exports' &&
+          node.left.property.type === 'Identifier' &&
+          INTERESTING_KEYS.has(node.left.property.name)
+        ) {
+          // Check `module.exports.create = () => {}`
 
-        currentExports[node.left.property.name] = node.right
-      } else if (
-        !exportsVarOverridden &&
-        node.left.object.type === 'Identifier' &&
-        node.left.object.name === 'exports' &&
-        node.left.property.type === 'Identifier' &&
-        INTERESTING_KEYS.has(node.left.property.name)
-      ) {
-        // Check `exports.create = () => {}`
+          currentExports[node.left.property.name] = node.right
+        } else if (
+          !exportsVarOverridden &&
+          node.left.object.type === 'Identifier' &&
+          node.left.object.name === 'exports' &&
+          node.left.property.type === 'Identifier' &&
+          INTERESTING_KEYS.has(node.left.property.name)
+        ) {
+          // Check `exports.create = () => {}`
 
-        currentExports[node.left.property.name] = node.right
-      }
-      return currentExports
-    }, {})
+          currentExports[node.left.property.name] = node.right
+        }
+        return currentExports
+      }, {})
 
   return Object.prototype.hasOwnProperty.call(exportNodes, 'create')
     ? Object.assign({ isNewStyle: !exportsIsFunction, meta: null }, exportNodes)
diff --git ORI/eslint-plugin-vue/lib/rules/experimental-script-setup-vars.js ALT/eslint-plugin-vue/lib/rules/experimental-script-setup-vars.js
index d215a27..b303b40 100644
--- ORI/eslint-plugin-vue/lib/rules/experimental-script-setup-vars.js
+++ ALT/eslint-plugin-vue/lib/rules/experimental-script-setup-vars.js
@@ -38,14 +38,15 @@ module.exports = {
       return {}
     }
     const sourceCode = context.getSourceCode()
-    const scriptElement = documentFragment.children
-      .filter(utils.isVElement)
-      .find(
-        (element) =>
-          element.name === 'script' &&
-          element.range[0] <= sourceCode.ast.range[0] &&
-          sourceCode.ast.range[1] <= element.range[1]
-      )
+    const scriptElement =
+      documentFragment.children
+        .filter(utils.isVElement)
+        .find(
+          (element) =>
+            element.name === 'script' &&
+            element.range[0] <= sourceCode.ast.range[0] &&
+            sourceCode.ast.range[1] <= element.range[1]
+        )
     if (!scriptElement) {
       return {}
     }
diff --git ORI/eslint-plugin-vue/lib/rules/no-deprecated-v-bind-sync.js ALT/eslint-plugin-vue/lib/rules/no-deprecated-v-bind-sync.js
index 786ecb9..eef0741 100644
--- ORI/eslint-plugin-vue/lib/rules/no-deprecated-v-bind-sync.js
+++ ALT/eslint-plugin-vue/lib/rules/no-deprecated-v-bind-sync.js
@@ -49,9 +49,10 @@ module.exports = {
                 return null
               }
 
-              const bindArgument = context
-                .getSourceCode()
-                .getText(node.key.argument)
+              const bindArgument =
+                context
+                  .getSourceCode()
+                  .getText(node.key.argument)
               return fixer.replaceText(node.key, `v-model:${bindArgument}`)
             }
           })
diff --git ORI/eslint-plugin-vue/lib/rules/no-potential-component-option-typo.js ALT/eslint-plugin-vue/lib/rules/no-potential-component-option-typo.js
index f3ac473..8b578ab 100644
--- ORI/eslint-plugin-vue/lib/rules/no-potential-component-option-typo.js
+++ ALT/eslint-plugin-vue/lib/rules/no-potential-component-option-typo.js
@@ -75,20 +75,21 @@ module.exports = {
       return {}
     }
     return utils.executeOnVue(context, (obj) => {
-      const componentInstanceOptions = obj.properties
-        .map((p) => {
-          if (p.type === 'Property') {
-            const name = utils.getStaticPropertyName(p)
-            if (name != null) {
-              return {
-                name,
-                key: p.key
+      const componentInstanceOptions =
+        obj.properties
+          .map((p) => {
+            if (p.type === 'Property') {
+              const name = utils.getStaticPropertyName(p)
+              if (name != null) {
+                return {
+                  name,
+                  key: p.key
+                }
               }
             }
-          }
-          return null
-        })
-        .filter(utils.isDef)
+            return null
+          })
+          .filter(utils.isDef)
 
       if (!componentInstanceOptions.length) {
         return
@@ -99,10 +100,11 @@ module.exports = {
         if (candidateOptionSet.has(name)) {
           return
         }
-        const potentialTypoList = candidateOptionList
-          .map((o) => ({ option: o, distance: utils.editDistance(o, name) }))
-          .filter(({ distance }) => distance <= threshold && distance > 0)
-          .sort((a, b) => a.distance - b.distance)
+        const potentialTypoList =
+          candidateOptionList
+            .map((o) => ({ option: o, distance: utils.editDistance(o, name) }))
+            .filter(({ distance }) => distance <= threshold && distance > 0)
+            .sort((a, b) => a.distance - b.distance)
         if (potentialTypoList.length) {
           context.report({
             node: id,
diff --git ORI/eslint-plugin-vue/lib/rules/no-unregistered-components.js ALT/eslint-plugin-vue/lib/rules/no-unregistered-components.js
index 6e6cb2a..5a3f29f 100644
--- ORI/eslint-plugin-vue/lib/rules/no-unregistered-components.js
+++ ALT/eslint-plugin-vue/lib/rules/no-unregistered-components.js
@@ -133,9 +133,10 @@ module.exports = {
           )
 
           // All registered components using kebab-case syntax
-          const componentsRegisteredAsKebabCase = registeredComponents
-            .filter(({ name }) => name === casing.kebabCase(name))
-            .map(({ name }) => name)
+          const componentsRegisteredAsKebabCase =
+            registeredComponents
+              .filter(({ name }) => name === casing.kebabCase(name))
+              .map(({ name }) => name)
 
           usedComponentNodes
             .filter(({ name }) => {
diff --git ORI/eslint-plugin-vue/lib/rules/no-useless-mustaches.js ALT/eslint-plugin-vue/lib/rules/no-useless-mustaches.js
index 709617e..9021628 100644
--- ORI/eslint-plugin-vue/lib/rules/no-useless-mustaches.js
+++ ALT/eslint-plugin-vue/lib/rules/no-useless-mustaches.js
@@ -93,9 +93,10 @@ module.exports = {
       }
 
       const tokenStore = context.parserServices.getTemplateBodyTokenStore()
-      const hasComment = tokenStore
-        .getTokens(node, { includeComments: true })
-        .some((t) => t.type === 'Block' || t.type === 'Line')
+      const hasComment =
+        tokenStore
+          .getTokens(node, { includeComments: true })
+          .some((t) => t.type === 'Block' || t.type === 'Line')
       if (ignoreIncludesComment && hasComment) {
         return
       }
diff --git ORI/eslint-plugin-vue/lib/rules/no-useless-v-bind.js ALT/eslint-plugin-vue/lib/rules/no-useless-v-bind.js
index c2440da..fd934d7 100644
--- ORI/eslint-plugin-vue/lib/rules/no-useless-v-bind.js
+++ ALT/eslint-plugin-vue/lib/rules/no-useless-v-bind.js
@@ -76,9 +76,10 @@ module.exports = {
       }
 
       const tokenStore = context.parserServices.getTemplateBodyTokenStore()
-      const hasComment = tokenStore
-        .getTokens(value, { includeComments: true })
-        .some((t) => t.type === 'Block' || t.type === 'Line')
+      const hasComment =
+        tokenStore
+          .getTokens(value, { includeComments: true })
+          .some((t) => t.type === 'Block' || t.type === 'Line')
       if (ignoreIncludesComment && hasComment) {
         return
       }
@@ -134,9 +135,10 @@ module.exports = {
           } else if (quoteChar === "'") {
             attrValue = strValue.replace(SINGLE_QUOTES_RE, '&apos;')
           } else {
-            attrValue = strValue
-              .replace(DOUBLE_QUOTES_RE, '&quot;')
-              .replace(SINGLE_QUOTES_RE, '&apos;')
+            attrValue =
+              strValue
+                .replace(DOUBLE_QUOTES_RE, '&quot;')
+                .replace(SINGLE_QUOTES_RE, '&apos;')
           }
           yield fixer.replaceText(expression, attrValue)
         }
diff --git ORI/eslint-plugin-vue/lib/rules/order-in-components.js ALT/eslint-plugin-vue/lib/rules/order-in-components.js
index 5f33734..0681c85 100644
--- ORI/eslint-plugin-vue/lib/rules/order-in-components.js
+++ ALT/eslint-plugin-vue/lib/rules/order-in-components.js
@@ -271,13 +271,14 @@ module.exports = {
           return
         }
         const propertiesAbove = properties.slice(0, i)
-        const unorderedProperties = propertiesAbove
-          .filter(
-            (p) => getOrderPosition(p.name) > getOrderPosition(property.name)
-          )
-          .sort((p1, p2) =>
-            getOrderPosition(p1.name) > getOrderPosition(p2.name) ? 1 : -1
-          )
+        const unorderedProperties =
+          propertiesAbove
+            .filter(
+              (p) => getOrderPosition(p.name) > getOrderPosition(property.name)
+            )
+            .sort((p1, p2) =>
+              getOrderPosition(p1.name) > getOrderPosition(p2.name) ? 1 : -1
+            )
 
         const firstUnorderedProperty = unorderedProperties[0]
 
@@ -294,15 +295,16 @@ module.exports = {
             *fix(fixer) {
               const propertyNode = property.node
               const firstUnorderedPropertyNode = firstUnorderedProperty.node
-              const hasSideEffectsPossibility = propertiesNodes
-                .slice(
-                  propertiesNodes.indexOf(firstUnorderedPropertyNode),
-                  propertiesNodes.indexOf(propertyNode) + 1
-                )
-                .some(
-                  (property) =>
-                    !isNotSideEffectsNode(property, sourceCode.visitorKeys)
-                )
+              const hasSideEffectsPossibility =
+                propertiesNodes
+                  .slice(
+                    propertiesNodes.indexOf(firstUnorderedPropertyNode),
+                    propertiesNodes.indexOf(propertyNode) + 1
+                  )
+                  .some(
+                    (property) =>
+                      !isNotSideEffectsNode(property, sourceCode.visitorKeys)
+                  )
               if (hasSideEffectsPossibility) {
                 return
               }
diff --git ORI/eslint-plugin-vue/lib/rules/require-default-prop.js ALT/eslint-plugin-vue/lib/rules/require-default-prop.js
index e0e29b6..cb70b3e 100644
--- ORI/eslint-plugin-vue/lib/rules/require-default-prop.js
+++ ALT/eslint-plugin-vue/lib/rules/require-default-prop.js
@@ -158,13 +158,14 @@ module.exports = {
     // ----------------------------------------------------------------------
 
     return utils.executeOnVue(context, (obj) => {
-      const props = utils
-        .getComponentProps(obj)
-        .filter(
-          (prop) =>
-            prop.value &&
-            !(prop.node.type === 'Property' && prop.node.shorthand)
-        )
+      const props =
+        utils
+          .getComponentProps(obj)
+          .filter(
+            (prop) =>
+              prop.value &&
+              !(prop.node.type === 'Property' && prop.node.shorthand)
+          )
 
       const propsWithoutDefault = findPropsWithoutDefaultValue(
         /** @type {ComponentObjectProp[]} */ (props)
diff --git ORI/eslint-plugin-vue/lib/utils/indent-common.js ALT/eslint-plugin-vue/lib/utils/indent-common.js
index c4818b4..b947776 100644
--- ORI/eslint-plugin-vue/lib/utils/indent-common.js
+++ ALT/eslint-plugin-vue/lib/utils/indent-common.js
@@ -1878,12 +1878,14 @@ module.exports.defineVisitor = function create(
     /** @param {TemplateLiteral} node */
     TemplateLiteral(node) {
       const firstToken = tokenStore.getFirstToken(node)
-      const quasiTokens = node.quasis
-        .slice(1)
-        .map((n) => tokenStore.getFirstToken(n))
-      const expressionToken = node.quasis
-        .slice(0, -1)
-        .map((n) => tokenStore.getTokenAfter(n))
+      const quasiTokens =
+        node.quasis
+          .slice(1)
+          .map((n) => tokenStore.getFirstToken(n))
+      const expressionToken =
+        node.quasis
+          .slice(0, -1)
+          .map((n) => tokenStore.getTokenAfter(n))
 
       setOffset(quasiTokens, 0, firstToken)
       setOffset(expressionToken, 1, firstToken)
diff --git ORI/eslint-plugin-vue/lib/utils/index.js ALT/eslint-plugin-vue/lib/utils/index.js
index 055ffb4..5e8d004 100644
--- ORI/eslint-plugin-vue/lib/utils/index.js
+++ ALT/eslint-plugin-vue/lib/utils/index.js
@@ -2033,9 +2033,10 @@ function getComponentComments(context) {
     return tokens
   }
   const sourceCode = context.getSourceCode()
-  tokens = sourceCode
-    .getAllComments()
-    .filter((comment) => /@vue\/component/g.test(comment.value))
+  tokens =
+    sourceCode
+      .getAllComments()
+      .filter((comment) => /@vue\/component/g.test(comment.value))
   componentComments.set(context, tokens)
   return tokens
 }
diff --git ORI/eslint-plugin-vue/tests/lib/rules/html-indent.js ALT/eslint-plugin-vue/tests/lib/rules/html-indent.js
index 316eb92..5f705b8 100644
--- ORI/eslint-plugin-vue/tests/lib/rules/html-indent.js
+++ ALT/eslint-plugin-vue/tests/lib/rules/html-indent.js
@@ -50,36 +50,41 @@ function loadPatterns(additionalValid, additionalInvalid) {
     }
     return Object.assign(baseObj, { code, filename })
   })
-  const invalid = valid
-    .map((pattern) => {
-      const kind =
-        (pattern.options && pattern.options[0]) === 'tab' ? 'tab' : 'space'
-      const output = pattern.code
-      const lines = output.split('\n').map((text, number) => ({
-        number,
-        text,
-        indentSize: (/^[ \t]+/.exec(text) || [''])[0].length
-      }))
-      const code = lines
-        .map((line) => line.text.replace(/^[ \t]+/, ''))
-        .join('\n')
-      const errors = lines
-        .map((line) =>
-          line.indentSize === 0
-            ? null
-            : {
-                message: `Expected indentation of ${line.indentSize} ${kind}${
-                  line.indentSize === 1 ? '' : 's'
-                } but found 0 ${kind}s.`,
-                line: line.number + 1
-              }
-        )
-        .filter(Boolean)
+  const invalid =
+    valid
+      .map((pattern) => {
+        const kind =
+          (pattern.options && pattern.options[0]) === 'tab' ? 'tab' : 'space'
+        const output = pattern.code
+        const lines = output.split('\n').map((text, number) => ({
+          number,
+          text,
+          indentSize: (/^[ \t]+/.exec(text) || [''])[0].length
+        }))
+        const code =
+          lines
+            .map((line) => line.text.replace(/^[ \t]+/, ''))
+            .join('\n')
+        const errors =
+          lines
+            .map((line) =>
+              line.indentSize === 0
+                ? null
+                : {
+                    message: `Expected indentation of ${
+                      line.indentSize
+                    } ${kind}${
+                      line.indentSize === 1 ? '' : 's'
+                    } but found 0 ${kind}s.`,
+                    line: line.number + 1
+                  }
+            )
+            .filter(Boolean)
 
-      return Object.assign({}, pattern, { code, output, errors })
-    })
-    .filter((invalid) => invalid.errors.length > 0) // Empty errors cannot be verified with eslint 7.3.
-    .filter(Boolean)
+        return Object.assign({}, pattern, { code, output, errors })
+      })
+      .filter((invalid) => invalid.errors.length > 0) // Empty errors cannot be verified with eslint 7.3.
+      .filter(Boolean)
 
   return {
     valid: valid.concat(additionalValid),
@@ -94,13 +99,15 @@ function loadPatterns(additionalValid, additionalInvalid) {
  */
 function unIndent(strings) {
   const templateValue = strings[0]
-  const lines = templateValue
-    .replace(/^\n/, '')
-    .replace(/\n\s*$/, '')
-    .split('\n')
-  const lineIndents = lines
-    .filter((line) => line.trim())
-    .map((line) => line.match(/ */)[0].length)
+  const lines =
+    templateValue
+      .replace(/^\n/, '')
+      .replace(/\n\s*$/, '')
+      .split('\n')
+  const lineIndents =
+    lines
+      .filter((line) => line.trim())
+      .map((line) => line.match(/ */)[0].length)
   const minLineIndent = Math.min.apply(null, lineIndents)
 
   return lines.map((line) => line.slice(minLineIndent)).join('\n')
diff --git ORI/eslint-plugin-vue/tests/lib/rules/script-indent.js ALT/eslint-plugin-vue/tests/lib/rules/script-indent.js
index 865e731..cbe90f2 100644
--- ORI/eslint-plugin-vue/tests/lib/rules/script-indent.js
+++ ALT/eslint-plugin-vue/tests/lib/rules/script-indent.js
@@ -51,36 +51,41 @@ function loadPatterns(additionalValid, additionalInvalid) {
     }
     return Object.assign(baseObj, { code, filename })
   })
-  const invalid = valid
-    .map((pattern) => {
-      const kind =
-        (pattern.options && pattern.options[0]) === 'tab' ? 'tab' : 'space'
-      const output = pattern.code
-      const lines = output.split('\n').map((text, number) => ({
-        number,
-        text,
-        indentSize: (/^[ \t]+/.exec(text) || [''])[0].length
-      }))
-      const code = lines
-        .map((line) => line.text.replace(/^[ \t]+/, ''))
-        .join('\n')
-      const errors = lines
-        .map((line) =>
-          line.indentSize === 0
-            ? null
-            : {
-                message: `Expected indentation of ${line.indentSize} ${kind}${
-                  line.indentSize === 1 ? '' : 's'
-                } but found 0 ${kind}s.`,
-                line: line.number + 1
-              }
-        )
-        .filter(Boolean)
+  const invalid =
+    valid
+      .map((pattern) => {
+        const kind =
+          (pattern.options && pattern.options[0]) === 'tab' ? 'tab' : 'space'
+        const output = pattern.code
+        const lines = output.split('\n').map((text, number) => ({
+          number,
+          text,
+          indentSize: (/^[ \t]+/.exec(text) || [''])[0].length
+        }))
+        const code =
+          lines
+            .map((line) => line.text.replace(/^[ \t]+/, ''))
+            .join('\n')
+        const errors =
+          lines
+            .map((line) =>
+              line.indentSize === 0
+                ? null
+                : {
+                    message: `Expected indentation of ${
+                      line.indentSize
+                    } ${kind}${
+                      line.indentSize === 1 ? '' : 's'
+                    } but found 0 ${kind}s.`,
+                    line: line.number + 1
+                  }
+            )
+            .filter(Boolean)
 
-      return Object.assign({}, pattern, { code, output, errors })
-    })
-    .filter((invalid) => invalid.errors.length > 0) // Empty errors cannot be verified with eslint 7.3.
-    .filter(Boolean)
+        return Object.assign({}, pattern, { code, output, errors })
+      })
+      .filter((invalid) => invalid.errors.length > 0) // Empty errors cannot be verified with eslint 7.3.
+      .filter(Boolean)
 
   return {
     valid: valid.concat(additionalValid),
@@ -95,13 +100,15 @@ function loadPatterns(additionalValid, additionalInvalid) {
  */
 function unIndent(strings) {
   const templateValue = strings[0]
-  const lines = templateValue
-    .replace(/^\n/, '')
-    .replace(/\n\s*$/, '')
-    .split('\n')
-  const lineIndents = lines
-    .filter((line) => line.trim())
-    .map((line) => line.match(/ */)[0].length)
+  const lines =
+    templateValue
+      .replace(/^\n/, '')
+      .replace(/\n\s*$/, '')
+      .split('\n')
+  const lineIndents =
+    lines
+      .filter((line) => line.trim())
+      .map((line) => line.match(/ */)[0].length)
   const minLineIndent = Math.min.apply(null, lineIndents)
 
   return lines.map((line) => line.slice(minLineIndent)).join('\n')
diff --git ORI/eslint-plugin-vue/tests/lib/rules/this-in-template.js ALT/eslint-plugin-vue/tests/lib/rules/this-in-template.js
index 5f36b57..00b174a 100644
--- ORI/eslint-plugin-vue/tests/lib/rules/this-in-template.js
+++ ALT/eslint-plugin-vue/tests/lib/rules/this-in-template.js
@@ -185,41 +185,43 @@ function createInvalidTests(prefix, options, message, type) {
 }
 
 ruleTester.run('this-in-template', rule, {
-  valid: ['', '<template></template>', '<template><div></div></template>']
-    .concat(createValidTests('', []))
-    .concat(createValidTests('', ['never']))
-    .concat(createValidTests('this.', ['always']))
-    .concat(createValidTests('this?.', ['always'])),
-  invalid: []
-    .concat(
-      createInvalidTests(
-        'this.',
-        [],
-        "Unexpected usage of 'this'.",
-        'ThisExpression'
-      ),
-      createInvalidTests(
-        'this?.',
-        [],
-        "Unexpected usage of 'this'.",
-        'ThisExpression'
+  valid:
+    ['', '<template></template>', '<template><div></div></template>']
+      .concat(createValidTests('', []))
+      .concat(createValidTests('', ['never']))
+      .concat(createValidTests('this.', ['always']))
+      .concat(createValidTests('this?.', ['always'])),
+  invalid:
+    []
+      .concat(
+        createInvalidTests(
+          'this.',
+          [],
+          "Unexpected usage of 'this'.",
+          'ThisExpression'
+        ),
+        createInvalidTests(
+          'this?.',
+          [],
+          "Unexpected usage of 'this'.",
+          'ThisExpression'
+        )
       )
-    )
-    .concat(
-      createInvalidTests(
-        'this.',
-        ['never'],
-        "Unexpected usage of 'this'.",
-        'ThisExpression'
-      ),
-      createInvalidTests(
-        'this?.',
-        ['never'],
-        "Unexpected usage of 'this'.",
-        'ThisExpression'
+      .concat(
+        createInvalidTests(
+          'this.',
+          ['never'],
+          "Unexpected usage of 'this'.",
+          'ThisExpression'
+        ),
+        createInvalidTests(
+          'this?.',
+          ['never'],
+          "Unexpected usage of 'this'.",
+          'ThisExpression'
+        )
+      )
+      .concat(
+        createInvalidTests('', ['always'], "Expected 'this'.", 'Identifier')
       )
-    )
-    .concat(
-      createInvalidTests('', ['always'], "Expected 'this'.", 'Identifier')
-    )
 })
diff --git ORI/eslint-plugin-vue/tests/lib/utils/vue-component.js ALT/eslint-plugin-vue/tests/lib/utils/vue-component.js
index 91da3d2..0845ea4 100644
--- ORI/eslint-plugin-vue/tests/lib/utils/vue-component.js
+++ ALT/eslint-plugin-vue/tests/lib/utils/vue-component.js
@@ -327,31 +327,33 @@ function invalidTests(ext) {
 
 const ruleTester = new RuleTester()
 ruleTester.run('vue-component', rule, {
-  valid: [
-    {
-      filename: 'test.js',
-      code: `export default { }`,
-      parserOptions
-    }
-  ]
-    .concat(validTests('js'))
-    .concat(validTests('jsx'))
-    .concat(validTests('vue')),
-  invalid: [
-    {
-      filename: 'test.vue',
-      code: `export default { }`,
-      parserOptions,
-      errors: [makeError(1)]
-    },
-    {
-      filename: 'test.jsx',
-      code: `export default { }`,
-      parserOptions,
-      errors: [makeError(1)]
-    }
-  ]
-    .concat(invalidTests('js'))
-    .concat(invalidTests('jsx'))
-    .concat(invalidTests('vue'))
+  valid:
+    [
+      {
+        filename: 'test.js',
+        code: `export default { }`,
+        parserOptions
+      }
+    ]
+      .concat(validTests('js'))
+      .concat(validTests('jsx'))
+      .concat(validTests('vue')),
+  invalid:
+    [
+      {
+        filename: 'test.vue',
+        code: `export default { }`,
+        parserOptions,
+        errors: [makeError(1)]
+      },
+      {
+        filename: 'test.jsx',
+        code: `export default { }`,
+        parserOptions,
+        errors: [makeError(1)]
+      }
+    ]
+      .concat(invalidTests('js'))
+      .concat(invalidTests('jsx'))
+      .concat(invalidTests('vue'))
 })
diff --git ORI/eslint-plugin-vue/tools/lib/categories.js ALT/eslint-plugin-vue/tools/lib/categories.js
index 9f7fd79..6f96b6f 100644
--- ORI/eslint-plugin-vue/tools/lib/categories.js
+++ ALT/eslint-plugin-vue/tools/lib/categories.js
@@ -75,12 +75,13 @@ for (const rule of rules) {
   }
 }
 
-module.exports = categoryIds
-  .map((categoryId) => ({
-    categoryId,
-    title: categoryTitles[categoryId],
-    rules: (categoryRules[categoryId] || []).filter(
-      (rule) => !rule.meta.deprecated
-    )
-  }))
-  .filter((category) => category.rules.length >= 1)
+module.exports =
+  categoryIds
+    .map((categoryId) => ({
+      categoryId,
+      title: categoryTitles[categoryId],
+      rules: (categoryRules[categoryId] || []).filter(
+        (rule) => !rule.meta.deprecated
+      )
+    }))
+    .filter((category) => category.rules.length >= 1)
diff --git ORI/eslint-plugin-vue/tools/lib/configs.js ALT/eslint-plugin-vue/tools/lib/configs.js
index 031f41e..14cc8c5 100644
--- ORI/eslint-plugin-vue/tools/lib/configs.js
+++ ALT/eslint-plugin-vue/tools/lib/configs.js
@@ -9,7 +9,8 @@ const fs = require('fs')
 const path = require('path')
 const ROOT = path.resolve(__dirname, '../../lib/configs')
 
-module.exports = fs
-  .readdirSync(ROOT)
-  .filter((file) => path.extname(file) === '.js')
-  .map((file) => path.basename(file, '.js'))
+module.exports =
+  fs
+    .readdirSync(ROOT)
+    .filter((file) => path.extname(file) === '.js')
+    .map((file) => path.basename(file, '.js'))
diff --git ORI/eslint-plugin-vue/tools/lib/rules.js ALT/eslint-plugin-vue/tools/lib/rules.js
index 745c635..27f4be5 100644
--- ORI/eslint-plugin-vue/tools/lib/rules.js
+++ ALT/eslint-plugin-vue/tools/lib/rules.js
@@ -9,20 +9,21 @@ const fs = require('fs')
 const path = require('path')
 const ROOT = path.resolve(__dirname, '../../lib/rules')
 
-module.exports = fs
-  .readdirSync(ROOT)
-  .filter((file) => path.extname(file) === '.js')
-  .map((file) => path.basename(file, '.js'))
-  .map((name) => {
-    const meta = { ...require(path.join(ROOT, name)).meta }
-    if (meta.docs && !meta.docs.categories && meta.docs.category) {
-      // for vue3 migration
-      meta.docs = { ...meta.docs }
-      meta.docs.categories = [meta.docs.category]
-    }
-    return {
-      ruleId: `vue/${name}`,
-      name,
-      meta
-    }
-  })
+module.exports =
+  fs
+    .readdirSync(ROOT)
+    .filter((file) => path.extname(file) === '.js')
+    .map((file) => path.basename(file, '.js'))
+    .map((name) => {
+      const meta = { ...require(path.join(ROOT, name)).meta }
+      if (meta.docs && !meta.docs.categories && meta.docs.category) {
+        // for vue3 migration
+        meta.docs = { ...meta.docs }
+        meta.docs.categories = [meta.docs.category]
+      }
+      return {
+        ruleId: `vue/${name}`,
+        name,
+        meta
+      }
+    })
diff --git ORI/eslint-plugin-vue/tools/update-docs-rules-index.js ALT/eslint-plugin-vue/tools/update-docs-rules-index.js
index 6e9c0f0..cf7d66e 100644
--- ORI/eslint-plugin-vue/tools/update-docs-rules-index.js
+++ ALT/eslint-plugin-vue/tools/update-docs-rules-index.js
@@ -37,17 +37,19 @@ function toRuleRow(rule) {
 function toDeprecatedRuleRow(rule) {
   const link = `[${rule.ruleId}](./${rule.name}.md)`
   const replacedRules = rule.meta.docs.replacedBy || []
-  const replacedBy = replacedRules
-    .map((name) => `[vue/${name}](./${name}.md)`)
-    .join(', ')
+  const replacedBy =
+    replacedRules
+      .map((name) => `[vue/${name}](./${name}.md)`)
+      .join(', ')
 
   return `| ${link} | ${replacedBy || '(no replacement)'} |`
 }
 
 // -----------------------------------------------------------------------------
-let rulesTableContent = categories
-  .map(
-    (category) => `
+let rulesTableContent =
+  categories
+    .map(
+      (category) => `
 ## ${category.title.vuepress}
 
 Enforce all the rules in this category, as well as all higher priority rules, with:
@@ -62,8 +64,8 @@ Enforce all the rules in this category, as well as all higher priority rules, wi
 |:--------|:------------|:---|
 ${category.rules.map(toRuleRow).join('\n')}
 `
-  )
-  .join('')
+    )
+    .join('')
 
 // -----------------------------------------------------------------------------
 if (uncategorizedRules.length || uncategorizedExtensionRule.length) {

diff --git ORI/prettier/scripts/build/cache.js ALT/prettier/scripts/build/cache.js
index 8f7b5c961..5a40389b6 100644
--- ORI/prettier/scripts/build/cache.js
+++ ALT/prettier/scripts/build/cache.js
@@ -67,9 +67,10 @@ class Cache {
     const bundle = await rollup(getRollupConfig(inputOptions));
     const { output } = await bundle.generate(outputOptions);
 
-    const modules = output
-      .filter((mod) => !/\0/.test(mod.facadeModuleId))
-      .map((mod) => [path.relative(ROOT, mod.facadeModuleId), mod.code]);
+    const modules =
+      output
+        .filter((mod) => !/\0/.test(mod.facadeModuleId))
+        .map((mod) => [path.relative(ROOT, mod.facadeModuleId), mod.code]);
 
     for (const [id, code] of modules) {
       newFiles.push(id);
diff --git ORI/prettier/scripts/draft-blog-post.js ALT/prettier/scripts/draft-blog-post.js
index eca419567..06997825b 100644
--- ORI/prettier/scripts/draft-blog-post.js
+++ ALT/prettier/scripts/draft-blog-post.js
@@ -51,9 +51,10 @@ const categoriesByDir = categories.reduce((result, category) => {
   return result;
 }, {});
 
-const dirs = fs
-  .readdirSync(changelogUnreleasedDir, { withFileTypes: true })
-  .filter((entry) => entry.isDirectory());
+const dirs =
+  fs
+    .readdirSync(changelogUnreleasedDir, { withFileTypes: true })
+    .filter((entry) => entry.isDirectory());
 
 for (const dir of dirs) {
   const dirPath = path.join(changelogUnreleasedDir, dir.name);
@@ -63,20 +64,22 @@ for (const dir of dirs) {
     throw new Error("Unknown category: " + dir.name);
   }
 
-  category.entries = fs
-    .readdirSync(dirPath)
-    .filter((fileName) => /^\d+\.md$/.test(fileName))
-    .map((fileName) => {
-      const [title, ...rest] = fs
-        .readFileSync(path.join(dirPath, fileName), "utf8")
-        .trim()
-        .split("\n");
-      return {
-        breaking: title.includes("[BREAKING]"),
-        highlight: title.includes("[HIGHLIGHT]"),
-        content: [processTitle(title), ...rest].join("\n"),
-      };
-    });
+  category.entries =
+    fs
+      .readdirSync(dirPath)
+      .filter((fileName) => /^\d+\.md$/.test(fileName))
+      .map((fileName) => {
+        const [title, ...rest] =
+          fs
+            .readFileSync(path.join(dirPath, fileName), "utf8")
+            .trim()
+            .split("\n");
+        return {
+          breaking: title.includes("[BREAKING]"),
+          highlight: title.includes("[HIGHLIGHT]"),
+          content: [processTitle(title), ...rest].join("\n"),
+        };
+      });
 }
 
 rimraf.sync(postGlob);
diff --git ORI/prettier/scripts/release/release.js ALT/prettier/scripts/release/release.js
index f063191be..feacf9a1a 100644
--- ORI/prettier/scripts/release/release.js
+++ ALT/prettier/scripts/release/release.js
@@ -18,9 +18,10 @@ async function run() {
     alias: { v: "version" },
   });
 
-  const previousVersion = execSync("git describe --tags --abbrev=0")
-    .toString()
-    .trim();
+  const previousVersion =
+    execSync("git describe --tags --abbrev=0")
+      .toString()
+      .trim();
 
   if (semver.parse(previousVersion) === null) {
     throw new Error(`Unexpected previousVersion: ${previousVersion}`);
diff --git ORI/prettier/src/cli/expand-patterns.js ALT/prettier/src/cli/expand-patterns.js
index b840ce723..f130df44d 100644
--- ORI/prettier/src/cli/expand-patterns.js
+++ ALT/prettier/src/cli/expand-patterns.js
@@ -55,9 +55,10 @@ function* expandPatternsInternal(context) {
 
   const globOptions = {
     dot: true,
-    ignore: Object.entries(silentlyIgnoredDirs)
-      .filter(([, ignored]) => ignored)
-      .map(([dir]) => "**/" + dir),
+    ignore:
+      Object.entries(silentlyIgnoredDirs)
+        .filter(([, ignored]) => ignored)
+        .map(([dir]) => "**/" + dir),
   };
 
   let supportedFilesGlob;
diff --git ORI/prettier/src/cli/usage.js ALT/prettier/src/cli/usage.js
index 2685b3bc6..3ce552a82 100644
--- ORI/prettier/src/cli/usage.js
+++ ALT/prettier/src/cli/usage.js
@@ -140,11 +140,12 @@ function createUsage(context) {
   ];
 
   const optionsUsage = allCategories.map((category) => {
-    const categoryOptions = groupedOptions[category]
-      .map((option) =>
-        createOptionUsage(context, option, OPTION_USAGE_THRESHOLD)
-      )
-      .join("\n");
+    const categoryOptions =
+      groupedOptions[category]
+        .map((option) =>
+          createOptionUsage(context, option, OPTION_USAGE_THRESHOLD)
+        )
+        .join("\n");
     return `${category} options:\n\n${indent(categoryOptions, 2)}`;
   });
 
diff --git ORI/prettier/src/document/doc-printer.js ALT/prettier/src/document/doc-printer.js
index 5e2558f1a..3769f4f1a 100644
--- ORI/prettier/src/document/doc-printer.js
+++ ALT/prettier/src/document/doc-printer.js
@@ -546,9 +546,10 @@ function printDocToString(doc, options) {
       cursorPlaceholderIndex + 1
     );
     const beforeCursor = out.slice(0, cursorPlaceholderIndex).join("");
-    const aroundCursor = out
-      .slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex)
-      .join("");
+    const aroundCursor =
+      out
+        .slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex)
+        .join("");
     const afterCursor = out.slice(otherCursorPlaceholderIndex + 1).join("");
 
     return {
diff --git ORI/prettier/src/language-handlebars/printer-glimmer.js ALT/prettier/src/language-handlebars/printer-glimmer.js
index fccfa2dea..e0d17fde6 100644
--- ORI/prettier/src/language-handlebars/printer-glimmer.js
+++ ALT/prettier/src/language-handlebars/printer-glimmer.js
@@ -406,14 +406,15 @@ function print(path, options, print) {
 function printStartingTag(path, print) {
   const node = path.getValue();
 
-  const attributesLike = ["attributes", "modifiers", "comments", "blockParams"]
-    .filter((property) => isNonEmptyArray(node[property]))
-    .map((property) => [
-      line,
-      property === "blockParams"
-        ? printBlockParams(node)
-        : join(line, path.map(print, property)),
-    ]);
+  const attributesLike =
+    ["attributes", "modifiers", "comments", "blockParams"]
+      .filter((property) => isNonEmptyArray(node[property]))
+      .map((property) => [
+        line,
+        property === "blockParams"
+          ? printBlockParams(node)
+          : join(line, path.map(print, property)),
+      ]);
 
   return [
     "<",
diff --git ORI/prettier/src/language-html/parser-html.js ALT/prettier/src/language-html/parser-html.js
index 748c3cf7a..a407c41a9 100644
--- ORI/prettier/src/language-html/parser-html.js
+++ ALT/prettier/src/language-html/parser-html.js
@@ -196,9 +196,10 @@ function ngHtmlParser(
         }
       }
     } else if (node instanceof Comment) {
-      node.value = node.sourceSpan
-        .toString()
-        .slice("<!--".length, -"-->".length);
+      node.value =
+        node.sourceSpan
+          .toString()
+          .slice("<!--".length, -"-->".length);
     } else if (node instanceof Text) {
       node.value = node.sourceSpan.toString();
     }
diff --git ORI/prettier/src/language-html/print-preprocess.js ALT/prettier/src/language-html/print-preprocess.js
index 600947b77..25d831b9e 100644
--- ORI/prettier/src/language-html/print-preprocess.js
+++ ALT/prettier/src/language-html/print-preprocess.js
@@ -327,60 +327,61 @@ function extractWhitespaces(ast /*, options*/) {
     return node.clone({
       isWhitespaceSensitive,
       isIndentationSensitive,
-      children: node.children
-        // extract whitespace nodes
-        .reduce((newChildren, child) => {
-          if (child.type !== "text" || isWhitespaceSensitive) {
-            return [...newChildren, child];
-          }
-
-          const localChildren = [];
-
-          const { leadingWhitespace, text, trailingWhitespace } =
-            getLeadingAndTrailingHtmlWhitespace(child.value);
-
-          if (leadingWhitespace) {
-            localChildren.push({ type: TYPE_WHITESPACE });
-          }
-
-          if (text) {
-            localChildren.push({
-              type: "text",
-              value: text,
-              sourceSpan: new ParseSourceSpan(
-                child.sourceSpan.start.moveBy(leadingWhitespace.length),
-                child.sourceSpan.end.moveBy(-trailingWhitespace.length)
-              ),
-            });
-          }
-
-          if (trailingWhitespace) {
-            localChildren.push({ type: TYPE_WHITESPACE });
-          }
-
-          return [...newChildren, ...localChildren];
-        }, [])
-        // set hasLeadingSpaces/hasTrailingSpaces and filter whitespace nodes
-        .reduce((newChildren, child, i, children) => {
-          if (child.type === TYPE_WHITESPACE) {
-            return newChildren;
-          }
-
-          const hasLeadingSpaces =
-            i !== 0 && children[i - 1].type === TYPE_WHITESPACE;
-          const hasTrailingSpaces =
-            i !== children.length - 1 &&
-            children[i + 1].type === TYPE_WHITESPACE;
-
-          return [
-            ...newChildren,
-            {
-              ...child,
-              hasLeadingSpaces,
-              hasTrailingSpaces,
-            },
-          ];
-        }, []),
+      children:
+        node.children
+          // extract whitespace nodes
+          .reduce((newChildren, child) => {
+            if (child.type !== "text" || isWhitespaceSensitive) {
+              return [...newChildren, child];
+            }
+
+            const localChildren = [];
+
+            const { leadingWhitespace, text, trailingWhitespace } =
+              getLeadingAndTrailingHtmlWhitespace(child.value);
+
+            if (leadingWhitespace) {
+              localChildren.push({ type: TYPE_WHITESPACE });
+            }
+
+            if (text) {
+              localChildren.push({
+                type: "text",
+                value: text,
+                sourceSpan: new ParseSourceSpan(
+                  child.sourceSpan.start.moveBy(leadingWhitespace.length),
+                  child.sourceSpan.end.moveBy(-trailingWhitespace.length)
+                ),
+              });
+            }
+
+            if (trailingWhitespace) {
+              localChildren.push({ type: TYPE_WHITESPACE });
+            }
+
+            return [...newChildren, ...localChildren];
+          }, [])
+          // set hasLeadingSpaces/hasTrailingSpaces and filter whitespace nodes
+          .reduce((newChildren, child, i, children) => {
+            if (child.type === TYPE_WHITESPACE) {
+              return newChildren;
+            }
+
+            const hasLeadingSpaces =
+              i !== 0 && children[i - 1].type === TYPE_WHITESPACE;
+            const hasTrailingSpaces =
+              i !== children.length - 1 &&
+              children[i + 1].type === TYPE_WHITESPACE;
+
+            return [
+              ...newChildren,
+              {
+                ...child,
+                hasLeadingSpaces,
+                hasTrailingSpaces,
+              },
+            ];
+          }, []),
     });
   });
 }
@@ -439,28 +440,32 @@ function addIsSpaceSensitive(ast, options) {
     }
 
     return node.clone({
-      children: node.children
-        .map((child) => ({
-          ...child,
-          isLeadingSpaceSensitive: isLeadingSpaceSensitiveNode(child, options),
-          isTrailingSpaceSensitive: isTrailingSpaceSensitiveNode(
-            child,
-            options
-          ),
-        }))
-        .map((child, index, children) => ({
-          ...child,
-          isLeadingSpaceSensitive:
-            index === 0
-              ? child.isLeadingSpaceSensitive
-              : children[index - 1].isTrailingSpaceSensitive &&
-                child.isLeadingSpaceSensitive,
-          isTrailingSpaceSensitive:
-            index === children.length - 1
-              ? child.isTrailingSpaceSensitive
-              : children[index + 1].isLeadingSpaceSensitive &&
-                child.isTrailingSpaceSensitive,
-        })),
+      children:
+        node.children
+          .map((child) => ({
+            ...child,
+            isLeadingSpaceSensitive: isLeadingSpaceSensitiveNode(
+              child,
+              options
+            ),
+            isTrailingSpaceSensitive: isTrailingSpaceSensitiveNode(
+              child,
+              options
+            ),
+          }))
+          .map((child, index, children) => ({
+            ...child,
+            isLeadingSpaceSensitive:
+              index === 0
+                ? child.isLeadingSpaceSensitive
+                : children[index - 1].isTrailingSpaceSensitive &&
+                  child.isLeadingSpaceSensitive,
+            isTrailingSpaceSensitive:
+              index === children.length - 1
+                ? child.isTrailingSpaceSensitive
+                : children[index + 1].isLeadingSpaceSensitive &&
+                  child.isTrailingSpaceSensitive,
+          })),
     });
   });
 }
diff --git ORI/prettier/src/language-html/syntax-attribute.js ALT/prettier/src/language-html/syntax-attribute.js
index 3180ae3b2..e37ba122d 100644
--- ORI/prettier/src/language-html/syntax-attribute.js
+++ ALT/prettier/src/language-html/syntax-attribute.js
@@ -30,9 +30,10 @@ function printImgSrcset(value) {
   const urls = srcset.map((src) => src.url);
   const maxUrlLength = getMax(urls.map((url) => url.length));
 
-  const descriptors = srcset
-    .map((src) => src[key])
-    .map((descriptor) => (descriptor ? descriptor.toString() : ""));
+  const descriptors =
+    srcset
+      .map((src) => src[key])
+      .map((descriptor) => (descriptor ? descriptor.toString() : ""));
   const descriptorLeftLengths = descriptors.map((descriptor) => {
     const index = descriptor.indexOf(".");
     return index === -1 ? descriptor.length : index;
diff --git ORI/prettier/src/language-js/embed/html.js ALT/prettier/src/language-js/embed/html.js
index cb2e41306..4e0b11d02 100644
--- ORI/prettier/src/language-js/embed/html.js
+++ ALT/prettier/src/language-js/embed/html.js
@@ -19,13 +19,14 @@ function format(path, print, textToDoc, options, { parser }) {
   const composePlaceholder = (index) =>
     `PRETTIER_HTML_PLACEHOLDER_${index}_${counter}_IN_JS`;
 
-  const text = node.quasis
-    .map((quasi, index, quasis) =>
-      index === quasis.length - 1
-        ? quasi.value.cooked
-        : quasi.value.cooked + composePlaceholder(index)
-    )
-    .join("");
+  const text =
+    node.quasis
+      .map((quasi, index, quasis) =>
+        index === quasis.length - 1
+          ? quasi.value.cooked
+          : quasi.value.cooked + composePlaceholder(index)
+      )
+      .join("");
 
   const expressionDocs = printTemplateExpressions(path, print);
   if (expressionDocs.length === 0 && text.trim().length === 0) {
diff --git ORI/prettier/src/language-js/print/member-chain.js ALT/prettier/src/language-js/print/member-chain.js
index b12c6c191..baf115b34 100644
--- ORI/prettier/src/language-js/print/member-chain.js
+++ ALT/prettier/src/language-js/print/member-chain.js
@@ -360,9 +360,10 @@ function printMemberChain(path, options, print) {
     printIndentedGroup(groups.slice(shouldMerge ? 2 : 1)),
   ];
 
-  const callExpressions = printedNodes
-    .map(({ node }) => node)
-    .filter(isCallOrOptionalCallExpression);
+  const callExpressions =
+    printedNodes
+      .map(({ node }) => node)
+      .filter(isCallOrOptionalCallExpression);
 
   function lastGroupWillBreakAndOtherCallsHaveFunctionArguments() {
     const lastGroupNode = getLast(getLast(groups)).node;
diff --git ORI/prettier/src/language-js/print/object.js ALT/prettier/src/language-js/print/object.js
index c8ff9dc45..b1c3d3223 100644
--- ORI/prettier/src/language-js/print/object.js
+++ ALT/prettier/src/language-js/print/object.js
@@ -110,24 +110,25 @@ function printObject(path, options, print) {
 
   /** @type {Doc[]} */
   let separatorParts = [];
-  const props = propsAndLoc
-    .sort((a, b) => a.loc - b.loc)
-    .map((prop) => {
-      const result = [...separatorParts, group(prop.printed)];
-      separatorParts = [separator, line];
-      if (
-        (prop.node.type === "TSPropertySignature" ||
-          prop.node.type === "TSMethodSignature" ||
-          prop.node.type === "TSConstructSignatureDeclaration") &&
-        hasComment(prop.node, CommentCheckFlags.PrettierIgnore)
-      ) {
-        separatorParts.shift();
-      }
-      if (isNextLineEmpty(prop.node, options)) {
-        separatorParts.push(hardline);
-      }
-      return result;
-    });
+  const props =
+    propsAndLoc
+      .sort((a, b) => a.loc - b.loc)
+      .map((prop) => {
+        const result = [...separatorParts, group(prop.printed)];
+        separatorParts = [separator, line];
+        if (
+          (prop.node.type === "TSPropertySignature" ||
+            prop.node.type === "TSMethodSignature" ||
+            prop.node.type === "TSConstructSignatureDeclaration") &&
+          hasComment(prop.node, CommentCheckFlags.PrettierIgnore)
+        ) {
+          separatorParts.shift();
+        }
+        if (isNextLineEmpty(prop.node, options)) {
+          separatorParts.push(hardline);
+        }
+        return result;
+      });
 
   if (n.inexact) {
     let printed;
diff --git ORI/prettier/src/language-js/printer-estree.js ALT/prettier/src/language-js/printer-estree.js
index a2fc6dbd5..df8ef9578 100644
--- ORI/prettier/src/language-js/printer-estree.js
+++ ALT/prettier/src/language-js/printer-estree.js
@@ -1034,9 +1034,10 @@ function printPathNoParens(path, options, print, args) {
         const commentStartIndex = options.originalText.lastIndexOf("/*", start);
         const commentEndIndex = options.originalText.indexOf("*/", end);
         if (commentStartIndex !== -1 && commentEndIndex !== -1) {
-          const comment = options.originalText
-            .slice(commentStartIndex + 2, commentEndIndex)
-            .trim();
+          const comment =
+            options.originalText
+              .slice(commentStartIndex + 2, commentEndIndex)
+              .trim();
           if (
             comment.startsWith("::") &&
             !comment.includes("/*") &&
diff --git ORI/prettier/src/language-markdown/clean.js ALT/prettier/src/language-markdown/clean.js
index 869eef9dd..fffd2e578 100644
--- ORI/prettier/src/language-markdown/clean.js
+++ ALT/prettier/src/language-markdown/clean.js
@@ -43,10 +43,11 @@ function clean(ast, newObj, parent) {
   }
 
   if (ast.type === "definition" || ast.type === "linkReference") {
-    newObj.label = ast.label
-      .trim()
-      .replace(/[\t\n ]+/g, " ")
-      .toLowerCase();
+    newObj.label =
+      ast.label
+        .trim()
+        .replace(/[\t\n ]+/g, " ")
+        .toLowerCase();
   }
 
   if (
diff --git ORI/prettier/src/language-markdown/constants.evaluate.js ALT/prettier/src/language-markdown/constants.evaluate.js
index 45c799f9e..024d46b41 100644
--- ORI/prettier/src/language-markdown/constants.evaluate.js
+++ ALT/prettier/src/language-markdown/constants.evaluate.js
@@ -22,9 +22,10 @@ const cjkPattern = `(?:${cjkRegex()
   Block: ["Variation_Selectors", "Variation_Selectors_Supplement"],
 }).toString()})?`;
 
-const kPattern = unicodeRegex({ Script: ["Hangul"] })
-  .union(unicodeRegex({ Script_Extensions: ["Hangul"] }))
-  .toString();
+const kPattern =
+  unicodeRegex({ Script: ["Hangul"] })
+    .union(unicodeRegex({ Script_Extensions: ["Hangul"] }))
+    .toString();
 
 // http://spec.commonmark.org/0.25/#ascii-punctuation-character
 const asciiPunctuationCharset =
diff --git ORI/prettier/src/language-markdown/parser-markdown.js ALT/prettier/src/language-markdown/parser-markdown.js
index 494b77977..d7120cfbe 100644
--- ORI/prettier/src/language-markdown/parser-markdown.js
+++ ALT/prettier/src/language-markdown/parser-markdown.js
@@ -26,19 +26,20 @@ const mdx = require("./mdx");
  */
 function createParse({ isMDX }) {
   return (text) => {
-    const processor = unified()
-      .use(remarkParse, {
-        commonmark: true,
-        ...(isMDX && { blocks: [mdx.BLOCKS_REGEX] }),
-      })
-      .use(footnotes)
-      .use(frontMatter)
-      .use(remarkMath)
-      .use(isMDX ? mdx.esSyntax : identity)
-      .use(liquid)
-      .use(isMDX ? htmlToJsx : identity)
-      .use(wikiLink)
-      .use(looseItems);
+    const processor =
+      unified()
+        .use(remarkParse, {
+          commonmark: true,
+          ...(isMDX && { blocks: [mdx.BLOCKS_REGEX] }),
+        })
+        .use(footnotes)
+        .use(frontMatter)
+        .use(remarkMath)
+        .use(isMDX ? mdx.esSyntax : identity)
+        .use(liquid)
+        .use(isMDX ? htmlToJsx : identity)
+        .use(wikiLink)
+        .use(looseItems);
     return processor.runSync(processor.parse(text));
   };
 }
diff --git ORI/prettier/src/language-markdown/printer-markdown.js ALT/prettier/src/language-markdown/printer-markdown.js
index 179132dc2..34b6c2eb8 100644
--- ORI/prettier/src/language-markdown/printer-markdown.js
+++ ALT/prettier/src/language-markdown/printer-markdown.js
@@ -96,22 +96,23 @@ function genericPrint(path, options, print) {
     case "sentence":
       return printChildren(path, options, print);
     case "word": {
-      let escapedValue = node.value
-        .replace(/\*/g, "\\$&") // escape all `*`
-        .replace(
-          new RegExp(
-            [
-              `(^|${punctuationPattern})(_+)`,
-              `(_+)(${punctuationPattern}|$)`,
-            ].join("|"),
-            "g"
-          ),
-          (_, text1, underscore1, underscore2, text2) =>
-            (underscore1
-              ? `${text1}${underscore1}`
-              : `${underscore2}${text2}`
-            ).replace(/_/g, "\\_")
-        ); // escape all `_` except concating with non-punctuation, e.g. `1_2_3` is not considered emphasis
+      let escapedValue =
+        node.value
+          .replace(/\*/g, "\\$&") // escape all `*`
+          .replace(
+            new RegExp(
+              [
+                `(^|${punctuationPattern})(_+)`,
+                `(_+)(${punctuationPattern}|$)`,
+              ].join("|"),
+              "g"
+            ),
+            (_, text1, underscore1, underscore2, text2) =>
+              (underscore1
+                ? `${text1}${underscore1}`
+                : `${underscore2}${text2}`
+              ).replace(/_/g, "\\_")
+          ); // escape all `_` except concating with non-punctuation, e.g. `1_2_3` is not considered emphasis
 
       const isFirstSentence = (node, name, index) =>
         node.type === "sentence" && index === 0;
diff --git ORI/prettier/src/language-markdown/utils.js ALT/prettier/src/language-markdown/utils.js
index 4b7d2608e..926ca0f06 100644
--- ORI/prettier/src/language-markdown/utils.js
+++ ALT/prettier/src/language-markdown/utils.js
@@ -153,12 +153,13 @@ function splitText(text, options) {
 }
 
 function getOrderedListItemInfo(orderListItem, originalText) {
-  const [, numberText, marker, leadingSpaces] = originalText
-    .slice(
-      orderListItem.position.start.offset,
-      orderListItem.position.end.offset
-    )
-    .match(/^\s*(\d+)(\.|\))(\s*)/);
+  const [, numberText, marker, leadingSpaces] =
+    originalText
+      .slice(
+        orderListItem.position.start.offset,
+        orderListItem.position.end.offset
+      )
+      .match(/^\s*(\d+)(\.|\))(\s*)/);
 
   return { numberText, marker, leadingSpaces };
 }
diff --git ORI/prettier/src/language-yaml/utils.js ALT/prettier/src/language-yaml/utils.js
index 2151c65bc..fef001f74 100644
--- ORI/prettier/src/language-yaml/utils.js
+++ ALT/prettier/src/language-yaml/utils.js
@@ -193,17 +193,18 @@ function splitWithSingleSpace(text) {
 }
 
 function getFlowScalarLineContents(nodeType, content, options) {
-  const rawLineContents = content
-    .split("\n")
-    .map((lineContent, index, lineContents) =>
-      index === 0 && index === lineContents.length - 1
-        ? lineContent
-        : index !== 0 && index !== lineContents.length - 1
-        ? lineContent.trim()
-        : index === 0
-        ? lineContent.trimEnd()
-        : lineContent.trimStart()
-    );
+  const rawLineContents =
+    content
+      .split("\n")
+      .map((lineContent, index, lineContents) =>
+        index === 0 && index === lineContents.length - 1
+          ? lineContent
+          : index !== 0 && index !== lineContents.length - 1
+          ? lineContent.trim()
+          : index === 0
+          ? lineContent.trimEnd()
+          : lineContent.trimStart()
+      );
 
   if (options.proseWrap === "preserve") {
     return rawLineContents.map((lineContent) =>
@@ -260,9 +261,10 @@ function getBlockValueLineContents(
         )
       : node.indent - 1 + parentIndent;
 
-  const rawLineContents = content
-    .split("\n")
-    .map((lineContent) => lineContent.slice(leadingSpaceCount));
+  const rawLineContents =
+    content
+      .split("\n")
+      .map((lineContent) => lineContent.slice(leadingSpaceCount));
 
   if (options.proseWrap === "preserve" || node.type === "blockLiteral") {
     return removeUnnecessaryTrailingNewlines(
diff --git ORI/prettier/src/main/options.js ALT/prettier/src/main/options.js
index a12b5bcad..fbd13b464 100644
--- ORI/prettier/src/main/options.js
+++ ALT/prettier/src/main/options.js
@@ -68,19 +68,20 @@ function normalize(options, opts = {}) {
   const plugin = getPlugin(rawOptions);
   rawOptions.printer = plugin.printers[rawOptions.astFormat];
 
-  const pluginDefaults = supportOptions
-    .filter(
-      (optionInfo) =>
-        optionInfo.pluginDefaults &&
-        optionInfo.pluginDefaults[plugin.name] !== undefined
-    )
-    .reduce(
-      (reduced, optionInfo) =>
-        Object.assign(reduced, {
-          [optionInfo.name]: optionInfo.pluginDefaults[plugin.name],
-        }),
-      {}
-    );
+  const pluginDefaults =
+    supportOptions
+      .filter(
+        (optionInfo) =>
+          optionInfo.pluginDefaults &&
+          optionInfo.pluginDefaults[plugin.name] !== undefined
+      )
+      .reduce(
+        (reduced, optionInfo) =>
+          Object.assign(reduced, {
+            [optionInfo.name]: optionInfo.pluginDefaults[plugin.name],
+          }),
+        {}
+      );
 
   const mixedDefaults = { ...defaults, ...pluginDefaults };
 
diff --git ORI/prettier/src/main/support.js ALT/prettier/src/main/support.js
index a6aa0d83f..37c9b567c 100644
--- ORI/prettier/src/main/support.js
+++ ALT/prettier/src/main/support.js
@@ -29,54 +29,57 @@ function getSupportInfo({
   // we need to treat it as the normal one so as to test new features.
   const version = currentVersion.split("-", 1)[0];
 
-  const languages = plugins
-    .reduce((all, plugin) => [...all, ...(plugin.languages || [])], [])
-    .filter(filterSince);
+  const languages =
+    plugins
+      .reduce((all, plugin) => [...all, ...(plugin.languages || [])], [])
+      .filter(filterSince);
 
-  const options = arrayify(
-    Object.assign({}, ...plugins.map(({ options }) => options), coreOptions),
-    "name"
-  )
-    .filter((option) => filterSince(option) && filterDeprecated(option))
-    .sort((a, b) => (a.name === b.name ? 0 : a.name < b.name ? -1 : 1))
-    .map(mapInternal)
-    .map((option) => {
-      option = { ...option };
+  const options =
+    arrayify(
+      Object.assign({}, ...plugins.map(({ options }) => options), coreOptions),
+      "name"
+    )
+      .filter((option) => filterSince(option) && filterDeprecated(option))
+      .sort((a, b) => (a.name === b.name ? 0 : a.name < b.name ? -1 : 1))
+      .map(mapInternal)
+      .map((option) => {
+        option = { ...option };
 
-      if (Array.isArray(option.default)) {
-        option.default =
-          option.default.length === 1
-            ? option.default[0].value
-            : option.default
-                .filter(filterSince)
-                .sort((info1, info2) =>
-                  semver.compare(info2.since, info1.since)
-                )[0].value;
-      }
+        if (Array.isArray(option.default)) {
+          option.default =
+            option.default.length === 1
+              ? option.default[0].value
+              : option.default
+                  .filter(filterSince)
+                  .sort((info1, info2) =>
+                    semver.compare(info2.since, info1.since)
+                  )[0].value;
+        }
 
-      if (Array.isArray(option.choices)) {
-        option.choices = option.choices.filter(
-          (option) => filterSince(option) && filterDeprecated(option)
-        );
+        if (Array.isArray(option.choices)) {
+          option.choices = option.choices.filter(
+            (option) => filterSince(option) && filterDeprecated(option)
+          );
 
-        if (option.name === "parser") {
-          collectParsersFromLanguages(option, languages, plugins);
+          if (option.name === "parser") {
+            collectParsersFromLanguages(option, languages, plugins);
+          }
         }
-      }
 
-      const pluginDefaults = plugins
-        .filter(
-          (plugin) =>
-            plugin.defaultOptions &&
-            plugin.defaultOptions[option.name] !== undefined
-        )
-        .reduce((reduced, plugin) => {
-          reduced[plugin.name] = plugin.defaultOptions[option.name];
-          return reduced;
-        }, {});
+        const pluginDefaults =
+          plugins
+            .filter(
+              (plugin) =>
+                plugin.defaultOptions &&
+                plugin.defaultOptions[option.name] !== undefined
+            )
+            .reduce((reduced, plugin) => {
+              reduced[plugin.name] = plugin.defaultOptions[option.name];
+              return reduced;
+            }, {});
 
-      return { ...option, pluginDefaults };
-    });
+        return { ...option, pluginDefaults };
+      });
 
   return { languages, options };
 
diff --git ORI/prettier/tests/js/bom/jsfmt.spec.js ALT/prettier/tests/js/bom/jsfmt.spec.js
index 851064803..6501e2f16 100644
--- ORI/prettier/tests/js/bom/jsfmt.spec.js
+++ ALT/prettier/tests/js/bom/jsfmt.spec.js
@@ -2,18 +2,19 @@ const fs = require("fs");
 const path = require("path");
 const fixtureDirectory = path.join(__dirname, "../eol");
 
-const snippets = fs
-  .readdirSync(fixtureDirectory)
-  .filter(
-    (fileName) => fileName !== "__snapshots__" && fileName !== "jsfmt.spec.js"
-  )
-  .map((fileName) => {
-    const file = path.join(fixtureDirectory, fileName);
-    const code = "\uFEFF" + fs.readFileSync(file, "utf8");
-    return {
-      name: fileName,
-      code,
-    };
-  });
+const snippets =
+  fs
+    .readdirSync(fixtureDirectory)
+    .filter(
+      (fileName) => fileName !== "__snapshots__" && fileName !== "jsfmt.spec.js"
+    )
+    .map((fileName) => {
+      const file = path.join(fixtureDirectory, fileName);
+      const code = "\uFEFF" + fs.readFileSync(file, "utf8");
+      return {
+        name: fileName,
+        code,
+      };
+    });
 
 run_spec({ dirname: __dirname, snippets }, ["babel"]);
diff --git ORI/prettier/tests/misc/empty/jsfmt.spec.js ALT/prettier/tests/misc/empty/jsfmt.spec.js
index 349f87d36..da6569e51 100644
--- ORI/prettier/tests/misc/empty/jsfmt.spec.js
+++ ALT/prettier/tests/misc/empty/jsfmt.spec.js
@@ -1,8 +1,9 @@
-const parsers = require("prettier-local")
-  .getSupportInfo()
-  .options.find((option) => option.name === "parser")
-  .choices.filter((choice) => !choice.deprecated)
-  .map((choice) => choice.value);
+const parsers =
+  require("prettier-local")
+    .getSupportInfo()
+    .options.find((option) => option.name === "parser")
+    .choices.filter((choice) => !choice.deprecated)
+    .map((choice) => choice.value);
 
 run_spec(
   {
diff --git ORI/prettier/tests_config/require_standalone.js ALT/prettier/tests_config/require_standalone.js
index 310dbb4b6..2be1957ee 100644
--- ORI/prettier/tests_config/require_standalone.js
+++ ALT/prettier/tests_config/require_standalone.js
@@ -6,13 +6,14 @@ const globby = require("globby");
 
 const sandbox = vm.createContext();
 
-const source = globby
-  .sync(["standalone.js", "parser-*.js"], {
-    cwd: process.env.PRETTIER_DIR,
-    absolute: true,
-  })
-  .map((file) => fs.readFileSync(file, "utf8"))
-  .join(";");
+const source =
+  globby
+    .sync(["standalone.js", "parser-*.js"], {
+      cwd: process.env.PRETTIER_DIR,
+      absolute: true,
+    })
+    .map((file) => fs.readFileSync(file, "utf8"))
+    .join(";");
 
 vm.runInContext(source, sandbox);
 
diff --git ORI/prettier/tests_config/run_spec.js ALT/prettier/tests_config/run_spec.js
index 8bb577930..03fce5bb5 100644
--- ORI/prettier/tests_config/run_spec.js
+++ ALT/prettier/tests_config/run_spec.js
@@ -118,29 +118,30 @@ function runSpec(fixtures, parsers, options) {
     };
   });
 
-  const files = fs
-    .readdirSync(dirname, { withFileTypes: true })
-    .map((file) => {
-      const basename = file.name;
-      const filename = path.join(dirname, basename);
-      if (
-        path.extname(basename) === ".snap" ||
-        !file.isFile() ||
-        basename[0] === "." ||
-        basename === "jsfmt.spec.js"
-      ) {
-        return;
-      }
+  const files =
+    fs
+      .readdirSync(dirname, { withFileTypes: true })
+      .map((file) => {
+        const basename = file.name;
+        const filename = path.join(dirname, basename);
+        if (
+          path.extname(basename) === ".snap" ||
+          !file.isFile() ||
+          basename[0] === "." ||
+          basename === "jsfmt.spec.js"
+        ) {
+          return;
+        }
 
-      const text = fs.readFileSync(filename, "utf8");
+        const text = fs.readFileSync(filename, "utf8");
 
-      return {
-        name: basename,
-        filename,
-        code: text,
-      };
-    })
-    .filter(Boolean);
+        return {
+          name: basename,
+          filename,
+          code: text,
+        };
+      })
+      .filter(Boolean);
 
   // Make sure tests are in correct location
   if (process.env.CHECK_TEST_PARSERS) {
@@ -399,13 +400,14 @@ const indexProperties = [
   },
 ];
 function replacePlaceholders(originalText, originalOptions) {
-  const indexes = indexProperties
-    .map(({ property, placeholder }) => {
-      const value = originalText.indexOf(placeholder);
-      return value === -1 ? undefined : { property, value, placeholder };
-    })
-    .filter(Boolean)
-    .sort((a, b) => a.value - b.value);
+  const indexes =
+    indexProperties
+      .map(({ property, placeholder }) => {
+        const value = originalText.indexOf(placeholder);
+        return value === -1 ? undefined : { property, value, placeholder };
+      })
+      .filter(Boolean)
+      .sort((a, b) => a.value - b.value);
 
   const options = { ...originalOptions };
   let text = originalText;
diff --git ORI/prettier/tests_integration/__tests__/bundle.js ALT/prettier/tests_integration/__tests__/bundle.js
index 1a2f85bab..b6c984c55 100644
--- ORI/prettier/tests_integration/__tests__/bundle.js
+++ ALT/prettier/tests_integration/__tests__/bundle.js
@@ -13,15 +13,17 @@ const distDirectory = path.join(projectRoot, "dist");
 
 describe("standalone", () => {
   const standalone = require(path.join(distDirectory, "standalone.js"));
-  const plugins = globby
-    .sync(["parser-*.js"], { cwd: distDirectory, absolute: true })
-    .map((file) => require(file));
+  const plugins =
+    globby
+      .sync(["parser-*.js"], { cwd: distDirectory, absolute: true })
+      .map((file) => require(file));
 
   const esmStandalone = require(path.join(distDirectory, "esm/standalone.mjs"))
     .default;
-  const esmPlugins = globby
-    .sync(["esm/parser-*.mjs"], { cwd: distDirectory, absolute: true })
-    .map((file) => require(file).default);
+  const esmPlugins =
+    globby
+      .sync(["esm/parser-*.mjs"], { cwd: distDirectory, absolute: true })
+      .map((file) => require(file).default);
 
   for (const parser of parserNames) {
     test(parser, () => {
diff --git ORI/prettier/website/blog/2020-08-24-2.1.0.md ALT/prettier/website/blog/2020-08-24-2.1.0.md
index 215b2102c..78474a301 100644
--- ORI/prettier/website/blog/2020-08-24-2.1.0.md
+++ ALT/prettier/website/blog/2020-08-24-2.1.0.md
@@ -2163,11 +2163,12 @@ npm install --save-dev --save-exact prettier @prettier/plugin-php
 ```
 
 ```js
-const hasPhpParser = prettier
-  .getSupportInfo()
-  .options.find((option) => option.name === "parser")
-  .choices.map((choice) => choice.value)
-  .includes("php"); // false in Prettier 2.0, true in Prettier 2.1
+const hasPhpParser =
+  prettier
+    .getSupportInfo()
+    .options.find((option) => option.name === "parser")
+    .choices.map((choice) => choice.value)
+    .includes("php"); // false in Prettier 2.0, true in Prettier 2.1
 ```
 
 #### Fix `prettier.getFileInfo()` ([#8548](https://github.com/prettier/prettier/pull/8548), [#8551](https://github.com/prettier/prettier/pull/8551), [#8585](https://github.com/prettier/prettier/pull/8585) by [@fisker](https://github.com/fisker))
diff --git ORI/prettier/website/pages/en/index.js ALT/prettier/website/pages/en/index.js
index 0a212f30d..5cbe57622 100755
--- ORI/prettier/website/pages/en/index.js
+++ ALT/prettier/website/pages/en/index.js
@@ -239,13 +239,14 @@ const EditorSupportSection = () => (
 );
 
 const UsersSection = ({ language }) => {
-  const showcase = siteConfig.users
-    .filter((user) => user.pinned)
-    .map((user, i) => (
-      <a key={i} className="growOnHover alignCenter" href={user.infoLink}>
-        <img className="user" src={user.greyImage} title={user.caption} />
-      </a>
-    ));
+  const showcase =
+    siteConfig.users
+      .filter((user) => user.pinned)
+      .map((user, i) => (
+        <a key={i} className="growOnHover alignCenter" href={user.infoLink}>
+          <img className="user" src={user.greyImage} title={user.caption} />
+        </a>
+      ));
 
   return (
     <div className="usersSection productShowcaseSection">
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/consistent-type-imports.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/consistent-type-imports.ts
index 096deaff..8d9d6de9 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/consistent-type-imports.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/consistent-type-imports.ts
@@ -592,9 +592,10 @@ export default util.createRule<Options, MessageIds>({
           );
           // import Type , {...} from 'foo'
           //        ^^^^^ pick
-          const defaultText = sourceCode.text
-            .slice(defaultSpecifier.range[0], commaToken.range[0])
-            .trim();
+          const defaultText =
+            sourceCode.text
+              .slice(defaultSpecifier.range[0], commaToken.range[0])
+              .trim();
           yield fixer.insertTextBefore(
             node,
             `import type ${defaultText} from ${sourceCode.getText(
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/func-call-spacing.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/func-call-spacing.ts
index 08d72181..c9d94183 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/func-call-spacing.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/func-call-spacing.ts
@@ -99,9 +99,10 @@ export default util.createRule<Options, MessageIds>({
         util.isNotOptionalChainPunctuator,
       )!;
 
-      const textBetweenTokens = text
-        .slice(lastCalleeToken.range[1], openingParenToken.range[0])
-        .replace(/\/\*.*?\*\//gu, '');
+      const textBetweenTokens =
+        text
+          .slice(lastCalleeToken.range[1], openingParenToken.range[0])
+          .replace(/\/\*.*?\*\//gu, '');
       const hasWhitespace = /\s/u.test(textBetweenTokens);
       const hasNewline =
         hasWhitespace && util.LINEBREAK_MATCHER.test(textBetweenTokens);
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/method-signature-style.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/method-signature-style.ts
index 4775a1fe..02a704b0 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/method-signature-style.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/method-signature-style.ts
@@ -154,13 +154,14 @@ export default util.createRule<Options, MessageIds>({
                   methodNode,
                   ...duplicatedKeyMethodNodes,
                 ].sort((a, b) => (a.range[0] < b.range[0] ? -1 : 1));
-                const typeString = methodNodes
-                  .map(node => {
-                    const params = getMethodParams(node);
-                    const returnType = getMethodReturnType(node);
-                    return `(${params} => ${returnType})`;
-                  })
-                  .join(' & ');
+                const typeString =
+                  methodNodes
+                    .map(node => {
+                      const params = getMethodParams(node);
+                      const returnType = getMethodReturnType(node);
+                      return `(${params} => ${returnType})`;
+                    })
+                    .join(' & ');
                 const key = getMethodKey(methodNode);
                 const delimiter = getDelimiter(methodNode);
                 yield fixer.replaceText(
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention-utils/parse-options.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention-utils/parse-options.ts
index c4e6e36b..b0e1386f 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention-utils/parse-options.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention-utils/parse-options.ts
@@ -80,9 +80,10 @@ function normalizeOption(option: Selector): NormalizedSelector[] {
 }
 
 function parseOptions(context: Context): ParsedOptions {
-  const normalizedOptions = context.options
-    .map(opt => normalizeOption(opt))
-    .reduce((acc, val) => acc.concat(val), []);
+  const normalizedOptions =
+    context.options
+      .map(opt => normalizeOption(opt))
+      .reduce((acc, val) => acc.concat(val), []);
   return util.getEnumNames(Selectors).reduce((acc, k) => {
     acc[k] = createValidator(k, context, normalizedOptions);
     return acc;
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention-utils/validator.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention-utils/validator.ts
index a683933d..0297f62c 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention-utils/validator.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention-utils/validator.ts
@@ -28,46 +28,47 @@ function createValidator(
 ): (node: TSESTree.Identifier | TSESTree.Literal) => void {
   // make sure the "highest priority" configs are checked first
   const selectorType = Selectors[type];
-  const configs = allConfigs
-    // gather all of the applicable selectors
-    .filter(
-      c =>
-        (c.selector & selectorType) !== 0 ||
-        c.selector === MetaSelectors.default,
-    )
-    .sort((a, b) => {
-      if (a.selector === b.selector) {
-        // in the event of the same selector, order by modifier weight
-        // sort descending - the type modifiers are "more important"
-        return b.modifierWeight - a.modifierWeight;
-      }
+  const configs =
+    allConfigs
+      // gather all of the applicable selectors
+      .filter(
+        c =>
+          (c.selector & selectorType) !== 0 ||
+          c.selector === MetaSelectors.default,
+      )
+      .sort((a, b) => {
+        if (a.selector === b.selector) {
+          // in the event of the same selector, order by modifier weight
+          // sort descending - the type modifiers are "more important"
+          return b.modifierWeight - a.modifierWeight;
+        }
 
-      const aIsMeta = isMetaSelector(a.selector);
-      const bIsMeta = isMetaSelector(b.selector);
+        const aIsMeta = isMetaSelector(a.selector);
+        const bIsMeta = isMetaSelector(b.selector);
 
-      // non-meta selectors should go ahead of meta selectors
-      if (aIsMeta && !bIsMeta) {
-        return 1;
-      }
-      if (!aIsMeta && bIsMeta) {
-        return -1;
-      }
+        // non-meta selectors should go ahead of meta selectors
+        if (aIsMeta && !bIsMeta) {
+          return 1;
+        }
+        if (!aIsMeta && bIsMeta) {
+          return -1;
+        }
 
-      const aIsMethodOrProperty = isMethodOrPropertySelector(a.selector);
-      const bIsMethodOrProperty = isMethodOrPropertySelector(b.selector);
+        const aIsMethodOrProperty = isMethodOrPropertySelector(a.selector);
+        const bIsMethodOrProperty = isMethodOrPropertySelector(b.selector);
 
-      // for backward compatibility, method and property have higher precedence than other meta selectors
-      if (aIsMethodOrProperty && !bIsMethodOrProperty) {
-        return -1;
-      }
-      if (!aIsMethodOrProperty && bIsMethodOrProperty) {
-        return 1;
-      }
+        // for backward compatibility, method and property have higher precedence than other meta selectors
+        if (aIsMethodOrProperty && !bIsMethodOrProperty) {
+          return -1;
+        }
+        if (!aIsMethodOrProperty && bIsMethodOrProperty) {
+          return 1;
+        }
 
-      // both aren't meta selectors
-      // sort descending - the meta selectors are "least important"
-      return b.selector - a.selector;
-    });
+        // both aren't meta selectors
+        // sort descending - the meta selectors are "least important"
+        return b.selector - a.selector;
+      });
 
   return (
     node: TSESTree.Identifier | TSESTree.Literal,
@@ -429,10 +430,11 @@ function isCorrectType(
   const { esTreeNodeToTSNodeMap, program } = util.getParserServices(context);
   const checker = program.getTypeChecker();
   const tsNode = esTreeNodeToTSNodeMap.get(node);
-  const type = checker
-    .getTypeAtLocation(tsNode)
-    // remove null and undefined from the type, as we don't care about it here
-    .getNonNullableType();
+  const type =
+    checker
+      .getTypeAtLocation(tsNode)
+      // remove null and undefined from the type, as we don't care about it here
+      .getNonNullableType();
 
   for (const allowedType of config.types) {
     switch (allowedType) {
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention.ts
index 16e31b62..91c6dc0c 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/naming-convention.ts
@@ -96,9 +96,10 @@ export default util.createRule<Options, MessageIds>({
     const validators = parseOptions(context);
 
     // getParserServices(context, false) -- dirty hack to work around the docs checker test...
-    const compilerOptions = util
-      .getParserServices(context, true)
-      .program.getCompilerOptions();
+    const compilerOptions =
+      util
+        .getParserServices(context, true)
+        .program.getCompilerOptions();
     function handleMember(
       validator: ValidatorFunction | null,
       node:
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/no-invalid-void-type.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/no-invalid-void-type.ts
index 0dff489e..3ef3fcbb 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/no-invalid-void-type.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/no-invalid-void-type.ts
@@ -102,9 +102,10 @@ export default util.createRule<[Options], MessageIds>({
       // check whitelist
       if (Array.isArray(allowInGenericTypeArguments)) {
         const sourceCode = context.getSourceCode();
-        const fullyQualifiedName = sourceCode
-          .getText(node.parent.parent.typeName)
-          .replace(/ /gu, '');
+        const fullyQualifiedName =
+          sourceCode
+            .getText(node.parent.parent.typeName)
+            .replace(/ /gu, '');
 
         if (
           !allowInGenericTypeArguments
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/no-loop-func.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/no-loop-func.ts
index 44d0178e..99153caa 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/no-loop-func.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/no-loop-func.ts
@@ -49,9 +49,10 @@ export default util.createRule<Options, MessageIds>({
       }
 
       const references = context.getScope().through;
-      const unsafeRefs = references
-        .filter(r => !isSafe(loopNode, r))
-        .map(r => r.identifier.name);
+      const unsafeRefs =
+        references
+          .filter(r => !isSafe(loopNode, r))
+          .map(r => r.identifier.name);
 
       if (unsafeRefs.length > 0) {
         context.report({
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/no-redeclare.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/no-redeclare.ts
index 21456319..d6d58ade 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/no-redeclare.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/no-redeclare.ts
@@ -101,15 +101,16 @@ export default util.createRule<Options, MessageIds>({
         }
       }
 
-      const identifiers = variable.identifiers
-        .map(id => ({
-          identifier: id,
-          parent: id.parent!,
-        }))
-        // ignore function declarations because TS will treat them as an overload
-        .filter(
-          ({ parent }) => parent.type !== AST_NODE_TYPES.TSDeclareFunction,
-        );
+      const identifiers =
+        variable.identifiers
+          .map(id => ({
+            identifier: id,
+            parent: id.parent!,
+          }))
+          // ignore function declarations because TS will treat them as an overload
+          .filter(
+            ({ parent }) => parent.type !== AST_NODE_TYPES.TSDeclareFunction,
+          );
 
       if (options.ignoreDeclarationMerge && identifiers.length > 1) {
         if (
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/prefer-includes.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/prefer-includes.ts
index d21b088d..cc5a0136 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/prefer-includes.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/prefer-includes.ts
@@ -146,9 +146,10 @@ export default createRule({
 
         // Get the symbol of `indexOf` method.
         const tsNode = services.esTreeNodeToTSNodeMap.get(node.property);
-        const indexofMethodDeclarations = types
-          .getSymbolAtLocation(tsNode)
-          ?.getDeclarations();
+        const indexofMethodDeclarations =
+          types
+            .getSymbolAtLocation(tsNode)
+            ?.getDeclarations();
         if (
           indexofMethodDeclarations == null ||
           indexofMethodDeclarations.length === 0
@@ -161,9 +162,10 @@ export default createRule({
         for (const instanceofMethodDecl of indexofMethodDeclarations) {
           const typeDecl = instanceofMethodDecl.parent;
           const type = types.getTypeAtLocation(typeDecl);
-          const includesMethodDecl = type
-            .getProperty('includes')
-            ?.getDeclarations();
+          const includesMethodDecl =
+            type
+              .getProperty('includes')
+              ?.getDeclarations();
           if (
             includesMethodDecl == null ||
             !includesMethodDecl.some(includesMethodDecl =>
@@ -204,9 +206,10 @@ export default createRule({
         const tsNode = services.esTreeNodeToTSNodeMap.get(argument);
         const type = getConstrainedTypeAtLocation(types, tsNode);
 
-        const includesMethodDecl = type
-          .getProperty('includes')
-          ?.getDeclarations();
+        const includesMethodDecl =
+          type
+            .getProperty('includes')
+            ?.getDeclarations();
         if (includesMethodDecl == null) {
           return;
         }
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/promise-function-async.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/promise-function-async.ts
index 00888c8f..1bcb2f96 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/promise-function-async.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/promise-function-async.ts
@@ -99,9 +99,10 @@ export default util.createRule<Options, MessageIds>({
         | TSESTree.FunctionExpression,
     ): void {
       const originalNode = parserServices.esTreeNodeToTSNodeMap.get(node);
-      const signatures = checker
-        .getTypeAtLocation(originalNode)
-        .getCallSignatures();
+      const signatures =
+        checker
+          .getTypeAtLocation(originalNode)
+          .getCallSignatures();
       if (!signatures.length) {
         return;
       }
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts
index ff4a4d1a..e738a517 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/sort-type-union-intersection-members.ts
@@ -210,11 +210,14 @@ export default util.createRule<Options, MessageIds>({
           }
 
           const fix: TSESLint.ReportFixFunction = fixer => {
-            const sorted = expectedOrder
-              .map(t => t.text)
-              .join(
-                node.type === AST_NODE_TYPES.TSIntersectionType ? ' & ' : ' | ',
-              );
+            const sorted =
+              expectedOrder
+                .map(t => t.text)
+                .join(
+                  node.type === AST_NODE_TYPES.TSIntersectionType
+                    ? ' & '
+                    : ' | ',
+                );
 
             return fixer.replaceText(node, sorted);
           };
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/switch-exhaustiveness-check.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/switch-exhaustiveness-check.ts
index 8881473d..99d911d8 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/switch-exhaustiveness-check.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/switch-exhaustiveness-check.ts
@@ -88,9 +88,10 @@ export default createRule({
         );
       }
 
-      const fixString = missingCases
-        .map(code => `${caseIndent}${code}`)
-        .join('\n');
+      const fixString =
+        missingCases
+          .map(code => `${caseIndent}${code}`)
+          .join('\n');
 
       if (lastCase) {
         return fixer.insertTextAfter(lastCase, `\n${fixString}`);
@@ -141,13 +142,14 @@ export default createRule({
           node: node.discriminant,
           messageId: 'switchIsNotExhaustive',
           data: {
-            missingBranches: missingBranchTypes
-              .map(missingType =>
-                isTypeFlagSet(missingType, ts.TypeFlags.ESSymbolLike)
-                  ? `typeof ${missingType.getSymbol()?.escapedName}`
-                  : checker.typeToString(missingType),
-              )
-              .join(' | '),
+            missingBranches:
+              missingBranchTypes
+                .map(missingType =>
+                  isTypeFlagSet(missingType, ts.TypeFlags.ESSymbolLike)
+                    ? `typeof ${missingType.getSymbol()?.escapedName}`
+                    : checker.typeToString(missingType),
+                )
+                .join(' | '),
           },
           suggest: [
             {
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/rules/unbound-method.ts ALT/typescript-eslint/packages/eslint-plugin/src/rules/unbound-method.ts
index 407d04c1..ffacd370 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/rules/unbound-method.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/rules/unbound-method.ts
@@ -81,23 +81,24 @@ const SUPPORTED_GLOBALS = [
   'JSON',
   'Intl',
 ] as const;
-const nativelyBoundMembers = SUPPORTED_GLOBALS.map(namespace => {
-  if (!(namespace in global)) {
-    // node.js might not have namespaces like Intl depending on compilation options
-    // https://nodejs.org/api/intl.html#intl_options_for_building_node_js
-    return [];
-  }
-  const object = global[namespace];
-  return Object.getOwnPropertyNames(object)
-    .filter(
-      name =>
-        !name.startsWith('_') &&
-        typeof (object as Record<string, unknown>)[name] === 'function',
-    )
-    .map(name => `${namespace}.${name}`);
-})
-  .reduce((arr, names) => arr.concat(names), [])
-  .filter(name => !nativelyNotBoundMembers.has(name));
+const nativelyBoundMembers =
+  SUPPORTED_GLOBALS.map(namespace => {
+    if (!(namespace in global)) {
+      // node.js might not have namespaces like Intl depending on compilation options
+      // https://nodejs.org/api/intl.html#intl_options_for_building_node_js
+      return [];
+    }
+    const object = global[namespace];
+    return Object.getOwnPropertyNames(object)
+      .filter(
+        name =>
+          !name.startsWith('_') &&
+          typeof (object as Record<string, unknown>)[name] === 'function',
+      )
+      .map(name => `${namespace}.${name}`);
+  })
+    .reduce((arr, names) => arr.concat(names), [])
+    .filter(name => !nativelyNotBoundMembers.has(name));
 
 const isNotImported = (
   symbol: ts.Symbol,
diff --git ORI/typescript-eslint/packages/eslint-plugin/src/util/propertyTypes.ts ALT/typescript-eslint/packages/eslint-plugin/src/util/propertyTypes.ts
index 5e2f1054..4b4a25b2 100644
--- ORI/typescript-eslint/packages/eslint-plugin/src/util/propertyTypes.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/src/util/propertyTypes.ts
@@ -13,9 +13,10 @@ export function getTypeOfPropertyOfName(
 
   // Symbolic names may differ in their escaped name compared to their human-readable name
   // https://github.com/typescript-eslint/typescript-eslint/issues/2143
-  const escapedProperty = type
-    .getProperties()
-    .find(property => property.escapedName === escapedName);
+  const escapedProperty =
+    type
+      .getProperties()
+      .find(property => property.escapedName === escapedName);
 
   return escapedProperty
     ? checker.getDeclaredTypeOfSymbol(escapedProperty)
diff --git ORI/typescript-eslint/packages/eslint-plugin/tests/configs.test.ts ALT/typescript-eslint/packages/eslint-plugin/tests/configs.test.ts
index f8fc068a..ed879e52 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tests/configs.test.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tests/configs.test.ts
@@ -2,17 +2,18 @@ import rules from '../src/rules';
 import plugin from '../src/index';
 
 const RULE_NAME_PREFIX = '@typescript-eslint/';
-const EXTENSION_RULES = Object.entries(rules)
-  .filter(([, rule]) => rule.meta.docs?.extendsBaseRule)
-  .map(
-    ([ruleName, rule]) =>
-      [
-        `${RULE_NAME_PREFIX}${ruleName}`,
-        typeof rule.meta.docs?.extendsBaseRule === 'string'
-          ? rule.meta.docs.extendsBaseRule
-          : ruleName,
-      ] as const,
-  );
+const EXTENSION_RULES =
+  Object.entries(rules)
+    .filter(([, rule]) => rule.meta.docs?.extendsBaseRule)
+    .map(
+      ([ruleName, rule]) =>
+        [
+          `${RULE_NAME_PREFIX}${ruleName}`,
+          typeof rule.meta.docs?.extendsBaseRule === 'string'
+            ? rule.meta.docs.extendsBaseRule
+            : ruleName,
+        ] as const,
+    );
 
 function entriesToObject<T = unknown>(value: [string, T][]): Record<string, T> {
   return value.reduce<Record<string, T>>((accum, [k, v]) => {
@@ -49,9 +50,13 @@ describe('all.json config', () => {
     plugin.configs.all.rules;
   const configRules = filterRules(unfilteredConfigRules);
   // note: exclude deprecated rules, this config is allowed to change between minor versions
-  const ruleConfigs = Object.entries(rules)
-    .filter(([, rule]) => !rule.meta.deprecated)
-    .map<[string, string]>(([name]) => [`${RULE_NAME_PREFIX}${name}`, 'error']);
+  const ruleConfigs =
+    Object.entries(rules)
+      .filter(([, rule]) => !rule.meta.deprecated)
+      .map<[string, string]>(([name]) => [
+        `${RULE_NAME_PREFIX}${name}`,
+        'error',
+      ]);
 
   it('contains all of the rules, excluding the deprecated ones', () => {
     expect(entriesToObject(ruleConfigs)).toEqual(entriesToObject(configRules));
@@ -65,16 +70,17 @@ describe('recommended.json config', () => {
     plugin.configs.recommended.rules;
   const configRules = filterRules(unfilteredConfigRules);
   // note: include deprecated rules so that the config doesn't change between major bumps
-  const ruleConfigs = Object.entries(rules)
-    .filter(
-      ([, rule]) =>
-        rule.meta.docs?.recommended !== false &&
-        rule.meta.docs?.requiresTypeChecking !== true,
-    )
-    .map<[string, string]>(([name, rule]) => [
-      `${RULE_NAME_PREFIX}${name}`,
-      rule.meta.docs?.recommended ? rule.meta.docs.recommended : 'off',
-    ]);
+  const ruleConfigs =
+    Object.entries(rules)
+      .filter(
+        ([, rule]) =>
+          rule.meta.docs?.recommended !== false &&
+          rule.meta.docs?.requiresTypeChecking !== true,
+      )
+      .map<[string, string]>(([name, rule]) => [
+        `${RULE_NAME_PREFIX}${name}`,
+        rule.meta.docs?.recommended ? rule.meta.docs.recommended : 'off',
+      ]);
 
   it("contains all recommended rules that don't require typechecking, excluding the deprecated ones", () => {
     expect(entriesToObject(ruleConfigs)).toEqual(entriesToObject(configRules));
@@ -88,16 +94,17 @@ describe('recommended-requiring-type-checking.json config', () => {
     plugin.configs['recommended-requiring-type-checking'].rules;
   const configRules = filterRules(unfilteredConfigRules);
   // note: include deprecated rules so that the config doesn't change between major bumps
-  const ruleConfigs = Object.entries(rules)
-    .filter(
-      ([, rule]) =>
-        rule.meta.docs?.recommended !== false &&
-        rule.meta.docs?.requiresTypeChecking === true,
-    )
-    .map<[string, string]>(([name, rule]) => [
-      `${RULE_NAME_PREFIX}${name}`,
-      rule.meta.docs?.recommended ? rule.meta.docs.recommended : 'off',
-    ]);
+  const ruleConfigs =
+    Object.entries(rules)
+      .filter(
+        ([, rule]) =>
+          rule.meta.docs?.recommended !== false &&
+          rule.meta.docs?.requiresTypeChecking === true,
+      )
+      .map<[string, string]>(([name, rule]) => [
+        `${RULE_NAME_PREFIX}${name}`,
+        rule.meta.docs?.recommended ? rule.meta.docs.recommended : 'off',
+      ]);
 
   it('contains all recommended rules that require type checking, excluding the deprecated ones', () => {
     expect(entriesToObject(ruleConfigs)).toEqual(entriesToObject(configRules));
diff --git ORI/typescript-eslint/packages/eslint-plugin/tests/docs.test.ts ALT/typescript-eslint/packages/eslint-plugin/tests/docs.test.ts
index d67ff887..230e312b 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tests/docs.test.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tests/docs.test.ts
@@ -41,13 +41,15 @@ function parseReadme(): {
 
 describe('Validating rule docs', () => {
   it('All rules must have a corresponding rule doc', () => {
-    const files = fs
-      .readdirSync(docsRoot)
-      // this rule doc was left behind on purpose for legacy reasons
-      .filter(rule => rule !== 'camelcase.md');
-    const ruleFiles = Object.keys(rules)
-      .map(rule => `${rule}.md`)
-      .sort();
+    const files =
+      fs
+        .readdirSync(docsRoot)
+        // this rule doc was left behind on purpose for legacy reasons
+        .filter(rule => rule !== 'camelcase.md');
+    const ruleFiles =
+      Object.keys(rules)
+        .map(rule => `${rule}.md`)
+        .sort();
 
     expect(files.sort()).toEqual(ruleFiles);
   });
@@ -115,20 +117,22 @@ describe('Validating README.md', () => {
   );
 
   it('All non-deprecated base rules should have a row in the base rules table, and the table should be ordered alphabetically', () => {
-    const baseRuleNames = baseRules
-      .map(([ruleName]) => ruleName)
-      .sort()
-      .map(createRuleLink);
+    const baseRuleNames =
+      baseRules
+        .map(([ruleName]) => ruleName)
+        .sort()
+        .map(createRuleLink);
 
     expect(rulesTables.base.cells.map(row => row[0])).toStrictEqual(
       baseRuleNames,
     );
   });
   it('All non-deprecated extension rules should have a row in the base rules table, and the table should be ordered alphabetically', () => {
-    const extensionRuleNames = extensionRules
-      .map(([ruleName]) => ruleName)
-      .sort()
-      .map(createRuleLink);
+    const extensionRuleNames =
+      extensionRules
+        .map(([ruleName]) => ruleName)
+        .sort()
+        .map(createRuleLink);
 
     expect(rulesTables.extension.cells.map(row => row[0])).toStrictEqual(
       extensionRuleNames,
diff --git ORI/typescript-eslint/packages/eslint-plugin/tests/index.test.ts ALT/typescript-eslint/packages/eslint-plugin/tests/index.test.ts
index 3cac8304..6ca70b85 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tests/index.test.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tests/index.test.ts
@@ -8,10 +8,13 @@ describe('eslint-plugin ("./src/index.ts")', () => {
   const ruleKeys = Object.keys(rules);
   const eslintPluginRuleKeys = Object.keys(eslintPlugin.rules);
 
-  const configs = fs
-    .readdirSync('./src/configs')
-    .filter(file => ['.json', '.ts'].includes(path.extname(file).toLowerCase()))
-    .map(file => path.basename(file, path.extname(file)));
+  const configs =
+    fs
+      .readdirSync('./src/configs')
+      .filter(file =>
+        ['.json', '.ts'].includes(path.extname(file).toLowerCase()),
+      )
+      .map(file => path.basename(file, path.extname(file)));
   const eslintPluginConfigKeys = Object.keys(eslintPlugin.configs);
 
   it('exports all available rules', () => {
diff --git ORI/typescript-eslint/packages/eslint-plugin/tests/rules/indent/indent.test.ts ALT/typescript-eslint/packages/eslint-plugin/tests/rules/indent/indent.test.ts
index 8296bf19..22d15332 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tests/rules/indent/indent.test.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tests/rules/indent/indent.test.ts
@@ -640,30 +640,31 @@ type Foo = string | {
         // test the fixer by removing all the spaces
         code: code.replace(new RegExp(indent, 'g'), ''),
         output: code,
-        errors: code
-          .split('\n')
-          .map<TSESLint.TestCaseError<MessageIds> | null>((line, lineNum) => {
-            const indentCount = line.split(indent).length - 1;
-            const spaceCount = indentCount * indent.length;
+        errors:
+          code
+            .split('\n')
+            .map<TSESLint.TestCaseError<MessageIds> | null>((line, lineNum) => {
+              const indentCount = line.split(indent).length - 1;
+              const spaceCount = indentCount * indent.length;
 
-            if (indentCount < 1) {
-              return null;
-            }
+              if (indentCount < 1) {
+                return null;
+              }
 
-            return {
-              messageId: 'wrongIndentation',
-              data: {
-                expected: `${spaceCount} spaces`,
-                actual: 0,
-              },
-              line: lineNum + 1,
-              column: 1,
-            };
-          })
-          .filter(
-            (error): error is TSESLint.TestCaseError<MessageIds> =>
-              error !== null,
-          ),
+              return {
+                messageId: 'wrongIndentation',
+                data: {
+                  expected: `${spaceCount} spaces`,
+                  actual: 0,
+                },
+                line: lineNum + 1,
+                column: 1,
+              };
+            })
+            .filter(
+              (error): error is TSESLint.TestCaseError<MessageIds> =>
+                error !== null,
+            ),
       };
       if (invalid.errors.length > 0) {
         invalidCases.push(invalid);
diff --git ORI/typescript-eslint/packages/eslint-plugin/tests/rules/indent/utils.ts ALT/typescript-eslint/packages/eslint-plugin/tests/rules/indent/utils.ts
index badfbc1c..cd868ac7 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tests/rules/indent/utils.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tests/rules/indent/utils.ts
@@ -19,13 +19,15 @@ type MessageIds = InferMessageIdsTypeFromRule<typeof rule>;
 export function unIndent(strings: TemplateStringsArray): string {
   const WHITESPACE_REGEX = / */u;
   const templateValue = strings[0];
-  const lines = templateValue
-    .replace(/^\n/u, '')
-    .replace(/\n\s*$/u, '')
-    .split('\n');
-  const lineIndents = lines
-    .filter(line => line.trim())
-    .map(line => WHITESPACE_REGEX.exec(line)![0].length);
+  const lines =
+    templateValue
+      .replace(/^\n/u, '')
+      .replace(/\n\s*$/u, '')
+      .split('\n');
+  const lineIndents =
+    lines
+      .filter(line => line.trim())
+      .map(line => WHITESPACE_REGEX.exec(line)![0].length);
   const minLineIndent = Math.min(...lineIndents);
 
   return lines.map(line => line.slice(minLineIndent)).join('\n');
diff --git ORI/typescript-eslint/packages/eslint-plugin/tests/rules/index.test.ts ALT/typescript-eslint/packages/eslint-plugin/tests/rules/index.test.ts
index c9160c05..1139ce3e 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tests/rules/index.test.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tests/rules/index.test.ts
@@ -4,9 +4,10 @@ import rules from '../../src/rules';
 
 describe('./src/rules/index.ts', () => {
   const ruleNames = Object.keys(rules).map(name => `${name}.ts`);
-  const files = fs
-    .readdirSync('./src/rules')
-    .filter(file => file !== 'index.ts' && file.endsWith('.ts'));
+  const files =
+    fs
+      .readdirSync('./src/rules')
+      .filter(file => file !== 'index.ts' && file.endsWith('.ts'));
 
   it('imports all available rule modules', () => {
     expect(ruleNames).toEqual(expect.arrayContaining(files));
diff --git ORI/typescript-eslint/packages/eslint-plugin/tests/rules/prefer-readonly-parameter-types.test.ts ALT/typescript-eslint/packages/eslint-plugin/tests/rules/prefer-readonly-parameter-types.test.ts
index 9278420a..59ac6ffc 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tests/rules/prefer-readonly-parameter-types.test.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tests/rules/prefer-readonly-parameter-types.test.ts
@@ -269,10 +269,11 @@ ruleTester.run('prefer-readonly-parameter-types', rule, {
   invalid: [
     // arrays
     ...arrays.map<TSESLint.InvalidTestCase<MessageIds, Options>>(baseType => {
-      const type = baseType
-        .replace(/readonly /g, '')
-        .replace(/Readonly<(.+?)>/g, '$1')
-        .replace(/ReadonlyArray/g, 'Array');
+      const type =
+        baseType
+          .replace(/readonly /g, '')
+          .replace(/Readonly<(.+?)>/g, '$1')
+          .replace(/ReadonlyArray/g, 'Array');
       return {
         code: `function foo(arg: ${type}) {}`,
         errors: [
diff --git ORI/typescript-eslint/packages/eslint-plugin/tools/generate-configs.ts ALT/typescript-eslint/packages/eslint-plugin/tools/generate-configs.ts
index ed84f286..1f6698f3 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tools/generate-configs.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tools/generate-configs.ts
@@ -161,16 +161,17 @@ console.log();
 console.log(
   '------------------------------ recommended.ts (should not require program) ------------------------------',
 );
-const recommendedRules = ruleEntries
-  .filter(entry => !!entry[1].meta.docs?.recommended)
-  .reduce<LinterConfigRules>(
-    (config, entry) =>
-      reducer(config, entry, {
-        filterDeprecated: false,
-        filterRequiresTypeChecking: 'exclude',
-      }),
-    {},
-  );
+const recommendedRules =
+  ruleEntries
+    .filter(entry => !!entry[1].meta.docs?.recommended)
+    .reduce<LinterConfigRules>(
+      (config, entry) =>
+        reducer(config, entry, {
+          filterDeprecated: false,
+          filterRequiresTypeChecking: 'exclude',
+        }),
+      {},
+    );
 const recommendedConfig: LinterConfig = {
   extends: EXTENDS,
   rules: recommendedRules,
@@ -184,16 +185,17 @@ console.log();
 console.log(
   '--------------------------------- recommended-requiring-type-checking.ts ---------------------------------',
 );
-const recommendedRulesRequiringProgram = ruleEntries
-  .filter(entry => !!entry[1].meta.docs?.recommended)
-  .reduce<LinterConfigRules>(
-    (config, entry) =>
-      reducer(config, entry, {
-        filterDeprecated: false,
-        filterRequiresTypeChecking: 'include',
-      }),
-    {},
-  );
+const recommendedRulesRequiringProgram =
+  ruleEntries
+    .filter(entry => !!entry[1].meta.docs?.recommended)
+    .reduce<LinterConfigRules>(
+      (config, entry) =>
+        reducer(config, entry, {
+          filterDeprecated: false,
+          filterRequiresTypeChecking: 'include',
+        }),
+      {},
+    );
 const recommendedRequiringTypeCheckingConfig: LinterConfig = {
   extends: EXTENDS,
   rules: recommendedRulesRequiringProgram,
diff --git ORI/typescript-eslint/packages/eslint-plugin/tools/generate-rules-lists.ts ALT/typescript-eslint/packages/eslint-plugin/tools/generate-rules-lists.ts
index cffe4006..809c9248 100644
--- ORI/typescript-eslint/packages/eslint-plugin/tools/generate-rules-lists.ts
+++ ALT/typescript-eslint/packages/eslint-plugin/tools/generate-rules-lists.ts
@@ -105,16 +105,17 @@ const updateRulesList = (
   ].join('\n');
 };
 
-const rulesDetails: RuleDetails[] = Object.entries(rules)
-  .filter(([, rule]) => rule.meta.deprecated !== true)
-  .map(([name, rule]) => ({
-    name,
-    description: rule.meta.docs?.description ?? '',
-    recommended: !!rule.meta.docs?.recommended ?? false,
-    fixable: !!rule.meta.fixable,
-    requiresTypeChecking: rule.meta.docs?.requiresTypeChecking ?? false,
-    extendsBaseRule: !!rule.meta.docs?.extendsBaseRule ?? false,
-  }));
+const rulesDetails: RuleDetails[] =
+  Object.entries(rules)
+    .filter(([, rule]) => rule.meta.deprecated !== true)
+    .map(([name, rule]) => ({
+      name,
+      description: rule.meta.docs?.description ?? '',
+      recommended: !!rule.meta.docs?.recommended ?? false,
+      fixable: !!rule.meta.fixable,
+      requiresTypeChecking: rule.meta.docs?.requiresTypeChecking ?? false,
+      extendsBaseRule: !!rule.meta.docs?.extendsBaseRule ?? false,
+    }));
 
 const baseRules = rulesDetails.filter(rule => !rule.extendsBaseRule);
 const extensionRules = rulesDetails.filter(rule => rule.extendsBaseRule);
diff --git ORI/typescript-eslint/packages/parser/src/parser.ts ALT/typescript-eslint/packages/parser/src/parser.ts
index f304a837..cd6fd0d1 100644
--- ORI/typescript-eslint/packages/parser/src/parser.ts
+++ ALT/typescript-eslint/packages/parser/src/parser.ts
@@ -154,9 +154,10 @@ function parseForESLint(
         compilerOptions.jsxFragmentFactory != null
       ) {
         // in case the user has specified something like "preact.Fragment"
-        const fragFactory = compilerOptions.jsxFragmentFactory
-          .split('.')[0]
-          .trim();
+        const fragFactory =
+          compilerOptions.jsxFragmentFactory
+            .split('.')[0]
+            .trim();
         analyzeOptions.jsxFragmentName = fragFactory;
         log(
           'Resolved jsxFragmentName from program: %s',
diff --git ORI/typescript-eslint/packages/scope-manager/tests/fixtures.test.ts ALT/typescript-eslint/packages/scope-manager/tests/fixtures.test.ts
index 5255ed02..5f5a2295 100644
--- ORI/typescript-eslint/packages/scope-manager/tests/fixtures.test.ts
+++ ALT/typescript-eslint/packages/scope-manager/tests/fixtures.test.ts
@@ -12,24 +12,25 @@ const ONLY = [].join(path.sep);
 
 const FIXTURES_DIR = path.resolve(__dirname, 'fixtures');
 
-const fixtures = glob
-  .sync(`${FIXTURES_DIR}/**/*.{js,ts,jsx,tsx}`, {
-    ignore: ['fixtures.test.ts'],
-  })
-  .map(absolute => {
-    const relative = path.relative(FIXTURES_DIR, absolute);
-    const { name, dir, ext } = path.parse(relative);
-    const segments = dir.split(path.sep);
-    const snapshotPath = path.join(FIXTURES_DIR, dir);
-    return {
-      absolute,
-      name,
-      ext,
-      segments,
-      snapshotPath,
-      snapshotFile: path.join(snapshotPath, `${name}${ext}.shot`),
-    };
-  });
+const fixtures =
+  glob
+    .sync(`${FIXTURES_DIR}/**/*.{js,ts,jsx,tsx}`, {
+      ignore: ['fixtures.test.ts'],
+    })
+    .map(absolute => {
+      const relative = path.relative(FIXTURES_DIR, absolute);
+      const { name, dir, ext } = path.parse(relative);
+      const segments = dir.split(path.sep);
+      const snapshotPath = path.join(FIXTURES_DIR, dir);
+      return {
+        absolute,
+        name,
+        ext,
+        segments,
+        snapshotPath,
+        snapshotFile: path.join(snapshotPath, `${name}${ext}.shot`),
+      };
+    });
 
 const FOUR_SLASH = /^\/\/\/\/[ ]+@(\w+)[ ]*=[ ]*(.+)$/;
 const QUOTED_STRING = /^["'](.+?)['"]$/;
diff --git ORI/typescript-eslint/packages/typescript-estree/src/convert.ts ALT/typescript-eslint/packages/typescript-estree/src/convert.ts
index f5a6a230..8c0ecfc7 100644
--- ORI/typescript-eslint/packages/typescript-estree/src/convert.ts
+++ ALT/typescript-eslint/packages/typescript-estree/src/convert.ts
@@ -1953,12 +1953,13 @@ export class Converter {
       case SyntaxKind.BigIntLiteral: {
         const range = getRange(node, this.ast);
         const rawValue = this.ast.text.slice(range[0], range[1]);
-        const bigint = rawValue
-          // remove suffix `n`
-          .slice(0, -1)
-          // `BigInt` doesn't accept numeric separator
-          // and `bigint` property should not include numeric separator
-          .replace(/_/g, '');
+        const bigint =
+          rawValue
+            // remove suffix `n`
+            .slice(0, -1)
+            // `BigInt` doesn't accept numeric separator
+            // and `bigint` property should not include numeric separator
+            .replace(/_/g, '');
         const value = typeof BigInt !== 'undefined' ? BigInt(bigint) : null;
         return this.createNode<TSESTree.BigIntLiteral>(node, {
           type: AST_NODE_TYPES.Literal,
diff --git ORI/typescript-eslint/packages/typescript-estree/src/create-program/createWatchProgram.ts ALT/typescript-eslint/packages/typescript-estree/src/create-program/createWatchProgram.ts
index a3f007a0..599cfeed 100644
--- ORI/typescript-eslint/packages/typescript-estree/src/create-program/createWatchProgram.ts
+++ ALT/typescript-eslint/packages/typescript-estree/src/create-program/createWatchProgram.ts
@@ -289,12 +289,14 @@ function createWatchProgram(
   // ensure process doesn't emit programs
   watchCompilerHost.afterProgramCreate = (program): void => {
     // report error if there are any errors in the config file
-    const configFileDiagnostics = program
-      .getConfigFileParsingDiagnostics()
-      .filter(
-        diag =>
-          diag.category === ts.DiagnosticCategory.Error && diag.code !== 18003,
-      );
+    const configFileDiagnostics =
+      program
+        .getConfigFileParsingDiagnostics()
+        .filter(
+          diag =>
+            diag.category === ts.DiagnosticCategory.Error &&
+            diag.code !== 18003,
+        );
     if (configFileDiagnostics.length > 0) {
       diagnosticReporter(configFileDiagnostics[0]);
     }
diff --git ORI/typescript-eslint/packages/typescript-estree/src/parser.ts ALT/typescript-eslint/packages/typescript-estree/src/parser.ts
index dd765eb5..4e118007 100644
--- ORI/typescript-eslint/packages/typescript-estree/src/parser.ts
+++ ALT/typescript-eslint/packages/typescript-estree/src/parser.ts
@@ -264,17 +264,16 @@ function applyParserOptionsToExtra(options: TSESTreeOptions): void {
   // NOTE - ensureAbsolutePath relies upon having the correct tsconfigRootDir in extra
   extra.filePath = ensureAbsolutePath(extra.filePath, extra);
 
-  const projectFolderIgnoreList = (
-    options.projectFolderIgnoreList ?? ['**/node_modules/**']
-  )
-    .reduce<string[]>((acc, folder) => {
-      if (typeof folder === 'string') {
-        acc.push(folder);
-      }
-      return acc;
-    }, [])
-    // prefix with a ! for not match glob
-    .map(folder => (folder.startsWith('!') ? folder : `!${folder}`));
+  const projectFolderIgnoreList =
+    (options.projectFolderIgnoreList ?? ['**/node_modules/**'])
+      .reduce<string[]>((acc, folder) => {
+        if (typeof folder === 'string') {
+          acc.push(folder);
+        }
+        return acc;
+      }, [])
+      // prefix with a ! for not match glob
+      .map(folder => (folder.startsWith('!') ? folder : `!${folder}`));
   // NOTE - prepareAndTransformProjects relies upon having the correct tsconfigRootDir in extra
   extra.projects = prepareAndTransformProjects(
     options.project,
diff --git ORI/typescript-eslint/tools/generate-contributors.ts ALT/typescript-eslint/tools/generate-contributors.ts
index 6bb908b3..fb6dc4df 100644
--- ORI/typescript-eslint/tools/generate-contributors.ts
+++ ALT/typescript-eslint/tools/generate-contributors.ts
@@ -83,19 +83,20 @@ async function main(): Promise<void> {
     }),
   );
 
-  const contributors = users
-    // remove ignored users
-    .filter(u => !IGNORED_USERS.has(u.login))
-    // fetch the in-depth information for each user
-    .map<AllContributorsUser>(usr => {
-      return {
-        login: usr.login,
-        name: usr.name || usr.login,
-        avatar_url: usr.avatar_url,
-        profile: usr.html_url,
-        contributions: [],
-      };
-    });
+  const contributors =
+    users
+      // remove ignored users
+      .filter(u => !IGNORED_USERS.has(u.login))
+      // fetch the in-depth information for each user
+      .map<AllContributorsUser>(usr => {
+        return {
+          login: usr.login,
+          name: usr.name || usr.login,
+          avatar_url: usr.avatar_url,
+          profile: usr.html_url,
+          contributions: [],
+        };
+      });
 
   // build + write the .all-contributorsrc
   const allContributorsConfig = {
diff --git ORI/vega-lite/site/static/index.ts ALT/vega-lite/site/static/index.ts
index 951282330..92458d643 100644
--- ORI/vega-lite/site/static/index.ts
+++ ALT/vega-lite/site/static/index.ts
@@ -60,12 +60,13 @@ function renderExample($target: Selection<any, any, any, any>, specText: string,
   const textClean = specText.replace(/(\s)+"(\$schema|description)": ".*?",/g, '');
 
   if (!figureOnly) {
-    const code = $target
-      .append('pre')
-      .attr('class', 'example-code')
-      .append('code')
-      .attr('class', 'json')
-      .text(textClean);
+    const code =
+      $target
+        .append('pre')
+        .attr('class', 'example-code')
+        .append('code')
+        .attr('class', 'json')
+        .text(textClean);
     hljs.highlightBlock(code.node() as any);
   }
 
@@ -142,11 +143,12 @@ window['buildSpecOpts'] = (id: string, baseName: string) => {
   const prefixSel = select(`select[name=${id}]`);
   const inputsSel = selectAll(`input[name=${id}]:checked`);
   const prefix = prefixSel.empty() ? id : prefixSel.property('value');
-  const values = inputsSel
-    .nodes()
-    .map((n: any) => n.value)
-    .sort()
-    .join('_');
+  const values =
+    inputsSel
+      .nodes()
+      .map((n: any) => n.value)
+      .sort()
+      .join('_');
   const newName = baseName + prefix + (values ? `_${values}` : '');
   if (oldName !== newName) {
     window['changeSpec'](id, newName);
diff --git ORI/vega-lite/site/static/streaming.ts ALT/vega-lite/site/static/streaming.ts
index ff4806aa2..af282d915 100644
--- ORI/vega-lite/site/static/streaming.ts
+++ ALT/vega-lite/site/static/streaming.ts
@@ -42,10 +42,11 @@ export function runStreamingExample(eleId: string) {
   let minimumX = -100;
   window.setInterval(() => {
     minimumX++;
-    const changeSet = view
-      .changeset()
-      .insert(valueGenerator())
-      .remove((t: {x: number}) => t.x < minimumX);
+    const changeSet =
+      view
+        .changeset()
+        .insert(valueGenerator())
+        .remove((t: {x: number}) => t.x < minimumX);
     view.change('table', changeSet).run();
   }, 1000);
 }
diff --git ORI/vega-lite/src/compile/legend/assemble.ts ALT/vega-lite/src/compile/legend/assemble.ts
index 3732dac59..d675e3ae0 100644
--- ORI/vega-lite/src/compile/legend/assemble.ts
+++ ALT/vega-lite/src/compile/legend/assemble.ts
@@ -40,10 +40,11 @@ export function assembleLegends(model: Model): VgLegend[] {
     }
   }
 
-  const legends = vals(legendByDomain)
-    .flat()
-    .map(l => assembleLegend(l, model.config))
-    .filter(l => l !== undefined);
+  const legends =
+    vals(legendByDomain)
+      .flat()
+      .map(l => assembleLegend(l, model.config))
+      .filter(l => l !== undefined);
 
   return legends;
 }
diff --git ORI/vega-lite/src/compile/mark/encode/aria.ts ALT/vega-lite/src/compile/mark/encode/aria.ts
index dac62f19e..c210e2563 100644
--- ORI/vega-lite/src/compile/mark/encode/aria.ts
+++ ALT/vega-lite/src/compile/mark/encode/aria.ts
@@ -69,9 +69,10 @@ export function description(model: UnitModel) {
 
   return {
     description: {
-      signal: entries(data)
-        .map(([key, value], index) => `"${index > 0 ? '; ' : ''}${key}: " + (${value})`)
-        .join(' + ')
+      signal:
+        entries(data)
+          .map(([key, value], index) => `"${index > 0 ? '; ' : ''}${key}: " + (${value})`)
+          .join(' + ')
     }
   };
 }
diff --git ORI/vega-lite/src/compile/selection/interval.ts ALT/vega-lite/src/compile/selection/interval.ts
index 7dd7b69b1..f104ea560 100644
--- ORI/vega-lite/src/compile/selection/interval.ts
+++ ALT/vega-lite/src/compile/selection/interval.ts
@@ -139,9 +139,10 @@ const interval: SelectionCompiler<'interval'> = {
     const vgStroke = keys(stroke).reduce((def, k) => {
       def[k] = [
         {
-          test: [x !== undefined && `${xvname}[0] !== ${xvname}[1]`, y !== undefined && `${yvname}[0] !== ${yvname}[1]`]
-            .filter(t => t)
-            .join(' && '),
+          test:
+            [x !== undefined && `${xvname}[0] !== ${xvname}[1]`, y !== undefined && `${yvname}[0] !== ${yvname}[1]`]
+              .filter(t => t)
+              .join(' && '),
           value: stroke[k]
         },
         {value: null}
diff --git ORI/vega-lite/src/compile/selection/legends.ts ALT/vega-lite/src/compile/selection/legends.ts
index d24822243..fe4a25f61 100644
--- ORI/vega-lite/src/compile/selection/legends.ts
+++ ALT/vega-lite/src/compile/selection/legends.ts
@@ -62,10 +62,11 @@ const legendBindings: SelectionCompiler<'point'> = {
       const hasSignal = signals.filter(s => s.name === sgName);
 
       if (hasSignal.length === 0) {
-        const events = stream.merge
-          .map(markName(`${prefix}_symbols`))
-          .concat(stream.merge.map(markName(`${prefix}_labels`)))
-          .concat(stream.merge.map(markName(`${prefix}_entries`)));
+        const events =
+          stream.merge
+            .map(markName(`${prefix}_symbols`))
+            .concat(stream.merge.map(markName(`${prefix}_labels`)))
+            .concat(stream.merge.map(markName(`${prefix}_entries`)));
 
         signals.unshift({
           name: sgName,
diff --git ORI/vega-lite/src/compile/selection/point.ts ALT/vega-lite/src/compile/selection/point.ts
index 384ac50fa..8c25479d8 100644
--- ORI/vega-lite/src/compile/selection/point.ts
+++ ALT/vega-lite/src/compile/selection/point.ts
@@ -11,16 +11,17 @@ const point: SelectionCompiler<'point'> = {
     const fieldsSg = name + TUPLE_FIELDS;
     const project = selCmpt.project;
     const datum = '(item().isVoronoi ? datum.datum : datum)';
-    const values = project.items
-      .map(p => {
-        const fieldDef = model.fieldDef(p.channel);
-        // Binned fields should capture extents, for a range test against the raw field.
-        return fieldDef && fieldDef.bin
-          ? `[${datum}[${stringValue(model.vgField(p.channel, {}))}], ` +
-              `${datum}[${stringValue(model.vgField(p.channel, {binSuffix: 'end'}))}]]`
-          : `${datum}[${stringValue(p.field)}]`;
-      })
-      .join(', ');
+    const values =
+      project.items
+        .map(p => {
+          const fieldDef = model.fieldDef(p.channel);
+          // Binned fields should capture extents, for a range test against the raw field.
+          return fieldDef && fieldDef.bin
+            ? `[${datum}[${stringValue(model.vgField(p.channel, {}))}], ` +
+                `${datum}[${stringValue(model.vgField(p.channel, {binSuffix: 'end'}))}]]`
+            : `${datum}[${stringValue(p.field)}]`;
+        })
+        .join(', ');
 
     // Only add a discrete selection to the store if a datum is present _and_
     // the interaction isn't occurring on a group mark. This guards against
diff --git ORI/vega-lite/src/normalize/repeater.ts ALT/vega-lite/src/normalize/repeater.ts
index 4034174bb..c832e2b73 100644
--- ORI/vega-lite/src/normalize/repeater.ts
+++ ALT/vega-lite/src/normalize/repeater.ts
@@ -145,9 +145,10 @@ function replaceRepeaterInMapping(
 
       if (isArray(channelDef)) {
         // array cannot have condition
-        out[channel] = (channelDef as ChannelDef<Field>[]) // somehow we need to cast it here
-          .map(cd => replaceRepeaterInChannelDef(cd, repeater))
-          .filter(cd => cd);
+        out[channel] =
+          (channelDef as ChannelDef<Field>[]) // somehow we need to cast it here
+            .map(cd => replaceRepeaterInChannelDef(cd, repeater))
+            .filter(cd => cd);
       } else {
         const cd = replaceRepeaterInChannelDef(channelDef, repeater);
         if (cd !== undefined) {

@thorn0 thorn0 closed this as completed Feb 23, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants