Repository: eslint/eslint
Pull request #15744 (2022-03-30 17:39:55)

chore: Refactor docs to work with docs.eslint.org
<!--
    Thank you for contributing!

    ESLint adheres to the [JS Foundation Code of Conduct](https://eslint.org/conduct).
-->

#### Prerequisites checklist

- [x] I have read the [contributing guidelines](https://github.com/eslint/eslint/blob/HEAD/CONTRIBUTING.md).

#### What is the purpose of this pull request? (put an "X" next to an item)

<!--
    The following template is intentionally not a markdown checkbox list for the reasons
    explained in https://github.com/eslint/eslint/pull/12848#issuecomment-580302888
-->

[ ] Documentation update
[ ] Bug fix ([template](https://raw.githubusercontent.com/eslint/eslint/HEAD/templates/bug-report.md))
[ ] New rule ([template](https://raw.githubusercontent.com/eslint/eslint/HEAD/templates/rule-proposal.md))
[ ] Changes an existing rule ([template](https://raw.githubusercontent.com/eslint/eslint/HEAD/templates/rule-change-proposal.md))
[ ] Add autofix to a rule
[ ] Add a CLI option
[ ] Add something to the core
[x] Other, please explain:

Refactored docs structure.

<!--
    If the item you've checked above has a template, please paste the template questions below and answer them. (If this pull request is addressing an issue, you can just paste a link to the issue here instead.)
-->

<!--
    Please ensure your pull request is ready:

    - Read the pull request guide (https://eslint.org/docs/developer-guide/contributing/pull-requests)
    - Include tests for this change
    - Update documentation for this change (if appropriate)
-->

<!--
    The following is required for all pull requests:
-->

#### What changes did you make? (Give an overview)

I reorganized the docs folder in preparation for the new docs.eslint.org. Mostly, this meant moving the markdown files from directly under `docs` to inside of `docs/src`. I did rename a couple of files and then updated `Makefile.js` to ensure it's reading from the correct locations and copying to the correct locations during a release.

This is just the first step to help make these files compatible with docs.eslint.org.

#### Is there anything you'd like reviewers to focus on?

Did I miss anything?

<!-- markdownlint-disable-file MD004 -->


mdjermanovic: We should update edit links, too:

https://github.com/eslint/eslint/blob/f535e15d6a5e6d607870e716f335b39331f08429/Makefile.js#L700

For example, this evaluates to `https://github.com/eslint/eslint/edit/main/docs/developer-guide/nodejs-api.md`, but after this change, it should be `https://github.com/eslint/eslint/edit/main/docs/src/developer-guide/nodejs-api.md`.
linux-foundation-easycla[bot]:  <a href="https://api.easycla.lfx.linuxfoundation.org/v2/repository-provider/github/sign/19114526/11061773/15744/#/?version=2"><img src="https://s3.amazonaws.com/cla-project-logo-prod/cla-missing-id.svg" alt="CLA Missing ID" align="left" height="28" width="328"></a> <a href="https://api.easycla.lfx.linuxfoundation.org/v2/repository-provider/github/sign/19114526/11061773/15744/#/?version=2"><img src="https://s3.amazonaws.com/cla-project-logo-prod/cla-not-signed.svg" alt="CLA Not Signed" align="left" height="28" width="328"></a><br/><br /><ul><li>:white_check_mark: login: nzakas / name: Nicholas C. Zakas  (7b78dc59b34443b9e36ec34f1d3999d7cb645ae0, 198b708960f77b900c8505175b74aec10dd4144a, d072c34f8c42fa5297f74f6f2a4ce63ec84b619d, 45489be5c6a7aee3734392c48179bc891858eb32)</li><li>:white_check_mark: login: mdjermanovic / name: Milos Djermanovic  (a9506782103d1da730d17e258fdf9decddf6c0d1, 17f117911de86c295c5d025d9518a5d2f369befa)</li><li>:white_check_mark: login: fasttime / name: Francesco Trotta  (1ff45cb64249636f0ec7d78fa6103419d0f7ffef)</li><li>:white_check_mark: login: kmin-jeong  (87d59d1458a8717cb5925ac771f6238cda90aebf)</li><li> :x: The commit (1c254dd03810172538ab47a50cc3a2d5d1b89144, 6e9a146b6284e2815353eefc117db79de0d24ee7, 8f22eb10cff71fc6604b7f736892b51329b8bf63). This user is missing the User's ID, preventing the EasyCLA check. <a href='https://help.github.com/en/github/committing-changes-to-your-project/why-are-my-commits-linked-to-the-wrong-user' target='_blank'>Consult GitHub Help</a> to resolve.For further assistance with EasyCLA, <a href='https://jira.linuxfoundation.org/servicedesk/customer/portal/4' target='_blank'>please submit a support request ticket</a>.</li></ul>
nzakas: Oh nice catch. I've updated the edit links and fixed the copying.

Patch:
diff --git a/Makefile.js b/Makefile.js
index 519b9943a..25eb619fd 100644
--- a/Makefile.js
+++ b/Makefile.js
@@ -622,7 +622,11 @@ target.gensite = function(prereleaseVersion) {
 
     // 3. Copy docs folder to a temporary directory
     echo("> Copying the docs folder (Step 3)");
-    cp("-rf", "docs/*", TEMP_DIR);
+    cp("-rf", "docs/src/*", TEMP_DIR);
+
+    // special case (for now)
+    cp("-f", "docs/src/pages/index.md", path.join(TEMP_DIR, "index.md"));
+    rm("-rf", path.join(TEMP_DIR, "pages"));
 
     let versions = test("-f", "./versions.json") ? JSON.parse(cat("./versions.json")) : {};
 
@@ -650,12 +654,12 @@ target.gensite = function(prereleaseVersion) {
 
             const rulesUrl = "https://github.com/eslint/eslint/tree/HEAD/lib/rules/",
                 testsUrl = "https://github.com/eslint/eslint/tree/HEAD/tests/lib/rules/",
-                docsUrl = "https://github.com/eslint/eslint/tree/HEAD/docs/rules/",
+                docsUrl = "https://github.com/eslint/eslint/tree/HEAD/docs/src/rules/",
                 baseName = path.basename(filename),
                 sourceBaseName = `${path.basename(filename, ".md")}.js`,
                 sourcePath = path.join("lib/rules", sourceBaseName),
                 ruleName = path.basename(filename, ".md"),
-                filePath = path.join("docs", path.relative("tmp", filename));
+                filePath = path.posix.join("docs", path.relative("tmp", filename));
             let text = cat(filename),
                 ruleType = "",
                 title;
@@ -697,7 +701,7 @@ target.gensite = function(prereleaseVersion) {
                 "---",
                 `title: ${title}`,
                 "layout: doc",
-                `edit_link: https://github.com/eslint/eslint/edit/main/${filePath}`,
+                `edit_link: https://github.com/eslint/eslint/edit/main/${filePath.replace("docs/", "docs/src/")}`,
                 ruleType,
                 "---",
                 "<!-- Note: No pull requests accepted for this file. See README.md in the root directory for details. -->",
@@ -789,7 +793,7 @@ target.checkRuleFiles = function() {
 
     RULE_FILES.forEach(filename => {
         const basename = path.basename(filename, ".js");
-        const docFilename = `docs/rules/${basename}.md`;
+        const docFilename = `docs/src/rules/${basename}.md`;
         const docText = cat(docFilename);
         const docMarkdown = marked.lexer(docText, { gfm: true, silent: false });
         const ruleCode = cat(filename);
diff --git a/README.md b/README.md
index f354ea861..e224151d6 100644
--- a/README.md
+++ b/README.md
@@ -294,7 +294,7 @@ The following companies, organizations, and individuals support ESLint's ongoing
 <p><a href="https://automattic.com"><img src="https://images.opencollective.com/automattic/d0ef3e1/logo.png" alt="Automattic" height="undefined"></a></p><h3>Gold Sponsors</h3>
 <p><a href="https://contra.com"><img src="https://images.opencollective.com/contra1/c70f93f/logo.png" alt="Contra" height="96"></a> <a href="https://nx.dev"><img src="https://images.opencollective.com/nx/0efbe42/logo.png" alt="Nx (by Nrwl)" height="96"></a> <a href="https://www.salesforce.com"><img src="https://images.opencollective.com/salesforce/ca8f997/logo.png" alt="Salesforce" height="96"></a> <a href="https://www.airbnb.com/"><img src="https://images.opencollective.com/airbnb/d327d66/logo.png" alt="Airbnb" height="96"></a> <a href="https://americanexpress.io"><img src="https://avatars.githubusercontent.com/u/3853301?v=4" alt="American Express" height="96"></a> <a href="https://substack.com/"><img src="https://avatars.githubusercontent.com/u/53023767?v=4" alt="Substack" height="96"></a></p><h3>Silver Sponsors</h3>
 <p><a href="https://liftoff.io/"><img src="https://images.opencollective.com/liftoff/5c4fa84/logo.png" alt="Liftoff" height="64"></a></p><h3>Bronze Sponsors</h3>
-<p><a href="https://launchdarkly.com"><img src="https://images.opencollective.com/launchdarkly/574bb9e/logo.png" alt="launchdarkly" height="32"></a> <a href="https://www.crosswordsolver.org/anagram-solver/"><img src="https://images.opencollective.com/anagram-solver/2666271/logo.png" alt="Anagram Solver" height="32"></a> <a href="https://www.vpsserver.com"><img src="https://images.opencollective.com/vpsservercom/logo.png" alt="VPS" height="32"></a> <a href="https://discord.com"><img src="https://images.opencollective.com/discordapp/f9645d9/logo.png" alt="Discord" height="32"></a> <a href="https://themeisle.com"><img src="https://images.opencollective.com/themeisle/d5592fe/logo.png" alt="ThemeIsle" height="32"></a> <a href="https://www.ignitionapp.com"><img src="https://avatars.githubusercontent.com/u/5753491?v=4" alt="Ignition" height="32"></a></p>
+<p><a href="https://launchdarkly.com"><img src="https://images.opencollective.com/launchdarkly/574bb9e/logo.png" alt="launchdarkly" height="32"></a> <a href="https://www.crosswordsolver.org/anagram-solver/"><img src="https://images.opencollective.com/anagram-solver/2666271/logo.png" alt="Anagram Solver" height="32"></a> <a href="https://www.vpsserver.com"><img src="https://images.opencollective.com/vpsservercom/logo.png" alt="VPS" height="32"></a> <a href="https://icons8.com"><img src="https://images.opencollective.com/icons8/7fa1641/logo.png" alt="Icons8: free icons, photos, illustrations, and music" height="32"></a> <a href="https://discord.com"><img src="https://images.opencollective.com/discordapp/f9645d9/logo.png" alt="Discord" height="32"></a> <a href="https://themeisle.com"><img src="https://images.opencollective.com/themeisle/d5592fe/logo.png" alt="ThemeIsle" height="32"></a> <a href="https://www.ignitionapp.com"><img src="https://avatars.githubusercontent.com/u/5753491?v=4" alt="Ignition" height="32"></a></p>
 <!--sponsorsend-->
 
 ## <a name="technology-sponsors"></a>Technology Sponsors
diff --git a/docs/about/index.md b/docs/src/about/index.md
similarity index 100%
rename from docs/about/index.md
rename to docs/src/about/index.md
diff --git a/docs/developer-guide/README.md b/docs/src/developer-guide/README.md
similarity index 100%
rename from docs/developer-guide/README.md
rename to docs/src/developer-guide/README.md
diff --git a/docs/developer-guide/architecture.md b/docs/src/developer-guide/architecture.md
similarity index 100%
rename from docs/developer-guide/architecture.md
rename to docs/src/developer-guide/architecture.md
diff --git a/docs/developer-guide/architecture/dependency.svg b/docs/src/developer-guide/architecture/dependency.svg
similarity index 100%
rename from docs/developer-guide/architecture/dependency.svg
rename to docs/src/developer-guide/architecture/dependency.svg
diff --git a/docs/developer-guide/code-conventions.md b/docs/src/developer-guide/code-conventions.md
similarity index 100%
rename from docs/developer-guide/code-conventions.md
rename to docs/src/developer-guide/code-conventions.md
diff --git a/docs/developer-guide/code-path-analysis.md b/docs/src/developer-guide/code-path-analysis.md
similarity index 100%
rename from docs/developer-guide/code-path-analysis.md
rename to docs/src/developer-guide/code-path-analysis.md
diff --git a/docs/developer-guide/code-path-analysis/README.md b/docs/src/developer-guide/code-path-analysis/README.md
similarity index 100%
rename from docs/developer-guide/code-path-analysis/README.md
rename to docs/src/developer-guide/code-path-analysis/README.md
diff --git a/docs/developer-guide/code-path-analysis/example-dowhilestatement.svg b/docs/src/developer-guide/code-path-analysis/example-dowhilestatement.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/example-dowhilestatement.svg
rename to docs/src/developer-guide/code-path-analysis/example-dowhilestatement.svg
diff --git a/docs/developer-guide/code-path-analysis/example-forinstatement.svg b/docs/src/developer-guide/code-path-analysis/example-forinstatement.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/example-forinstatement.svg
rename to docs/src/developer-guide/code-path-analysis/example-forinstatement.svg
diff --git a/docs/developer-guide/code-path-analysis/example-forstatement-for-ever.svg b/docs/src/developer-guide/code-path-analysis/example-forstatement-for-ever.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/example-forstatement-for-ever.svg
rename to docs/src/developer-guide/code-path-analysis/example-forstatement-for-ever.svg
diff --git a/docs/developer-guide/code-path-analysis/example-forstatement.svg b/docs/src/developer-guide/code-path-analysis/example-forstatement.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/example-forstatement.svg
rename to docs/src/developer-guide/code-path-analysis/example-forstatement.svg
diff --git a/docs/developer-guide/code-path-analysis/example-hello-world.svg b/docs/src/developer-guide/code-path-analysis/example-hello-world.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/example-hello-world.svg
rename to docs/src/developer-guide/code-path-analysis/example-hello-world.svg
diff --git a/docs/developer-guide/code-path-analysis/example-ifstatement-chain.svg b/docs/src/developer-guide/code-path-analysis/example-ifstatement-chain.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/example-ifstatement-chain.svg
rename to docs/src/developer-guide/code-path-analysis/example-ifstatement-chain.svg
diff --git a/docs/developer-guide/code-path-analysis/example-ifstatement.svg b/docs/src/developer-guide/code-path-analysis/example-ifstatement.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/example-ifstatement.svg
rename to docs/src/developer-guide/code-path-analysis/example-ifstatement.svg
diff --git a/docs/developer-guide/code-path-analysis/example-switchstatement-has-default.svg b/docs/src/developer-guide/code-path-analysis/example-switchstatement-has-default.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/example-switchstatement-has-default.svg
rename to docs/src/developer-guide/code-path-analysis/example-switchstatement-has-default.svg
diff --git a/docs/developer-guide/code-path-analysis/example-switchstatement.svg b/docs/src/developer-guide/code-path-analysis/example-switchstatement.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/example-switchstatement.svg
rename to docs/src/developer-guide/code-path-analysis/example-switchstatement.svg
diff --git a/docs/developer-guide/code-path-analysis/example-trystatement-try-catch-finally.svg b/docs/src/developer-guide/code-path-analysis/example-trystatement-try-catch-finally.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/example-trystatement-try-catch-finally.svg
rename to docs/src/developer-guide/code-path-analysis/example-trystatement-try-catch-finally.svg
diff --git a/docs/developer-guide/code-path-analysis/example-trystatement-try-catch.svg b/docs/src/developer-guide/code-path-analysis/example-trystatement-try-catch.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/example-trystatement-try-catch.svg
rename to docs/src/developer-guide/code-path-analysis/example-trystatement-try-catch.svg
diff --git a/docs/developer-guide/code-path-analysis/example-trystatement-try-finally.svg b/docs/src/developer-guide/code-path-analysis/example-trystatement-try-finally.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/example-trystatement-try-finally.svg
rename to docs/src/developer-guide/code-path-analysis/example-trystatement-try-finally.svg
diff --git a/docs/developer-guide/code-path-analysis/example-when-there-is-a-function-f.svg b/docs/src/developer-guide/code-path-analysis/example-when-there-is-a-function-f.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/example-when-there-is-a-function-f.svg
rename to docs/src/developer-guide/code-path-analysis/example-when-there-is-a-function-f.svg
diff --git a/docs/developer-guide/code-path-analysis/example-when-there-is-a-function-g.svg b/docs/src/developer-guide/code-path-analysis/example-when-there-is-a-function-g.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/example-when-there-is-a-function-g.svg
rename to docs/src/developer-guide/code-path-analysis/example-when-there-is-a-function-g.svg
diff --git a/docs/developer-guide/code-path-analysis/example-whilestatement.svg b/docs/src/developer-guide/code-path-analysis/example-whilestatement.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/example-whilestatement.svg
rename to docs/src/developer-guide/code-path-analysis/example-whilestatement.svg
diff --git a/docs/developer-guide/code-path-analysis/helo.svg b/docs/src/developer-guide/code-path-analysis/helo.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/helo.svg
rename to docs/src/developer-guide/code-path-analysis/helo.svg
diff --git a/docs/developer-guide/code-path-analysis/loop-event-example-for-1.svg b/docs/src/developer-guide/code-path-analysis/loop-event-example-for-1.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/loop-event-example-for-1.svg
rename to docs/src/developer-guide/code-path-analysis/loop-event-example-for-1.svg
diff --git a/docs/developer-guide/code-path-analysis/loop-event-example-for-2.svg b/docs/src/developer-guide/code-path-analysis/loop-event-example-for-2.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/loop-event-example-for-2.svg
rename to docs/src/developer-guide/code-path-analysis/loop-event-example-for-2.svg
diff --git a/docs/developer-guide/code-path-analysis/loop-event-example-for-3.svg b/docs/src/developer-guide/code-path-analysis/loop-event-example-for-3.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/loop-event-example-for-3.svg
rename to docs/src/developer-guide/code-path-analysis/loop-event-example-for-3.svg
diff --git a/docs/developer-guide/code-path-analysis/loop-event-example-for-4.svg b/docs/src/developer-guide/code-path-analysis/loop-event-example-for-4.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/loop-event-example-for-4.svg
rename to docs/src/developer-guide/code-path-analysis/loop-event-example-for-4.svg
diff --git a/docs/developer-guide/code-path-analysis/loop-event-example-for-5.svg b/docs/src/developer-guide/code-path-analysis/loop-event-example-for-5.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/loop-event-example-for-5.svg
rename to docs/src/developer-guide/code-path-analysis/loop-event-example-for-5.svg
diff --git a/docs/developer-guide/code-path-analysis/loop-event-example-while-1.svg b/docs/src/developer-guide/code-path-analysis/loop-event-example-while-1.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/loop-event-example-while-1.svg
rename to docs/src/developer-guide/code-path-analysis/loop-event-example-while-1.svg
diff --git a/docs/developer-guide/code-path-analysis/loop-event-example-while-2.svg b/docs/src/developer-guide/code-path-analysis/loop-event-example-while-2.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/loop-event-example-while-2.svg
rename to docs/src/developer-guide/code-path-analysis/loop-event-example-while-2.svg
diff --git a/docs/developer-guide/code-path-analysis/loop-event-example-while-3.svg b/docs/src/developer-guide/code-path-analysis/loop-event-example-while-3.svg
similarity index 100%
rename from docs/developer-guide/code-path-analysis/loop-event-example-while-3.svg
rename to docs/src/developer-guide/code-path-analysis/loop-event-example-while-3.svg
diff --git a/docs/developer-guide/contributing/README.md b/docs/src/developer-guide/contributing/README.md
similarity index 100%
rename from docs/developer-guide/contributing/README.md
rename to docs/src/developer-guide/contributing/README.md
diff --git a/docs/developer-guide/contributing/changes.md b/docs/src/developer-guide/contributing/changes.md
similarity index 100%
rename from docs/developer-guide/contributing/changes.md
rename to docs/src/developer-guide/contributing/changes.md
diff --git a/docs/developer-guide/contributing/new-rules.md b/docs/src/developer-guide/contributing/new-rules.md
similarity index 100%
rename from docs/developer-guide/contributing/new-rules.md
rename to docs/src/developer-guide/contributing/new-rules.md
diff --git a/docs/developer-guide/contributing/pull-requests.md b/docs/src/developer-guide/contributing/pull-requests.md
similarity index 100%
rename from docs/developer-guide/contributing/pull-requests.md
rename to docs/src/developer-guide/contributing/pull-requests.md
diff --git a/docs/developer-guide/contributing/reporting-bugs.md b/docs/src/developer-guide/contributing/reporting-bugs.md
similarity index 100%
rename from docs/developer-guide/contributing/reporting-bugs.md
rename to docs/src/developer-guide/contributing/reporting-bugs.md
diff --git a/docs/developer-guide/contributing/rule-changes.md b/docs/src/developer-guide/contributing/rule-changes.md
similarity index 100%
rename from docs/developer-guide/contributing/rule-changes.md
rename to docs/src/developer-guide/contributing/rule-changes.md
diff --git a/docs/developer-guide/contributing/working-on-issues.md b/docs/src/developer-guide/contributing/working-on-issues.md
similarity index 100%
rename from docs/developer-guide/contributing/working-on-issues.md
rename to docs/src/developer-guide/contributing/working-on-issues.md
diff --git a/docs/developer-guide/development-environment.md b/docs/src/developer-guide/development-environment.md
similarity index 100%
rename from docs/developer-guide/development-environment.md
rename to docs/src/developer-guide/development-environment.md
diff --git a/docs/developer-guide/nodejs-api.md b/docs/src/developer-guide/nodejs-api.md
similarity index 100%
rename from docs/developer-guide/nodejs-api.md
rename to docs/src/developer-guide/nodejs-api.md
diff --git a/docs/developer-guide/scope-manager-interface.md b/docs/src/developer-guide/scope-manager-interface.md
similarity index 100%
rename from docs/developer-guide/scope-manager-interface.md
rename to docs/src/developer-guide/scope-manager-interface.md
diff --git a/docs/developer-guide/selectors.md b/docs/src/developer-guide/selectors.md
similarity index 100%
rename from docs/developer-guide/selectors.md
rename to docs/src/developer-guide/selectors.md
diff --git a/docs/developer-guide/shareable-configs.md b/docs/src/developer-guide/shareable-configs.md
similarity index 100%
rename from docs/developer-guide/shareable-configs.md
rename to docs/src/developer-guide/shareable-configs.md
diff --git a/docs/developer-guide/source-code.md b/docs/src/developer-guide/source-code.md
similarity index 100%
rename from docs/developer-guide/source-code.md
rename to docs/src/developer-guide/source-code.md
diff --git a/docs/developer-guide/unit-tests.md b/docs/src/developer-guide/unit-tests.md
similarity index 100%
rename from docs/developer-guide/unit-tests.md
rename to docs/src/developer-guide/unit-tests.md
diff --git a/docs/developer-guide/working-with-custom-formatters.md b/docs/src/developer-guide/working-with-custom-formatters.md
similarity index 100%
rename from docs/developer-guide/working-with-custom-formatters.md
rename to docs/src/developer-guide/working-with-custom-formatters.md
diff --git a/docs/developer-guide/working-with-custom-parsers.md b/docs/src/developer-guide/working-with-custom-parsers.md
similarity index 100%
rename from docs/developer-guide/working-with-custom-parsers.md
rename to docs/src/developer-guide/working-with-custom-parsers.md
diff --git a/docs/developer-guide/working-with-plugins.md b/docs/src/developer-guide/working-with-plugins.md
similarity index 100%
rename from docs/developer-guide/working-with-plugins.md
rename to docs/src/developer-guide/working-with-plugins.md
diff --git a/docs/developer-guide/working-with-rules-deprecated.md b/docs/src/developer-guide/working-with-rules-deprecated.md
similarity index 100%
rename from docs/developer-guide/working-with-rules-deprecated.md
rename to docs/src/developer-guide/working-with-rules-deprecated.md
diff --git a/docs/developer-guide/working-with-rules.md b/docs/src/developer-guide/working-with-rules.md
similarity index 100%
rename from docs/developer-guide/working-with-rules.md
rename to docs/src/developer-guide/working-with-rules.md
diff --git a/docs/maintainer-guide/README.md b/docs/src/maintainer-guide/README.md
similarity index 100%
rename from docs/maintainer-guide/README.md
rename to docs/src/maintainer-guide/README.md
diff --git a/docs/maintainer-guide/governance.md b/docs/src/maintainer-guide/governance.md
similarity index 100%
rename from docs/maintainer-guide/governance.md
rename to docs/src/maintainer-guide/governance.md
diff --git a/docs/maintainer-guide/issues.md b/docs/src/maintainer-guide/issues.md
similarity index 100%
rename from docs/maintainer-guide/issues.md
rename to docs/src/maintainer-guide/issues.md
diff --git a/docs/maintainer-guide/pullrequests.md b/docs/src/maintainer-guide/pullrequests.md
similarity index 100%
rename from docs/maintainer-guide/pullrequests.md
rename to docs/src/maintainer-guide/pullrequests.md
diff --git a/docs/maintainer-guide/releases.md b/docs/src/maintainer-guide/releases.md
similarity index 100%
rename from docs/maintainer-guide/releases.md
rename to docs/src/maintainer-guide/releases.md
diff --git a/docs/maintainer-guide/working-groups.md b/docs/src/maintainer-guide/working-groups.md
similarity index 100%
rename from docs/maintainer-guide/working-groups.md
rename to docs/src/maintainer-guide/working-groups.md
diff --git a/docs/README.md b/docs/src/pages/index.md
similarity index 100%
rename from docs/README.md
rename to docs/src/pages/index.md
diff --git a/docs/rules/accessor-pairs.md b/docs/src/rules/accessor-pairs.md
similarity index 100%
rename from docs/rules/accessor-pairs.md
rename to docs/src/rules/accessor-pairs.md
diff --git a/docs/rules/array-bracket-newline.md b/docs/src/rules/array-bracket-newline.md
similarity index 100%
rename from docs/rules/array-bracket-newline.md
rename to docs/src/rules/array-bracket-newline.md
diff --git a/docs/rules/array-bracket-spacing.md b/docs/src/rules/array-bracket-spacing.md
similarity index 100%
rename from docs/rules/array-bracket-spacing.md
rename to docs/src/rules/array-bracket-spacing.md
diff --git a/docs/rules/array-callback-return.md b/docs/src/rules/array-callback-return.md
similarity index 100%
rename from docs/rules/array-callback-return.md
rename to docs/src/rules/array-callback-return.md
diff --git a/docs/rules/array-element-newline.md b/docs/src/rules/array-element-newline.md
similarity index 100%
rename from docs/rules/array-element-newline.md
rename to docs/src/rules/array-element-newline.md
diff --git a/docs/rules/arrow-body-style.md b/docs/src/rules/arrow-body-style.md
similarity index 100%
rename from docs/rules/arrow-body-style.md
rename to docs/src/rules/arrow-body-style.md
diff --git a/docs/rules/arrow-parens.md b/docs/src/rules/arrow-parens.md
similarity index 100%
rename from docs/rules/arrow-parens.md
rename to docs/src/rules/arrow-parens.md
diff --git a/docs/rules/arrow-spacing.md b/docs/src/rules/arrow-spacing.md
similarity index 100%
rename from docs/rules/arrow-spacing.md
rename to docs/src/rules/arrow-spacing.md
diff --git a/docs/rules/block-scoped-var.md b/docs/src/rules/block-scoped-var.md
similarity index 100%
rename from docs/rules/block-scoped-var.md
rename to docs/src/rules/block-scoped-var.md
diff --git a/docs/rules/block-spacing.md b/docs/src/rules/block-spacing.md
similarity index 100%
rename from docs/rules/block-spacing.md
rename to docs/src/rules/block-spacing.md
diff --git a/docs/rules/brace-style.md b/docs/src/rules/brace-style.md
similarity index 100%
rename from docs/rules/brace-style.md
rename to docs/src/rules/brace-style.md
diff --git a/docs/rules/callback-return.md b/docs/src/rules/callback-return.md
similarity index 100%
rename from docs/rules/callback-return.md
rename to docs/src/rules/callback-return.md
diff --git a/docs/rules/camelcase.md b/docs/src/rules/camelcase.md
similarity index 100%
rename from docs/rules/camelcase.md
rename to docs/src/rules/camelcase.md
diff --git a/docs/rules/capitalized-comments.md b/docs/src/rules/capitalized-comments.md
similarity index 100%
rename from docs/rules/capitalized-comments.md
rename to docs/src/rules/capitalized-comments.md
diff --git a/docs/rules/class-methods-use-this.md b/docs/src/rules/class-methods-use-this.md
similarity index 100%
rename from docs/rules/class-methods-use-this.md
rename to docs/src/rules/class-methods-use-this.md
diff --git a/docs/rules/comma-dangle.md b/docs/src/rules/comma-dangle.md
similarity index 100%
rename from docs/rules/comma-dangle.md
rename to docs/src/rules/comma-dangle.md
diff --git a/docs/rules/comma-spacing.md b/docs/src/rules/comma-spacing.md
similarity index 100%
rename from docs/rules/comma-spacing.md
rename to docs/src/rules/comma-spacing.md
diff --git a/docs/rules/comma-style.md b/docs/src/rules/comma-style.md
similarity index 100%
rename from docs/rules/comma-style.md
rename to docs/src/rules/comma-style.md
diff --git a/docs/rules/complexity.md b/docs/src/rules/complexity.md
similarity index 100%
rename from docs/rules/complexity.md
rename to docs/src/rules/complexity.md
diff --git a/docs/rules/computed-property-spacing.md b/docs/src/rules/computed-property-spacing.md
similarity index 100%
rename from docs/rules/computed-property-spacing.md
rename to docs/src/rules/computed-property-spacing.md
diff --git a/docs/rules/consistent-return.md b/docs/src/rules/consistent-return.md
similarity index 100%
rename from docs/rules/consistent-return.md
rename to docs/src/rules/consistent-return.md
diff --git a/docs/rules/consistent-this.md b/docs/src/rules/consistent-this.md
similarity index 100%
rename from docs/rules/consistent-this.md
rename to docs/src/rules/consistent-this.md
diff --git a/docs/rules/constructor-super.md b/docs/src/rules/constructor-super.md
similarity index 100%
rename from docs/rules/constructor-super.md
rename to docs/src/rules/constructor-super.md
diff --git a/docs/rules/curly.md b/docs/src/rules/curly.md
similarity index 100%
rename from docs/rules/curly.md
rename to docs/src/rules/curly.md
diff --git a/docs/rules/default-case-last.md b/docs/src/rules/default-case-last.md
similarity index 100%
rename from docs/rules/default-case-last.md
rename to docs/src/rules/default-case-last.md
diff --git a/docs/rules/default-case.md b/docs/src/rules/default-case.md
similarity index 100%
rename from docs/rules/default-case.md
rename to docs/src/rules/default-case.md
diff --git a/docs/rules/default-param-last.md b/docs/src/rules/default-param-last.md
similarity index 100%
rename from docs/rules/default-param-last.md
rename to docs/src/rules/default-param-last.md
diff --git a/docs/rules/dot-location.md b/docs/src/rules/dot-location.md
similarity index 100%
rename from docs/rules/dot-location.md
rename to docs/src/rules/dot-location.md
diff --git a/docs/rules/dot-notation.md b/docs/src/rules/dot-notation.md
similarity index 100%
rename from docs/rules/dot-notation.md
rename to docs/src/rules/dot-notation.md
diff --git a/docs/rules/eol-last.md b/docs/src/rules/eol-last.md
similarity index 100%
rename from docs/rules/eol-last.md
rename to docs/src/rules/eol-last.md
diff --git a/docs/rules/eqeqeq.md b/docs/src/rules/eqeqeq.md
similarity index 100%
rename from docs/rules/eqeqeq.md
rename to docs/src/rules/eqeqeq.md
diff --git a/docs/rules/for-direction.md b/docs/src/rules/for-direction.md
similarity index 100%
rename from docs/rules/for-direction.md
rename to docs/src/rules/for-direction.md
diff --git a/docs/rules/func-call-spacing.md b/docs/src/rules/func-call-spacing.md
similarity index 100%
rename from docs/rules/func-call-spacing.md
rename to docs/src/rules/func-call-spacing.md
diff --git a/docs/rules/func-name-matching.md b/docs/src/rules/func-name-matching.md
similarity index 100%
rename from docs/rules/func-name-matching.md
rename to docs/src/rules/func-name-matching.md
diff --git a/docs/rules/func-names.md b/docs/src/rules/func-names.md
similarity index 100%
rename from docs/rules/func-names.md
rename to docs/src/rules/func-names.md
diff --git a/docs/rules/func-style.md b/docs/src/rules/func-style.md
similarity index 100%
rename from docs/rules/func-style.md
rename to docs/src/rules/func-style.md
diff --git a/docs/rules/function-call-argument-newline.md b/docs/src/rules/function-call-argument-newline.md
similarity index 100%
rename from docs/rules/function-call-argument-newline.md
rename to docs/src/rules/function-call-argument-newline.md
diff --git a/docs/rules/function-paren-newline.md b/docs/src/rules/function-paren-newline.md
similarity index 100%
rename from docs/rules/function-paren-newline.md
rename to docs/src/rules/function-paren-newline.md
diff --git a/docs/rules/generator-star-spacing.md b/docs/src/rules/generator-star-spacing.md
similarity index 100%
rename from docs/rules/generator-star-spacing.md
rename to docs/src/rules/generator-star-spacing.md
diff --git a/docs/rules/generator-star.md b/docs/src/rules/generator-star.md
similarity index 100%
rename from docs/rules/generator-star.md
rename to docs/src/rules/generator-star.md
diff --git a/docs/rules/getter-return.md b/docs/src/rules/getter-return.md
similarity index 100%
rename from docs/rules/getter-return.md
rename to docs/src/rules/getter-return.md
diff --git a/docs/rules/global-require.md b/docs/src/rules/global-require.md
similarity index 100%
rename from docs/rules/global-require.md
rename to docs/src/rules/global-require.md
diff --git a/docs/rules/global-strict.md b/docs/src/rules/global-strict.md
similarity index 100%
rename from docs/rules/global-strict.md
rename to docs/src/rules/global-strict.md
diff --git a/docs/rules/grouped-accessor-pairs.md b/docs/src/rules/grouped-accessor-pairs.md
similarity index 100%
rename from docs/rules/grouped-accessor-pairs.md
rename to docs/src/rules/grouped-accessor-pairs.md
diff --git a/docs/rules/guard-for-in.md b/docs/src/rules/guard-for-in.md
similarity index 100%
rename from docs/rules/guard-for-in.md
rename to docs/src/rules/guard-for-in.md
diff --git a/docs/rules/handle-callback-err.md b/docs/src/rules/handle-callback-err.md
similarity index 100%
rename from docs/rules/handle-callback-err.md
rename to docs/src/rules/handle-callback-err.md
diff --git a/docs/rules/id-blacklist.md b/docs/src/rules/id-blacklist.md
similarity index 100%
rename from docs/rules/id-blacklist.md
rename to docs/src/rules/id-blacklist.md
diff --git a/docs/rules/id-denylist.md b/docs/src/rules/id-denylist.md
similarity index 100%
rename from docs/rules/id-denylist.md
rename to docs/src/rules/id-denylist.md
diff --git a/docs/rules/id-length.md b/docs/src/rules/id-length.md
similarity index 100%
rename from docs/rules/id-length.md
rename to docs/src/rules/id-length.md
diff --git a/docs/rules/id-match.md b/docs/src/rules/id-match.md
similarity index 100%
rename from docs/rules/id-match.md
rename to docs/src/rules/id-match.md
diff --git a/docs/rules/implicit-arrow-linebreak.md b/docs/src/rules/implicit-arrow-linebreak.md
similarity index 100%
rename from docs/rules/implicit-arrow-linebreak.md
rename to docs/src/rules/implicit-arrow-linebreak.md
diff --git a/docs/rules/indent-legacy.md b/docs/src/rules/indent-legacy.md
similarity index 100%
rename from docs/rules/indent-legacy.md
rename to docs/src/rules/indent-legacy.md
diff --git a/docs/rules/indent.md b/docs/src/rules/indent.md
similarity index 100%
rename from docs/rules/indent.md
rename to docs/src/rules/indent.md
diff --git a/docs/rules/init-declarations.md b/docs/src/rules/init-declarations.md
similarity index 100%
rename from docs/rules/init-declarations.md
rename to docs/src/rules/init-declarations.md
diff --git a/docs/rules/jsx-quotes.md b/docs/src/rules/jsx-quotes.md
similarity index 100%
rename from docs/rules/jsx-quotes.md
rename to docs/src/rules/jsx-quotes.md
diff --git a/docs/rules/key-spacing.md b/docs/src/rules/key-spacing.md
similarity index 100%
rename from docs/rules/key-spacing.md
rename to docs/src/rules/key-spacing.md
diff --git a/docs/rules/keyword-spacing.md b/docs/src/rules/keyword-spacing.md
similarity index 100%
rename from docs/rules/keyword-spacing.md
rename to docs/src/rules/keyword-spacing.md
diff --git a/docs/rules/line-comment-position.md b/docs/src/rules/line-comment-position.md
similarity index 100%
rename from docs/rules/line-comment-position.md
rename to docs/src/rules/line-comment-position.md
diff --git a/docs/rules/linebreak-style.md b/docs/src/rules/linebreak-style.md
similarity index 100%
rename from docs/rules/linebreak-style.md
rename to docs/src/rules/linebreak-style.md
diff --git a/docs/rules/lines-around-comment.md b/docs/src/rules/lines-around-comment.md
similarity index 100%
rename from docs/rules/lines-around-comment.md
rename to docs/src/rules/lines-around-comment.md
diff --git a/docs/rules/lines-around-directive.md b/docs/src/rules/lines-around-directive.md
similarity index 100%
rename from docs/rules/lines-around-directive.md
rename to docs/src/rules/lines-around-directive.md
diff --git a/docs/rules/lines-between-class-members.md b/docs/src/rules/lines-between-class-members.md
similarity index 100%
rename from docs/rules/lines-between-class-members.md
rename to docs/src/rules/lines-between-class-members.md
diff --git a/docs/rules/max-classes-per-file.md b/docs/src/rules/max-classes-per-file.md
similarity index 100%
rename from docs/rules/max-classes-per-file.md
rename to docs/src/rules/max-classes-per-file.md
diff --git a/docs/rules/max-depth.md b/docs/src/rules/max-depth.md
similarity index 100%
rename from docs/rules/max-depth.md
rename to docs/src/rules/max-depth.md
diff --git a/docs/rules/max-len.md b/docs/src/rules/max-len.md
similarity index 100%
rename from docs/rules/max-len.md
rename to docs/src/rules/max-len.md
diff --git a/docs/rules/max-lines-per-function.md b/docs/src/rules/max-lines-per-function.md
similarity index 100%
rename from docs/rules/max-lines-per-function.md
rename to docs/src/rules/max-lines-per-function.md
diff --git a/docs/rules/max-lines.md b/docs/src/rules/max-lines.md
similarity index 100%
rename from docs/rules/max-lines.md
rename to docs/src/rules/max-lines.md
diff --git a/docs/rules/max-nested-callbacks.md b/docs/src/rules/max-nested-callbacks.md
similarity index 100%
rename from docs/rules/max-nested-callbacks.md
rename to docs/src/rules/max-nested-callbacks.md
diff --git a/docs/rules/max-params.md b/docs/src/rules/max-params.md
similarity index 100%
rename from docs/rules/max-params.md
rename to docs/src/rules/max-params.md
diff --git a/docs/rules/max-statements-per-line.md b/docs/src/rules/max-statements-per-line.md
similarity index 100%
rename from docs/rules/max-statements-per-line.md
rename to docs/src/rules/max-statements-per-line.md
diff --git a/docs/rules/max-statements.md b/docs/src/rules/max-statements.md
similarity index 100%
rename from docs/rules/max-statements.md
rename to docs/src/rules/max-statements.md
diff --git a/docs/rules/multiline-comment-style.md b/docs/src/rules/multiline-comment-style.md
similarity index 100%
rename from docs/rules/multiline-comment-style.md
rename to docs/src/rules/multiline-comment-style.md
diff --git a/docs/rules/multiline-ternary.md b/docs/src/rules/multiline-ternary.md
similarity index 100%
rename from docs/rules/multiline-ternary.md
rename to docs/src/rules/multiline-ternary.md
diff --git a/docs/rules/new-cap.md b/docs/src/rules/new-cap.md
similarity index 100%
rename from docs/rules/new-cap.md
rename to docs/src/rules/new-cap.md
diff --git a/docs/rules/new-parens.md b/docs/src/rules/new-parens.md
similarity index 100%
rename from docs/rules/new-parens.md
rename to docs/src/rules/new-parens.md
diff --git a/docs/rules/newline-after-var.md b/docs/src/rules/newline-after-var.md
similarity index 100%
rename from docs/rules/newline-after-var.md
rename to docs/src/rules/newline-after-var.md
diff --git a/docs/rules/newline-before-return.md b/docs/src/rules/newline-before-return.md
similarity index 100%
rename from docs/rules/newline-before-return.md
rename to docs/src/rules/newline-before-return.md
diff --git a/docs/rules/newline-per-chained-call.md b/docs/src/rules/newline-per-chained-call.md
similarity index 100%
rename from docs/rules/newline-per-chained-call.md
rename to docs/src/rules/newline-per-chained-call.md
diff --git a/docs/rules/no-alert.md b/docs/src/rules/no-alert.md
similarity index 100%
rename from docs/rules/no-alert.md
rename to docs/src/rules/no-alert.md
diff --git a/docs/rules/no-array-constructor.md b/docs/src/rules/no-array-constructor.md
similarity index 100%
rename from docs/rules/no-array-constructor.md
rename to docs/src/rules/no-array-constructor.md
diff --git a/docs/rules/no-arrow-condition.md b/docs/src/rules/no-arrow-condition.md
similarity index 100%
rename from docs/rules/no-arrow-condition.md
rename to docs/src/rules/no-arrow-condition.md
diff --git a/docs/rules/no-async-promise-executor.md b/docs/src/rules/no-async-promise-executor.md
similarity index 100%
rename from docs/rules/no-async-promise-executor.md
rename to docs/src/rules/no-async-promise-executor.md
diff --git a/docs/rules/no-await-in-loop.md b/docs/src/rules/no-await-in-loop.md
similarity index 100%
rename from docs/rules/no-await-in-loop.md
rename to docs/src/rules/no-await-in-loop.md
diff --git a/docs/rules/no-bitwise.md b/docs/src/rules/no-bitwise.md
similarity index 100%
rename from docs/rules/no-bitwise.md
rename to docs/src/rules/no-bitwise.md
diff --git a/docs/rules/no-buffer-constructor.md b/docs/src/rules/no-buffer-constructor.md
similarity index 100%
rename from docs/rules/no-buffer-constructor.md
rename to docs/src/rules/no-buffer-constructor.md
diff --git a/docs/rules/no-caller.md b/docs/src/rules/no-caller.md
similarity index 100%
rename from docs/rules/no-caller.md
rename to docs/src/rules/no-caller.md
diff --git a/docs/rules/no-case-declarations.md b/docs/src/rules/no-case-declarations.md
similarity index 100%
rename from docs/rules/no-case-declarations.md
rename to docs/src/rules/no-case-declarations.md
diff --git a/docs/rules/no-catch-shadow.md b/docs/src/rules/no-catch-shadow.md
similarity index 100%
rename from docs/rules/no-catch-shadow.md
rename to docs/src/rules/no-catch-shadow.md
diff --git a/docs/rules/no-class-assign.md b/docs/src/rules/no-class-assign.md
similarity index 100%
rename from docs/rules/no-class-assign.md
rename to docs/src/rules/no-class-assign.md
diff --git a/docs/rules/no-comma-dangle.md b/docs/src/rules/no-comma-dangle.md
similarity index 100%
rename from docs/rules/no-comma-dangle.md
rename to docs/src/rules/no-comma-dangle.md
diff --git a/docs/rules/no-compare-neg-zero.md b/docs/src/rules/no-compare-neg-zero.md
similarity index 100%
rename from docs/rules/no-compare-neg-zero.md
rename to docs/src/rules/no-compare-neg-zero.md
diff --git a/docs/rules/no-cond-assign.md b/docs/src/rules/no-cond-assign.md
similarity index 100%
rename from docs/rules/no-cond-assign.md
rename to docs/src/rules/no-cond-assign.md
diff --git a/docs/rules/no-confusing-arrow.md b/docs/src/rules/no-confusing-arrow.md
similarity index 100%
rename from docs/rules/no-confusing-arrow.md
rename to docs/src/rules/no-confusing-arrow.md
diff --git a/docs/rules/no-console.md b/docs/src/rules/no-console.md
similarity index 100%
rename from docs/rules/no-console.md
rename to docs/src/rules/no-console.md
diff --git a/docs/rules/no-const-assign.md b/docs/src/rules/no-const-assign.md
similarity index 100%
rename from docs/rules/no-const-assign.md
rename to docs/src/rules/no-const-assign.md
diff --git a/docs/rules/no-constant-condition.md b/docs/src/rules/no-constant-condition.md
similarity index 100%
rename from docs/rules/no-constant-condition.md
rename to docs/src/rules/no-constant-condition.md
diff --git a/docs/rules/no-constructor-return.md b/docs/src/rules/no-constructor-return.md
similarity index 100%
rename from docs/rules/no-constructor-return.md
rename to docs/src/rules/no-constructor-return.md
diff --git a/docs/rules/no-continue.md b/docs/src/rules/no-continue.md
similarity index 100%
rename from docs/rules/no-continue.md
rename to docs/src/rules/no-continue.md
diff --git a/docs/rules/no-control-regex.md b/docs/src/rules/no-control-regex.md
similarity index 100%
rename from docs/rules/no-control-regex.md
rename to docs/src/rules/no-control-regex.md
diff --git a/docs/rules/no-debugger.md b/docs/src/rules/no-debugger.md
similarity index 100%
rename from docs/rules/no-debugger.md
rename to docs/src/rules/no-debugger.md
diff --git a/docs/rules/no-delete-var.md b/docs/src/rules/no-delete-var.md
similarity index 100%
rename from docs/rules/no-delete-var.md
rename to docs/src/rules/no-delete-var.md
diff --git a/docs/rules/no-div-regex.md b/docs/src/rules/no-div-regex.md
similarity index 100%
rename from docs/rules/no-div-regex.md
rename to docs/src/rules/no-div-regex.md
diff --git a/docs/rules/no-dupe-args.md b/docs/src/rules/no-dupe-args.md
similarity index 100%
rename from docs/rules/no-dupe-args.md
rename to docs/src/rules/no-dupe-args.md
diff --git a/docs/rules/no-dupe-class-members.md b/docs/src/rules/no-dupe-class-members.md
similarity index 100%
rename from docs/rules/no-dupe-class-members.md
rename to docs/src/rules/no-dupe-class-members.md
diff --git a/docs/rules/no-dupe-else-if.md b/docs/src/rules/no-dupe-else-if.md
similarity index 100%
rename from docs/rules/no-dupe-else-if.md
rename to docs/src/rules/no-dupe-else-if.md
diff --git a/docs/rules/no-dupe-keys.md b/docs/src/rules/no-dupe-keys.md
similarity index 100%
rename from docs/rules/no-dupe-keys.md
rename to docs/src/rules/no-dupe-keys.md
diff --git a/docs/rules/no-duplicate-case.md b/docs/src/rules/no-duplicate-case.md
similarity index 100%
rename from docs/rules/no-duplicate-case.md
rename to docs/src/rules/no-duplicate-case.md
diff --git a/docs/rules/no-duplicate-imports.md b/docs/src/rules/no-duplicate-imports.md
similarity index 100%
rename from docs/rules/no-duplicate-imports.md
rename to docs/src/rules/no-duplicate-imports.md
diff --git a/docs/rules/no-else-return.md b/docs/src/rules/no-else-return.md
similarity index 100%
rename from docs/rules/no-else-return.md
rename to docs/src/rules/no-else-return.md
diff --git a/docs/rules/no-empty-character-class.md b/docs/src/rules/no-empty-character-class.md
similarity index 100%
rename from docs/rules/no-empty-character-class.md
rename to docs/src/rules/no-empty-character-class.md
diff --git a/docs/rules/no-empty-class.md b/docs/src/rules/no-empty-class.md
similarity index 100%
rename from docs/rules/no-empty-class.md
rename to docs/src/rules/no-empty-class.md
diff --git a/docs/rules/no-empty-function.md b/docs/src/rules/no-empty-function.md
similarity index 100%
rename from docs/rules/no-empty-function.md
rename to docs/src/rules/no-empty-function.md
diff --git a/docs/rules/no-empty-label.md b/docs/src/rules/no-empty-label.md
similarity index 100%
rename from docs/rules/no-empty-label.md
rename to docs/src/rules/no-empty-label.md
diff --git a/docs/rules/no-empty-pattern.md b/docs/src/rules/no-empty-pattern.md
similarity index 100%
rename from docs/rules/no-empty-pattern.md
rename to docs/src/rules/no-empty-pattern.md
diff --git a/docs/rules/no-empty.md b/docs/src/rules/no-empty.md
similarity index 100%
rename from docs/rules/no-empty.md
rename to docs/src/rules/no-empty.md
diff --git a/docs/rules/no-eq-null.md b/docs/src/rules/no-eq-null.md
similarity index 100%
rename from docs/rules/no-eq-null.md
rename to docs/src/rules/no-eq-null.md
diff --git a/docs/rules/no-eval.md b/docs/src/rules/no-eval.md
similarity index 100%
rename from docs/rules/no-eval.md
rename to docs/src/rules/no-eval.md
diff --git a/docs/rules/no-ex-assign.md b/docs/src/rules/no-ex-assign.md
similarity index 100%
rename from docs/rules/no-ex-assign.md
rename to docs/src/rules/no-ex-assign.md
diff --git a/docs/rules/no-extend-native.md b/docs/src/rules/no-extend-native.md
similarity index 100%
rename from docs/rules/no-extend-native.md
rename to docs/src/rules/no-extend-native.md
diff --git a/docs/rules/no-extra-bind.md b/docs/src/rules/no-extra-bind.md
similarity index 100%
rename from docs/rules/no-extra-bind.md
rename to docs/src/rules/no-extra-bind.md
diff --git a/docs/rules/no-extra-boolean-cast.md b/docs/src/rules/no-extra-boolean-cast.md
similarity index 100%
rename from docs/rules/no-extra-boolean-cast.md
rename to docs/src/rules/no-extra-boolean-cast.md
diff --git a/docs/rules/no-extra-label.md b/docs/src/rules/no-extra-label.md
similarity index 100%
rename from docs/rules/no-extra-label.md
rename to docs/src/rules/no-extra-label.md
diff --git a/docs/rules/no-extra-parens.md b/docs/src/rules/no-extra-parens.md
similarity index 100%
rename from docs/rules/no-extra-parens.md
rename to docs/src/rules/no-extra-parens.md
diff --git a/docs/rules/no-extra-semi.md b/docs/src/rules/no-extra-semi.md
similarity index 100%
rename from docs/rules/no-extra-semi.md
rename to docs/src/rules/no-extra-semi.md
diff --git a/docs/rules/no-extra-strict.md b/docs/src/rules/no-extra-strict.md
similarity index 100%
rename from docs/rules/no-extra-strict.md
rename to docs/src/rules/no-extra-strict.md
diff --git a/docs/rules/no-fallthrough.md b/docs/src/rules/no-fallthrough.md
similarity index 100%
rename from docs/rules/no-fallthrough.md
rename to docs/src/rules/no-fallthrough.md
diff --git a/docs/rules/no-floating-decimal.md b/docs/src/rules/no-floating-decimal.md
similarity index 100%
rename from docs/rules/no-floating-decimal.md
rename to docs/src/rules/no-floating-decimal.md
diff --git a/docs/rules/no-func-assign.md b/docs/src/rules/no-func-assign.md
similarity index 100%
rename from docs/rules/no-func-assign.md
rename to docs/src/rules/no-func-assign.md
diff --git a/docs/rules/no-global-assign.md b/docs/src/rules/no-global-assign.md
similarity index 100%
rename from docs/rules/no-global-assign.md
rename to docs/src/rules/no-global-assign.md
diff --git a/docs/rules/no-implicit-coercion.md b/docs/src/rules/no-implicit-coercion.md
similarity index 100%
rename from docs/rules/no-implicit-coercion.md
rename to docs/src/rules/no-implicit-coercion.md
diff --git a/docs/rules/no-implicit-globals.md b/docs/src/rules/no-implicit-globals.md
similarity index 100%
rename from docs/rules/no-implicit-globals.md
rename to docs/src/rules/no-implicit-globals.md
diff --git a/docs/rules/no-implied-eval.md b/docs/src/rules/no-implied-eval.md
similarity index 100%
rename from docs/rules/no-implied-eval.md
rename to docs/src/rules/no-implied-eval.md
diff --git a/docs/rules/no-import-assign.md b/docs/src/rules/no-import-assign.md
similarity index 100%
rename from docs/rules/no-import-assign.md
rename to docs/src/rules/no-import-assign.md
diff --git a/docs/rules/no-inline-comments.md b/docs/src/rules/no-inline-comments.md
similarity index 100%
rename from docs/rules/no-inline-comments.md
rename to docs/src/rules/no-inline-comments.md
diff --git a/docs/rules/no-inner-declarations.md b/docs/src/rules/no-inner-declarations.md
similarity index 100%
rename from docs/rules/no-inner-declarations.md
rename to docs/src/rules/no-inner-declarations.md
diff --git a/docs/rules/no-invalid-regexp.md b/docs/src/rules/no-invalid-regexp.md
similarity index 100%
rename from docs/rules/no-invalid-regexp.md
rename to docs/src/rules/no-invalid-regexp.md
diff --git a/docs/rules/no-invalid-this.md b/docs/src/rules/no-invalid-this.md
similarity index 100%
rename from docs/rules/no-invalid-this.md
rename to docs/src/rules/no-invalid-this.md
diff --git a/docs/rules/no-irregular-whitespace.md b/docs/src/rules/no-irregular-whitespace.md
similarity index 100%
rename from docs/rules/no-irregular-whitespace.md
rename to docs/src/rules/no-irregular-whitespace.md
diff --git a/docs/rules/no-iterator.md b/docs/src/rules/no-iterator.md
similarity index 100%
rename from docs/rules/no-iterator.md
rename to docs/src/rules/no-iterator.md
diff --git a/docs/rules/no-label-var.md b/docs/src/rules/no-label-var.md
similarity index 100%
rename from docs/rules/no-label-var.md
rename to docs/src/rules/no-label-var.md
diff --git a/docs/rules/no-labels.md b/docs/src/rules/no-labels.md
similarity index 100%
rename from docs/rules/no-labels.md
rename to docs/src/rules/no-labels.md
diff --git a/docs/rules/no-lone-blocks.md b/docs/src/rules/no-lone-blocks.md
similarity index 100%
rename from docs/rules/no-lone-blocks.md
rename to docs/src/rules/no-lone-blocks.md
diff --git a/docs/rules/no-lonely-if.md b/docs/src/rules/no-lonely-if.md
similarity index 100%
rename from docs/rules/no-lonely-if.md
rename to docs/src/rules/no-lonely-if.md
diff --git a/docs/rules/no-loop-func.md b/docs/src/rules/no-loop-func.md
similarity index 100%
rename from docs/rules/no-loop-func.md
rename to docs/src/rules/no-loop-func.md
diff --git a/docs/rules/no-loss-of-precision.md b/docs/src/rules/no-loss-of-precision.md
similarity index 100%
rename from docs/rules/no-loss-of-precision.md
rename to docs/src/rules/no-loss-of-precision.md
diff --git a/docs/rules/no-magic-numbers.md b/docs/src/rules/no-magic-numbers.md
similarity index 100%
rename from docs/rules/no-magic-numbers.md
rename to docs/src/rules/no-magic-numbers.md
diff --git a/docs/rules/no-misleading-character-class.md b/docs/src/rules/no-misleading-character-class.md
similarity index 100%
rename from docs/rules/no-misleading-character-class.md
rename to docs/src/rules/no-misleading-character-class.md
diff --git a/docs/rules/no-mixed-operators.md b/docs/src/rules/no-mixed-operators.md
similarity index 100%
rename from docs/rules/no-mixed-operators.md
rename to docs/src/rules/no-mixed-operators.md
diff --git a/docs/rules/no-mixed-requires.md b/docs/src/rules/no-mixed-requires.md
similarity index 100%
rename from docs/rules/no-mixed-requires.md
rename to docs/src/rules/no-mixed-requires.md
diff --git a/docs/rules/no-mixed-spaces-and-tabs.md b/docs/src/rules/no-mixed-spaces-and-tabs.md
similarity index 100%
rename from docs/rules/no-mixed-spaces-and-tabs.md
rename to docs/src/rules/no-mixed-spaces-and-tabs.md
diff --git a/docs/rules/no-multi-assign.md b/docs/src/rules/no-multi-assign.md
similarity index 100%
rename from docs/rules/no-multi-assign.md
rename to docs/src/rules/no-multi-assign.md
diff --git a/docs/rules/no-multi-spaces.md b/docs/src/rules/no-multi-spaces.md
similarity index 100%
rename from docs/rules/no-multi-spaces.md
rename to docs/src/rules/no-multi-spaces.md
diff --git a/docs/rules/no-multi-str.md b/docs/src/rules/no-multi-str.md
similarity index 100%
rename from docs/rules/no-multi-str.md
rename to docs/src/rules/no-multi-str.md
diff --git a/docs/rules/no-multiple-empty-lines.md b/docs/src/rules/no-multiple-empty-lines.md
similarity index 100%
rename from docs/rules/no-multiple-empty-lines.md
rename to docs/src/rules/no-multiple-empty-lines.md
diff --git a/docs/rules/no-native-reassign.md b/docs/src/rules/no-native-reassign.md
similarity index 100%
rename from docs/rules/no-native-reassign.md
rename to docs/src/rules/no-native-reassign.md
diff --git a/docs/rules/no-negated-condition.md b/docs/src/rules/no-negated-condition.md
similarity index 100%
rename from docs/rules/no-negated-condition.md
rename to docs/src/rules/no-negated-condition.md
diff --git a/docs/rules/no-negated-in-lhs.md b/docs/src/rules/no-negated-in-lhs.md
similarity index 100%
rename from docs/rules/no-negated-in-lhs.md
rename to docs/src/rules/no-negated-in-lhs.md
diff --git a/docs/rules/no-nested-ternary.md b/docs/src/rules/no-nested-ternary.md
similarity index 100%
rename from docs/rules/no-nested-ternary.md
rename to docs/src/rules/no-nested-ternary.md
diff --git a/docs/rules/no-new-func.md b/docs/src/rules/no-new-func.md
similarity index 100%
rename from docs/rules/no-new-func.md
rename to docs/src/rules/no-new-func.md
diff --git a/docs/rules/no-new-object.md b/docs/src/rules/no-new-object.md
similarity index 100%
rename from docs/rules/no-new-object.md
rename to docs/src/rules/no-new-object.md
diff --git a/docs/rules/no-new-require.md b/docs/src/rules/no-new-require.md
similarity index 100%
rename from docs/rules/no-new-require.md
rename to docs/src/rules/no-new-require.md
diff --git a/docs/rules/no-new-symbol.md b/docs/src/rules/no-new-symbol.md
similarity index 100%
rename from docs/rules/no-new-symbol.md
rename to docs/src/rules/no-new-symbol.md
diff --git a/docs/rules/no-new-wrappers.md b/docs/src/rules/no-new-wrappers.md
similarity index 100%
rename from docs/rules/no-new-wrappers.md
rename to docs/src/rules/no-new-wrappers.md
diff --git a/docs/rules/no-new.md b/docs/src/rules/no-new.md
similarity index 100%
rename from docs/rules/no-new.md
rename to docs/src/rules/no-new.md
diff --git a/docs/rules/no-nonoctal-decimal-escape.md b/docs/src/rules/no-nonoctal-decimal-escape.md
similarity index 100%
rename from docs/rules/no-nonoctal-decimal-escape.md
rename to docs/src/rules/no-nonoctal-decimal-escape.md
diff --git a/docs/rules/no-obj-calls.md b/docs/src/rules/no-obj-calls.md
similarity index 100%
rename from docs/rules/no-obj-calls.md
rename to docs/src/rules/no-obj-calls.md
diff --git a/docs/rules/no-octal-escape.md b/docs/src/rules/no-octal-escape.md
similarity index 100%
rename from docs/rules/no-octal-escape.md
rename to docs/src/rules/no-octal-escape.md
diff --git a/docs/rules/no-octal.md b/docs/src/rules/no-octal.md
similarity index 100%
rename from docs/rules/no-octal.md
rename to docs/src/rules/no-octal.md
diff --git a/docs/rules/no-param-reassign.md b/docs/src/rules/no-param-reassign.md
similarity index 100%
rename from docs/rules/no-param-reassign.md
rename to docs/src/rules/no-param-reassign.md
diff --git a/docs/rules/no-path-concat.md b/docs/src/rules/no-path-concat.md
similarity index 100%
rename from docs/rules/no-path-concat.md
rename to docs/src/rules/no-path-concat.md
diff --git a/docs/rules/no-plusplus.md b/docs/src/rules/no-plusplus.md
similarity index 100%
rename from docs/rules/no-plusplus.md
rename to docs/src/rules/no-plusplus.md
diff --git a/docs/rules/no-process-env.md b/docs/src/rules/no-process-env.md
similarity index 100%
rename from docs/rules/no-process-env.md
rename to docs/src/rules/no-process-env.md
diff --git a/docs/rules/no-process-exit.md b/docs/src/rules/no-process-exit.md
similarity index 100%
rename from docs/rules/no-process-exit.md
rename to docs/src/rules/no-process-exit.md
diff --git a/docs/rules/no-promise-executor-return.md b/docs/src/rules/no-promise-executor-return.md
similarity index 100%
rename from docs/rules/no-promise-executor-return.md
rename to docs/src/rules/no-promise-executor-return.md
diff --git a/docs/rules/no-proto.md b/docs/src/rules/no-proto.md
similarity index 100%
rename from docs/rules/no-proto.md
rename to docs/src/rules/no-proto.md
diff --git a/docs/rules/no-prototype-builtins.md b/docs/src/rules/no-prototype-builtins.md
similarity index 100%
rename from docs/rules/no-prototype-builtins.md
rename to docs/src/rules/no-prototype-builtins.md
diff --git a/docs/rules/no-redeclare.md b/docs/src/rules/no-redeclare.md
similarity index 100%
rename from docs/rules/no-redeclare.md
rename to docs/src/rules/no-redeclare.md
diff --git a/docs/rules/no-regex-spaces.md b/docs/src/rules/no-regex-spaces.md
similarity index 100%
rename from docs/rules/no-regex-spaces.md
rename to docs/src/rules/no-regex-spaces.md
diff --git a/docs/rules/no-reserved-keys.md b/docs/src/rules/no-reserved-keys.md
similarity index 100%
rename from docs/rules/no-reserved-keys.md
rename to docs/src/rules/no-reserved-keys.md
diff --git a/docs/rules/no-restricted-exports.md b/docs/src/rules/no-restricted-exports.md
similarity index 100%
rename from docs/rules/no-restricted-exports.md
rename to docs/src/rules/no-restricted-exports.md
diff --git a/docs/rules/no-restricted-globals.md b/docs/src/rules/no-restricted-globals.md
similarity index 100%
rename from docs/rules/no-restricted-globals.md
rename to docs/src/rules/no-restricted-globals.md
diff --git a/docs/rules/no-restricted-imports.md b/docs/src/rules/no-restricted-imports.md
similarity index 100%
rename from docs/rules/no-restricted-imports.md
rename to docs/src/rules/no-restricted-imports.md
diff --git a/docs/rules/no-restricted-modules.md b/docs/src/rules/no-restricted-modules.md
similarity index 100%
rename from docs/rules/no-restricted-modules.md
rename to docs/src/rules/no-restricted-modules.md
diff --git a/docs/rules/no-restricted-properties.md b/docs/src/rules/no-restricted-properties.md
similarity index 100%
rename from docs/rules/no-restricted-properties.md
rename to docs/src/rules/no-restricted-properties.md
diff --git a/docs/rules/no-restricted-syntax.md b/docs/src/rules/no-restricted-syntax.md
similarity index 100%
rename from docs/rules/no-restricted-syntax.md
rename to docs/src/rules/no-restricted-syntax.md
diff --git a/docs/rules/no-return-assign.md b/docs/src/rules/no-return-assign.md
similarity index 100%
rename from docs/rules/no-return-assign.md
rename to docs/src/rules/no-return-assign.md
diff --git a/docs/rules/no-return-await.md b/docs/src/rules/no-return-await.md
similarity index 100%
rename from docs/rules/no-return-await.md
rename to docs/src/rules/no-return-await.md
diff --git a/docs/rules/no-script-url.md b/docs/src/rules/no-script-url.md
similarity index 100%
rename from docs/rules/no-script-url.md
rename to docs/src/rules/no-script-url.md
diff --git a/docs/rules/no-self-assign.md b/docs/src/rules/no-self-assign.md
similarity index 100%
rename from docs/rules/no-self-assign.md
rename to docs/src/rules/no-self-assign.md
diff --git a/docs/rules/no-self-compare.md b/docs/src/rules/no-self-compare.md
similarity index 100%
rename from docs/rules/no-self-compare.md
rename to docs/src/rules/no-self-compare.md
diff --git a/docs/rules/no-sequences.md b/docs/src/rules/no-sequences.md
similarity index 100%
rename from docs/rules/no-sequences.md
rename to docs/src/rules/no-sequences.md
diff --git a/docs/rules/no-setter-return.md b/docs/src/rules/no-setter-return.md
similarity index 100%
rename from docs/rules/no-setter-return.md
rename to docs/src/rules/no-setter-return.md
diff --git a/docs/rules/no-shadow-restricted-names.md b/docs/src/rules/no-shadow-restricted-names.md
similarity index 100%
rename from docs/rules/no-shadow-restricted-names.md
rename to docs/src/rules/no-shadow-restricted-names.md
diff --git a/docs/rules/no-shadow.md b/docs/src/rules/no-shadow.md
similarity index 100%
rename from docs/rules/no-shadow.md
rename to docs/src/rules/no-shadow.md
diff --git a/docs/rules/no-space-before-semi.md b/docs/src/rules/no-space-before-semi.md
similarity index 100%
rename from docs/rules/no-space-before-semi.md
rename to docs/src/rules/no-space-before-semi.md
diff --git a/docs/rules/no-spaced-func.md b/docs/src/rules/no-spaced-func.md
similarity index 100%
rename from docs/rules/no-spaced-func.md
rename to docs/src/rules/no-spaced-func.md
diff --git a/docs/rules/no-sparse-arrays.md b/docs/src/rules/no-sparse-arrays.md
similarity index 100%
rename from docs/rules/no-sparse-arrays.md
rename to docs/src/rules/no-sparse-arrays.md
diff --git a/docs/rules/no-sync.md b/docs/src/rules/no-sync.md
similarity index 100%
rename from docs/rules/no-sync.md
rename to docs/src/rules/no-sync.md
diff --git a/docs/rules/no-tabs.md b/docs/src/rules/no-tabs.md
similarity index 100%
rename from docs/rules/no-tabs.md
rename to docs/src/rules/no-tabs.md
diff --git a/docs/rules/no-template-curly-in-string.md b/docs/src/rules/no-template-curly-in-string.md
similarity index 100%
rename from docs/rules/no-template-curly-in-string.md
rename to docs/src/rules/no-template-curly-in-string.md
diff --git a/docs/rules/no-ternary.md b/docs/src/rules/no-ternary.md
similarity index 100%
rename from docs/rules/no-ternary.md
rename to docs/src/rules/no-ternary.md
diff --git a/docs/rules/no-this-before-super.md b/docs/src/rules/no-this-before-super.md
similarity index 100%
rename from docs/rules/no-this-before-super.md
rename to docs/src/rules/no-this-before-super.md
diff --git a/docs/rules/no-throw-literal.md b/docs/src/rules/no-throw-literal.md
similarity index 100%
rename from docs/rules/no-throw-literal.md
rename to docs/src/rules/no-throw-literal.md
diff --git a/docs/rules/no-trailing-spaces.md b/docs/src/rules/no-trailing-spaces.md
similarity index 100%
rename from docs/rules/no-trailing-spaces.md
rename to docs/src/rules/no-trailing-spaces.md
diff --git a/docs/rules/no-undef-init.md b/docs/src/rules/no-undef-init.md
similarity index 100%
rename from docs/rules/no-undef-init.md
rename to docs/src/rules/no-undef-init.md
diff --git a/docs/rules/no-undef.md b/docs/src/rules/no-undef.md
similarity index 100%
rename from docs/rules/no-undef.md
rename to docs/src/rules/no-undef.md
diff --git a/docs/rules/no-undefined.md b/docs/src/rules/no-undefined.md
similarity index 100%
rename from docs/rules/no-undefined.md
rename to docs/src/rules/no-undefined.md
diff --git a/docs/rules/no-underscore-dangle.md b/docs/src/rules/no-underscore-dangle.md
similarity index 100%
rename from docs/rules/no-underscore-dangle.md
rename to docs/src/rules/no-underscore-dangle.md
diff --git a/docs/rules/no-unexpected-multiline.md b/docs/src/rules/no-unexpected-multiline.md
similarity index 100%
rename from docs/rules/no-unexpected-multiline.md
rename to docs/src/rules/no-unexpected-multiline.md
diff --git a/docs/rules/no-unmodified-loop-condition.md b/docs/src/rules/no-unmodified-loop-condition.md
similarity index 100%
rename from docs/rules/no-unmodified-loop-condition.md
rename to docs/src/rules/no-unmodified-loop-condition.md
diff --git a/docs/rules/no-unneeded-ternary.md b/docs/src/rules/no-unneeded-ternary.md
similarity index 100%
rename from docs/rules/no-unneeded-ternary.md
rename to docs/src/rules/no-unneeded-ternary.md
diff --git a/docs/rules/no-unreachable-loop.md b/docs/src/rules/no-unreachable-loop.md
similarity index 100%
rename from docs/rules/no-unreachable-loop.md
rename to docs/src/rules/no-unreachable-loop.md
diff --git a/docs/rules/no-unreachable.md b/docs/src/rules/no-unreachable.md
similarity index 100%
rename from docs/rules/no-unreachable.md
rename to docs/src/rules/no-unreachable.md
diff --git a/docs/rules/no-unsafe-finally.md b/docs/src/rules/no-unsafe-finally.md
similarity index 100%
rename from docs/rules/no-unsafe-finally.md
rename to docs/src/rules/no-unsafe-finally.md
diff --git a/docs/rules/no-unsafe-negation.md b/docs/src/rules/no-unsafe-negation.md
similarity index 100%
rename from docs/rules/no-unsafe-negation.md
rename to docs/src/rules/no-unsafe-negation.md
diff --git a/docs/rules/no-unsafe-optional-chaining.md b/docs/src/rules/no-unsafe-optional-chaining.md
similarity index 100%
rename from docs/rules/no-unsafe-optional-chaining.md
rename to docs/src/rules/no-unsafe-optional-chaining.md
diff --git a/docs/rules/no-unused-expressions.md b/docs/src/rules/no-unused-expressions.md
similarity index 100%
rename from docs/rules/no-unused-expressions.md
rename to docs/src/rules/no-unused-expressions.md
diff --git a/docs/rules/no-unused-labels.md b/docs/src/rules/no-unused-labels.md
similarity index 100%
rename from docs/rules/no-unused-labels.md
rename to docs/src/rules/no-unused-labels.md
diff --git a/docs/rules/no-unused-private-class-members.md b/docs/src/rules/no-unused-private-class-members.md
similarity index 100%
rename from docs/rules/no-unused-private-class-members.md
rename to docs/src/rules/no-unused-private-class-members.md
diff --git a/docs/rules/no-unused-vars.md b/docs/src/rules/no-unused-vars.md
similarity index 100%
rename from docs/rules/no-unused-vars.md
rename to docs/src/rules/no-unused-vars.md
diff --git a/docs/rules/no-use-before-define.md b/docs/src/rules/no-use-before-define.md
similarity index 100%
rename from docs/rules/no-use-before-define.md
rename to docs/src/rules/no-use-before-define.md
diff --git a/docs/rules/no-useless-backreference.md b/docs/src/rules/no-useless-backreference.md
similarity index 100%
rename from docs/rules/no-useless-backreference.md
rename to docs/src/rules/no-useless-backreference.md
diff --git a/docs/rules/no-useless-call.md b/docs/src/rules/no-useless-call.md
similarity index 100%
rename from docs/rules/no-useless-call.md
rename to docs/src/rules/no-useless-call.md
diff --git a/docs/rules/no-useless-catch.md b/docs/src/rules/no-useless-catch.md
similarity index 100%
rename from docs/rules/no-useless-catch.md
rename to docs/src/rules/no-useless-catch.md
diff --git a/docs/rules/no-useless-computed-key.md b/docs/src/rules/no-useless-computed-key.md
similarity index 100%
rename from docs/rules/no-useless-computed-key.md
rename to docs/src/rules/no-useless-computed-key.md
diff --git a/docs/rules/no-useless-concat.md b/docs/src/rules/no-useless-concat.md
similarity index 100%
rename from docs/rules/no-useless-concat.md
rename to docs/src/rules/no-useless-concat.md
diff --git a/docs/rules/no-useless-constructor.md b/docs/src/rules/no-useless-constructor.md
similarity index 100%
rename from docs/rules/no-useless-constructor.md
rename to docs/src/rules/no-useless-constructor.md
diff --git a/docs/rules/no-useless-escape.md b/docs/src/rules/no-useless-escape.md
similarity index 100%
rename from docs/rules/no-useless-escape.md
rename to docs/src/rules/no-useless-escape.md
diff --git a/docs/rules/no-useless-rename.md b/docs/src/rules/no-useless-rename.md
similarity index 100%
rename from docs/rules/no-useless-rename.md
rename to docs/src/rules/no-useless-rename.md
diff --git a/docs/rules/no-useless-return.md b/docs/src/rules/no-useless-return.md
similarity index 100%
rename from docs/rules/no-useless-return.md
rename to docs/src/rules/no-useless-return.md
diff --git a/docs/rules/no-var.md b/docs/src/rules/no-var.md
similarity index 100%
rename from docs/rules/no-var.md
rename to docs/src/rules/no-var.md
diff --git a/docs/rules/no-void.md b/docs/src/rules/no-void.md
similarity index 100%
rename from docs/rules/no-void.md
rename to docs/src/rules/no-void.md
diff --git a/docs/rules/no-warning-comments.md b/docs/src/rules/no-warning-comments.md
similarity index 100%
rename from docs/rules/no-warning-comments.md
rename to docs/src/rules/no-warning-comments.md
diff --git a/docs/rules/no-whitespace-before-property.md b/docs/src/rules/no-whitespace-before-property.md
similarity index 100%
rename from docs/rules/no-whitespace-before-property.md
rename to docs/src/rules/no-whitespace-before-property.md
diff --git a/docs/rules/no-with.md b/docs/src/rules/no-with.md
similarity index 100%
rename from docs/rules/no-with.md
rename to docs/src/rules/no-with.md
diff --git a/docs/rules/no-wrap-func.md b/docs/src/rules/no-wrap-func.md
similarity index 100%
rename from docs/rules/no-wrap-func.md
rename to docs/src/rules/no-wrap-func.md
diff --git a/docs/rules/nonblock-statement-body-position.md b/docs/src/rules/nonblock-statement-body-position.md
similarity index 100%
rename from docs/rules/nonblock-statement-body-position.md
rename to docs/src/rules/nonblock-statement-body-position.md
diff --git a/docs/rules/object-curly-newline.md b/docs/src/rules/object-curly-newline.md
similarity index 100%
rename from docs/rules/object-curly-newline.md
rename to docs/src/rules/object-curly-newline.md
diff --git a/docs/rules/object-curly-spacing.md b/docs/src/rules/object-curly-spacing.md
similarity index 100%
rename from docs/rules/object-curly-spacing.md
rename to docs/src/rules/object-curly-spacing.md
diff --git a/docs/rules/object-property-newline.md b/docs/src/rules/object-property-newline.md
similarity index 100%
rename from docs/rules/object-property-newline.md
rename to docs/src/rules/object-property-newline.md
diff --git a/docs/rules/object-shorthand.md b/docs/src/rules/object-shorthand.md
similarity index 100%
rename from docs/rules/object-shorthand.md
rename to docs/src/rules/object-shorthand.md
diff --git a/docs/rules/one-var-declaration-per-line.md b/docs/src/rules/one-var-declaration-per-line.md
similarity index 100%
rename from docs/rules/one-var-declaration-per-line.md
rename to docs/src/rules/one-var-declaration-per-line.md
diff --git a/docs/rules/one-var.md b/docs/src/rules/one-var.md
similarity index 100%
rename from docs/rules/one-var.md
rename to docs/src/rules/one-var.md
diff --git a/docs/rules/operator-assignment.md b/docs/src/rules/operator-assignment.md
similarity index 100%
rename from docs/rules/operator-assignment.md
rename to docs/src/rules/operator-assignment.md
diff --git a/docs/rules/operator-linebreak.md b/docs/src/rules/operator-linebreak.md
similarity index 100%
rename from docs/rules/operator-linebreak.md
rename to docs/src/rules/operator-linebreak.md
diff --git a/docs/rules/padded-blocks.md b/docs/src/rules/padded-blocks.md
similarity index 100%
rename from docs/rules/padded-blocks.md
rename to docs/src/rules/padded-blocks.md
diff --git a/docs/rules/padding-line-between-statements.md b/docs/src/rules/padding-line-between-statements.md
similarity index 100%
rename from docs/rules/padding-line-between-statements.md
rename to docs/src/rules/padding-line-between-statements.md
diff --git a/docs/rules/prefer-arrow-callback.md b/docs/src/rules/prefer-arrow-callback.md
similarity index 100%
rename from docs/rules/prefer-arrow-callback.md
rename to docs/src/rules/prefer-arrow-callback.md
diff --git a/docs/rules/prefer-const.md b/docs/src/rules/prefer-const.md
similarity index 100%
rename from docs/rules/prefer-const.md
rename to docs/src/rules/prefer-const.md
diff --git a/docs/rules/prefer-destructuring.md b/docs/src/rules/prefer-destructuring.md
similarity index 100%
rename from docs/rules/prefer-destructuring.md
rename to docs/src/rules/prefer-destructuring.md
diff --git a/docs/rules/prefer-exponentiation-operator.md b/docs/src/rules/prefer-exponentiation-operator.md
similarity index 100%
rename from docs/rules/prefer-exponentiation-operator.md
rename to docs/src/rules/prefer-exponentiation-operator.md
diff --git a/docs/rules/prefer-named-capture-group.md b/docs/src/rules/prefer-named-capture-group.md
similarity index 100%
rename from docs/rules/prefer-named-capture-group.md
rename to docs/src/rules/prefer-named-capture-group.md
diff --git a/docs/rules/prefer-numeric-literals.md b/docs/src/rules/prefer-numeric-literals.md
similarity index 100%
rename from docs/rules/prefer-numeric-literals.md
rename to docs/src/rules/prefer-numeric-literals.md
diff --git a/docs/rules/prefer-object-has-own.md b/docs/src/rules/prefer-object-has-own.md
similarity index 100%
rename from docs/rules/prefer-object-has-own.md
rename to docs/src/rules/prefer-object-has-own.md
diff --git a/docs/rules/prefer-object-spread.md b/docs/src/rules/prefer-object-spread.md
similarity index 100%
rename from docs/rules/prefer-object-spread.md
rename to docs/src/rules/prefer-object-spread.md
diff --git a/docs/rules/prefer-promise-reject-errors.md b/docs/src/rules/prefer-promise-reject-errors.md
similarity index 100%
rename from docs/rules/prefer-promise-reject-errors.md
rename to docs/src/rules/prefer-promise-reject-errors.md
diff --git a/docs/rules/prefer-reflect.md b/docs/src/rules/prefer-reflect.md
similarity index 100%
rename from docs/rules/prefer-reflect.md
rename to docs/src/rules/prefer-reflect.md
diff --git a/docs/rules/prefer-regex-literals.md b/docs/src/rules/prefer-regex-literals.md
similarity index 100%
rename from docs/rules/prefer-regex-literals.md
rename to docs/src/rules/prefer-regex-literals.md
diff --git a/docs/rules/prefer-rest-params.md b/docs/src/rules/prefer-rest-params.md
similarity index 100%
rename from docs/rules/prefer-rest-params.md
rename to docs/src/rules/prefer-rest-params.md
diff --git a/docs/rules/prefer-spread.md b/docs/src/rules/prefer-spread.md
similarity index 100%
rename from docs/rules/prefer-spread.md
rename to docs/src/rules/prefer-spread.md
diff --git a/docs/rules/prefer-template.md b/docs/src/rules/prefer-template.md
similarity index 100%
rename from docs/rules/prefer-template.md
rename to docs/src/rules/prefer-template.md
diff --git a/docs/rules/quote-props.md b/docs/src/rules/quote-props.md
similarity index 100%
rename from docs/rules/quote-props.md
rename to docs/src/rules/quote-props.md
diff --git a/docs/rules/quotes.md b/docs/src/rules/quotes.md
similarity index 100%
rename from docs/rules/quotes.md
rename to docs/src/rules/quotes.md
diff --git a/docs/rules/radix.md b/docs/src/rules/radix.md
similarity index 100%
rename from docs/rules/radix.md
rename to docs/src/rules/radix.md
diff --git a/docs/rules/require-atomic-updates.md b/docs/src/rules/require-atomic-updates.md
similarity index 100%
rename from docs/rules/require-atomic-updates.md
rename to docs/src/rules/require-atomic-updates.md
diff --git a/docs/rules/require-await.md b/docs/src/rules/require-await.md
similarity index 100%
rename from docs/rules/require-await.md
rename to docs/src/rules/require-await.md
diff --git a/docs/rules/require-jsdoc.md b/docs/src/rules/require-jsdoc.md
similarity index 100%
rename from docs/rules/require-jsdoc.md
rename to docs/src/rules/require-jsdoc.md
diff --git a/docs/rules/require-unicode-regexp.md b/docs/src/rules/require-unicode-regexp.md
similarity index 100%
rename from docs/rules/require-unicode-regexp.md
rename to docs/src/rules/require-unicode-regexp.md
diff --git a/docs/rules/require-yield.md b/docs/src/rules/require-yield.md
similarity index 100%
rename from docs/rules/require-yield.md
rename to docs/src/rules/require-yield.md
diff --git a/docs/rules/rest-spread-spacing.md b/docs/src/rules/rest-spread-spacing.md
similarity index 100%
rename from docs/rules/rest-spread-spacing.md
rename to docs/src/rules/rest-spread-spacing.md
diff --git a/docs/rules/semi-spacing.md b/docs/src/rules/semi-spacing.md
similarity index 100%
rename from docs/rules/semi-spacing.md
rename to docs/src/rules/semi-spacing.md
diff --git a/docs/rules/semi-style.md b/docs/src/rules/semi-style.md
similarity index 100%
rename from docs/rules/semi-style.md
rename to docs/src/rules/semi-style.md
diff --git a/docs/rules/semi.md b/docs/src/rules/semi.md
similarity index 100%
rename from docs/rules/semi.md
rename to docs/src/rules/semi.md
diff --git a/docs/rules/sort-imports.md b/docs/src/rules/sort-imports.md
similarity index 100%
rename from docs/rules/sort-imports.md
rename to docs/src/rules/sort-imports.md
diff --git a/docs/rules/sort-keys.md b/docs/src/rules/sort-keys.md
similarity index 100%
rename from docs/rules/sort-keys.md
rename to docs/src/rules/sort-keys.md
diff --git a/docs/rules/sort-vars.md b/docs/src/rules/sort-vars.md
similarity index 100%
rename from docs/rules/sort-vars.md
rename to docs/src/rules/sort-vars.md
diff --git a/docs/rules/space-after-function-name.md b/docs/src/rules/space-after-function-name.md
similarity index 100%
rename from docs/rules/space-after-function-name.md
rename to docs/src/rules/space-after-function-name.md
diff --git a/docs/rules/space-after-keywords.md b/docs/src/rules/space-after-keywords.md
similarity index 100%
rename from docs/rules/space-after-keywords.md
rename to docs/src/rules/space-after-keywords.md
diff --git a/docs/rules/space-before-blocks.md b/docs/src/rules/space-before-blocks.md
similarity index 100%
rename from docs/rules/space-before-blocks.md
rename to docs/src/rules/space-before-blocks.md
diff --git a/docs/rules/space-before-function-paren.md b/docs/src/rules/space-before-function-paren.md
similarity index 100%
rename from docs/rules/space-before-function-paren.md
rename to docs/src/rules/space-before-function-paren.md
diff --git a/docs/rules/space-before-function-parentheses.md b/docs/src/rules/space-before-function-parentheses.md
similarity index 100%
rename from docs/rules/space-before-function-parentheses.md
rename to docs/src/rules/space-before-function-parentheses.md
diff --git a/docs/rules/space-before-keywords.md b/docs/src/rules/space-before-keywords.md
similarity index 100%
rename from docs/rules/space-before-keywords.md
rename to docs/src/rules/space-before-keywords.md
diff --git a/docs/rules/space-in-brackets.md b/docs/src/rules/space-in-brackets.md
similarity index 100%
rename from docs/rules/space-in-brackets.md
rename to docs/src/rules/space-in-brackets.md
diff --git a/docs/rules/space-in-parens.md b/docs/src/rules/space-in-parens.md
similarity index 100%
rename from docs/rules/space-in-parens.md
rename to docs/src/rules/space-in-parens.md
diff --git a/docs/rules/space-infix-ops.md b/docs/src/rules/space-infix-ops.md
similarity index 100%
rename from docs/rules/space-infix-ops.md
rename to docs/src/rules/space-infix-ops.md
diff --git a/docs/rules/space-return-throw-case.md b/docs/src/rules/space-return-throw-case.md
similarity index 100%
rename from docs/rules/space-return-throw-case.md
rename to docs/src/rules/space-return-throw-case.md
diff --git a/docs/rules/space-unary-ops.md b/docs/src/rules/space-unary-ops.md
similarity index 100%
rename from docs/rules/space-unary-ops.md
rename to docs/src/rules/space-unary-ops.md
diff --git a/docs/rules/space-unary-word-ops.md b/docs/src/rules/space-unary-word-ops.md
similarity index 100%
rename from docs/rules/space-unary-word-ops.md
rename to docs/src/rules/space-unary-word-ops.md
diff --git a/docs/rules/spaced-comment.md b/docs/src/rules/spaced-comment.md
similarity index 100%
rename from docs/rules/spaced-comment.md
rename to docs/src/rules/spaced-comment.md
diff --git a/docs/rules/spaced-line-comment.md b/docs/src/rules/spaced-line-comment.md
similarity index 100%
rename from docs/rules/spaced-line-comment.md
rename to docs/src/rules/spaced-line-comment.md
diff --git a/docs/rules/strict.md b/docs/src/rules/strict.md
similarity index 100%
rename from docs/rules/strict.md
rename to docs/src/rules/strict.md
diff --git a/docs/rules/switch-colon-spacing.md b/docs/src/rules/switch-colon-spacing.md
similarity index 100%
rename from docs/rules/switch-colon-spacing.md
rename to docs/src/rules/switch-colon-spacing.md
diff --git a/docs/rules/symbol-description.md b/docs/src/rules/symbol-description.md
similarity index 100%
rename from docs/rules/symbol-description.md
rename to docs/src/rules/symbol-description.md
diff --git a/docs/rules/template-curly-spacing.md b/docs/src/rules/template-curly-spacing.md
similarity index 100%
rename from docs/rules/template-curly-spacing.md
rename to docs/src/rules/template-curly-spacing.md
diff --git a/docs/rules/template-tag-spacing.md b/docs/src/rules/template-tag-spacing.md
similarity index 100%
rename from docs/rules/template-tag-spacing.md
rename to docs/src/rules/template-tag-spacing.md
diff --git a/docs/rules/unicode-bom.md b/docs/src/rules/unicode-bom.md
similarity index 100%
rename from docs/rules/unicode-bom.md
rename to docs/src/rules/unicode-bom.md
diff --git a/docs/rules/use-isnan.md b/docs/src/rules/use-isnan.md
similarity index 100%
rename from docs/rules/use-isnan.md
rename to docs/src/rules/use-isnan.md
diff --git a/docs/rules/valid-jsdoc.md b/docs/src/rules/valid-jsdoc.md
similarity index 100%
rename from docs/rules/valid-jsdoc.md
rename to docs/src/rules/valid-jsdoc.md
diff --git a/docs/rules/valid-typeof.md b/docs/src/rules/valid-typeof.md
similarity index 100%
rename from docs/rules/valid-typeof.md
rename to docs/src/rules/valid-typeof.md
diff --git a/docs/rules/vars-on-top.md b/docs/src/rules/vars-on-top.md
similarity index 100%
rename from docs/rules/vars-on-top.md
rename to docs/src/rules/vars-on-top.md
diff --git a/docs/rules/wrap-iife.md b/docs/src/rules/wrap-iife.md
similarity index 100%
rename from docs/rules/wrap-iife.md
rename to docs/src/rules/wrap-iife.md
diff --git a/docs/rules/wrap-regex.md b/docs/src/rules/wrap-regex.md
similarity index 100%
rename from docs/rules/wrap-regex.md
rename to docs/src/rules/wrap-regex.md
diff --git a/docs/rules/yield-star-spacing.md b/docs/src/rules/yield-star-spacing.md
similarity index 100%
rename from docs/rules/yield-star-spacing.md
rename to docs/src/rules/yield-star-spacing.md
diff --git a/docs/rules/yoda.md b/docs/src/rules/yoda.md
similarity index 100%
rename from docs/rules/yoda.md
rename to docs/src/rules/yoda.md
diff --git a/docs/user-guide/README.md b/docs/src/user-guide/README.md
similarity index 100%
rename from docs/user-guide/README.md
rename to docs/src/user-guide/README.md
diff --git a/docs/user-guide/command-line-interface.md b/docs/src/user-guide/command-line-interface.md
similarity index 100%
rename from docs/user-guide/command-line-interface.md
rename to docs/src/user-guide/command-line-interface.md
diff --git a/docs/user-guide/configuring/README.md b/docs/src/user-guide/configuring/README.md
similarity index 100%
rename from docs/user-guide/configuring/README.md
rename to docs/src/user-guide/configuring/README.md
diff --git a/docs/user-guide/configuring/configuration-files.md b/docs/src/user-guide/configuring/configuration-files.md
similarity index 100%
rename from docs/user-guide/configuring/configuration-files.md
rename to docs/src/user-guide/configuring/configuration-files.md
diff --git a/docs/user-guide/configuring/ignoring-code.md b/docs/src/user-guide/configuring/ignoring-code.md
similarity index 100%
rename from docs/user-guide/configuring/ignoring-code.md
rename to docs/src/user-guide/configuring/ignoring-code.md
diff --git a/docs/user-guide/configuring/language-options.md b/docs/src/user-guide/configuring/language-options.md
similarity index 100%
rename from docs/user-guide/configuring/language-options.md
rename to docs/src/user-guide/configuring/language-options.md
diff --git a/docs/user-guide/configuring/plugins.md b/docs/src/user-guide/configuring/plugins.md
similarity index 100%
rename from docs/user-guide/configuring/plugins.md
rename to docs/src/user-guide/configuring/plugins.md
diff --git a/docs/user-guide/configuring/rules.md b/docs/src/user-guide/configuring/rules.md
similarity index 100%
rename from docs/user-guide/configuring/rules.md
rename to docs/src/user-guide/configuring/rules.md
diff --git a/docs/user-guide/getting-started.md b/docs/src/user-guide/getting-started.md
similarity index 100%
rename from docs/user-guide/getting-started.md
rename to docs/src/user-guide/getting-started.md
diff --git a/docs/user-guide/integrations.md b/docs/src/user-guide/integrations.md
similarity index 100%
rename from docs/user-guide/integrations.md
rename to docs/src/user-guide/integrations.md
diff --git a/docs/user-guide/migrating-from-jscs.md b/docs/src/user-guide/migrating-from-jscs.md
similarity index 100%
rename from docs/user-guide/migrating-from-jscs.md
rename to docs/src/user-guide/migrating-from-jscs.md
diff --git a/docs/user-guide/migrating-to-1.0.0.md b/docs/src/user-guide/migrating-to-1.0.0.md
similarity index 100%
rename from docs/user-guide/migrating-to-1.0.0.md
rename to docs/src/user-guide/migrating-to-1.0.0.md
diff --git a/docs/user-guide/migrating-to-2.0.0.md b/docs/src/user-guide/migrating-to-2.0.0.md
similarity index 100%
rename from docs/user-guide/migrating-to-2.0.0.md
rename to docs/src/user-guide/migrating-to-2.0.0.md
diff --git a/docs/user-guide/migrating-to-3.0.0.md b/docs/src/user-guide/migrating-to-3.0.0.md
similarity index 100%
rename from docs/user-guide/migrating-to-3.0.0.md
rename to docs/src/user-guide/migrating-to-3.0.0.md
diff --git a/docs/user-guide/migrating-to-4.0.0.md b/docs/src/user-guide/migrating-to-4.0.0.md
similarity index 100%
rename from docs/user-guide/migrating-to-4.0.0.md
rename to docs/src/user-guide/migrating-to-4.0.0.md
diff --git a/docs/user-guide/migrating-to-5.0.0.md b/docs/src/user-guide/migrating-to-5.0.0.md
similarity index 100%
rename from docs/user-guide/migrating-to-5.0.0.md
rename to docs/src/user-guide/migrating-to-5.0.0.md
diff --git a/docs/user-guide/migrating-to-6.0.0.md b/docs/src/user-guide/migrating-to-6.0.0.md
similarity index 100%
rename from docs/user-guide/migrating-to-6.0.0.md
rename to docs/src/user-guide/migrating-to-6.0.0.md
diff --git a/docs/user-guide/migrating-to-7.0.0.md b/docs/src/user-guide/migrating-to-7.0.0.md
similarity index 100%
rename from docs/user-guide/migrating-to-7.0.0.md
rename to docs/src/user-guide/migrating-to-7.0.0.md
diff --git a/docs/user-guide/migrating-to-8.0.0.md b/docs/src/user-guide/migrating-to-8.0.0.md
similarity index 100%
rename from docs/user-guide/migrating-to-8.0.0.md
rename to docs/src/user-guide/migrating-to-8.0.0.md
diff --git a/docs/user-guide/rule-deprecation.md b/docs/src/user-guide/rule-deprecation.md
similarity index 100%
rename from docs/user-guide/rule-deprecation.md
rename to docs/src/user-guide/rule-deprecation.md
diff --git a/lib/rules/operator-assignment.js b/lib/rules/operator-assignment.js
index d20081163..50cdff9f9 100644
--- a/lib/rules/operator-assignment.js
+++ b/lib/rules/operator-assignment.js
@@ -76,8 +76,8 @@ module.exports = {
 
         fixable: "code",
         messages: {
-            replaced: "Assignment (=) can be replaced with operator assignment ({{operator}}=).",
-            unexpected: "Unexpected operator assignment ({{operator}}=) shorthand."
+            replaced: "Assignment (=) can be replaced with operator assignment ({{operator}}).",
+            unexpected: "Unexpected operator assignment ({{operator}}) shorthand."
         }
     },
 
@@ -109,11 +109,13 @@ module.exports = {
             const operator = expr.operator;
 
             if (isCommutativeOperatorWithShorthand(operator) || isNonCommutativeOperatorWithShorthand(operator)) {
+                const replacementOperator = `${operator}=`;
+
                 if (astUtils.isSameReference(left, expr.left, true)) {
                     context.report({
                         node,
                         messageId: "replaced",
-                        data: { operator },
+                        data: { operator: replacementOperator },
                         fix(fixer) {
                             if (canBeFixed(left) && canBeFixed(expr.left)) {
                                 const equalsToken = getOperatorToken(node);
@@ -126,7 +128,7 @@ module.exports = {
                                     return null;
                                 }
 
-                                return fixer.replaceText(node, `${leftText}${expr.operator}=${rightText}`);
+                                return fixer.replaceText(node, `${leftText}${replacementOperator}${rightText}`);
                             }
                             return null;
                         }
@@ -141,7 +143,7 @@ module.exports = {
                     context.report({
                         node,
                         messageId: "replaced",
-                        data: { operator }
+                        data: { operator: replacementOperator }
                     });
                 }
             }


Test patch:
diff --git a/tests/lib/rules/operator-assignment.js b/tests/lib/rules/operator-assignment.js
index 8f814840e..50229af49 100644
--- a/tests/lib/rules/operator-assignment.js
+++ b/tests/lib/rules/operator-assignment.js
@@ -18,9 +18,6 @@ const rule = require("../../../lib/rules/operator-assignment"),
 
 const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 2022 } });
 
-const EXPECTED_OPERATOR_ASSIGNMENT = [{ messageId: "replaced", type: "AssignmentExpression" }];
-const UNEXPECTED_OPERATOR_ASSIGNMENT = [{ messageId: "unexpected", type: "AssignmentExpression" }];
-
 ruleTester.run("operator-assignment", rule, {
 
     valid: [
@@ -117,326 +114,326 @@ ruleTester.run("operator-assignment", rule, {
     invalid: [{
         code: "x = x + y",
         output: "x += y",
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "x = x - y",
         output: "x -= y",
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "-=" } }]
     }, {
         code: "x = x * y",
         output: "x *= y",
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "*=" } }]
     }, {
         code: "x = y * x",
         output: null, // not fixed (possible change in behavior if y and x have valueOf() functions)
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "*=" } }]
     }, {
         code: "x = (y * z) * x",
         output: null, // not fixed (possible change in behavior if y/z and x have valueOf() functions)
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "*=" } }]
     }, {
         code: "x = x / y",
         output: "x /= y",
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "/=" } }]
     }, {
         code: "x = x % y",
         output: "x %= y",
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "%=" } }]
     }, {
         code: "x = x << y",
         output: "x <<= y",
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "<<=" } }]
     }, {
         code: "x = x >> y",
         output: "x >>= y",
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: ">>=" } }]
     }, {
         code: "x = x >>> y",
         output: "x >>>= y",
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: ">>>=" } }]
     }, {
         code: "x = x & y",
         output: "x &= y",
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "&=" } }]
     }, {
         code: "x = x ^ y",
         output: "x ^= y",
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "^=" } }]
     }, {
         code: "x = x | y",
         output: "x |= y",
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "|=" } }]
     }, {
         code: "x[0] = x[0] - y",
         output: "x[0] -= y",
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "-=" } }]
     }, {
         code: "x.y[z['a']][0].b = x.y[z['a']][0].b * 2",
         output: null, // not fixed; might activate getters more than before
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "*=" } }]
     }, {
         code: "x = x + y",
         output: "x += y",
         options: ["always"],
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "x = (x + y)",
         output: "x += y",
         options: ["always"],
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "x = x + (y)",
         output: "x += (y)",
         options: ["always"],
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "x += (y)",
         output: "x = x + (y)",
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "x += y",
         output: "x = x + y",
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "foo.bar = foo.bar + baz",
         output: "foo.bar += baz",
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "foo.bar += baz",
         output: "foo.bar = foo.bar + baz",
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "this.foo = this.foo + bar",
         output: "this.foo += bar",
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "this.foo += bar",
         output: "this.foo = this.foo + bar",
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "foo.bar.baz = foo.bar.baz + qux",
         output: null, // not fixed; fixing would cause a foo.bar getter to activate once rather than twice
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "foo.bar.baz += qux",
         output: null, // not fixed; fixing would cause a foo.bar getter to activate twice rather than once
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "this.foo.bar = this.foo.bar + baz",
         output: null, // not fixed; fixing would cause a this.foo getter to activate once rather than twice
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "this.foo.bar += baz",
         output: null, // not fixed; fixing would cause a this.foo getter to activate twice rather than once
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "foo[bar] = foo[bar] + baz",
         output: null, // not fixed; fixing would cause bar.toString() to get called once instead of twice
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "this[foo] = this[foo] + bar",
         output: null, // not fixed; fixing would cause foo.toString() to get called once instead of twice
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "foo[bar] >>>= baz",
         output: null, // not fixed; fixing would cause bar.toString() to get called twice instead of once
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: ">>>=" } }]
     }, {
         code: "this[foo] >>>= bar",
         output: null, // not fixed; fixing would cause foo.toString() to get called twice instead of once
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: ">>>=" } }]
     }, {
         code: "foo[5] = foo[5] / baz",
         output: "foo[5] /= baz", // this is ok because 5 is a literal, so toString won't get called
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "/=" } }]
     }, {
         code: "this[5] = this[5] / foo",
         output: "this[5] /= foo", // this is ok because 5 is a literal, so toString won't get called
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "/=" } }]
     }, {
         code: "/*1*/x/*2*/./*3*/y/*4*/= x.y +/*5*/z/*6*/./*7*/w/*8*/;",
         output: "/*1*/x/*2*/./*3*/y/*4*/+=/*5*/z/*6*/./*7*/w/*8*/;", // these comments are preserved
         options: ["always"],
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "x // 1\n . // 2\n y // 3\n = x.y + //4\n z //5\n . //6\n w;",
         output: "x // 1\n . // 2\n y // 3\n += //4\n z //5\n . //6\n w;", // these comments are preserved
         options: ["always"],
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "x = /*1*/ x + y",
         output: null, // not fixed; fixing would remove this comment
         options: ["always"],
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "x = //1\n x + y",
         output: null, // not fixed; fixing would remove this comment
         options: ["always"],
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "x.y = x/*1*/.y + z",
         output: null, // not fixed; fixing would remove this comment
         options: ["always"],
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "x.y = x. //1\n y + z",
         output: null, // not fixed; fixing would remove this comment
         options: ["always"],
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "x = x /*1*/ + y",
         output: null, // not fixed; fixing would remove this comment
         options: ["always"],
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "x = x //1\n + y",
         output: null, // not fixed; fixing would remove this comment
         options: ["always"],
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "/*1*/x +=/*2*/y/*3*/;",
         output: "/*1*/x = x +/*2*/y/*3*/;", // these comments are preserved and not duplicated
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "x +=//1\n y",
         output: "x = x +//1\n y", // this comment is preserved and not duplicated
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "(/*1*/x += y)",
         output: "(/*1*/x = x + y)", // this comment is preserved and not duplicated
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "x/*1*/+=  y",
         output: null, // not fixed; fixing would duplicate this comment
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "x //1\n +=  y",
         output: null, // not fixed; fixing would duplicate this comment
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "(/*1*/x) +=  y",
         output: null, // not fixed; fixing would duplicate this comment
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "x/*1*/.y +=  z",
         output: null, // not fixed; fixing would duplicate this comment
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "x.//1\n y +=  z",
         output: null, // not fixed; fixing would duplicate this comment
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "(foo.bar) ^= ((((((((((((((((baz))))))))))))))))",
         output: "(foo.bar) = (foo.bar) ^ ((((((((((((((((baz))))))))))))))))",
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "^=" } }]
     }, {
         code: "foo = foo ** bar",
         output: "foo **= bar",
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "**=" } }]
     }, {
         code: "foo **= bar",
         output: "foo = foo ** bar",
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "**=" } }]
     }, {
         code: "foo *= bar + 1",
         output: "foo = foo * (bar + 1)",
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "*=" } }]
     }, {
         code: "foo -= bar - baz",
         output: "foo = foo - (bar - baz)",
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "-=" } }]
     }, {
         code: "foo += bar + baz",
         output: "foo = foo + (bar + baz)", // addition is not associative in JS, e.g. (1 + 2) + '3' !== 1 + (2 + '3')
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "foo += bar = 1",
         output: "foo = foo + (bar = 1)",
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "foo *= (bar + 1)",
         output: "foo = foo * (bar + 1)",
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "*=" } }]
     }, {
         code: "foo+=-bar",
         output: "foo= foo+-bar", // tokens can be adjacent
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "foo/=bar",
         output: "foo= foo/bar", // tokens can be adjacent
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "/=" } }]
     }, {
         code: "foo/=/**/bar",
         output: "foo= foo/ /**/bar", // // tokens cannot be adjacent, insert a space between
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "/=" } }]
     }, {
         code: "foo/=//\nbar",
         output: "foo= foo/ //\nbar", // // tokens cannot be adjacent, insert a space between
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "/=" } }]
     }, {
         code: "foo/=/^bar$/",
         output: "foo= foo/ /^bar$/", // // tokens cannot be adjacent, insert a space between
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "/=" } }]
     }, {
         code: "foo+=+bar",
         output: "foo= foo+ +bar", // tokens cannot be adjacent, insert a space between
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "foo+= +bar",
         output: "foo= foo+ +bar", // tokens cannot be adjacent, but there is already a space between
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "foo+=/**/+bar",
         output: "foo= foo+/**/+bar", // tokens cannot be adjacent, but there is a comment between
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     }, {
         code: "foo+=+bar===baz",
         output: "foo= foo+(+bar===baz)", // tokens cannot be adjacent, but the right side will be parenthesised
         options: ["never"],
-        errors: UNEXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "unexpected", type: "AssignmentExpression", data: { operator: "+=" } }]
     },
 
     // Optional chaining
     {
         code: "(obj?.a).b = (obj?.a).b + y",
         output: null,
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     },
     {
         code: "obj.a = obj?.a + b",
         output: null,
-        errors: EXPECTED_OPERATOR_ASSIGNMENT
+        errors: [{ messageId: "replaced", type: "AssignmentExpression", data: { operator: "+=" } }]
     }
 
     ]