diff --git a/.prettierignore b/.prettierignore
index e3259c2c815b..6a9febb413a7 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -4,25 +4,25 @@
**/.nyc_output
**/.vs
CONTRIBUTORS.md
-packages/ast-spec/src/*/*/fixtures/_error_/*/fixture.ts
-packages/eslint-plugin/tests/fixtures/indent/
-# prettier errors on this case because it's semantically valid
-packages/ast-spec/src/element/AccessorProperty/fixtures/modifier-abstract-with-value/fixture.ts
+.yarn/plugins
+.yarn/releases
-# prettier doesn't yet support `using` declaration
-packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/fixture.ts
-packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-with-value/fixture.ts
-packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/fixture.ts
-packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-with-value/fixture.ts
-packages/ast-spec/src/statement/ForOfStatement/fixtures/using-decralation/fixture.ts
+packages/eslint-plugin/tests/fixtures/indent/
-# prettier doesn't yet support `const` modifiers for type parameters
-packages/ast-spec/src/special/TSTypeParameter/fixtures
+# ignore all error fixtures cos they often have intentional syntax errors
+packages/ast-spec/src/*/*/fixtures/_error_/*/fixture.ts
-# prettier doesn't yet support JSX namespaced attributes
-packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/fixture.tsx
-packages/scope-manager/tests/fixtures/jsx/namespaced-attribute.tsx
+# TS 5.6 -- string literal import/export specifiers
+# TODO - remove this once prettier supports it
+packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/fixture.ts
+packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/fixture.ts
+packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/fixture.ts
+packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/fixture.ts
+packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/fixture.ts
+packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/fixture.ts
+packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/fixture.ts
+packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/fixture.ts
# Ignore CHANGELOG.md files to avoid issues with automated release job
CHANGELOG.md
@@ -34,4 +34,4 @@ packages/website/build
packages/rule-tester/tests/eslint-base
/.nx/cache
-/.nx/workspace-data
\ No newline at end of file
+/.nx/workspace-data
diff --git a/.yarn/patches/@microsoft-api-extractor-npm-7.38.0-955f1e0725.patch b/.yarn/patches/@microsoft-api-extractor-npm-7.38.0-955f1e0725.patch
deleted file mode 100644
index 4a88d8663c34..000000000000
--- a/.yarn/patches/@microsoft-api-extractor-npm-7.38.0-955f1e0725.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-diff --git a/lib/analyzer/ExportAnalyzer.js b/lib/analyzer/ExportAnalyzer.js
-index 51f31b4f2f253d82adc9594faa58d8dc031957e0..1fddac54b08665f5a5a717fef740613ae921cb7a 100644
---- a/lib/analyzer/ExportAnalyzer.js
-+++ b/lib/analyzer/ExportAnalyzer.js
-@@ -193,7 +193,7 @@ class ExportAnalyzer {
- const mode = specifier && ts.isStringLiteralLike(specifier)
- ? TypeScriptInternals_1.TypeScriptInternals.getModeForUsageLocation(importOrExportDeclaration.getSourceFile(), specifier)
- : undefined;
-- const resolvedModule = TypeScriptInternals_1.TypeScriptInternals.getResolvedModule(importOrExportDeclaration.getSourceFile(), moduleSpecifier, mode);
-+ const resolvedModule = TypeScriptInternals_1.TypeScriptInternals.getResolvedModule(this._program, importOrExportDeclaration.getSourceFile(), moduleSpecifier, mode);
- if (resolvedModule === undefined) {
- // The TS compiler API `getResolvedModule` cannot resolve ambient modules. Thus, to match API Extractor's
- // previous behavior, simply treat all ambient modules as external. This bug is tracked by
-@@ -666,7 +666,7 @@ class ExportAnalyzer {
- ts.isStringLiteralLike(importOrExportDeclaration.moduleSpecifier)
- ? TypeScriptInternals_1.TypeScriptInternals.getModeForUsageLocation(importOrExportDeclaration.getSourceFile(), importOrExportDeclaration.moduleSpecifier)
- : undefined;
-- const resolvedModule = TypeScriptInternals_1.TypeScriptInternals.getResolvedModule(importOrExportDeclaration.getSourceFile(), moduleSpecifier, mode);
-+ const resolvedModule = TypeScriptInternals_1.TypeScriptInternals.getResolvedModule(this._program, importOrExportDeclaration.getSourceFile(), moduleSpecifier, mode);
- if (resolvedModule === undefined) {
- // Encountered in https://github.com/microsoft/rushstack/issues/1914.
- //
-diff --git a/lib/analyzer/TypeScriptInternals.js b/lib/analyzer/TypeScriptInternals.js
-index ff13db7709ccf502fe202337869d4024431636c9..217c36b0303c3bf9871edabcd48fbf6e09f18561 100644
---- a/lib/analyzer/TypeScriptInternals.js
-+++ b/lib/analyzer/TypeScriptInternals.js
-@@ -84,10 +84,16 @@ class TypeScriptInternals {
- * Retrieves the (cached) module resolution information for a module name that was exported from a SourceFile.
- * The compiler populates this cache as part of analyzing the source file.
- */
-- static getResolvedModule(sourceFile, moduleNameText, mode) {
-+ static getResolvedModule(program, sourceFile, moduleNameText, mode) {
- // Compiler internal:
-- // https://github.com/microsoft/TypeScript/blob/v4.7.2/src/compiler/utilities.ts#L161
-- return ts.getResolvedModule(sourceFile, moduleNameText, mode);
-+ // https://github.com/microsoft/TypeScript/blob/v5.3-beta/src/compiler/types.ts#L4678
-+ const result = program.getResolvedModule(
-+ sourceFile,
-+ moduleNameText,
-+ mode
-+ );
-+ return result?.resolvedModule;
-+
- }
- /**
- * Gets the mode required for module resolution required with the addition of Node16/nodenext
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 14d418f1e3c8..6e924bcfd961 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,20 @@
+## 8.10.0 (2024-10-17)
+
+### 🚀 Features
+
+- support TypeScript 5.6 ([#9972](https://github.com/typescript-eslint/typescript-eslint/pull/9972))
+
+### 🩹 Fixes
+
+- **typescript-eslint:** propagate `name` field to extended configs in `config` helper ([#10094](https://github.com/typescript-eslint/typescript-eslint/pull/10094))
+
+### ❤️ Thank You
+
+- auvred @auvred
+- Josh Goldberg ✨
+
+You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
+
## 8.9.0 (2024-10-14)
diff --git a/docs/getting-started/Typed_Linting.mdx b/docs/getting-started/Typed_Linting.mdx
index f6f04a21736a..e3c10288f0b8 100644
--- a/docs/getting-started/Typed_Linting.mdx
+++ b/docs/getting-started/Typed_Linting.mdx
@@ -211,7 +211,7 @@ export default tseslint.config(
languageOptions: {
parserOptions: {
projectService: true,
- tsconfigRootDir: import.meta.name,
+ tsconfigRootDir: import.meta.dirname,
},
},
},
diff --git a/docs/maintenance/pull-requests/Dependency_Version_Upgrades.mdx b/docs/maintenance/pull-requests/Dependency_Version_Upgrades.mdx
index 15ae0340c358..596c7ea0611e 100644
--- a/docs/maintenance/pull-requests/Dependency_Version_Upgrades.mdx
+++ b/docs/maintenance/pull-requests/Dependency_Version_Upgrades.mdx
@@ -137,13 +137,11 @@ We generally start the process of supporting a new TypeScript version just after
- In the parser's `getLib`, update the `switch (target)` and its preceding comment as needed (see [#6782](https://github.com/typescript-eslint/typescript-eslint/pull/6782))
- Change the `SUPPORTED_TYPESCRIPT_VERSIONS` constant's `<` version to the next version of TypeScript
- Change the `SUPPORTED_PRERELEASE_RANGES` constant to equal `['X.Y.1-rc']`
- - Rename and update `patches/typescript*` to the new TypeScript version
- Run `yarn generate-lib` to update `scope-manager`
1. Once all PRs needed for the RC update PR are merged, merge the RC update PR
1. Once TypeScript releases the stable X.Y version, create and merge a PR with a title like `chore: bump TypeScript from X.YRC to X.Y` and the following changes:
- In the root `package.json`, remove `|| X.Y.1-rc2` from the `dependency` on `typescript`, and bump its `<` version to the next version of TypeScript
- In the root `package.json`, change the `resolutions` on `typescript` to `X.Y.3`
- - Rename and update `patches/typescript*` to the new TypeScript version
- Any other changes made necessary due to changes in TypeScript between the RC version and stable version
1. Send a PR that updates this documentation page to point to your newer issues and PRs
- Also update any of these steps if you go with a different process
diff --git a/docs/troubleshooting/faqs/TypeScript.mdx b/docs/troubleshooting/faqs/TypeScript.mdx
index e5fbfdeb926d..50217add13fb 100644
--- a/docs/troubleshooting/faqs/TypeScript.mdx
+++ b/docs/troubleshooting/faqs/TypeScript.mdx
@@ -7,7 +7,7 @@ title: TypeScript FAQs
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
-## Should TypeScript should be installed globally or locally?
+## Should TypeScript be installed globally or locally?
Make sure that you have installed TypeScript locally i.e. by using `npm install typescript`, not `npm install -g typescript`,
or by using `yarn add typescript`, not `yarn global add typescript`.
diff --git a/jest.config.js b/jest.config.js
index 295d7757ff18..36f8306ddf54 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -1,9 +1,9 @@
'use strict';
// @ts-check
-const { getJestProjects } = require('@nx/jest');
+const { getJestProjectsAsync } = require('@nx/jest');
/** @type {import('@jest/types').Config.InitialOptions} */
-module.exports = {
- projects: getJestProjects(),
-};
+module.exports = async () => ({
+ projects: await getJestProjectsAsync(),
+});
diff --git a/nx.json b/nx.json
index 9b9ae7250a83..444849d54524 100644
--- a/nx.json
+++ b/nx.json
@@ -3,7 +3,6 @@
"nxCloudAccessToken": "YjIzMmMxMWItMjhiMS00NWY2LTk1NWYtYWU3YWQ0YjE4YjBlfHJlYWQ=",
"release": {
"projects": [
- "*",
"!repo",
"!website*",
"!integration-tests",
diff --git a/package.json b/package.json
index eaec4491d431..48548cd247b9 100644
--- a/package.json
+++ b/package.json
@@ -64,17 +64,17 @@
"@eslint/eslintrc": "^2.1.4",
"@eslint/js": "^8.57.0",
"@jest/types": "29.6.3",
- "@nx/devkit": "19.5.2",
- "@nx/eslint": "19.5.2",
- "@nx/jest": "19.5.2",
- "@nx/workspace": "19.5.2",
+ "@nx/devkit": "20.0.0",
+ "@nx/eslint": "20.0.0",
+ "@nx/jest": "20.0.0",
+ "@nx/workspace": "20.0.0",
"@swc/core": "^1.4.12",
"@swc/jest": "^0.2.36",
"@types/babel__code-frame": "^7.0.6",
"@types/babel__core": "^7.20.5",
"@types/debug": "^4.1.12",
"@types/is-glob": "^4.0.4",
- "@types/jest": "29.5.12",
+ "@types/jest": "29.5.13",
"@types/jest-specific-snapshot": "^0.5.9",
"@types/natural-compare": "^1.4.3",
"@types/ncp": "^2.0.8",
@@ -90,7 +90,7 @@
"@typescript-eslint/utils": "workspace:^",
"console-fail-test": "^0.5.0",
"cross-fetch": "^4.0.0",
- "cspell": "^8.6.1",
+ "cspell": "^8.15.2",
"downlevel-dts": ">=0.11.0",
"eslint": "^9.3.0",
"eslint-plugin-eslint-comments": "^3.2.0",
@@ -117,14 +117,14 @@
"make-dir": "^4.0.0",
"markdownlint-cli": "^0.42.0",
"ncp": "^2.0.0",
- "nx": "19.5.2",
+ "nx": "20.0.0",
"prettier": "3.3.2",
"pretty-format": "^29.7.0",
"rimraf": "^5.0.5",
"semver": "7.6.2",
"tmp": "^0.2.1",
"tsx": "*",
- "typescript": ">=4.8.4 <5.6.0",
+ "typescript": ">=4.8.4 <5.7.0",
"typescript-eslint": "workspace:^",
"yargs": "17.7.2"
},
@@ -132,23 +132,23 @@
"@jest/create-cache-key-function": "^29",
"@jest/reporters": "^29",
"@jest/test-result": "^29",
- "@microsoft/api-extractor@^7.38.0": "patch:@microsoft/api-extractor@npm%3A7.38.0#./.yarn/patches/@microsoft-api-extractor-npm-7.38.0-955f1e0725.patch",
"@types/eslint-scope": "link:./tools/dummypkg",
"@types/eslint": "link:./tools/dummypkg",
"@types/estree": "link:./tools/dummypkg",
"@types/node": "^20.0.0",
"@types/react": "^18.2.14",
"eslint": "^9",
+ "eslint-plugin-eslint-plugin@^5.5.0": "patch:eslint-plugin-eslint-plugin@npm%3A5.5.1#./.yarn/patches/eslint-plugin-eslint-plugin-npm-5.5.1-4206c2506d.patch",
"eslint-visitor-keys": "^3.4.1",
"jest-config": "^29",
"jest-resolve": "^29",
"jest-util": "^29",
+ "prettier": "3.3.2",
"pretty-format": "^29",
"react-split-pane@^0.1.92": "patch:react-split-pane@npm%3A0.1.92#./.yarn/patches/react-split-pane-npm-0.1.92-93dbf51dff.patch",
"tmp": "0.2.1",
"tsx": "^4.7.2",
- "typescript": "5.5.2",
- "eslint-plugin-eslint-plugin@^5.5.0": "patch:eslint-plugin-eslint-plugin@npm%3A5.5.1#./.yarn/patches/eslint-plugin-eslint-plugin-npm-5.5.1-4206c2506d.patch"
+ "typescript": "5.6.2"
},
"packageManager": "yarn@3.8.2",
"nx": {
diff --git a/packages/ast-spec/CHANGELOG.md b/packages/ast-spec/CHANGELOG.md
index 60096ea98255..dfd5f840627b 100644
--- a/packages/ast-spec/CHANGELOG.md
+++ b/packages/ast-spec/CHANGELOG.md
@@ -1,3 +1,15 @@
+## 8.10.0 (2024-10-17)
+
+### 🚀 Features
+
+- support TypeScript 5.6 ([#9972](https://github.com/typescript-eslint/typescript-eslint/pull/9972))
+
+### ❤️ Thank You
+
+- Josh Goldberg ✨
+
+You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
+
## 8.9.0 (2024-10-14)
This was a version bump only for ast-spec to align it with other projects, there were no code changes.
diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json
index edf4609cd27c..f3a852f5f4fe 100644
--- a/packages/ast-spec/package.json
+++ b/packages/ast-spec/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/ast-spec",
- "version": "8.9.0",
+ "version": "8.10.0",
"description": "Complete specification for the TypeScript-ESTree AST",
"private": true,
"keywords": [
@@ -48,7 +48,7 @@
"@babel/core": "*",
"@babel/eslint-parser": "*",
"@jest/types": "29.6.3",
- "@microsoft/api-extractor": "^7.43.0",
+ "@microsoft/api-extractor": "^7.47.11",
"glob": "*",
"jest": "29.7.0",
"jest-diff": "^29.7.0",
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/fixture.ts b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/fixture.ts
deleted file mode 100644
index 8bab23b35992..000000000000
--- a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/fixture.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * as 'foo' from 'module';
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/snapshots/1-Babel-Error.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/snapshots/1-Babel-Error.shot
deleted file mode 100644
index 04ccfb73d5bb..000000000000
--- a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/snapshots/1-Babel-Error.shot
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures declaration ExportAllDeclaration _error_ named-non-identifier Babel - Error 1`] = `"NO ERROR"`;
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/snapshots/1-TSESTree-Error.shot
deleted file mode 100644
index cea1b9f24689..000000000000
--- a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/snapshots/1-TSESTree-Error.shot
+++ /dev/null
@@ -1,8 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures declaration ExportAllDeclaration _error_ named-non-identifier TSESTree - Error 1`] = `
-"TSError
-> 1 | export * as 'foo' from 'module';
- | ^ Identifier expected.
- 2 |"
-`;
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/snapshots/2-Alignment-Error.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/snapshots/2-Alignment-Error.shot
deleted file mode 100644
index 3e05e98bfafd..000000000000
--- a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/snapshots/2-Alignment-Error.shot
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures declaration ExportAllDeclaration _error_ named-non-identifier Error Alignment 1`] = `"TSESTree errored but Babel didn't"`;
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/snapshots/2-Babel-Error.shot
deleted file mode 100644
index 04ccfb73d5bb..000000000000
--- a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/snapshots/2-Babel-Error.shot
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures declaration ExportAllDeclaration _error_ named-non-identifier Babel - Error 1`] = `"NO ERROR"`;
diff --git a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/snapshots/3-Alignment-Error.shot
deleted file mode 100644
index 3e05e98bfafd..000000000000
--- a/packages/ast-spec/src/declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/snapshots/3-Alignment-Error.shot
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures declaration ExportAllDeclaration _error_ named-non-identifier Error Alignment 1`] = `"TSESTree errored but Babel didn't"`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/fixture.ts
deleted file mode 100644
index 5faf31b8867a..000000000000
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/fixture.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { a as 'a' };
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-with-source/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-with-source/fixture.ts
new file mode 100644
index 000000000000..3f4367e53b55
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-with-source/fixture.ts
@@ -0,0 +1 @@
+export { a as 1 } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-with-source/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-with-source/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..24f7b42f0b77
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-with-source/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-identifier-aliased-to-number-literal-with-source TSESTree - Error 1`] = `
+"TSError
+> 1 | export { a as 1 } from 'mod';
+ | ^ Identifier expected.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-with-source/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-with-source/snapshots/2-Babel-Error.shot
new file mode 100644
index 000000000000..b084f34a5da0
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-with-source/snapshots/2-Babel-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-identifier-aliased-to-number-literal-with-source Babel - Error 1`] = `[SyntaxError: Unexpected token (1:14)]`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-with-source/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-with-source/snapshots/3-Alignment-Error.shot
new file mode 100644
index 000000000000..c8ad6c49c869
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-with-source/snapshots/3-Alignment-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-identifier-aliased-to-number-literal-with-source Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-without-source/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-without-source/fixture.ts
new file mode 100644
index 000000000000..504dbf44ba01
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-without-source/fixture.ts
@@ -0,0 +1 @@
+export { a as 1 };
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-without-source/snapshots/1-TSESTree-Error.shot
similarity index 60%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/snapshots/1-TSESTree-Error.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-without-source/snapshots/1-TSESTree-Error.shot
index 015ff072aa2f..7b7fbf69df5c 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/snapshots/1-TSESTree-Error.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-without-source/snapshots/1-TSESTree-Error.shot
@@ -1,8 +1,8 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration _error_ aliased-literal TSESTree - Error 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-identifier-aliased-to-number-literal-without-source TSESTree - Error 1`] = `
"TSError
-> 1 | export { a as 'a' };
+> 1 | export { a as 1 };
| ^ Identifier expected.
2 |"
`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-without-source/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-without-source/snapshots/2-Babel-Error.shot
new file mode 100644
index 000000000000..fcbf3dc6d452
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-without-source/snapshots/2-Babel-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-identifier-aliased-to-number-literal-without-source Babel - Error 1`] = `[SyntaxError: Unexpected token (1:14)]`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-without-source/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-without-source/snapshots/3-Alignment-Error.shot
new file mode 100644
index 000000000000..922f7f21f6de
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-identifier-aliased-to-number-literal-without-source/snapshots/3-Alignment-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-identifier-aliased-to-number-literal-without-source Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-with-source/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-with-source/fixture.ts
new file mode 100644
index 000000000000..b74776276410
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-with-source/fixture.ts
@@ -0,0 +1 @@
+export { 1 } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-with-source/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-with-source/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..4236bc62af00
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-with-source/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-number-literal-with-source TSESTree - Error 1`] = `
+"TSError
+> 1 | export { 1 } from 'mod';
+ | ^ Identifier expected.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/snapshots/1-Babel-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-with-source/snapshots/2-Babel-Error.shot
similarity index 52%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/snapshots/1-Babel-Error.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-with-source/snapshots/2-Babel-Error.shot
index dabc7d927d5d..f9d04b880622 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/snapshots/1-Babel-Error.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-with-source/snapshots/2-Babel-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration _error_ aliased-literal Babel - Error 1`] = `"NO ERROR"`;
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-number-literal-with-source Babel - Error 1`] = `[SyntaxError: Unexpected token (1:9)]`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-with-source/snapshots/3-Alignment-Error.shot
similarity index 59%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/snapshots/3-Alignment-Error.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-with-source/snapshots/3-Alignment-Error.shot
index f2d4bb40cc50..7db9712e5305 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/snapshots/3-Alignment-Error.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-with-source/snapshots/3-Alignment-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration _error_ literal-braced Error Alignment 1`] = `"Both errored"`;
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-number-literal-with-source Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-without-source/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-without-source/fixture.ts
new file mode 100644
index 000000000000..fa1afc8165af
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-without-source/fixture.ts
@@ -0,0 +1 @@
+export { 1 };
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-without-source/snapshots/1-TSESTree-Error.shot
similarity index 66%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/snapshots/1-TSESTree-Error.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-without-source/snapshots/1-TSESTree-Error.shot
index 55c09361565e..b8091168e53b 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/snapshots/1-TSESTree-Error.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-without-source/snapshots/1-TSESTree-Error.shot
@@ -1,8 +1,8 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration _error_ literal-braced TSESTree - Error 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-number-literal-without-source TSESTree - Error 1`] = `
"TSError
-> 1 | export { 'a' };
+> 1 | export { 1 };
| ^ Identifier expected.
2 |"
`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-without-source/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-without-source/snapshots/2-Babel-Error.shot
new file mode 100644
index 000000000000..027935e43e47
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-without-source/snapshots/2-Babel-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-number-literal-without-source Babel - Error 1`] = `[SyntaxError: Unexpected token (1:9)]`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-without-source/snapshots/3-Alignment-Error.shot
similarity index 58%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/snapshots/3-Alignment-Error.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-without-source/snapshots/3-Alignment-Error.shot
index efb973998424..0b69103437fe 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/snapshots/3-Alignment-Error.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-number-literal-without-source/snapshots/3-Alignment-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration _error_ aliased-literal Error Alignment 1`] = `"TSESTree errored but Babel didn't"`;
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-number-literal-without-source Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-identifier-without-source/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-identifier-without-source/fixture.ts
new file mode 100644
index 000000000000..7bf13642b5a3
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-identifier-without-source/fixture.ts
@@ -0,0 +1 @@
+export { 'a a' as b };
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-identifier-without-source/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-identifier-without-source/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..c0cb744a406c
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-identifier-without-source/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-string-literal-aliased-to-identifier-without-source TSESTree - Error 1`] = `
+"TSError
+> 1 | export { 'a a' as b };
+ | ^^^^^ A string literal cannot be used as a local exported binding without \`from\`.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-identifier-without-source/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-identifier-without-source/snapshots/2-Babel-Error.shot
new file mode 100644
index 000000000000..8a5bd0de2a8c
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-identifier-without-source/snapshots/2-Babel-Error.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-string-literal-aliased-to-identifier-without-source Babel - Error 1`] = `
+[SyntaxError: A string literal cannot be used as an exported binding without \`from\`.
+- Did you mean \`export { 'a a' as 'b' } from 'some-module'\`? (1:9)]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-identifier-without-source/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-identifier-without-source/snapshots/3-Alignment-Error.shot
new file mode 100644
index 000000000000..f36da5abefdc
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-identifier-without-source/snapshots/3-Alignment-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-string-literal-aliased-to-identifier-without-source Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-number-literal-without-source/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-number-literal-without-source/fixture.ts
new file mode 100644
index 000000000000..f0ce06919277
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-number-literal-without-source/fixture.ts
@@ -0,0 +1 @@
+export { 'a a' as 1 };
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-number-literal-without-source/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-number-literal-without-source/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..8e6e90c6f422
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-number-literal-without-source/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-string-literal-aliased-to-number-literal-without-source TSESTree - Error 1`] = `
+"TSError
+> 1 | export { 'a a' as 1 };
+ | ^ Identifier expected.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-number-literal-without-source/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-number-literal-without-source/snapshots/2-Babel-Error.shot
new file mode 100644
index 000000000000..59e6552db777
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-number-literal-without-source/snapshots/2-Babel-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-string-literal-aliased-to-number-literal-without-source Babel - Error 1`] = `[SyntaxError: Unexpected token (1:18)]`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-number-literal-without-source/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-number-literal-without-source/snapshots/3-Alignment-Error.shot
new file mode 100644
index 000000000000..5d822c09ed07
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-number-literal-without-source/snapshots/3-Alignment-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-string-literal-aliased-to-number-literal-without-source Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-string-literal-without-source/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-string-literal-without-source/fixture.ts
new file mode 100644
index 000000000000..a54a56ad01ed
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-string-literal-without-source/fixture.ts
@@ -0,0 +1 @@
+export { 'a a' as 'b b' };
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-string-literal-without-source/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-string-literal-without-source/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..abff37aa4a9e
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-string-literal-without-source/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-string-literal-aliased-to-string-literal-without-source TSESTree - Error 1`] = `
+"TSError
+> 1 | export { 'a a' as 'b b' };
+ | ^^^^^ A string literal cannot be used as a local exported binding without \`from\`.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-string-literal-without-source/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-string-literal-without-source/snapshots/2-Babel-Error.shot
new file mode 100644
index 000000000000..383648bd3c68
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-string-literal-without-source/snapshots/2-Babel-Error.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-string-literal-aliased-to-string-literal-without-source Babel - Error 1`] = `
+[SyntaxError: A string literal cannot be used as an exported binding without \`from\`.
+- Did you mean \`export { 'a a' as 'b b' } from 'some-module'\`? (1:9)]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-string-literal-without-source/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-string-literal-without-source/snapshots/3-Alignment-Error.shot
new file mode 100644
index 000000000000..bd27647c8d0e
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-aliased-to-string-literal-without-source/snapshots/3-Alignment-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-string-literal-aliased-to-string-literal-without-source Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-many-without-source/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-many-without-source/fixture.ts
new file mode 100644
index 000000000000..93341fb488d5
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-many-without-source/fixture.ts
@@ -0,0 +1 @@
+export { 'a a', 'b b' };
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-many-without-source/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-many-without-source/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..3b9ad821bd0c
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-many-without-source/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-string-literal-many-without-source TSESTree - Error 1`] = `
+"TSError
+> 1 | export { 'a a', 'b b' };
+ | ^^^^^ A string literal cannot be used as a local exported binding without \`from\`.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/snapshots/1-Babel-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-many-without-source/snapshots/2-Babel-Error.shot
similarity index 59%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/snapshots/1-Babel-Error.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-many-without-source/snapshots/2-Babel-Error.shot
index 3ba27489473b..2ee71a5daf29 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/snapshots/1-Babel-Error.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-many-without-source/snapshots/2-Babel-Error.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration _error_ literal-braced Babel - Error 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-string-literal-many-without-source Babel - Error 1`] = `
[SyntaxError: A string literal cannot be used as an exported binding without \`from\`.
-- Did you mean \`export { 'a' as 'a' } from 'some-module'\`? (1:9)]
+- Did you mean \`export { 'a a' as 'a a' } from 'some-module'\`? (1:9)]
`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-many-without-source/snapshots/3-Alignment-Error.shot
similarity index 56%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/snapshots/2-Babel-Error.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-many-without-source/snapshots/3-Alignment-Error.shot
index dabc7d927d5d..40240523bf45 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/snapshots/2-Babel-Error.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-many-without-source/snapshots/3-Alignment-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration _error_ aliased-literal Babel - Error 1`] = `"NO ERROR"`;
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-string-literal-many-without-source Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-without-source/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-without-source/fixture.ts
new file mode 100644
index 000000000000..838871242b23
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-without-source/fixture.ts
@@ -0,0 +1 @@
+export { 'a a' };
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-without-source/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-without-source/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..4aab1a3ea4a8
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-without-source/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-string-literal-without-source TSESTree - Error 1`] = `
+"TSError
+> 1 | export { 'a a' };
+ | ^^^^^ A string literal cannot be used as a local exported binding without \`from\`.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-without-source/snapshots/2-Babel-Error.shot
similarity index 60%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/snapshots/2-Babel-Error.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-without-source/snapshots/2-Babel-Error.shot
index 3ba27489473b..23fb23d4e816 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/snapshots/2-Babel-Error.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-without-source/snapshots/2-Babel-Error.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration _error_ literal-braced Babel - Error 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-string-literal-without-source Babel - Error 1`] = `
[SyntaxError: A string literal cannot be used as an exported binding without \`from\`.
-- Did you mean \`export { 'a' as 'a' } from 'some-module'\`? (1:9)]
+- Did you mean \`export { 'a a' as 'a a' } from 'some-module'\`? (1:9)]
`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/snapshots/2-Alignment-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-without-source/snapshots/3-Alignment-Error.shot
similarity index 58%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/snapshots/2-Alignment-Error.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-without-source/snapshots/3-Alignment-Error.shot
index efb973998424..1ca50acedcb8 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/snapshots/2-Alignment-Error.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/braced-string-literal-without-source/snapshots/3-Alignment-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration _error_ aliased-literal Error Alignment 1`] = `"TSESTree errored but Babel didn't"`;
+exports[`AST Fixtures declaration ExportNamedDeclaration _error_ braced-string-literal-without-source Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/fixture.ts
deleted file mode 100644
index 7eec000d816d..000000000000
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/fixture.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { 'a' };
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/snapshots/2-Alignment-Error.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/snapshots/2-Alignment-Error.shot
deleted file mode 100644
index f2d4bb40cc50..000000000000
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/_error_/literal-braced/snapshots/2-Alignment-Error.shot
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures declaration ExportNamedDeclaration _error_ literal-braced Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/fixture.ts
new file mode 100644
index 000000000000..7d1a5a7aa3a5
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/fixture.ts
@@ -0,0 +1 @@
+export { a as b } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..78f189622475
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,75 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-identifier-with-source TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ attributes: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [23, 28],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Identifier {
+ type: "Identifier",
+ decorators: [],
+ name: "b",
+ optional: false,
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ decorators: [],
+ name: "a",
+ optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 15],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 30],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..b975c782fc4a
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-identifier-with-source TSESTree - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "as",
+
+ range: [11, 13],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "b",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [16, 17],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [18, 22],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [23, 28],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..20876dca3105
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/3-Babel-AST.shot
@@ -0,0 +1,71 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-identifier-with-source Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ assertions: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [23, 28],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Identifier {
+ type: "Identifier",
+ name: "b",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ name: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 15],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 30],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..56aac5f39800
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-identifier-with-source Babel - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "as",
+
+ range: [11, 13],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "b",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [16, 17],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [18, 22],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [23, 28],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..91755224f540
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,80 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-identifier-with-source AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExportNamedDeclaration {
+ type: 'ExportNamedDeclaration',
+- attributes: Array [],
++ assertions: Array [],
+ declaration: null,
+ exportKind: 'value',
+ source: Literal {
+ type: 'Literal',
+ raw: '\\'mod\\'',
+ value: 'mod',
+
+ range: [23, 28],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ specifiers: Array [
+ ExportSpecifier {
+ type: 'ExportSpecifier',
+ exported: Identifier {
+ type: 'Identifier',
+- decorators: Array [],
+ name: 'b',
+- optional: false,
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ exportKind: 'value',
+ local: Identifier {
+ type: 'Identifier',
+- decorators: Array [],
+ name: 'a',
+- optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 15],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'module',
+
+ range: [0, 30],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..5e0e4b49653a
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-identifier-with-source AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/fixture.ts
similarity index 100%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/fixture.ts
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/fixture.ts
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/1-TSESTree-AST.shot
similarity index 91%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/1-TSESTree-AST.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/1-TSESTree-AST.shot
index 1b2d074fc6ef..f0e126d60d9e 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/1-TSESTree-AST.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration aliased TSESTree - AST 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-identifier-without-source TSESTree - AST 1`] = `
Program {
type: "Program",
body: [
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/2-TSESTree-Tokens.shot
similarity index 90%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/2-TSESTree-Tokens.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/2-TSESTree-Tokens.shot
index 8bdbd3c34b8f..1b39423e8fe0 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/2-TSESTree-Tokens.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/2-TSESTree-Tokens.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration aliased TSESTree - Tokens 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-identifier-without-source TSESTree - Tokens 1`] = `
[
Keyword {
type: "Keyword",
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/3-Babel-AST.shot
similarity index 90%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/3-Babel-AST.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/3-Babel-AST.shot
index 2027ecaf04ea..cb9de6bf21d8 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/3-Babel-AST.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/3-Babel-AST.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration aliased Babel - AST 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-identifier-without-source Babel - AST 1`] = `
Program {
type: "Program",
body: [
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/4-Babel-Tokens.shot
similarity index 90%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/4-Babel-Tokens.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/4-Babel-Tokens.shot
index 68b9dbc1c3fd..f2cee18f8cc6 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/4-Babel-Tokens.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/4-Babel-Tokens.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration aliased Babel - Tokens 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-identifier-without-source Babel - Tokens 1`] = `
[
Keyword {
type: "Keyword",
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/5-AST-Alignment-AST.shot
similarity index 92%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/5-AST-Alignment-AST.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/5-AST-Alignment-AST.shot
index 1fd302c11434..71c86d6ccd1a 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/5-AST-Alignment-AST.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration aliased AST Alignment - AST 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-identifier-without-source AST Alignment - AST 1`] = `
"Snapshot Diff:
- TSESTree
+ Babel
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..7a4d0886e2a1
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-identifier-without-source AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/fixture.ts
new file mode 100644
index 000000000000..2793b054c40a
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/fixture.ts
@@ -0,0 +1 @@
+export { a as 'b' } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..12303ecaa5d2
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,74 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-string-literal-with-source TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ attributes: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [25, 30],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Literal {
+ type: "Literal",
+ raw: "'b'",
+ value: "b",
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ decorators: [],
+ name: "a",
+ optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 17],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 31],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 32],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..1fd352d9bea5
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-string-literal-with-source TSESTree - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "as",
+
+ range: [11, 13],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'b'",
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [20, 24],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [25, 30],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [30, 31],
+ loc: {
+ start: { column: 30, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..f3e94f39ac59
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/3-Babel-AST.shot
@@ -0,0 +1,72 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-string-literal-with-source Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ assertions: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [25, 30],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Literal {
+ type: "Literal",
+ raw: "'b'",
+ value: "b",
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ name: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 17],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 31],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 32],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..613532e02424
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-string-literal-with-source Babel - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "as",
+
+ range: [11, 13],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'b'",
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [20, 24],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [25, 30],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [30, 31],
+ loc: {
+ start: { column: 30, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..2ce277fa53a0
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,79 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-string-literal-with-source AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExportNamedDeclaration {
+ type: 'ExportNamedDeclaration',
+- attributes: Array [],
++ assertions: Array [],
+ declaration: null,
+ exportKind: 'value',
+ source: Literal {
+ type: 'Literal',
+ raw: '\\'mod\\'',
+ value: 'mod',
+
+ range: [25, 30],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ specifiers: Array [
+ ExportSpecifier {
+ type: 'ExportSpecifier',
+ exported: Literal {
+ type: 'Literal',
+ raw: '\\'b\\'',
+ value: 'b',
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ exportKind: 'value',
+ local: Identifier {
+ type: 'Identifier',
+- decorators: Array [],
+ name: 'a',
+- optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 17],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 31],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'module',
+
+ range: [0, 32],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..bef6c6e24d1f
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-string-literal-with-source AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/fixture.ts
new file mode 100644
index 000000000000..718bd08c02c3
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/fixture.ts
@@ -0,0 +1 @@
+export { a as 'b' };
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..0a001051a27d
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,64 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-string-literal-without-source TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ attributes: [],
+ declaration: null,
+ exportKind: "value",
+ source: null,
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Literal {
+ type: "Literal",
+ raw: "'b'",
+ value: "b",
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ decorators: [],
+ name: "a",
+ optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 17],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 20],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 21],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..369411ea58fa
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,76 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-string-literal-without-source TSESTree - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "as",
+
+ range: [11, 13],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'b'",
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [19, 20],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..d3e072e4b7ad
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/3-Babel-AST.shot
@@ -0,0 +1,62 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-string-literal-without-source Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ assertions: [],
+ declaration: null,
+ exportKind: "value",
+ source: null,
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Literal {
+ type: "Literal",
+ raw: "'b'",
+ value: "b",
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ name: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 17],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 20],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ ],
+ sourceType: "script",
+
+ range: [0, 21],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..f80606bb4cc2
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,76 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-string-literal-without-source Babel - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "as",
+
+ range: [11, 13],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'b'",
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [19, 20],
+ loc: {
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..c8778afd4bdc
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,70 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-string-literal-without-source AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExportNamedDeclaration {
+ type: 'ExportNamedDeclaration',
+- attributes: Array [],
++ assertions: Array [],
+ declaration: null,
+ exportKind: 'value',
+ source: null,
+ specifiers: Array [
+ ExportSpecifier {
+ type: 'ExportSpecifier',
+ exported: Literal {
+ type: 'Literal',
+ raw: '\\'b\\'',
+ value: 'b',
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ exportKind: 'value',
+ local: Identifier {
+ type: 'Identifier',
+- decorators: Array [],
+ name: 'a',
+- optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 17],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 20],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ ],
+- sourceType: 'module',
++ sourceType: 'script',
+
+ range: [0, 21],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..bd2fc2bc854b
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-aliased-to-string-literal-without-source AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/fixture.ts
new file mode 100644
index 000000000000..7143bbd8b1ad
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/fixture.ts
@@ -0,0 +1 @@
+export { a, b } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..ed5078361878
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,109 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-many-with-source TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ attributes: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [21, 26],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Identifier {
+ type: "Identifier",
+ decorators: [],
+ name: "a",
+ optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ decorators: [],
+ name: "a",
+ optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Identifier {
+ type: "Identifier",
+ decorators: [],
+ name: "b",
+ optional: false,
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ decorators: [],
+ name: "b",
+ optional: false,
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 28],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..b8d689aea35c
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-many-with-source TSESTree - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "b",
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [16, 20],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [21, 26],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [26, 27],
+ loc: {
+ start: { column: 26, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..8fcb020372ca
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/3-Babel-AST.shot
@@ -0,0 +1,101 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-many-with-source Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ assertions: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [21, 26],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Identifier {
+ type: "Identifier",
+ name: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ name: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Identifier {
+ type: "Identifier",
+ name: "b",
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ name: "b",
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 28],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..e3ead9bca995
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-many-with-source Babel - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [10, 11],
+ loc: {
+ start: { column: 10, line: 1 },
+ end: { column: 11, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "b",
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [16, 20],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 20, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [21, 26],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [26, 27],
+ loc: {
+ start: { column: 26, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..6113cba0e5c4
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,114 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-many-with-source AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExportNamedDeclaration {
+ type: 'ExportNamedDeclaration',
+- attributes: Array [],
++ assertions: Array [],
+ declaration: null,
+ exportKind: 'value',
+ source: Literal {
+ type: 'Literal',
+ raw: '\\'mod\\'',
+ value: 'mod',
+
+ range: [21, 26],
+ loc: {
+ start: { column: 21, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ specifiers: Array [
+ ExportSpecifier {
+ type: 'ExportSpecifier',
+ exported: Identifier {
+ type: 'Identifier',
+- decorators: Array [],
+ name: 'a',
+- optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ exportKind: 'value',
+ local: Identifier {
+ type: 'Identifier',
+- decorators: Array [],
+ name: 'a',
+- optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ ExportSpecifier {
+ type: 'ExportSpecifier',
+ exported: Identifier {
+ type: 'Identifier',
+- decorators: Array [],
+ name: 'b',
+- optional: false,
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ exportKind: 'value',
+ local: Identifier {
+ type: 'Identifier',
+- decorators: Array [],
+ name: 'b',
+- optional: false,
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+
+ range: [12, 13],
+ loc: {
+ start: { column: 12, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 27],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'module',
+
+ range: [0, 28],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..2f3c7ca6ec43
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-many-with-source AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/fixture.ts
similarity index 100%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/fixture.ts
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/fixture.ts
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/1-TSESTree-AST.shot
similarity index 95%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/1-TSESTree-AST.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/1-TSESTree-AST.shot
index 8892a61581c0..4cb3f5c2798b 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/1-TSESTree-AST.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration identifier-many TSESTree - AST 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-many-without-source TSESTree - AST 1`] = `
Program {
type: "Program",
body: [
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/2-TSESTree-Tokens.shot
similarity index 91%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/2-TSESTree-Tokens.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/2-TSESTree-Tokens.shot
index 1a0506845dc5..c337f6f5329f 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/2-TSESTree-Tokens.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/2-TSESTree-Tokens.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration identifier-many TSESTree - Tokens 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-many-without-source TSESTree - Tokens 1`] = `
[
Keyword {
type: "Keyword",
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/3-Babel-AST.shot
similarity index 94%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/3-Babel-AST.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/3-Babel-AST.shot
index 9b3deae0f972..4af1be81daeb 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/3-Babel-AST.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/3-Babel-AST.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration identifier-many Babel - AST 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-many-without-source Babel - AST 1`] = `
Program {
type: "Program",
body: [
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/4-Babel-Tokens.shot
similarity index 91%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/4-Babel-Tokens.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/4-Babel-Tokens.shot
index f3da2541784c..9413931d9afc 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/4-Babel-Tokens.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/4-Babel-Tokens.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration identifier-many Babel - Tokens 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-many-without-source Babel - Tokens 1`] = `
[
Keyword {
type: "Keyword",
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/5-AST-Alignment-AST.shot
similarity index 95%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/5-AST-Alignment-AST.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/5-AST-Alignment-AST.shot
index 00294e85963b..147b250042f7 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/5-AST-Alignment-AST.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration identifier-many AST Alignment - AST 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-many-without-source AST Alignment - AST 1`] = `
"Snapshot Diff:
- TSESTree
+ Babel
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..c4c3db65b420
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-many-without-source AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/fixture.ts
new file mode 100644
index 000000000000..2987292f975a
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/fixture.ts
@@ -0,0 +1 @@
+export { a } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..f219e3cb7a43
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,75 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-with-source TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ attributes: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [18, 23],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Identifier {
+ type: "Identifier",
+ decorators: [],
+ name: "a",
+ optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ decorators: [],
+ name: "a",
+ optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 25],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..0b2f885efed9
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,76 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-with-source TSESTree - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [13, 17],
+ loc: {
+ start: { column: 13, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [18, 23],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..05f61dcf26ec
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/3-Babel-AST.shot
@@ -0,0 +1,71 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-with-source Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ assertions: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [18, 23],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Identifier {
+ type: "Identifier",
+ name: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ name: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 25],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..1b0626f17888
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,76 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-with-source Babel - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "a",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [11, 12],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 12, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [13, 17],
+ loc: {
+ start: { column: 13, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [18, 23],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..0bd08d542e76
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,80 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-with-source AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExportNamedDeclaration {
+ type: 'ExportNamedDeclaration',
+- attributes: Array [],
++ assertions: Array [],
+ declaration: null,
+ exportKind: 'value',
+ source: Literal {
+ type: 'Literal',
+ raw: '\\'mod\\'',
+ value: 'mod',
+
+ range: [18, 23],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ specifiers: Array [
+ ExportSpecifier {
+ type: 'ExportSpecifier',
+ exported: Identifier {
+ type: 'Identifier',
+- decorators: Array [],
+ name: 'a',
+- optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ exportKind: 'value',
+ local: Identifier {
+ type: 'Identifier',
+- decorators: Array [],
+ name: 'a',
+- optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 24],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'module',
+
+ range: [0, 25],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..3aac3b1d21cf
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-with-source AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/fixture.ts
similarity index 100%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/fixture.ts
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/fixture.ts
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/1-TSESTree-AST.shot
similarity index 92%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/1-TSESTree-AST.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/1-TSESTree-AST.shot
index d9f0a0177742..2f5393b47088 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/1-TSESTree-AST.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration identifier-braced TSESTree - AST 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-without-source TSESTree - AST 1`] = `
Program {
type: "Program",
body: [
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/2-TSESTree-Tokens.shot
similarity index 88%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/2-TSESTree-Tokens.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/2-TSESTree-Tokens.shot
index 5d19014688b4..957c360c0894 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/2-TSESTree-Tokens.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/2-TSESTree-Tokens.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration identifier-braced TSESTree - Tokens 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-without-source TSESTree - Tokens 1`] = `
[
Keyword {
type: "Keyword",
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/3-Babel-AST.shot
similarity index 92%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/3-Babel-AST.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/3-Babel-AST.shot
index c99b8674c943..b6ee6e695f5f 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/3-Babel-AST.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/3-Babel-AST.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration identifier-braced Babel - AST 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-without-source Babel - AST 1`] = `
Program {
type: "Program",
body: [
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/4-Babel-Tokens.shot
similarity index 88%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/4-Babel-Tokens.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/4-Babel-Tokens.shot
index e31a37ad775b..c6dcc898382b 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/4-Babel-Tokens.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/4-Babel-Tokens.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration identifier-braced Babel - Tokens 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-without-source Babel - Tokens 1`] = `
[
Keyword {
type: "Keyword",
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/5-AST-Alignment-AST.shot
similarity index 93%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/5-AST-Alignment-AST.shot
rename to packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/5-AST-Alignment-AST.shot
index 5336bc5c7c63..0e290454dc9c 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/5-AST-Alignment-AST.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration identifier-braced AST Alignment - AST 1`] = `
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-without-source AST Alignment - AST 1`] = `
"Snapshot Diff:
- TSESTree
+ Babel
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..fa17826e0432
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-identifier-without-source AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/fixture.ts
new file mode 100644
index 000000000000..cf1bc3a16691
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/fixture.ts
@@ -0,0 +1 @@
+export { 'a a' as b } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..ed3db51ae89d
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,74 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-aliased-to-identifier-with-source TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ attributes: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [27, 32],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 32, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Identifier {
+ type: "Identifier",
+ decorators: [],
+ name: "b",
+ optional: false,
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Literal {
+ type: "Literal",
+ raw: "'a a'",
+ value: "a a",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+
+ range: [9, 19],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 33],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 34],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..3da9372f680b
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-aliased-to-identifier-with-source TSESTree - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'a a'",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "as",
+
+ range: [15, 17],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "b",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [22, 26],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [27, 32],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 32, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [32, 33],
+ loc: {
+ start: { column: 32, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..a4ce3b40a8d3
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/3-Babel-AST.shot
@@ -0,0 +1,72 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-aliased-to-identifier-with-source Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ assertions: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [27, 32],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 32, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Identifier {
+ type: "Identifier",
+ name: "b",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Literal {
+ type: "Literal",
+ raw: "'a a'",
+ value: "a a",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+
+ range: [9, 19],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 33],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 34],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..651a962c4fd5
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-aliased-to-identifier-with-source Babel - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'a a'",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "as",
+
+ range: [15, 17],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "b",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [22, 26],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [27, 32],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 32, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [32, 33],
+ loc: {
+ start: { column: 32, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..bd501e07974f
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,79 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-aliased-to-identifier-with-source AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExportNamedDeclaration {
+ type: 'ExportNamedDeclaration',
+- attributes: Array [],
++ assertions: Array [],
+ declaration: null,
+ exportKind: 'value',
+ source: Literal {
+ type: 'Literal',
+ raw: '\\'mod\\'',
+ value: 'mod',
+
+ range: [27, 32],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 32, line: 1 },
+ },
+ },
+ specifiers: Array [
+ ExportSpecifier {
+ type: 'ExportSpecifier',
+ exported: Identifier {
+ type: 'Identifier',
+- decorators: Array [],
+ name: 'b',
+- optional: false,
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ exportKind: 'value',
+ local: Literal {
+ type: 'Literal',
+ raw: '\\'a a\\'',
+ value: 'a a',
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+
+ range: [9, 19],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 33],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'module',
+
+ range: [0, 34],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..013676484cb0
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-aliased-to-identifier-with-source AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/fixture.ts
new file mode 100644
index 000000000000..5ee1ca6e5a43
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/fixture.ts
@@ -0,0 +1 @@
+export { 'a a', 'b b' } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..99062c83b78f
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,105 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-many-with-source TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ attributes: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [29, 34],
+ loc: {
+ start: { column: 29, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Literal {
+ type: "Literal",
+ raw: "'a a'",
+ value: "a a",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Literal {
+ type: "Literal",
+ raw: "'a a'",
+ value: "a a",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Literal {
+ type: "Literal",
+ raw: "'b b'",
+ value: "b b",
+
+ range: [16, 21],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Literal {
+ type: "Literal",
+ raw: "'b b'",
+ value: "b b",
+
+ range: [16, 21],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+
+ range: [16, 21],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 35],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 35, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 36],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..31ad2ecba3c5
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-many-with-source TSESTree - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'a a'",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'b b'",
+
+ range: [16, 21],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [24, 28],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [29, 34],
+ loc: {
+ start: { column: 29, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [34, 35],
+ loc: {
+ start: { column: 34, line: 1 },
+ end: { column: 35, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..9ff935acade5
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/3-Babel-AST.shot
@@ -0,0 +1,105 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-many-with-source Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ assertions: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [29, 34],
+ loc: {
+ start: { column: 29, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Literal {
+ type: "Literal",
+ raw: "'a a'",
+ value: "a a",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Literal {
+ type: "Literal",
+ raw: "'a a'",
+ value: "a a",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Literal {
+ type: "Literal",
+ raw: "'b b'",
+ value: "b b",
+
+ range: [16, 21],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Literal {
+ type: "Literal",
+ raw: "'b b'",
+ value: "b b",
+
+ range: [16, 21],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+
+ range: [16, 21],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 35],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 35, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 36],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..e6b87399cc54
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-many-with-source Babel - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'a a'",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'b b'",
+
+ range: [16, 21],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [24, 28],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [29, 34],
+ loc: {
+ start: { column: 29, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [34, 35],
+ loc: {
+ start: { column: 34, line: 1 },
+ end: { column: 35, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..23b269cc250f
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,110 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-many-with-source AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExportNamedDeclaration {
+ type: 'ExportNamedDeclaration',
+- attributes: Array [],
++ assertions: Array [],
+ declaration: null,
+ exportKind: 'value',
+ source: Literal {
+ type: 'Literal',
+ raw: '\\'mod\\'',
+ value: 'mod',
+
+ range: [29, 34],
+ loc: {
+ start: { column: 29, line: 1 },
+ end: { column: 34, line: 1 },
+ },
+ },
+ specifiers: Array [
+ ExportSpecifier {
+ type: 'ExportSpecifier',
+ exported: Literal {
+ type: 'Literal',
+ raw: '\\'a a\\'',
+ value: 'a a',
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ exportKind: 'value',
+ local: Literal {
+ type: 'Literal',
+ raw: '\\'a a\\'',
+ value: 'a a',
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ ExportSpecifier {
+ type: 'ExportSpecifier',
+ exported: Literal {
+ type: 'Literal',
+ raw: '\\'b b\\'',
+ value: 'b b',
+
+ range: [16, 21],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ exportKind: 'value',
+ local: Literal {
+ type: 'Literal',
+ raw: '\\'b b\\'',
+ value: 'b b',
+
+ range: [16, 21],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+
+ range: [16, 21],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 35],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 35, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'module',
+
+ range: [0, 36],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..0e7d6a2b84dc
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-many-with-source AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/fixture.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/fixture.ts
new file mode 100644
index 000000000000..96cea3b07692
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/fixture.ts
@@ -0,0 +1 @@
+export { 'a a' } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..3d0653eea62d
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,73 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-with-source TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ attributes: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [22, 27],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Literal {
+ type: "Literal",
+ raw: "'a a'",
+ value: "a a",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Literal {
+ type: "Literal",
+ raw: "'a a'",
+ value: "a a",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 28],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..a6970cc620d9
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,76 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-with-source TSESTree - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'a a'",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [15, 16],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [17, 21],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [22, 27],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..0bd7dd4ea51a
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/3-Babel-AST.shot
@@ -0,0 +1,73 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-with-source Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ assertions: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [22, 27],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Literal {
+ type: "Literal",
+ raw: "'a a'",
+ value: "a a",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Literal {
+ type: "Literal",
+ raw: "'a a'",
+ value: "a a",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 28],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..9e79a0692088
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,76 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-with-source Babel - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'a a'",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [15, 16],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [17, 21],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [22, 27],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [27, 28],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..732466bc7bd4
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,78 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-with-source AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExportNamedDeclaration {
+ type: 'ExportNamedDeclaration',
+- attributes: Array [],
++ assertions: Array [],
+ declaration: null,
+ exportKind: 'value',
+ source: Literal {
+ type: 'Literal',
+ raw: '\\'mod\\'',
+ value: 'mod',
+
+ range: [22, 27],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 27, line: 1 },
+ },
+ },
+ specifiers: Array [
+ ExportSpecifier {
+ type: 'ExportSpecifier',
+ exported: Literal {
+ type: 'Literal',
+ raw: '\\'a a\\'',
+ value: 'a a',
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ exportKind: 'value',
+ local: Literal {
+ type: 'Literal',
+ raw: '\\'a a\\'',
+ value: 'a a',
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 28],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'module',
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..22bb3f9fcbf3
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ExportNamedDeclaration braced-string-literal-with-source AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/6-AST-Alignment-Tokens.shot
deleted file mode 100644
index d3563662f8c1..000000000000
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-braced/snapshots/6-AST-Alignment-Tokens.shot
+++ /dev/null
@@ -1,6 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures declaration ExportNamedDeclaration identifier-braced AST Alignment - Token 1`] = `
-"Snapshot Diff:
-Compared values have no visual difference."
-`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/spec.ts b/packages/ast-spec/src/declaration/ExportNamedDeclaration/spec.ts
index 79c266d9b5fc..1fcb91b033ed 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/spec.ts
+++ b/packages/ast-spec/src/declaration/ExportNamedDeclaration/spec.ts
@@ -1,7 +1,10 @@
import type { AST_NODE_TYPES } from '../../ast-node-types';
import type { BaseNode } from '../../base/BaseNode';
import type { StringLiteral } from '../../expression/literal/StringLiteral/spec';
-import type { ExportSpecifier } from '../../special/ExportSpecifier/spec';
+import type {
+ ExportSpecifier,
+ ExportSpecifierWithIdentifierLocal,
+} from '../../special/ExportSpecifier/spec';
import type { ImportAttribute } from '../../special/ImportAttribute/spec';
import type { NamedExportDeclarations } from '../../unions/ExportDeclaration';
import type { ExportKind } from '../ExportAndImportKind';
@@ -75,6 +78,8 @@ export interface ExportNamedDeclarationWithoutSourceWithMultiple
attributes: ImportAttribute[];
declaration: null;
source: null;
+ // Cannot have literal local without a source
+ specifiers: ExportSpecifierWithIdentifierLocal[];
}
/**
@@ -99,7 +104,7 @@ export interface ExportNamedDeclarationWithoutSourceWithSingle
/**
* This will always be an empty array.
*/
- specifiers: ExportSpecifier[];
+ specifiers: ExportSpecifierWithIdentifierLocal[];
}
/**
@@ -114,6 +119,10 @@ export interface ExportNamedDeclarationWithSource
source: StringLiteral;
}
+export type ExportNamedDeclarationWithoutSource =
+ | ExportNamedDeclarationWithoutSourceWithMultiple
+ | ExportNamedDeclarationWithoutSourceWithSingle;
+
export type ExportNamedDeclaration =
| ExportNamedDeclarationWithoutSourceWithMultiple
| ExportNamedDeclarationWithoutSourceWithSingle
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-and-named-and-namespace/fixture.ts b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-and-named-and-namespace/fixture.ts
new file mode 100644
index 000000000000..54e0da9ee1d4
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-and-named-and-namespace/fixture.ts
@@ -0,0 +1 @@
+import a, * as b, { c } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-and-named-and-namespace/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-and-named-and-namespace/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..4968c665b7f4
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-and-named-and-namespace/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ default-and-named-and-namespace TSESTree - Error 1`] = `
+"TSError
+> 1 | import a, * as b, { c } from 'mod';
+ | ^ 'from' expected.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-and-named-and-namespace/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-and-named-and-namespace/snapshots/2-Babel-Error.shot
new file mode 100644
index 000000000000..c937b0227c30
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-and-named-and-namespace/snapshots/2-Babel-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ default-and-named-and-namespace Babel - Error 1`] = `[SyntaxError: Unexpected token, expected "from" (1:16)]`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-non-identifier/snapshots/1-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-and-named-and-namespace/snapshots/3-Alignment-Error.shot
similarity index 53%
rename from packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-non-identifier/snapshots/1-Babel-Error.shot
rename to packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-and-named-and-namespace/snapshots/3-Alignment-Error.shot
index 438c9cdf7501..40b9a5a2bb0f 100644
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-non-identifier/snapshots/1-Babel-Error.shot
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-and-named-and-namespace/snapshots/3-Alignment-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ImportDeclaration _error_ default-non-identifier Babel - Error 1`] = `[SyntaxError: Unexpected token, expected "{" (1:7)]`;
+exports[`AST Fixtures declaration ImportDeclaration _error_ default-and-named-and-namespace Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-non-identifier/fixture.ts b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-number-literal/fixture.ts
similarity index 100%
rename from packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-non-identifier/fixture.ts
rename to packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-number-literal/fixture.ts
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-non-identifier/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-number-literal/snapshots/1-TSESTree-Error.shot
similarity index 81%
rename from packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-non-identifier/snapshots/1-TSESTree-Error.shot
rename to packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-number-literal/snapshots/1-TSESTree-Error.shot
index 33e9c446a1ac..733e29a135bd 100644
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-non-identifier/snapshots/1-TSESTree-Error.shot
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-number-literal/snapshots/1-TSESTree-Error.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ImportDeclaration _error_ default-non-identifier TSESTree - Error 1`] = `
+exports[`AST Fixtures declaration ImportDeclaration _error_ default-number-literal TSESTree - Error 1`] = `
"TSError
> 1 | import 1 from 'mod';
| ^ Declaration or statement expected.
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-non-identifier/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-number-literal/snapshots/2-Babel-Error.shot
similarity index 68%
rename from packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-non-identifier/snapshots/2-Babel-Error.shot
rename to packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-number-literal/snapshots/2-Babel-Error.shot
index 438c9cdf7501..edf91ca01db1 100644
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-non-identifier/snapshots/2-Babel-Error.shot
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-number-literal/snapshots/2-Babel-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ImportDeclaration _error_ default-non-identifier Babel - Error 1`] = `[SyntaxError: Unexpected token, expected "{" (1:7)]`;
+exports[`AST Fixtures declaration ImportDeclaration _error_ default-number-literal Babel - Error 1`] = `[SyntaxError: Unexpected token, expected "{" (1:7)]`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-non-identifier/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-number-literal/snapshots/3-Alignment-Error.shot
similarity index 64%
rename from packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-non-identifier/snapshots/3-Alignment-Error.shot
rename to packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-number-literal/snapshots/3-Alignment-Error.shot
index 2e0bcbec5a5e..f3810de15bec 100644
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-non-identifier/snapshots/3-Alignment-Error.shot
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-number-literal/snapshots/3-Alignment-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ImportDeclaration _error_ default-non-identifier Error Alignment 1`] = `"Both errored"`;
+exports[`AST Fixtures declaration ImportDeclaration _error_ default-number-literal Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-string-literal/fixture.ts b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-string-literal/fixture.ts
new file mode 100644
index 000000000000..65c0a923c510
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-string-literal/fixture.ts
@@ -0,0 +1 @@
+import 'a a' from 'mod';
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-string-literal/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-string-literal/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..db2f849a6462
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-string-literal/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ default-string-literal TSESTree - Error 1`] = `
+"TSError
+> 1 | import 'a a' from 'mod';
+ | ^ ';' expected.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-string-literal/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-string-literal/snapshots/2-Babel-Error.shot
new file mode 100644
index 000000000000..7f044aaf68a9
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-string-literal/snapshots/2-Babel-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ default-string-literal Babel - Error 1`] = `[SyntaxError: Missing semicolon. (1:12)]`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-non-identifier/snapshots/2-Alignment-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-string-literal/snapshots/3-Alignment-Error.shot
similarity index 64%
rename from packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-non-identifier/snapshots/2-Alignment-Error.shot
rename to packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-string-literal/snapshots/3-Alignment-Error.shot
index 2e0bcbec5a5e..6aaccd724166 100644
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-non-identifier/snapshots/2-Alignment-Error.shot
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/default-string-literal/snapshots/3-Alignment-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ImportDeclaration _error_ default-non-identifier Error Alignment 1`] = `"Both errored"`;
+exports[`AST Fixtures declaration ImportDeclaration _error_ default-string-literal Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-number-literal/fixture.ts b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-number-literal/fixture.ts
new file mode 100644
index 000000000000..e37d9c20f53f
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-number-literal/fixture.ts
@@ -0,0 +1 @@
+import { X as 1 } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-number-literal/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-number-literal/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..58be2d8119f6
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-number-literal/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-identifier-aliased-to-number-literal TSESTree - Error 1`] = `
+"TSError
+> 1 | import { X as 1 } from 'mod';
+ | ^ Identifier expected.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-number-literal/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-number-literal/snapshots/2-Babel-Error.shot
new file mode 100644
index 000000000000..d9a7cd7a0c2e
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-number-literal/snapshots/2-Babel-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-identifier-aliased-to-number-literal Babel - Error 1`] = `[SyntaxError: Unexpected token (1:14)]`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-and-namespace/snapshots/2-Alignment-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-number-literal/snapshots/3-Alignment-Error.shot
similarity index 57%
rename from packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-and-namespace/snapshots/2-Alignment-Error.shot
rename to packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-number-literal/snapshots/3-Alignment-Error.shot
index 89fae3fa27c3..8c894dfa107b 100644
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-and-namespace/snapshots/2-Alignment-Error.shot
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-number-literal/snapshots/3-Alignment-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ImportDeclaration _error_ named-and-namespace Error Alignment 1`] = `"Both errored"`;
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-identifier-aliased-to-number-literal Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-string-literal/fixture.ts b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-string-literal/fixture.ts
new file mode 100644
index 000000000000..6687e6e1bc00
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-string-literal/fixture.ts
@@ -0,0 +1 @@
+import { X as 'a a' } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-string-literal/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-string-literal/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..531618494f56
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-string-literal/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-identifier-aliased-to-string-literal TSESTree - Error 1`] = `
+"TSError
+> 1 | import { X as 'a a' } from 'mod';
+ | ^ Identifier expected.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-string-literal/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-string-literal/snapshots/2-Babel-Error.shot
new file mode 100644
index 000000000000..7656a34c665f
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-string-literal/snapshots/2-Babel-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-identifier-aliased-to-string-literal Babel - Error 1`] = `[SyntaxError: Unexpected token (1:14)]`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-default/snapshots/2-Alignment-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-string-literal/snapshots/3-Alignment-Error.shot
similarity index 57%
rename from packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-default/snapshots/2-Alignment-Error.shot
rename to packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-string-literal/snapshots/3-Alignment-Error.shot
index 6e491db0e63b..a29f2cd12227 100644
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-default/snapshots/2-Alignment-Error.shot
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-identifier-aliased-to-string-literal/snapshots/3-Alignment-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ImportDeclaration _error_ namespace-and-default Error Alignment 1`] = `"Both errored"`;
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-identifier-aliased-to-string-literal Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-identifier/fixture.ts b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-identifier/fixture.ts
new file mode 100644
index 000000000000..099f3ad1726b
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-identifier/fixture.ts
@@ -0,0 +1 @@
+import { 1 as X } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-identifier/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-identifier/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..e1122d1ce71d
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-identifier/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-number-literal-aliased-to-identifier TSESTree - Error 1`] = `
+"TSError
+> 1 | import { 1 as X } from 'mod';
+ | ^ Identifier expected.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-and-namespace/snapshots/1-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-identifier/snapshots/2-Babel-Error.shot
similarity index 51%
rename from packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-and-namespace/snapshots/1-Babel-Error.shot
rename to packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-identifier/snapshots/2-Babel-Error.shot
index 9cf4c4b719a9..58519208645e 100644
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-and-namespace/snapshots/1-Babel-Error.shot
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-identifier/snapshots/2-Babel-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ImportDeclaration _error_ named-and-namespace Babel - Error 1`] = `[SyntaxError: Unexpected token, expected "from" (1:12)]`;
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-number-literal-aliased-to-identifier Babel - Error 1`] = `[SyntaxError: Unexpected token (1:9)]`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-identifier/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-identifier/snapshots/3-Alignment-Error.shot
new file mode 100644
index 000000000000..749860b2f02f
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-identifier/snapshots/3-Alignment-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-number-literal-aliased-to-identifier Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-number-literal/fixture.ts b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-number-literal/fixture.ts
new file mode 100644
index 000000000000..fea36d1c3a0d
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-number-literal/fixture.ts
@@ -0,0 +1 @@
+import { 1 as 1 } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-number-literal/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-number-literal/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..80f9adac9bcb
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-number-literal/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-number-literal-aliased-to-number-literal TSESTree - Error 1`] = `
+"TSError
+> 1 | import { 1 as 1 } from 'mod';
+ | ^ Identifier expected.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-number-literal/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-number-literal/snapshots/2-Babel-Error.shot
new file mode 100644
index 000000000000..0a7c831653fd
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-number-literal/snapshots/2-Babel-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-number-literal-aliased-to-number-literal Babel - Error 1`] = `[SyntaxError: Unexpected token (1:9)]`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-number-literal/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-number-literal/snapshots/3-Alignment-Error.shot
new file mode 100644
index 000000000000..2f287555e305
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-number-literal/snapshots/3-Alignment-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-number-literal-aliased-to-number-literal Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-string-literal/fixture.ts b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-string-literal/fixture.ts
new file mode 100644
index 000000000000..511385a56927
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-string-literal/fixture.ts
@@ -0,0 +1 @@
+import { 1 as 'a a' } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-string-literal/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-string-literal/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..ec1b36db89c2
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-string-literal/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-number-literal-aliased-to-string-literal TSESTree - Error 1`] = `
+"TSError
+> 1 | import { 1 as 'a a' } from 'mod';
+ | ^ Identifier expected.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-string-literal/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-string-literal/snapshots/2-Babel-Error.shot
new file mode 100644
index 000000000000..19f6f28a36de
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-string-literal/snapshots/2-Babel-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-number-literal-aliased-to-string-literal Babel - Error 1`] = `[SyntaxError: Unexpected token (1:9)]`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-string-literal/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-string-literal/snapshots/3-Alignment-Error.shot
new file mode 100644
index 000000000000..7cf9b37ab9fd
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal-aliased-to-string-literal/snapshots/3-Alignment-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-number-literal-aliased-to-string-literal Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-non-identifier/fixture.ts b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal/fixture.ts
similarity index 100%
rename from packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-non-identifier/fixture.ts
rename to packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal/fixture.ts
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-non-identifier/snapshots/1-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal/snapshots/1-Babel-Error.shot
similarity index 100%
rename from packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-non-identifier/snapshots/1-Babel-Error.shot
rename to packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal/snapshots/1-Babel-Error.shot
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-non-identifier/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal/snapshots/1-TSESTree-Error.shot
similarity index 82%
rename from packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-non-identifier/snapshots/1-TSESTree-Error.shot
rename to packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal/snapshots/1-TSESTree-Error.shot
index a4b94678f3e0..08a52f136259 100644
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-non-identifier/snapshots/1-TSESTree-Error.shot
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal/snapshots/1-TSESTree-Error.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ImportDeclaration _error_ named-non-identifier TSESTree - Error 1`] = `
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-number-literal TSESTree - Error 1`] = `
"TSError
> 1 | import { 1 } from 'mod';
| ^ Identifier expected.
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-non-identifier/snapshots/2-Alignment-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal/snapshots/2-Alignment-Error.shot
similarity index 100%
rename from packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-non-identifier/snapshots/2-Alignment-Error.shot
rename to packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal/snapshots/2-Alignment-Error.shot
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-non-identifier/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal/snapshots/2-Babel-Error.shot
similarity index 65%
rename from packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-non-identifier/snapshots/2-Babel-Error.shot
rename to packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal/snapshots/2-Babel-Error.shot
index 970528e3253d..e28da23b2a8f 100644
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-non-identifier/snapshots/2-Babel-Error.shot
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal/snapshots/2-Babel-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ImportDeclaration _error_ named-non-identifier Babel - Error 1`] = `[SyntaxError: Unexpected token (1:9)]`;
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-number-literal Babel - Error 1`] = `[SyntaxError: Unexpected token (1:9)]`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-non-identifier/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal/snapshots/3-Alignment-Error.shot
similarity index 65%
rename from packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-non-identifier/snapshots/3-Alignment-Error.shot
rename to packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal/snapshots/3-Alignment-Error.shot
index fefbeef9c524..d79fe92b612a 100644
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-non-identifier/snapshots/3-Alignment-Error.shot
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-number-literal/snapshots/3-Alignment-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ImportDeclaration _error_ named-non-identifier Error Alignment 1`] = `"Both errored"`;
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-number-literal Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-number-literal/fixture.ts b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-number-literal/fixture.ts
new file mode 100644
index 000000000000..0a3e8d333471
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-number-literal/fixture.ts
@@ -0,0 +1 @@
+import { "😭" as 1 } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-number-literal/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-number-literal/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..96863c644aec
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-number-literal/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-string-literal-aliased-to-number-literal TSESTree - Error 1`] = `
+"TSError
+> 1 | import { "😭" as 1 } from 'mod';
+ | ^ Identifier expected.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-number-literal/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-number-literal/snapshots/2-Babel-Error.shot
new file mode 100644
index 000000000000..59bdc16bbe31
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-number-literal/snapshots/2-Babel-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-string-literal-aliased-to-number-literal Babel - Error 1`] = `[SyntaxError: Unexpected token (1:17)]`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-number-literal/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-number-literal/snapshots/3-Alignment-Error.shot
new file mode 100644
index 000000000000..9fdcd1ad6d2f
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-number-literal/snapshots/3-Alignment-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-string-literal-aliased-to-number-literal Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-string-literal/fixture.ts b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-string-literal/fixture.ts
new file mode 100644
index 000000000000..d2a4b3f84e80
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-string-literal/fixture.ts
@@ -0,0 +1 @@
+import { "😭" as 'a a' } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-string-literal/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-string-literal/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..31ba0b991eb4
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-string-literal/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-string-literal-aliased-to-string-literal TSESTree - Error 1`] = `
+"TSError
+> 1 | import { "😭" as 'a a' } from 'mod';
+ | ^ Identifier expected.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-string-literal/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-string-literal/snapshots/2-Babel-Error.shot
new file mode 100644
index 000000000000..13f04b7d71f3
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-string-literal/snapshots/2-Babel-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-string-literal-aliased-to-string-literal Babel - Error 1`] = `[SyntaxError: Unexpected token (1:17)]`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-string-literal/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-string-literal/snapshots/3-Alignment-Error.shot
new file mode 100644
index 000000000000..bac20b92c0dd
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal-aliased-to-string-literal/snapshots/3-Alignment-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-string-literal-aliased-to-string-literal Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal/fixture.ts b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal/fixture.ts
new file mode 100644
index 000000000000..db0db5b50afe
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal/fixture.ts
@@ -0,0 +1 @@
+import { "😭" } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..cb41ba55e998
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-string-literal TSESTree - Error 1`] = `
+"TSError
+> 1 | import { "😭" } from 'mod';
+ | ^ Identifier expected.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal/snapshots/2-Babel-Error.shot
new file mode 100644
index 000000000000..d3b922788498
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal/snapshots/2-Babel-Error.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-string-literal Babel - Error 1`] = `
+[SyntaxError: A string literal cannot be used as an imported binding.
+- Did you mean \`import { "😭" as foo }\`? (1:9)]
+`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-named/snapshots/2-Alignment-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal/snapshots/3-Alignment-Error.shot
similarity index 65%
rename from packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-named/snapshots/2-Alignment-Error.shot
rename to packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal/snapshots/3-Alignment-Error.shot
index f1e891dbecaf..6980fcce0d80 100644
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-named/snapshots/2-Alignment-Error.shot
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/named-string-literal/snapshots/3-Alignment-Error.shot
@@ -1,3 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ImportDeclaration _error_ namespace-and-named Error Alignment 1`] = `"Both errored"`;
+exports[`AST Fixtures declaration ImportDeclaration _error_ named-string-literal Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-default/snapshots/1-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-default/snapshots/1-Babel-Error.shot
deleted file mode 100644
index 294d069aacc6..000000000000
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-default/snapshots/1-Babel-Error.shot
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures declaration ImportDeclaration _error_ namespace-and-default Babel - Error 1`] = `[SyntaxError: Unexpected token, expected "from" (1:13)]`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-named/snapshots/1-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-named/snapshots/1-Babel-Error.shot
deleted file mode 100644
index 605940a84336..000000000000
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-named/snapshots/1-Babel-Error.shot
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures declaration ImportDeclaration _error_ namespace-and-named Babel - Error 1`] = `[SyntaxError: Unexpected token, expected "from" (1:13)]`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-namespace/snapshots/1-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-namespace/snapshots/1-Babel-Error.shot
deleted file mode 100644
index 8efbfcaf5191..000000000000
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-namespace/snapshots/1-Babel-Error.shot
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures declaration ImportDeclaration _error_ namespace-and-namespace Babel - Error 1`] = `[SyntaxError: Unexpected token, expected "from" (1:13)]`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-namespace/snapshots/2-Alignment-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-namespace/snapshots/2-Alignment-Error.shot
deleted file mode 100644
index e3c8c7a6288d..000000000000
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-and-namespace/snapshots/2-Alignment-Error.shot
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures declaration ImportDeclaration _error_ namespace-and-namespace Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-non-identifier/snapshots/1-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-non-identifier/snapshots/1-Babel-Error.shot
deleted file mode 100644
index a511cc6c94d3..000000000000
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-non-identifier/snapshots/1-Babel-Error.shot
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures declaration ImportDeclaration _error_ namespace-non-identifier Babel - Error 1`] = `[SyntaxError: Unexpected token (1:12)]`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-non-identifier/snapshots/2-Alignment-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-non-identifier/snapshots/2-Alignment-Error.shot
deleted file mode 100644
index f0d97ae32bc8..000000000000
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/namespace-non-identifier/snapshots/2-Alignment-Error.shot
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures declaration ImportDeclaration _error_ namespace-non-identifier Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/non-string-source/snapshots/1-Babel-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/non-string-source/snapshots/1-Babel-Error.shot
deleted file mode 100644
index 49abb8366621..000000000000
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/non-string-source/snapshots/1-Babel-Error.shot
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures declaration ImportDeclaration _error_ non-string-source Babel - Error 1`] = `[SyntaxError: Unexpected token (1:19)]`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/non-string-source/snapshots/2-Alignment-Error.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/non-string-source/snapshots/2-Alignment-Error.shot
deleted file mode 100644
index 0d5964ffc24c..000000000000
--- a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/_error_/non-string-source/snapshots/2-Alignment-Error.shot
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures declaration ImportDeclaration _error_ non-string-source Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/fixture.ts b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/fixture.ts
new file mode 100644
index 000000000000..dd77a2ba052f
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/fixture.ts
@@ -0,0 +1 @@
+import { 'a a' as X } from 'mod';
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..c17bff3bdbb9
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,73 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration named-string-literal-aliased-to-identifier TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ImportDeclaration {
+ type: "ImportDeclaration",
+ attributes: [],
+ importKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [27, 32],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 32, line: 1 },
+ },
+ },
+ specifiers: [
+ ImportSpecifier {
+ type: "ImportSpecifier",
+ imported: Literal {
+ type: "Literal",
+ raw: "'a a'",
+ value: "a a",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ importKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ decorators: [],
+ name: "X",
+ optional: false,
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [9, 19],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 33],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 34],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..707ce3ff9c17
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration named-string-literal-aliased-to-identifier TSESTree - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "import",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'a a'",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "as",
+
+ range: [15, 17],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "X",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [22, 26],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [27, 32],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 32, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [32, 33],
+ loc: {
+ start: { column: 32, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..c8b8eaf484f7
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/3-Babel-AST.shot
@@ -0,0 +1,71 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration named-string-literal-aliased-to-identifier Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ImportDeclaration {
+ type: "ImportDeclaration",
+ assertions: [],
+ importKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [27, 32],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 32, line: 1 },
+ },
+ },
+ specifiers: [
+ ImportSpecifier {
+ type: "ImportSpecifier",
+ imported: Literal {
+ type: "Literal",
+ raw: "'a a'",
+ value: "a a",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ importKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ name: "X",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [9, 19],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 33],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 34],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..49688d3a6cb3
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration named-string-literal-aliased-to-identifier Babel - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "import",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'a a'",
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "as",
+
+ range: [15, 17],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "X",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [20, 21],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [22, 26],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 26, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [27, 32],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 32, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [32, 33],
+ loc: {
+ start: { column: 32, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..4e07e47433b7
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,78 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration named-string-literal-aliased-to-identifier AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ImportDeclaration {
+ type: 'ImportDeclaration',
+- attributes: Array [],
++ assertions: Array [],
+ importKind: 'value',
+ source: Literal {
+ type: 'Literal',
+ raw: '\\'mod\\'',
+ value: 'mod',
+
+ range: [27, 32],
+ loc: {
+ start: { column: 27, line: 1 },
+ end: { column: 32, line: 1 },
+ },
+ },
+ specifiers: Array [
+ ImportSpecifier {
+ type: 'ImportSpecifier',
+ imported: Literal {
+ type: 'Literal',
+ raw: '\\'a a\\'',
+ value: 'a a',
+
+ range: [9, 14],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ importKind: 'value',
+ local: Identifier {
+ type: 'Identifier',
+- decorators: Array [],
+ name: 'X',
+- optional: false,
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+
+ range: [9, 19],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 33],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 33, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'module',
+
+ range: [0, 34],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..a3c5da04f73a
--- /dev/null
+++ b/packages/ast-spec/src/declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures declaration ImportDeclaration named-string-literal-aliased-to-identifier AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/fixture.ts b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/fixture.ts
index 9e48b70be733..58f984a20bd4 100644
--- a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/fixture.ts
+++ b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/fixture.ts
@@ -1 +1,2 @@
-await using x = 1, y = 2;
+await using x = 1,
+ y = 2;
diff --git a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/1-TSESTree-AST.shot
index cc177f81242f..d54fd36f4f5e 100644
--- a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/1-TSESTree-AST.shot
@@ -49,10 +49,10 @@ Program {
name: "y",
optional: false,
- range: [19, 20],
+ range: [21, 22],
loc: {
- start: { column: 19, line: 1 },
- end: { column: 20, line: 1 },
+ start: { column: 2, line: 2 },
+ end: { column: 3, line: 2 },
},
},
init: Literal {
@@ -60,36 +60,36 @@ Program {
raw: "2",
value: 2,
- range: [23, 24],
+ range: [25, 26],
loc: {
- start: { column: 23, line: 1 },
- end: { column: 24, line: 1 },
+ start: { column: 6, line: 2 },
+ end: { column: 7, line: 2 },
},
},
- range: [19, 24],
+ range: [21, 26],
loc: {
- start: { column: 19, line: 1 },
- end: { column: 24, line: 1 },
+ start: { column: 2, line: 2 },
+ end: { column: 7, line: 2 },
},
},
],
declare: false,
kind: "await using",
- range: [0, 25],
+ range: [0, 27],
loc: {
start: { column: 0, line: 1 },
- end: { column: 25, line: 1 },
+ end: { column: 8, line: 2 },
},
},
],
sourceType: "script",
- range: [0, 26],
+ range: [0, 28],
loc: {
start: { column: 0, line: 1 },
- end: { column: 0, line: 2 },
+ end: { column: 0, line: 3 },
},
}
`;
diff --git a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/2-TSESTree-Tokens.shot
index c123deb06892..7411e75da579 100644
--- a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/2-TSESTree-Tokens.shot
+++ b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/2-TSESTree-Tokens.shot
@@ -66,40 +66,40 @@ exports[`AST Fixtures declaration VariableDeclaration await-using-multiple-decla
type: "Identifier",
value: "y",
- range: [19, 20],
+ range: [21, 22],
loc: {
- start: { column: 19, line: 1 },
- end: { column: 20, line: 1 },
+ start: { column: 2, line: 2 },
+ end: { column: 3, line: 2 },
},
},
Punctuator {
type: "Punctuator",
value: "=",
- range: [21, 22],
+ range: [23, 24],
loc: {
- start: { column: 21, line: 1 },
- end: { column: 22, line: 1 },
+ start: { column: 4, line: 2 },
+ end: { column: 5, line: 2 },
},
},
Numeric {
type: "Numeric",
value: "2",
- range: [23, 24],
+ range: [25, 26],
loc: {
- start: { column: 23, line: 1 },
- end: { column: 24, line: 1 },
+ start: { column: 6, line: 2 },
+ end: { column: 7, line: 2 },
},
},
Punctuator {
type: "Punctuator",
value: ";",
- range: [24, 25],
+ range: [26, 27],
loc: {
- start: { column: 24, line: 1 },
- end: { column: 25, line: 1 },
+ start: { column: 7, line: 2 },
+ end: { column: 8, line: 2 },
},
},
]
diff --git a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/3-Babel-AST.shot
index 56ed5f448201..19023e03c7ed 100644
--- a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/3-Babel-AST.shot
+++ b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/3-Babel-AST.shot
@@ -43,10 +43,10 @@ Program {
type: "Identifier",
name: "y",
- range: [19, 20],
+ range: [21, 22],
loc: {
- start: { column: 19, line: 1 },
- end: { column: 20, line: 1 },
+ start: { column: 2, line: 2 },
+ end: { column: 3, line: 2 },
},
},
init: Literal {
@@ -54,35 +54,35 @@ Program {
raw: "2",
value: 2,
- range: [23, 24],
+ range: [25, 26],
loc: {
- start: { column: 23, line: 1 },
- end: { column: 24, line: 1 },
+ start: { column: 6, line: 2 },
+ end: { column: 7, line: 2 },
},
},
- range: [19, 24],
+ range: [21, 26],
loc: {
- start: { column: 19, line: 1 },
- end: { column: 24, line: 1 },
+ start: { column: 2, line: 2 },
+ end: { column: 7, line: 2 },
},
},
],
kind: "await using",
- range: [0, 25],
+ range: [0, 27],
loc: {
start: { column: 0, line: 1 },
- end: { column: 25, line: 1 },
+ end: { column: 8, line: 2 },
},
},
],
sourceType: "script",
- range: [0, 26],
+ range: [0, 28],
loc: {
start: { column: 0, line: 1 },
- end: { column: 0, line: 2 },
+ end: { column: 0, line: 3 },
},
}
`;
diff --git a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/4-Babel-Tokens.shot
index a4259e47cb7e..ff50696ccc37 100644
--- a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/4-Babel-Tokens.shot
+++ b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/4-Babel-Tokens.shot
@@ -66,40 +66,40 @@ exports[`AST Fixtures declaration VariableDeclaration await-using-multiple-decla
type: "Identifier",
value: "y",
- range: [19, 20],
+ range: [21, 22],
loc: {
- start: { column: 19, line: 1 },
- end: { column: 20, line: 1 },
+ start: { column: 2, line: 2 },
+ end: { column: 3, line: 2 },
},
},
Punctuator {
type: "Punctuator",
value: "=",
- range: [21, 22],
+ range: [23, 24],
loc: {
- start: { column: 21, line: 1 },
- end: { column: 22, line: 1 },
+ start: { column: 4, line: 2 },
+ end: { column: 5, line: 2 },
},
},
Numeric {
type: "Numeric",
value: "2",
- range: [23, 24],
+ range: [25, 26],
loc: {
- start: { column: 23, line: 1 },
- end: { column: 24, line: 1 },
+ start: { column: 6, line: 2 },
+ end: { column: 7, line: 2 },
},
},
Punctuator {
type: "Punctuator",
value: ";",
- range: [24, 25],
+ range: [26, 27],
loc: {
- start: { column: 24, line: 1 },
- end: { column: 25, line: 1 },
+ start: { column: 7, line: 2 },
+ end: { column: 8, line: 2 },
},
},
]
diff --git a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/5-AST-Alignment-AST.shot
index 4495e1e3efaf..5731e016531e 100644
--- a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/await-using-multiple-declarations/snapshots/5-AST-Alignment-AST.shot
@@ -53,10 +53,10 @@ exports[`AST Fixtures declaration VariableDeclaration await-using-multiple-decla
name: 'y',
- optional: false,
- range: [19, 20],
+ range: [21, 22],
loc: {
- start: { column: 19, line: 1 },
- end: { column: 20, line: 1 },
+ start: { column: 2, line: 2 },
+ end: { column: 3, line: 2 },
},
},
init: Literal {
@@ -64,36 +64,36 @@ exports[`AST Fixtures declaration VariableDeclaration await-using-multiple-decla
raw: '2',
value: 2,
- range: [23, 24],
+ range: [25, 26],
loc: {
- start: { column: 23, line: 1 },
- end: { column: 24, line: 1 },
+ start: { column: 6, line: 2 },
+ end: { column: 7, line: 2 },
},
},
- range: [19, 24],
+ range: [21, 26],
loc: {
- start: { column: 19, line: 1 },
- end: { column: 24, line: 1 },
+ start: { column: 2, line: 2 },
+ end: { column: 7, line: 2 },
},
},
],
- declare: false,
kind: 'await using',
- range: [0, 25],
+ range: [0, 27],
loc: {
start: { column: 0, line: 1 },
- end: { column: 25, line: 1 },
+ end: { column: 8, line: 2 },
},
},
],
sourceType: 'script',
- range: [0, 26],
+ range: [0, 28],
loc: {
start: { column: 0, line: 1 },
- end: { column: 0, line: 2 },
+ end: { column: 0, line: 3 },
},
}"
`;
diff --git a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/fixture.ts b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/fixture.ts
index dcce1ee2a42a..e1c8d6e78ad2 100644
--- a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/fixture.ts
+++ b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/fixture.ts
@@ -1 +1,2 @@
-using x = 1, y = 2;
+using x = 1,
+ y = 2;
diff --git a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/1-TSESTree-AST.shot
index 0e6057adde39..085698cc3718 100644
--- a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/1-TSESTree-AST.shot
@@ -49,10 +49,10 @@ Program {
name: "y",
optional: false,
- range: [13, 14],
+ range: [15, 16],
loc: {
- start: { column: 13, line: 1 },
- end: { column: 14, line: 1 },
+ start: { column: 2, line: 2 },
+ end: { column: 3, line: 2 },
},
},
init: Literal {
@@ -60,36 +60,36 @@ Program {
raw: "2",
value: 2,
- range: [17, 18],
+ range: [19, 20],
loc: {
- start: { column: 17, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 6, line: 2 },
+ end: { column: 7, line: 2 },
},
},
- range: [13, 18],
+ range: [15, 20],
loc: {
- start: { column: 13, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 2, line: 2 },
+ end: { column: 7, line: 2 },
},
},
],
declare: false,
kind: "using",
- range: [0, 19],
+ range: [0, 21],
loc: {
start: { column: 0, line: 1 },
- end: { column: 19, line: 1 },
+ end: { column: 8, line: 2 },
},
},
],
sourceType: "script",
- range: [0, 20],
+ range: [0, 22],
loc: {
start: { column: 0, line: 1 },
- end: { column: 0, line: 2 },
+ end: { column: 0, line: 3 },
},
}
`;
diff --git a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/2-TSESTree-Tokens.shot
index 5199e67367c1..b07cd4d7ef5f 100644
--- a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/2-TSESTree-Tokens.shot
+++ b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/2-TSESTree-Tokens.shot
@@ -56,40 +56,40 @@ exports[`AST Fixtures declaration VariableDeclaration using-multiple-declaration
type: "Identifier",
value: "y",
- range: [13, 14],
+ range: [15, 16],
loc: {
- start: { column: 13, line: 1 },
- end: { column: 14, line: 1 },
+ start: { column: 2, line: 2 },
+ end: { column: 3, line: 2 },
},
},
Punctuator {
type: "Punctuator",
value: "=",
- range: [15, 16],
+ range: [17, 18],
loc: {
- start: { column: 15, line: 1 },
- end: { column: 16, line: 1 },
+ start: { column: 4, line: 2 },
+ end: { column: 5, line: 2 },
},
},
Numeric {
type: "Numeric",
value: "2",
- range: [17, 18],
+ range: [19, 20],
loc: {
- start: { column: 17, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 6, line: 2 },
+ end: { column: 7, line: 2 },
},
},
Punctuator {
type: "Punctuator",
value: ";",
- range: [18, 19],
+ range: [20, 21],
loc: {
- start: { column: 18, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 7, line: 2 },
+ end: { column: 8, line: 2 },
},
},
]
diff --git a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/3-Babel-AST.shot
index 291406b764a7..e42780ca03e4 100644
--- a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/3-Babel-AST.shot
+++ b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/3-Babel-AST.shot
@@ -43,10 +43,10 @@ Program {
type: "Identifier",
name: "y",
- range: [13, 14],
+ range: [15, 16],
loc: {
- start: { column: 13, line: 1 },
- end: { column: 14, line: 1 },
+ start: { column: 2, line: 2 },
+ end: { column: 3, line: 2 },
},
},
init: Literal {
@@ -54,35 +54,35 @@ Program {
raw: "2",
value: 2,
- range: [17, 18],
+ range: [19, 20],
loc: {
- start: { column: 17, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 6, line: 2 },
+ end: { column: 7, line: 2 },
},
},
- range: [13, 18],
+ range: [15, 20],
loc: {
- start: { column: 13, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 2, line: 2 },
+ end: { column: 7, line: 2 },
},
},
],
kind: "using",
- range: [0, 19],
+ range: [0, 21],
loc: {
start: { column: 0, line: 1 },
- end: { column: 19, line: 1 },
+ end: { column: 8, line: 2 },
},
},
],
sourceType: "script",
- range: [0, 20],
+ range: [0, 22],
loc: {
start: { column: 0, line: 1 },
- end: { column: 0, line: 2 },
+ end: { column: 0, line: 3 },
},
}
`;
diff --git a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/4-Babel-Tokens.shot
index 1adcd3e551cd..500fb5e0772a 100644
--- a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/4-Babel-Tokens.shot
+++ b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/4-Babel-Tokens.shot
@@ -56,40 +56,40 @@ exports[`AST Fixtures declaration VariableDeclaration using-multiple-declaration
type: "Identifier",
value: "y",
- range: [13, 14],
+ range: [15, 16],
loc: {
- start: { column: 13, line: 1 },
- end: { column: 14, line: 1 },
+ start: { column: 2, line: 2 },
+ end: { column: 3, line: 2 },
},
},
Punctuator {
type: "Punctuator",
value: "=",
- range: [15, 16],
+ range: [17, 18],
loc: {
- start: { column: 15, line: 1 },
- end: { column: 16, line: 1 },
+ start: { column: 4, line: 2 },
+ end: { column: 5, line: 2 },
},
},
Numeric {
type: "Numeric",
value: "2",
- range: [17, 18],
+ range: [19, 20],
loc: {
- start: { column: 17, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 6, line: 2 },
+ end: { column: 7, line: 2 },
},
},
Punctuator {
type: "Punctuator",
value: ";",
- range: [18, 19],
+ range: [20, 21],
loc: {
- start: { column: 18, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 7, line: 2 },
+ end: { column: 8, line: 2 },
},
},
]
diff --git a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/5-AST-Alignment-AST.shot
index 5895a5a4d686..95f446ee6ff6 100644
--- a/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/declaration/VariableDeclaration/fixtures/using-multiple-declarations/snapshots/5-AST-Alignment-AST.shot
@@ -53,10 +53,10 @@ exports[`AST Fixtures declaration VariableDeclaration using-multiple-declaration
name: 'y',
- optional: false,
- range: [13, 14],
+ range: [15, 16],
loc: {
- start: { column: 13, line: 1 },
- end: { column: 14, line: 1 },
+ start: { column: 2, line: 2 },
+ end: { column: 3, line: 2 },
},
},
init: Literal {
@@ -64,36 +64,36 @@ exports[`AST Fixtures declaration VariableDeclaration using-multiple-declaration
raw: '2',
value: 2,
- range: [17, 18],
+ range: [19, 20],
loc: {
- start: { column: 17, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 6, line: 2 },
+ end: { column: 7, line: 2 },
},
},
- range: [13, 18],
+ range: [15, 20],
loc: {
- start: { column: 13, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 2, line: 2 },
+ end: { column: 7, line: 2 },
},
},
],
- declare: false,
kind: 'using',
- range: [0, 19],
+ range: [0, 21],
loc: {
start: { column: 0, line: 1 },
- end: { column: 19, line: 1 },
+ end: { column: 8, line: 2 },
},
},
],
sourceType: 'script',
- range: [0, 20],
+ range: [0, 22],
loc: {
start: { column: 0, line: 1 },
- end: { column: 0, line: 2 },
+ end: { column: 0, line: 3 },
},
}"
`;
diff --git a/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/fixture.tsx b/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/fixture.tsx
index 04117403f023..2e5c444e3f6c 100644
--- a/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/fixture.tsx
+++ b/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/fixture.tsx
@@ -1,10 +1,10 @@
const x = ;
-const y = ;
+const y = ;
interface NamespacePropComponentProps {
- "a:b": string;
+ 'a:b': string;
}
function NamespacePropComponent(props: NamespacePropComponentProps) {
- return
{props["a:b"]}
;
+ return {props['a:b']}
;
}
diff --git a/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/1-TSESTree-AST.shot
index 71bbf93d4942..100fbb780b5a 100644
--- a/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/1-TSESTree-AST.shot
@@ -154,10 +154,10 @@ Program {
type: "JSXIdentifier",
name: "b",
- range: [96, 97],
+ range: [94, 95],
loc: {
- start: { column: 38, line: 2 },
- end: { column: 39, line: 2 },
+ start: { column: 36, line: 2 },
+ end: { column: 37, line: 2 },
},
},
namespace: JSXIdentifier {
@@ -171,10 +171,10 @@ Program {
},
},
- range: [92, 97],
+ range: [92, 95],
loc: {
start: { column: 34, line: 2 },
- end: { column: 39, line: 2 },
+ end: { column: 37, line: 2 },
},
},
value: Literal {
@@ -182,17 +182,17 @@ Program {
raw: ""loose spacing"",
value: "loose spacing",
- range: [98, 113],
+ range: [96, 111],
loc: {
- start: { column: 40, line: 2 },
- end: { column: 55, line: 2 },
+ start: { column: 38, line: 2 },
+ end: { column: 53, line: 2 },
},
},
- range: [92, 113],
+ range: [92, 111],
loc: {
start: { column: 34, line: 2 },
- end: { column: 55, line: 2 },
+ end: { column: 53, line: 2 },
},
},
],
@@ -208,34 +208,34 @@ Program {
},
selfClosing: true,
- range: [68, 116],
+ range: [68, 114],
loc: {
start: { column: 10, line: 2 },
- end: { column: 58, line: 2 },
+ end: { column: 56, line: 2 },
},
},
- range: [68, 116],
+ range: [68, 114],
loc: {
start: { column: 10, line: 2 },
- end: { column: 58, line: 2 },
+ end: { column: 56, line: 2 },
},
},
- range: [64, 116],
+ range: [64, 114],
loc: {
start: { column: 6, line: 2 },
- end: { column: 58, line: 2 },
+ end: { column: 56, line: 2 },
},
},
],
declare: false,
kind: "const",
- range: [58, 117],
+ range: [58, 115],
loc: {
start: { column: 0, line: 2 },
- end: { column: 59, line: 2 },
+ end: { column: 57, line: 2 },
},
},
TSInterfaceDeclaration {
@@ -248,13 +248,13 @@ Program {
computed: false,
key: Literal {
type: "Literal",
- raw: ""a:b"",
+ raw: "'a:b'",
value: "a:b",
- range: [163, 168],
+ range: [159, 164],
loc: {
- start: { column: 4, line: 5 },
- end: { column: 9, line: 5 },
+ start: { column: 2, line: 5 },
+ end: { column: 7, line: 5 },
},
},
optional: false,
@@ -265,29 +265,29 @@ Program {
typeAnnotation: TSStringKeyword {
type: "TSStringKeyword",
- range: [170, 176],
+ range: [166, 172],
loc: {
- start: { column: 11, line: 5 },
- end: { column: 17, line: 5 },
+ start: { column: 9, line: 5 },
+ end: { column: 15, line: 5 },
},
},
- range: [168, 176],
+ range: [164, 172],
loc: {
- start: { column: 9, line: 5 },
- end: { column: 17, line: 5 },
+ start: { column: 7, line: 5 },
+ end: { column: 15, line: 5 },
},
},
- range: [163, 177],
+ range: [159, 173],
loc: {
- start: { column: 4, line: 5 },
- end: { column: 18, line: 5 },
+ start: { column: 2, line: 5 },
+ end: { column: 16, line: 5 },
},
},
],
- range: [157, 179],
+ range: [155, 175],
loc: {
start: { column: 38, line: 4 },
end: { column: 1, line: 6 },
@@ -301,14 +301,14 @@ Program {
name: "NamespacePropComponentProps",
optional: false,
- range: [129, 156],
+ range: [127, 154],
loc: {
start: { column: 10, line: 4 },
end: { column: 37, line: 4 },
},
},
- range: [119, 179],
+ range: [117, 175],
loc: {
start: { column: 0, line: 4 },
end: { column: 1, line: 6 },
@@ -336,36 +336,36 @@ Program {
name: "props",
optional: false,
- range: [268, 273],
+ range: [262, 267],
loc: {
- start: { column: 17, line: 9 },
- end: { column: 22, line: 9 },
+ start: { column: 15, line: 9 },
+ end: { column: 20, line: 9 },
},
},
optional: false,
property: Literal {
type: "Literal",
- raw: ""a:b"",
+ raw: "'a:b'",
value: "a:b",
- range: [274, 279],
+ range: [268, 273],
loc: {
- start: { column: 23, line: 9 },
- end: { column: 28, line: 9 },
+ start: { column: 21, line: 9 },
+ end: { column: 26, line: 9 },
},
},
- range: [268, 280],
+ range: [262, 274],
loc: {
- start: { column: 17, line: 9 },
- end: { column: 29, line: 9 },
+ start: { column: 15, line: 9 },
+ end: { column: 27, line: 9 },
},
},
- range: [267, 281],
+ range: [261, 275],
loc: {
- start: { column: 16, line: 9 },
- end: { column: 30, line: 9 },
+ start: { column: 14, line: 9 },
+ end: { column: 28, line: 9 },
},
},
],
@@ -375,17 +375,17 @@ Program {
type: "JSXIdentifier",
name: "div",
- range: [283, 286],
+ range: [277, 280],
loc: {
- start: { column: 32, line: 9 },
- end: { column: 35, line: 9 },
+ start: { column: 30, line: 9 },
+ end: { column: 33, line: 9 },
},
},
- range: [281, 287],
+ range: [275, 281],
loc: {
- start: { column: 30, line: 9 },
- end: { column: 36, line: 9 },
+ start: { column: 28, line: 9 },
+ end: { column: 34, line: 9 },
},
},
openingElement: JSXOpeningElement {
@@ -395,37 +395,37 @@ Program {
type: "JSXIdentifier",
name: "div",
- range: [263, 266],
+ range: [257, 260],
loc: {
- start: { column: 12, line: 9 },
- end: { column: 15, line: 9 },
+ start: { column: 10, line: 9 },
+ end: { column: 13, line: 9 },
},
},
selfClosing: false,
- range: [262, 267],
+ range: [256, 261],
loc: {
- start: { column: 11, line: 9 },
- end: { column: 16, line: 9 },
+ start: { column: 9, line: 9 },
+ end: { column: 14, line: 9 },
},
},
- range: [262, 287],
+ range: [256, 281],
loc: {
- start: { column: 11, line: 9 },
- end: { column: 36, line: 9 },
+ start: { column: 9, line: 9 },
+ end: { column: 34, line: 9 },
},
},
- range: [255, 288],
+ range: [249, 282],
loc: {
- start: { column: 4, line: 9 },
- end: { column: 37, line: 9 },
+ start: { column: 2, line: 9 },
+ end: { column: 35, line: 9 },
},
},
],
- range: [249, 290],
+ range: [245, 284],
loc: {
start: { column: 68, line: 8 },
end: { column: 1, line: 10 },
@@ -440,7 +440,7 @@ Program {
name: "NamespacePropComponent",
optional: false,
- range: [190, 212],
+ range: [186, 208],
loc: {
start: { column: 9, line: 8 },
end: { column: 31, line: 8 },
@@ -462,28 +462,28 @@ Program {
name: "NamespacePropComponentProps",
optional: false,
- range: [220, 247],
+ range: [216, 243],
loc: {
start: { column: 39, line: 8 },
end: { column: 66, line: 8 },
},
},
- range: [220, 247],
+ range: [216, 243],
loc: {
start: { column: 39, line: 8 },
end: { column: 66, line: 8 },
},
},
- range: [218, 247],
+ range: [214, 243],
loc: {
start: { column: 37, line: 8 },
end: { column: 66, line: 8 },
},
},
- range: [213, 247],
+ range: [209, 243],
loc: {
start: { column: 32, line: 8 },
end: { column: 66, line: 8 },
@@ -491,7 +491,7 @@ Program {
},
],
- range: [181, 290],
+ range: [177, 284],
loc: {
start: { column: 0, line: 8 },
end: { column: 1, line: 10 },
@@ -500,7 +500,7 @@ Program {
],
sourceType: "script",
- range: [0, 291],
+ range: [0, 285],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 11 },
diff --git a/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/2-TSESTree-Tokens.shot
index 9352a620aac9..5a14d5aafb4a 100644
--- a/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/2-TSESTree-Tokens.shot
+++ b/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/2-TSESTree-Tokens.shot
@@ -196,77 +196,77 @@ exports[`AST Fixtures jsx JSXNamespacedName component TSESTree - Tokens 1`] = `
type: "Punctuator",
value: ":",
- range: [94, 95],
+ range: [93, 94],
loc: {
- start: { column: 36, line: 2 },
- end: { column: 37, line: 2 },
+ start: { column: 35, line: 2 },
+ end: { column: 36, line: 2 },
},
},
Identifier {
type: "Identifier",
value: "b",
- range: [96, 97],
+ range: [94, 95],
loc: {
- start: { column: 38, line: 2 },
- end: { column: 39, line: 2 },
+ start: { column: 36, line: 2 },
+ end: { column: 37, line: 2 },
},
},
Punctuator {
type: "Punctuator",
value: "=",
- range: [97, 98],
+ range: [95, 96],
loc: {
- start: { column: 39, line: 2 },
- end: { column: 40, line: 2 },
+ start: { column: 37, line: 2 },
+ end: { column: 38, line: 2 },
},
},
JSXText {
type: "JSXText",
value: ""loose spacing"",
- range: [98, 113],
+ range: [96, 111],
loc: {
- start: { column: 40, line: 2 },
- end: { column: 55, line: 2 },
+ start: { column: 38, line: 2 },
+ end: { column: 53, line: 2 },
},
},
Punctuator {
type: "Punctuator",
value: "/",
- range: [114, 115],
+ range: [112, 113],
loc: {
- start: { column: 56, line: 2 },
- end: { column: 57, line: 2 },
+ start: { column: 54, line: 2 },
+ end: { column: 55, line: 2 },
},
},
Punctuator {
type: "Punctuator",
value: ">",
- range: [115, 116],
+ range: [113, 114],
loc: {
- start: { column: 57, line: 2 },
- end: { column: 58, line: 2 },
+ start: { column: 55, line: 2 },
+ end: { column: 56, line: 2 },
},
},
Punctuator {
type: "Punctuator",
value: ";",
- range: [116, 117],
+ range: [114, 115],
loc: {
- start: { column: 58, line: 2 },
- end: { column: 59, line: 2 },
+ start: { column: 56, line: 2 },
+ end: { column: 57, line: 2 },
},
},
Keyword {
type: "Keyword",
value: "interface",
- range: [119, 128],
+ range: [117, 126],
loc: {
start: { column: 0, line: 4 },
end: { column: 9, line: 4 },
@@ -276,7 +276,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component TSESTree - Tokens 1`] = `
type: "Identifier",
value: "NamespacePropComponentProps",
- range: [129, 156],
+ range: [127, 154],
loc: {
start: { column: 10, line: 4 },
end: { column: 37, line: 4 },
@@ -286,7 +286,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component TSESTree - Tokens 1`] = `
type: "Punctuator",
value: "{",
- range: [157, 158],
+ range: [155, 156],
loc: {
start: { column: 38, line: 4 },
end: { column: 39, line: 4 },
@@ -294,49 +294,49 @@ exports[`AST Fixtures jsx JSXNamespacedName component TSESTree - Tokens 1`] = `
},
String {
type: "String",
- value: ""a:b"",
+ value: "'a:b'",
- range: [163, 168],
+ range: [159, 164],
loc: {
- start: { column: 4, line: 5 },
- end: { column: 9, line: 5 },
+ start: { column: 2, line: 5 },
+ end: { column: 7, line: 5 },
},
},
Punctuator {
type: "Punctuator",
value: ":",
- range: [168, 169],
+ range: [164, 165],
loc: {
- start: { column: 9, line: 5 },
- end: { column: 10, line: 5 },
+ start: { column: 7, line: 5 },
+ end: { column: 8, line: 5 },
},
},
Identifier {
type: "Identifier",
value: "string",
- range: [170, 176],
+ range: [166, 172],
loc: {
- start: { column: 11, line: 5 },
- end: { column: 17, line: 5 },
+ start: { column: 9, line: 5 },
+ end: { column: 15, line: 5 },
},
},
Punctuator {
type: "Punctuator",
value: ";",
- range: [176, 177],
+ range: [172, 173],
loc: {
- start: { column: 17, line: 5 },
- end: { column: 18, line: 5 },
+ start: { column: 15, line: 5 },
+ end: { column: 16, line: 5 },
},
},
Punctuator {
type: "Punctuator",
value: "}",
- range: [178, 179],
+ range: [174, 175],
loc: {
start: { column: 0, line: 6 },
end: { column: 1, line: 6 },
@@ -346,7 +346,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component TSESTree - Tokens 1`] = `
type: "Keyword",
value: "function",
- range: [181, 189],
+ range: [177, 185],
loc: {
start: { column: 0, line: 8 },
end: { column: 8, line: 8 },
@@ -356,7 +356,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component TSESTree - Tokens 1`] = `
type: "Identifier",
value: "NamespacePropComponent",
- range: [190, 212],
+ range: [186, 208],
loc: {
start: { column: 9, line: 8 },
end: { column: 31, line: 8 },
@@ -366,7 +366,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component TSESTree - Tokens 1`] = `
type: "Punctuator",
value: "(",
- range: [212, 213],
+ range: [208, 209],
loc: {
start: { column: 31, line: 8 },
end: { column: 32, line: 8 },
@@ -376,7 +376,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component TSESTree - Tokens 1`] = `
type: "Identifier",
value: "props",
- range: [213, 218],
+ range: [209, 214],
loc: {
start: { column: 32, line: 8 },
end: { column: 37, line: 8 },
@@ -386,7 +386,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component TSESTree - Tokens 1`] = `
type: "Punctuator",
value: ":",
- range: [218, 219],
+ range: [214, 215],
loc: {
start: { column: 37, line: 8 },
end: { column: 38, line: 8 },
@@ -396,7 +396,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component TSESTree - Tokens 1`] = `
type: "Identifier",
value: "NamespacePropComponentProps",
- range: [220, 247],
+ range: [216, 243],
loc: {
start: { column: 39, line: 8 },
end: { column: 66, line: 8 },
@@ -406,7 +406,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component TSESTree - Tokens 1`] = `
type: "Punctuator",
value: ")",
- range: [247, 248],
+ range: [243, 244],
loc: {
start: { column: 66, line: 8 },
end: { column: 67, line: 8 },
@@ -416,7 +416,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component TSESTree - Tokens 1`] = `
type: "Punctuator",
value: "{",
- range: [249, 250],
+ range: [245, 246],
loc: {
start: { column: 68, line: 8 },
end: { column: 69, line: 8 },
@@ -426,157 +426,157 @@ exports[`AST Fixtures jsx JSXNamespacedName component TSESTree - Tokens 1`] = `
type: "Keyword",
value: "return",
- range: [255, 261],
+ range: [249, 255],
loc: {
- start: { column: 4, line: 9 },
- end: { column: 10, line: 9 },
+ start: { column: 2, line: 9 },
+ end: { column: 8, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: "<",
- range: [262, 263],
+ range: [256, 257],
loc: {
- start: { column: 11, line: 9 },
- end: { column: 12, line: 9 },
+ start: { column: 9, line: 9 },
+ end: { column: 10, line: 9 },
},
},
JSXIdentifier {
type: "JSXIdentifier",
value: "div",
- range: [263, 266],
+ range: [257, 260],
loc: {
- start: { column: 12, line: 9 },
- end: { column: 15, line: 9 },
+ start: { column: 10, line: 9 },
+ end: { column: 13, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: ">",
- range: [266, 267],
+ range: [260, 261],
loc: {
- start: { column: 15, line: 9 },
- end: { column: 16, line: 9 },
+ start: { column: 13, line: 9 },
+ end: { column: 14, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: "{",
- range: [267, 268],
+ range: [261, 262],
loc: {
- start: { column: 16, line: 9 },
- end: { column: 17, line: 9 },
+ start: { column: 14, line: 9 },
+ end: { column: 15, line: 9 },
},
},
Identifier {
type: "Identifier",
value: "props",
- range: [268, 273],
+ range: [262, 267],
loc: {
- start: { column: 17, line: 9 },
- end: { column: 22, line: 9 },
+ start: { column: 15, line: 9 },
+ end: { column: 20, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: "[",
- range: [273, 274],
+ range: [267, 268],
loc: {
- start: { column: 22, line: 9 },
- end: { column: 23, line: 9 },
+ start: { column: 20, line: 9 },
+ end: { column: 21, line: 9 },
},
},
String {
type: "String",
- value: ""a:b"",
+ value: "'a:b'",
- range: [274, 279],
+ range: [268, 273],
loc: {
- start: { column: 23, line: 9 },
- end: { column: 28, line: 9 },
+ start: { column: 21, line: 9 },
+ end: { column: 26, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: "]",
- range: [279, 280],
+ range: [273, 274],
loc: {
- start: { column: 28, line: 9 },
- end: { column: 29, line: 9 },
+ start: { column: 26, line: 9 },
+ end: { column: 27, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: "}",
- range: [280, 281],
+ range: [274, 275],
loc: {
- start: { column: 29, line: 9 },
- end: { column: 30, line: 9 },
+ start: { column: 27, line: 9 },
+ end: { column: 28, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: "<",
- range: [281, 282],
+ range: [275, 276],
loc: {
- start: { column: 30, line: 9 },
- end: { column: 31, line: 9 },
+ start: { column: 28, line: 9 },
+ end: { column: 29, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: "/",
- range: [282, 283],
+ range: [276, 277],
loc: {
- start: { column: 31, line: 9 },
- end: { column: 32, line: 9 },
+ start: { column: 29, line: 9 },
+ end: { column: 30, line: 9 },
},
},
JSXIdentifier {
type: "JSXIdentifier",
value: "div",
- range: [283, 286],
+ range: [277, 280],
loc: {
- start: { column: 32, line: 9 },
- end: { column: 35, line: 9 },
+ start: { column: 30, line: 9 },
+ end: { column: 33, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: ">",
- range: [286, 287],
+ range: [280, 281],
loc: {
- start: { column: 35, line: 9 },
- end: { column: 36, line: 9 },
+ start: { column: 33, line: 9 },
+ end: { column: 34, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: ";",
- range: [287, 288],
+ range: [281, 282],
loc: {
- start: { column: 36, line: 9 },
- end: { column: 37, line: 9 },
+ start: { column: 34, line: 9 },
+ end: { column: 35, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: "}",
- range: [289, 290],
+ range: [283, 284],
loc: {
start: { column: 0, line: 10 },
end: { column: 1, line: 10 },
diff --git a/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/3-Babel-AST.shot
index 7582f7301e58..973ac01c6c92 100644
--- a/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/3-Babel-AST.shot
+++ b/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/3-Babel-AST.shot
@@ -147,10 +147,10 @@ Program {
type: "JSXIdentifier",
name: "b",
- range: [96, 97],
+ range: [94, 95],
loc: {
- start: { column: 38, line: 2 },
- end: { column: 39, line: 2 },
+ start: { column: 36, line: 2 },
+ end: { column: 37, line: 2 },
},
},
namespace: JSXIdentifier {
@@ -164,10 +164,10 @@ Program {
},
},
- range: [92, 97],
+ range: [92, 95],
loc: {
start: { column: 34, line: 2 },
- end: { column: 39, line: 2 },
+ end: { column: 37, line: 2 },
},
},
value: Literal {
@@ -175,17 +175,17 @@ Program {
raw: ""loose spacing"",
value: "loose spacing",
- range: [98, 113],
+ range: [96, 111],
loc: {
- start: { column: 40, line: 2 },
- end: { column: 55, line: 2 },
+ start: { column: 38, line: 2 },
+ end: { column: 53, line: 2 },
},
},
- range: [92, 113],
+ range: [92, 111],
loc: {
start: { column: 34, line: 2 },
- end: { column: 55, line: 2 },
+ end: { column: 53, line: 2 },
},
},
],
@@ -201,33 +201,33 @@ Program {
},
selfClosing: true,
- range: [68, 116],
+ range: [68, 114],
loc: {
start: { column: 10, line: 2 },
- end: { column: 58, line: 2 },
+ end: { column: 56, line: 2 },
},
},
- range: [68, 116],
+ range: [68, 114],
loc: {
start: { column: 10, line: 2 },
- end: { column: 58, line: 2 },
+ end: { column: 56, line: 2 },
},
},
- range: [64, 116],
+ range: [64, 114],
loc: {
start: { column: 6, line: 2 },
- end: { column: 58, line: 2 },
+ end: { column: 56, line: 2 },
},
},
],
kind: "const",
- range: [58, 117],
+ range: [58, 115],
loc: {
start: { column: 0, line: 2 },
- end: { column: 59, line: 2 },
+ end: { column: 57, line: 2 },
},
},
TSInterfaceDeclaration {
@@ -240,13 +240,13 @@ Program {
computed: false,
key: Literal {
type: "Literal",
- raw: ""a:b"",
+ raw: "'a:b'",
value: "a:b",
- range: [163, 168],
+ range: [159, 164],
loc: {
- start: { column: 4, line: 5 },
- end: { column: 9, line: 5 },
+ start: { column: 2, line: 5 },
+ end: { column: 7, line: 5 },
},
},
typeAnnotation: TSTypeAnnotation {
@@ -254,29 +254,29 @@ Program {
typeAnnotation: TSStringKeyword {
type: "TSStringKeyword",
- range: [170, 176],
+ range: [166, 172],
loc: {
- start: { column: 11, line: 5 },
- end: { column: 17, line: 5 },
+ start: { column: 9, line: 5 },
+ end: { column: 15, line: 5 },
},
},
- range: [168, 176],
+ range: [164, 172],
loc: {
- start: { column: 9, line: 5 },
- end: { column: 17, line: 5 },
+ start: { column: 7, line: 5 },
+ end: { column: 15, line: 5 },
},
},
- range: [163, 177],
+ range: [159, 173],
loc: {
- start: { column: 4, line: 5 },
- end: { column: 18, line: 5 },
+ start: { column: 2, line: 5 },
+ end: { column: 16, line: 5 },
},
},
],
- range: [157, 179],
+ range: [155, 175],
loc: {
start: { column: 38, line: 4 },
end: { column: 1, line: 6 },
@@ -286,14 +286,14 @@ Program {
type: "Identifier",
name: "NamespacePropComponentProps",
- range: [129, 156],
+ range: [127, 154],
loc: {
start: { column: 10, line: 4 },
end: { column: 37, line: 4 },
},
},
- range: [119, 179],
+ range: [117, 175],
loc: {
start: { column: 0, line: 4 },
end: { column: 1, line: 6 },
@@ -319,36 +319,36 @@ Program {
type: "Identifier",
name: "props",
- range: [268, 273],
+ range: [262, 267],
loc: {
- start: { column: 17, line: 9 },
- end: { column: 22, line: 9 },
+ start: { column: 15, line: 9 },
+ end: { column: 20, line: 9 },
},
},
optional: false,
property: Literal {
type: "Literal",
- raw: ""a:b"",
+ raw: "'a:b'",
value: "a:b",
- range: [274, 279],
+ range: [268, 273],
loc: {
- start: { column: 23, line: 9 },
- end: { column: 28, line: 9 },
+ start: { column: 21, line: 9 },
+ end: { column: 26, line: 9 },
},
},
- range: [268, 280],
+ range: [262, 274],
loc: {
- start: { column: 17, line: 9 },
- end: { column: 29, line: 9 },
+ start: { column: 15, line: 9 },
+ end: { column: 27, line: 9 },
},
},
- range: [267, 281],
+ range: [261, 275],
loc: {
- start: { column: 16, line: 9 },
- end: { column: 30, line: 9 },
+ start: { column: 14, line: 9 },
+ end: { column: 28, line: 9 },
},
},
],
@@ -358,17 +358,17 @@ Program {
type: "JSXIdentifier",
name: "div",
- range: [283, 286],
+ range: [277, 280],
loc: {
- start: { column: 32, line: 9 },
- end: { column: 35, line: 9 },
+ start: { column: 30, line: 9 },
+ end: { column: 33, line: 9 },
},
},
- range: [281, 287],
+ range: [275, 281],
loc: {
- start: { column: 30, line: 9 },
- end: { column: 36, line: 9 },
+ start: { column: 28, line: 9 },
+ end: { column: 34, line: 9 },
},
},
openingElement: JSXOpeningElement {
@@ -378,37 +378,37 @@ Program {
type: "JSXIdentifier",
name: "div",
- range: [263, 266],
+ range: [257, 260],
loc: {
- start: { column: 12, line: 9 },
- end: { column: 15, line: 9 },
+ start: { column: 10, line: 9 },
+ end: { column: 13, line: 9 },
},
},
selfClosing: false,
- range: [262, 267],
+ range: [256, 261],
loc: {
- start: { column: 11, line: 9 },
- end: { column: 16, line: 9 },
+ start: { column: 9, line: 9 },
+ end: { column: 14, line: 9 },
},
},
- range: [262, 287],
+ range: [256, 281],
loc: {
- start: { column: 11, line: 9 },
- end: { column: 36, line: 9 },
+ start: { column: 9, line: 9 },
+ end: { column: 34, line: 9 },
},
},
- range: [255, 288],
+ range: [249, 282],
loc: {
- start: { column: 4, line: 9 },
- end: { column: 37, line: 9 },
+ start: { column: 2, line: 9 },
+ end: { column: 35, line: 9 },
},
},
],
- range: [249, 290],
+ range: [245, 284],
loc: {
start: { column: 68, line: 8 },
end: { column: 1, line: 10 },
@@ -420,7 +420,7 @@ Program {
type: "Identifier",
name: "NamespacePropComponent",
- range: [190, 212],
+ range: [186, 208],
loc: {
start: { column: 9, line: 8 },
end: { column: 31, line: 8 },
@@ -438,28 +438,28 @@ Program {
type: "Identifier",
name: "NamespacePropComponentProps",
- range: [220, 247],
+ range: [216, 243],
loc: {
start: { column: 39, line: 8 },
end: { column: 66, line: 8 },
},
},
- range: [220, 247],
+ range: [216, 243],
loc: {
start: { column: 39, line: 8 },
end: { column: 66, line: 8 },
},
},
- range: [218, 247],
+ range: [214, 243],
loc: {
start: { column: 37, line: 8 },
end: { column: 66, line: 8 },
},
},
- range: [213, 247],
+ range: [209, 243],
loc: {
start: { column: 32, line: 8 },
end: { column: 66, line: 8 },
@@ -467,7 +467,7 @@ Program {
},
],
- range: [181, 290],
+ range: [177, 284],
loc: {
start: { column: 0, line: 8 },
end: { column: 1, line: 10 },
@@ -476,7 +476,7 @@ Program {
],
sourceType: "script",
- range: [0, 291],
+ range: [0, 285],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 11 },
diff --git a/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/4-Babel-Tokens.shot
index afdd8792c205..e746539dc618 100644
--- a/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/4-Babel-Tokens.shot
+++ b/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/4-Babel-Tokens.shot
@@ -196,77 +196,77 @@ exports[`AST Fixtures jsx JSXNamespacedName component Babel - Tokens 1`] = `
type: "Punctuator",
value: ":",
- range: [94, 95],
+ range: [93, 94],
loc: {
- start: { column: 36, line: 2 },
- end: { column: 37, line: 2 },
+ start: { column: 35, line: 2 },
+ end: { column: 36, line: 2 },
},
},
JSXIdentifier {
type: "JSXIdentifier",
value: "b",
- range: [96, 97],
+ range: [94, 95],
loc: {
- start: { column: 38, line: 2 },
- end: { column: 39, line: 2 },
+ start: { column: 36, line: 2 },
+ end: { column: 37, line: 2 },
},
},
Punctuator {
type: "Punctuator",
value: "=",
- range: [97, 98],
+ range: [95, 96],
loc: {
- start: { column: 39, line: 2 },
- end: { column: 40, line: 2 },
+ start: { column: 37, line: 2 },
+ end: { column: 38, line: 2 },
},
},
String {
type: "String",
value: ""loose spacing"",
- range: [98, 113],
+ range: [96, 111],
loc: {
- start: { column: 40, line: 2 },
- end: { column: 55, line: 2 },
+ start: { column: 38, line: 2 },
+ end: { column: 53, line: 2 },
},
},
Punctuator {
type: "Punctuator",
value: "/",
- range: [114, 115],
+ range: [112, 113],
loc: {
- start: { column: 56, line: 2 },
- end: { column: 57, line: 2 },
+ start: { column: 54, line: 2 },
+ end: { column: 55, line: 2 },
},
},
Punctuator {
type: "Punctuator",
value: ">",
- range: [115, 116],
+ range: [113, 114],
loc: {
- start: { column: 57, line: 2 },
- end: { column: 58, line: 2 },
+ start: { column: 55, line: 2 },
+ end: { column: 56, line: 2 },
},
},
Punctuator {
type: "Punctuator",
value: ";",
- range: [116, 117],
+ range: [114, 115],
loc: {
- start: { column: 58, line: 2 },
- end: { column: 59, line: 2 },
+ start: { column: 56, line: 2 },
+ end: { column: 57, line: 2 },
},
},
Identifier {
type: "Identifier",
value: "interface",
- range: [119, 128],
+ range: [117, 126],
loc: {
start: { column: 0, line: 4 },
end: { column: 9, line: 4 },
@@ -276,7 +276,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component Babel - Tokens 1`] = `
type: "Identifier",
value: "NamespacePropComponentProps",
- range: [129, 156],
+ range: [127, 154],
loc: {
start: { column: 10, line: 4 },
end: { column: 37, line: 4 },
@@ -286,7 +286,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component Babel - Tokens 1`] = `
type: "Punctuator",
value: "{",
- range: [157, 158],
+ range: [155, 156],
loc: {
start: { column: 38, line: 4 },
end: { column: 39, line: 4 },
@@ -294,49 +294,49 @@ exports[`AST Fixtures jsx JSXNamespacedName component Babel - Tokens 1`] = `
},
String {
type: "String",
- value: ""a:b"",
+ value: "'a:b'",
- range: [163, 168],
+ range: [159, 164],
loc: {
- start: { column: 4, line: 5 },
- end: { column: 9, line: 5 },
+ start: { column: 2, line: 5 },
+ end: { column: 7, line: 5 },
},
},
Punctuator {
type: "Punctuator",
value: ":",
- range: [168, 169],
+ range: [164, 165],
loc: {
- start: { column: 9, line: 5 },
- end: { column: 10, line: 5 },
+ start: { column: 7, line: 5 },
+ end: { column: 8, line: 5 },
},
},
Identifier {
type: "Identifier",
value: "string",
- range: [170, 176],
+ range: [166, 172],
loc: {
- start: { column: 11, line: 5 },
- end: { column: 17, line: 5 },
+ start: { column: 9, line: 5 },
+ end: { column: 15, line: 5 },
},
},
Punctuator {
type: "Punctuator",
value: ";",
- range: [176, 177],
+ range: [172, 173],
loc: {
- start: { column: 17, line: 5 },
- end: { column: 18, line: 5 },
+ start: { column: 15, line: 5 },
+ end: { column: 16, line: 5 },
},
},
Punctuator {
type: "Punctuator",
value: "}",
- range: [178, 179],
+ range: [174, 175],
loc: {
start: { column: 0, line: 6 },
end: { column: 1, line: 6 },
@@ -346,7 +346,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component Babel - Tokens 1`] = `
type: "Keyword",
value: "function",
- range: [181, 189],
+ range: [177, 185],
loc: {
start: { column: 0, line: 8 },
end: { column: 8, line: 8 },
@@ -356,7 +356,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component Babel - Tokens 1`] = `
type: "Identifier",
value: "NamespacePropComponent",
- range: [190, 212],
+ range: [186, 208],
loc: {
start: { column: 9, line: 8 },
end: { column: 31, line: 8 },
@@ -366,7 +366,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component Babel - Tokens 1`] = `
type: "Punctuator",
value: "(",
- range: [212, 213],
+ range: [208, 209],
loc: {
start: { column: 31, line: 8 },
end: { column: 32, line: 8 },
@@ -376,7 +376,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component Babel - Tokens 1`] = `
type: "Identifier",
value: "props",
- range: [213, 218],
+ range: [209, 214],
loc: {
start: { column: 32, line: 8 },
end: { column: 37, line: 8 },
@@ -386,7 +386,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component Babel - Tokens 1`] = `
type: "Punctuator",
value: ":",
- range: [218, 219],
+ range: [214, 215],
loc: {
start: { column: 37, line: 8 },
end: { column: 38, line: 8 },
@@ -396,7 +396,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component Babel - Tokens 1`] = `
type: "Identifier",
value: "NamespacePropComponentProps",
- range: [220, 247],
+ range: [216, 243],
loc: {
start: { column: 39, line: 8 },
end: { column: 66, line: 8 },
@@ -406,7 +406,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component Babel - Tokens 1`] = `
type: "Punctuator",
value: ")",
- range: [247, 248],
+ range: [243, 244],
loc: {
start: { column: 66, line: 8 },
end: { column: 67, line: 8 },
@@ -416,7 +416,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component Babel - Tokens 1`] = `
type: "Punctuator",
value: "{",
- range: [249, 250],
+ range: [245, 246],
loc: {
start: { column: 68, line: 8 },
end: { column: 69, line: 8 },
@@ -426,157 +426,157 @@ exports[`AST Fixtures jsx JSXNamespacedName component Babel - Tokens 1`] = `
type: "Keyword",
value: "return",
- range: [255, 261],
+ range: [249, 255],
loc: {
- start: { column: 4, line: 9 },
- end: { column: 10, line: 9 },
+ start: { column: 2, line: 9 },
+ end: { column: 8, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: "<",
- range: [262, 263],
+ range: [256, 257],
loc: {
- start: { column: 11, line: 9 },
- end: { column: 12, line: 9 },
+ start: { column: 9, line: 9 },
+ end: { column: 10, line: 9 },
},
},
JSXIdentifier {
type: "JSXIdentifier",
value: "div",
- range: [263, 266],
+ range: [257, 260],
loc: {
- start: { column: 12, line: 9 },
- end: { column: 15, line: 9 },
+ start: { column: 10, line: 9 },
+ end: { column: 13, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: ">",
- range: [266, 267],
+ range: [260, 261],
loc: {
- start: { column: 15, line: 9 },
- end: { column: 16, line: 9 },
+ start: { column: 13, line: 9 },
+ end: { column: 14, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: "{",
- range: [267, 268],
+ range: [261, 262],
loc: {
- start: { column: 16, line: 9 },
- end: { column: 17, line: 9 },
+ start: { column: 14, line: 9 },
+ end: { column: 15, line: 9 },
},
},
Identifier {
type: "Identifier",
value: "props",
- range: [268, 273],
+ range: [262, 267],
loc: {
- start: { column: 17, line: 9 },
- end: { column: 22, line: 9 },
+ start: { column: 15, line: 9 },
+ end: { column: 20, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: "[",
- range: [273, 274],
+ range: [267, 268],
loc: {
- start: { column: 22, line: 9 },
- end: { column: 23, line: 9 },
+ start: { column: 20, line: 9 },
+ end: { column: 21, line: 9 },
},
},
String {
type: "String",
- value: ""a:b"",
+ value: "'a:b'",
- range: [274, 279],
+ range: [268, 273],
loc: {
- start: { column: 23, line: 9 },
- end: { column: 28, line: 9 },
+ start: { column: 21, line: 9 },
+ end: { column: 26, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: "]",
- range: [279, 280],
+ range: [273, 274],
loc: {
- start: { column: 28, line: 9 },
- end: { column: 29, line: 9 },
+ start: { column: 26, line: 9 },
+ end: { column: 27, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: "}",
- range: [280, 281],
+ range: [274, 275],
loc: {
- start: { column: 29, line: 9 },
- end: { column: 30, line: 9 },
+ start: { column: 27, line: 9 },
+ end: { column: 28, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: "<",
- range: [281, 282],
+ range: [275, 276],
loc: {
- start: { column: 30, line: 9 },
- end: { column: 31, line: 9 },
+ start: { column: 28, line: 9 },
+ end: { column: 29, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: "/",
- range: [282, 283],
+ range: [276, 277],
loc: {
- start: { column: 31, line: 9 },
- end: { column: 32, line: 9 },
+ start: { column: 29, line: 9 },
+ end: { column: 30, line: 9 },
},
},
JSXIdentifier {
type: "JSXIdentifier",
value: "div",
- range: [283, 286],
+ range: [277, 280],
loc: {
- start: { column: 32, line: 9 },
- end: { column: 35, line: 9 },
+ start: { column: 30, line: 9 },
+ end: { column: 33, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: ">",
- range: [286, 287],
+ range: [280, 281],
loc: {
- start: { column: 35, line: 9 },
- end: { column: 36, line: 9 },
+ start: { column: 33, line: 9 },
+ end: { column: 34, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: ";",
- range: [287, 288],
+ range: [281, 282],
loc: {
- start: { column: 36, line: 9 },
- end: { column: 37, line: 9 },
+ start: { column: 34, line: 9 },
+ end: { column: 35, line: 9 },
},
},
Punctuator {
type: "Punctuator",
value: "}",
- range: [289, 290],
+ range: [283, 284],
loc: {
start: { column: 0, line: 10 },
end: { column: 1, line: 10 },
diff --git a/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/5-AST-Alignment-AST.shot
index 45ffcb1a2319..4bfa82416b40 100644
--- a/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/5-AST-Alignment-AST.shot
@@ -158,10 +158,10 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - AST 1`] =
type: 'JSXIdentifier',
name: 'b',
- range: [96, 97],
+ range: [94, 95],
loc: {
- start: { column: 38, line: 2 },
- end: { column: 39, line: 2 },
+ start: { column: 36, line: 2 },
+ end: { column: 37, line: 2 },
},
},
namespace: JSXIdentifier {
@@ -175,10 +175,10 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - AST 1`] =
},
},
- range: [92, 97],
+ range: [92, 95],
loc: {
start: { column: 34, line: 2 },
- end: { column: 39, line: 2 },
+ end: { column: 37, line: 2 },
},
},
value: Literal {
@@ -186,17 +186,17 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - AST 1`] =
raw: '"loose spacing"',
value: 'loose spacing',
- range: [98, 113],
+ range: [96, 111],
loc: {
- start: { column: 40, line: 2 },
- end: { column: 55, line: 2 },
+ start: { column: 38, line: 2 },
+ end: { column: 53, line: 2 },
},
},
- range: [92, 113],
+ range: [92, 111],
loc: {
start: { column: 34, line: 2 },
- end: { column: 55, line: 2 },
+ end: { column: 53, line: 2 },
},
},
],
@@ -212,34 +212,34 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - AST 1`] =
},
selfClosing: true,
- range: [68, 116],
+ range: [68, 114],
loc: {
start: { column: 10, line: 2 },
- end: { column: 58, line: 2 },
+ end: { column: 56, line: 2 },
},
},
- range: [68, 116],
+ range: [68, 114],
loc: {
start: { column: 10, line: 2 },
- end: { column: 58, line: 2 },
+ end: { column: 56, line: 2 },
},
},
- range: [64, 116],
+ range: [64, 114],
loc: {
start: { column: 6, line: 2 },
- end: { column: 58, line: 2 },
+ end: { column: 56, line: 2 },
},
},
],
- declare: false,
kind: 'const',
- range: [58, 117],
+ range: [58, 115],
loc: {
start: { column: 0, line: 2 },
- end: { column: 59, line: 2 },
+ end: { column: 57, line: 2 },
},
},
TSInterfaceDeclaration {
@@ -252,13 +252,13 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - AST 1`] =
computed: false,
key: Literal {
type: 'Literal',
- raw: '"a:b"',
+ raw: '\\'a:b\\'',
value: 'a:b',
- range: [163, 168],
+ range: [159, 164],
loc: {
- start: { column: 4, line: 5 },
- end: { column: 9, line: 5 },
+ start: { column: 2, line: 5 },
+ end: { column: 7, line: 5 },
},
},
- optional: false,
@@ -269,29 +269,29 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - AST 1`] =
typeAnnotation: TSStringKeyword {
type: 'TSStringKeyword',
- range: [170, 176],
+ range: [166, 172],
loc: {
- start: { column: 11, line: 5 },
- end: { column: 17, line: 5 },
+ start: { column: 9, line: 5 },
+ end: { column: 15, line: 5 },
},
},
- range: [168, 176],
+ range: [164, 172],
loc: {
- start: { column: 9, line: 5 },
- end: { column: 17, line: 5 },
+ start: { column: 7, line: 5 },
+ end: { column: 15, line: 5 },
},
},
- range: [163, 177],
+ range: [159, 173],
loc: {
- start: { column: 4, line: 5 },
- end: { column: 18, line: 5 },
+ start: { column: 2, line: 5 },
+ end: { column: 16, line: 5 },
},
},
],
- range: [157, 179],
+ range: [155, 175],
loc: {
start: { column: 38, line: 4 },
end: { column: 1, line: 6 },
@@ -305,14 +305,14 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - AST 1`] =
name: 'NamespacePropComponentProps',
- optional: false,
- range: [129, 156],
+ range: [127, 154],
loc: {
start: { column: 10, line: 4 },
end: { column: 37, line: 4 },
},
},
- range: [119, 179],
+ range: [117, 175],
loc: {
start: { column: 0, line: 4 },
end: { column: 1, line: 6 },
@@ -340,36 +340,36 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - AST 1`] =
name: 'props',
- optional: false,
- range: [268, 273],
+ range: [262, 267],
loc: {
- start: { column: 17, line: 9 },
- end: { column: 22, line: 9 },
+ start: { column: 15, line: 9 },
+ end: { column: 20, line: 9 },
},
},
optional: false,
property: Literal {
type: 'Literal',
- raw: '"a:b"',
+ raw: '\\'a:b\\'',
value: 'a:b',
- range: [274, 279],
+ range: [268, 273],
loc: {
- start: { column: 23, line: 9 },
- end: { column: 28, line: 9 },
+ start: { column: 21, line: 9 },
+ end: { column: 26, line: 9 },
},
},
- range: [268, 280],
+ range: [262, 274],
loc: {
- start: { column: 17, line: 9 },
- end: { column: 29, line: 9 },
+ start: { column: 15, line: 9 },
+ end: { column: 27, line: 9 },
},
},
- range: [267, 281],
+ range: [261, 275],
loc: {
- start: { column: 16, line: 9 },
- end: { column: 30, line: 9 },
+ start: { column: 14, line: 9 },
+ end: { column: 28, line: 9 },
},
},
],
@@ -379,17 +379,17 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - AST 1`] =
type: 'JSXIdentifier',
name: 'div',
- range: [283, 286],
+ range: [277, 280],
loc: {
- start: { column: 32, line: 9 },
- end: { column: 35, line: 9 },
+ start: { column: 30, line: 9 },
+ end: { column: 33, line: 9 },
},
},
- range: [281, 287],
+ range: [275, 281],
loc: {
- start: { column: 30, line: 9 },
- end: { column: 36, line: 9 },
+ start: { column: 28, line: 9 },
+ end: { column: 34, line: 9 },
},
},
openingElement: JSXOpeningElement {
@@ -399,37 +399,37 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - AST 1`] =
type: 'JSXIdentifier',
name: 'div',
- range: [263, 266],
+ range: [257, 260],
loc: {
- start: { column: 12, line: 9 },
- end: { column: 15, line: 9 },
+ start: { column: 10, line: 9 },
+ end: { column: 13, line: 9 },
},
},
selfClosing: false,
- range: [262, 267],
+ range: [256, 261],
loc: {
- start: { column: 11, line: 9 },
- end: { column: 16, line: 9 },
+ start: { column: 9, line: 9 },
+ end: { column: 14, line: 9 },
},
},
- range: [262, 287],
+ range: [256, 281],
loc: {
- start: { column: 11, line: 9 },
- end: { column: 36, line: 9 },
+ start: { column: 9, line: 9 },
+ end: { column: 34, line: 9 },
},
},
- range: [255, 288],
+ range: [249, 282],
loc: {
- start: { column: 4, line: 9 },
- end: { column: 37, line: 9 },
+ start: { column: 2, line: 9 },
+ end: { column: 35, line: 9 },
},
},
],
- range: [249, 290],
+ range: [245, 284],
loc: {
start: { column: 68, line: 8 },
end: { column: 1, line: 10 },
@@ -444,7 +444,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - AST 1`] =
name: 'NamespacePropComponent',
- optional: false,
- range: [190, 212],
+ range: [186, 208],
loc: {
start: { column: 9, line: 8 },
end: { column: 31, line: 8 },
@@ -466,28 +466,28 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - AST 1`] =
name: 'NamespacePropComponentProps',
- optional: false,
- range: [220, 247],
+ range: [216, 243],
loc: {
start: { column: 39, line: 8 },
end: { column: 66, line: 8 },
},
},
- range: [220, 247],
+ range: [216, 243],
loc: {
start: { column: 39, line: 8 },
end: { column: 66, line: 8 },
},
},
- range: [218, 247],
+ range: [214, 243],
loc: {
start: { column: 37, line: 8 },
end: { column: 66, line: 8 },
},
},
- range: [213, 247],
+ range: [209, 243],
loc: {
start: { column: 32, line: 8 },
end: { column: 66, line: 8 },
@@ -495,7 +495,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - AST 1`] =
},
],
- range: [181, 290],
+ range: [177, 284],
loc: {
start: { column: 0, line: 8 },
end: { column: 1, line: 10 },
@@ -504,7 +504,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - AST 1`] =
],
sourceType: 'script',
- range: [0, 291],
+ range: [0, 285],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 11 },
diff --git a/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/6-AST-Alignment-Tokens.shot
index 2a72ccaf2fef..b77749bc53ad 100644
--- a/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/6-AST-Alignment-Tokens.shot
+++ b/packages/ast-spec/src/jsx/JSXNamespacedName/fixtures/component/snapshots/6-AST-Alignment-Tokens.shot
@@ -208,10 +208,10 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - Token 1`]
type: 'Punctuator',
value: ':',
- range: [94, 95],
+ range: [93, 94],
loc: {
- start: { column: 36, line: 2 },
- end: { column: 37, line: 2 },
+ start: { column: 35, line: 2 },
+ end: { column: 36, line: 2 },
},
},
- Identifier {
@@ -220,20 +220,20 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - Token 1`]
+ type: 'JSXIdentifier',
value: 'b',
- range: [96, 97],
+ range: [94, 95],
loc: {
- start: { column: 38, line: 2 },
- end: { column: 39, line: 2 },
+ start: { column: 36, line: 2 },
+ end: { column: 37, line: 2 },
},
},
Punctuator {
type: 'Punctuator',
value: '=',
- range: [97, 98],
+ range: [95, 96],
loc: {
- start: { column: 39, line: 2 },
- end: { column: 40, line: 2 },
+ start: { column: 37, line: 2 },
+ end: { column: 38, line: 2 },
},
},
- JSXText {
@@ -242,40 +242,40 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - Token 1`]
+ type: 'String',
value: '"loose spacing"',
- range: [98, 113],
+ range: [96, 111],
loc: {
- start: { column: 40, line: 2 },
- end: { column: 55, line: 2 },
+ start: { column: 38, line: 2 },
+ end: { column: 53, line: 2 },
},
},
Punctuator {
type: 'Punctuator',
value: '/',
- range: [114, 115],
+ range: [112, 113],
loc: {
- start: { column: 56, line: 2 },
- end: { column: 57, line: 2 },
+ start: { column: 54, line: 2 },
+ end: { column: 55, line: 2 },
},
},
Punctuator {
type: 'Punctuator',
value: '>',
- range: [115, 116],
+ range: [113, 114],
loc: {
- start: { column: 57, line: 2 },
- end: { column: 58, line: 2 },
+ start: { column: 55, line: 2 },
+ end: { column: 56, line: 2 },
},
},
Punctuator {
type: 'Punctuator',
value: ';',
- range: [116, 117],
+ range: [114, 115],
loc: {
- start: { column: 58, line: 2 },
- end: { column: 59, line: 2 },
+ start: { column: 56, line: 2 },
+ end: { column: 57, line: 2 },
},
},
- Keyword {
@@ -284,7 +284,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - Token 1`]
+ type: 'Identifier',
value: 'interface',
- range: [119, 128],
+ range: [117, 126],
loc: {
start: { column: 0, line: 4 },
end: { column: 9, line: 4 },
@@ -294,7 +294,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - Token 1`]
type: 'Identifier',
value: 'NamespacePropComponentProps',
- range: [129, 156],
+ range: [127, 154],
loc: {
start: { column: 10, line: 4 },
end: { column: 37, line: 4 },
@@ -304,7 +304,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - Token 1`]
type: 'Punctuator',
value: '{',
- range: [157, 158],
+ range: [155, 156],
loc: {
start: { column: 38, line: 4 },
end: { column: 39, line: 4 },
@@ -312,49 +312,49 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - Token 1`]
},
String {
type: 'String',
- value: '"a:b"',
+ value: '\\'a:b\\'',
- range: [163, 168],
+ range: [159, 164],
loc: {
- start: { column: 4, line: 5 },
- end: { column: 9, line: 5 },
+ start: { column: 2, line: 5 },
+ end: { column: 7, line: 5 },
},
},
Punctuator {
type: 'Punctuator',
value: ':',
- range: [168, 169],
+ range: [164, 165],
loc: {
- start: { column: 9, line: 5 },
- end: { column: 10, line: 5 },
+ start: { column: 7, line: 5 },
+ end: { column: 8, line: 5 },
},
},
Identifier {
type: 'Identifier',
value: 'string',
- range: [170, 176],
+ range: [166, 172],
loc: {
- start: { column: 11, line: 5 },
- end: { column: 17, line: 5 },
+ start: { column: 9, line: 5 },
+ end: { column: 15, line: 5 },
},
},
Punctuator {
type: 'Punctuator',
value: ';',
- range: [176, 177],
+ range: [172, 173],
loc: {
- start: { column: 17, line: 5 },
- end: { column: 18, line: 5 },
+ start: { column: 15, line: 5 },
+ end: { column: 16, line: 5 },
},
},
Punctuator {
type: 'Punctuator',
value: '}',
- range: [178, 179],
+ range: [174, 175],
loc: {
start: { column: 0, line: 6 },
end: { column: 1, line: 6 },
@@ -364,7 +364,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - Token 1`]
type: 'Keyword',
value: 'function',
- range: [181, 189],
+ range: [177, 185],
loc: {
start: { column: 0, line: 8 },
end: { column: 8, line: 8 },
@@ -374,7 +374,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - Token 1`]
type: 'Identifier',
value: 'NamespacePropComponent',
- range: [190, 212],
+ range: [186, 208],
loc: {
start: { column: 9, line: 8 },
end: { column: 31, line: 8 },
@@ -384,7 +384,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - Token 1`]
type: 'Punctuator',
value: '(',
- range: [212, 213],
+ range: [208, 209],
loc: {
start: { column: 31, line: 8 },
end: { column: 32, line: 8 },
@@ -394,7 +394,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - Token 1`]
type: 'Identifier',
value: 'props',
- range: [213, 218],
+ range: [209, 214],
loc: {
start: { column: 32, line: 8 },
end: { column: 37, line: 8 },
@@ -404,7 +404,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - Token 1`]
type: 'Punctuator',
value: ':',
- range: [218, 219],
+ range: [214, 215],
loc: {
start: { column: 37, line: 8 },
end: { column: 38, line: 8 },
@@ -414,7 +414,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - Token 1`]
type: 'Identifier',
value: 'NamespacePropComponentProps',
- range: [220, 247],
+ range: [216, 243],
loc: {
start: { column: 39, line: 8 },
end: { column: 66, line: 8 },
@@ -424,7 +424,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - Token 1`]
type: 'Punctuator',
value: ')',
- range: [247, 248],
+ range: [243, 244],
loc: {
start: { column: 66, line: 8 },
end: { column: 67, line: 8 },
@@ -434,7 +434,7 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - Token 1`]
type: 'Punctuator',
value: '{',
- range: [249, 250],
+ range: [245, 246],
loc: {
start: { column: 68, line: 8 },
end: { column: 69, line: 8 },
@@ -444,157 +444,157 @@ exports[`AST Fixtures jsx JSXNamespacedName component AST Alignment - Token 1`]
type: 'Keyword',
value: 'return',
- range: [255, 261],
+ range: [249, 255],
loc: {
- start: { column: 4, line: 9 },
- end: { column: 10, line: 9 },
+ start: { column: 2, line: 9 },
+ end: { column: 8, line: 9 },
},
},
Punctuator {
type: 'Punctuator',
value: '<',
- range: [262, 263],
+ range: [256, 257],
loc: {
- start: { column: 11, line: 9 },
- end: { column: 12, line: 9 },
+ start: { column: 9, line: 9 },
+ end: { column: 10, line: 9 },
},
},
JSXIdentifier {
type: 'JSXIdentifier',
value: 'div',
- range: [263, 266],
+ range: [257, 260],
loc: {
- start: { column: 12, line: 9 },
- end: { column: 15, line: 9 },
+ start: { column: 10, line: 9 },
+ end: { column: 13, line: 9 },
},
},
Punctuator {
type: 'Punctuator',
value: '>',
- range: [266, 267],
+ range: [260, 261],
loc: {
- start: { column: 15, line: 9 },
- end: { column: 16, line: 9 },
+ start: { column: 13, line: 9 },
+ end: { column: 14, line: 9 },
},
},
Punctuator {
type: 'Punctuator',
value: '{',
- range: [267, 268],
+ range: [261, 262],
loc: {
- start: { column: 16, line: 9 },
- end: { column: 17, line: 9 },
+ start: { column: 14, line: 9 },
+ end: { column: 15, line: 9 },
},
},
Identifier {
type: 'Identifier',
value: 'props',
- range: [268, 273],
+ range: [262, 267],
loc: {
- start: { column: 17, line: 9 },
- end: { column: 22, line: 9 },
+ start: { column: 15, line: 9 },
+ end: { column: 20, line: 9 },
},
},
Punctuator {
type: 'Punctuator',
value: '[',
- range: [273, 274],
+ range: [267, 268],
loc: {
- start: { column: 22, line: 9 },
- end: { column: 23, line: 9 },
+ start: { column: 20, line: 9 },
+ end: { column: 21, line: 9 },
},
},
String {
type: 'String',
- value: '"a:b"',
+ value: '\\'a:b\\'',
- range: [274, 279],
+ range: [268, 273],
loc: {
- start: { column: 23, line: 9 },
- end: { column: 28, line: 9 },
+ start: { column: 21, line: 9 },
+ end: { column: 26, line: 9 },
},
},
Punctuator {
type: 'Punctuator',
value: ']',
- range: [279, 280],
+ range: [273, 274],
loc: {
- start: { column: 28, line: 9 },
- end: { column: 29, line: 9 },
+ start: { column: 26, line: 9 },
+ end: { column: 27, line: 9 },
},
},
Punctuator {
type: 'Punctuator',
value: '}',
- range: [280, 281],
+ range: [274, 275],
loc: {
- start: { column: 29, line: 9 },
- end: { column: 30, line: 9 },
+ start: { column: 27, line: 9 },
+ end: { column: 28, line: 9 },
},
},
Punctuator {
type: 'Punctuator',
value: '<',
- range: [281, 282],
+ range: [275, 276],
loc: {
- start: { column: 30, line: 9 },
- end: { column: 31, line: 9 },
+ start: { column: 28, line: 9 },
+ end: { column: 29, line: 9 },
},
},
Punctuator {
type: 'Punctuator',
value: '/',
- range: [282, 283],
+ range: [276, 277],
loc: {
- start: { column: 31, line: 9 },
- end: { column: 32, line: 9 },
+ start: { column: 29, line: 9 },
+ end: { column: 30, line: 9 },
},
},
JSXIdentifier {
type: 'JSXIdentifier',
value: 'div',
- range: [283, 286],
+ range: [277, 280],
loc: {
- start: { column: 32, line: 9 },
- end: { column: 35, line: 9 },
+ start: { column: 30, line: 9 },
+ end: { column: 33, line: 9 },
},
},
Punctuator {
type: 'Punctuator',
value: '>',
- range: [286, 287],
+ range: [280, 281],
loc: {
- start: { column: 35, line: 9 },
- end: { column: 36, line: 9 },
+ start: { column: 33, line: 9 },
+ end: { column: 34, line: 9 },
},
},
Punctuator {
type: 'Punctuator',
value: ';',
- range: [287, 288],
+ range: [281, 282],
loc: {
- start: { column: 36, line: 9 },
- end: { column: 37, line: 9 },
+ start: { column: 34, line: 9 },
+ end: { column: 35, line: 9 },
},
},
Punctuator {
type: 'Punctuator',
value: '}',
- range: [289, 290],
+ range: [283, 284],
loc: {
start: { column: 0, line: 10 },
end: { column: 1, line: 10 },
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/fixture.ts b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/fixture.ts
deleted file mode 100644
index 5e97bf7c7bb7..000000000000
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/fixture.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-// TODO: This fixture might be too large, and if so should be split up.
-
-export { type A, type B } from 'mod';
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/2-TSESTree-Tokens.shot
deleted file mode 100644
index abc413b3fe60..000000000000
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/2-TSESTree-Tokens.shot
+++ /dev/null
@@ -1,116 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures legacy-fixtures basics type-only-export-specifiers TSESTree - Tokens 1`] = `
-[
- Keyword {
- type: "Keyword",
- value: "export",
-
- range: [73, 79],
- loc: {
- start: { column: 0, line: 3 },
- end: { column: 6, line: 3 },
- },
- },
- Punctuator {
- type: "Punctuator",
- value: "{",
-
- range: [80, 81],
- loc: {
- start: { column: 7, line: 3 },
- end: { column: 8, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "type",
-
- range: [82, 86],
- loc: {
- start: { column: 9, line: 3 },
- end: { column: 13, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "A",
-
- range: [87, 88],
- loc: {
- start: { column: 14, line: 3 },
- end: { column: 15, line: 3 },
- },
- },
- Punctuator {
- type: "Punctuator",
- value: ",",
-
- range: [88, 89],
- loc: {
- start: { column: 15, line: 3 },
- end: { column: 16, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "type",
-
- range: [90, 94],
- loc: {
- start: { column: 17, line: 3 },
- end: { column: 21, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "B",
-
- range: [95, 96],
- loc: {
- start: { column: 22, line: 3 },
- end: { column: 23, line: 3 },
- },
- },
- Punctuator {
- type: "Punctuator",
- value: "}",
-
- range: [97, 98],
- loc: {
- start: { column: 24, line: 3 },
- end: { column: 25, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "from",
-
- range: [99, 103],
- loc: {
- start: { column: 26, line: 3 },
- end: { column: 30, line: 3 },
- },
- },
- String {
- type: "String",
- value: "'mod'",
-
- range: [104, 109],
- loc: {
- start: { column: 31, line: 3 },
- end: { column: 36, line: 3 },
- },
- },
- Punctuator {
- type: "Punctuator",
- value: ";",
-
- range: [109, 110],
- loc: {
- start: { column: 36, line: 3 },
- end: { column: 37, line: 3 },
- },
- },
-]
-`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/4-Babel-Tokens.shot
deleted file mode 100644
index 9e084aa3850f..000000000000
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/4-Babel-Tokens.shot
+++ /dev/null
@@ -1,116 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures legacy-fixtures basics type-only-export-specifiers Babel - Tokens 1`] = `
-[
- Keyword {
- type: "Keyword",
- value: "export",
-
- range: [73, 79],
- loc: {
- start: { column: 0, line: 3 },
- end: { column: 6, line: 3 },
- },
- },
- Punctuator {
- type: "Punctuator",
- value: "{",
-
- range: [80, 81],
- loc: {
- start: { column: 7, line: 3 },
- end: { column: 8, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "type",
-
- range: [82, 86],
- loc: {
- start: { column: 9, line: 3 },
- end: { column: 13, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "A",
-
- range: [87, 88],
- loc: {
- start: { column: 14, line: 3 },
- end: { column: 15, line: 3 },
- },
- },
- Punctuator {
- type: "Punctuator",
- value: ",",
-
- range: [88, 89],
- loc: {
- start: { column: 15, line: 3 },
- end: { column: 16, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "type",
-
- range: [90, 94],
- loc: {
- start: { column: 17, line: 3 },
- end: { column: 21, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "B",
-
- range: [95, 96],
- loc: {
- start: { column: 22, line: 3 },
- end: { column: 23, line: 3 },
- },
- },
- Punctuator {
- type: "Punctuator",
- value: "}",
-
- range: [97, 98],
- loc: {
- start: { column: 24, line: 3 },
- end: { column: 25, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "from",
-
- range: [99, 103],
- loc: {
- start: { column: 26, line: 3 },
- end: { column: 30, line: 3 },
- },
- },
- String {
- type: "String",
- value: "'mod'",
-
- range: [104, 109],
- loc: {
- start: { column: 31, line: 3 },
- end: { column: 36, line: 3 },
- },
- },
- Punctuator {
- type: "Punctuator",
- value: ";",
-
- range: [109, 110],
- loc: {
- start: { column: 36, line: 3 },
- end: { column: 37, line: 3 },
- },
- },
-]
-`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/fixture.ts b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/fixture.ts
deleted file mode 100644
index d069f3df8745..000000000000
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/fixture.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-// TODO: This fixture might be too large, and if so should be split up.
-
-import { type A, type B } from 'mod';
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/2-TSESTree-Tokens.shot
deleted file mode 100644
index 8b95ed9fa420..000000000000
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/2-TSESTree-Tokens.shot
+++ /dev/null
@@ -1,116 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures legacy-fixtures basics type-only-import-specifiers TSESTree - Tokens 1`] = `
-[
- Keyword {
- type: "Keyword",
- value: "import",
-
- range: [73, 79],
- loc: {
- start: { column: 0, line: 3 },
- end: { column: 6, line: 3 },
- },
- },
- Punctuator {
- type: "Punctuator",
- value: "{",
-
- range: [80, 81],
- loc: {
- start: { column: 7, line: 3 },
- end: { column: 8, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "type",
-
- range: [82, 86],
- loc: {
- start: { column: 9, line: 3 },
- end: { column: 13, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "A",
-
- range: [87, 88],
- loc: {
- start: { column: 14, line: 3 },
- end: { column: 15, line: 3 },
- },
- },
- Punctuator {
- type: "Punctuator",
- value: ",",
-
- range: [88, 89],
- loc: {
- start: { column: 15, line: 3 },
- end: { column: 16, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "type",
-
- range: [90, 94],
- loc: {
- start: { column: 17, line: 3 },
- end: { column: 21, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "B",
-
- range: [95, 96],
- loc: {
- start: { column: 22, line: 3 },
- end: { column: 23, line: 3 },
- },
- },
- Punctuator {
- type: "Punctuator",
- value: "}",
-
- range: [97, 98],
- loc: {
- start: { column: 24, line: 3 },
- end: { column: 25, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "from",
-
- range: [99, 103],
- loc: {
- start: { column: 26, line: 3 },
- end: { column: 30, line: 3 },
- },
- },
- String {
- type: "String",
- value: "'mod'",
-
- range: [104, 109],
- loc: {
- start: { column: 31, line: 3 },
- end: { column: 36, line: 3 },
- },
- },
- Punctuator {
- type: "Punctuator",
- value: ";",
-
- range: [109, 110],
- loc: {
- start: { column: 36, line: 3 },
- end: { column: 37, line: 3 },
- },
- },
-]
-`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/4-Babel-Tokens.shot
deleted file mode 100644
index a461fc4b32a4..000000000000
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/4-Babel-Tokens.shot
+++ /dev/null
@@ -1,116 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AST Fixtures legacy-fixtures basics type-only-import-specifiers Babel - Tokens 1`] = `
-[
- Keyword {
- type: "Keyword",
- value: "import",
-
- range: [73, 79],
- loc: {
- start: { column: 0, line: 3 },
- end: { column: 6, line: 3 },
- },
- },
- Punctuator {
- type: "Punctuator",
- value: "{",
-
- range: [80, 81],
- loc: {
- start: { column: 7, line: 3 },
- end: { column: 8, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "type",
-
- range: [82, 86],
- loc: {
- start: { column: 9, line: 3 },
- end: { column: 13, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "A",
-
- range: [87, 88],
- loc: {
- start: { column: 14, line: 3 },
- end: { column: 15, line: 3 },
- },
- },
- Punctuator {
- type: "Punctuator",
- value: ",",
-
- range: [88, 89],
- loc: {
- start: { column: 15, line: 3 },
- end: { column: 16, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "type",
-
- range: [90, 94],
- loc: {
- start: { column: 17, line: 3 },
- end: { column: 21, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "B",
-
- range: [95, 96],
- loc: {
- start: { column: 22, line: 3 },
- end: { column: 23, line: 3 },
- },
- },
- Punctuator {
- type: "Punctuator",
- value: "}",
-
- range: [97, 98],
- loc: {
- start: { column: 24, line: 3 },
- end: { column: 25, line: 3 },
- },
- },
- Identifier {
- type: "Identifier",
- value: "from",
-
- range: [99, 103],
- loc: {
- start: { column: 26, line: 3 },
- end: { column: 30, line: 3 },
- },
- },
- String {
- type: "String",
- value: "'mod'",
-
- range: [104, 109],
- loc: {
- start: { column: 31, line: 3 },
- end: { column: 36, line: 3 },
- },
- },
- Punctuator {
- type: "Punctuator",
- value: ";",
-
- range: [109, 110],
- loc: {
- start: { column: 36, line: 3 },
- end: { column: 37, line: 3 },
- },
- },
-]
-`;
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/_error_/literal-specifier/fixture.ts b/packages/ast-spec/src/special/ExportSpecifier/fixtures/_error_/literal-specifier/fixture.ts
new file mode 100644
index 000000000000..4e5fb7826321
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/_error_/literal-specifier/fixture.ts
@@ -0,0 +1 @@
+export { 'A' as A };
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/_error_/literal-specifier/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/_error_/literal-specifier/snapshots/1-TSESTree-Error.shot
new file mode 100644
index 000000000000..ee76a4ad0f5a
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/_error_/literal-specifier/snapshots/1-TSESTree-Error.shot
@@ -0,0 +1,8 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ExportSpecifier _error_ literal-specifier TSESTree - Error 1`] = `
+"TSError
+> 1 | export { 'A' as A };
+ | ^^^ A string literal cannot be used as a local exported binding without \`from\`.
+ 2 |"
+`;
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/_error_/literal-specifier/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/_error_/literal-specifier/snapshots/2-Babel-Error.shot
new file mode 100644
index 000000000000..371eef93ebcd
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/_error_/literal-specifier/snapshots/2-Babel-Error.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ExportSpecifier _error_ literal-specifier Babel - Error 1`] = `
+[SyntaxError: A string literal cannot be used as an exported binding without \`from\`.
+- Did you mean \`export { 'A' as 'A' } from 'some-module'\`? (1:9)]
+`;
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/_error_/literal-specifier/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/_error_/literal-specifier/snapshots/3-Alignment-Error.shot
new file mode 100644
index 000000000000..1b30c3094d7c
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/_error_/literal-specifier/snapshots/3-Alignment-Error.shot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ExportSpecifier _error_ literal-specifier Error Alignment 1`] = `"Both errored"`;
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/fixture.ts b/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/fixture.ts
new file mode 100644
index 000000000000..a45b013df7fa
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/fixture.ts
@@ -0,0 +1 @@
+export { A as 'A' } from 'mod';
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..b69c0578632e
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,74 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ExportSpecifier literal-specifier TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ attributes: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [25, 30],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Literal {
+ type: "Literal",
+ raw: "'A'",
+ value: "A",
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ decorators: [],
+ name: "A",
+ optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 17],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 31],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 32],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..fb7598ea9115
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ExportSpecifier literal-specifier TSESTree - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "A",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "as",
+
+ range: [11, 13],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'A'",
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [20, 24],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [25, 30],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [30, 31],
+ loc: {
+ start: { column: 30, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..359714d4fdb0
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/3-Babel-AST.shot
@@ -0,0 +1,72 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ExportSpecifier literal-specifier Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ assertions: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [25, 30],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Literal {
+ type: "Literal",
+ raw: "'A'",
+ value: "A",
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ name: "A",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 17],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 31],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 32],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..c266c934e8af
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ExportSpecifier literal-specifier Babel - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "A",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "as",
+
+ range: [11, 13],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'A'",
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [20, 24],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [25, 30],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [30, 31],
+ loc: {
+ start: { column: 30, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..f904d790041a
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,79 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ExportSpecifier literal-specifier AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExportNamedDeclaration {
+ type: 'ExportNamedDeclaration',
+- attributes: Array [],
++ assertions: Array [],
+ declaration: null,
+ exportKind: 'value',
+ source: Literal {
+ type: 'Literal',
+ raw: '\\'mod\\'',
+ value: 'mod',
+
+ range: [25, 30],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ specifiers: Array [
+ ExportSpecifier {
+ type: 'ExportSpecifier',
+ exported: Literal {
+ type: 'Literal',
+ raw: '\\'A\\'',
+ value: 'A',
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ exportKind: 'value',
+ local: Identifier {
+ type: 'Identifier',
+- decorators: Array [],
+ name: 'A',
+- optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 17],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 31],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'module',
+
+ range: [0, 32],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/6-AST-Alignment-Tokens.shot
similarity index 52%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/6-AST-Alignment-Tokens.shot
rename to packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/6-AST-Alignment-Tokens.shot
index ce523723d51e..e722c5c9970c 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/aliased/snapshots/6-AST-Alignment-Tokens.shot
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/literal-specifier/snapshots/6-AST-Alignment-Tokens.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration aliased AST Alignment - Token 1`] = `
+exports[`AST Fixtures special ExportSpecifier literal-specifier AST Alignment - Token 1`] = `
"Snapshot Diff:
Compared values have no visual difference."
`;
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/fixture.ts b/packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/fixture.ts
new file mode 100644
index 000000000000..38ebd81da095
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/fixture.ts
@@ -0,0 +1 @@
+export { type A, type B } from 'mod';
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/1-TSESTree-AST.shot
similarity index 57%
rename from packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/1-TSESTree-AST.shot
rename to packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/1-TSESTree-AST.shot
index efc42fbfc7c4..4c6072d77e0d 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/1-TSESTree-AST.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures legacy-fixtures basics type-only-export-specifiers TSESTree - AST 1`] = `
+exports[`AST Fixtures special ExportSpecifier type-only-export-specifiers TSESTree - AST 1`] = `
Program {
type: "Program",
body: [
@@ -14,10 +14,10 @@ Program {
raw: "'mod'",
value: "mod",
- range: [104, 109],
+ range: [31, 36],
loc: {
- start: { column: 31, line: 3 },
- end: { column: 36, line: 3 },
+ start: { column: 31, line: 1 },
+ end: { column: 36, line: 1 },
},
},
specifiers: [
@@ -29,10 +29,10 @@ Program {
name: "A",
optional: false,
- range: [87, 88],
+ range: [14, 15],
loc: {
- start: { column: 14, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
},
},
exportKind: "type",
@@ -42,17 +42,17 @@ Program {
name: "A",
optional: false,
- range: [87, 88],
+ range: [14, 15],
loc: {
- start: { column: 14, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
},
},
- range: [82, 88],
+ range: [9, 15],
loc: {
- start: { column: 9, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 9, line: 1 },
+ end: { column: 15, line: 1 },
},
},
ExportSpecifier {
@@ -63,10 +63,10 @@ Program {
name: "B",
optional: false,
- range: [95, 96],
+ range: [22, 23],
loc: {
- start: { column: 22, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
},
},
exportKind: "type",
@@ -76,34 +76,34 @@ Program {
name: "B",
optional: false,
- range: [95, 96],
+ range: [22, 23],
loc: {
- start: { column: 22, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
},
},
- range: [90, 96],
+ range: [17, 23],
loc: {
- start: { column: 17, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 17, line: 1 },
+ end: { column: 23, line: 1 },
},
},
],
- range: [73, 110],
+ range: [0, 37],
loc: {
- start: { column: 0, line: 3 },
- end: { column: 37, line: 3 },
+ start: { column: 0, line: 1 },
+ end: { column: 37, line: 1 },
},
},
],
sourceType: "module",
- range: [73, 111],
+ range: [0, 38],
loc: {
- start: { column: 0, line: 3 },
- end: { column: 0, line: 4 },
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
},
}
`;
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..95164c4fdb1e
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,116 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ExportSpecifier type-only-export-specifiers TSESTree - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "type",
+
+ range: [9, 13],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "A",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [15, 16],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "type",
+
+ range: [17, 21],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "B",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [26, 30],
+ loc: {
+ start: { column: 26, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [31, 36],
+ loc: {
+ start: { column: 31, line: 1 },
+ end: { column: 36, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [36, 37],
+ loc: {
+ start: { column: 36, line: 1 },
+ end: { column: 37, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/3-Babel-AST.shot
similarity index 53%
rename from packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/3-Babel-AST.shot
rename to packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/3-Babel-AST.shot
index 63fad08067d5..0fbd9915e81a 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/3-Babel-AST.shot
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/3-Babel-AST.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures legacy-fixtures basics type-only-export-specifiers Babel - AST 1`] = `
+exports[`AST Fixtures special ExportSpecifier type-only-export-specifiers Babel - AST 1`] = `
Program {
type: "Program",
body: [
@@ -14,10 +14,10 @@ Program {
raw: "'mod'",
value: "mod",
- range: [104, 109],
+ range: [31, 36],
loc: {
- start: { column: 31, line: 3 },
- end: { column: 36, line: 3 },
+ start: { column: 31, line: 1 },
+ end: { column: 36, line: 1 },
},
},
specifiers: [
@@ -27,10 +27,10 @@ Program {
type: "Identifier",
name: "A",
- range: [87, 88],
+ range: [14, 15],
loc: {
- start: { column: 14, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
},
},
exportKind: "type",
@@ -38,17 +38,17 @@ Program {
type: "Identifier",
name: "A",
- range: [87, 88],
+ range: [14, 15],
loc: {
- start: { column: 14, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
},
},
- range: [82, 88],
+ range: [9, 15],
loc: {
- start: { column: 9, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 9, line: 1 },
+ end: { column: 15, line: 1 },
},
},
ExportSpecifier {
@@ -57,10 +57,10 @@ Program {
type: "Identifier",
name: "B",
- range: [95, 96],
+ range: [22, 23],
loc: {
- start: { column: 22, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
},
},
exportKind: "type",
@@ -68,34 +68,34 @@ Program {
type: "Identifier",
name: "B",
- range: [95, 96],
+ range: [22, 23],
loc: {
- start: { column: 22, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
},
},
- range: [90, 96],
+ range: [17, 23],
loc: {
- start: { column: 17, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 17, line: 1 },
+ end: { column: 23, line: 1 },
},
},
],
- range: [73, 110],
+ range: [0, 37],
loc: {
- start: { column: 0, line: 3 },
- end: { column: 37, line: 3 },
+ start: { column: 0, line: 1 },
+ end: { column: 37, line: 1 },
},
},
],
sourceType: "module",
- range: [73, 111],
+ range: [0, 38],
loc: {
- start: { column: 0, line: 3 },
- end: { column: 0, line: 4 },
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
},
}
`;
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..753a74b9f5d1
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,116 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ExportSpecifier type-only-export-specifiers Babel - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "type",
+
+ range: [9, 13],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "A",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [15, 16],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "type",
+
+ range: [17, 21],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "B",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [26, 30],
+ loc: {
+ start: { column: 26, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [31, 36],
+ loc: {
+ start: { column: 31, line: 1 },
+ end: { column: 36, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [36, 37],
+ loc: {
+ start: { column: 36, line: 1 },
+ end: { column: 37, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/5-AST-Alignment-AST.shot
similarity index 60%
rename from packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/5-AST-Alignment-AST.shot
rename to packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/5-AST-Alignment-AST.shot
index 189f9140bbb1..0f14a2e61779 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/5-AST-Alignment-AST.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures legacy-fixtures basics type-only-export-specifiers AST Alignment - AST 1`] = `
+exports[`AST Fixtures special ExportSpecifier type-only-export-specifiers AST Alignment - AST 1`] = `
"Snapshot Diff:
- TSESTree
+ Babel
@@ -19,10 +19,10 @@ exports[`AST Fixtures legacy-fixtures basics type-only-export-specifiers AST Ali
raw: '\\'mod\\'',
value: 'mod',
- range: [104, 109],
+ range: [31, 36],
loc: {
- start: { column: 31, line: 3 },
- end: { column: 36, line: 3 },
+ start: { column: 31, line: 1 },
+ end: { column: 36, line: 1 },
},
},
specifiers: Array [
@@ -34,10 +34,10 @@ exports[`AST Fixtures legacy-fixtures basics type-only-export-specifiers AST Ali
name: 'A',
- optional: false,
- range: [87, 88],
+ range: [14, 15],
loc: {
- start: { column: 14, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
},
},
exportKind: 'type',
@@ -47,17 +47,17 @@ exports[`AST Fixtures legacy-fixtures basics type-only-export-specifiers AST Ali
name: 'A',
- optional: false,
- range: [87, 88],
+ range: [14, 15],
loc: {
- start: { column: 14, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
},
},
- range: [82, 88],
+ range: [9, 15],
loc: {
- start: { column: 9, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 9, line: 1 },
+ end: { column: 15, line: 1 },
},
},
ExportSpecifier {
@@ -68,10 +68,10 @@ exports[`AST Fixtures legacy-fixtures basics type-only-export-specifiers AST Ali
name: 'B',
- optional: false,
- range: [95, 96],
+ range: [22, 23],
loc: {
- start: { column: 22, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
},
},
exportKind: 'type',
@@ -81,34 +81,34 @@ exports[`AST Fixtures legacy-fixtures basics type-only-export-specifiers AST Ali
name: 'B',
- optional: false,
- range: [95, 96],
+ range: [22, 23],
loc: {
- start: { column: 22, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
},
},
- range: [90, 96],
+ range: [17, 23],
loc: {
- start: { column: 17, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 17, line: 1 },
+ end: { column: 23, line: 1 },
},
},
],
- range: [73, 110],
+ range: [0, 37],
loc: {
- start: { column: 0, line: 3 },
- end: { column: 37, line: 3 },
+ start: { column: 0, line: 1 },
+ end: { column: 37, line: 1 },
},
},
],
sourceType: 'module',
- range: [73, 111],
+ range: [0, 38],
loc: {
- start: { column: 0, line: 3 },
- end: { column: 0, line: 4 },
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
},
}"
`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/6-AST-Alignment-Tokens.shot
similarity index 50%
rename from packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/6-AST-Alignment-Tokens.shot
rename to packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/6-AST-Alignment-Tokens.shot
index 1db1ef638f8d..fd90fbaead1c 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-export-specifiers/snapshots/6-AST-Alignment-Tokens.shot
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/type-only-export-specifiers/snapshots/6-AST-Alignment-Tokens.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures legacy-fixtures basics type-only-export-specifiers AST Alignment - Token 1`] = `
+exports[`AST Fixtures special ExportSpecifier type-only-export-specifiers AST Alignment - Token 1`] = `
"Snapshot Diff:
Compared values have no visual difference."
`;
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/fixture.ts b/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/fixture.ts
new file mode 100644
index 000000000000..a45b013df7fa
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/fixture.ts
@@ -0,0 +1 @@
+export { A as 'A' } from 'mod';
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..a78bbd9c862e
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,74 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ExportSpecifier value-export-specifier TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ attributes: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [25, 30],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Literal {
+ type: "Literal",
+ raw: "'A'",
+ value: "A",
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ decorators: [],
+ name: "A",
+ optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 17],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 31],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 32],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..8e76817d8de0
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ExportSpecifier value-export-specifier TSESTree - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "A",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "as",
+
+ range: [11, 13],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'A'",
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [20, 24],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [25, 30],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [30, 31],
+ loc: {
+ start: { column: 30, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..fda29c2069d0
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/3-Babel-AST.shot
@@ -0,0 +1,72 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ExportSpecifier value-export-specifier Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ExportNamedDeclaration {
+ type: "ExportNamedDeclaration",
+ assertions: [],
+ declaration: null,
+ exportKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [25, 30],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ specifiers: [
+ ExportSpecifier {
+ type: "ExportSpecifier",
+ exported: Literal {
+ type: "Literal",
+ raw: "'A'",
+ value: "A",
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ exportKind: "value",
+ local: Identifier {
+ type: "Identifier",
+ name: "A",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 17],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 31],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 32],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..93b98c503ed2
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,96 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ExportSpecifier value-export-specifier Babel - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "export",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "A",
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "as",
+
+ range: [11, 13],
+ loc: {
+ start: { column: 11, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'A'",
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [18, 19],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 19, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [20, 24],
+ loc: {
+ start: { column: 20, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [25, 30],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [30, 31],
+ loc: {
+ start: { column: 30, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..df7bfcd78711
--- /dev/null
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,79 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ExportSpecifier value-export-specifier AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ExportNamedDeclaration {
+ type: 'ExportNamedDeclaration',
+- attributes: Array [],
++ assertions: Array [],
+ declaration: null,
+ exportKind: 'value',
+ source: Literal {
+ type: 'Literal',
+ raw: '\\'mod\\'',
+ value: 'mod',
+
+ range: [25, 30],
+ loc: {
+ start: { column: 25, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ specifiers: Array [
+ ExportSpecifier {
+ type: 'ExportSpecifier',
+ exported: Literal {
+ type: 'Literal',
+ raw: '\\'A\\'',
+ value: 'A',
+
+ range: [14, 17],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ exportKind: 'value',
+ local: Identifier {
+ type: 'Identifier',
+- decorators: Array [],
+ name: 'A',
+- optional: false,
+
+ range: [9, 10],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 10, line: 1 },
+ },
+ },
+
+ range: [9, 17],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 31],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 31, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'module',
+
+ range: [0, 32],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/6-AST-Alignment-Tokens.shot
similarity index 50%
rename from packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/6-AST-Alignment-Tokens.shot
rename to packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/6-AST-Alignment-Tokens.shot
index f5edce33d5b5..f5be7bfe4cb7 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/6-AST-Alignment-Tokens.shot
+++ b/packages/ast-spec/src/special/ExportSpecifier/fixtures/value-export-specifier/snapshots/6-AST-Alignment-Tokens.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures legacy-fixtures basics type-only-import-specifiers AST Alignment - Token 1`] = `
+exports[`AST Fixtures special ExportSpecifier value-export-specifier AST Alignment - Token 1`] = `
"Snapshot Diff:
Compared values have no visual difference."
`;
diff --git a/packages/ast-spec/src/special/ExportSpecifier/spec.ts b/packages/ast-spec/src/special/ExportSpecifier/spec.ts
index cac5c06c2e43..5d4d355fc2c3 100644
--- a/packages/ast-spec/src/special/ExportSpecifier/spec.ts
+++ b/packages/ast-spec/src/special/ExportSpecifier/spec.ts
@@ -2,10 +2,25 @@ import type { AST_NODE_TYPES } from '../../ast-node-types';
import type { BaseNode } from '../../base/BaseNode';
import type { ExportKind } from '../../declaration/ExportAndImportKind';
import type { Identifier } from '../../expression/Identifier/spec';
+import type { StringLiteral } from '../../expression/literal/StringLiteral/spec';
-export interface ExportSpecifier extends BaseNode {
+interface ExportSpecifierBase extends BaseNode {
type: AST_NODE_TYPES.ExportSpecifier;
- exported: Identifier;
+ exported: Identifier | StringLiteral;
exportKind: ExportKind;
+ local: Identifier | StringLiteral;
+}
+
+export interface ExportSpecifierWithIdentifierLocal
+ extends ExportSpecifierBase {
local: Identifier;
}
+
+export interface ExportSpecifierWithStringOrLiteralLocal
+ extends ExportSpecifierBase {
+ local: Identifier | StringLiteral;
+}
+
+export type ExportSpecifier =
+ | ExportSpecifierWithIdentifierLocal
+ | ExportSpecifierWithStringOrLiteralLocal;
diff --git a/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/fixture.ts b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/fixture.ts
new file mode 100644
index 000000000000..3c8d04710e4f
--- /dev/null
+++ b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/fixture.ts
@@ -0,0 +1 @@
+import { type A } from 'mod';
diff --git a/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/1-TSESTree-AST.shot
new file mode 100644
index 000000000000..abee47b05717
--- /dev/null
+++ b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/1-TSESTree-AST.shot
@@ -0,0 +1,74 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ImportSpecifier type-only-import-specifier TSESTree - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ImportDeclaration {
+ type: "ImportDeclaration",
+ attributes: [],
+ importKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [23, 28],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ specifiers: [
+ ImportSpecifier {
+ type: "ImportSpecifier",
+ imported: Identifier {
+ type: "Identifier",
+ decorators: [],
+ name: "A",
+ optional: false,
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ importKind: "type",
+ local: Identifier {
+ type: "Identifier",
+ decorators: [],
+ name: "A",
+ optional: false,
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+
+ range: [9, 15],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 30],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..dff80ff21838
--- /dev/null
+++ b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,86 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ImportSpecifier type-only-import-specifier TSESTree - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "import",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "type",
+
+ range: [9, 13],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "A",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [16, 17],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [18, 22],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [23, 28],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/3-Babel-AST.shot
new file mode 100644
index 000000000000..643571d60716
--- /dev/null
+++ b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/3-Babel-AST.shot
@@ -0,0 +1,70 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ImportSpecifier type-only-import-specifier Babel - AST 1`] = `
+Program {
+ type: "Program",
+ body: [
+ ImportDeclaration {
+ type: "ImportDeclaration",
+ assertions: [],
+ importKind: "value",
+ source: Literal {
+ type: "Literal",
+ raw: "'mod'",
+ value: "mod",
+
+ range: [23, 28],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ specifiers: [
+ ImportSpecifier {
+ type: "ImportSpecifier",
+ imported: Identifier {
+ type: "Identifier",
+ name: "A",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ importKind: "type",
+ local: Identifier {
+ type: "Identifier",
+ name: "A",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+
+ range: [9, 15],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ ],
+ sourceType: "module",
+
+ range: [0, 30],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+}
+`;
diff --git a/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..e265e9d9061b
--- /dev/null
+++ b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,86 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ImportSpecifier type-only-import-specifier Babel - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "import",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "type",
+
+ range: [9, 13],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "A",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [16, 17],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [18, 22],
+ loc: {
+ start: { column: 18, line: 1 },
+ end: { column: 22, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [23, 28],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [28, 29],
+ loc: {
+ start: { column: 28, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/5-AST-Alignment-AST.shot
new file mode 100644
index 000000000000..6fab4ad34bca
--- /dev/null
+++ b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/5-AST-Alignment-AST.shot
@@ -0,0 +1,79 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ImportSpecifier type-only-import-specifier AST Alignment - AST 1`] = `
+"Snapshot Diff:
+- TSESTree
++ Babel
+
+ Program {
+ type: 'Program',
+ body: Array [
+ ImportDeclaration {
+ type: 'ImportDeclaration',
+- attributes: Array [],
++ assertions: Array [],
+ importKind: 'value',
+ source: Literal {
+ type: 'Literal',
+ raw: '\\'mod\\'',
+ value: 'mod',
+
+ range: [23, 28],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 28, line: 1 },
+ },
+ },
+ specifiers: Array [
+ ImportSpecifier {
+ type: 'ImportSpecifier',
+ imported: Identifier {
+ type: 'Identifier',
+- decorators: Array [],
+ name: 'A',
+- optional: false,
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ importKind: 'type',
+ local: Identifier {
+ type: 'Identifier',
+- decorators: Array [],
+ name: 'A',
+- optional: false,
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+
+ range: [9, 15],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ ],
+
+ range: [0, 29],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 29, line: 1 },
+ },
+ },
+ ],
+ sourceType: 'module',
+
+ range: [0, 30],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
+ },
+ }"
+`;
diff --git a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/6-AST-Alignment-Tokens.shot
similarity index 50%
rename from packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/6-AST-Alignment-Tokens.shot
rename to packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/6-AST-Alignment-Tokens.shot
index 939b36fc37cd..d24c34c94c95 100644
--- a/packages/ast-spec/src/declaration/ExportNamedDeclaration/fixtures/identifier-many/snapshots/6-AST-Alignment-Tokens.shot
+++ b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifier/snapshots/6-AST-Alignment-Tokens.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures declaration ExportNamedDeclaration identifier-many AST Alignment - Token 1`] = `
+exports[`AST Fixtures special ImportSpecifier type-only-import-specifier AST Alignment - Token 1`] = `
"Snapshot Diff:
Compared values have no visual difference."
`;
diff --git a/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/fixture.ts b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/fixture.ts
new file mode 100644
index 000000000000..26dcb4c1dc16
--- /dev/null
+++ b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/fixture.ts
@@ -0,0 +1 @@
+import { type A, type B } from 'mod';
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/1-TSESTree-AST.shot
similarity index 57%
rename from packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/1-TSESTree-AST.shot
rename to packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/1-TSESTree-AST.shot
index 82aea11224da..ee1f5a5aacad 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/1-TSESTree-AST.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures legacy-fixtures basics type-only-import-specifiers TSESTree - AST 1`] = `
+exports[`AST Fixtures special ImportSpecifier type-only-import-specifiers TSESTree - AST 1`] = `
Program {
type: "Program",
body: [
@@ -13,10 +13,10 @@ Program {
raw: "'mod'",
value: "mod",
- range: [104, 109],
+ range: [31, 36],
loc: {
- start: { column: 31, line: 3 },
- end: { column: 36, line: 3 },
+ start: { column: 31, line: 1 },
+ end: { column: 36, line: 1 },
},
},
specifiers: [
@@ -28,10 +28,10 @@ Program {
name: "A",
optional: false,
- range: [87, 88],
+ range: [14, 15],
loc: {
- start: { column: 14, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
},
},
importKind: "type",
@@ -41,17 +41,17 @@ Program {
name: "A",
optional: false,
- range: [87, 88],
+ range: [14, 15],
loc: {
- start: { column: 14, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
},
},
- range: [82, 88],
+ range: [9, 15],
loc: {
- start: { column: 9, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 9, line: 1 },
+ end: { column: 15, line: 1 },
},
},
ImportSpecifier {
@@ -62,10 +62,10 @@ Program {
name: "B",
optional: false,
- range: [95, 96],
+ range: [22, 23],
loc: {
- start: { column: 22, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
},
},
importKind: "type",
@@ -75,34 +75,34 @@ Program {
name: "B",
optional: false,
- range: [95, 96],
+ range: [22, 23],
loc: {
- start: { column: 22, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
},
},
- range: [90, 96],
+ range: [17, 23],
loc: {
- start: { column: 17, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 17, line: 1 },
+ end: { column: 23, line: 1 },
},
},
],
- range: [73, 110],
+ range: [0, 37],
loc: {
- start: { column: 0, line: 3 },
- end: { column: 37, line: 3 },
+ start: { column: 0, line: 1 },
+ end: { column: 37, line: 1 },
},
},
],
sourceType: "module",
- range: [73, 111],
+ range: [0, 38],
loc: {
- start: { column: 0, line: 3 },
- end: { column: 0, line: 4 },
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
},
}
`;
diff --git a/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/2-TSESTree-Tokens.shot
new file mode 100644
index 000000000000..75ea97061ea2
--- /dev/null
+++ b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/2-TSESTree-Tokens.shot
@@ -0,0 +1,116 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ImportSpecifier type-only-import-specifiers TSESTree - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "import",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "type",
+
+ range: [9, 13],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "A",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [15, 16],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "type",
+
+ range: [17, 21],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "B",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [26, 30],
+ loc: {
+ start: { column: 26, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [31, 36],
+ loc: {
+ start: { column: 31, line: 1 },
+ end: { column: 36, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [36, 37],
+ loc: {
+ start: { column: 36, line: 1 },
+ end: { column: 37, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/3-Babel-AST.shot
similarity index 52%
rename from packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/3-Babel-AST.shot
rename to packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/3-Babel-AST.shot
index 4cd73830077e..9d2ded63258e 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/3-Babel-AST.shot
+++ b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/3-Babel-AST.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures legacy-fixtures basics type-only-import-specifiers Babel - AST 1`] = `
+exports[`AST Fixtures special ImportSpecifier type-only-import-specifiers Babel - AST 1`] = `
Program {
type: "Program",
body: [
@@ -13,10 +13,10 @@ Program {
raw: "'mod'",
value: "mod",
- range: [104, 109],
+ range: [31, 36],
loc: {
- start: { column: 31, line: 3 },
- end: { column: 36, line: 3 },
+ start: { column: 31, line: 1 },
+ end: { column: 36, line: 1 },
},
},
specifiers: [
@@ -26,10 +26,10 @@ Program {
type: "Identifier",
name: "A",
- range: [87, 88],
+ range: [14, 15],
loc: {
- start: { column: 14, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
},
},
importKind: "type",
@@ -37,17 +37,17 @@ Program {
type: "Identifier",
name: "A",
- range: [87, 88],
+ range: [14, 15],
loc: {
- start: { column: 14, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
},
},
- range: [82, 88],
+ range: [9, 15],
loc: {
- start: { column: 9, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 9, line: 1 },
+ end: { column: 15, line: 1 },
},
},
ImportSpecifier {
@@ -56,10 +56,10 @@ Program {
type: "Identifier",
name: "B",
- range: [95, 96],
+ range: [22, 23],
loc: {
- start: { column: 22, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
},
},
importKind: "type",
@@ -67,34 +67,34 @@ Program {
type: "Identifier",
name: "B",
- range: [95, 96],
+ range: [22, 23],
loc: {
- start: { column: 22, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
},
},
- range: [90, 96],
+ range: [17, 23],
loc: {
- start: { column: 17, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 17, line: 1 },
+ end: { column: 23, line: 1 },
},
},
],
- range: [73, 110],
+ range: [0, 37],
loc: {
- start: { column: 0, line: 3 },
- end: { column: 37, line: 3 },
+ start: { column: 0, line: 1 },
+ end: { column: 37, line: 1 },
},
},
],
sourceType: "module",
- range: [73, 111],
+ range: [0, 38],
loc: {
- start: { column: 0, line: 3 },
- end: { column: 0, line: 4 },
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
},
}
`;
diff --git a/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/4-Babel-Tokens.shot
new file mode 100644
index 000000000000..0e26034ffd30
--- /dev/null
+++ b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/4-Babel-Tokens.shot
@@ -0,0 +1,116 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ImportSpecifier type-only-import-specifiers Babel - Tokens 1`] = `
+[
+ Keyword {
+ type: "Keyword",
+ value: "import",
+
+ range: [0, 6],
+ loc: {
+ start: { column: 0, line: 1 },
+ end: { column: 6, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "{",
+
+ range: [7, 8],
+ loc: {
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "type",
+
+ range: [9, 13],
+ loc: {
+ start: { column: 9, line: 1 },
+ end: { column: 13, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "A",
+
+ range: [14, 15],
+ loc: {
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ",",
+
+ range: [15, 16],
+ loc: {
+ start: { column: 15, line: 1 },
+ end: { column: 16, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "type",
+
+ range: [17, 21],
+ loc: {
+ start: { column: 17, line: 1 },
+ end: { column: 21, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "B",
+
+ range: [22, 23],
+ loc: {
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: "}",
+
+ range: [24, 25],
+ loc: {
+ start: { column: 24, line: 1 },
+ end: { column: 25, line: 1 },
+ },
+ },
+ Identifier {
+ type: "Identifier",
+ value: "from",
+
+ range: [26, 30],
+ loc: {
+ start: { column: 26, line: 1 },
+ end: { column: 30, line: 1 },
+ },
+ },
+ String {
+ type: "String",
+ value: "'mod'",
+
+ range: [31, 36],
+ loc: {
+ start: { column: 31, line: 1 },
+ end: { column: 36, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ";",
+
+ range: [36, 37],
+ loc: {
+ start: { column: 36, line: 1 },
+ end: { column: 37, line: 1 },
+ },
+ },
+]
+`;
diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/5-AST-Alignment-AST.shot
similarity index 59%
rename from packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/5-AST-Alignment-AST.shot
rename to packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/5-AST-Alignment-AST.shot
index 48020406f92a..e2b01ef26491 100644
--- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/type-only-import-specifiers/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/5-AST-Alignment-AST.shot
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`AST Fixtures legacy-fixtures basics type-only-import-specifiers AST Alignment - AST 1`] = `
+exports[`AST Fixtures special ImportSpecifier type-only-import-specifiers AST Alignment - AST 1`] = `
"Snapshot Diff:
- TSESTree
+ Babel
@@ -18,10 +18,10 @@ exports[`AST Fixtures legacy-fixtures basics type-only-import-specifiers AST Ali
raw: '\\'mod\\'',
value: 'mod',
- range: [104, 109],
+ range: [31, 36],
loc: {
- start: { column: 31, line: 3 },
- end: { column: 36, line: 3 },
+ start: { column: 31, line: 1 },
+ end: { column: 36, line: 1 },
},
},
specifiers: Array [
@@ -33,10 +33,10 @@ exports[`AST Fixtures legacy-fixtures basics type-only-import-specifiers AST Ali
name: 'A',
- optional: false,
- range: [87, 88],
+ range: [14, 15],
loc: {
- start: { column: 14, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
},
},
importKind: 'type',
@@ -46,17 +46,17 @@ exports[`AST Fixtures legacy-fixtures basics type-only-import-specifiers AST Ali
name: 'A',
- optional: false,
- range: [87, 88],
+ range: [14, 15],
loc: {
- start: { column: 14, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 14, line: 1 },
+ end: { column: 15, line: 1 },
},
},
- range: [82, 88],
+ range: [9, 15],
loc: {
- start: { column: 9, line: 3 },
- end: { column: 15, line: 3 },
+ start: { column: 9, line: 1 },
+ end: { column: 15, line: 1 },
},
},
ImportSpecifier {
@@ -67,10 +67,10 @@ exports[`AST Fixtures legacy-fixtures basics type-only-import-specifiers AST Ali
name: 'B',
- optional: false,
- range: [95, 96],
+ range: [22, 23],
loc: {
- start: { column: 22, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
},
},
importKind: 'type',
@@ -80,34 +80,34 @@ exports[`AST Fixtures legacy-fixtures basics type-only-import-specifiers AST Ali
name: 'B',
- optional: false,
- range: [95, 96],
+ range: [22, 23],
loc: {
- start: { column: 22, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 22, line: 1 },
+ end: { column: 23, line: 1 },
},
},
- range: [90, 96],
+ range: [17, 23],
loc: {
- start: { column: 17, line: 3 },
- end: { column: 23, line: 3 },
+ start: { column: 17, line: 1 },
+ end: { column: 23, line: 1 },
},
},
],
- range: [73, 110],
+ range: [0, 37],
loc: {
- start: { column: 0, line: 3 },
- end: { column: 37, line: 3 },
+ start: { column: 0, line: 1 },
+ end: { column: 37, line: 1 },
},
},
],
sourceType: 'module',
- range: [73, 111],
+ range: [0, 38],
loc: {
- start: { column: 0, line: 3 },
- end: { column: 0, line: 4 },
+ start: { column: 0, line: 1 },
+ end: { column: 0, line: 2 },
},
}"
`;
diff --git a/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/6-AST-Alignment-Tokens.shot
new file mode 100644
index 000000000000..bb6cbaf0b7ad
--- /dev/null
+++ b/packages/ast-spec/src/special/ImportSpecifier/fixtures/type-only-import-specifiers/snapshots/6-AST-Alignment-Tokens.shot
@@ -0,0 +1,6 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AST Fixtures special ImportSpecifier type-only-import-specifiers AST Alignment - Token 1`] = `
+"Snapshot Diff:
+Compared values have no visual difference."
+`;
diff --git a/packages/ast-spec/src/special/ImportSpecifier/spec.ts b/packages/ast-spec/src/special/ImportSpecifier/spec.ts
index 5a47d0211678..9e3606cac2fb 100644
--- a/packages/ast-spec/src/special/ImportSpecifier/spec.ts
+++ b/packages/ast-spec/src/special/ImportSpecifier/spec.ts
@@ -2,10 +2,11 @@ import type { AST_NODE_TYPES } from '../../ast-node-types';
import type { BaseNode } from '../../base/BaseNode';
import type { ImportKind } from '../../declaration/ExportAndImportKind';
import type { Identifier } from '../../expression/Identifier/spec';
+import type { StringLiteral } from '../../expression/literal/StringLiteral/spec';
export interface ImportSpecifier extends BaseNode {
type: AST_NODE_TYPES.ImportSpecifier;
- imported: Identifier;
+ imported: Identifier | StringLiteral;
importKind: ImportKind;
local: Identifier;
}
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/fixture.ts
index 046c0ebea359..4f2e85735664 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/fixture.ts
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/fixture.ts
@@ -1 +1 @@
-class D {}
+class D {}
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/2-TSESTree-Tokens.shot
index c7afa0857168..489d673c2f2e 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/2-TSESTree-Tokens.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/2-TSESTree-Tokens.shot
@@ -34,21 +34,21 @@ exports[`AST Fixtures special TSTypeParameter class-decl-in-const-modifier TSEST
},
Keyword {
type: "Keyword",
- value: "in",
+ value: "const",
- range: [8, 10],
+ range: [8, 13],
loc: {
start: { column: 8, line: 1 },
- end: { column: 10, line: 1 },
+ end: { column: 13, line: 1 },
},
},
Keyword {
type: "Keyword",
- value: "const",
+ value: "in",
- range: [11, 16],
+ range: [14, 16],
loc: {
- start: { column: 11, line: 1 },
+ start: { column: 14, line: 1 },
end: { column: 16, line: 1 },
},
},
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/4-Babel-Tokens.shot
index 93b1ee573afd..42611a08d657 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/4-Babel-Tokens.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-decl-in-const-modifier/snapshots/4-Babel-Tokens.shot
@@ -34,21 +34,21 @@ exports[`AST Fixtures special TSTypeParameter class-decl-in-const-modifier Babel
},
Keyword {
type: "Keyword",
- value: "in",
+ value: "const",
- range: [8, 10],
+ range: [8, 13],
loc: {
start: { column: 8, line: 1 },
- end: { column: 10, line: 1 },
+ end: { column: 13, line: 1 },
},
},
Keyword {
type: "Keyword",
- value: "const",
+ value: "in",
- range: [11, 16],
+ range: [14, 16],
loc: {
- start: { column: 11, line: 1 },
+ start: { column: 14, line: 1 },
end: { column: 16, line: 1 },
},
},
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/fixture.ts
index 7a02fba43020..7aab3b72c474 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/fixture.ts
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/fixture.ts
@@ -1 +1 @@
-(class {});
+(class {});
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/1-TSESTree-AST.shot
index 9d3bd6eaa128..468135a5f6f0 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/1-TSESTree-AST.shot
@@ -13,10 +13,10 @@ Program {
type: "ClassBody",
body: [],
- range: [20, 22],
+ range: [19, 21],
loc: {
- start: { column: 20, line: 1 },
- end: { column: 22, line: 1 },
+ start: { column: 19, line: 1 },
+ end: { column: 21, line: 1 },
},
},
declare: false,
@@ -37,46 +37,46 @@ Program {
name: "T",
optional: false,
- range: [17, 18],
+ range: [16, 17],
loc: {
- start: { column: 17, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 16, line: 1 },
+ end: { column: 17, line: 1 },
},
},
out: false,
- range: [8, 18],
+ range: [7, 17],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 17, line: 1 },
},
},
],
- range: [7, 19],
+ range: [6, 18],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 18, line: 1 },
},
},
- range: [1, 22],
+ range: [1, 21],
loc: {
start: { column: 1, line: 1 },
- end: { column: 22, line: 1 },
+ end: { column: 21, line: 1 },
},
},
- range: [0, 24],
+ range: [0, 23],
loc: {
start: { column: 0, line: 1 },
- end: { column: 24, line: 1 },
+ end: { column: 23, line: 1 },
},
},
],
sourceType: "script",
- range: [0, 25],
+ range: [0, 24],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 2 },
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/2-TSESTree-Tokens.shot
index b72435e44963..a73b2203ca57 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/2-TSESTree-Tokens.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/2-TSESTree-Tokens.shot
@@ -26,36 +26,46 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier TSEST
type: "Punctuator",
value: "<",
- range: [7, 8],
+ range: [6, 7],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 8, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
},
},
Keyword {
type: "Keyword",
value: "const",
- range: [8, 13],
+ range: [7, 12],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 13, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 12, line: 1 },
},
},
Keyword {
type: "Keyword",
value: "in",
- range: [14, 16],
+ range: [13, 15],
loc: {
- start: { column: 14, line: 1 },
- end: { column: 16, line: 1 },
+ start: { column: 13, line: 1 },
+ end: { column: 15, line: 1 },
},
},
Identifier {
type: "Identifier",
value: "T",
+ range: [16, 17],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
range: [17, 18],
loc: {
start: { column: 17, line: 1 },
@@ -64,17 +74,17 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier TSEST
},
Punctuator {
type: "Punctuator",
- value: ">",
+ value: "{",
- range: [18, 19],
+ range: [19, 20],
loc: {
- start: { column: 18, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
},
},
Punctuator {
type: "Punctuator",
- value: "{",
+ value: "}",
range: [20, 21],
loc: {
@@ -84,7 +94,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier TSEST
},
Punctuator {
type: "Punctuator",
- value: "}",
+ value: ")",
range: [21, 22],
loc: {
@@ -94,7 +104,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier TSEST
},
Punctuator {
type: "Punctuator",
- value: ")",
+ value: ";",
range: [22, 23],
loc: {
@@ -102,15 +112,5 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier TSEST
end: { column: 23, line: 1 },
},
},
- Punctuator {
- type: "Punctuator",
- value: ";",
-
- range: [23, 24],
- loc: {
- start: { column: 23, line: 1 },
- end: { column: 24, line: 1 },
- },
- },
]
`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/3-Babel-AST.shot
index b91328e335ff..7353592c4201 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/3-Babel-AST.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/3-Babel-AST.shot
@@ -12,10 +12,10 @@ Program {
type: "ClassBody",
body: [],
- range: [20, 22],
+ range: [19, 21],
loc: {
- start: { column: 20, line: 1 },
- end: { column: 22, line: 1 },
+ start: { column: 19, line: 1 },
+ end: { column: 21, line: 1 },
},
},
id: null,
@@ -29,38 +29,38 @@ Program {
in: true,
name: "T",
- range: [8, 18],
+ range: [7, 17],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 17, line: 1 },
},
},
],
- range: [7, 19],
+ range: [6, 18],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 18, line: 1 },
},
},
- range: [1, 22],
+ range: [1, 21],
loc: {
start: { column: 1, line: 1 },
- end: { column: 22, line: 1 },
+ end: { column: 21, line: 1 },
},
},
- range: [0, 24],
+ range: [0, 23],
loc: {
start: { column: 0, line: 1 },
- end: { column: 24, line: 1 },
+ end: { column: 23, line: 1 },
},
},
],
sourceType: "script",
- range: [0, 25],
+ range: [0, 24],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 2 },
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/4-Babel-Tokens.shot
index 2bb229553460..7ee922ac0b52 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/4-Babel-Tokens.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/4-Babel-Tokens.shot
@@ -26,36 +26,46 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier Babel
type: "Punctuator",
value: "<",
- range: [7, 8],
+ range: [6, 7],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 8, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
},
},
Keyword {
type: "Keyword",
value: "const",
- range: [8, 13],
+ range: [7, 12],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 13, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 12, line: 1 },
},
},
Keyword {
type: "Keyword",
value: "in",
- range: [14, 16],
+ range: [13, 15],
loc: {
- start: { column: 14, line: 1 },
- end: { column: 16, line: 1 },
+ start: { column: 13, line: 1 },
+ end: { column: 15, line: 1 },
},
},
Identifier {
type: "Identifier",
value: "T",
+ range: [16, 17],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
range: [17, 18],
loc: {
start: { column: 17, line: 1 },
@@ -64,17 +74,17 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier Babel
},
Punctuator {
type: "Punctuator",
- value: ">",
+ value: "{",
- range: [18, 19],
+ range: [19, 20],
loc: {
- start: { column: 18, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
},
},
Punctuator {
type: "Punctuator",
- value: "{",
+ value: "}",
range: [20, 21],
loc: {
@@ -84,7 +94,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier Babel
},
Punctuator {
type: "Punctuator",
- value: "}",
+ value: ")",
range: [21, 22],
loc: {
@@ -94,7 +104,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier Babel
},
Punctuator {
type: "Punctuator",
- value: ")",
+ value: ";",
range: [22, 23],
loc: {
@@ -102,15 +112,5 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier Babel
end: { column: 23, line: 1 },
},
},
- Punctuator {
- type: "Punctuator",
- value: ";",
-
- range: [23, 24],
- loc: {
- start: { column: 23, line: 1 },
- end: { column: 24, line: 1 },
- },
- },
]
`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/5-AST-Alignment-AST.shot
index 32a31c4e8e40..7104e6d4228c 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-in-modifier/snapshots/5-AST-Alignment-AST.shot
@@ -17,10 +17,10 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier AST A
type: 'ClassBody',
body: Array [],
- range: [20, 22],
+ range: [19, 21],
loc: {
- start: { column: 20, line: 1 },
- end: { column: 22, line: 1 },
+ start: { column: 19, line: 1 },
+ end: { column: 21, line: 1 },
},
},
- declare: false,
@@ -41,47 +41,47 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-in-modifier AST A
- name: 'T',
- optional: false,
-
-- range: [17, 18],
+- range: [16, 17],
- loc: {
-- start: { column: 17, line: 1 },
-- end: { column: 18, line: 1 },
+- start: { column: 16, line: 1 },
+- end: { column: 17, line: 1 },
- },
- },
- out: false,
+ name: 'T',
- range: [8, 18],
+ range: [7, 17],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 17, line: 1 },
},
},
],
- range: [7, 19],
+ range: [6, 18],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 18, line: 1 },
},
},
- range: [1, 22],
+ range: [1, 21],
loc: {
start: { column: 1, line: 1 },
- end: { column: 22, line: 1 },
+ end: { column: 21, line: 1 },
},
},
- range: [0, 24],
+ range: [0, 23],
loc: {
start: { column: 0, line: 1 },
- end: { column: 24, line: 1 },
+ end: { column: 23, line: 1 },
},
},
],
sourceType: 'script',
- range: [0, 25],
+ range: [0, 24],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 2 },
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/fixture.ts
index cd6ecc95bec3..141b8722a300 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/fixture.ts
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/fixture.ts
@@ -1 +1 @@
-(class {});
+(class {});
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/1-TSESTree-AST.shot
index 125a353ad2f2..b5540ee0a4e0 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/1-TSESTree-AST.shot
@@ -13,10 +13,10 @@ Program {
type: "ClassBody",
body: [],
- range: [27, 29],
+ range: [26, 28],
loc: {
- start: { column: 27, line: 1 },
- end: { column: 29, line: 1 },
+ start: { column: 26, line: 1 },
+ end: { column: 28, line: 1 },
},
},
declare: false,
@@ -38,17 +38,17 @@ Program {
name: "U",
optional: false,
- range: [24, 25],
+ range: [23, 24],
loc: {
- start: { column: 24, line: 1 },
- end: { column: 25, line: 1 },
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
},
},
- range: [24, 25],
+ range: [23, 24],
loc: {
- start: { column: 24, line: 1 },
- end: { column: 25, line: 1 },
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
},
},
in: false,
@@ -58,46 +58,46 @@ Program {
name: "T",
optional: false,
- range: [14, 15],
+ range: [13, 14],
loc: {
- start: { column: 14, line: 1 },
- end: { column: 15, line: 1 },
+ start: { column: 13, line: 1 },
+ end: { column: 14, line: 1 },
},
},
out: false,
- range: [8, 25],
+ range: [7, 24],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 25, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 24, line: 1 },
},
},
],
- range: [7, 26],
+ range: [6, 25],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 26, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 25, line: 1 },
},
},
- range: [1, 29],
+ range: [1, 28],
loc: {
start: { column: 1, line: 1 },
- end: { column: 29, line: 1 },
+ end: { column: 28, line: 1 },
},
},
- range: [0, 31],
+ range: [0, 30],
loc: {
start: { column: 0, line: 1 },
- end: { column: 31, line: 1 },
+ end: { column: 30, line: 1 },
},
},
],
sourceType: "script",
- range: [0, 32],
+ range: [0, 31],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 2 },
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
index 9cd407c13d33..83290557ac32 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/2-TSESTree-Tokens.shot
@@ -26,46 +26,56 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends
type: "Punctuator",
value: "<",
- range: [7, 8],
+ range: [6, 7],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 8, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
},
},
Keyword {
type: "Keyword",
value: "const",
- range: [8, 13],
+ range: [7, 12],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 13, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 12, line: 1 },
},
},
Identifier {
type: "Identifier",
value: "T",
- range: [14, 15],
+ range: [13, 14],
loc: {
- start: { column: 14, line: 1 },
- end: { column: 15, line: 1 },
+ start: { column: 13, line: 1 },
+ end: { column: 14, line: 1 },
},
},
Keyword {
type: "Keyword",
value: "extends",
- range: [16, 23],
+ range: [15, 22],
loc: {
- start: { column: 16, line: 1 },
- end: { column: 23, line: 1 },
+ start: { column: 15, line: 1 },
+ end: { column: 22, line: 1 },
},
},
Identifier {
type: "Identifier",
value: "U",
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
range: [24, 25],
loc: {
start: { column: 24, line: 1 },
@@ -74,17 +84,17 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends
},
Punctuator {
type: "Punctuator",
- value: ">",
+ value: "{",
- range: [25, 26],
+ range: [26, 27],
loc: {
- start: { column: 25, line: 1 },
- end: { column: 26, line: 1 },
+ start: { column: 26, line: 1 },
+ end: { column: 27, line: 1 },
},
},
Punctuator {
type: "Punctuator",
- value: "{",
+ value: "}",
range: [27, 28],
loc: {
@@ -94,7 +104,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends
},
Punctuator {
type: "Punctuator",
- value: "}",
+ value: ")",
range: [28, 29],
loc: {
@@ -104,7 +114,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends
},
Punctuator {
type: "Punctuator",
- value: ")",
+ value: ";",
range: [29, 30],
loc: {
@@ -112,15 +122,5 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends
end: { column: 30, line: 1 },
},
},
- Punctuator {
- type: "Punctuator",
- value: ";",
-
- range: [30, 31],
- loc: {
- start: { column: 30, line: 1 },
- end: { column: 31, line: 1 },
- },
- },
]
`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/3-Babel-AST.shot
index 6f6690c12313..833f4168997e 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/3-Babel-AST.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/3-Babel-AST.shot
@@ -12,10 +12,10 @@ Program {
type: "ClassBody",
body: [],
- range: [27, 29],
+ range: [26, 28],
loc: {
- start: { column: 27, line: 1 },
- end: { column: 29, line: 1 },
+ start: { column: 26, line: 1 },
+ end: { column: 28, line: 1 },
},
},
id: null,
@@ -32,53 +32,53 @@ Program {
type: "Identifier",
name: "U",
- range: [24, 25],
+ range: [23, 24],
loc: {
- start: { column: 24, line: 1 },
- end: { column: 25, line: 1 },
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
},
},
- range: [24, 25],
+ range: [23, 24],
loc: {
- start: { column: 24, line: 1 },
- end: { column: 25, line: 1 },
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
},
},
name: "T",
- range: [8, 25],
+ range: [7, 24],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 25, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 24, line: 1 },
},
},
],
- range: [7, 26],
+ range: [6, 25],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 26, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 25, line: 1 },
},
},
- range: [1, 29],
+ range: [1, 28],
loc: {
start: { column: 1, line: 1 },
- end: { column: 29, line: 1 },
+ end: { column: 28, line: 1 },
},
},
- range: [0, 31],
+ range: [0, 30],
loc: {
start: { column: 0, line: 1 },
- end: { column: 31, line: 1 },
+ end: { column: 30, line: 1 },
},
},
],
sourceType: "script",
- range: [0, 32],
+ range: [0, 31],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 2 },
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/4-Babel-Tokens.shot
index 8878acf69126..79fc39d63dd8 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/4-Babel-Tokens.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/4-Babel-Tokens.shot
@@ -26,46 +26,56 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends
type: "Punctuator",
value: "<",
- range: [7, 8],
+ range: [6, 7],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 8, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
},
},
Keyword {
type: "Keyword",
value: "const",
- range: [8, 13],
+ range: [7, 12],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 13, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 12, line: 1 },
},
},
Identifier {
type: "Identifier",
value: "T",
- range: [14, 15],
+ range: [13, 14],
loc: {
- start: { column: 14, line: 1 },
- end: { column: 15, line: 1 },
+ start: { column: 13, line: 1 },
+ end: { column: 14, line: 1 },
},
},
Keyword {
type: "Keyword",
value: "extends",
- range: [16, 23],
+ range: [15, 22],
loc: {
- start: { column: 16, line: 1 },
- end: { column: 23, line: 1 },
+ start: { column: 15, line: 1 },
+ end: { column: 22, line: 1 },
},
},
Identifier {
type: "Identifier",
value: "U",
+ range: [23, 24],
+ loc: {
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
range: [24, 25],
loc: {
start: { column: 24, line: 1 },
@@ -74,17 +84,17 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends
},
Punctuator {
type: "Punctuator",
- value: ">",
+ value: "{",
- range: [25, 26],
+ range: [26, 27],
loc: {
- start: { column: 25, line: 1 },
- end: { column: 26, line: 1 },
+ start: { column: 26, line: 1 },
+ end: { column: 27, line: 1 },
},
},
Punctuator {
type: "Punctuator",
- value: "{",
+ value: "}",
range: [27, 28],
loc: {
@@ -94,7 +104,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends
},
Punctuator {
type: "Punctuator",
- value: "}",
+ value: ")",
range: [28, 29],
loc: {
@@ -104,7 +114,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends
},
Punctuator {
type: "Punctuator",
- value: ")",
+ value: ";",
range: [29, 30],
loc: {
@@ -112,15 +122,5 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends
end: { column: 30, line: 1 },
},
},
- Punctuator {
- type: "Punctuator",
- value: ";",
-
- range: [30, 31],
- loc: {
- start: { column: 30, line: 1 },
- end: { column: 31, line: 1 },
- },
- },
]
`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
index 076a347f025f..7080150612d3 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-extends/snapshots/5-AST-Alignment-AST.shot
@@ -17,10 +17,10 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends
type: 'ClassBody',
body: Array [],
- range: [27, 29],
+ range: [26, 28],
loc: {
- start: { column: 27, line: 1 },
- end: { column: 29, line: 1 },
+ start: { column: 26, line: 1 },
+ end: { column: 28, line: 1 },
},
},
- declare: false,
@@ -42,17 +42,17 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends
name: 'U',
- optional: false,
- range: [24, 25],
+ range: [23, 24],
loc: {
- start: { column: 24, line: 1 },
- end: { column: 25, line: 1 },
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
},
},
- range: [24, 25],
+ range: [23, 24],
loc: {
- start: { column: 24, line: 1 },
- end: { column: 25, line: 1 },
+ start: { column: 23, line: 1 },
+ end: { column: 24, line: 1 },
},
},
- in: false,
@@ -62,47 +62,47 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-extends
- name: 'T',
- optional: false,
-
-- range: [14, 15],
+- range: [13, 14],
- loc: {
-- start: { column: 14, line: 1 },
-- end: { column: 15, line: 1 },
+- start: { column: 13, line: 1 },
+- end: { column: 14, line: 1 },
- },
- },
- out: false,
+ name: 'T',
- range: [8, 25],
+ range: [7, 24],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 25, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 24, line: 1 },
},
},
],
- range: [7, 26],
+ range: [6, 25],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 26, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 25, line: 1 },
},
},
- range: [1, 29],
+ range: [1, 28],
loc: {
start: { column: 1, line: 1 },
- end: { column: 29, line: 1 },
+ end: { column: 28, line: 1 },
},
},
- range: [0, 31],
+ range: [0, 30],
loc: {
start: { column: 0, line: 1 },
- end: { column: 31, line: 1 },
+ end: { column: 30, line: 1 },
},
},
],
sourceType: 'script',
- range: [0, 32],
+ range: [0, 31],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 2 },
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/fixture.ts
index a0fd2dc36d9e..0f326968ac50 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/fixture.ts
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/fixture.ts
@@ -1 +1 @@
-(class {});
+(class {});
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
index a8c6cf44d81a..8abc80358098 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/1-TSESTree-AST.shot
@@ -13,10 +13,10 @@ Program {
type: "ClassBody",
body: [],
- range: [20, 22],
+ range: [19, 21],
loc: {
- start: { column: 20, line: 1 },
- end: { column: 22, line: 1 },
+ start: { column: 19, line: 1 },
+ end: { column: 21, line: 1 },
},
},
declare: false,
@@ -37,18 +37,18 @@ Program {
name: "T",
optional: false,
- range: [8, 9],
+ range: [7, 8],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 9, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
},
},
out: false,
- range: [8, 9],
+ range: [7, 8],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 9, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
},
},
TSTypeParameter {
@@ -61,46 +61,46 @@ Program {
name: "U",
optional: false,
- range: [17, 18],
+ range: [16, 17],
loc: {
- start: { column: 17, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 16, line: 1 },
+ end: { column: 17, line: 1 },
},
},
out: false,
- range: [11, 18],
+ range: [10, 17],
loc: {
- start: { column: 11, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 10, line: 1 },
+ end: { column: 17, line: 1 },
},
},
],
- range: [7, 19],
+ range: [6, 18],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 18, line: 1 },
},
},
- range: [1, 22],
+ range: [1, 21],
loc: {
start: { column: 1, line: 1 },
- end: { column: 22, line: 1 },
+ end: { column: 21, line: 1 },
},
},
- range: [0, 24],
+ range: [0, 23],
loc: {
start: { column: 0, line: 1 },
- end: { column: 24, line: 1 },
+ end: { column: 23, line: 1 },
},
},
],
sourceType: "script",
- range: [0, 25],
+ range: [0, 24],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 2 },
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
index 825375374759..91c2253f6df6 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
@@ -26,46 +26,56 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple
type: "Punctuator",
value: "<",
- range: [7, 8],
+ range: [6, 7],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 8, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
},
},
Identifier {
type: "Identifier",
value: "T",
- range: [8, 9],
+ range: [7, 8],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 9, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
},
},
Punctuator {
type: "Punctuator",
value: ",",
- range: [9, 10],
+ range: [8, 9],
loc: {
- start: { column: 9, line: 1 },
- end: { column: 10, line: 1 },
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
},
},
Keyword {
type: "Keyword",
value: "const",
- range: [11, 16],
+ range: [10, 15],
loc: {
- start: { column: 11, line: 1 },
- end: { column: 16, line: 1 },
+ start: { column: 10, line: 1 },
+ end: { column: 15, line: 1 },
},
},
Identifier {
type: "Identifier",
value: "U",
+ range: [16, 17],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
range: [17, 18],
loc: {
start: { column: 17, line: 1 },
@@ -74,17 +84,17 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple
},
Punctuator {
type: "Punctuator",
- value: ">",
+ value: "{",
- range: [18, 19],
+ range: [19, 20],
loc: {
- start: { column: 18, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
},
},
Punctuator {
type: "Punctuator",
- value: "{",
+ value: "}",
range: [20, 21],
loc: {
@@ -94,7 +104,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple
},
Punctuator {
type: "Punctuator",
- value: "}",
+ value: ")",
range: [21, 22],
loc: {
@@ -104,7 +114,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple
},
Punctuator {
type: "Punctuator",
- value: ")",
+ value: ";",
range: [22, 23],
loc: {
@@ -112,15 +122,5 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple
end: { column: 23, line: 1 },
},
},
- Punctuator {
- type: "Punctuator",
- value: ";",
-
- range: [23, 24],
- loc: {
- start: { column: 23, line: 1 },
- end: { column: 24, line: 1 },
- },
- },
]
`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/3-Babel-AST.shot
index 70dec76e302f..747e704ca760 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/3-Babel-AST.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/3-Babel-AST.shot
@@ -12,10 +12,10 @@ Program {
type: "ClassBody",
body: [],
- range: [20, 22],
+ range: [19, 21],
loc: {
- start: { column: 20, line: 1 },
- end: { column: 22, line: 1 },
+ start: { column: 19, line: 1 },
+ end: { column: 21, line: 1 },
},
},
id: null,
@@ -27,10 +27,10 @@ Program {
type: "TSTypeParameter",
name: "T",
- range: [8, 9],
+ range: [7, 8],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 9, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
},
},
TSTypeParameter {
@@ -38,38 +38,38 @@ Program {
const: true,
name: "U",
- range: [11, 18],
+ range: [10, 17],
loc: {
- start: { column: 11, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 10, line: 1 },
+ end: { column: 17, line: 1 },
},
},
],
- range: [7, 19],
+ range: [6, 18],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 18, line: 1 },
},
},
- range: [1, 22],
+ range: [1, 21],
loc: {
start: { column: 1, line: 1 },
- end: { column: 22, line: 1 },
+ end: { column: 21, line: 1 },
},
},
- range: [0, 24],
+ range: [0, 23],
loc: {
start: { column: 0, line: 1 },
- end: { column: 24, line: 1 },
+ end: { column: 23, line: 1 },
},
},
],
sourceType: "script",
- range: [0, 25],
+ range: [0, 24],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 2 },
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
index dd07dc882c06..c116c98c12ed 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
@@ -26,46 +26,56 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple
type: "Punctuator",
value: "<",
- range: [7, 8],
+ range: [6, 7],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 8, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
},
},
Identifier {
type: "Identifier",
value: "T",
- range: [8, 9],
+ range: [7, 8],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 9, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
},
},
Punctuator {
type: "Punctuator",
value: ",",
- range: [9, 10],
+ range: [8, 9],
loc: {
- start: { column: 9, line: 1 },
- end: { column: 10, line: 1 },
+ start: { column: 8, line: 1 },
+ end: { column: 9, line: 1 },
},
},
Keyword {
type: "Keyword",
value: "const",
- range: [11, 16],
+ range: [10, 15],
loc: {
- start: { column: 11, line: 1 },
- end: { column: 16, line: 1 },
+ start: { column: 10, line: 1 },
+ end: { column: 15, line: 1 },
},
},
Identifier {
type: "Identifier",
value: "U",
+ range: [16, 17],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
range: [17, 18],
loc: {
start: { column: 17, line: 1 },
@@ -74,17 +84,17 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple
},
Punctuator {
type: "Punctuator",
- value: ">",
+ value: "{",
- range: [18, 19],
+ range: [19, 20],
loc: {
- start: { column: 18, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
},
},
Punctuator {
type: "Punctuator",
- value: "{",
+ value: "}",
range: [20, 21],
loc: {
@@ -94,7 +104,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple
},
Punctuator {
type: "Punctuator",
- value: "}",
+ value: ")",
range: [21, 22],
loc: {
@@ -104,7 +114,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple
},
Punctuator {
type: "Punctuator",
- value: ")",
+ value: ";",
range: [22, 23],
loc: {
@@ -112,15 +122,5 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple
end: { column: 23, line: 1 },
},
},
- Punctuator {
- type: "Punctuator",
- value: ";",
-
- range: [23, 24],
- loc: {
- start: { column: 23, line: 1 },
- end: { column: 24, line: 1 },
- },
- },
]
`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
index 8ff0271450e5..fa9b0915d71e 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier-multiple/snapshots/5-AST-Alignment-AST.shot
@@ -17,10 +17,10 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple
type: 'ClassBody',
body: Array [],
- range: [20, 22],
+ range: [19, 21],
loc: {
- start: { column: 20, line: 1 },
- end: { column: 22, line: 1 },
+ start: { column: 19, line: 1 },
+ end: { column: 21, line: 1 },
},
},
- declare: false,
@@ -41,19 +41,19 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple
- name: 'T',
- optional: false,
-
-- range: [8, 9],
+- range: [7, 8],
- loc: {
-- start: { column: 8, line: 1 },
-- end: { column: 9, line: 1 },
+- start: { column: 7, line: 1 },
+- end: { column: 8, line: 1 },
- },
- },
- out: false,
+ name: 'T',
- range: [8, 9],
+ range: [7, 8],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 9, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 8, line: 1 },
},
},
TSTypeParameter {
@@ -66,47 +66,47 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier-multiple
- name: 'U',
- optional: false,
-
-- range: [17, 18],
+- range: [16, 17],
- loc: {
-- start: { column: 17, line: 1 },
-- end: { column: 18, line: 1 },
+- start: { column: 16, line: 1 },
+- end: { column: 17, line: 1 },
- },
- },
- out: false,
+ name: 'U',
- range: [11, 18],
+ range: [10, 17],
loc: {
- start: { column: 11, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 10, line: 1 },
+ end: { column: 17, line: 1 },
},
},
],
- range: [7, 19],
+ range: [6, 18],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 18, line: 1 },
},
},
- range: [1, 22],
+ range: [1, 21],
loc: {
start: { column: 1, line: 1 },
- end: { column: 22, line: 1 },
+ end: { column: 21, line: 1 },
},
},
- range: [0, 24],
+ range: [0, 23],
loc: {
start: { column: 0, line: 1 },
- end: { column: 24, line: 1 },
+ end: { column: 23, line: 1 },
},
},
],
sourceType: 'script',
- range: [0, 25],
+ range: [0, 24],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 2 },
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/fixture.ts
index e7c0e459e69f..6636f92bcff8 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/fixture.ts
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/fixture.ts
@@ -1 +1 @@
-(class {});
+(class {});
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/1-TSESTree-AST.shot
index ffc7d16c1be6..247ae9c75e9e 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/1-TSESTree-AST.shot
@@ -13,10 +13,10 @@ Program {
type: "ClassBody",
body: [],
- range: [17, 19],
+ range: [16, 18],
loc: {
- start: { column: 17, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 16, line: 1 },
+ end: { column: 18, line: 1 },
},
},
declare: false,
@@ -37,46 +37,46 @@ Program {
name: "T",
optional: false,
- range: [14, 15],
+ range: [13, 14],
loc: {
- start: { column: 14, line: 1 },
- end: { column: 15, line: 1 },
+ start: { column: 13, line: 1 },
+ end: { column: 14, line: 1 },
},
},
out: false,
- range: [8, 15],
+ range: [7, 14],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 15, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 14, line: 1 },
},
},
],
- range: [7, 16],
+ range: [6, 15],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 16, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 15, line: 1 },
},
},
- range: [1, 19],
+ range: [1, 18],
loc: {
start: { column: 1, line: 1 },
- end: { column: 19, line: 1 },
+ end: { column: 18, line: 1 },
},
},
- range: [0, 21],
+ range: [0, 20],
loc: {
start: { column: 0, line: 1 },
- end: { column: 21, line: 1 },
+ end: { column: 20, line: 1 },
},
},
],
sourceType: "script",
- range: [0, 22],
+ range: [0, 21],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 2 },
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/2-TSESTree-Tokens.shot
index a599070370a6..86f39a94072f 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/2-TSESTree-Tokens.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/2-TSESTree-Tokens.shot
@@ -26,26 +26,36 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier TSESTree
type: "Punctuator",
value: "<",
- range: [7, 8],
+ range: [6, 7],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 8, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
},
},
Keyword {
type: "Keyword",
value: "const",
- range: [8, 13],
+ range: [7, 12],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 13, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 12, line: 1 },
},
},
Identifier {
type: "Identifier",
value: "T",
+ range: [13, 14],
+ loc: {
+ start: { column: 13, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
range: [14, 15],
loc: {
start: { column: 14, line: 1 },
@@ -54,17 +64,17 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier TSESTree
},
Punctuator {
type: "Punctuator",
- value: ">",
+ value: "{",
- range: [15, 16],
+ range: [16, 17],
loc: {
- start: { column: 15, line: 1 },
- end: { column: 16, line: 1 },
+ start: { column: 16, line: 1 },
+ end: { column: 17, line: 1 },
},
},
Punctuator {
type: "Punctuator",
- value: "{",
+ value: "}",
range: [17, 18],
loc: {
@@ -74,7 +84,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier TSESTree
},
Punctuator {
type: "Punctuator",
- value: "}",
+ value: ")",
range: [18, 19],
loc: {
@@ -84,7 +94,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier TSESTree
},
Punctuator {
type: "Punctuator",
- value: ")",
+ value: ";",
range: [19, 20],
loc: {
@@ -92,15 +102,5 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier TSESTree
end: { column: 20, line: 1 },
},
},
- Punctuator {
- type: "Punctuator",
- value: ";",
-
- range: [20, 21],
- loc: {
- start: { column: 20, line: 1 },
- end: { column: 21, line: 1 },
- },
- },
]
`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/3-Babel-AST.shot
index 592ea11dcc9a..ebbfa104d17b 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/3-Babel-AST.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/3-Babel-AST.shot
@@ -12,10 +12,10 @@ Program {
type: "ClassBody",
body: [],
- range: [17, 19],
+ range: [16, 18],
loc: {
- start: { column: 17, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 16, line: 1 },
+ end: { column: 18, line: 1 },
},
},
id: null,
@@ -28,38 +28,38 @@ Program {
const: true,
name: "T",
- range: [8, 15],
+ range: [7, 14],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 15, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 14, line: 1 },
},
},
],
- range: [7, 16],
+ range: [6, 15],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 16, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 15, line: 1 },
},
},
- range: [1, 19],
+ range: [1, 18],
loc: {
start: { column: 1, line: 1 },
- end: { column: 19, line: 1 },
+ end: { column: 18, line: 1 },
},
},
- range: [0, 21],
+ range: [0, 20],
loc: {
start: { column: 0, line: 1 },
- end: { column: 21, line: 1 },
+ end: { column: 20, line: 1 },
},
},
],
sourceType: "script",
- range: [0, 22],
+ range: [0, 21],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 2 },
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/4-Babel-Tokens.shot
index 0e54bfc1447d..08e1929b1700 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/4-Babel-Tokens.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/4-Babel-Tokens.shot
@@ -26,26 +26,36 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier Babel -
type: "Punctuator",
value: "<",
- range: [7, 8],
+ range: [6, 7],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 8, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
},
},
Keyword {
type: "Keyword",
value: "const",
- range: [8, 13],
+ range: [7, 12],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 13, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 12, line: 1 },
},
},
Identifier {
type: "Identifier",
value: "T",
+ range: [13, 14],
+ loc: {
+ start: { column: 13, line: 1 },
+ end: { column: 14, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
range: [14, 15],
loc: {
start: { column: 14, line: 1 },
@@ -54,17 +64,17 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier Babel -
},
Punctuator {
type: "Punctuator",
- value: ">",
+ value: "{",
- range: [15, 16],
+ range: [16, 17],
loc: {
- start: { column: 15, line: 1 },
- end: { column: 16, line: 1 },
+ start: { column: 16, line: 1 },
+ end: { column: 17, line: 1 },
},
},
Punctuator {
type: "Punctuator",
- value: "{",
+ value: "}",
range: [17, 18],
loc: {
@@ -74,7 +84,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier Babel -
},
Punctuator {
type: "Punctuator",
- value: "}",
+ value: ")",
range: [18, 19],
loc: {
@@ -84,7 +94,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier Babel -
},
Punctuator {
type: "Punctuator",
- value: ")",
+ value: ";",
range: [19, 20],
loc: {
@@ -92,15 +102,5 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier Babel -
end: { column: 20, line: 1 },
},
},
- Punctuator {
- type: "Punctuator",
- value: ";",
-
- range: [20, 21],
- loc: {
- start: { column: 20, line: 1 },
- end: { column: 21, line: 1 },
- },
- },
]
`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/5-AST-Alignment-AST.shot
index 05e22d460f7e..ad1ae38b608b 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-const-modifier/snapshots/5-AST-Alignment-AST.shot
@@ -17,10 +17,10 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier AST Alig
type: 'ClassBody',
body: Array [],
- range: [17, 19],
+ range: [16, 18],
loc: {
- start: { column: 17, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 16, line: 1 },
+ end: { column: 18, line: 1 },
},
},
- declare: false,
@@ -41,47 +41,47 @@ exports[`AST Fixtures special TSTypeParameter class-expr-const-modifier AST Alig
- name: 'T',
- optional: false,
-
-- range: [14, 15],
+- range: [13, 14],
- loc: {
-- start: { column: 14, line: 1 },
-- end: { column: 15, line: 1 },
+- start: { column: 13, line: 1 },
+- end: { column: 14, line: 1 },
- },
- },
- out: false,
+ name: 'T',
- range: [8, 15],
+ range: [7, 14],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 15, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 14, line: 1 },
},
},
],
- range: [7, 16],
+ range: [6, 15],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 16, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 15, line: 1 },
},
},
- range: [1, 19],
+ range: [1, 18],
loc: {
start: { column: 1, line: 1 },
- end: { column: 19, line: 1 },
+ end: { column: 18, line: 1 },
},
},
- range: [0, 21],
+ range: [0, 20],
loc: {
start: { column: 0, line: 1 },
- end: { column: 21, line: 1 },
+ end: { column: 20, line: 1 },
},
},
],
sourceType: 'script',
- range: [0, 22],
+ range: [0, 21],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 2 },
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/fixture.ts
index eb21599bf3b2..7aab3b72c474 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/fixture.ts
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/fixture.ts
@@ -1 +1 @@
-(class {});
+(class {});
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/1-TSESTree-AST.shot
index 5a7a38bb6cb9..466edfe36a9f 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/1-TSESTree-AST.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/1-TSESTree-AST.shot
@@ -13,10 +13,10 @@ Program {
type: "ClassBody",
body: [],
- range: [20, 22],
+ range: [19, 21],
loc: {
- start: { column: 20, line: 1 },
- end: { column: 22, line: 1 },
+ start: { column: 19, line: 1 },
+ end: { column: 21, line: 1 },
},
},
declare: false,
@@ -37,46 +37,46 @@ Program {
name: "T",
optional: false,
- range: [17, 18],
+ range: [16, 17],
loc: {
- start: { column: 17, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 16, line: 1 },
+ end: { column: 17, line: 1 },
},
},
out: false,
- range: [8, 18],
+ range: [7, 17],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 17, line: 1 },
},
},
],
- range: [7, 19],
+ range: [6, 18],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 18, line: 1 },
},
},
- range: [1, 22],
+ range: [1, 21],
loc: {
start: { column: 1, line: 1 },
- end: { column: 22, line: 1 },
+ end: { column: 21, line: 1 },
},
},
- range: [0, 24],
+ range: [0, 23],
loc: {
start: { column: 0, line: 1 },
- end: { column: 24, line: 1 },
+ end: { column: 23, line: 1 },
},
},
],
sourceType: "script",
- range: [0, 25],
+ range: [0, 24],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 2 },
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/2-TSESTree-Tokens.shot
index 1046c2c28015..d7fac0446d86 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/2-TSESTree-Tokens.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/2-TSESTree-Tokens.shot
@@ -26,36 +26,46 @@ exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier TSEST
type: "Punctuator",
value: "<",
- range: [7, 8],
+ range: [6, 7],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 8, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
},
},
Keyword {
type: "Keyword",
- value: "in",
+ value: "const",
- range: [8, 10],
+ range: [7, 12],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 10, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 12, line: 1 },
},
},
Keyword {
type: "Keyword",
- value: "const",
+ value: "in",
- range: [11, 16],
+ range: [13, 15],
loc: {
- start: { column: 11, line: 1 },
- end: { column: 16, line: 1 },
+ start: { column: 13, line: 1 },
+ end: { column: 15, line: 1 },
},
},
Identifier {
type: "Identifier",
value: "T",
+ range: [16, 17],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
range: [17, 18],
loc: {
start: { column: 17, line: 1 },
@@ -64,17 +74,17 @@ exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier TSEST
},
Punctuator {
type: "Punctuator",
- value: ">",
+ value: "{",
- range: [18, 19],
+ range: [19, 20],
loc: {
- start: { column: 18, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
},
},
Punctuator {
type: "Punctuator",
- value: "{",
+ value: "}",
range: [20, 21],
loc: {
@@ -84,7 +94,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier TSEST
},
Punctuator {
type: "Punctuator",
- value: "}",
+ value: ")",
range: [21, 22],
loc: {
@@ -94,7 +104,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier TSEST
},
Punctuator {
type: "Punctuator",
- value: ")",
+ value: ";",
range: [22, 23],
loc: {
@@ -102,15 +112,5 @@ exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier TSEST
end: { column: 23, line: 1 },
},
},
- Punctuator {
- type: "Punctuator",
- value: ";",
-
- range: [23, 24],
- loc: {
- start: { column: 23, line: 1 },
- end: { column: 24, line: 1 },
- },
- },
]
`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/3-Babel-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/3-Babel-AST.shot
index 3229c6fab61b..9993404c4e92 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/3-Babel-AST.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/3-Babel-AST.shot
@@ -12,10 +12,10 @@ Program {
type: "ClassBody",
body: [],
- range: [20, 22],
+ range: [19, 21],
loc: {
- start: { column: 20, line: 1 },
- end: { column: 22, line: 1 },
+ start: { column: 19, line: 1 },
+ end: { column: 21, line: 1 },
},
},
id: null,
@@ -29,38 +29,38 @@ Program {
in: true,
name: "T",
- range: [8, 18],
+ range: [7, 17],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 17, line: 1 },
},
},
],
- range: [7, 19],
+ range: [6, 18],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 18, line: 1 },
},
},
- range: [1, 22],
+ range: [1, 21],
loc: {
start: { column: 1, line: 1 },
- end: { column: 22, line: 1 },
+ end: { column: 21, line: 1 },
},
},
- range: [0, 24],
+ range: [0, 23],
loc: {
start: { column: 0, line: 1 },
- end: { column: 24, line: 1 },
+ end: { column: 23, line: 1 },
},
},
],
sourceType: "script",
- range: [0, 25],
+ range: [0, 24],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 2 },
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/4-Babel-Tokens.shot
index 3cdb8cd44bc7..9f93e854f08d 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/4-Babel-Tokens.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/4-Babel-Tokens.shot
@@ -26,36 +26,46 @@ exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier Babel
type: "Punctuator",
value: "<",
- range: [7, 8],
+ range: [6, 7],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 8, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 7, line: 1 },
},
},
Keyword {
type: "Keyword",
- value: "in",
+ value: "const",
- range: [8, 10],
+ range: [7, 12],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 10, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 12, line: 1 },
},
},
Keyword {
type: "Keyword",
- value: "const",
+ value: "in",
- range: [11, 16],
+ range: [13, 15],
loc: {
- start: { column: 11, line: 1 },
- end: { column: 16, line: 1 },
+ start: { column: 13, line: 1 },
+ end: { column: 15, line: 1 },
},
},
Identifier {
type: "Identifier",
value: "T",
+ range: [16, 17],
+ loc: {
+ start: { column: 16, line: 1 },
+ end: { column: 17, line: 1 },
+ },
+ },
+ Punctuator {
+ type: "Punctuator",
+ value: ">",
+
range: [17, 18],
loc: {
start: { column: 17, line: 1 },
@@ -64,17 +74,17 @@ exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier Babel
},
Punctuator {
type: "Punctuator",
- value: ">",
+ value: "{",
- range: [18, 19],
+ range: [19, 20],
loc: {
- start: { column: 18, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 19, line: 1 },
+ end: { column: 20, line: 1 },
},
},
Punctuator {
type: "Punctuator",
- value: "{",
+ value: "}",
range: [20, 21],
loc: {
@@ -84,7 +94,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier Babel
},
Punctuator {
type: "Punctuator",
- value: "}",
+ value: ")",
range: [21, 22],
loc: {
@@ -94,7 +104,7 @@ exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier Babel
},
Punctuator {
type: "Punctuator",
- value: ")",
+ value: ";",
range: [22, 23],
loc: {
@@ -102,15 +112,5 @@ exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier Babel
end: { column: 23, line: 1 },
},
},
- Punctuator {
- type: "Punctuator",
- value: ";",
-
- range: [23, 24],
- loc: {
- start: { column: 23, line: 1 },
- end: { column: 24, line: 1 },
- },
- },
]
`;
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/5-AST-Alignment-AST.shot
index e92dc3b1d949..700e89790ccf 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/5-AST-Alignment-AST.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/class-expr-in-const-modifier/snapshots/5-AST-Alignment-AST.shot
@@ -17,10 +17,10 @@ exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier AST A
type: 'ClassBody',
body: Array [],
- range: [20, 22],
+ range: [19, 21],
loc: {
- start: { column: 20, line: 1 },
- end: { column: 22, line: 1 },
+ start: { column: 19, line: 1 },
+ end: { column: 21, line: 1 },
},
},
- declare: false,
@@ -41,47 +41,47 @@ exports[`AST Fixtures special TSTypeParameter class-expr-in-const-modifier AST A
- name: 'T',
- optional: false,
-
-- range: [17, 18],
+- range: [16, 17],
- loc: {
-- start: { column: 17, line: 1 },
-- end: { column: 18, line: 1 },
+- start: { column: 16, line: 1 },
+- end: { column: 17, line: 1 },
- },
- },
- out: false,
+ name: 'T',
- range: [8, 18],
+ range: [7, 17],
loc: {
- start: { column: 8, line: 1 },
- end: { column: 18, line: 1 },
+ start: { column: 7, line: 1 },
+ end: { column: 17, line: 1 },
},
},
],
- range: [7, 19],
+ range: [6, 18],
loc: {
- start: { column: 7, line: 1 },
- end: { column: 19, line: 1 },
+ start: { column: 6, line: 1 },
+ end: { column: 18, line: 1 },
},
},
- range: [1, 22],
+ range: [1, 21],
loc: {
start: { column: 1, line: 1 },
- end: { column: 22, line: 1 },
+ end: { column: 21, line: 1 },
},
},
- range: [0, 24],
+ range: [0, 23],
loc: {
start: { column: 0, line: 1 },
- end: { column: 24, line: 1 },
+ end: { column: 23, line: 1 },
},
},
],
sourceType: 'script',
- range: [0, 25],
+ range: [0, 24],
loc: {
start: { column: 0, line: 1 },
end: { column: 0, line: 2 },
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/fixture.ts b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/fixture.ts
index 8dc6e2f6033f..256f473826bf 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/fixture.ts
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/fixture.ts
@@ -1 +1 @@
-interface L {}
+interface L {}
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
index abc1c07187ed..ed7fba0e8d86 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/2-TSESTree-Tokens.shot
@@ -34,21 +34,21 @@ exports[`AST Fixtures special TSTypeParameter interface-in-const-modifier-multip
},
Keyword {
type: "Keyword",
- value: "in",
+ value: "const",
- range: [12, 14],
+ range: [12, 17],
loc: {
start: { column: 12, line: 1 },
- end: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
},
},
Keyword {
type: "Keyword",
- value: "const",
+ value: "in",
- range: [15, 20],
+ range: [18, 20],
loc: {
- start: { column: 15, line: 1 },
+ start: { column: 18, line: 1 },
end: { column: 20, line: 1 },
},
},
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/4-Babel-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
index b2701779685b..274070dae74e 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/4-Babel-Tokens.shot
@@ -34,21 +34,21 @@ exports[`AST Fixtures special TSTypeParameter interface-in-const-modifier-multip
},
Keyword {
type: "Keyword",
- value: "in",
+ value: "const",
- range: [12, 14],
+ range: [12, 17],
loc: {
start: { column: 12, line: 1 },
- end: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
},
},
Keyword {
type: "Keyword",
- value: "const",
+ value: "in",
- range: [15, 20],
+ range: [18, 20],
loc: {
- start: { column: 15, line: 1 },
+ start: { column: 18, line: 1 },
end: { column: 20, line: 1 },
},
},
diff --git a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
index 2968ea8bf5ea..4771009b4633 100644
--- a/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
+++ b/packages/ast-spec/src/special/TSTypeParameter/fixtures/interface-in-const-modifier-multiple/snapshots/6-AST-Alignment-Tokens.shot
@@ -40,21 +40,21 @@ exports[`AST Fixtures special TSTypeParameter interface-in-const-modifier-multip
},
Keyword {
type: 'Keyword',
- value: 'in',
+ value: 'const',
- range: [12, 14],
+ range: [12, 17],
loc: {
start: { column: 12, line: 1 },
- end: { column: 14, line: 1 },
+ end: { column: 17, line: 1 },
},
},
Keyword {
type: 'Keyword',
- value: 'const',
+ value: 'in',
- range: [15, 20],
+ range: [18, 20],
loc: {
- start: { column: 15, line: 1 },
+ start: { column: 18, line: 1 },
end: { column: 20, line: 1 },
},
},
diff --git a/packages/ast-spec/tests/fixtures-with-differences-ast.shot b/packages/ast-spec/tests/fixtures-with-differences-ast.shot
index 25c67426f23f..d6c3ab00dc5d 100644
--- a/packages/ast-spec/tests/fixtures-with-differences-ast.shot
+++ b/packages/ast-spec/tests/fixtures-with-differences-ast.shot
@@ -27,13 +27,21 @@ exports[`AST Fixtures List fixtures with AST differences 1`] = `
"declaration/ExportDefaultDeclaration/fixtures/function/fixture.ts",
"declaration/ExportDefaultDeclaration/fixtures/identifier/fixture.ts",
"declaration/ExportDefaultDeclaration/fixtures/interface/fixture.ts",
- "declaration/ExportNamedDeclaration/fixtures/aliased/fixture.ts",
+ "declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-with-source/fixture.ts",
+ "declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-identifier-without-source/fixture.ts",
+ "declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-with-source/fixture.ts",
+ "declaration/ExportNamedDeclaration/fixtures/braced-identifier-aliased-to-string-literal-without-source/fixture.ts",
+ "declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-with-source/fixture.ts",
+ "declaration/ExportNamedDeclaration/fixtures/braced-identifier-many-without-source/fixture.ts",
+ "declaration/ExportNamedDeclaration/fixtures/braced-identifier-with-source/fixture.ts",
+ "declaration/ExportNamedDeclaration/fixtures/braced-identifier-without-source/fixture.ts",
+ "declaration/ExportNamedDeclaration/fixtures/braced-string-literal-aliased-to-identifier-with-source/fixture.ts",
+ "declaration/ExportNamedDeclaration/fixtures/braced-string-literal-many-with-source/fixture.ts",
+ "declaration/ExportNamedDeclaration/fixtures/braced-string-literal-with-source/fixture.ts",
"declaration/ExportNamedDeclaration/fixtures/class/fixture.ts",
"declaration/ExportNamedDeclaration/fixtures/declare-function/fixture.ts",
"declaration/ExportNamedDeclaration/fixtures/enum/fixture.ts",
"declaration/ExportNamedDeclaration/fixtures/function-declaration/fixture.ts",
- "declaration/ExportNamedDeclaration/fixtures/identifier-braced/fixture.ts",
- "declaration/ExportNamedDeclaration/fixtures/identifier-many/fixture.ts",
"declaration/ExportNamedDeclaration/fixtures/interface/fixture.ts",
"declaration/ExportNamedDeclaration/fixtures/namespace/fixture.ts",
"declaration/ExportNamedDeclaration/fixtures/type-alias/fixture.ts",
@@ -55,6 +63,7 @@ exports[`AST Fixtures List fixtures with AST differences 1`] = `
"declaration/ImportDeclaration/fixtures/named-many/fixture.ts",
"declaration/ImportDeclaration/fixtures/named-none/fixture.ts",
"declaration/ImportDeclaration/fixtures/named-one/fixture.ts",
+ "declaration/ImportDeclaration/fixtures/named-string-literal-aliased-to-identifier/fixture.ts",
"declaration/ImportDeclaration/fixtures/side-effect/fixture.ts",
"declaration/TSDeclareFunction/fixtures/async-ambient/fixture.ts",
"declaration/TSDeclareFunction/fixtures/async-overload/fixture.ts",
@@ -347,8 +356,6 @@ exports[`AST Fixtures List fixtures with AST differences 1`] = `
"legacy-fixtures/basics/fixtures/type-guard-in-method/fixture.ts",
"legacy-fixtures/basics/fixtures/type-import-type-with-type-parameters-in-type-reference/fixture.ts",
"legacy-fixtures/basics/fixtures/type-import-type/fixture.ts",
- "legacy-fixtures/basics/fixtures/type-only-export-specifiers/fixture.ts",
- "legacy-fixtures/basics/fixtures/type-only-import-specifiers/fixture.ts",
"legacy-fixtures/basics/fixtures/type-parameters-comments-heritage/fixture.ts",
"legacy-fixtures/basics/fixtures/type-parameters-comments/fixture.ts",
"legacy-fixtures/basics/fixtures/type-reference-comments/fixture.ts",
@@ -481,6 +488,11 @@ exports[`AST Fixtures List fixtures with AST differences 1`] = `
"legacy-fixtures/types/fixtures/union-type/fixture.ts",
"special/Decorator/fixtures/decorator-class-member-super-with-parens/fixture.ts",
"special/Decorator/fixtures/decorator-class-member-super-without-parens/fixture.ts",
+ "special/ExportSpecifier/fixtures/literal-specifier/fixture.ts",
+ "special/ExportSpecifier/fixtures/type-only-export-specifiers/fixture.ts",
+ "special/ExportSpecifier/fixtures/value-export-specifier/fixture.ts",
+ "special/ImportSpecifier/fixtures/type-only-import-specifier/fixture.ts",
+ "special/ImportSpecifier/fixtures/type-only-import-specifiers/fixture.ts",
"special/TSTypeParameter/fixtures/arrow-const-modifier-extends/fixture.ts",
"special/TSTypeParameter/fixtures/arrow-const-modifier/fixture.ts",
"special/TSTypeParameter/fixtures/class-decl-const-in-modifier/fixture.ts",
diff --git a/packages/ast-spec/tests/fixtures-with-differences-errors.shot b/packages/ast-spec/tests/fixtures-with-differences-errors.shot
index a641afd174c2..505d0a51a3e3 100644
--- a/packages/ast-spec/tests/fixtures-with-differences-errors.shot
+++ b/packages/ast-spec/tests/fixtures-with-differences-errors.shot
@@ -51,8 +51,6 @@ exports[`AST Fixtures List fixtures with Error differences 1`] = `
"legacy-fixtures/parameter-decorators/fixtures/_error_/parameter-rest-element-decorator/fixture.ts",
],
"TSESTree errored but Babel didn't": [
- "declaration/ExportAllDeclaration/fixtures/_error_/named-non-identifier/fixture.ts",
- "declaration/ExportNamedDeclaration/fixtures/_error_/aliased-literal/fixture.ts",
"declaration/TSDeclareFunction/fixtures/_error_/generator-ambient/fixture.ts",
"declaration/TSDeclareFunction/fixtures/_error_/generator-overload/fixture.ts",
"declaration/TSDeclareFunction/fixtures/_error_/generator/fixture.ts",
diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md
index 2ec32622a71f..06f4d11c749e 100644
--- a/packages/eslint-plugin/CHANGELOG.md
+++ b/packages/eslint-plugin/CHANGELOG.md
@@ -1,3 +1,15 @@
+## 8.10.0 (2024-10-17)
+
+### 🚀 Features
+
+- support TypeScript 5.6 ([#9972](https://github.com/typescript-eslint/typescript-eslint/pull/9972))
+
+### ❤️ Thank You
+
+- Josh Goldberg ✨
+
+You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
+
## 8.9.0 (2024-10-14)
diff --git a/packages/eslint-plugin/docs/rules/ban-ts-comment.mdx b/packages/eslint-plugin/docs/rules/ban-ts-comment.mdx
index 8f287665a3ce..e2338747b707 100644
--- a/packages/eslint-plugin/docs/rules/ban-ts-comment.mdx
+++ b/packages/eslint-plugin/docs/rules/ban-ts-comment.mdx
@@ -97,6 +97,8 @@ if (false) {
### `descriptionFormat`
+{/* insert option description */}
+
For each directive type, you can specify a custom format in the form of a regular expression. Only description that matches the pattern will be allowed.
For example, with `{ 'ts-expect-error': { descriptionFormat: '^: TS\\d+ because .+$' } }`:
@@ -124,6 +126,8 @@ const a = doSomething('hello');
### `minimumDescriptionLength`
+{/* insert option description */}
+
Use `minimumDescriptionLength` to set a minimum length for descriptions when using the `allow-with-description` option for a directive.
For example, with `{ 'ts-expect-error': 'allow-with-description', minimumDescriptionLength: 10 }` the following pattern is:
diff --git a/packages/eslint-plugin/docs/rules/class-methods-use-this.mdx b/packages/eslint-plugin/docs/rules/class-methods-use-this.mdx
index dc48c04227bc..7023306a183c 100644
--- a/packages/eslint-plugin/docs/rules/class-methods-use-this.mdx
+++ b/packages/eslint-plugin/docs/rules/class-methods-use-this.mdx
@@ -31,6 +31,8 @@ const defaultOptions: Options = {
### `ignoreOverrideMethods`
+{/* insert option description */}
+
Makes the rule ignore any class member explicitly marked with `override`.
Example of a correct code when `ignoreOverrideMethods` is set to `true`:
@@ -44,7 +46,8 @@ class X {
### `ignoreClassesThatImplementAnInterface`
-Makes the rule ignore class members that are defined within a class that `implements` a type.
+{/* insert option description */}
+
If specified, it can be either:
- `true`: Ignore all classes that implement an interface
diff --git a/packages/eslint-plugin/docs/rules/consistent-generic-constructors.mdx b/packages/eslint-plugin/docs/rules/consistent-generic-constructors.mdx
index 486147a04551..e4c5e0708398 100644
--- a/packages/eslint-plugin/docs/rules/consistent-generic-constructors.mdx
+++ b/packages/eslint-plugin/docs/rules/consistent-generic-constructors.mdx
@@ -27,10 +27,12 @@ Keeping to one side consistently improve code readability.
## Options
-- `constructor` _(default)_: type arguments that **only** appear on the type annotation are disallowed.
-- `type-annotation`: type arguments that **only** appear on the constructor are disallowed.
+- `'constructor'` _(default)_: type arguments that **only** appear on the type annotation are disallowed.
+- `'type-annotation'`: type arguments that **only** appear on the constructor are disallowed.
-### `constructor`
+### `'constructor'`
+
+{/* insert option description */}
@@ -54,7 +56,7 @@ const set: Set = new Set();
-### `type-annotation`
+### `'type-annotation'`
diff --git a/packages/eslint-plugin/docs/rules/consistent-indexed-object-style.mdx b/packages/eslint-plugin/docs/rules/consistent-indexed-object-style.mdx
index 7ac21461479b..8aeb34e238d5 100644
--- a/packages/eslint-plugin/docs/rules/consistent-indexed-object-style.mdx
+++ b/packages/eslint-plugin/docs/rules/consistent-indexed-object-style.mdx
@@ -27,10 +27,12 @@ Using one declaration form consistently improves code readability.
## Options
-- `"record"` _(default)_: only allow the `Record` type.
-- `"index-signature"`: only allow index signatures.
+- `'record'` _(default)_: only allow the `Record` type.
+- `'index-signature'`: only allow index signatures.
-### `record`
+### `'record'`
+
+{/* insert option description */}
@@ -55,7 +57,7 @@ type Foo = Record;
-### `index-signature`
+### `'index-signature'`
diff --git a/packages/eslint-plugin/docs/rules/consistent-type-assertions.mdx b/packages/eslint-plugin/docs/rules/consistent-type-assertions.mdx
index cf437b9ed714..0b13d9df2677 100644
--- a/packages/eslint-plugin/docs/rules/consistent-type-assertions.mdx
+++ b/packages/eslint-plugin/docs/rules/consistent-type-assertions.mdx
@@ -30,7 +30,9 @@ Examples of them include `let x = "hello" as const;` and `let x = "hello"
### `assertionStyle`
-The expected assertion style to enforce. Valid values for `assertionStyle` are:
+{/* insert option description */}
+
+Valid values for `assertionStyle` are:
- `as` will enforce that you always use `... as foo`.
- `angle-bracket` will enforce that you always use `...`
@@ -42,7 +44,7 @@ Some codebases like to go for an extra level of type safety, and ban assertions
### `objectLiteralTypeAssertions`
-Whether to always prefer type declarations for object literals used as variable initializers, rather than type assertions.
+{/* insert option description */}
For example, this would prefer `const x: T = { ... };` to `const x = { ... } as T;` (or similar with angle brackets).
The type assertion in the latter case is either unnecessary or will probably hide an error.
diff --git a/packages/eslint-plugin/docs/rules/consistent-type-definitions.mdx b/packages/eslint-plugin/docs/rules/consistent-type-definitions.mdx
index 353bd1cf6258..68060f551a3b 100644
--- a/packages/eslint-plugin/docs/rules/consistent-type-definitions.mdx
+++ b/packages/eslint-plugin/docs/rules/consistent-type-definitions.mdx
@@ -30,10 +30,12 @@ Using the same type declaration style consistently helps with code readability.
## Options
-- `"interface"` _(default)_: enforce using `interface`s for object type definitions.
-- `"type"`: enforce using `type`s for object type definitions.
+- `'interface'` _(default)_: enforce using `interface`s for object type definitions.
+- `'type'`: enforce using `type`s for object type definitions.
-### `interface`
+### `'interface'`
+
+{/* insert option description */}
@@ -57,7 +59,9 @@ interface T {
-### `type`
+### `'type'`
+
+{/* insert option description */}
diff --git a/packages/eslint-plugin/docs/rules/consistent-type-exports.mdx b/packages/eslint-plugin/docs/rules/consistent-type-exports.mdx
index 7c2ed45dcda9..293db56fd5f0 100644
--- a/packages/eslint-plugin/docs/rules/consistent-type-exports.mdx
+++ b/packages/eslint-plugin/docs/rules/consistent-type-exports.mdx
@@ -54,7 +54,8 @@ export type { ButtonProps };
### `fixMixedExportsWithInlineTypeSpecifier`
-Whether the rule will autofix "mixed" export cases using TS inline type specifiers.
+{/* insert option description */}
+
If you are using a TypeScript version less than 4.5, then you will not be able to use this option.
For example the following code:
diff --git a/packages/eslint-plugin/docs/rules/consistent-type-imports.mdx b/packages/eslint-plugin/docs/rules/consistent-type-imports.mdx
index cacc53d50a2c..3f7dc32004e0 100644
--- a/packages/eslint-plugin/docs/rules/consistent-type-imports.mdx
+++ b/packages/eslint-plugin/docs/rules/consistent-type-imports.mdx
@@ -18,7 +18,9 @@ This allows transpilers to drop imports without knowing the types of the depende
### `prefer`
-The expected import kind for type-only imports. Valid values for `prefer` are:
+{/* insert option description */}
+
+Valid values for `prefer` are:
- `type-imports` will enforce that you always use `import type Foo from '...'` except referenced by metadata of decorators. It is the default.
- `no-type-imports` will enforce that you always use `import Foo from '...'`.
@@ -43,7 +45,9 @@ const x: Bar = 1;
### `fixStyle`
-The expected type modifier to be added when an import is detected as used only in the type position. Valid values for `fixStyle` are:
+{/* insert option description */}
+
+Valid values for `fixStyle` are:
- `separate-type-imports` will add the type keyword after the import keyword `import type { A } from '...'`. It is the default.
- `inline-type-imports` will inline the type keyword `import { type A } from '...'` and is only available in TypeScript 4.5 and onwards. See [documentation here](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-5.html#type-modifiers-on-import-names 'TypeScript 4.5 documentation on type modifiers and import names').
@@ -83,8 +87,7 @@ const x: Bar = 1;
### `disallowTypeAnnotations`
-Whether to disallow type imports in type annotations (`import()`).
-Default is `true`.
+{/* insert option description */}
Examples of **incorrect** code with `{disallowTypeAnnotations: true}`:
diff --git a/packages/eslint-plugin/docs/rules/dot-notation.mdx b/packages/eslint-plugin/docs/rules/dot-notation.mdx
index cf44c44028b8..fd6967f947e0 100644
--- a/packages/eslint-plugin/docs/rules/dot-notation.mdx
+++ b/packages/eslint-plugin/docs/rules/dot-notation.mdx
@@ -38,7 +38,8 @@ If the TypeScript compiler option `noPropertyAccessFromIndexSignature` is set to
### `allowPrivateClassPropertyAccess`
-Whether to allow accessing class members marked as `private` with array notation.
+{/* insert option description */}
+
This can be useful because TypeScript will report a type error on dot notation but not array notation.
Example of a correct code when `allowPrivateClassPropertyAccess` is set to `true`:
@@ -54,7 +55,8 @@ x['priv_prop'] = 123;
### `allowProtectedClassPropertyAccess`
-Whether to allow accessing class members marked as `protected` with array notation.
+{/* insert option description */}
+
This can be useful because TypeScript will report a type error on dot notation but not array notation.
Example of a correct code when `allowProtectedClassPropertyAccess` is set to `true`:
@@ -70,7 +72,7 @@ x['protected_prop'] = 123;
### `allowIndexSignaturePropertyAccess`
-Whether to allow accessing properties matching an index signature with array notation.
+{/* insert option description */}
Example of correct code when `allowIndexSignaturePropertyAccess` is set to `true`:
diff --git a/packages/eslint-plugin/docs/rules/explicit-function-return-type.mdx b/packages/eslint-plugin/docs/rules/explicit-function-return-type.mdx
index f664314cd462..1bc1a56e50e6 100644
--- a/packages/eslint-plugin/docs/rules/explicit-function-return-type.mdx
+++ b/packages/eslint-plugin/docs/rules/explicit-function-return-type.mdx
@@ -98,6 +98,8 @@ If you are working on a codebase within which you lint non-TypeScript code (i.e.
### `allowExpressions`
+{/* insert option description */}
+
Examples of code for this rule with `{ allowExpressions: true }`:
@@ -127,6 +129,8 @@ const foo = arr.map(i => i * i);
### `allowTypedFunctionExpressions`
+{/* insert option description */}
+
Examples of code for this rule with `{ allowTypedFunctionExpressions: true }`:
@@ -188,6 +192,8 @@ functionWithObjectArg({
### `allowHigherOrderFunctions`
+{/* insert option description */}
+
Examples of code for this rule with `{ allowHigherOrderFunctions: true }`:
@@ -217,6 +223,8 @@ function fn() {
### `allowDirectConstAssertionInArrowFunctions`
+{/* insert option description */}
+
Examples of code for this rule with `{ allowDirectConstAssertionInArrowFunctions: true }`:
@@ -240,6 +248,8 @@ const func = () => x as const;
### `allowConciseArrowFunctionExpressionsStartingWithVoid`
+{/* insert option description */}
+
Examples of code for this rule with `{ allowConciseArrowFunctionExpressionsStartingWithVoid: true }`:
@@ -265,6 +275,8 @@ var log = (message: string) => void console.log(message);
### `allowFunctionsWithoutTypeParameters`
+{/* insert option description */}
+
Examples of code for this rule with `{ allowFunctionsWithoutTypeParameters: true }`:
@@ -300,6 +312,8 @@ const allowedArrow = (x: string) => x;
### `allowedNames`
+{/* insert option description */}
+
You may pass function/method names you would like this rule to ignore, like so:
```json
@@ -315,6 +329,8 @@ You may pass function/method names you would like this rule to ignore, like so:
### `allowIIFEs`
+{/* insert option description */}
+
Examples of code for this rule with `{ allowIIFEs: true }`:
diff --git a/packages/eslint-plugin/docs/rules/explicit-member-accessibility.mdx b/packages/eslint-plugin/docs/rules/explicit-member-accessibility.mdx
index 60f4f6c2a810..67b78cbed113 100644
--- a/packages/eslint-plugin/docs/rules/explicit-member-accessibility.mdx
+++ b/packages/eslint-plugin/docs/rules/explicit-member-accessibility.mdx
@@ -49,6 +49,8 @@ If you are working on a codebase within which you lint non-TypeScript code (i.e.
### `accessibility`
+{/* insert option description */}
+
This rule in its default state requires no configuration and will enforce that every class member has an accessibility modifier. If you would like to allow for some implicit public members then you have the following options:
```jsonc
@@ -169,6 +171,8 @@ class Animal {
### `overrides`
+{/* insert option description */}
+
There are three ways in which an override can be used.
- To disallow the use of public on a given member.
@@ -317,8 +321,9 @@ class Animal {
### `ignoredMethodNames`
-Specific method names that may be ignored.
-Note that this option does not care for the context, and will ignore every method with these names, which could lead to it missing some cases. You should use this sparingly.
+{/* insert option description */}
+
+Note that this option does not care about context, and will ignore every method with these names, which could lead to it missing some cases. You should use this sparingly.
e.g. `[ { ignoredMethodNames: ['specificMethod', 'whateverMethod'] } ]`
```ts option='{ "ignoredMethodNames": ["specificMethod", "whateverMethod"] }' showPlaygroundButton
diff --git a/packages/eslint-plugin/docs/rules/explicit-module-boundary-types.mdx b/packages/eslint-plugin/docs/rules/explicit-module-boundary-types.mdx
index 7a19ab87c726..fadbfa296975 100644
--- a/packages/eslint-plugin/docs/rules/explicit-module-boundary-types.mdx
+++ b/packages/eslint-plugin/docs/rules/explicit-module-boundary-types.mdx
@@ -97,17 +97,19 @@ If you are working on a codebase within which you lint non-TypeScript code (i.e.
### `allowArgumentsExplicitlyTypedAsAny`
-When this option is `true`, the rule ignores arguments that are explicitly typed as any.
+{/* insert option description */}
+
+Examples of code for this rule with `{ allowArgumentsExplicitlyTypedAsAny: false }`:
-
+
```ts option='{ "allowArgumentsExplicitlyTypedAsAny": false }'
export const func = (value: any): number => value + 1;
```
-
+
```ts option='{ "allowArgumentsExplicitlyTypedAsAny": true }'
export const func = (value: any): number => value + 1;
@@ -118,10 +120,12 @@ export const func = (value: any): number => value + 1;
### `allowDirectConstAssertionInArrowFunctions`
-When this option is `true`, the rule ignores return type annotations on body-less arrow functions that return an `as const` type assertion.
+{/* insert option description */}
+
+Examples of code for this rule with `{ allowDirectConstAssertionInArrowFunctions: false }`:
-
+
```ts option='{ "allowDirectConstAssertionInArrowFunctions": false }'
export const func = (value: number) => ({ type: 'X', value });
@@ -132,7 +136,7 @@ export const bar = () => 1;
```
-
+
```ts option='{ "allowDirectConstAssertionInArrowFunctions": true }'
export const func = (value: number) => ({ type: 'X', value }) as const;
@@ -148,6 +152,8 @@ export const bar = () => 1 as const;
### `allowedNames`
+{/* insert option description */}
+
You may pass function/method names you would like this rule to ignore, like so:
```json
@@ -163,10 +169,12 @@ You may pass function/method names you would like this rule to ignore, like so:
### `allowHigherOrderFunctions`
-When this option is `true`, the rule ignores return type annotations on function, which is immediately returning another function expression.
+{/* insert option description */}
+
+Examples of code for this rule with `{ allowHigherOrderFunctions: false }`:
-
+
```ts option='{ "allowHigherOrderFunctions": false }'
export const arrowFn = () => () => {};
@@ -181,7 +189,7 @@ export function foo(outer: string) {
```
-
+
```ts option='{ "allowHigherOrderFunctions": true }'
export const arrowFn = () => (): void => {};
@@ -200,10 +208,12 @@ export function foo(outer: string) {
### `allowTypedFunctionExpressions`
-When this option is `true`, the rule ignores type annotations on the variable of a function expression.
+{/* insert option description */}
+
+Examples of code for this rule with `{ allowTypedFunctionExpressions: false }`:
-
+
```ts option='{ "allowTypedFunctionExpressions": false }'
export let arrowFn = () => 'test';
@@ -220,7 +230,7 @@ export const foo = bar => {};
```
-
+
```ts option='{ "allowTypedFunctionExpressions": true }'
type FuncType = () => string;
diff --git a/packages/eslint-plugin/docs/rules/max-params.mdx b/packages/eslint-plugin/docs/rules/max-params.mdx
index 1797dffaec73..d1a363734000 100644
--- a/packages/eslint-plugin/docs/rules/max-params.mdx
+++ b/packages/eslint-plugin/docs/rules/max-params.mdx
@@ -29,7 +29,7 @@ const defaultOptions: Options = {
### `countVoidThis`
-Whether to count a `this` declaration when the type is `void`.
+{/* insert option description */}
Example of a code when `countVoidThis` is set to `false` and `max` is `1`:
diff --git a/packages/eslint-plugin/docs/rules/method-signature-style.mdx b/packages/eslint-plugin/docs/rules/method-signature-style.mdx
index 0536bff803a5..1f2696276b9c 100644
--- a/packages/eslint-plugin/docs/rules/method-signature-style.mdx
+++ b/packages/eslint-plugin/docs/rules/method-signature-style.mdx
@@ -39,10 +39,10 @@ This rule accepts one string option:
- `"property"`: Enforce using property signature for functions. Use this to enforce maximum correctness together with TypeScript's strict mode.
- `"method"`: Enforce using method signature for functions. Use this if you aren't using TypeScript's strict mode and prefer this style.
-The default is `"property"`.
-
### `property`
+{/* insert option description */}
+
Examples of code with `property` option.
@@ -85,6 +85,8 @@ interface T3 {
### `method`
+{/* insert option description */}
+
Examples of code with `method` option.
diff --git a/packages/eslint-plugin/docs/rules/no-base-to-string.mdx b/packages/eslint-plugin/docs/rules/no-base-to-string.mdx
index 97767da415b8..f2bf27b8e072 100644
--- a/packages/eslint-plugin/docs/rules/no-base-to-string.mdx
+++ b/packages/eslint-plugin/docs/rules/no-base-to-string.mdx
@@ -66,9 +66,10 @@ const literalWithToString = {
### `ignoredTypeNames`
-Stringified regular expressions of type names to ignore.
-This is useful for types missing `toString()` (but actually has `toString()`).
-There are some types missing `toString()` in old version TypeScript, like `RegExp`, `URL`, `URLSearchParams` etc.
+{/* insert option description */}
+
+This is useful for types whose declarations missing `toString()`, but are known to actually have `toString()`.
+There are some types missing `toString()` in TypeScript, like `RegExp`, `URL`, `URLSearchParams` etc.
The following patterns are considered correct with the default options `{ ignoredTypeNames: ["RegExp"] }`:
@@ -93,3 +94,4 @@ If you don't mind a risk of `"[object Object]"` or incorrect type coercions in y
## Further Reading
- [`Object.prototype.toString()` MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString)
+- [Microsoft/TypeScript Add missing toString declarations for base types that have them](https://github.com/microsoft/TypeScript/issues/38347)
diff --git a/packages/eslint-plugin/docs/rules/no-confusing-void-expression.mdx b/packages/eslint-plugin/docs/rules/no-confusing-void-expression.mdx
index b779558319b7..15c2815ac19c 100644
--- a/packages/eslint-plugin/docs/rules/no-confusing-void-expression.mdx
+++ b/packages/eslint-plugin/docs/rules/no-confusing-void-expression.mdx
@@ -77,6 +77,8 @@ cond ? console.log('true') : console.error('false');
### `ignoreArrowShorthand`
+{/* insert option description */}
+
Whether to ignore "shorthand" `() =>` arrow functions: those without `{ ... }` braces.
It might be undesirable to wrap every arrow function shorthand expression.
@@ -90,6 +92,8 @@ promise.then(value => window.postMessage(value));
### `ignoreVoidOperator`
+{/* insert option description */}
+
Whether to ignore returns that start with the `void` operator.
It might be preferable to only use some distinct syntax
diff --git a/packages/eslint-plugin/docs/rules/no-duplicate-type-constituents.mdx b/packages/eslint-plugin/docs/rules/no-duplicate-type-constituents.mdx
index 37a1e36e6217..dfd7d2d435ec 100644
--- a/packages/eslint-plugin/docs/rules/no-duplicate-type-constituents.mdx
+++ b/packages/eslint-plugin/docs/rules/no-duplicate-type-constituents.mdx
@@ -67,10 +67,14 @@ const fn = (a?: string) => {};
### `ignoreIntersections`
+{/* insert option description */}
+
When set to true, duplicate checks on intersection type constituents are ignored.
### `ignoreUnions`
+{/* insert option description */}
+
When set to true, duplicate checks on union type constituents are ignored.
## When Not To Use It
diff --git a/packages/eslint-plugin/docs/rules/no-empty-interface.mdx b/packages/eslint-plugin/docs/rules/no-empty-interface.mdx
index 733d8b39ebe6..4eeb2f3247ec 100644
--- a/packages/eslint-plugin/docs/rules/no-empty-interface.mdx
+++ b/packages/eslint-plugin/docs/rules/no-empty-interface.mdx
@@ -62,7 +62,9 @@ interface Baz extends Foo, Bar {}
### `allowSingleExtends`
-`allowSingleExtends: true` will silence warnings about extending a single interface without adding additional members
+{/* insert option description */}
+
+`allowSingleExtends: true` will silence warnings about extending a single interface without adding additional members.
## When Not To Use It
diff --git a/packages/eslint-plugin/docs/rules/no-empty-object-type.mdx b/packages/eslint-plugin/docs/rules/no-empty-object-type.mdx
index 8bf941a66615..b1ed390ad9f0 100644
--- a/packages/eslint-plugin/docs/rules/no-empty-object-type.mdx
+++ b/packages/eslint-plugin/docs/rules/no-empty-object-type.mdx
@@ -83,7 +83,9 @@ By default, this rule flags both interfaces and object types.
### `allowInterfaces`
-Whether to allow empty interfaces, as one of:
+{/* insert option description */}
+
+Allowed values are:
- `'always'`: to always allow interfaces with no fields
- `'never'` _(default)_: to never allow interfaces with no fields
@@ -101,14 +103,17 @@ interface Derived extends Base {}
### `allowObjectTypes`
-Whether to allow empty object type literals, as one of:
+{/* insert option description */}
+
+Allowed values are:
- `'always'`: to always allow object type literals with no fields
- `'never'` _(default)_: to never allow object type literals with no fields
### `allowWithName`
-A stringified regular expression to allow interfaces and object type aliases with the configured name.
+{/* insert option description */}
+
This can be useful if your existing code style includes a pattern of declaring empty types with `{}` instead of `object`.
Examples of code for this rule with `{ allowWithName: 'Props$' }`:
diff --git a/packages/eslint-plugin/docs/rules/no-explicit-any.mdx b/packages/eslint-plugin/docs/rules/no-explicit-any.mdx
index 52f7108d165b..33b382920bc1 100644
--- a/packages/eslint-plugin/docs/rules/no-explicit-any.mdx
+++ b/packages/eslint-plugin/docs/rules/no-explicit-any.mdx
@@ -107,6 +107,8 @@ function greet(param: Array): Array {}
### `fixToUnknown`
+{/* insert option description */}
+
By default, this rule will not provide automatic ESLint _fixes_: only opt-in _suggestions_.
Switching types to `unknown` is safer but is likely to cause additional type errors.
@@ -114,7 +116,7 @@ Enabling `{ "fixToUnknown": true }` gives the rule an auto-fixer to replace `: a
### `ignoreRestArgs`
-A boolean to specify if arrays from the rest operator are considered okay. `false` by default.
+{/* insert option description */}
The examples below are **incorrect** when `{ignoreRestArgs: false}`, but **correct** when `{ignoreRestArgs: true}`.
diff --git a/packages/eslint-plugin/docs/rules/no-extraneous-class.mdx b/packages/eslint-plugin/docs/rules/no-extraneous-class.mdx
index 0966be0978c1..b6639b5ab85c 100644
--- a/packages/eslint-plugin/docs/rules/no-extraneous-class.mdx
+++ b/packages/eslint-plugin/docs/rules/no-extraneous-class.mdx
@@ -221,7 +221,7 @@ The rule's options each add an exemption for a specific type of class.
### `allowConstructorOnly`
-`allowConstructorOnly` adds an exemption for classes that have only a constructor and no fields.
+{/* insert option description */}
@@ -246,7 +246,7 @@ class NoFields {
### `allowEmpty`
-The `allowEmpty` option adds an exemption for classes that are entirely empty.
+{/* insert option description */}
@@ -271,7 +271,7 @@ class NoFields {}
### `allowStaticOnly`
-The `allowStaticOnly` option adds an exemption for classes that only contain static members.
+{/* insert option description */}
:::caution
We strongly recommend against the `allowStaticOnly` exemption.
@@ -299,7 +299,7 @@ class NotEmptyClass {
### `allowWithDecorator`
-The `allowWithDecorator` option adds an exemption for classes decorated with a `@` decorator.
+{/* insert option description */}
diff --git a/packages/eslint-plugin/docs/rules/no-floating-promises.mdx b/packages/eslint-plugin/docs/rules/no-floating-promises.mdx
index 355fe6aeb141..12bf7465b537 100644
--- a/packages/eslint-plugin/docs/rules/no-floating-promises.mdx
+++ b/packages/eslint-plugin/docs/rules/no-floating-promises.mdx
@@ -87,6 +87,8 @@ await Promise.all([1, 2, 3].map(async x => x + 1));
### `checkThenables`
+{/* insert option description */}
+
A ["Thenable"](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise#thenables) value is an object which has a `then` method, such as a `Promise`.
Other Thenables include TypeScript's built-in `PromiseLike` interface and any custom object that happens to have a `.then()`.
@@ -132,8 +134,9 @@ await createMyThenable();
### `ignoreVoid`
-This option, which is `true` by default, allows you to stop the rule reporting promises consumed with the [`void` operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void).
-This can be a good way to explicitly mark a promise as intentionally not awaited.
+{/* insert option description */}
+
+Placing the [`void` operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void) in front of a Promise can be a convenient way to explicitly mark that Promise as intentionally not awaited.
:::warning
Voiding a Promise doesn't handle it or change the runtime behavior.
@@ -152,11 +155,11 @@ void returnsPromise();
void Promise.reject('value');
```
-With this option set to `true`, and if you are using `no-void`, you should turn on the [`allowAsStatement`](https://eslint.org/docs/rules/no-void#allowasstatement) option.
+When this option is set to `true`, if you are using `no-void`, you should turn on the [`allowAsStatement`](https://eslint.org/docs/rules/no-void#allowasstatement) option.
### `ignoreIIFE`
-This allows you to skip checking of async IIFEs (Immediately Invoked Function Expressions).
+{/* insert option description */}
Examples of **correct** code for this rule with `{ ignoreIIFE: true }`:
@@ -173,7 +176,9 @@ await (async function () {
### `allowForKnownSafePromises`
-Specific types to be marked as "safe" to be floating. For example, you may need to do this in the case of libraries whose APIs return Promises whose rejections are safely handled by the library.
+{/* insert option description */}
+
+For example, you may need to do this in the case of libraries whose APIs return Promises whose rejections are safely handled by the library.
This option takes the shared [`TypeOrValueSpecifier` format](/packages/type-utils/type-or-value-specifier).
@@ -225,7 +230,8 @@ returnsSafePromise();
### `allowForKnownSafeCalls`
-Specific functions to be marked as "safe" to be called to create floating Promises.
+{/* insert option description */}
+
For example, you may need to do this in the case of libraries whose APIs may be called without handling the resultant Promises.
This option takes the shared [`TypeOrValueSpecifier` format](/packages/type-utils/type-or-value-specifier).
diff --git a/packages/eslint-plugin/docs/rules/no-inferrable-types.mdx b/packages/eslint-plugin/docs/rules/no-inferrable-types.mdx
index 1bddfeb3c249..25bfbbec04ce 100644
--- a/packages/eslint-plugin/docs/rules/no-inferrable-types.mdx
+++ b/packages/eslint-plugin/docs/rules/no-inferrable-types.mdx
@@ -80,7 +80,7 @@ function fn(a = 5, b = true) {}
### `ignoreParameters`
-Whether to ignore function parameters.
+{/* insert option description */}
When set to true, the following pattern is considered valid:
@@ -92,7 +92,7 @@ function foo(a: number = 5, b: boolean = true) {
### `ignoreProperties`
-Whether to ignore class properties.
+{/* insert option description */}
When set to true, the following pattern is considered valid:
diff --git a/packages/eslint-plugin/docs/rules/no-invalid-void-type.mdx b/packages/eslint-plugin/docs/rules/no-invalid-void-type.mdx
index 1e6a1507a3fa..6cfa270680a8 100644
--- a/packages/eslint-plugin/docs/rules/no-invalid-void-type.mdx
+++ b/packages/eslint-plugin/docs/rules/no-invalid-void-type.mdx
@@ -62,9 +62,9 @@ type stillVoid = void | never;
### `allowInGenericTypeArguments`
-Whether `void` can be used as a valid value for generic type parameters.
+{/* insert option description */}
-Alternatively, you can provide an array of strings which whitelist which types may accept `void` as a generic type parameter.
+Alternatively, you can provide an array of strings which allowlist which types may accept `void` as a generic type parameter.
Any types considered valid by this option will be considered valid as part of a union type with `void`.
@@ -98,7 +98,8 @@ type AllowedVoidUnion = void | Ex.Mx.Tx;
### `allowAsThisParameter`
-Whether a `this` parameter of a function may be `void`.
+{/* insert option description */}
+
This pattern can be useful to explicitly label function types that do not use a `this` argument. [See the TypeScript docs for more information](https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters-in-callbacks).
This option is `false` by default.
diff --git a/packages/eslint-plugin/docs/rules/no-magic-numbers.mdx b/packages/eslint-plugin/docs/rules/no-magic-numbers.mdx
index 2110f5bed847..09f07b945a1f 100644
--- a/packages/eslint-plugin/docs/rules/no-magic-numbers.mdx
+++ b/packages/eslint-plugin/docs/rules/no-magic-numbers.mdx
@@ -39,6 +39,8 @@ const defaultOptions: Options = {
### `ignoreEnums`
+{/* insert option description */}
+
Whether enums used in TypeScript are considered okay. `false` by default.
Examples of **incorrect** code for the `{ "ignoreEnums": false }` option:
@@ -59,6 +61,8 @@ enum foo {
### `ignoreNumericLiteralTypes`
+{/* insert option description */}
+
Whether numbers used in TypeScript numeric literal types are considered okay. `false` by default.
Examples of **incorrect** code for the `{ "ignoreNumericLiteralTypes": false }` option:
@@ -75,6 +79,8 @@ type SmallPrimes = 2 | 3 | 5 | 7 | 11;
### `ignoreReadonlyClassProperties`
+{/* insert option description */}
+
Whether `readonly` class properties are considered okay.
Examples of **incorrect** code for the `{ "ignoreReadonlyClassProperties": false }` option:
@@ -101,6 +107,8 @@ class Foo {
### `ignoreTypeIndexes`
+{/* insert option description */}
+
Whether numbers used to index types are okay. `false` by default.
Examples of **incorrect** code for the `{ "ignoreTypeIndexes": false }` option:
diff --git a/packages/eslint-plugin/docs/rules/no-meaningless-void-operator.mdx b/packages/eslint-plugin/docs/rules/no-meaningless-void-operator.mdx
index 518da46b3328..c4987ea2a4d3 100644
--- a/packages/eslint-plugin/docs/rules/no-meaningless-void-operator.mdx
+++ b/packages/eslint-plugin/docs/rules/no-meaningless-void-operator.mdx
@@ -54,7 +54,7 @@ void bar(1); // discarding a number
### `checkNever`
-Whether to suggest removing `void` when the argument has type `never`.
+{/* insert option description */}
## When Not To Use It
diff --git a/packages/eslint-plugin/docs/rules/no-misused-promises.mdx b/packages/eslint-plugin/docs/rules/no-misused-promises.mdx
index f4fd23fec126..52dc08dfcef6 100644
--- a/packages/eslint-plugin/docs/rules/no-misused-promises.mdx
+++ b/packages/eslint-plugin/docs/rules/no-misused-promises.mdx
@@ -22,6 +22,8 @@ See [`no-floating-promises`](./no-floating-promises.mdx) for detecting unhandled
### `checksConditionals`
+{/* insert option description */}
+
If you don't want to check conditionals, you can configure the rule with `"checksConditionals": false`:
```json
@@ -39,6 +41,8 @@ Doing so prevents the rule from looking at code like `if (somePromise)`.
### `checksVoidReturn`
+{/* insert option description */}
+
Likewise, if you don't want to check functions that return promises where a void return is
expected, your configuration will look like this:
@@ -101,7 +105,7 @@ Disables checking an asynchronous function used as a variable whose return type
### `checksSpreads`
-Whether to warn when `...` spreading a `Promise`.
+{/* insert option description */}
If you don't want to check object spreads, you can add this configuration:
@@ -120,6 +124,8 @@ If you don't want to check object spreads, you can add this configuration:
### `checksConditionals`
+{/* insert option description */}
+
Examples of code for this rule with `checksConditionals: true`:
@@ -167,6 +173,8 @@ while (await promise) {
### `checksVoidReturn`
+{/* insert option description */}
+
Examples of code for this rule with `checksVoidReturn: true`:
@@ -254,6 +262,8 @@ class MyClass implements MyAsyncInterface {
### `checksSpreads`
+{/* insert option description */}
+
Examples of code for this rule with `checksSpreads: true`:
diff --git a/packages/eslint-plugin/docs/rules/no-namespace.mdx b/packages/eslint-plugin/docs/rules/no-namespace.mdx
index 3bb12bf375ae..8e7ca864a8f7 100644
--- a/packages/eslint-plugin/docs/rules/no-namespace.mdx
+++ b/packages/eslint-plugin/docs/rules/no-namespace.mdx
@@ -46,6 +46,8 @@ declare module 'foo' {}
### `allowDeclarations`
+{/* insert option description */}
+
Examples of code with the `{ "allowDeclarations": true }` option:
@@ -100,6 +102,8 @@ declare module 'foo' {}
### `allowDefinitionFiles`
+{/* insert option description */}
+
Examples of code for the `{ "allowDefinitionFiles": true }` option:
diff --git a/packages/eslint-plugin/docs/rules/no-redeclare.mdx b/packages/eslint-plugin/docs/rules/no-redeclare.mdx
index e4cf6d6df98c..8b24af9797ee 100644
--- a/packages/eslint-plugin/docs/rules/no-redeclare.mdx
+++ b/packages/eslint-plugin/docs/rules/no-redeclare.mdx
@@ -33,7 +33,9 @@ const defaultOptions: Options = {
### `ignoreDeclarationMerge`
-Whether to ignore declaration merges between the following sets:
+{/* insert option description */}
+
+The following sets will be ignored when this option is enabled:
- interface + interface
- namespace + namespace
diff --git a/packages/eslint-plugin/docs/rules/no-require-imports.mdx b/packages/eslint-plugin/docs/rules/no-require-imports.mdx
index 4512c2693d95..1d4fd9ea7bb7 100644
--- a/packages/eslint-plugin/docs/rules/no-require-imports.mdx
+++ b/packages/eslint-plugin/docs/rules/no-require-imports.mdx
@@ -38,7 +38,9 @@ import * as lib3 from 'lib3';
### `allow`
-An array of strings. These strings will be compiled into regular expressions with the `u` flag and be used to test against the imported path. A common use case is to allow importing `package.json`. This is because `package.json` commonly lives outside of the TS root directory, so statically importing it would lead to root directory conflicts, especially with `resolveJsonModule` enabled. You can also use it to allow importing any JSON if your environment doesn't support JSON modules, or use it for other cases where `import` statements cannot work.
+{/* insert option description */}
+
+These strings will be compiled into regular expressions with the `u` flag and be used to test against the imported path. A common use case is to allow importing `package.json`. This is because `package.json` commonly lives outside of the TS root directory, so statically importing it would lead to root directory conflicts, especially with `resolveJsonModule` enabled. You can also use it to allow importing any JSON if your environment doesn't support JSON modules, or use it for other cases where `import` statements cannot work.
With `{allow: ['/package\\.json$']}`:
@@ -61,7 +63,9 @@ console.log(require('../package.json').version);
### `allowAsImport`
-When set to `true`, the `import x = require(...)` declaration won't be reported.
+{/* insert option description */}
+
+When set to `true`, `import ... = require(...)` declarations won't be reported.
This is useful if you use certain module options that require strict CommonJS interop semantics.
With `{allowAsImport: true}`:
diff --git a/packages/eslint-plugin/docs/rules/no-restricted-imports.mdx b/packages/eslint-plugin/docs/rules/no-restricted-imports.mdx
index 621bf351e833..2c42980c4e0d 100644
--- a/packages/eslint-plugin/docs/rules/no-restricted-imports.mdx
+++ b/packages/eslint-plugin/docs/rules/no-restricted-imports.mdx
@@ -17,7 +17,10 @@ This rule adds the following options:
### `allowTypeImports`
-(default: `false`)
+{/* insert option description */}
+
+Whether to allow type-only imports for a path.
+Default: `false`.
You can specify this option for a specific path or pattern as follows:
diff --git a/packages/eslint-plugin/docs/rules/no-restricted-types.mdx b/packages/eslint-plugin/docs/rules/no-restricted-types.mdx
index 20732174929e..40219e99e39d 100644
--- a/packages/eslint-plugin/docs/rules/no-restricted-types.mdx
+++ b/packages/eslint-plugin/docs/rules/no-restricted-types.mdx
@@ -19,7 +19,7 @@ Note that it does not ban the corresponding runtime objects from being used.
### `types`
-An object whose keys are the types you want to ban, and the values are error messages.
+{/* insert option description */}
The type can either be a type name literal (`OldType`) or a a type name with generic parameter instantiation(s) (`OldType`).
diff --git a/packages/eslint-plugin/docs/rules/no-shadow.mdx b/packages/eslint-plugin/docs/rules/no-shadow.mdx
index 40651e2fbe99..ecd105f6e334 100644
--- a/packages/eslint-plugin/docs/rules/no-shadow.mdx
+++ b/packages/eslint-plugin/docs/rules/no-shadow.mdx
@@ -31,7 +31,9 @@ const defaultOptions: Options = {
### `ignoreTypeValueShadow`
-Whether to ignore types named the same as a variable. This is generally safe because you cannot use variables in type locations without a `typeof` operator, so there's little risk of confusion.
+{/* insert option description */}
+
+This is generally safe because you cannot use variables in type locations without a `typeof` operator, so there's little risk of confusion.
Examples of **correct** code with `{ ignoreTypeValueShadow: true }`:
@@ -55,7 +57,7 @@ _Shadowing_ specifically refers to two identical identifiers that are in differe
### `ignoreFunctionTypeParameterNameValueShadow`
-Whether to ignore function parameters named the same as a variable.
+{/* insert option description */}
Each of a function type's arguments creates a value variable within the scope of the function type. This is done so that you can reference the type later using the `typeof` operator:
diff --git a/packages/eslint-plugin/docs/rules/no-this-alias.mdx b/packages/eslint-plugin/docs/rules/no-this-alias.mdx
index af07e4353d3f..f5a9c86f0754 100644
--- a/packages/eslint-plugin/docs/rules/no-this-alias.mdx
+++ b/packages/eslint-plugin/docs/rules/no-this-alias.mdx
@@ -41,6 +41,8 @@ setTimeout(() => {
### `allowDestructuring`
+{/* insert option description */}
+
It can sometimes be useful to destructure properties from a class instance, such as retrieving multiple properties from the instance in one of its methods.
`allowDestructuring` allows those destructures and is `true` by default.
You can explicitly disallow them by setting `allowDestructuring` to `false`.
@@ -84,6 +86,8 @@ class ComponentLike {
### `allowedNames`
+{/* insert option description */}
+
`no-this-alias` can alternately be used to allow only a specific list of names as `this` aliases.
We recommend against this except as a transitory step towards fixing all rule violations.
diff --git a/packages/eslint-plugin/docs/rules/no-type-alias.mdx b/packages/eslint-plugin/docs/rules/no-type-alias.mdx
index 11068fbab2f6..3142deb7414f 100644
--- a/packages/eslint-plugin/docs/rules/no-type-alias.mdx
+++ b/packages/eslint-plugin/docs/rules/no-type-alias.mdx
@@ -114,7 +114,7 @@ and simplified types (primitives, tuples, unions, intersections, etc).
### `allowAliases`
-This applies to primitive types and reference types.
+{/* insert option description */}
The setting accepts the following values:
@@ -268,7 +268,7 @@ type Foo = Bar & Baz;
### `allowCallbacks`
-This applies to function types.
+{/* insert option description */}
The setting accepts the following values:
@@ -290,7 +290,7 @@ type Foo = (name: string, age: number) => string & Person;
### `allowConditionalTypes`
-This applies to conditional types.
+{/* insert option description */}
Examples of **correct** code for the `{ "allowConditionalTypes": "always" }` option:
@@ -300,7 +300,7 @@ type Foo = T extends number ? number : null;
### `allowConstructors`
-This applies to constructor types.
+{/* insert option description */}
The setting accepts the following values:
@@ -314,7 +314,7 @@ type Foo = new () => void;
### `allowLiterals`
-This applies to literal types (`type Foo = { ... }`).
+{/* insert option description */}
The setting accepts the following options:
@@ -421,7 +421,7 @@ type Foo = { name: string } & { age: number };
### `allowMappedTypes`
-This applies to literal types.
+{/* insert option description */}
The setting accepts the following values:
@@ -524,7 +524,7 @@ type Foo = { [P in keyof T]?: T[P] } & { [P in keyof U]?: U[P] };
### `allowTupleTypes`
-This applies to tuple types (`type Foo = [number]`).
+{/* insert option description */}
The setting accepts the following options:
@@ -599,7 +599,7 @@ type Foo = [string] | [number];
### `allowGenerics`
-This applies to generic types, including TypeScript provided global utility types (`type Foo = Record`).
+{/* insert option description */}
The setting accepts the following options:
diff --git a/packages/eslint-plugin/docs/rules/no-unnecessary-boolean-literal-compare.mdx b/packages/eslint-plugin/docs/rules/no-unnecessary-boolean-literal-compare.mdx
index 51c13eecb150..16462771e768 100644
--- a/packages/eslint-plugin/docs/rules/no-unnecessary-boolean-literal-compare.mdx
+++ b/packages/eslint-plugin/docs/rules/no-unnecessary-boolean-literal-compare.mdx
@@ -61,6 +61,8 @@ are **not** checked by default.
### `allowComparingNullableBooleansToTrue`
+{/* insert option description */}
+
Examples of code for this rule with `{ allowComparingNullableBooleansToTrue: false }`:
@@ -94,6 +96,8 @@ if (!someNullCondition) {
### `allowComparingNullableBooleansToFalse`
+{/* insert option description */}
+
Examples of code for this rule with `{ allowComparingNullableBooleansToFalse: false }`:
diff --git a/packages/eslint-plugin/docs/rules/no-unnecessary-condition.mdx b/packages/eslint-plugin/docs/rules/no-unnecessary-condition.mdx
index befeea8b2401..06cfc9eb33fe 100644
--- a/packages/eslint-plugin/docs/rules/no-unnecessary-condition.mdx
+++ b/packages/eslint-plugin/docs/rules/no-unnecessary-condition.mdx
@@ -82,6 +82,8 @@ function bar(arg?: string | null) {
### `allowConstantLoopConditions`
+{/* insert option description */}
+
Example of correct code for `{ allowConstantLoopConditions: true }`:
```ts option='{ "allowConstantLoopConditions": true }' showPlaygroundButton
@@ -92,6 +94,8 @@ do {} while (true);
### `checkTypePredicates`
+{/* insert option description */}
+
Example of additional incorrect code with `{ checkTypePredicates: true }`:
```ts option='{ "checkTypePredicates": true }' showPlaygroundButton
@@ -132,6 +136,8 @@ However, in some contexts, it may be more appropriate to keep this option disabl
### `allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing`
+{/* insert option description */}
+
:::danger Deprecated
This option will be removed in the next major version of typescript-eslint.
:::
diff --git a/packages/eslint-plugin/docs/rules/no-unnecessary-type-assertion.mdx b/packages/eslint-plugin/docs/rules/no-unnecessary-type-assertion.mdx
index 4c34f32cae8f..497f843180e3 100644
--- a/packages/eslint-plugin/docs/rules/no-unnecessary-type-assertion.mdx
+++ b/packages/eslint-plugin/docs/rules/no-unnecessary-type-assertion.mdx
@@ -75,6 +75,8 @@ function foo(x: number | undefined): number {
### `typesToIgnore`
+{/* insert option description */}
+
With `@typescript-eslint/no-unnecessary-type-assertion: ["error", { typesToIgnore: ['Foo'] }]`, the following is **correct** code:
```ts option='{ "typesToIgnore": ["Foo"] }' showPlaygroundButton
diff --git a/packages/eslint-plugin/docs/rules/no-use-before-define.mdx b/packages/eslint-plugin/docs/rules/no-use-before-define.mdx
index 29bf8b75a0a7..5d57c1814bbe 100644
--- a/packages/eslint-plugin/docs/rules/no-use-before-define.mdx
+++ b/packages/eslint-plugin/docs/rules/no-use-before-define.mdx
@@ -33,7 +33,7 @@ const defaultOptions: Options = {
### `enums`
-Whether to check references to enums before the enum declaration.
+{/* insert option description */}
If this is `true`, this rule warns every reference to a enum before the enum declaration.
If this is `false`, this rule will ignore references to enums, when the reference is in a child scope.
@@ -69,7 +69,7 @@ enum Foo {
### `typedefs`
-Whether to check references to types before the type declaration.
+{/* insert option description */}
If this is `true`, this rule warns every reference to a type before the type declaration.
If this is `false`, this rule will ignore references to types.
@@ -83,7 +83,7 @@ type StringOrNumber = string | number;
### `ignoreTypeReferences`
-Whether to ignore type references, such as in type annotations and assertions.
+{/* insert option description */}
If this is `true`, this rule ignores all type references.
If this is `false`, this will check all type references.
diff --git a/packages/eslint-plugin/docs/rules/no-var-requires.mdx b/packages/eslint-plugin/docs/rules/no-var-requires.mdx
index c9945304a8a2..fc3e65631bbc 100644
--- a/packages/eslint-plugin/docs/rules/no-var-requires.mdx
+++ b/packages/eslint-plugin/docs/rules/no-var-requires.mdx
@@ -44,6 +44,8 @@ import foo from 'foo';
### `allow`
+{/* insert option description */}
+
A array of strings. These strings will be compiled into regular expressions with the `u` flag and be used to test against the imported path. A common use case is to allow importing `package.json`. This is because `package.json` commonly lives outside of the TS root directory, so statically importing it would lead to root directory conflicts, especially with `resolveJsonModule` enabled. You can also use it to allow importing any JSON if your environment doesn't support JSON modules, or use it for other cases where `import` statements cannot work.
With `{allow: ['/package\\.json$']}`:
diff --git a/packages/eslint-plugin/docs/rules/parameter-properties.mdx b/packages/eslint-plugin/docs/rules/parameter-properties.mdx
index b9915dd65e68..1e60721f419f 100644
--- a/packages/eslint-plugin/docs/rules/parameter-properties.mdx
+++ b/packages/eslint-plugin/docs/rules/parameter-properties.mdx
@@ -24,6 +24,8 @@ It may take an options object containing either or both of:
### `allow`
+{/* insert option description */}
+
If you would like to ignore certain kinds of properties then you may pass an object containing `"allow"` as an array of any of the following options:
- `allow`, an array containing one or more of the allowed modifiers. Valid values are:
@@ -50,8 +52,10 @@ For example, to ignore `public` properties:
### `prefer`
-By default, the rule prefers class property (`"class-property"`).
-You can switch it to instead preferring parameter property with (`"parameter-property"`).
+{/* insert option description */}
+
+By default, the rule prefers class properties.
+You can switch it to instead preferring parameter properties with (`"parameter-property"`).
In `"parameter-property"` mode, the rule will issue a report when:
diff --git a/packages/eslint-plugin/docs/rules/prefer-destructuring.mdx b/packages/eslint-plugin/docs/rules/prefer-destructuring.mdx
index 411e376b7243..d4aa0980e6b4 100644
--- a/packages/eslint-plugin/docs/rules/prefer-destructuring.mdx
+++ b/packages/eslint-plugin/docs/rules/prefer-destructuring.mdx
@@ -80,7 +80,7 @@ const defaultOptions: Options = [
### `enforceForDeclarationWithTypeAnnotation`
-When set to `true`, type annotated variable declarations are enforced to use destructuring assignment.
+{/* insert option description */}
Examples with `{ enforceForDeclarationWithTypeAnnotation: true }`:
diff --git a/packages/eslint-plugin/docs/rules/prefer-literal-enum-member.mdx b/packages/eslint-plugin/docs/rules/prefer-literal-enum-member.mdx
index 31834a871a2b..9d2e2ffb81a3 100644
--- a/packages/eslint-plugin/docs/rules/prefer-literal-enum-member.mdx
+++ b/packages/eslint-plugin/docs/rules/prefer-literal-enum-member.mdx
@@ -68,7 +68,7 @@ enum Valid {
### `allowBitwiseExpressions`
-Whether to allow using bitwise expressions in enum initializers (default: `false`).
+{/* insert option description */}
Examples of code for the `{ "allowBitwiseExpressions": true }` option:
diff --git a/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.mdx b/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.mdx
index f7fc10e05e14..73822ae7198d 100644
--- a/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.mdx
+++ b/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.mdx
@@ -25,7 +25,7 @@ This rule will not work as expected if [`strictNullChecks`](https://www.typescri
### `ignoreTernaryTests`
-Whether to ignore any ternary expressions that could be simplified by using the nullish coalescing operator. This is set to `false` by default.
+{/* insert option description */}
Incorrect code for `ignoreTernaryTests: false`, and correct code for `ignoreTernaryTests: true`:
@@ -65,7 +65,7 @@ foo ?? 'a string';
### `ignoreConditionalTests`
-Whether to ignore cases that are located within a conditional test. This is set to `true` by default.
+{/* insert option description */}
Generally expressions within conditional tests intentionally use the falsy fallthrough behavior of the logical or operator, meaning that fixing the operator to the nullish coalesce operator could cause bugs.
@@ -107,7 +107,7 @@ a ?? b ? true : false;
### `ignoreMixedLogicalExpressions`
-Whether to ignore any logical or expressions that are part of a mixed logical expression (with `&&`). This is set to `false` by default.
+{/* insert option description */}
Generally expressions within mixed logical expressions intentionally use the falsy fallthrough behavior of the logical or operator, meaning that fixing the operator to the nullish coalesce operator could cause bugs.
@@ -147,7 +147,7 @@ a ?? (b && c && d);
### `ignorePrimitives`
-Whether to ignore all (`true`) or some (an object with properties) primitive types.
+{/* insert option description */}
If you would like to ignore expressions containing operands of certain primitive types that can be falsy then you may pass an object containing a boolean value for each primitive:
@@ -174,6 +174,8 @@ Also, if you would like to ignore all primitives types, you can set `ignorePrimi
### `allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing`
+{/* insert option description */}
+
:::danger Deprecated
> This option will be removed in the next major version of typescript-eslint.
diff --git a/packages/eslint-plugin/docs/rules/prefer-optional-chain.mdx b/packages/eslint-plugin/docs/rules/prefer-optional-chain.mdx
index ee7aa6abf42f..f1627d853cab 100644
--- a/packages/eslint-plugin/docs/rules/prefer-optional-chain.mdx
+++ b/packages/eslint-plugin/docs/rules/prefer-optional-chain.mdx
@@ -68,6 +68,8 @@ Specifically the argument of the not operator (`!loose`) or a bare value in a lo
### `allowPotentiallyUnsafeFixesThatModifyTheReturnTypeIKnowWhatImDoing`
+{/* insert option description */}
+
When this option is `true`, the rule will provide an auto-fixer for cases where the return type of the expression would change. For example for the expression `!foo || foo.bar` the return type of the expression is `true | T`, however for the equivalent optional chain `foo?.bar` the return type of the expression is `undefined | T`. Thus changing the code from a logical expression to an optional chain expression has altered the type of the expression.
In some cases this distinction _may_ matter - which is why these fixers are considered unsafe - they may break the build! For example in the following code:
@@ -89,11 +91,12 @@ When this option is `false` unsafe cases will have suggestion fixers provided in
### `checkAny`
-When this option is `true` the rule will check operands that are typed as `any` when inspecting "loose boolean" operands.
+{/* insert option description */}
-
+Examples of code for this rule with `{ checkAny: false }`:
-
+
+
```ts option='{ "checkAny": true }'
declare const thing: any;
@@ -102,7 +105,7 @@ thing && thing.toString();
```
-
+
```ts option='{ "checkAny": false }'
declare const thing: any;
@@ -115,11 +118,12 @@ thing && thing.toString();
### `checkUnknown`
-When this option is `true` the rule will check operands that are typed as `unknown` when inspecting "loose boolean" operands.
+{/* insert option description */}
-
+Examples of code for this rule with `{ checkUnknown: false }`:
-
+
+
```ts option='{ "checkUnknown": true }'
declare const thing: unknown;
@@ -128,7 +132,7 @@ thing && thing.toString();
```
-
+
```ts option='{ "checkUnknown": false }'
declare const thing: unknown;
@@ -141,11 +145,12 @@ thing && thing.toString();
### `checkString`
-When this option is `true` the rule will check operands that are typed as `string` when inspecting "loose boolean" operands.
+{/* insert option description */}
-
+Examples of code for this rule with `{ checkString: false }`:
-
+
+
```ts option='{ "checkString": true }'
declare const thing: string;
@@ -154,7 +159,7 @@ thing && thing.toString();
```
-
+
```ts option='{ "checkString": false }'
declare const thing: string;
@@ -167,11 +172,12 @@ thing && thing.toString();
### `checkNumber`
-When this option is `true` the rule will check operands that are typed as `number` when inspecting "loose boolean" operands.
+{/* insert option description */}
-
+Examples of code for this rule with `{ checkNumber: false }`:
-
+
+
```ts option='{ "checkNumber": true }'
declare const thing: number;
@@ -180,7 +186,7 @@ thing && thing.toString();
```
-
+
```ts option='{ "checkNumber": false }'
declare const thing: number;
@@ -193,7 +199,7 @@ thing && thing.toString();
### `checkBoolean`
-When this option is `true` the rule will check operands that are typed as `boolean` when inspecting "loose boolean" operands.
+{/* insert option description */}
:::note
@@ -209,9 +215,10 @@ The boolean expression narrows out the non-nullish falsy cases - so converting t
:::
-
+Examples of code for this rule with `{ checkBoolean: false }`:
-
+
+
```ts option='{ "checkBoolean": true }'
declare const thing: true;
@@ -220,7 +227,7 @@ thing && thing.toString();
```
-
+
```ts option='{ "checkBoolean": false }'
declare const thing: true;
@@ -233,11 +240,12 @@ thing && thing.toString();
### `checkBigInt`
-When this option is `true` the rule will check operands that are typed as `bigint` when inspecting "loose boolean" operands.
+{/* insert option description */}
-
+Examples of code for this rule with `{ checkBigInt: false }`:
-
+
+
```ts option='{ "checkBigInt": true }'
declare const thing: bigint;
@@ -246,7 +254,7 @@ thing && thing.toString();
```
-
+
```ts option='{ "checkBigInt": false }'
declare const thing: bigint;
@@ -259,11 +267,12 @@ thing && thing.toString();
### `requireNullish`
-When this option is `true` the rule will skip operands that are not typed with `null` and/or `undefined` when inspecting "loose boolean" operands.
+{/* insert option description */}
-
+Examples of code for this rule with `{ requireNullish: false }`:
-
+
+
```ts option='{ "requireNullish": true }'
declare const thing1: string | null;
@@ -271,7 +280,7 @@ thing1 && thing1.toString();
```
-
+
```ts option='{ "requireNullish": true }'
declare const thing1: string | null;
diff --git a/packages/eslint-plugin/docs/rules/prefer-readonly-parameter-types.mdx b/packages/eslint-plugin/docs/rules/prefer-readonly-parameter-types.mdx
index f89d653bd63e..02b7dc9776b7 100644
--- a/packages/eslint-plugin/docs/rules/prefer-readonly-parameter-types.mdx
+++ b/packages/eslint-plugin/docs/rules/prefer-readonly-parameter-types.mdx
@@ -140,7 +140,8 @@ interface Foo {
### `allow`
-An array of type specifiers to ignore.
+{/* insert option description */}
+
Some complex types cannot easily be made readonly, for example the `HTMLElement` type or the `JQueryStatic` type from `@types/jquery`. This option allows you to globally disable reporting of such types.
This option takes the shared [`TypeOrValueSpecifier` format](/packages/type-utils/type-or-value-specifier).
@@ -251,7 +252,8 @@ function fn(arg: Foo) {}
### `checkParameterProperties`
-Whether to check class parameter properties.
+{/* insert option description */}
+
Because parameter properties create properties on the class, it may be undesirable to force them to be readonly.
Examples of code for this rule with `{checkParameterProperties: true}`:
@@ -290,7 +292,8 @@ class Foo {
### `ignoreInferredTypes`
-Whether to ignore parameters which don't explicitly specify a type.
+{/* insert option description */}
+
This may be desirable in cases where an external dependency specifies a callback with mutable parameters, and manually annotating the callback's parameters is undesirable.
Examples of code for this rule with `{ignoreInferredTypes: true}`:
@@ -348,7 +351,8 @@ export const acceptsCallback: AcceptsCallback;
### `treatMethodsAsReadonly`
-Whether to treat all mutable methods as though they are readonly.
+{/* insert option description */}
+
This may be desirable when you are never reassigning methods.
Examples of code for this rule with `{treatMethodsAsReadonly: false}`:
diff --git a/packages/eslint-plugin/docs/rules/prefer-readonly.mdx b/packages/eslint-plugin/docs/rules/prefer-readonly.mdx
index a3fe49e0336c..c711102038d6 100644
--- a/packages/eslint-plugin/docs/rules/prefer-readonly.mdx
+++ b/packages/eslint-plugin/docs/rules/prefer-readonly.mdx
@@ -70,7 +70,7 @@ class Container {
### `onlyInlineLambdas`
-You may pass `"onlyInlineLambdas": true` as a rule option within an object to restrict checking only to members immediately assigned a lambda value.
+{/* insert option description */}
```jsonc
{
diff --git a/packages/eslint-plugin/docs/rules/prefer-string-starts-ends-with.mdx b/packages/eslint-plugin/docs/rules/prefer-string-starts-ends-with.mdx
index cae79c26679b..cc0860bb7c7b 100644
--- a/packages/eslint-plugin/docs/rules/prefer-string-starts-ends-with.mdx
+++ b/packages/eslint-plugin/docs/rules/prefer-string-starts-ends-with.mdx
@@ -62,6 +62,8 @@ foo.endsWith('bar');
### `allowSingleElementEquality`
+{/* insert option description */}
+
If switched to `'always'`, the rule will allow equality checks against the first or last character in a string.
This can be preferable in projects that don't deal with special character encodings and prefer a more succinct style.
diff --git a/packages/eslint-plugin/docs/rules/promise-function-async.mdx b/packages/eslint-plugin/docs/rules/promise-function-async.mdx
index aabe921925d3..f13da18e82ee 100644
--- a/packages/eslint-plugin/docs/rules/promise-function-async.mdx
+++ b/packages/eslint-plugin/docs/rules/promise-function-async.mdx
@@ -68,7 +68,8 @@ async function functionReturnsUnionWithPromiseImplicitly(p: boolean) {
### `allowAny`
-Whether to ignore functions that return `any` or `unknown`.
+{/* insert option description */}
+
If you want additional safety, consider turning this option off, as it makes the rule less able to catch incorrect Promise behaviors.
Examples of code with `{ "allowAny": false }`:
@@ -92,6 +93,8 @@ const returnsAny = async () => ({}) as any;
### `allowedPromiseNames`
+{/* insert option description */}
+
For projects that use constructs other than the global built-in `Promise` for asynchronous code.
This option allows specifying string names of classes or interfaces that cause a function to be checked as well.
@@ -120,23 +123,19 @@ const returnsBluebird = async () => new Bluebird(() => {});
### `checkArrowFunctions`
-Whether to check arrow functions.
-`true` by default, but can be set to `false` to ignore them.
+{/* insert option description */}
### `checkFunctionDeclarations`
-Whether to check standalone function declarations.
-`true` by default, but can be set to `false` to ignore them.
+{/* insert option description */}
### `checkFunctionExpressions`
-Whether to check inline function expressions.
-`true` by default, but can be set to `false` to ignore them.
+{/* insert option description */}
### `checkMethodDeclarations`
-Whether to check methods on classes and object literals.
-`true` by default, but can be set to `false` to ignore them.
+{/* insert option description */}
## When Not To Use It
diff --git a/packages/eslint-plugin/docs/rules/require-array-sort-compare.mdx b/packages/eslint-plugin/docs/rules/require-array-sort-compare.mdx
index 5c23955cc823..7ca4b942dcf3 100644
--- a/packages/eslint-plugin/docs/rules/require-array-sort-compare.mdx
+++ b/packages/eslint-plugin/docs/rules/require-array-sort-compare.mdx
@@ -57,6 +57,8 @@ userDefinedType.sort();
### `ignoreStringArrays`
+{/* insert option description */}
+
Examples of code for this rule with `{ ignoreStringArrays: true }`:
diff --git a/packages/eslint-plugin/docs/rules/restrict-plus-operands.mdx b/packages/eslint-plugin/docs/rules/restrict-plus-operands.mdx
index c96c8aa12ede..4a7159aaac7a 100644
--- a/packages/eslint-plugin/docs/rules/restrict-plus-operands.mdx
+++ b/packages/eslint-plugin/docs/rules/restrict-plus-operands.mdx
@@ -74,6 +74,8 @@ Safer alternatives to using the `allow*` options include:
### `allowAny`
+{/* insert option description */}
+
Examples of code for this rule with `{ allowAny: true }`:
@@ -97,6 +99,8 @@ let fn = (a: string, b: any) => a + b;
### `allowBoolean`
+{/* insert option description */}
+
Examples of code for this rule with `{ allowBoolean: true }`:
@@ -120,6 +124,8 @@ let fn = (a: string, b: boolean) => a + b;
### `allowNullish`
+{/* insert option description */}
+
Examples of code for this rule with `{ allowNullish: true }`:
@@ -147,6 +153,8 @@ let fn = (a: string, b: null) => a + b;
### `allowNumberAndString`
+{/* insert option description */}
+
Examples of code for this rule with `{ allowNumberAndString: true }`:
@@ -170,6 +178,8 @@ let fn = (a: number, b: number | string) => a + b;
### `allowRegExp`
+{/* insert option description */}
+
Examples of code for this rule with `{ allowRegExp: true }`:
@@ -191,6 +201,8 @@ let fn = (a: string, b: RegExp) => a + b;
### `skipCompoundAssignments`
+{/* insert option description */}
+
Examples of code for this rule with `{ skipCompoundAssignments: false }`:
diff --git a/packages/eslint-plugin/docs/rules/restrict-template-expressions.mdx b/packages/eslint-plugin/docs/rules/restrict-template-expressions.mdx
index 60ea75a7c65e..9ea40aa8c11f 100644
--- a/packages/eslint-plugin/docs/rules/restrict-template-expressions.mdx
+++ b/packages/eslint-plugin/docs/rules/restrict-template-expressions.mdx
@@ -55,7 +55,7 @@ const msg3 = `stringWithKindProp = ${stringWithKindProp}`;
### `allowNumber`
-Whether to allow `number` typed values in template expressions.
+{/* insert option description */}
Examples of additional **correct** code for this rule with `{ allowNumber: true }`:
@@ -73,7 +73,7 @@ Consider using [`.toFixed()`](https://developer.mozilla.org/en-US/docs/Web/JavaS
### `allowBoolean`
-Whether to allow Boolean typed values in template expressions.
+{/* insert option description */}
Examples of additional **correct** code for this rule with `{ allowBoolean: true }`:
@@ -85,7 +85,7 @@ const msg2 = `arg = ${arg || 'not truthy'}`;
### `allowAny`
-Whether to allow `any` typed values in template expressions.
+{/* insert option description */}
Examples of additional **correct** code for this rule with `{ allowAny: true }`:
@@ -97,7 +97,7 @@ const msg2 = `arg = ${user.name || 'the user with no name'}`;
### `allowNullish`
-Whether to allow `null` or `undefined` typed values in template expressions.
+{/* insert option description */}
Examples of additional **correct** code for this rule with `{ allowNullish: true }`:
@@ -108,7 +108,7 @@ const msg1 = `arg = ${arg}`;
### `allowRegExp`
-Whether to allow `RegExp` typed values in template expressions.
+{/* insert option description */}
Examples of additional **correct** code for this rule with `{ allowRegExp: true }`:
@@ -124,7 +124,7 @@ const msg1 = `arg = ${arg}`;
### `allowNever`
-Whether to allow `never` typed values in template expressions.
+{/* insert option description */}
Examples of additional **correct** code for this rule with `{ allowNever: true }`:
@@ -135,7 +135,7 @@ const msg1 = typeof arg === 'string' ? arg : `arg = ${arg}`;
### `allowArray`
-Whether to allow `Array` typed values in template expressions.
+{/* insert option description */}
Examples of additional **correct** code for this rule with `{ allowArray: true }`:
@@ -146,6 +146,8 @@ const msg1 = `arg = ${arg}`;
### `allow`
+{/* insert option description */}
+
Whether to allow additional types in template expressions.
This option takes the shared [`TypeOrValueSpecifier` format](/packages/type-utils/type-or-value-specifier).
diff --git a/packages/eslint-plugin/docs/rules/return-await.mdx b/packages/eslint-plugin/docs/rules/return-await.mdx
index 9be63cc9600c..34173fae9265 100644
--- a/packages/eslint-plugin/docs/rules/return-await.mdx
+++ b/packages/eslint-plugin/docs/rules/return-await.mdx
@@ -189,6 +189,8 @@ async function validInTryCatch7() {
### `always`
+{/* insert option description */}
+
Requires that all returned promises be awaited.
This is a good option if you like the consistency of simply always awaiting promises, or prefer not having to consider the distinction between error-handling contexts and ordinary contexts.
@@ -268,6 +270,8 @@ async function asyncFunction(): Promise {
### `never`
+{/* insert option description */}
+
Disallows awaiting any returned promises.
:::warning
diff --git a/packages/eslint-plugin/docs/rules/sort-type-constituents.mdx b/packages/eslint-plugin/docs/rules/sort-type-constituents.mdx
index 9ce8157deffb..8ed863fb1594 100644
--- a/packages/eslint-plugin/docs/rules/sort-type-constituents.mdx
+++ b/packages/eslint-plugin/docs/rules/sort-type-constituents.mdx
@@ -96,7 +96,7 @@ type T4 =
### `caseSensitive`
-Whether to sort using case sensitive string comparisons.
+{/* insert option description */}
Examples of code with `{ "caseSensitive": true }`:
@@ -119,7 +119,7 @@ type T = 'DeleteForever' | 'DeletedAt';
### `checkIntersections`
-Whether to check intersection types (`&`).
+{/* insert option description */}
Examples of code with `{ "checkIntersections": true }` (the default):
@@ -142,7 +142,7 @@ type ExampleIntersection = A & B;
### `checkUnions`
-Whether to check union types (`|`).
+{/* insert option description */}
Examples of code with `{ "checkUnions": true }` (the default):
@@ -165,6 +165,8 @@ type ExampleUnion = A | B;
### `groupOrder`
+{/* insert option description */}
+
Each constituent of the type is placed into a group, and then the rule sorts alphabetically within each group.
The ordering of groups is determined by this option.
diff --git a/packages/eslint-plugin/docs/rules/strict-boolean-expressions.mdx b/packages/eslint-plugin/docs/rules/strict-boolean-expressions.mdx
index 820d4d188d4e..a48b3a37247d 100644
--- a/packages/eslint-plugin/docs/rules/strict-boolean-expressions.mdx
+++ b/packages/eslint-plugin/docs/rules/strict-boolean-expressions.mdx
@@ -95,55 +95,65 @@ const foo = (arg: any) => (Boolean(arg) ? 1 : 0);
### `allowString`
-Allows `string` in a boolean context.
-This is safe because strings have only one falsy value (`""`).
+{/* insert option description */}
+
+This can be safe because strings have only one falsy value (`""`).
Set this to `false` if you prefer the explicit `str != ""` or `str.length > 0` style.
### `allowNumber`
-Allows `number` in a boolean context.
-This is safe because numbers have only two falsy values (`0` and `NaN`).
+{/* insert option description */}
+
+This can be safe because numbers have only two falsy values (`0` and `NaN`).
Set this to `false` if you prefer the explicit `num != 0` and `!Number.isNaN(num)` style.
### `allowNullableObject`
-Allows `object | function | symbol | null | undefined` in a boolean context.
-This is safe because objects, functions and symbols don't have falsy values.
+{/* insert option description */}
+
+This can be safe because objects, functions, and symbols don't have falsy values.
Set this to `false` if you prefer the explicit `obj != null` style.
### `allowNullableBoolean`
-Allows `boolean | null | undefined` in a boolean context.
+{/* insert option description */}
+
This is unsafe because nullable booleans can be either `false` or nullish.
Set this to `false` if you want to enforce explicit `bool ?? false` or `bool ?? true` style.
Set this to `true` if you don't mind implicitly treating false the same as a nullish value.
### `allowNullableString`
-Allows `string | null | undefined` in a boolean context.
+{/* insert option description */}
+
This is unsafe because nullable strings can be either an empty string or nullish.
Set this to `true` if you don't mind implicitly treating an empty string the same as a nullish value.
### `allowNullableNumber`
-Allows `number | null | undefined` in a boolean context.
+{/* insert option description */}
+
This is unsafe because nullable numbers can be either a falsy number or nullish.
Set this to `true` if you don't mind implicitly treating zero or NaN the same as a nullish value.
### `allowNullableEnum`
-Allows `enum | null | undefined` in a boolean context.
+{/* insert option description */}
+
This is unsafe because nullable enums can be either a falsy number or nullish.
Set this to `true` if you don't mind implicitly treating an enum whose value is zero the same as a nullish value.
### `allowAny`
-Allows `any` in a boolean context.
-This is unsafe for obvious reasons.
+{/* insert option description */}
+
+This is unsafe for because `any` allows any values and disables many type checking checks.
Set this to `true` at your own risk.
### `allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing`
+{/* insert option description */}
+
:::danger Deprecated
This option will be removed in the next major version of typescript-eslint.
diff --git a/packages/eslint-plugin/docs/rules/switch-exhaustiveness-check.mdx b/packages/eslint-plugin/docs/rules/switch-exhaustiveness-check.mdx
index f629d8ee53ac..538b911049c3 100644
--- a/packages/eslint-plugin/docs/rules/switch-exhaustiveness-check.mdx
+++ b/packages/eslint-plugin/docs/rules/switch-exhaustiveness-check.mdx
@@ -18,7 +18,9 @@ This rule reports when a `switch` statement over a value typed as a union of lit
### `allowDefaultCaseForExhaustiveSwitch`
-Defaults to true. If set to false, this rule will also report when a `switch` statement has a case for everything in a union and _also_ contains a `default` case. Thus, by setting this option to false, the rule becomes stricter.
+{/* insert option description */}
+
+If set to false, this rule will also report when a `switch` statement has a case for everything in a union and _also_ contains a `default` case. Thus, by setting this option to false, the rule becomes stricter.
When a `switch` statement over a union type is exhaustive, a final `default` case would be a form of dead code.
Additionally, if a new value is added to the union type, a `default` would prevent the `switch-exhaustiveness-check` rule from reporting on the new case not being handled in the `switch` statement.
@@ -34,7 +36,9 @@ If your project has many intentionally redundant `default` cases, you may want t
### `requireDefaultForNonUnion`
-Defaults to false. If set to true, this rule will also report when a `switch` statement switches over a non-union type (like a `number` or `string`, for example) and that `switch` statement does not have a `default` case. Thus, by setting this option to true, the rule becomes stricter.
+{/* insert option description */}
+
+If set to true, this rule will also report when a `switch` statement switches over a non-union type (like a `number` or `string`, for example) and that `switch` statement does not have a `default` case. Thus, by setting this option to true, the rule becomes stricter.
This is generally desirable so that `number` and `string` switches will be subject to the same exhaustive checks that your other switches are.
diff --git a/packages/eslint-plugin/docs/rules/triple-slash-reference.mdx b/packages/eslint-plugin/docs/rules/triple-slash-reference.mdx
index 43a043671f55..2fe7847f34c3 100644
--- a/packages/eslint-plugin/docs/rules/triple-slash-reference.mdx
+++ b/packages/eslint-plugin/docs/rules/triple-slash-reference.mdx
@@ -20,6 +20,8 @@ Specifying `'always'` disables this lint rule for that kind of reference.
### `lib`
+{/* insert option description */}
+
When set to `'never'`, bans `/// ` and enforces using an `import` instead:
@@ -43,6 +45,8 @@ import { value } from 'code';
### `path`
+{/* insert option description */}
+
When set to `'never'`, bans `/// ` and enforces using an `import` instead:
@@ -66,6 +70,8 @@ import { value } from 'code';
### `types`
+{/* insert option description */}
+
When set to `'never'`, bans `/// ` and enforces using an `import` instead:
diff --git a/packages/eslint-plugin/docs/rules/typedef.mdx b/packages/eslint-plugin/docs/rules/typedef.mdx
index 46fa0134c90f..8af5c045244a 100644
--- a/packages/eslint-plugin/docs/rules/typedef.mdx
+++ b/packages/eslint-plugin/docs/rules/typedef.mdx
@@ -62,7 +62,7 @@ For example, with the following configuration:
### `arrayDestructuring`
-Whether to enforce type annotations on variables declared using array destructuring.
+{/* insert option description */}
Examples of code with `{ "arrayDestructuring": true }`:
@@ -91,7 +91,7 @@ for (const [key, val] of new Map([['key', 1]])) {
### `arrowParameter`
-Whether to enforce type annotations for parameters of arrow functions.
+{/* insert option description */}
Examples of code with `{ "arrowParameter": true }`:
@@ -126,7 +126,7 @@ const mapper = {
### `memberVariableDeclaration`
-Whether to enforce type annotations on member variables of classes.
+{/* insert option description */}
Examples of code with `{ "memberVariableDeclaration": true }`:
@@ -155,7 +155,7 @@ class ContainsText {
### `objectDestructuring`
-Whether to enforce type annotations on variables declared using object destructuring.
+{/* insert option description */}
Examples of code with `{ "objectDestructuring": true }`:
@@ -183,7 +183,7 @@ for (const { key, val } of [{ key: 'key', val: 1 }]) {
### `parameter`
-Whether to enforce type annotations for parameters of functions and methods.
+{/* insert option description */}
Examples of code with `{ "parameter": true }`:
@@ -250,7 +250,7 @@ class Logger {
### `propertyDeclaration`
-Whether to enforce type annotations for properties of interfaces and types.
+{/* insert option description */}
Examples of code with `{ "propertyDeclaration": true }`:
@@ -279,7 +279,7 @@ type Members = {
### `variableDeclaration`
-Whether to enforce type annotations for variable declarations, excluding array and object destructuring.
+{/* insert option description */}
Examples of code with `{ "variableDeclaration": true }`:
@@ -306,7 +306,7 @@ let delayedText: string;
### `variableDeclarationIgnoreFunction`
-Whether to ignore variable declarations for non-arrow and arrow functions.
+{/* insert option description */}
Examples of code with `{ "variableDeclaration": true, "variableDeclarationIgnoreFunction": true }`:
diff --git a/packages/eslint-plugin/docs/rules/unbound-method.mdx b/packages/eslint-plugin/docs/rules/unbound-method.mdx
index 7dd2d5aa7ecd..bf48bea5d65f 100644
--- a/packages/eslint-plugin/docs/rules/unbound-method.mdx
+++ b/packages/eslint-plugin/docs/rules/unbound-method.mdx
@@ -87,6 +87,8 @@ const { double } = arith;
### `ignoreStatic`
+{/* insert option description */}
+
Examples of **correct** code for this rule with `{ ignoreStatic: true }`:
```ts option='{ "ignoreStatic": true }' showPlaygroundButton
diff --git a/packages/eslint-plugin/docs/rules/unified-signatures.mdx b/packages/eslint-plugin/docs/rules/unified-signatures.mdx
index 6e2fd8d5f804..6813957a5e80 100644
--- a/packages/eslint-plugin/docs/rules/unified-signatures.mdx
+++ b/packages/eslint-plugin/docs/rules/unified-signatures.mdx
@@ -55,6 +55,8 @@ function f(...a: string[]): void;
### `ignoreDifferentlyNamedParameters`
+{/* insert option description */}
+
Examples of code for this rule with `ignoreDifferentlyNamedParameters`:
diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json
index 3272ee70e646..00a5f1a2f083 100644
--- a/packages/eslint-plugin/package.json
+++ b/packages/eslint-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/eslint-plugin",
- "version": "8.9.0",
+ "version": "8.10.0",
"description": "TypeScript plugin for ESLint",
"files": [
"dist",
@@ -61,10 +61,10 @@
},
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "8.9.0",
- "@typescript-eslint/type-utils": "8.9.0",
- "@typescript-eslint/utils": "8.9.0",
- "@typescript-eslint/visitor-keys": "8.9.0",
+ "@typescript-eslint/scope-manager": "8.10.0",
+ "@typescript-eslint/type-utils": "8.10.0",
+ "@typescript-eslint/utils": "8.10.0",
+ "@typescript-eslint/visitor-keys": "8.10.0",
"graphemer": "^1.4.0",
"ignore": "^5.3.1",
"natural-compare": "^1.4.0",
@@ -75,8 +75,8 @@
"@types/marked": "^5.0.2",
"@types/mdast": "^4.0.3",
"@types/natural-compare": "*",
- "@typescript-eslint/rule-schema-to-typescript-types": "8.9.0",
- "@typescript-eslint/rule-tester": "8.9.0",
+ "@typescript-eslint/rule-schema-to-typescript-types": "8.10.0",
+ "@typescript-eslint/rule-tester": "8.10.0",
"ajv": "^6.12.6",
"cross-env": "^7.0.3",
"cross-fetch": "*",
diff --git a/packages/eslint-plugin/src/rules/class-literal-property-style.ts b/packages/eslint-plugin/src/rules/class-literal-property-style.ts
index dd1132f3b34d..f59c061f3767 100644
--- a/packages/eslint-plugin/src/rules/class-literal-property-style.ts
+++ b/packages/eslint-plugin/src/rules/class-literal-property-style.ts
@@ -73,6 +73,7 @@ export default createRule({
schema: [
{
type: 'string',
+ description: 'Which literal class member syntax to prefer.',
enum: ['fields', 'getters'],
},
],
diff --git a/packages/eslint-plugin/src/rules/class-methods-use-this.ts b/packages/eslint-plugin/src/rules/class-methods-use-this.ts
index 1d3beff94d25..f049781f7d61 100644
--- a/packages/eslint-plugin/src/rules/class-methods-use-this.ts
+++ b/packages/eslint-plugin/src/rules/class-methods-use-this.ts
@@ -40,19 +40,19 @@ export default createRule({
type: 'boolean',
default: true,
description:
- 'Enforces that functions used as instance field initializers utilize `this`',
+ 'Enforces that functions used as instance field initializers utilize `this`.',
},
exceptMethods: {
type: 'array',
description:
- 'Allows specified method names to be ignored with this rule',
+ 'Allows specified method names to be ignored with this rule.',
items: {
type: 'string',
},
},
ignoreClassesThatImplementAnInterface: {
description:
- 'Ignore classes that specifically implement some interface',
+ 'Makes the rule ignore class members that are defined within a class that `implements` a type',
oneOf: [
{
type: 'boolean',
diff --git a/packages/eslint-plugin/src/rules/consistent-generic-constructors.ts b/packages/eslint-plugin/src/rules/consistent-generic-constructors.ts
index f3033536b653..9c92cd98188c 100644
--- a/packages/eslint-plugin/src/rules/consistent-generic-constructors.ts
+++ b/packages/eslint-plugin/src/rules/consistent-generic-constructors.ts
@@ -26,6 +26,7 @@ export default createRule({
schema: [
{
type: 'string',
+ description: 'Which constructor call syntax to prefer.',
enum: ['type-annotation', 'constructor'],
},
],
diff --git a/packages/eslint-plugin/src/rules/consistent-indexed-object-style.ts b/packages/eslint-plugin/src/rules/consistent-indexed-object-style.ts
index 1908d274f0ff..ad17704bf1fb 100644
--- a/packages/eslint-plugin/src/rules/consistent-indexed-object-style.ts
+++ b/packages/eslint-plugin/src/rules/consistent-indexed-object-style.ts
@@ -23,6 +23,7 @@ export default createRule({
schema: [
{
type: 'string',
+ description: 'Which indexed object syntax to prefer.',
enum: ['record', 'index-signature'],
},
],
diff --git a/packages/eslint-plugin/src/rules/consistent-type-definitions.ts b/packages/eslint-plugin/src/rules/consistent-type-definitions.ts
index 2505b7c54262..9c57c4f40327 100644
--- a/packages/eslint-plugin/src/rules/consistent-type-definitions.ts
+++ b/packages/eslint-plugin/src/rules/consistent-type-definitions.ts
@@ -21,6 +21,7 @@ export default createRule({
schema: [
{
type: 'string',
+ description: 'Which type definition syntax to prefer.',
enum: ['interface', 'type'],
},
],
diff --git a/packages/eslint-plugin/src/rules/consistent-type-exports.ts b/packages/eslint-plugin/src/rules/consistent-type-exports.ts
index 4acd22ecf746..eb610ae84105 100644
--- a/packages/eslint-plugin/src/rules/consistent-type-exports.ts
+++ b/packages/eslint-plugin/src/rules/consistent-type-exports.ts
@@ -277,8 +277,10 @@ export default createRule({
}
// We have both type and value violations.
- const allExportNames = report.typeBasedSpecifiers.map(
- specifier => specifier.local.name,
+ const allExportNames = report.typeBasedSpecifiers.map(specifier =>
+ specifier.local.type === AST_NODE_TYPES.Identifier
+ ? specifier.local.name
+ : specifier.local.value,
);
if (allExportNames.length === 1) {
@@ -446,9 +448,16 @@ function getSourceFromExport(
* the proper formatting.
*/
function getSpecifierText(specifier: TSESTree.ExportSpecifier): string {
- return `${specifier.local.name}${
- specifier.exported.name !== specifier.local.name
- ? ` as ${specifier.exported.name}`
- : ''
+ const exportedName =
+ specifier.exported.type === AST_NODE_TYPES.Literal
+ ? specifier.exported.raw
+ : specifier.exported.name;
+ const localName =
+ specifier.local.type === AST_NODE_TYPES.Literal
+ ? specifier.local.raw
+ : specifier.local.name;
+
+ return `${localName}${
+ exportedName !== localName ? ` as ${exportedName}` : ''
}`;
}
diff --git a/packages/eslint-plugin/src/rules/explicit-member-accessibility.ts b/packages/eslint-plugin/src/rules/explicit-member-accessibility.ts
index b03a75cc210e..7dff44c330f9 100644
--- a/packages/eslint-plugin/src/rules/explicit-member-accessibility.ts
+++ b/packages/eslint-plugin/src/rules/explicit-member-accessibility.ts
@@ -82,7 +82,11 @@ export default createRule({
},
additionalProperties: false,
properties: {
- accessibility: { $ref: '#/items/0/$defs/accessibilityLevel' },
+ accessibility: {
+ $ref: '#/items/0/$defs/accessibilityLevel',
+ description:
+ 'Which accessibility modifier is required to exist or not exist.',
+ },
ignoredMethodNames: {
type: 'array',
description: 'Specific method names that may be ignored.',
@@ -93,6 +97,8 @@ export default createRule({
overrides: {
type: 'object',
additionalProperties: false,
+ description:
+ 'Changes to required accessibility modifiers for specific kinds of class members.',
properties: {
accessors: { $ref: '#/items/0/$defs/accessibilityLevel' },
constructors: { $ref: '#/items/0/$defs/accessibilityLevel' },
diff --git a/packages/eslint-plugin/src/rules/explicit-module-boundary-types.ts b/packages/eslint-plugin/src/rules/explicit-module-boundary-types.ts
index ee8f691b7695..add712099646 100644
--- a/packages/eslint-plugin/src/rules/explicit-module-boundary-types.ts
+++ b/packages/eslint-plugin/src/rules/explicit-module-boundary-types.ts
@@ -148,7 +148,7 @@ export default createRule({
checkNode(node.declaration);
},
'ExportNamedDeclaration:not([source]):exit'(
- node: TSESTree.ExportNamedDeclaration,
+ node: TSESTree.ExportNamedDeclarationWithoutSource,
): void {
if (node.declaration) {
checkNode(node.declaration);
diff --git a/packages/eslint-plugin/src/rules/naming-convention.ts b/packages/eslint-plugin/src/rules/naming-convention.ts
index 6363210b12e5..736bfdadc407 100644
--- a/packages/eslint-plugin/src/rules/naming-convention.ts
+++ b/packages/eslint-plugin/src/rules/naming-convention.ts
@@ -296,7 +296,10 @@ export default createRule({
break;
case AST_NODE_TYPES.ImportSpecifier:
// Handle `import { default as Foo }`
- if (node.imported.name !== 'default') {
+ if (
+ node.imported.type === AST_NODE_TYPES.Identifier &&
+ node.imported.name !== 'default'
+ ) {
return;
}
modifiers.add(Modifiers.default);
diff --git a/packages/eslint-plugin/src/rules/no-invalid-void-type.ts b/packages/eslint-plugin/src/rules/no-invalid-void-type.ts
index 34f3f8cb22a1..af8ef4d79df7 100644
--- a/packages/eslint-plugin/src/rules/no-invalid-void-type.ts
+++ b/packages/eslint-plugin/src/rules/no-invalid-void-type.ts
@@ -52,9 +52,15 @@ export default createRule<[Options], MessageIds>({
description:
'Whether `void` can be used as a valid value for generic type parameters.',
oneOf: [
- { type: 'boolean' },
+ {
+ type: 'boolean',
+ description:
+ 'Whether `void` can be used as a valid value for all generic type parameters.',
+ },
{
type: 'array',
+ description:
+ 'Allowlist of types that may accept `void` as a generic type parameter.',
items: { type: 'string' },
minItems: 1,
},
@@ -89,7 +95,7 @@ export default createRule<[Options], MessageIds>({
/**
* @brief check if the given void keyword is used as a valid generic type
*
- * reports if the type parametrized by void is not in the whitelist, or
+ * reports if the type parametrized by void is not in the allowlist, or
* allowInGenericTypeArguments is false.
* no-op if the given void keyword is not used as generic type
*/
@@ -104,7 +110,7 @@ export default createRule<[Options], MessageIds>({
return;
}
- // check whitelist
+ // check allowlist
if (Array.isArray(allowInGenericTypeArguments)) {
const fullyQualifiedName = context.sourceCode
.getText(node.parent.parent.typeName)
diff --git a/packages/eslint-plugin/src/rules/no-misused-promises.ts b/packages/eslint-plugin/src/rules/no-misused-promises.ts
index ac8c359fc1cc..6498b10d0f52 100644
--- a/packages/eslint-plugin/src/rules/no-misused-promises.ts
+++ b/packages/eslint-plugin/src/rules/no-misused-promises.ts
@@ -105,17 +105,27 @@ export default createRule({
properties: {
checksConditionals: {
type: 'boolean',
+ description:
+ 'Whether to warn when a Promise is provided to conditional statements.',
},
checksSpreads: {
type: 'boolean',
description: 'Whether to warn when `...` spreading a `Promise`.',
},
checksVoidReturn: {
+ description:
+ 'Whether to warn when a Promise is returned from a function typed as returning `void`.',
oneOf: [
- { type: 'boolean' },
+ {
+ type: 'boolean',
+ description:
+ 'Whether to disable checking all asynchronous functions.',
+ },
{
type: 'object',
additionalProperties: false,
+ description:
+ 'Which forms of functions may have checking disabled.',
properties: {
arguments: {
type: 'boolean',
diff --git a/packages/eslint-plugin/src/rules/no-restricted-imports.ts b/packages/eslint-plugin/src/rules/no-restricted-imports.ts
index d407a5f66df5..78ad01f3f864 100644
--- a/packages/eslint-plugin/src/rules/no-restricted-imports.ts
+++ b/packages/eslint-plugin/src/rules/no-restricted-imports.ts
@@ -83,7 +83,7 @@ const baseSchema = baseRule.meta.schema as {
const allowTypeImportsOptionSchema: JSONSchema4ObjectSchema['properties'] = {
allowTypeImports: {
type: 'boolean',
- description: 'Disallow value imports, but allow type-only imports.',
+ description: 'Whether to allow type-only imports for a path.',
},
};
diff --git a/packages/eslint-plugin/src/rules/no-restricted-types.ts b/packages/eslint-plugin/src/rules/no-restricted-types.ts
index 8192b9380c7e..a6f22308919b 100644
--- a/packages/eslint-plugin/src/rules/no-restricted-types.ts
+++ b/packages/eslint-plugin/src/rules/no-restricted-types.ts
@@ -89,17 +89,17 @@ export default createRule({
oneOf: [
{
type: 'boolean',
- description: 'Bans the type with the default message',
+ description: 'Bans the type with the default message.',
enum: [true],
},
{
type: 'string',
- description: 'Bans the type with a custom message',
+ description: 'Bans the type with a custom message.',
},
{
type: 'object',
additionalProperties: false,
- description: 'Bans a type',
+ description: 'Bans a type.',
properties: {
fixWith: {
type: 'string',
@@ -108,7 +108,7 @@ export default createRule({
},
message: {
type: 'string',
- description: 'Custom error message',
+ description: 'Custom error message.',
},
suggest: {
type: 'array',
@@ -127,6 +127,8 @@ export default createRule({
additionalProperties: {
$ref: '#/items/0/$defs/banConfig',
},
+ description:
+ 'An object whose keys are the types you want to ban, and the values are error messages.',
},
},
},
diff --git a/packages/eslint-plugin/src/rules/no-unnecessary-condition.ts b/packages/eslint-plugin/src/rules/no-unnecessary-condition.ts
index f9d959e4950b..ed963aa4703b 100644
--- a/packages/eslint-plugin/src/rules/no-unnecessary-condition.ts
+++ b/packages/eslint-plugin/src/rules/no-unnecessary-condition.ts
@@ -92,7 +92,6 @@ export type MessageId =
| 'neverOptionalChain'
| 'noOverlapBooleanExpression'
| 'noStrictNullCheck'
- | 'replaceWithTrue'
| 'typeGuardAlreadyIsType';
export default createRule({
@@ -125,7 +124,6 @@ export default createRule({
'Unnecessary conditional, the types have no overlap.',
noStrictNullCheck:
'This rule requires the `strictNullChecks` compiler option to be turned on to function correctly.',
- replaceWithTrue: 'Replace always true expression with `true`.',
typeGuardAlreadyIsType:
'Unnecessary conditional, expression already has the type being checked by the {{typeGuardOrAssertionFunction}}.',
},
diff --git a/packages/eslint-plugin/src/rules/no-unsafe-argument.ts b/packages/eslint-plugin/src/rules/no-unsafe-argument.ts
index f89a7ddcec88..60a3e01a9d51 100644
--- a/packages/eslint-plugin/src/rules/no-unsafe-argument.ts
+++ b/packages/eslint-plugin/src/rules/no-unsafe-argument.ts
@@ -1,8 +1,8 @@
import type { TSESTree } from '@typescript-eslint/utils';
-import type * as ts from 'typescript';
import { AST_NODE_TYPES } from '@typescript-eslint/utils';
import * as tsutils from 'ts-api-utils';
+import * as ts from 'typescript';
import {
createRule,
@@ -270,7 +270,9 @@ export default createRule<[], MessageIds>({
});
}
}
- if (spreadArgType.target.hasRestElement) {
+ if (
+ spreadArgType.target.combinedFlags & ts.ElementFlags.Variable
+ ) {
// the last element was a rest - so all remaining defined arguments can be considered "consumed"
// all remaining arguments should be compared against the rest type (if one exists)
signature.consumeRemainingArguments();
diff --git a/packages/eslint-plugin/src/rules/no-use-before-define.ts b/packages/eslint-plugin/src/rules/no-use-before-define.ts
index 8350f6477318..e89868efd695 100644
--- a/packages/eslint-plugin/src/rules/no-use-before-define.ts
+++ b/packages/eslint-plugin/src/rules/no-use-before-define.ts
@@ -237,7 +237,10 @@ export default createRule({
type: 'object',
additionalProperties: false,
properties: {
- allowNamedExports: { type: 'boolean' },
+ allowNamedExports: {
+ type: 'boolean',
+ description: 'Whether to ignore named exports.',
+ },
classes: {
type: 'boolean',
description:
diff --git a/packages/eslint-plugin/src/rules/prefer-destructuring.ts b/packages/eslint-plugin/src/rules/prefer-destructuring.ts
index fdf3bc1deeaf..1ad1a749492a 100644
--- a/packages/eslint-plugin/src/rules/prefer-destructuring.ts
+++ b/packages/eslint-plugin/src/rules/prefer-destructuring.ts
@@ -55,9 +55,13 @@ const schema: readonly JSONSchema4[] = [
properties: {
enforceForDeclarationWithTypeAnnotation: {
type: 'boolean',
+ description:
+ 'Whether to enforce destructuring on variable declarations with type annotations.',
},
enforceForRenamedProperties: {
type: 'boolean',
+ description:
+ 'Whether to enforce destructuring that use a different variable name than the property name.',
},
},
},
diff --git a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts
index 94424989b955..56e77925b489 100644
--- a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts
+++ b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts
@@ -87,15 +87,29 @@ export default createRule({
oneOf: [
{
type: 'object',
+ description: 'Which primitives types may be ignored.',
properties: {
- bigint: { type: 'boolean' },
- boolean: { type: 'boolean' },
- number: { type: 'boolean' },
- string: { type: 'boolean' },
+ bigint: {
+ type: 'boolean',
+ description: 'Ignore bigint primitive types.',
+ },
+ boolean: {
+ type: 'boolean',
+ description: 'Ignore boolean primitive types.',
+ },
+ number: {
+ type: 'boolean',
+ description: 'Ignore number primitive types.',
+ },
+ string: {
+ type: 'boolean',
+ description: 'Ignore string primitive types.',
+ },
},
},
{
type: 'boolean',
+ description: 'Ignore all primitive types.',
enum: [true],
},
],
diff --git a/packages/eslint-plugin/src/rules/sort-type-constituents.ts b/packages/eslint-plugin/src/rules/sort-type-constituents.ts
index d6a2779ba8f4..33b65a12ff7d 100644
--- a/packages/eslint-plugin/src/rules/sort-type-constituents.ts
+++ b/packages/eslint-plugin/src/rules/sort-type-constituents.ts
@@ -142,15 +142,16 @@ export default createRule({
properties: {
caseSensitive: {
type: 'boolean',
- description: 'Whether to sort using case sensitive sorting.',
+ description:
+ 'Whether to sort using case sensitive string comparisons.',
},
checkIntersections: {
type: 'boolean',
- description: 'Whether to check intersection types.',
+ description: 'Whether to check intersection types (`&`).',
},
checkUnions: {
type: 'boolean',
- description: 'Whether to check union types.',
+ description: 'Whether to check union types (`|`).',
},
groupOrder: {
type: 'array',
diff --git a/packages/eslint-plugin/src/rules/strict-boolean-expressions.ts b/packages/eslint-plugin/src/rules/strict-boolean-expressions.ts
index 1933d2899c14..eb127d434d78 100644
--- a/packages/eslint-plugin/src/rules/strict-boolean-expressions.ts
+++ b/packages/eslint-plugin/src/rules/strict-boolean-expressions.ts
@@ -132,7 +132,7 @@ export default createRule({
properties: {
allowAny: {
type: 'boolean',
- description: 'Whether to allow `any` in a boolean context.',
+ description: 'Whether to allow `any`s in a boolean context.',
},
allowNullableBoolean: {
type: 'boolean',
@@ -152,7 +152,7 @@ export default createRule({
allowNullableObject: {
type: 'boolean',
description:
- 'Whether to allow nullable `object`s in a boolean context.',
+ 'Whether to allow nullable `object`s, `symbol`s, and functions in a boolean context.',
},
allowNullableString: {
type: 'boolean',
@@ -161,14 +161,16 @@ export default createRule({
},
allowNumber: {
type: 'boolean',
- description: 'Whether to allow `number` in a boolean context.',
+ description: 'Whether to allow `number`s in a boolean context.',
},
allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing: {
type: 'boolean',
+ description:
+ 'Unless this is set to `true`, the rule will error on every file whose `tsconfig.json` does _not_ have the `strictNullChecks` compiler option (or `strict`) set to `true`.',
},
allowString: {
type: 'boolean',
- description: 'Whether to allow `string` in a boolean context.',
+ description: 'Whether to allow `string`s in a boolean context.',
},
},
},
diff --git a/packages/eslint-plugin/tests/rules/consistent-type-exports.test.ts b/packages/eslint-plugin/tests/rules/consistent-type-exports.test.ts
index 880f4441047a..8508cd75ae77 100644
--- a/packages/eslint-plugin/tests/rules/consistent-type-exports.test.ts
+++ b/packages/eslint-plugin/tests/rules/consistent-type-exports.test.ts
@@ -1,3 +1,4 @@
+/* eslint-disable @typescript-eslint/internal/plugin-test-formatting -- Prettier doesn't yet support TS 5.6 string literal module identifiers */
import { noFormat, RuleTester } from '@typescript-eslint/rule-tester';
import rule from '../../src/rules/consistent-type-exports';
@@ -21,6 +22,7 @@ ruleTester.run('consistent-type-exports', rule, {
"export type { Type1 } from './consistent-type-exports';",
"export { value1 } from './consistent-type-exports';",
+ 'export { value1 as "🍎" } from \'./consistent-type-exports\';',
"export type { value1 } from './consistent-type-exports';",
`
const variable = 1;
@@ -75,6 +77,18 @@ export { NonTypeNS };
],
output: "export type { Type1 } from './consistent-type-exports';",
},
+ {
+ code: 'export { Type1 as "🍎" } from \'./consistent-type-exports\';',
+ errors: [
+ {
+ column: 1,
+ line: 1,
+ messageId: 'typeOverValue',
+ },
+ ],
+ output:
+ 'export type { Type1 as "🍎" } from \'./consistent-type-exports\';',
+ },
{
code: "export { Type1, value1 } from './consistent-type-exports';",
errors: [
diff --git a/packages/eslint-plugin/tests/rules/naming-convention/naming-convention.test.ts b/packages/eslint-plugin/tests/rules/naming-convention/naming-convention.test.ts
index 520e186a97c6..c43b293c686e 100644
--- a/packages/eslint-plugin/tests/rules/naming-convention/naming-convention.test.ts
+++ b/packages/eslint-plugin/tests/rules/naming-convention/naming-convention.test.ts
@@ -1,3 +1,4 @@
+/* eslint-disable @typescript-eslint/internal/plugin-test-formatting -- Prettier doesn't yet support TS 5.6 string literal module identifiers */
/* eslint-disable @typescript-eslint/internal/prefer-ast-types-enum */
import { noFormat, RuleTester } from '@typescript-eslint/rule-tester';
@@ -1280,6 +1281,26 @@ ruleTester.run('naming-convention', rule, {
},
],
},
+ {
+ code: 'import { "🍎" as foo } from \'foo_bar\';',
+ errors: [
+ {
+ data: {
+ formats: 'PascalCase',
+ name: 'foo',
+ type: 'Import',
+ },
+ messageId: 'doesNotMatchFormat',
+ },
+ ],
+ languageOptions: { parserOptions },
+ options: [
+ {
+ format: ['PascalCase'],
+ selector: ['import'],
+ },
+ ],
+ },
],
valid: [
{
@@ -2260,5 +2281,15 @@ ruleTester.run('naming-convention', rule, {
},
],
},
+ {
+ code: 'import { "🍎" as Foo } from \'foo_bar\';',
+ languageOptions: { parserOptions },
+ options: [
+ {
+ format: ['PascalCase'],
+ selector: ['import'],
+ },
+ ],
+ },
],
});
diff --git a/packages/eslint-plugin/tests/schema-snapshots/class-literal-property-style.shot b/packages/eslint-plugin/tests/schema-snapshots/class-literal-property-style.shot
index ab5b34c1d89c..0a601ac8f34d 100644
--- a/packages/eslint-plugin/tests/schema-snapshots/class-literal-property-style.shot
+++ b/packages/eslint-plugin/tests/schema-snapshots/class-literal-property-style.shot
@@ -6,6 +6,7 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
[
{
+ "description": "Which literal class member syntax to prefer.",
"enum": ["fields", "getters"],
"type": "string"
}
@@ -14,6 +15,11 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
# TYPES:
-type Options = ['fields' | 'getters'];
+type Options = [
+ /** Which literal class member syntax to prefer. */
+ | 'getters'
+ /** Which literal class member syntax to prefer. */
+ | 'fields',
+];
"
`;
diff --git a/packages/eslint-plugin/tests/schema-snapshots/class-methods-use-this.shot b/packages/eslint-plugin/tests/schema-snapshots/class-methods-use-this.shot
index ccecd0a0f6a9..fd93a8fc8c4f 100644
--- a/packages/eslint-plugin/tests/schema-snapshots/class-methods-use-this.shot
+++ b/packages/eslint-plugin/tests/schema-snapshots/class-methods-use-this.shot
@@ -10,18 +10,18 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
"properties": {
"enforceForClassFields": {
"default": true,
- "description": "Enforces that functions used as instance field initializers utilize \`this\`",
+ "description": "Enforces that functions used as instance field initializers utilize \`this\`.",
"type": "boolean"
},
"exceptMethods": {
- "description": "Allows specified method names to be ignored with this rule",
+ "description": "Allows specified method names to be ignored with this rule.",
"items": {
"type": "string"
},
"type": "array"
},
"ignoreClassesThatImplementAnInterface": {
- "description": "Ignore classes that specifically implement some interface",
+ "description": "Makes the rule ignore class members that are defined within a class that \`implements\` a type",
"oneOf": [
{
"description": "Ignore all classes that implement an interface",
@@ -48,13 +48,13 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
type Options = [
{
- /** Enforces that functions used as instance field initializers utilize \`this\` */
+ /** Enforces that functions used as instance field initializers utilize \`this\`. */
enforceForClassFields?: boolean;
- /** Allows specified method names to be ignored with this rule */
+ /** Allows specified method names to be ignored with this rule. */
exceptMethods?: string[];
- /** Ignore classes that specifically implement some interface */
+ /** Makes the rule ignore class members that are defined within a class that \`implements\` a type */
ignoreClassesThatImplementAnInterface?: /**
- * Ignore classes that specifically implement some interface
+ * Makes the rule ignore class members that are defined within a class that \`implements\` a type
* Ignore all classes that implement an interface
*/
| boolean
diff --git a/packages/eslint-plugin/tests/schema-snapshots/consistent-generic-constructors.shot b/packages/eslint-plugin/tests/schema-snapshots/consistent-generic-constructors.shot
index 339f564088a9..7f40a340e498 100644
--- a/packages/eslint-plugin/tests/schema-snapshots/consistent-generic-constructors.shot
+++ b/packages/eslint-plugin/tests/schema-snapshots/consistent-generic-constructors.shot
@@ -6,6 +6,7 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
[
{
+ "description": "Which constructor call syntax to prefer.",
"enum": ["constructor", "type-annotation"],
"type": "string"
}
@@ -14,6 +15,11 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
# TYPES:
-type Options = ['constructor' | 'type-annotation'];
+type Options = [
+ /** Which constructor call syntax to prefer. */
+ | 'type-annotation'
+ /** Which constructor call syntax to prefer. */
+ | 'constructor',
+];
"
`;
diff --git a/packages/eslint-plugin/tests/schema-snapshots/consistent-indexed-object-style.shot b/packages/eslint-plugin/tests/schema-snapshots/consistent-indexed-object-style.shot
index d498aa9d3571..e6aac3062fc5 100644
--- a/packages/eslint-plugin/tests/schema-snapshots/consistent-indexed-object-style.shot
+++ b/packages/eslint-plugin/tests/schema-snapshots/consistent-indexed-object-style.shot
@@ -6,6 +6,7 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
[
{
+ "description": "Which indexed object syntax to prefer.",
"enum": ["index-signature", "record"],
"type": "string"
}
@@ -14,6 +15,11 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
# TYPES:
-type Options = ['index-signature' | 'record'];
+type Options = [
+ /** Which indexed object syntax to prefer. */
+ | 'record'
+ /** Which indexed object syntax to prefer. */
+ | 'index-signature',
+];
"
`;
diff --git a/packages/eslint-plugin/tests/schema-snapshots/consistent-type-definitions.shot b/packages/eslint-plugin/tests/schema-snapshots/consistent-type-definitions.shot
index 0a7217423843..a47225168222 100644
--- a/packages/eslint-plugin/tests/schema-snapshots/consistent-type-definitions.shot
+++ b/packages/eslint-plugin/tests/schema-snapshots/consistent-type-definitions.shot
@@ -6,6 +6,7 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
[
{
+ "description": "Which type definition syntax to prefer.",
"enum": ["interface", "type"],
"type": "string"
}
@@ -14,6 +15,11 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
# TYPES:
-type Options = ['interface' | 'type'];
+type Options = [
+ /** Which type definition syntax to prefer. */
+ | 'type'
+ /** Which type definition syntax to prefer. */
+ | 'interface',
+];
"
`;
diff --git a/packages/eslint-plugin/tests/schema-snapshots/explicit-member-accessibility.shot b/packages/eslint-plugin/tests/schema-snapshots/explicit-member-accessibility.shot
index 38813f579a5e..0606e4d377b1 100644
--- a/packages/eslint-plugin/tests/schema-snapshots/explicit-member-accessibility.shot
+++ b/packages/eslint-plugin/tests/schema-snapshots/explicit-member-accessibility.shot
@@ -30,7 +30,8 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
"additionalProperties": false,
"properties": {
"accessibility": {
- "$ref": "#/items/0/$defs/accessibilityLevel"
+ "$ref": "#/items/0/$defs/accessibilityLevel",
+ "description": "Which accessibility modifier is required to exist or not exist."
},
"ignoredMethodNames": {
"description": "Specific method names that may be ignored.",
@@ -41,6 +42,7 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
},
"overrides": {
"additionalProperties": false,
+ "description": "Changes to required accessibility modifiers for specific kinds of class members.",
"properties": {
"accessors": {
"$ref": "#/items/0/$defs/accessibilityLevel"
@@ -78,9 +80,11 @@ type AccessibilityLevel =
type Options = [
{
+ /** Which accessibility modifier is required to exist or not exist. */
accessibility?: AccessibilityLevel;
/** Specific method names that may be ignored. */
ignoredMethodNames?: string[];
+ /** Changes to required accessibility modifiers for specific kinds of class members. */
overrides?: {
accessors?: AccessibilityLevel;
constructors?: AccessibilityLevel;
diff --git a/packages/eslint-plugin/tests/schema-snapshots/no-invalid-void-type.shot b/packages/eslint-plugin/tests/schema-snapshots/no-invalid-void-type.shot
index a02fca83275d..c6610bd2980c 100644
--- a/packages/eslint-plugin/tests/schema-snapshots/no-invalid-void-type.shot
+++ b/packages/eslint-plugin/tests/schema-snapshots/no-invalid-void-type.shot
@@ -16,9 +16,11 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
"description": "Whether \`void\` can be used as a valid value for generic type parameters.",
"oneOf": [
{
+ "description": "Whether \`void\` can be used as a valid value for all generic type parameters.",
"type": "boolean"
},
{
+ "description": "Allowlist of types that may accept \`void\` as a generic type parameter.",
"items": {
"type": "string"
},
@@ -40,10 +42,13 @@ type Options = [
/** Whether a \`this\` parameter of a function may be \`void\`. */
allowAsThisParameter?: boolean;
/** Whether \`void\` can be used as a valid value for generic type parameters. */
- allowInGenericTypeArguments?:
- | [string, ...string[]]
- /** Whether \`void\` can be used as a valid value for generic type parameters. */
- | boolean;
+ allowInGenericTypeArguments?: /**
+ * Whether \`void\` can be used as a valid value for generic type parameters.
+ * Whether \`void\` can be used as a valid value for all generic type parameters.
+ */
+ | boolean
+ /** Allowlist of types that may accept \`void\` as a generic type parameter. */
+ | [string, ...string[]];
},
];
"
diff --git a/packages/eslint-plugin/tests/schema-snapshots/no-misused-promises.shot b/packages/eslint-plugin/tests/schema-snapshots/no-misused-promises.shot
index e0d897012c0a..4ce87848cced 100644
--- a/packages/eslint-plugin/tests/schema-snapshots/no-misused-promises.shot
+++ b/packages/eslint-plugin/tests/schema-snapshots/no-misused-promises.shot
@@ -9,6 +9,7 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
"additionalProperties": false,
"properties": {
"checksConditionals": {
+ "description": "Whether to warn when a Promise is provided to conditional statements.",
"type": "boolean"
},
"checksSpreads": {
@@ -16,12 +17,15 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
"type": "boolean"
},
"checksVoidReturn": {
+ "description": "Whether to warn when a Promise is returned from a function typed as returning \`void\`.",
"oneOf": [
{
+ "description": "Whether to disable checking all asynchronous functions.",
"type": "boolean"
},
{
"additionalProperties": false,
+ "description": "Which forms of functions may have checking disabled.",
"properties": {
"arguments": {
"description": "Disables checking an asynchronous function passed as argument where the parameter type expects a function that returns \`void\`.",
@@ -62,10 +66,17 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
type Options = [
{
+ /** Whether to warn when a Promise is provided to conditional statements. */
checksConditionals?: boolean;
/** Whether to warn when \`...\` spreading a \`Promise\`. */
checksSpreads?: boolean;
- checksVoidReturn?:
+ /** Whether to warn when a Promise is returned from a function typed as returning \`void\`. */
+ checksVoidReturn?: /**
+ * Whether to warn when a Promise is returned from a function typed as returning \`void\`.
+ * Whether to disable checking all asynchronous functions.
+ */
+ | boolean
+ /** Which forms of functions may have checking disabled. */
| {
/** Disables checking an asynchronous function passed as argument where the parameter type expects a function that returns \`void\`. */
arguments?: boolean;
@@ -79,8 +90,7 @@ type Options = [
returns?: boolean;
/** Disables checking an asynchronous function used as a variable whose return type is a function that returns \`void\`. */
variables?: boolean;
- }
- | boolean;
+ };
},
];
"
diff --git a/packages/eslint-plugin/tests/schema-snapshots/no-restricted-imports.shot b/packages/eslint-plugin/tests/schema-snapshots/no-restricted-imports.shot
index 55bec533996f..7c4fb5932293 100644
--- a/packages/eslint-plugin/tests/schema-snapshots/no-restricted-imports.shot
+++ b/packages/eslint-plugin/tests/schema-snapshots/no-restricted-imports.shot
@@ -22,7 +22,7 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
"type": "array"
},
"allowTypeImports": {
- "description": "Disallow value imports, but allow type-only imports.",
+ "description": "Whether to allow type-only imports for a path.",
"type": "boolean"
},
"importNames": {
@@ -69,7 +69,7 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
"type": "array"
},
"allowTypeImports": {
- "description": "Disallow value imports, but allow type-only imports.",
+ "description": "Whether to allow type-only imports for a path.",
"type": "boolean"
},
"importNames": {
@@ -119,7 +119,7 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
"uniqueItems": true
},
"allowTypeImports": {
- "description": "Disallow value imports, but allow type-only imports.",
+ "description": "Whether to allow type-only imports for a path.",
"type": "boolean"
},
"caseSensitive": {
@@ -173,7 +173,7 @@ type Options =
| (
| {
allowImportNames?: string[];
- /** Disallow value imports, but allow type-only imports. */
+ /** Whether to allow type-only imports for a path. */
allowTypeImports?: boolean;
importNames?: string[];
message?: string;
@@ -187,7 +187,7 @@ type Options =
paths?: (
| {
allowImportNames?: string[];
- /** Disallow value imports, but allow type-only imports. */
+ /** Whether to allow type-only imports for a path. */
allowTypeImports?: boolean;
importNames?: string[];
message?: string;
@@ -199,7 +199,7 @@ type Options =
| {
allowImportNamePattern?: string;
allowImportNames?: [string, ...string[]];
- /** Disallow value imports, but allow type-only imports. */
+ /** Whether to allow type-only imports for a path. */
allowTypeImports?: boolean;
caseSensitive?: boolean;
group: [string, ...string[]];
diff --git a/packages/eslint-plugin/tests/schema-snapshots/no-restricted-types.shot b/packages/eslint-plugin/tests/schema-snapshots/no-restricted-types.shot
index 845262dabe82..bd7867ed79e8 100644
--- a/packages/eslint-plugin/tests/schema-snapshots/no-restricted-types.shot
+++ b/packages/eslint-plugin/tests/schema-snapshots/no-restricted-types.shot
@@ -10,24 +10,24 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
"banConfig": {
"oneOf": [
{
- "description": "Bans the type with the default message",
+ "description": "Bans the type with the default message.",
"enum": [true],
"type": "boolean"
},
{
- "description": "Bans the type with a custom message",
+ "description": "Bans the type with a custom message.",
"type": "string"
},
{
"additionalProperties": false,
- "description": "Bans a type",
+ "description": "Bans a type.",
"properties": {
"fixWith": {
"description": "Type to autofix replace with. Note that autofixers can be applied automatically - so you need to be careful with this option.",
"type": "string"
},
"message": {
- "description": "Custom error message",
+ "description": "Custom error message.",
"type": "string"
},
"suggest": {
@@ -49,6 +49,7 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
"additionalProperties": {
"$ref": "#/items/0/$defs/banConfig"
},
+ "description": "An object whose keys are the types you want to ban, and the values are error messages.",
"type": "object"
}
},
@@ -60,22 +61,23 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
# TYPES:
type BanConfig =
- /** Bans a type */
+ /** Bans a type. */
| {
/** Type to autofix replace with. Note that autofixers can be applied automatically - so you need to be careful with this option. */
fixWith?: string;
- /** Custom error message */
+ /** Custom error message. */
message?: string;
/** Types to suggest replacing with. */
suggest?: string[];
}
- /** Bans the type with a custom message */
+ /** Bans the type with a custom message. */
| string
- /** Bans the type with the default message */
+ /** Bans the type with the default message. */
| true;
type Options = [
{
+ /** An object whose keys are the types you want to ban, and the values are error messages. */
types?: {
[k: string]: BanConfig;
};
diff --git a/packages/eslint-plugin/tests/schema-snapshots/no-use-before-define.shot b/packages/eslint-plugin/tests/schema-snapshots/no-use-before-define.shot
index a094b1776731..192552d4fd41 100644
--- a/packages/eslint-plugin/tests/schema-snapshots/no-use-before-define.shot
+++ b/packages/eslint-plugin/tests/schema-snapshots/no-use-before-define.shot
@@ -15,6 +15,7 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
"additionalProperties": false,
"properties": {
"allowNamedExports": {
+ "description": "Whether to ignore named exports.",
"type": "boolean"
},
"classes": {
@@ -54,6 +55,7 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
type Options = [
| 'nofunc'
| {
+ /** Whether to ignore named exports. */
allowNamedExports?: boolean;
/** Whether to ignore references to class declarations. */
classes?: boolean;
diff --git a/packages/eslint-plugin/tests/schema-snapshots/prefer-destructuring.shot b/packages/eslint-plugin/tests/schema-snapshots/prefer-destructuring.shot
index ca0e2597bf59..1769b32c5ce9 100644
--- a/packages/eslint-plugin/tests/schema-snapshots/prefer-destructuring.shot
+++ b/packages/eslint-plugin/tests/schema-snapshots/prefer-destructuring.shot
@@ -54,9 +54,11 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
{
"properties": {
"enforceForDeclarationWithTypeAnnotation": {
+ "description": "Whether to enforce destructuring on variable declarations with type annotations.",
"type": "boolean"
},
"enforceForRenamedProperties": {
+ "description": "Whether to enforce destructuring that use a different variable name than the property name.",
"type": "boolean"
}
},
@@ -85,7 +87,9 @@ type Options = [
}
),
{
+ /** Whether to enforce destructuring on variable declarations with type annotations. */
enforceForDeclarationWithTypeAnnotation?: boolean;
+ /** Whether to enforce destructuring that use a different variable name than the property name. */
enforceForRenamedProperties?: boolean;
[k: string]: unknown;
},
diff --git a/packages/eslint-plugin/tests/schema-snapshots/prefer-nullish-coalescing.shot b/packages/eslint-plugin/tests/schema-snapshots/prefer-nullish-coalescing.shot
index 7afce381e977..58a4820086c3 100644
--- a/packages/eslint-plugin/tests/schema-snapshots/prefer-nullish-coalescing.shot
+++ b/packages/eslint-plugin/tests/schema-snapshots/prefer-nullish-coalescing.shot
@@ -24,23 +24,29 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
"description": "Whether to ignore all (\`true\`) or some (an object with properties) primitive types.",
"oneOf": [
{
+ "description": "Which primitives types may be ignored.",
"properties": {
"bigint": {
+ "description": "Ignore bigint primitive types.",
"type": "boolean"
},
"boolean": {
+ "description": "Ignore boolean primitive types.",
"type": "boolean"
},
"number": {
+ "description": "Ignore number primitive types.",
"type": "boolean"
},
"string": {
+ "description": "Ignore string primitive types.",
"type": "boolean"
}
},
"type": "object"
},
{
+ "description": "Ignore all primitive types.",
"enum": [true],
"type": "boolean"
}
@@ -67,16 +73,23 @@ type Options = [
/** Whether to ignore any logical or expressions that are part of a mixed logical expression (with \`&&\`). */
ignoreMixedLogicalExpressions?: boolean;
/** Whether to ignore all (\`true\`) or some (an object with properties) primitive types. */
- ignorePrimitives?:
- | true
- /** Whether to ignore all (\`true\`) or some (an object with properties) primitive types. */
- | {
+ ignorePrimitives?: /**
+ * Whether to ignore all (\`true\`) or some (an object with properties) primitive types.
+ * Which primitives types may be ignored.
+ */
+ | {
+ /** Ignore bigint primitive types. */
bigint?: boolean;
+ /** Ignore boolean primitive types. */
boolean?: boolean;
+ /** Ignore number primitive types. */
number?: boolean;
+ /** Ignore string primitive types. */
string?: boolean;
[k: string]: unknown;
- };
+ }
+ /** Ignore all primitive types. */
+ | true;
/** Whether to ignore any ternary expressions that could be simplified by using the nullish coalescing operator. */
ignoreTernaryTests?: boolean;
},
diff --git a/packages/eslint-plugin/tests/schema-snapshots/sort-type-constituents.shot b/packages/eslint-plugin/tests/schema-snapshots/sort-type-constituents.shot
index 2b5fe0203a1a..32232ad1ab67 100644
--- a/packages/eslint-plugin/tests/schema-snapshots/sort-type-constituents.shot
+++ b/packages/eslint-plugin/tests/schema-snapshots/sort-type-constituents.shot
@@ -9,15 +9,15 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
"additionalProperties": false,
"properties": {
"caseSensitive": {
- "description": "Whether to sort using case sensitive sorting.",
+ "description": "Whether to sort using case sensitive string comparisons.",
"type": "boolean"
},
"checkIntersections": {
- "description": "Whether to check intersection types.",
+ "description": "Whether to check intersection types (\`&\`).",
"type": "boolean"
},
"checkUnions": {
- "description": "Whether to check union types.",
+ "description": "Whether to check union types (\`|\`).",
"type": "boolean"
},
"groupOrder": {
@@ -51,11 +51,11 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
type Options = [
{
- /** Whether to sort using case sensitive sorting. */
+ /** Whether to sort using case sensitive string comparisons. */
caseSensitive?: boolean;
- /** Whether to check intersection types. */
+ /** Whether to check intersection types (\`&\`). */
checkIntersections?: boolean;
- /** Whether to check union types. */
+ /** Whether to check union types (\`|\`). */
checkUnions?: boolean;
/** Ordering of the groups. */
groupOrder?: (
diff --git a/packages/eslint-plugin/tests/schema-snapshots/strict-boolean-expressions.shot b/packages/eslint-plugin/tests/schema-snapshots/strict-boolean-expressions.shot
index 5c52af177f3d..77591c6228fc 100644
--- a/packages/eslint-plugin/tests/schema-snapshots/strict-boolean-expressions.shot
+++ b/packages/eslint-plugin/tests/schema-snapshots/strict-boolean-expressions.shot
@@ -9,7 +9,7 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
"additionalProperties": false,
"properties": {
"allowAny": {
- "description": "Whether to allow \`any\` in a boolean context.",
+ "description": "Whether to allow \`any\`s in a boolean context.",
"type": "boolean"
},
"allowNullableBoolean": {
@@ -25,7 +25,7 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
"type": "boolean"
},
"allowNullableObject": {
- "description": "Whether to allow nullable \`object\`s in a boolean context.",
+ "description": "Whether to allow nullable \`object\`s, \`symbol\`s, and functions in a boolean context.",
"type": "boolean"
},
"allowNullableString": {
@@ -33,14 +33,15 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
"type": "boolean"
},
"allowNumber": {
- "description": "Whether to allow \`number\` in a boolean context.",
+ "description": "Whether to allow \`number\`s in a boolean context.",
"type": "boolean"
},
"allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing": {
+ "description": "Unless this is set to \`true\`, the rule will error on every file whose \`tsconfig.json\` does _not_ have the \`strictNullChecks\` compiler option (or \`strict\`) set to \`true\`.",
"type": "boolean"
},
"allowString": {
- "description": "Whether to allow \`string\` in a boolean context.",
+ "description": "Whether to allow \`string\`s in a boolean context.",
"type": "boolean"
}
},
@@ -53,7 +54,7 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos
type Options = [
{
- /** Whether to allow \`any\` in a boolean context. */
+ /** Whether to allow \`any\`s in a boolean context. */
allowAny?: boolean;
/** Whether to allow nullable \`boolean\`s in a boolean context. */
allowNullableBoolean?: boolean;
@@ -61,14 +62,15 @@ type Options = [
allowNullableEnum?: boolean;
/** Whether to allow nullable \`number\`s in a boolean context. */
allowNullableNumber?: boolean;
- /** Whether to allow nullable \`object\`s in a boolean context. */
+ /** Whether to allow nullable \`object\`s, \`symbol\`s, and functions in a boolean context. */
allowNullableObject?: boolean;
/** Whether to allow nullable \`string\`s in a boolean context. */
allowNullableString?: boolean;
- /** Whether to allow \`number\` in a boolean context. */
+ /** Whether to allow \`number\`s in a boolean context. */
allowNumber?: boolean;
+ /** Unless this is set to \`true\`, the rule will error on every file whose \`tsconfig.json\` does _not_ have the \`strictNullChecks\` compiler option (or \`strict\`) set to \`true\`. */
allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean;
- /** Whether to allow \`string\` in a boolean context. */
+ /** Whether to allow \`string\`s in a boolean context. */
allowString?: boolean;
},
];
diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md
index 6375dde0c45c..4a6e9eb3b13d 100644
--- a/packages/parser/CHANGELOG.md
+++ b/packages/parser/CHANGELOG.md
@@ -1,3 +1,15 @@
+## 8.10.0 (2024-10-17)
+
+### 🚀 Features
+
+- support TypeScript 5.6 ([#9972](https://github.com/typescript-eslint/typescript-eslint/pull/9972))
+
+### ❤️ Thank You
+
+- Josh Goldberg ✨
+
+You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
+
## 8.9.0 (2024-10-14)
This was a version bump only for parser to align it with other projects, there were no code changes.
diff --git a/packages/parser/package.json b/packages/parser/package.json
index e71877d8ae85..5984b3f4f161 100644
--- a/packages/parser/package.json
+++ b/packages/parser/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/parser",
- "version": "8.9.0",
+ "version": "8.10.0",
"description": "An ESLint custom parser which leverages TypeScript ESTree",
"files": [
"dist",
@@ -52,10 +52,10 @@
"eslint": "^8.57.0 || ^9.0.0"
},
"dependencies": {
- "@typescript-eslint/scope-manager": "8.9.0",
- "@typescript-eslint/types": "8.9.0",
- "@typescript-eslint/typescript-estree": "8.9.0",
- "@typescript-eslint/visitor-keys": "8.9.0",
+ "@typescript-eslint/scope-manager": "8.10.0",
+ "@typescript-eslint/types": "8.10.0",
+ "@typescript-eslint/typescript-estree": "8.10.0",
+ "@typescript-eslint/visitor-keys": "8.10.0",
"debug": "^4.3.4"
},
"devDependencies": {
diff --git a/packages/parser/src/parser.ts b/packages/parser/src/parser.ts
index 6651a09183ae..42f938e980a2 100644
--- a/packages/parser/src/parser.ts
+++ b/packages/parser/src/parser.ts
@@ -69,6 +69,8 @@ function getLib(compilerOptions: ts.CompilerOptions): Lib[] {
return ['es2021.full'];
case ScriptTarget.ES2022:
return ['es2022.full'];
+ case ScriptTarget.ES2023:
+ return ['es2023.full'];
case ScriptTarget.ESNext:
return ['esnext.full'];
default:
diff --git a/packages/rule-schema-to-typescript-types/CHANGELOG.md b/packages/rule-schema-to-typescript-types/CHANGELOG.md
index 583ffb1a7360..229a1147743a 100644
--- a/packages/rule-schema-to-typescript-types/CHANGELOG.md
+++ b/packages/rule-schema-to-typescript-types/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 8.10.0 (2024-10-17)
+
+This was a version bump only for rule-schema-to-typescript-types to align it with other projects, there were no code changes.
+
+You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
+
## 8.9.0 (2024-10-14)
This was a version bump only for rule-schema-to-typescript-types to align it with other projects, there were no code changes.
diff --git a/packages/rule-schema-to-typescript-types/package.json b/packages/rule-schema-to-typescript-types/package.json
index 91ad37ecb761..c756177ee266 100644
--- a/packages/rule-schema-to-typescript-types/package.json
+++ b/packages/rule-schema-to-typescript-types/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/rule-schema-to-typescript-types",
- "version": "8.9.0",
+ "version": "8.10.0",
"private": true,
"type": "commonjs",
"exports": {
@@ -34,8 +34,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
- "@typescript-eslint/type-utils": "8.9.0",
- "@typescript-eslint/utils": "8.9.0",
+ "@typescript-eslint/type-utils": "8.10.0",
+ "@typescript-eslint/utils": "8.10.0",
"natural-compare": "^1.4.0",
"prettier": "^3.2.5"
},
diff --git a/packages/rule-tester/CHANGELOG.md b/packages/rule-tester/CHANGELOG.md
index e9543b26393a..75be0fc12f38 100644
--- a/packages/rule-tester/CHANGELOG.md
+++ b/packages/rule-tester/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 8.10.0 (2024-10-17)
+
+This was a version bump only for rule-tester to align it with other projects, there were no code changes.
+
+You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
+
## 8.9.0 (2024-10-14)
diff --git a/packages/rule-tester/package.json b/packages/rule-tester/package.json
index 67c77df0be09..490ed12a72d6 100644
--- a/packages/rule-tester/package.json
+++ b/packages/rule-tester/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/rule-tester",
- "version": "8.9.0",
+ "version": "8.10.0",
"description": "Tooling to test ESLint rules",
"files": [
"dist",
@@ -48,8 +48,8 @@
},
"//": "NOTE - AJV is out-of-date, but it's intentionally synced with ESLint - https://github.com/eslint/eslint/blob/ad9dd6a933fd098a0d99c6a9aa059850535c23ee/package.json#L70",
"dependencies": {
- "@typescript-eslint/typescript-estree": "8.9.0",
- "@typescript-eslint/utils": "8.9.0",
+ "@typescript-eslint/typescript-estree": "8.10.0",
+ "@typescript-eslint/utils": "8.10.0",
"ajv": "^6.12.6",
"json-stable-stringify-without-jsonify": "^1.0.1",
"lodash.merge": "4.6.2",
@@ -62,7 +62,7 @@
"@jest/types": "29.6.3",
"@types/json-stable-stringify-without-jsonify": "^1.0.2",
"@types/lodash.merge": "4.6.9",
- "@typescript-eslint/parser": "8.9.0",
+ "@typescript-eslint/parser": "8.10.0",
"chai": "^4.4.1",
"eslint-visitor-keys": "^4.0.0",
"espree": "^10.0.1",
diff --git a/packages/rule-tester/src/RuleTester.ts b/packages/rule-tester/src/RuleTester.ts
index 9c04e0363c48..0312abe18acf 100644
--- a/packages/rule-tester/src/RuleTester.ts
+++ b/packages/rule-tester/src/RuleTester.ts
@@ -184,10 +184,31 @@ export class RuleTester extends TestFramework {
rules: { [`${RULE_TESTER_PLUGIN_PREFIX}validate-ast`]: 'error' },
});
- this.#linter = new Linter({
- configType: 'flat',
- cwd: this.#testerConfig.languageOptions.parserOptions?.tsconfigRootDir,
- });
+ this.#linter = (() => {
+ const linter = new Linter({
+ configType: 'flat',
+ cwd: this.#testerConfig.languageOptions.parserOptions?.tsconfigRootDir,
+ });
+
+ // This nonsense is a workaround for https://github.com/jestjs/jest/issues/14840
+ // see also https://github.com/typescript-eslint/typescript-eslint/issues/8942
+ //
+ // For some reason rethrowing exceptions skirts around the circular JSON error.
+ const oldVerify = linter.verify.bind(linter);
+ linter.verify = (
+ ...args: Parameters
+ ): ReturnType => {
+ try {
+ return oldVerify(...args);
+ } catch (error) {
+ throw new Error('Caught an error while linting', {
+ cause: error,
+ });
+ }
+ };
+
+ return linter;
+ })();
// make sure that the parser doesn't hold onto file handles between tests
// on linux (i.e. our CI env), there can be very a limited number of watch handles available
diff --git a/packages/scope-manager/CHANGELOG.md b/packages/scope-manager/CHANGELOG.md
index cbc5d1d6f94b..3441e0ee6536 100644
--- a/packages/scope-manager/CHANGELOG.md
+++ b/packages/scope-manager/CHANGELOG.md
@@ -1,3 +1,15 @@
+## 8.10.0 (2024-10-17)
+
+### 🚀 Features
+
+- support TypeScript 5.6 ([#9972](https://github.com/typescript-eslint/typescript-eslint/pull/9972))
+
+### ❤️ Thank You
+
+- Josh Goldberg ✨
+
+You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
+
## 8.9.0 (2024-10-14)
diff --git a/packages/scope-manager/package.json b/packages/scope-manager/package.json
index 50ca23a7b64c..5041b6fc8a39 100644
--- a/packages/scope-manager/package.json
+++ b/packages/scope-manager/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/scope-manager",
- "version": "8.9.0",
+ "version": "8.10.0",
"description": "TypeScript scope analyser for ESLint",
"files": [
"dist",
@@ -46,16 +46,17 @@
"typecheck": "npx nx typecheck"
},
"dependencies": {
- "@typescript-eslint/types": "8.9.0",
- "@typescript-eslint/visitor-keys": "8.9.0"
+ "@typescript-eslint/types": "8.10.0",
+ "@typescript-eslint/visitor-keys": "8.10.0"
},
"devDependencies": {
"@jest/types": "29.6.3",
"@types/glob": "*",
- "@typescript-eslint/typescript-estree": "8.9.0",
+ "@typescript-eslint/typescript-estree": "8.10.0",
"glob": "*",
"jest-specific-snapshot": "*",
"make-dir": "*",
+ "prettier": "^3.2.5",
"pretty-format": "*",
"typescript": "*"
},
diff --git a/packages/scope-manager/src/lib/dom.asynciterable.ts b/packages/scope-manager/src/lib/dom.asynciterable.ts
index f552b6216662..761d03534d1f 100644
--- a/packages/scope-manager/src/lib/dom.asynciterable.ts
+++ b/packages/scope-manager/src/lib/dom.asynciterable.ts
@@ -9,5 +9,7 @@ import { TYPE } from './base-config';
export const dom_asynciterable = {
FileSystemDirectoryHandle: TYPE,
+ FileSystemDirectoryHandleAsyncIterator: TYPE,
ReadableStream: TYPE,
+ ReadableStreamAsyncIterator: TYPE,
} as Record;
diff --git a/packages/scope-manager/src/lib/dom.iterable.ts b/packages/scope-manager/src/lib/dom.iterable.ts
index c8c7d40d7b71..74b45f7e08c8 100644
--- a/packages/scope-manager/src/lib/dom.iterable.ts
+++ b/packages/scope-manager/src/lib/dom.iterable.ts
@@ -30,7 +30,9 @@ export const dom_iterable = {
FileList: TYPE,
FontFaceSet: TYPE,
FormData: TYPE,
+ FormDataIterator: TYPE,
Headers: TYPE,
+ HeadersIterator: TYPE,
Highlight: TYPE,
HighlightRegistry: TYPE,
HTMLAllCollection: TYPE,
@@ -41,6 +43,7 @@ export const dom_iterable = {
IDBDatabase: TYPE,
IDBObjectStore: TYPE,
MediaKeyStatusMap: TYPE,
+ MediaKeyStatusMapIterator: TYPE,
MediaList: TYPE,
MessageEvent: TYPE,
MIDIInputMap: TYPE,
@@ -59,6 +62,7 @@ export const dom_iterable = {
SpeechRecognitionResult: TYPE,
SpeechRecognitionResultList: TYPE,
StylePropertyMapReadOnly: TYPE,
+ StylePropertyMapReadOnlyIterator: TYPE,
StyleSheetList: TYPE,
SubtleCrypto: TYPE,
SVGLengthList: TYPE,
@@ -70,6 +74,7 @@ export const dom_iterable = {
TextTrackList: TYPE,
TouchList: TYPE,
URLSearchParams: TYPE,
+ URLSearchParamsIterator: TYPE,
WEBGL_draw_buffers: TYPE,
WEBGL_multi_draw: TYPE,
WebGL2RenderingContextBase: TYPE,
diff --git a/packages/scope-manager/src/lib/dom.ts b/packages/scope-manager/src/lib/dom.ts
index d74830343eaf..c4bad4cc89aa 100644
--- a/packages/scope-manager/src/lib/dom.ts
+++ b/packages/scope-manager/src/lib/dom.ts
@@ -444,6 +444,7 @@ export const dom = {
GeolocationPosition: TYPE_VALUE,
GeolocationPositionError: TYPE_VALUE,
GetAnimationsOptions: TYPE,
+ GetHTMLOptions: TYPE,
GetNotificationOptions: TYPE,
GetRootNodeOptions: TYPE,
GLbitfield: TYPE,
@@ -608,7 +609,6 @@ export const dom = {
ImageOrientation: TYPE,
ImageSmoothingQuality: TYPE,
ImportMeta: TYPE,
- InnerHTML: TYPE,
InputDeviceInfo: TYPE_VALUE,
InputEvent: TYPE_VALUE,
InputEventInit: TYPE,
@@ -675,6 +675,7 @@ export const dom = {
MediaKeySessionClosedReason: TYPE,
MediaKeySessionEventMap: TYPE,
MediaKeySessionType: TYPE,
+ MediaKeysPolicy: TYPE,
MediaKeysRequirement: TYPE,
MediaKeyStatus: TYPE,
MediaKeyStatusMap: TYPE_VALUE,
@@ -700,6 +701,7 @@ export const dom = {
MediaSessionPlaybackState: TYPE,
MediaSource: TYPE_VALUE,
MediaSourceEventMap: TYPE,
+ MediaSourceHandle: TYPE_VALUE,
MediaStream: TYPE_VALUE,
MediaStreamAudioDestinationNode: TYPE_VALUE,
MediaStreamAudioSourceNode: TYPE_VALUE,
@@ -875,6 +877,7 @@ export const dom = {
PluginArray: TYPE_VALUE,
PointerEvent: TYPE_VALUE,
PointerEventInit: TYPE,
+ PointerLockOptions: TYPE,
PopoverInvokerElement: TYPE,
PopStateEvent: TYPE_VALUE,
PopStateEventInit: TYPE,
@@ -1037,7 +1040,6 @@ export const dom = {
RTCRtcpParameters: TYPE,
RTCRtpCapabilities: TYPE,
RTCRtpCodec: TYPE,
- RTCRtpCodecCapability: TYPE,
RTCRtpCodecParameters: TYPE,
RTCRtpCodingParameters: TYPE,
RTCRtpContributingSource: TYPE,
@@ -1259,6 +1261,7 @@ export const dom = {
TextEncoderCommon: TYPE,
TextEncoderEncodeIntoResult: TYPE,
TextEncoderStream: TYPE_VALUE,
+ TextEvent: TYPE_VALUE,
TextMetrics: TYPE_VALUE,
TextTrack: TYPE_VALUE,
TextTrackCue: TYPE_VALUE,
@@ -1307,6 +1310,7 @@ export const dom = {
UnderlyingSourceCancelCallback: TYPE,
UnderlyingSourcePullCallback: TYPE,
UnderlyingSourceStartCallback: TYPE,
+ UpdateCallback: TYPE,
URL: TYPE_VALUE,
URLSearchParams: TYPE_VALUE,
UserActivation: TYPE_VALUE,
@@ -1342,6 +1346,7 @@ export const dom = {
VideoPixelFormat: TYPE,
VideoPlaybackQuality: TYPE_VALUE,
VideoTransferCharacteristics: TYPE,
+ ViewTransition: TYPE_VALUE,
VisualViewport: TYPE_VALUE,
VisualViewportEventMap: TYPE,
VoidFunction: TYPE,
diff --git a/packages/scope-manager/src/lib/es2015.iterable.ts b/packages/scope-manager/src/lib/es2015.iterable.ts
index 0e16e6de70ee..9d90baccf6b0 100644
--- a/packages/scope-manager/src/lib/es2015.iterable.ts
+++ b/packages/scope-manager/src/lib/es2015.iterable.ts
@@ -12,6 +12,8 @@ export const es2015_iterable = {
...es2015_symbol,
Array: TYPE,
ArrayConstructor: TYPE,
+ ArrayIterator: TYPE,
+ BuiltinIteratorReturn: TYPE,
Float32Array: TYPE,
Float32ArrayConstructor: TYPE,
Float64Array: TYPE,
@@ -26,11 +28,13 @@ export const es2015_iterable = {
Iterable: TYPE,
IterableIterator: TYPE,
Iterator: TYPE,
+ IteratorObject: TYPE,
IteratorResult: TYPE,
IteratorReturnResult: TYPE,
IteratorYieldResult: TYPE,
Map: TYPE,
MapConstructor: TYPE,
+ MapIterator: TYPE,
Promise: TYPE,
PromiseConstructor: TYPE,
ReadonlyArray: TYPE,
@@ -38,7 +42,9 @@ export const es2015_iterable = {
ReadonlySet: TYPE,
Set: TYPE,
SetConstructor: TYPE,
+ SetIterator: TYPE,
String: TYPE,
+ StringIterator: TYPE,
SymbolConstructor: TYPE,
Uint16Array: TYPE,
Uint16ArrayConstructor: TYPE,
diff --git a/packages/scope-manager/src/lib/es2018.asynciterable.ts b/packages/scope-manager/src/lib/es2018.asynciterable.ts
index be699549e4be..fc4be3a897fe 100644
--- a/packages/scope-manager/src/lib/es2018.asynciterable.ts
+++ b/packages/scope-manager/src/lib/es2018.asynciterable.ts
@@ -15,5 +15,6 @@ export const es2018_asynciterable = {
AsyncIterable: TYPE,
AsyncIterableIterator: TYPE,
AsyncIterator: TYPE,
+ AsyncIteratorObject: TYPE,
SymbolConstructor: TYPE,
} as Record;
diff --git a/packages/scope-manager/src/lib/es2020.string.ts b/packages/scope-manager/src/lib/es2020.string.ts
index 1200f5ec93ea..5fac2e71e077 100644
--- a/packages/scope-manager/src/lib/es2020.string.ts
+++ b/packages/scope-manager/src/lib/es2020.string.ts
@@ -6,9 +6,9 @@
import type { ImplicitLibVariableOptions } from '../variable';
import { TYPE } from './base-config';
-import { es2015_iterable } from './es2015.iterable';
+import { es2020_symbol_wellknown } from './es2020.symbol.wellknown';
export const es2020_string = {
- ...es2015_iterable,
+ ...es2020_symbol_wellknown,
String: TYPE,
} as Record;
diff --git a/packages/scope-manager/src/lib/es2020.symbol.wellknown.ts b/packages/scope-manager/src/lib/es2020.symbol.wellknown.ts
index 733a9bb91f77..15fc777dcbb9 100644
--- a/packages/scope-manager/src/lib/es2020.symbol.wellknown.ts
+++ b/packages/scope-manager/src/lib/es2020.symbol.wellknown.ts
@@ -13,5 +13,6 @@ export const es2020_symbol_wellknown = {
...es2015_iterable,
...es2015_symbol,
RegExp: TYPE,
+ RegExpStringIterator: TYPE,
SymbolConstructor: TYPE,
} as Record;
diff --git a/packages/scope-manager/src/lib/esnext.asynciterable.ts b/packages/scope-manager/src/lib/esnext.asynciterable.ts
index 27eff6b90faa..137b63ece500 100644
--- a/packages/scope-manager/src/lib/esnext.asynciterable.ts
+++ b/packages/scope-manager/src/lib/esnext.asynciterable.ts
@@ -15,5 +15,6 @@ export const esnext_asynciterable = {
AsyncIterable: TYPE,
AsyncIterableIterator: TYPE,
AsyncIterator: TYPE,
+ AsyncIteratorObject: TYPE,
SymbolConstructor: TYPE,
} as Record;
diff --git a/packages/scope-manager/src/lib/esnext.disposable.ts b/packages/scope-manager/src/lib/esnext.disposable.ts
index 35dbb3d6a4a4..cfb4363d0230 100644
--- a/packages/scope-manager/src/lib/esnext.disposable.ts
+++ b/packages/scope-manager/src/lib/esnext.disposable.ts
@@ -6,16 +6,22 @@
import type { ImplicitLibVariableOptions } from '../variable';
import { TYPE, TYPE_VALUE } from './base-config';
+import { es2015_iterable } from './es2015.iterable';
import { es2015_symbol } from './es2015.symbol';
+import { es2018_asynciterable } from './es2018.asynciterable';
export const esnext_disposable = {
...es2015_symbol,
+ ...es2015_iterable,
+ ...es2018_asynciterable,
AsyncDisposable: TYPE,
AsyncDisposableStack: TYPE_VALUE,
AsyncDisposableStackConstructor: TYPE,
+ AsyncIteratorObject: TYPE,
Disposable: TYPE,
DisposableStack: TYPE_VALUE,
DisposableStackConstructor: TYPE,
+ IteratorObject: TYPE,
SuppressedError: TYPE_VALUE,
SuppressedErrorConstructor: TYPE,
SymbolConstructor: TYPE,
diff --git a/packages/scope-manager/src/lib/esnext.iterator.ts b/packages/scope-manager/src/lib/esnext.iterator.ts
new file mode 100644
index 000000000000..daf2305ebcb9
--- /dev/null
+++ b/packages/scope-manager/src/lib/esnext.iterator.ts
@@ -0,0 +1,15 @@
+// THIS CODE WAS AUTOMATICALLY GENERATED
+// DO NOT EDIT THIS CODE BY HAND
+// RUN THE FOLLOWING COMMAND FROM THE WORKSPACE ROOT TO REGENERATE:
+// npx nx generate-lib repo
+
+import type { ImplicitLibVariableOptions } from '../variable';
+
+import { TYPE, TYPE_VALUE } from './base-config';
+import { es2015_iterable } from './es2015.iterable';
+
+export const esnext_iterator = {
+ ...es2015_iterable,
+ Iterator: TYPE_VALUE,
+ IteratorObjectConstructor: TYPE,
+} as Record;
diff --git a/packages/scope-manager/src/lib/esnext.ts b/packages/scope-manager/src/lib/esnext.ts
index fd5469c6d89f..c3e76d8bd05d 100644
--- a/packages/scope-manager/src/lib/esnext.ts
+++ b/packages/scope-manager/src/lib/esnext.ts
@@ -11,6 +11,7 @@ import { esnext_collection } from './esnext.collection';
import { esnext_decorators } from './esnext.decorators';
import { esnext_disposable } from './esnext.disposable';
import { esnext_intl } from './esnext.intl';
+import { esnext_iterator } from './esnext.iterator';
import { esnext_object } from './esnext.object';
import { esnext_promise } from './esnext.promise';
import { esnext_regexp } from './esnext.regexp';
@@ -27,4 +28,5 @@ export const esnext = {
...esnext_array,
...esnext_regexp,
...esnext_string,
+ ...esnext_iterator,
} as Record;
diff --git a/packages/scope-manager/src/lib/index.ts b/packages/scope-manager/src/lib/index.ts
index 8ab8957b136f..181042154bc1 100644
--- a/packages/scope-manager/src/lib/index.ts
+++ b/packages/scope-manager/src/lib/index.ts
@@ -86,6 +86,7 @@ import { esnext_decorators } from './esnext.decorators';
import { esnext_disposable } from './esnext.disposable';
import { esnext_full } from './esnext.full';
import { esnext_intl } from './esnext.intl';
+import { esnext_iterator } from './esnext.iterator';
import { esnext_object } from './esnext.object';
import { esnext_promise } from './esnext.promise';
import { esnext_regexp } from './esnext.regexp';
@@ -183,6 +184,7 @@ const lib = {
'esnext.disposable': esnext_disposable,
'esnext.full': esnext_full,
'esnext.intl': esnext_intl,
+ 'esnext.iterator': esnext_iterator,
'esnext.object': esnext_object,
'esnext.promise': esnext_promise,
'esnext.regexp': esnext_regexp,
diff --git a/packages/scope-manager/src/lib/webworker.asynciterable.ts b/packages/scope-manager/src/lib/webworker.asynciterable.ts
index 3323c31620d3..bb74df8c9762 100644
--- a/packages/scope-manager/src/lib/webworker.asynciterable.ts
+++ b/packages/scope-manager/src/lib/webworker.asynciterable.ts
@@ -9,5 +9,7 @@ import { TYPE } from './base-config';
export const webworker_asynciterable = {
FileSystemDirectoryHandle: TYPE,
+ FileSystemDirectoryHandleAsyncIterator: TYPE,
ReadableStream: TYPE,
+ ReadableStreamAsyncIterator: TYPE,
} as Record;
diff --git a/packages/scope-manager/src/lib/webworker.iterable.ts b/packages/scope-manager/src/lib/webworker.iterable.ts
index aa39f5181f16..20d889c162a7 100644
--- a/packages/scope-manager/src/lib/webworker.iterable.ts
+++ b/packages/scope-manager/src/lib/webworker.iterable.ts
@@ -19,13 +19,17 @@ export const webworker_iterable = {
FileList: TYPE,
FontFaceSet: TYPE,
FormData: TYPE,
+ FormDataIterator: TYPE,
Headers: TYPE,
+ HeadersIterator: TYPE,
IDBDatabase: TYPE,
IDBObjectStore: TYPE,
MessageEvent: TYPE,
StylePropertyMapReadOnly: TYPE,
+ StylePropertyMapReadOnlyIterator: TYPE,
SubtleCrypto: TYPE,
URLSearchParams: TYPE,
+ URLSearchParamsIterator: TYPE,
WEBGL_draw_buffers: TYPE,
WEBGL_multi_draw: TYPE,
WebGL2RenderingContextBase: TYPE,
diff --git a/packages/scope-manager/src/lib/webworker.ts b/packages/scope-manager/src/lib/webworker.ts
index fb546c3004b9..6fd3903f3eeb 100644
--- a/packages/scope-manager/src/lib/webworker.ts
+++ b/packages/scope-manager/src/lib/webworker.ts
@@ -299,6 +299,9 @@ export const webworker = {
MediaDecodingType: TYPE,
MediaEncodingConfiguration: TYPE,
MediaEncodingType: TYPE,
+ MediaSourceHandle: TYPE_VALUE,
+ MediaStreamTrackProcessor: TYPE_VALUE,
+ MediaStreamTrackProcessorInit: TYPE,
MessageChannel: TYPE_VALUE,
MessageEvent: TYPE_VALUE,
MessageEventInit: TYPE,
diff --git a/packages/scope-manager/src/referencer/ExportVisitor.ts b/packages/scope-manager/src/referencer/ExportVisitor.ts
index f45fa8a213d1..723c4b0aab78 100644
--- a/packages/scope-manager/src/referencer/ExportVisitor.ts
+++ b/packages/scope-manager/src/referencer/ExportVisitor.ts
@@ -60,7 +60,10 @@ class ExportVisitor extends Visitor {
}
protected ExportSpecifier(node: TSESTree.ExportSpecifier): void {
- if (node.exportKind === 'type') {
+ if (
+ node.exportKind === 'type' &&
+ node.local.type === AST_NODE_TYPES.Identifier
+ ) {
// export { type T };
// type exports can only reference types
//
diff --git a/packages/scope-manager/tests/fixtures/jsx/namespaced-attribute.tsx b/packages/scope-manager/tests/fixtures/jsx/namespaced-attribute.tsx
index b42f48eaefdb..a94dae741c41 100644
--- a/packages/scope-manager/tests/fixtures/jsx/namespaced-attribute.tsx
+++ b/packages/scope-manager/tests/fixtures/jsx/namespaced-attribute.tsx
@@ -1,13 +1,13 @@
-import * as React from "react";
+import * as React from 'react';
// Both of these are equivalent:
const x = ;
-const y = ;
+const y = ;
interface FooProps {
- "a:b": string;
+ 'a:b': string;
}
function Foo(props: FooProps) {
- return {props["a:b"]}
;
+ return {props['a:b']}
;
}
diff --git a/packages/type-utils/CHANGELOG.md b/packages/type-utils/CHANGELOG.md
index c8df9b2223a0..cf0039c4b49d 100644
--- a/packages/type-utils/CHANGELOG.md
+++ b/packages/type-utils/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 8.10.0 (2024-10-17)
+
+This was a version bump only for type-utils to align it with other projects, there were no code changes.
+
+You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
+
## 8.9.0 (2024-10-14)
This was a version bump only for type-utils to align it with other projects, there were no code changes.
diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json
index aca8ba8424ff..a21949009afb 100644
--- a/packages/type-utils/package.json
+++ b/packages/type-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/type-utils",
- "version": "8.9.0",
+ "version": "8.10.0",
"description": "Type utilities for working with TypeScript + ESLint together",
"files": [
"dist",
@@ -46,14 +46,14 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
- "@typescript-eslint/typescript-estree": "8.9.0",
- "@typescript-eslint/utils": "8.9.0",
+ "@typescript-eslint/typescript-estree": "8.10.0",
+ "@typescript-eslint/utils": "8.10.0",
"debug": "^4.3.4",
"ts-api-utils": "^1.3.0"
},
"devDependencies": {
"@jest/types": "29.6.3",
- "@typescript-eslint/parser": "8.9.0",
+ "@typescript-eslint/parser": "8.10.0",
"ajv": "^6.12.6",
"downlevel-dts": "*",
"jest": "29.7.0",
diff --git a/packages/type-utils/tests/getDeclaration.test.ts b/packages/type-utils/tests/getDeclaration.test.ts
new file mode 100644
index 000000000000..a7af315b6b28
--- /dev/null
+++ b/packages/type-utils/tests/getDeclaration.test.ts
@@ -0,0 +1,55 @@
+import type { TSESTree } from '@typescript-eslint/types';
+import type { ParserServicesWithTypeInformation } from '@typescript-eslint/typescript-estree';
+import type * as ts from 'typescript';
+
+import { getDeclaration } from '../src';
+
+const node = {} as TSESTree.Node;
+
+const mockSymbol = (declarations?: ts.Declaration[]): ts.Symbol => {
+ return {
+ getDeclarations: () => declarations,
+ } as ts.Symbol;
+};
+
+const mockServices = (
+ symbol?: ts.Symbol,
+): ParserServicesWithTypeInformation => {
+ return {
+ getSymbolAtLocation: (_: TSESTree.Node) => symbol,
+ } as ParserServicesWithTypeInformation;
+};
+
+const mockDeclaration = (): ts.Declaration => {
+ return {} as ts.Declaration;
+};
+
+describe('getDeclaration', () => {
+ describe('when symbol does not exist', () => {
+ it('returns null', () => {
+ const services = mockServices();
+
+ expect(getDeclaration(services, node)).toBeNull();
+ });
+ });
+
+ describe('when declarations do not exist', () => {
+ it('returns null', () => {
+ const symbol = mockSymbol();
+ const services = mockServices(symbol);
+
+ expect(getDeclaration(services, node)).toBeNull();
+ });
+ });
+
+ describe('when declarations exist', () => {
+ it('returns the first declaration', () => {
+ const declaration1 = mockDeclaration();
+ const declaration2 = mockDeclaration();
+ const symbol = mockSymbol([declaration1, declaration2]);
+ const services = mockServices(symbol);
+
+ expect(getDeclaration(services, node)).toBe(declaration1);
+ });
+ });
+});
diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md
index 497939627d6e..6d89d945c9ad 100644
--- a/packages/types/CHANGELOG.md
+++ b/packages/types/CHANGELOG.md
@@ -1,3 +1,15 @@
+## 8.10.0 (2024-10-17)
+
+### 🚀 Features
+
+- support TypeScript 5.6 ([#9972](https://github.com/typescript-eslint/typescript-eslint/pull/9972))
+
+### ❤️ Thank You
+
+- Josh Goldberg ✨
+
+You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
+
## 8.9.0 (2024-10-14)
This was a version bump only for types to align it with other projects, there were no code changes.
diff --git a/packages/types/package.json b/packages/types/package.json
index d8168940e6a0..ca3648583a28 100644
--- a/packages/types/package.json
+++ b/packages/types/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/types",
- "version": "8.9.0",
+ "version": "8.10.0",
"description": "Types for the TypeScript-ESTree AST spec",
"files": [
"dist",
diff --git a/packages/types/src/lib.ts b/packages/types/src/lib.ts
index 71c8f4334917..70690101ed96 100644
--- a/packages/types/src/lib.ts
+++ b/packages/types/src/lib.ts
@@ -87,6 +87,7 @@ type Lib =
| 'esnext.disposable'
| 'esnext.full'
| 'esnext.intl'
+ | 'esnext.iterator'
| 'esnext.object'
| 'esnext.promise'
| 'esnext.regexp'
diff --git a/packages/types/src/ts-estree.ts b/packages/types/src/ts-estree.ts
index 9656ea011dc7..4914055b1992 100644
--- a/packages/types/src/ts-estree.ts
+++ b/packages/types/src/ts-estree.ts
@@ -19,32 +19,28 @@ declare module './generated/ast-spec' {
interface AccessorPropertyNonComputedName {
parent: TSESTree.ClassBody;
}
+ interface TSAbstractAccessorPropertyComputedName {
+ parent: TSESTree.ClassBody;
+ }
+ interface TSAbstractAccessorPropertyNonComputedName {
+ parent: TSESTree.ClassBody;
+ }
interface VariableDeclaratorDefiniteAssignment {
parent: TSESTree.VariableDeclaration;
}
-
interface VariableDeclaratorMaybeInit {
parent: TSESTree.VariableDeclaration;
}
-
interface VariableDeclaratorNoInit {
parent: TSESTree.VariableDeclaration;
}
-
interface UsingInForOfDeclarator {
parent: TSESTree.VariableDeclaration;
}
-
interface UsingInNormalContextDeclarator {
parent: TSESTree.VariableDeclaration;
}
- interface TSAbstractAccessorPropertyComputedName {
- parent: TSESTree.ClassBody;
- }
- interface TSAbstractAccessorPropertyNonComputedName {
- parent: TSESTree.ClassBody;
- }
interface CatchClause {
parent: TSESTree.TryStatement;
@@ -54,10 +50,6 @@ declare module './generated/ast-spec' {
parent: TSESTree.ClassDeclaration | TSESTree.ClassExpression;
}
- interface ExportSpecifier {
- parent: TSESTree.ExportNamedDeclaration;
- }
-
interface ImportAttribute {
parent: TSESTree.ImportDeclaration | TSESTree.ImportExpression;
}
@@ -220,6 +212,13 @@ declare module './generated/ast-spec' {
| TSESTree.TSMappedType
| TSESTree.TSTypeParameterDeclaration;
}
+
+ interface ExportSpecifierWithIdentifierLocal {
+ parent: TSESTree.ExportNamedDeclaration;
+ }
+ interface ExportSpecifierWithStringOrLiteralLocal {
+ parent: TSESTree.ExportNamedDeclaration;
+ }
}
export * as TSESTree from './generated/ast-spec';
diff --git a/packages/typescript-eslint/CHANGELOG.md b/packages/typescript-eslint/CHANGELOG.md
index ec0b1a77d3f8..39ee249c25ad 100644
--- a/packages/typescript-eslint/CHANGELOG.md
+++ b/packages/typescript-eslint/CHANGELOG.md
@@ -1,3 +1,15 @@
+## 8.10.0 (2024-10-17)
+
+### 🩹 Fixes
+
+- **typescript-eslint:** propagate `name` field to extended configs in `config` helper ([#10094](https://github.com/typescript-eslint/typescript-eslint/pull/10094))
+
+### ❤️ Thank You
+
+- auvred @auvred
+
+You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
+
## 8.9.0 (2024-10-14)
This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.
diff --git a/packages/typescript-eslint/package.json b/packages/typescript-eslint/package.json
index 4ad47a913e18..ac1fd013c5b1 100644
--- a/packages/typescript-eslint/package.json
+++ b/packages/typescript-eslint/package.json
@@ -1,6 +1,6 @@
{
"name": "typescript-eslint",
- "version": "8.9.0",
+ "version": "8.10.0",
"description": "Tooling which enables you to use TypeScript with ESLint",
"files": [
"dist",
@@ -52,9 +52,9 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
- "@typescript-eslint/eslint-plugin": "8.9.0",
- "@typescript-eslint/parser": "8.9.0",
- "@typescript-eslint/utils": "8.9.0"
+ "@typescript-eslint/eslint-plugin": "8.10.0",
+ "@typescript-eslint/parser": "8.10.0",
+ "@typescript-eslint/utils": "8.10.0"
},
"devDependencies": {
"@jest/types": "29.6.3",
diff --git a/packages/typescript-eslint/src/config-helper.ts b/packages/typescript-eslint/src/config-helper.ts
index 847047f37098..77085838c76a 100644
--- a/packages/typescript-eslint/src/config-helper.ts
+++ b/packages/typescript-eslint/src/config-helper.ts
@@ -91,16 +91,16 @@ export function config(
return config;
}
- const extension = {
- ...(config.files && { files: config.files }),
- ...(config.ignores && { ignores: config.ignores }),
- };
-
return [
- ...extendsArr.map(conf => ({
- ...conf,
- ...extension,
- })),
+ ...extendsArr.map(extension => {
+ const name = [config.name, extension.name].filter(Boolean).join('__');
+ return {
+ ...extension,
+ ...(config.files && { files: config.files }),
+ ...(config.ignores && { ignores: config.ignores }),
+ ...(name && { name }),
+ };
+ }),
config,
];
});
diff --git a/packages/typescript-eslint/tests/configs.test.ts b/packages/typescript-eslint/tests/configs.test.ts
index 61f4f2a92dc9..63bf079e1b79 100644
--- a/packages/typescript-eslint/tests/configs.test.ts
+++ b/packages/typescript-eslint/tests/configs.test.ts
@@ -367,4 +367,100 @@ describe('config helper', () => {
},
]);
});
+
+ it('flattens extended configs with config name', () => {
+ expect(
+ plugin.config({
+ extends: [{ rules: { rule1: 'error' } }, { rules: { rule2: 'error' } }],
+ files: ['common-file'],
+ ignores: ['common-ignored'],
+ name: 'my-config',
+ rules: { rule: 'error' },
+ }),
+ ).toEqual([
+ {
+ files: ['common-file'],
+ ignores: ['common-ignored'],
+ name: 'my-config',
+ rules: { rule1: 'error' },
+ },
+ {
+ files: ['common-file'],
+ ignores: ['common-ignored'],
+ name: 'my-config',
+ rules: { rule2: 'error' },
+ },
+ {
+ files: ['common-file'],
+ ignores: ['common-ignored'],
+ name: 'my-config',
+ rules: { rule: 'error' },
+ },
+ ]);
+ });
+
+ it('flattens extended configs with names if base config is unnamed', () => {
+ expect(
+ plugin.config({
+ extends: [
+ { name: 'extension-1', rules: { rule1: 'error' } },
+ { rules: { rule2: 'error' } },
+ ],
+ files: ['common-file'],
+ ignores: ['common-ignored'],
+ rules: { rule: 'error' },
+ }),
+ ).toEqual([
+ {
+ files: ['common-file'],
+ ignores: ['common-ignored'],
+ name: 'extension-1',
+ rules: { rule1: 'error' },
+ },
+ {
+ files: ['common-file'],
+ ignores: ['common-ignored'],
+ rules: { rule2: 'error' },
+ },
+ {
+ files: ['common-file'],
+ ignores: ['common-ignored'],
+ rules: { rule: 'error' },
+ },
+ ]);
+ });
+
+ it('merges config items names', () => {
+ expect(
+ plugin.config({
+ extends: [
+ { name: 'extension-1', rules: { rule1: 'error' } },
+ { rules: { rule2: 'error' } },
+ ],
+ files: ['common-file'],
+ ignores: ['common-ignored'],
+ name: 'my-config',
+ rules: { rule: 'error' },
+ }),
+ ).toEqual([
+ {
+ files: ['common-file'],
+ ignores: ['common-ignored'],
+ name: 'my-config__extension-1',
+ rules: { rule1: 'error' },
+ },
+ {
+ files: ['common-file'],
+ ignores: ['common-ignored'],
+ name: 'my-config',
+ rules: { rule2: 'error' },
+ },
+ {
+ files: ['common-file'],
+ ignores: ['common-ignored'],
+ name: 'my-config',
+ rules: { rule: 'error' },
+ },
+ ]);
+ });
});
diff --git a/packages/typescript-estree/CHANGELOG.md b/packages/typescript-estree/CHANGELOG.md
index 45607f96e82c..b9609068b40e 100644
--- a/packages/typescript-estree/CHANGELOG.md
+++ b/packages/typescript-estree/CHANGELOG.md
@@ -1,3 +1,15 @@
+## 8.10.0 (2024-10-17)
+
+### 🚀 Features
+
+- support TypeScript 5.6 ([#9972](https://github.com/typescript-eslint/typescript-eslint/pull/9972))
+
+### ❤️ Thank You
+
+- Josh Goldberg ✨
+
+You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
+
## 8.9.0 (2024-10-14)
diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json
index d43ffbe52124..e742001ab0b2 100644
--- a/packages/typescript-estree/package.json
+++ b/packages/typescript-estree/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/typescript-estree",
- "version": "8.9.0",
+ "version": "8.10.0",
"description": "A parser that converts TypeScript source code into an ESTree compatible form",
"files": [
"dist",
@@ -54,8 +54,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
- "@typescript-eslint/types": "8.9.0",
- "@typescript-eslint/visitor-keys": "8.9.0",
+ "@typescript-eslint/types": "8.10.0",
+ "@typescript-eslint/visitor-keys": "8.10.0",
"debug": "^4.3.4",
"fast-glob": "^3.3.2",
"is-glob": "^4.0.3",
diff --git a/packages/typescript-estree/src/convert.ts b/packages/typescript-estree/src/convert.ts
index 26b22ad2aa74..5cb94c19e77e 100644
--- a/packages/typescript-estree/src/convert.ts
+++ b/packages/typescript-estree/src/convert.ts
@@ -2029,7 +2029,7 @@ export class Converter {
type: AST_NODE_TYPES.ExportNamedDeclaration,
source: this.convertChild(node.moduleSpecifier),
specifiers: node.exportClause.elements.map(el =>
- this.convertChild(el),
+ this.convertChild(el, node),
),
exportKind: node.isTypeOnly ? 'type' : 'value',
declaration: null,
@@ -2068,13 +2068,25 @@ export class Converter {
);
}
- case SyntaxKind.ExportSpecifier:
+ case SyntaxKind.ExportSpecifier: {
+ const local = node.propertyName ?? node.name;
+ if (
+ local.kind === SyntaxKind.StringLiteral &&
+ parent.kind === SyntaxKind.ExportDeclaration &&
+ parent.moduleSpecifier?.kind !== SyntaxKind.StringLiteral
+ ) {
+ this.#throwError(
+ local,
+ 'A string literal cannot be used as a local exported binding without `from`.',
+ );
+ }
return this.createNode(node, {
type: AST_NODE_TYPES.ExportSpecifier,
- local: this.convertChild(node.propertyName ?? node.name),
+ local: this.convertChild(local),
exported: this.convertChild(node.name),
exportKind: node.isTypeOnly ? 'type' : 'value',
});
+ }
case SyntaxKind.ExportAssignment:
if (node.isExportEquals) {
diff --git a/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts b/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts
index c338c538bfec..3370da55be1b 100644
--- a/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts
+++ b/packages/typescript-estree/src/parseSettings/warnAboutTSVersion.ts
@@ -6,7 +6,7 @@ import type { ParseSettings } from './index';
/**
* This needs to be kept in sync with package.json in the typescript-eslint monorepo
*/
-const SUPPORTED_TYPESCRIPT_VERSIONS = '>=4.7.4 <5.6.0';
+const SUPPORTED_TYPESCRIPT_VERSIONS = '>=4.7.4 <5.7.0';
/*
* The semver package will ignore prerelease ranges, and we don't want to explicitly document every one
diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md
index 506bc1339e51..6e7f66d66e4d 100644
--- a/packages/utils/CHANGELOG.md
+++ b/packages/utils/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 8.10.0 (2024-10-17)
+
+This was a version bump only for utils to align it with other projects, there were no code changes.
+
+You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
+
## 8.9.0 (2024-10-14)
This was a version bump only for utils to align it with other projects, there were no code changes.
diff --git a/packages/utils/package.json b/packages/utils/package.json
index da2a1f5b7e00..0e3e1352c45c 100644
--- a/packages/utils/package.json
+++ b/packages/utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/utils",
- "version": "8.9.0",
+ "version": "8.10.0",
"description": "Utilities for working with TypeScript + ESLint together",
"files": [
"dist",
@@ -64,9 +64,9 @@
},
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "@typescript-eslint/scope-manager": "8.9.0",
- "@typescript-eslint/types": "8.9.0",
- "@typescript-eslint/typescript-estree": "8.9.0"
+ "@typescript-eslint/scope-manager": "8.10.0",
+ "@typescript-eslint/types": "8.10.0",
+ "@typescript-eslint/typescript-estree": "8.10.0"
},
"peerDependencies": {
"eslint": "^8.57.0 || ^9.0.0"
diff --git a/packages/visitor-keys/CHANGELOG.md b/packages/visitor-keys/CHANGELOG.md
index 214d9fab7b4e..a5e805e16ce5 100644
--- a/packages/visitor-keys/CHANGELOG.md
+++ b/packages/visitor-keys/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 8.10.0 (2024-10-17)
+
+This was a version bump only for visitor-keys to align it with other projects, there were no code changes.
+
+You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
+
## 8.9.0 (2024-10-14)
diff --git a/packages/visitor-keys/package.json b/packages/visitor-keys/package.json
index 07082b892166..18ac893ed36b 100644
--- a/packages/visitor-keys/package.json
+++ b/packages/visitor-keys/package.json
@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/visitor-keys",
- "version": "8.9.0",
+ "version": "8.10.0",
"description": "Visitor keys used to help traverse the TypeScript-ESTree AST",
"files": [
"dist",
@@ -47,7 +47,7 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
- "@typescript-eslint/types": "8.9.0",
+ "@typescript-eslint/types": "8.10.0",
"eslint-visitor-keys": "^3.4.3"
},
"devDependencies": {
diff --git a/packages/website/plugins/generated-rule-docs/RuleDocsPage.ts b/packages/website/plugins/generated-rule-docs/RuleDocsPage.ts
index 3c44aae99a0c..29ca8a6e66c4 100644
--- a/packages/website/plugins/generated-rule-docs/RuleDocsPage.ts
+++ b/packages/website/plugins/generated-rule-docs/RuleDocsPage.ts
@@ -3,7 +3,7 @@ import { fromMarkdown } from 'mdast-util-from-markdown';
import type * as unist from 'unist';
import type { VFileWithStem } from '../utils/rules';
-import { findH2Index } from '../utils/rules';
+import { findHeadingIndex } from '../utils/rules';
export interface RequiredHeadingIndices {
howToUse: number;
@@ -72,9 +72,13 @@ export class RuleDocsPage {
#recreateHeadingIndices(): RequiredHeadingIndices {
return {
- howToUse: findH2Index(this.#children, requiredHeadingNames[0]),
- options: findH2Index(this.#children, requiredHeadingNames[1]),
- whenNotToUseIt: findH2Index(this.#children, requiredHeadingNames[2]),
+ howToUse: findHeadingIndex(this.#children, 2, requiredHeadingNames[0]),
+ options: findHeadingIndex(this.#children, 2, requiredHeadingNames[1]),
+ whenNotToUseIt: findHeadingIndex(
+ this.#children,
+ 2,
+ requiredHeadingNames[2],
+ ),
};
}
}
diff --git a/packages/website/plugins/generated-rule-docs/createRuleDocsPage.ts b/packages/website/plugins/generated-rule-docs/createRuleDocsPage.ts
index 939e50e81704..aef53121a1fe 100644
--- a/packages/website/plugins/generated-rule-docs/createRuleDocsPage.ts
+++ b/packages/website/plugins/generated-rule-docs/createRuleDocsPage.ts
@@ -3,7 +3,7 @@ import type * as mdast from 'mdast';
import type * as unist from 'unist';
import type { VFileWithStem } from '../utils/rules';
-import { findH2Index } from '../utils/rules';
+import { findHeadingIndex } from '../utils/rules';
import type { HeadingName } from './RuleDocsPage';
import { requiredHeadingNames, RuleDocsPage } from './RuleDocsPage';
@@ -13,7 +13,7 @@ export function createRuleDocsPage(
rule: Readonly,
): RuleDocsPage {
const headingIndices = requiredHeadingNames.map(headingName =>
- findH2Index(children, headingName),
+ findHeadingIndex(children, 2, headingName),
);
function insertIfMissing(
diff --git a/packages/website/plugins/generated-rule-docs/index.ts b/packages/website/plugins/generated-rule-docs/index.ts
index 85c425cb38e4..088c53e1b534 100644
--- a/packages/website/plugins/generated-rule-docs/index.ts
+++ b/packages/website/plugins/generated-rule-docs/index.ts
@@ -9,6 +9,7 @@ import { insertBaseRuleReferences } from './insertions/insertBaseRuleReferences'
import { insertNewRuleReferences } from './insertions/insertNewRuleReferences';
import { insertResources } from './insertions/insertResources';
import { insertRuleDescription } from './insertions/insertRuleDescription';
+import { insertRuleOptions } from './insertions/insertRuleOptions';
import { insertWhenNotToUseIt } from './insertions/insertWhenNotToUseIt';
import { removeSourceCodeNotice } from './removeSourceCodeNotice';
@@ -34,6 +35,7 @@ export const generatedRuleDocs: Plugin = () => {
insertWhenNotToUseIt(page);
insertResources(page);
+ insertRuleOptions(page);
addESLintHashToCodeBlocksMeta(page, eslintrc);
};
};
diff --git a/packages/website/plugins/generated-rule-docs/insertions/insertRuleOptions.ts b/packages/website/plugins/generated-rule-docs/insertions/insertRuleOptions.ts
new file mode 100644
index 000000000000..466735f20cd3
--- /dev/null
+++ b/packages/website/plugins/generated-rule-docs/insertions/insertRuleOptions.ts
@@ -0,0 +1,125 @@
+import type { JSONSchema4 } from '@typescript-eslint/utils/json-schema';
+import type { Node } from 'unist';
+
+import { nodeIsHeading, nodeIsMdxFlowExpression } from '../../utils/nodes';
+import { findHeadingIndex } from '../../utils/rules';
+import type { RuleDocsPage } from '../RuleDocsPage';
+
+const knownSkippedRules = new Set([
+ 'array-type',
+ 'ban-ts-comment',
+ 'member-ordering',
+]);
+
+const emptyOptionDefaults = new Map([
+ ['boolean', false],
+ ['array', []],
+]);
+
+export function insertRuleOptions(page: RuleDocsPage): void {
+ if (
+ knownSkippedRules.has(page.file.stem) ||
+ !Array.isArray(page.rule.meta.schema)
+ ) {
+ return;
+ }
+
+ const optionProperties = getOptionProperties(
+ (page.rule.meta.schema as JSONSchema4[]).at(0),
+ );
+
+ if (!optionProperties) {
+ return;
+ }
+
+ const defaultOptions = (page.rule.defaultOptions[0] ?? {}) as Record<
+ string,
+ unknown
+ >;
+
+ for (const [optionName, option] of Object.entries(optionProperties)) {
+ if (!option.description) {
+ if (!page.rule.meta.docs.extendsBaseRule) {
+ throw new Error(`Missing description for option ${optionName}.`);
+ }
+ return;
+ }
+
+ const existingHeadingIndex = findHeadingIndex(
+ page.children,
+ 3,
+ node => node.type === 'inlineCode' && node.value === optionName,
+ );
+ if (existingHeadingIndex === -1) {
+ if (!page.rule.meta.docs.extendsBaseRule) {
+ throw new Error(`Couldn't find h3 for option ${optionName}.`);
+ }
+ continue;
+ }
+
+ const commentInsertionIndex = findCommentIndexForOption(
+ page.children,
+ existingHeadingIndex,
+ );
+ if (commentInsertionIndex === -1) {
+ throw new Error(
+ `[${page.file.stem}] Could not find ${OPTION_COMMENT} under option heading ${optionName}.`,
+ );
+ }
+
+ const defaultValue =
+ defaultOptions[optionName] ?? emptyOptionDefaults.get(option.type);
+
+ page.spliceChildren(
+ commentInsertionIndex,
+ 0,
+ defaultValue !== undefined
+ ? `${option.description} Default: \`${JSON.stringify(defaultValue)}\`.`
+ : option.description,
+ );
+ }
+}
+
+const OPTION_COMMENT = `/* insert option description */`;
+
+function findCommentIndexForOption(
+ children: readonly Node[],
+ headingIndex: number,
+): number {
+ for (let i = headingIndex + 1; i < children.length; i += 1) {
+ const child = children[i];
+ if (nodeIsMdxFlowExpression(child) && child.value === OPTION_COMMENT) {
+ return i;
+ }
+
+ if (nodeIsHeading(child)) {
+ break;
+ }
+ }
+
+ return -1;
+}
+
+function getOptionProperties(
+ options: JSONSchema4 | undefined,
+): Record | undefined {
+ if (!options) {
+ return undefined;
+ }
+
+ if (options.type === 'object') {
+ return options.properties;
+ }
+
+ if (options.oneOf) {
+ return options.oneOf.reduce>(
+ (previous, next) => ({
+ ...previous,
+ ...getOptionProperties(next),
+ }),
+ {},
+ );
+ }
+
+ return undefined;
+}
diff --git a/packages/website/plugins/utils/nodes.ts b/packages/website/plugins/utils/nodes.ts
index 5d7d1494a45c..3f1e5c995268 100644
--- a/packages/website/plugins/utils/nodes.ts
+++ b/packages/website/plugins/utils/nodes.ts
@@ -1,4 +1,5 @@
import type * as mdast from 'mdast';
+import type { MdxFlowExpression } from 'mdast-util-mdx';
import type * as unist from 'unist';
export function nodeIsCode(node: unist.Node): node is mdast.Code {
@@ -9,6 +10,12 @@ export function nodeIsHeading(node: unist.Node): node is mdast.Heading {
return node.type === 'heading';
}
+export function nodeIsMdxFlowExpression(
+ node: unist.Node,
+): node is MdxFlowExpression {
+ return node.type === 'mdxFlowExpression';
+}
+
export function nodeIsParent(node: unist.Node): node is unist.Parent {
return 'children' in node;
}
diff --git a/packages/website/plugins/utils/rules.ts b/packages/website/plugins/utils/rules.ts
index 02130f2e28db..508616497146 100644
--- a/packages/website/plugins/utils/rules.ts
+++ b/packages/website/plugins/utils/rules.ts
@@ -4,6 +4,7 @@ import * as path from 'node:path';
import type { ESLintPluginRuleModule } from '@typescript-eslint/eslint-plugin/use-at-your-own-risk/rules';
import type { RuleModule } from '@typescript-eslint/utils/ts-eslint';
import * as lz from 'lz-string';
+import type * as mdast from 'mdast';
import type * as unist from 'unist';
import type { VFile } from 'vfile';
@@ -68,16 +69,22 @@ export function isVFileWithStem(file: VFile): file is VFileWithStem {
return !!file.stem;
}
-export function findH2Index(
- children: unist.Node[],
- headingName: string,
+export function findHeadingIndex(
+ children: readonly unist.Node[],
+ depth: 2 | 3,
+ contents: string | ((node: mdast.PhrasingContent) => boolean),
): number {
+ const childMatch =
+ typeof contents === 'string'
+ ? (node: mdast.PhrasingContent): boolean =>
+ node.type === 'text' && node.value === contents
+ : contents;
+
return children.findIndex(
node =>
nodeIsHeading(node) &&
- node.depth === 2 &&
+ node.depth === depth &&
node.children.length === 1 &&
- node.children[0].type === 'text' &&
- node.children[0].value === headingName,
+ childMatch(node.children[0]),
);
}
diff --git a/tools/release/changelog-renderer.js b/tools/release/changelog-renderer.js
index 0a6ac64f7ce9..c12c0711aad8 100644
--- a/tools/release/changelog-renderer.js
+++ b/tools/release/changelog-renderer.js
@@ -2,34 +2,15 @@
// @ts-check
const {
- default: defaultChangelogRenderer,
+ default: DefaultChangelogRenderer,
} = require('nx/release/changelog-renderer');
-const changelogRenderer = async ({
- projectGraph,
- commits,
- releaseVersion,
- project,
- entryWhenNoChanges,
- changelogRenderOptions,
- repoSlug,
- conventionalCommitsConfig,
- changes,
-}) => {
- const defaultChangelog = await defaultChangelogRenderer({
- projectGraph,
- commits,
- releaseVersion,
- project,
- entryWhenNoChanges,
- changelogRenderOptions,
- repoSlug,
- conventionalCommitsConfig,
- changes,
- });
-
- // Append our custom messaging to the generated changelog entry
- return `${defaultChangelog}\n\nYou can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.`;
+module.exports = class CustomChangelogRenderer extends (
+ DefaultChangelogRenderer
+) {
+ async render() {
+ const defaultChangelog = await super.render();
+ // Append our custom messaging to the generated changelog entry
+ return `${defaultChangelog}\n\nYou can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.`;
+ }
};
-
-module.exports = changelogRenderer;
diff --git a/tools/release/release.mts b/tools/release/release.mts
index 7352f21b2ed3..a7bfd3d8d5b1 100644
--- a/tools/release/release.mts
+++ b/tools/release/release.mts
@@ -59,9 +59,13 @@ if (workspaceVersion === null) {
process.exit(0);
}
-const publishStatus = await releasePublish({
+const publishProjectsResult = await releasePublish({
dryRun: options.dryRun,
verbose: options.verbose,
});
+
// eslint-disable-next-line no-process-exit
-process.exit(publishStatus);
+process.exit(
+ // If any of the individual project publish tasks returned a non-zero exit code, exit with code 1
+ Object.values(publishProjectsResult).some(({ code }) => code !== 0) ? 1 : 0,
+);
diff --git a/yarn.lock b/yarn.lock
index c49ca4b7cd14..4d5710c7243c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1818,207 +1818,208 @@ __metadata:
languageName: node
linkType: hard
-"@cspell/cspell-bundled-dicts@npm:8.14.2":
- version: 8.14.2
- resolution: "@cspell/cspell-bundled-dicts@npm:8.14.2"
- dependencies:
- "@cspell/dict-ada": ^4.0.2
- "@cspell/dict-aws": ^4.0.3
- "@cspell/dict-bash": ^4.1.3
- "@cspell/dict-companies": ^3.1.4
- "@cspell/dict-cpp": ^5.1.12
- "@cspell/dict-cryptocurrencies": ^5.0.0
- "@cspell/dict-csharp": ^4.0.2
- "@cspell/dict-css": ^4.0.13
- "@cspell/dict-dart": ^2.0.3
- "@cspell/dict-django": ^4.1.0
- "@cspell/dict-docker": ^1.1.7
- "@cspell/dict-dotnet": ^5.0.2
- "@cspell/dict-elixir": ^4.0.3
- "@cspell/dict-en-common-misspellings": ^2.0.4
+"@cspell/cspell-bundled-dicts@npm:8.15.2":
+ version: 8.15.2
+ resolution: "@cspell/cspell-bundled-dicts@npm:8.15.2"
+ dependencies:
+ "@cspell/dict-ada": ^4.0.5
+ "@cspell/dict-aws": ^4.0.7
+ "@cspell/dict-bash": ^4.1.8
+ "@cspell/dict-companies": ^3.1.7
+ "@cspell/dict-cpp": ^5.1.22
+ "@cspell/dict-cryptocurrencies": ^5.0.3
+ "@cspell/dict-csharp": ^4.0.5
+ "@cspell/dict-css": ^4.0.16
+ "@cspell/dict-dart": ^2.2.4
+ "@cspell/dict-django": ^4.1.3
+ "@cspell/dict-docker": ^1.1.10
+ "@cspell/dict-dotnet": ^5.0.8
+ "@cspell/dict-elixir": ^4.0.6
+ "@cspell/dict-en-common-misspellings": ^2.0.7
"@cspell/dict-en-gb": 1.1.33
- "@cspell/dict-en_us": ^4.3.23
- "@cspell/dict-filetypes": ^3.0.4
- "@cspell/dict-fonts": ^4.0.0
- "@cspell/dict-fsharp": ^1.0.1
- "@cspell/dict-fullstack": ^3.2.0
- "@cspell/dict-gaming-terms": ^1.0.5
- "@cspell/dict-git": ^3.0.0
- "@cspell/dict-golang": ^6.0.9
- "@cspell/dict-google": ^1.0.1
- "@cspell/dict-haskell": ^4.0.1
- "@cspell/dict-html": ^4.0.5
- "@cspell/dict-html-symbol-entities": ^4.0.0
- "@cspell/dict-java": ^5.0.7
- "@cspell/dict-julia": ^1.0.1
- "@cspell/dict-k8s": ^1.0.6
- "@cspell/dict-latex": ^4.0.0
- "@cspell/dict-lorem-ipsum": ^4.0.0
- "@cspell/dict-lua": ^4.0.3
- "@cspell/dict-makefile": ^1.0.0
- "@cspell/dict-monkeyc": ^1.0.6
- "@cspell/dict-node": ^5.0.1
- "@cspell/dict-npm": ^5.0.18
- "@cspell/dict-php": ^4.0.8
- "@cspell/dict-powershell": ^5.0.5
- "@cspell/dict-public-licenses": ^2.0.7
- "@cspell/dict-python": ^4.2.4
- "@cspell/dict-r": ^2.0.1
- "@cspell/dict-ruby": ^5.0.2
- "@cspell/dict-rust": ^4.0.5
- "@cspell/dict-scala": ^5.0.3
- "@cspell/dict-software-terms": ^4.0.6
- "@cspell/dict-sql": ^2.1.5
- "@cspell/dict-svelte": ^1.0.2
- "@cspell/dict-swift": ^2.0.1
- "@cspell/dict-terraform": ^1.0.0
- "@cspell/dict-typescript": ^3.1.6
- "@cspell/dict-vue": ^3.0.0
- checksum: 526c001de3a926692f2f9b2b9cb64d84b4113af01ffa359641ba22716f9faca6448393d0329132f42b222feed568aabb575c3142a3becc1d57bcb5f4f1a4cc29
- languageName: node
- linkType: hard
-
-"@cspell/cspell-json-reporter@npm:8.14.2":
- version: 8.14.2
- resolution: "@cspell/cspell-json-reporter@npm:8.14.2"
- dependencies:
- "@cspell/cspell-types": 8.14.2
- checksum: 30daf98612eb667475026db48af83ba538f3d95f0b91d9a82c5aebb5831de739e8218f87ded83a9382443824550d49edee740a8adce301f618cb6557bced514a
- languageName: node
- linkType: hard
-
-"@cspell/cspell-pipe@npm:8.14.2":
- version: 8.14.2
- resolution: "@cspell/cspell-pipe@npm:8.14.2"
- checksum: 36ba380d16d81bba12110ddb72f94f8057e976982d2c6cbf31c39d19527eafd31eb16f329f93549ca666e867f05423cf7ffef48bcdd274e7e0458da3d3216404
- languageName: node
- linkType: hard
-
-"@cspell/cspell-resolver@npm:8.14.2":
- version: 8.14.2
- resolution: "@cspell/cspell-resolver@npm:8.14.2"
+ "@cspell/dict-en_us": ^4.3.26
+ "@cspell/dict-filetypes": ^3.0.7
+ "@cspell/dict-flutter": ^1.0.3
+ "@cspell/dict-fonts": ^4.0.3
+ "@cspell/dict-fsharp": ^1.0.4
+ "@cspell/dict-fullstack": ^3.2.3
+ "@cspell/dict-gaming-terms": ^1.0.8
+ "@cspell/dict-git": ^3.0.3
+ "@cspell/dict-golang": ^6.0.16
+ "@cspell/dict-google": ^1.0.4
+ "@cspell/dict-haskell": ^4.0.4
+ "@cspell/dict-html": ^4.0.9
+ "@cspell/dict-html-symbol-entities": ^4.0.3
+ "@cspell/dict-java": ^5.0.10
+ "@cspell/dict-julia": ^1.0.4
+ "@cspell/dict-k8s": ^1.0.9
+ "@cspell/dict-latex": ^4.0.3
+ "@cspell/dict-lorem-ipsum": ^4.0.3
+ "@cspell/dict-lua": ^4.0.6
+ "@cspell/dict-makefile": ^1.0.3
+ "@cspell/dict-monkeyc": ^1.0.9
+ "@cspell/dict-node": ^5.0.4
+ "@cspell/dict-npm": ^5.1.8
+ "@cspell/dict-php": ^4.0.13
+ "@cspell/dict-powershell": ^5.0.13
+ "@cspell/dict-public-licenses": ^2.0.11
+ "@cspell/dict-python": ^4.2.11
+ "@cspell/dict-r": ^2.0.4
+ "@cspell/dict-ruby": ^5.0.7
+ "@cspell/dict-rust": ^4.0.9
+ "@cspell/dict-scala": ^5.0.6
+ "@cspell/dict-software-terms": ^4.1.10
+ "@cspell/dict-sql": ^2.1.8
+ "@cspell/dict-svelte": ^1.0.5
+ "@cspell/dict-swift": ^2.0.4
+ "@cspell/dict-terraform": ^1.0.5
+ "@cspell/dict-typescript": ^3.1.9
+ "@cspell/dict-vue": ^3.0.3
+ checksum: 6bbe65cc517ada5c608bb91c7ea5749e3767aa13bd5462ed9a21f069590dc1ac983b491273456025503c754c588850c13ece2f78585ed40bc0b749a3036ce9c2
+ languageName: node
+ linkType: hard
+
+"@cspell/cspell-json-reporter@npm:8.15.2":
+ version: 8.15.2
+ resolution: "@cspell/cspell-json-reporter@npm:8.15.2"
+ dependencies:
+ "@cspell/cspell-types": 8.15.2
+ checksum: 4b892bccb83cf6096d44a0a457d3ed6a9e6b37a845b2ba97b4b203ad925e808857c610d6dc39118e1461c52dfcecef2f4b25f844b7c8434fcf9b5c9d0aa7d9a2
+ languageName: node
+ linkType: hard
+
+"@cspell/cspell-pipe@npm:8.15.2":
+ version: 8.15.2
+ resolution: "@cspell/cspell-pipe@npm:8.15.2"
+ checksum: 3a29c0594e3820404942fb81c2f3c46d58ca2ddced6549022900f41f1c1f016aeb6b35ba41cf6b1c9c70d66be6ccd6437fd1c86d593a865a32ede24a27b47de5
+ languageName: node
+ linkType: hard
+
+"@cspell/cspell-resolver@npm:8.15.2":
+ version: 8.15.2
+ resolution: "@cspell/cspell-resolver@npm:8.15.2"
dependencies:
global-directory: ^4.0.1
- checksum: c2fdb7048efbda79838299c88ea5b6deb27e4b2a2c3ac6ca2fb3c9dbe09b1bc6b2a471b3da659ccea9ea2da6ca9f43cec79ba120ffef8bb0c551e83d86f3e0fa
+ checksum: dcdbabad9f542535f96f333459fdc7d6302cd5bd54ce0e9a46dbd6c4e9ea001d1d4cadaee4584f5a21e98d9ca57872cd959a5089ae785cf0f4e9cba2e4cb30f5
languageName: node
linkType: hard
-"@cspell/cspell-service-bus@npm:8.14.2":
- version: 8.14.2
- resolution: "@cspell/cspell-service-bus@npm:8.14.2"
- checksum: ed6a7e67ed6e19d1e90133903f52d21d6aac3e3a76eec76721918a952d560136cf41099279f46e697d864bd71efc9c2f657771561929a47d861b358df7788ce9
+"@cspell/cspell-service-bus@npm:8.15.2":
+ version: 8.15.2
+ resolution: "@cspell/cspell-service-bus@npm:8.15.2"
+ checksum: 2903048b3dfc1057c0b0e75c709ff766d0ebe62430ded0c22c9e2e8c0421f09dd879e13eeda821c35f11de161a21626fcbf4e9d0c38f2798eaa9bcdb3fe6e1dd
languageName: node
linkType: hard
-"@cspell/cspell-types@npm:8.14.2":
- version: 8.14.2
- resolution: "@cspell/cspell-types@npm:8.14.2"
- checksum: 7bccb06e097ddb3a9ed36249c0f381226c7d93c763b0224fca53853cd43fab6af38517fac87080b49629321810c4e9848c85af63818e214cd14a661cfea4558f
+"@cspell/cspell-types@npm:8.15.2":
+ version: 8.15.2
+ resolution: "@cspell/cspell-types@npm:8.15.2"
+ checksum: d5b3ab38791a1e285dc93195bdcc5b9964638442213338fdb41427df906f1bbb437c007bb9264d592d51afc9790e930d3c914b26000361e754feed9230b4d623
languageName: node
linkType: hard
-"@cspell/dict-ada@npm:^4.0.2":
- version: 4.0.2
- resolution: "@cspell/dict-ada@npm:4.0.2"
- checksum: 847729d40022db4df698aa9511c6b9073954f71268b64ad4fa354e6ac3eb5b03486bcb566ecadd4bccbebb4f188752eff2b2bdd9021b58dbf2cd61cd6a426752
+"@cspell/dict-ada@npm:^4.0.5":
+ version: 4.0.5
+ resolution: "@cspell/dict-ada@npm:4.0.5"
+ checksum: fb522644d31da69cc78f6eee5cda7f8cae8a68e0c7505747eb15ff8e7a1780ee3bf07be86650b1763a9863251dd6ace678e2605676f03a44babce4136a03c06c
languageName: node
linkType: hard
-"@cspell/dict-aws@npm:^4.0.3":
- version: 4.0.3
- resolution: "@cspell/dict-aws@npm:4.0.3"
- checksum: 5106864517cab4fc07a5d6db6ca6a14920ca038a532c46b5f9b12ad9b833f033d1f44b9b9a0d9f1e6bb6ea0c4fecabe846d0f63908ab26b83bf8db9033ea7e04
+"@cspell/dict-aws@npm:^4.0.7":
+ version: 4.0.7
+ resolution: "@cspell/dict-aws@npm:4.0.7"
+ checksum: 17499fbdc9be25a8c0c20655a3b4be50960370bba2f77fe2c80225df46e74c5898b10f9ec2834becbdb3ec194485ccd725376d6312c8dd3b63fda2da48116841
languageName: node
linkType: hard
-"@cspell/dict-bash@npm:^4.1.3":
- version: 4.1.3
- resolution: "@cspell/dict-bash@npm:4.1.3"
- checksum: 4ba66c76c144d4c7ea1dd0fb92dfb0d7fd1e43a106a73fc7e9010b4a5c276aa4ef791c7161f56bf911356e3667ba043ee63271c1ffc485d9f8712553770e3ea9
+"@cspell/dict-bash@npm:^4.1.8":
+ version: 4.1.8
+ resolution: "@cspell/dict-bash@npm:4.1.8"
+ checksum: 754c91dbf74f01859a790b8690bf92cc7e633e9d40234f8a7185c12356d54b67d86e0a269c1f4aa6ae0d73462371882245395e6442e759d14b51838035b0ada7
languageName: node
linkType: hard
-"@cspell/dict-companies@npm:^3.1.4":
- version: 3.1.4
- resolution: "@cspell/dict-companies@npm:3.1.4"
- checksum: 5457731a3503bcfb3737eec8d4e4111b05de9be9a14e46dec440ae97b986cc6c4009655778e80fcc821c67f03054d6a6e27dc471e6568e6d72a846eeec1f588c
+"@cspell/dict-companies@npm:^3.1.7":
+ version: 3.1.7
+ resolution: "@cspell/dict-companies@npm:3.1.7"
+ checksum: 83d642c9fb1a0781e60cd241dfdf200183ecee57155084cc72a1490686c1e45e612bad8292535663decf2723b3b903141669630fc7eb2e426f41ab9b67e835a9
languageName: node
linkType: hard
-"@cspell/dict-cpp@npm:^5.1.12":
- version: 5.1.12
- resolution: "@cspell/dict-cpp@npm:5.1.12"
- checksum: 381229d024788e0b2eec48ff47972a0508d89974f4f158128ad37dac25fc299bd160381202bbecbb3b0c525e010f51005fb07eaf08a1852c7233f9a418760f57
+"@cspell/dict-cpp@npm:^5.1.22":
+ version: 5.1.22
+ resolution: "@cspell/dict-cpp@npm:5.1.22"
+ checksum: 54fc9fddbebc8526fd69a402455011e9c4b247d5ba117b7722f16c9e6a6ef0e2ddbe4155dce7407ad8ee3f8ffa7c77bf04d5f5e7dd181e0d7a740dbba3f8bf10
languageName: node
linkType: hard
-"@cspell/dict-cryptocurrencies@npm:^5.0.0":
- version: 5.0.0
- resolution: "@cspell/dict-cryptocurrencies@npm:5.0.0"
- checksum: 116e7f117b59ea4c9fa7ae1c3b47fc963e050448d43e059fb93731a256881ee262420edd5b9701ffe88af3d5e95b0337fc99b4dde1b0283ee0aaed45b23e281e
+"@cspell/dict-cryptocurrencies@npm:^5.0.3":
+ version: 5.0.3
+ resolution: "@cspell/dict-cryptocurrencies@npm:5.0.3"
+ checksum: 00d9e3e7df52c43a3551f047537218d1452e2de45f676a05d6fee0336d0c578eea0e20867e4df1036735ff3fa6485df331d280d064b2f2c339b9c96f0d43a9a2
languageName: node
linkType: hard
-"@cspell/dict-csharp@npm:^4.0.2":
- version: 4.0.2
- resolution: "@cspell/dict-csharp@npm:4.0.2"
- checksum: d2ecb2aada51c5f0d6d557fd4f0c6eddb5b299e0955e066c49cd2afe96a1c6fe0afde699fdb885dd3183603a1efbd1d793b6a490b8d039256445b4b154b7375b
+"@cspell/dict-csharp@npm:^4.0.5":
+ version: 4.0.5
+ resolution: "@cspell/dict-csharp@npm:4.0.5"
+ checksum: ff0fa46889e7a32b636890166ec5ee6957affa1a6657e5f3a037a1a0fa043853e4df6b153f08496d55c13000d9de469be9e6cbbabfee04d74a41e7d6ff8b0726
languageName: node
linkType: hard
-"@cspell/dict-css@npm:^4.0.13":
- version: 4.0.13
- resolution: "@cspell/dict-css@npm:4.0.13"
- checksum: a69a719d04fd6a0b3c8a11b26f367fb86f4de45de08f5c3d40e6bc6bb1f2ebf1edc363a91f9cb6d6a77d89cb9a17bc4ee3c76036036998d6b3d7515d96bdfff2
+"@cspell/dict-css@npm:^4.0.16":
+ version: 4.0.16
+ resolution: "@cspell/dict-css@npm:4.0.16"
+ checksum: 11c2c62ec654f54e56df6d52f3cd861aff9ee524d74b0b28ade7b597ced40bff5386a76e037bed830ae7e6f6cd0a72e7523fbf10ee752d0df93782867015a5a1
languageName: node
linkType: hard
-"@cspell/dict-dart@npm:^2.0.3":
- version: 2.0.3
- resolution: "@cspell/dict-dart@npm:2.0.3"
- checksum: 66bfcfa029baacd0b14b3ff5b6ab7597cf9459f77185d88b25123b42a4babb66df6786806843f1b6506c335326100599a2e1db6e6104e66bd021ede9ccb3cec4
+"@cspell/dict-dart@npm:^2.2.4":
+ version: 2.2.4
+ resolution: "@cspell/dict-dart@npm:2.2.4"
+ checksum: d9e8b12feafafb3bda4f3e27fdec41e46ad08ccff0efbafb33c284310135989730b0ac6616c5c2cf33447da4c1b8970b8d84ce029cbf7bed95aafd75172fbf15
languageName: node
linkType: hard
-"@cspell/dict-data-science@npm:^2.0.1":
- version: 2.0.1
- resolution: "@cspell/dict-data-science@npm:2.0.1"
- checksum: 1ae8e71161a02e8ee1bfed86bc815b81ae3eaeb9476fea4bc3c41556c525657123bac85fc2789bdbe18e444f9629fe8a1e69fd78a99f89b42edfa3211098a588
+"@cspell/dict-data-science@npm:^2.0.5":
+ version: 2.0.5
+ resolution: "@cspell/dict-data-science@npm:2.0.5"
+ checksum: 4e31a81a273073c54a0bb14b2bb6bba117fabdf07b09f08c46cbf997122022f5c997dcb1317357a24555864539767f5e60e45d960816c8853d0646001a54d5e4
languageName: node
linkType: hard
-"@cspell/dict-django@npm:^4.1.0":
- version: 4.1.0
- resolution: "@cspell/dict-django@npm:4.1.0"
- checksum: b8a66135525e235bd6f2ea02de84ac7eae78e1068418f36b0c2260f9516b72492ef73f3fdc5fe8db2a6933747ff45a3eb743423a7dbf5b74548b1b1f30792679
+"@cspell/dict-django@npm:^4.1.3":
+ version: 4.1.3
+ resolution: "@cspell/dict-django@npm:4.1.3"
+ checksum: fdc7ecd7a90042ba1170a20115eea25283757b41e19e0a4506909c3e100966b5b227e5f071391b3b8457d586f4f4b5bb2cb9a6b88b94337eef29dc03917b4a6d
languageName: node
linkType: hard
-"@cspell/dict-docker@npm:^1.1.7":
- version: 1.1.7
- resolution: "@cspell/dict-docker@npm:1.1.7"
- checksum: 307f8b5132edca7cd291ba0ab6ed88f8787df984d6a42401b12a0da1ecb935d50af3a108ede885ce5bede96c445acdc88bb9ea8396de151c565a90a3bf66853e
+"@cspell/dict-docker@npm:^1.1.10":
+ version: 1.1.10
+ resolution: "@cspell/dict-docker@npm:1.1.10"
+ checksum: 2a60783680102371dff96b3cd6287338efe26eca329e990c1270c122fcf1bbb2f888375a8ba7d723b62974c5fd870458a9f325d0754ccf0921849f1466d9d971
languageName: node
linkType: hard
-"@cspell/dict-dotnet@npm:^5.0.2":
- version: 5.0.2
- resolution: "@cspell/dict-dotnet@npm:5.0.2"
- checksum: fbf471cdaa4f05c73957709f5bb9f1e5c4940e715e862db06d8e29762a76d22e6eebb4e5e5e0357232f79c5b48399139d59a532b16f6c32b1072d55221299e5b
+"@cspell/dict-dotnet@npm:^5.0.8":
+ version: 5.0.8
+ resolution: "@cspell/dict-dotnet@npm:5.0.8"
+ checksum: 91f55b121f91d825e28ed947835dfed416ee8fc5620d98c18ea1a1b62cb3a143db1a3f22987f967749df5c86624d918a8bdbdd6ea634807be8cc4a9d9e9a3863
languageName: node
linkType: hard
-"@cspell/dict-elixir@npm:^4.0.3":
- version: 4.0.3
- resolution: "@cspell/dict-elixir@npm:4.0.3"
- checksum: f084449b2de5a2fa08076ac699c6073beaa4bb43796a662d681ea8fe5cba31f9efe718f3f98ef432ba75d4ea574316de34ab8422f79f4f2022cfddee7a7b8653
+"@cspell/dict-elixir@npm:^4.0.6":
+ version: 4.0.6
+ resolution: "@cspell/dict-elixir@npm:4.0.6"
+ checksum: 2bfd8d9ed8d3fcb88693fa51b091161a191a9c64d0591b04aac304571a2e61a57e829aa096e5a694dcfe4f4c9c0f1a265701a322e6fdff27711b17fe5af5508d
languageName: node
linkType: hard
-"@cspell/dict-en-common-misspellings@npm:^2.0.4":
- version: 2.0.4
- resolution: "@cspell/dict-en-common-misspellings@npm:2.0.4"
- checksum: ca1522cc75d0dafa38f1646f83ef21246b56f4fd8148f7a30de976899fadd50974be52d4dc5d5374495aa10444e0cff0822fd0d6d284df23de88ac1f6589a200
+"@cspell/dict-en-common-misspellings@npm:^2.0.7":
+ version: 2.0.7
+ resolution: "@cspell/dict-en-common-misspellings@npm:2.0.7"
+ checksum: cb549f1098ec0400171a4f49d508f77fd41a35a1fe3e3aa01e705de91b289032b9d2fef7b1771f5a3ce77b16118356496b760e60969ebab523c8b316149cf587
languageName: node
linkType: hard
@@ -2029,294 +2030,301 @@ __metadata:
languageName: node
linkType: hard
-"@cspell/dict-en_us@npm:^4.3.23":
- version: 4.3.23
- resolution: "@cspell/dict-en_us@npm:4.3.23"
- checksum: 3c5fbbcfe45b6915376f837cee3c2e66ff2a104fc13a0822eba7e79252ab928033dd86b415bcf713a46843e4f91d514ae288828230b4a00b8ec722cdd2526200
+"@cspell/dict-en_us@npm:^4.3.26":
+ version: 4.3.26
+ resolution: "@cspell/dict-en_us@npm:4.3.26"
+ checksum: 0d707b58f93a6009e76be60d99e75ab81bcc134240152dbe9d4458fa098bfca2525457edebe1bd286121fbc6424415e9f1d389de8f0431054421593be5b0de18
languageName: node
linkType: hard
-"@cspell/dict-filetypes@npm:^3.0.4":
- version: 3.0.4
- resolution: "@cspell/dict-filetypes@npm:3.0.4"
- checksum: d5e8e46f9caf40c895326c7557f42c0648458717f79d9f41f145170dbe36ec9e21dea322117a92a6a904385dfb3efd0dd63a349edf705c6cc4255861f8b97cce
+"@cspell/dict-filetypes@npm:^3.0.7":
+ version: 3.0.7
+ resolution: "@cspell/dict-filetypes@npm:3.0.7"
+ checksum: 8acbd25162109e8812a811fc8f942492cbf74c97ec0dd2ce30cd20ff6ff5e429b8062d255dc517749d20ed2a8d5aca64f1cfe5b3f40fc5de3b7608dd61d26a43
languageName: node
linkType: hard
-"@cspell/dict-fonts@npm:^4.0.0":
- version: 4.0.0
- resolution: "@cspell/dict-fonts@npm:4.0.0"
- checksum: 7e33e4b39fb071165d81920dd0ccc07e4b737a7b09522acf3781b26136526e445e03e456caaecff261d76b711196b84cff7c21293853bf00ebe93f2e64c42520
+"@cspell/dict-flutter@npm:^1.0.3":
+ version: 1.0.3
+ resolution: "@cspell/dict-flutter@npm:1.0.3"
+ checksum: e4136ebc2f470650761b873be6e9ec05ca5409e7fa3f493ec6397438a4d82798c0706c2853f9647f3392b57ac813817d45decdaaf5b660a266a509427bd181f0
languageName: node
linkType: hard
-"@cspell/dict-fsharp@npm:^1.0.1":
- version: 1.0.1
- resolution: "@cspell/dict-fsharp@npm:1.0.1"
- checksum: ce0df20704bf95d1fe434d2889cc764279cbce2b057fc5247be1ccaf7a8cc57372de3da2cdab6643b3df5221119716929b2e2aaad3f60533dcf0bd3c7d892fab
+"@cspell/dict-fonts@npm:^4.0.3":
+ version: 4.0.3
+ resolution: "@cspell/dict-fonts@npm:4.0.3"
+ checksum: f41186636346e94f8cb77cc654c67c65e7ad35b25e09bd6edc598a1402e4da47b4fc316455120f8558ea8a431b8431fb1798c505c630c17ca09770acf94448a4
languageName: node
linkType: hard
-"@cspell/dict-fullstack@npm:^3.2.0":
- version: 3.2.0
- resolution: "@cspell/dict-fullstack@npm:3.2.0"
- checksum: e64996ff126bd1fec6432b2c5ba5daa29de542bdae93065b89bc4aca34567767b6941a1981c7a5f77735523ceca943e5a29ab5d22efc02c5c190bcd7bb15d644
+"@cspell/dict-fsharp@npm:^1.0.4":
+ version: 1.0.4
+ resolution: "@cspell/dict-fsharp@npm:1.0.4"
+ checksum: b45a4dbe6ada11c739add65fd891f6cddc15c7b56e749d4d2cfed21a8e65844c65cfd208939cccd9e7f4bc9aa7d52eb790f939dda788440f4af7bcd401435ff3
languageName: node
linkType: hard
-"@cspell/dict-gaming-terms@npm:^1.0.5":
- version: 1.0.5
- resolution: "@cspell/dict-gaming-terms@npm:1.0.5"
- checksum: 25d50653ed5e940f9302cc5536c37a20854bb274dec9302d73c5349e51ec623d33d99e4fe283e3b30e70f452063361fbc4cae7dc603232fa82004262f37d0f50
+"@cspell/dict-fullstack@npm:^3.2.3":
+ version: 3.2.3
+ resolution: "@cspell/dict-fullstack@npm:3.2.3"
+ checksum: 61274e575f0e2a46dbd8db606e0a031994aa9f482ddd695609b379447cffbe2ff0abf473d40927a3e0b76396bc950084d2099d0e75ef428a39959b4c1db90ce6
languageName: node
linkType: hard
-"@cspell/dict-git@npm:^3.0.0":
- version: 3.0.0
- resolution: "@cspell/dict-git@npm:3.0.0"
- checksum: 97b6da58c93108bae0867515f790d84728f0bce580cc8ad6f0f5f63b2c81eaf6d084d543d99b693ff4d7fbea2413ff068c3e4811fc107820d243da2c06d381fa
+"@cspell/dict-gaming-terms@npm:^1.0.8":
+ version: 1.0.8
+ resolution: "@cspell/dict-gaming-terms@npm:1.0.8"
+ checksum: 4e7dff5baf3b04d5ae5b978e9571805d79a0c8ad9a8a25e606bdd1fa3b287d291b52eefaa1bd8764c9897811e1c2dda7e8e3e17d6b84cfe3bdf8ab4c1f882d61
languageName: node
linkType: hard
-"@cspell/dict-golang@npm:^6.0.9":
- version: 6.0.9
- resolution: "@cspell/dict-golang@npm:6.0.9"
- checksum: 88bd60b650f994b14ee07ab42e1efccfb65e54d2782b31d1500ce4768296d2a8472a400ab0f7eba14cc172cf234712fb8d1a9dab27c0789297c16ceeabe26d4e
+"@cspell/dict-git@npm:^3.0.3":
+ version: 3.0.3
+ resolution: "@cspell/dict-git@npm:3.0.3"
+ checksum: 4bff7e8e61d7877c409be088b9ade37e59f6689d31b1a44b3fa2fa98721900b4c16d707af427e7d464e67562f8d0cef24c5d97d7dbc1ba5349846007f7b8cf9e
languageName: node
linkType: hard
-"@cspell/dict-google@npm:^1.0.1":
- version: 1.0.1
- resolution: "@cspell/dict-google@npm:1.0.1"
- checksum: ced6cb2cc5fa525989f93a115da6c46d2a09c557c165f4b11950561363f93807e26c12f8cd750796d780e14fb48426201f0d289f59e4faa4e4d8a2af237d5769
+"@cspell/dict-golang@npm:^6.0.16":
+ version: 6.0.16
+ resolution: "@cspell/dict-golang@npm:6.0.16"
+ checksum: 725d08a4d0bf7a2d84500c46b78773aabf21a15f726ab336a47f29315d58a715fa03241342f5b38afb38cccbcaa44d12dcd8bd649b874cf6bc81ca96ea9ac763
languageName: node
linkType: hard
-"@cspell/dict-haskell@npm:^4.0.1":
- version: 4.0.1
- resolution: "@cspell/dict-haskell@npm:4.0.1"
- checksum: cfb51e415b60c5eb266a5782d0a4b19a37f1389b9b018d1bbb2ff4358bd739af1f76f68f26a138d4b4bd0ab67146d6eb9032fc3d3c212695237c134e05339c79
+"@cspell/dict-google@npm:^1.0.4":
+ version: 1.0.4
+ resolution: "@cspell/dict-google@npm:1.0.4"
+ checksum: d6cbd68789d7df0a8ac16c4ad93e1dd6e34b141b52df51ea243367b5f18f18243d0acd570b4b60f687640cb742cf94ea56b0b8bc07ad63e03c5d961e12aff053
languageName: node
linkType: hard
-"@cspell/dict-html-symbol-entities@npm:^4.0.0":
- version: 4.0.0
- resolution: "@cspell/dict-html-symbol-entities@npm:4.0.0"
- checksum: 79f05f9080f39dbde703980eb587ed6624b8fc2f5cedc297327bc1b9b7e6022a7c382e6013149b1afe00609b96003ab5c8d18d378979f76f336ab626317183f4
+"@cspell/dict-haskell@npm:^4.0.4":
+ version: 4.0.4
+ resolution: "@cspell/dict-haskell@npm:4.0.4"
+ checksum: 210205f6d9f5ac8db25f669fe4f22689c5c67b29322eb669d36f9bed59cd425ff5a4870926051766353647f1a8b98fb05d6ca9ad9b5353d5cd0067ac653ee529
languageName: node
linkType: hard
-"@cspell/dict-html@npm:^4.0.5":
- version: 4.0.5
- resolution: "@cspell/dict-html@npm:4.0.5"
- checksum: 2273e77cad6f373c4b0a43c5fb707725ff7c845e6de3545c8b05cbb2d82e1205f004a817498f561ced3d8d8b1d15848a82f2a667c0b64a1ee46cbde67d8ac136
+"@cspell/dict-html-symbol-entities@npm:^4.0.3":
+ version: 4.0.3
+ resolution: "@cspell/dict-html-symbol-entities@npm:4.0.3"
+ checksum: 0cef821bf2400a3f8b0d3c94eb8c5de531cbf3ed409d95faf5aaa7f272774ab1e6fa0f315c0902cc661d81bf52075f134b7687bec9c9f1184d176517b3781671
languageName: node
linkType: hard
-"@cspell/dict-java@npm:^5.0.7":
- version: 5.0.7
- resolution: "@cspell/dict-java@npm:5.0.7"
- checksum: 7be683439ed976a33c67e47500ff48cda1817fe510c9555036be759ae60bf0c1685354c8b970432167c02f9d84bafcb26b69c77c96520def2f99767f96429c1a
+"@cspell/dict-html@npm:^4.0.9":
+ version: 4.0.9
+ resolution: "@cspell/dict-html@npm:4.0.9"
+ checksum: 4fb490b6cda01a1087715dd66145b8f00c004df473ce9d32a6d2526af94d5d660445357abcf64c63c43b421d852d6282faba52054d13c294af6467edd1163047
languageName: node
linkType: hard
-"@cspell/dict-julia@npm:^1.0.1":
- version: 1.0.1
- resolution: "@cspell/dict-julia@npm:1.0.1"
- checksum: f6d72a4ac2daa6ec11a1912309677cb9e9c81fff9299e0d96bae6f3eee630fd849c3dac8679762b1c2765530edb3dc46614b92a3f9eae07ac4939cbb28b935f4
+"@cspell/dict-java@npm:^5.0.10":
+ version: 5.0.10
+ resolution: "@cspell/dict-java@npm:5.0.10"
+ checksum: b7c671e44cba4c4f85cda2932930a9648a341a40bcc2c8e9b1325d19fe9af684699d771250c8098ba2f56160360fb6d79ac822fe4d8672583e47523bbaa7398f
languageName: node
linkType: hard
-"@cspell/dict-k8s@npm:^1.0.6":
- version: 1.0.6
- resolution: "@cspell/dict-k8s@npm:1.0.6"
- checksum: e45c8c66864d7435f1848da3d7a5f24350ca736d34a21d5bf227e8799c4d0064d1b1f33d6f96d328b12e5f4204556b31931b5a2c80bf5537ba2da7a97da8b9fb
+"@cspell/dict-julia@npm:^1.0.4":
+ version: 1.0.4
+ resolution: "@cspell/dict-julia@npm:1.0.4"
+ checksum: 1b8da5639f8e187a5c7c0ffd0b6288e3840a57cb53c8f8b29fdc1852c2d357574c599ca875e47d71c7909abfe191fbaf86f599c05092e906b2c6ce0e50c7e60c
languageName: node
linkType: hard
-"@cspell/dict-latex@npm:^4.0.0":
- version: 4.0.0
- resolution: "@cspell/dict-latex@npm:4.0.0"
- checksum: 33a3f158d8c0151cbb4e6bd79ba1189d167b3916e1ce37d7b5754d18dffefe061320fa54c3cb482bd5c7cf37392d0112530b07a3eca63dffbe1069de317dc652
+"@cspell/dict-k8s@npm:^1.0.9":
+ version: 1.0.9
+ resolution: "@cspell/dict-k8s@npm:1.0.9"
+ checksum: 040f8b2935f267f649cdcd7e4c41b7ba0c660314834c8815e0a6500cfe055a32cd478e3c19c9d9e32abd80ba59e095aa926a98b2f0cc075d665e0028f0b109e5
languageName: node
linkType: hard
-"@cspell/dict-lorem-ipsum@npm:^4.0.0":
- version: 4.0.0
- resolution: "@cspell/dict-lorem-ipsum@npm:4.0.0"
- checksum: d3575fb7b9684480192d2cd647484312c555f3d1215d6b35371b70de3ecde4273010e5916cc2d130ff1e1223a1a49f75825651671a76d3dabdec98acf67a3902
+"@cspell/dict-latex@npm:^4.0.3":
+ version: 4.0.3
+ resolution: "@cspell/dict-latex@npm:4.0.3"
+ checksum: 948f74d411d76dea1180e66576ce6297cf520fe7eea12b6fce46f07844229750917e42c538929d8be62d04e1ff4cbeeb7c770999327f179cfeef68eb373d3586
languageName: node
linkType: hard
-"@cspell/dict-lua@npm:^4.0.3":
+"@cspell/dict-lorem-ipsum@npm:^4.0.3":
version: 4.0.3
- resolution: "@cspell/dict-lua@npm:4.0.3"
- checksum: eee20135a4f0620302c5feeb50485f59af93c24b64eb2081a9e2096a106ce33ae565d6d92607582b44c9f17c8a091d82fbcb443ebae9b77f8512b0d66a703c3b
+ resolution: "@cspell/dict-lorem-ipsum@npm:4.0.3"
+ checksum: 701a7a3dd92833133671d538e581040ba51022ed658dc19f43cfa9c51e3deaf42f1e50aa52dee945ce5bf375bd9e1253958aaa74a41ed3583680994788cf6939
languageName: node
linkType: hard
-"@cspell/dict-makefile@npm:^1.0.0":
- version: 1.0.0
- resolution: "@cspell/dict-makefile@npm:1.0.0"
- checksum: f0cac4caf31e27accd5df5e0c2f53097cccbbd085126c4b4ecc08be2a32bd7f89fe6b052e9eae4ec99843175cafa94561868271fb53c5389f27cc078565b5123
+"@cspell/dict-lua@npm:^4.0.6":
+ version: 4.0.6
+ resolution: "@cspell/dict-lua@npm:4.0.6"
+ checksum: d570ef7c57c4ca3737ad7a2fc94ab35b74e85828ee95a39ed9db539549809d755afb1d359d39800ebbbd53394871d84a6bf079cb28df25cb69d74fe32a96e627
languageName: node
linkType: hard
-"@cspell/dict-monkeyc@npm:^1.0.6":
- version: 1.0.6
- resolution: "@cspell/dict-monkeyc@npm:1.0.6"
- checksum: 3d174203af5c12e515e0bdcc7b43a75cc8f5ef097db65249773f386e063febbfe6a47c39414fc52e0970e7dde1f0b32bc5fc0e586761f1e0cd082f1bce0e7572
+"@cspell/dict-makefile@npm:^1.0.3":
+ version: 1.0.3
+ resolution: "@cspell/dict-makefile@npm:1.0.3"
+ checksum: 6eb38812bd99d23511f1077548704bc4857de82e0f852e707b23789dbfc980b65b4b383431617eb4e0f76372a1e80697a50e21f4980e4d077b50ad52edb6d99c
languageName: node
linkType: hard
-"@cspell/dict-node@npm:^5.0.1":
- version: 5.0.1
- resolution: "@cspell/dict-node@npm:5.0.1"
- checksum: 5b448f0fe6a22a5649397e01834175e8cb019747f140c015ea723d6c4cbf22bcfa002fe6406c45c487e2cf0772d61d8755f713a6b3cf7dc9a5d679eb6ada9003
+"@cspell/dict-monkeyc@npm:^1.0.9":
+ version: 1.0.9
+ resolution: "@cspell/dict-monkeyc@npm:1.0.9"
+ checksum: a7e35ac707c313e379080ccc2dce1842f05f49c0321cc2aad9858a3802b67c5c2aef9c395c261c68856e52148bc7422110859dfdb58ceb747afa46433217b045
languageName: node
linkType: hard
-"@cspell/dict-npm@npm:^5.0.18":
- version: 5.0.18
- resolution: "@cspell/dict-npm@npm:5.0.18"
- checksum: 51a3710335bb2e0f9ac5d47a09d123a6c8c72bab5a8cb391d87d6ceeb78959b24b6ed226024731bcb32200389dbdfbcf199c10c218cf696ed20a25bc47e661f1
+"@cspell/dict-node@npm:^5.0.4":
+ version: 5.0.4
+ resolution: "@cspell/dict-node@npm:5.0.4"
+ checksum: c75db55d0a298bc1602ff8915af0796232f6be378c79765d5d1518133cd638eb42a7ac10aa0c701d5a378a00cf252e3382e575212d419d9b5e9dd83b92c586e7
languageName: node
linkType: hard
-"@cspell/dict-php@npm:^4.0.8":
- version: 4.0.8
- resolution: "@cspell/dict-php@npm:4.0.8"
- checksum: 47a4258fb6b83d845198a301008fd0418949e14f2506b505ab97e431c4f79f67bd9aba778a4f84dcc307698531a72c3e40f151e41162b20a1c154fcece6f5644
+"@cspell/dict-npm@npm:^5.1.8":
+ version: 5.1.8
+ resolution: "@cspell/dict-npm@npm:5.1.8"
+ checksum: 1912943de0378a4be55fc79b7d022ff3e9889b8e1cc2789abcd833041a04b2871739685b7cd63d9b19545e1afacdcd9463d03f4dd9163339345b448d1991f57f
languageName: node
linkType: hard
-"@cspell/dict-powershell@npm:^5.0.5":
- version: 5.0.5
- resolution: "@cspell/dict-powershell@npm:5.0.5"
- checksum: 1332bd97d071e7e365c61061eede4800a09fd0e69b1b6e5e34522f5c5d9cdf1d2a822beb17b4e9534dffc655edceed1f7a83890c3f97ae4453bfbc8cc51236fc
+"@cspell/dict-php@npm:^4.0.13":
+ version: 4.0.13
+ resolution: "@cspell/dict-php@npm:4.0.13"
+ checksum: 9865bf46c509c728adb733754d427ed4f2f7ffeb4609d8a8c0ab467bc7648699d4240ce90ae85f1acca405e8fa16e04394bf6586cda092e1c04510fbc321cbdb
languageName: node
linkType: hard
-"@cspell/dict-public-licenses@npm:^2.0.7":
- version: 2.0.7
- resolution: "@cspell/dict-public-licenses@npm:2.0.7"
- checksum: 7bbd067668499c45bad9eb8e3dae598bc5635e6035160bff7343b87cd31e419387e704fa290d0e23903fff6c80b65838ebe5638e2951dc5d9214df9b98b60ce2
+"@cspell/dict-powershell@npm:^5.0.13":
+ version: 5.0.13
+ resolution: "@cspell/dict-powershell@npm:5.0.13"
+ checksum: 6f351153d9fc4baa9ea5e8c1867408b6879f3326f7863b7f34b1e6b8ee79df1c7a1659f7b8cae57bba2cb7fba1c45f83e341b978fb6db08a4ae2714fd75c3019
languageName: node
linkType: hard
-"@cspell/dict-python@npm:^4.2.4":
- version: 4.2.4
- resolution: "@cspell/dict-python@npm:4.2.4"
+"@cspell/dict-public-licenses@npm:^2.0.11":
+ version: 2.0.11
+ resolution: "@cspell/dict-public-licenses@npm:2.0.11"
+ checksum: 6b8741a360abd6eaaf4eb58a20628dfc96b281fc0c2b11c304ee67f328f653977bddcc55bcef3d09a3fb4a12cc92e09c66b61e2b4ef389aaf83b214967d4e4d4
+ languageName: node
+ linkType: hard
+
+"@cspell/dict-python@npm:^4.2.11":
+ version: 4.2.11
+ resolution: "@cspell/dict-python@npm:4.2.11"
dependencies:
- "@cspell/dict-data-science": ^2.0.1
- checksum: 3083dfdb1318127b6e9d1586675ac569d5f9b0d87d07a061830e2308c1879a280aad22db4fcd96097749e33dfbbedb5bbd7c083d1201c386f86a4c1231a10c4a
+ "@cspell/dict-data-science": ^2.0.5
+ checksum: 3e2eab2a3751f0b9f2887f930c6a8848b2a132dfdea84e24f7cf6f36604f7655944b281a14540d3ecb38fc42bb8daf77c47cde2014bbcf1a00326450cb2ab16a
languageName: node
linkType: hard
-"@cspell/dict-r@npm:^2.0.1":
- version: 2.0.1
- resolution: "@cspell/dict-r@npm:2.0.1"
- checksum: fe85939ad4c8ada34284a673918be711cca60b6d6f1c48ee98602c27905228dfbaea3462a350094633032c1d6b6bba9548df7019e0b21673cf1cf887c57ca228
+"@cspell/dict-r@npm:^2.0.4":
+ version: 2.0.4
+ resolution: "@cspell/dict-r@npm:2.0.4"
+ checksum: 4840051d591fd817913726d38b720405f3cde0cb7f19d4a480e313aa33150fa35b7314e211c16c5aadd65dfc5cadf51a462ffd1349b59743f3d68498fa1a207b
languageName: node
linkType: hard
-"@cspell/dict-ruby@npm:^5.0.2":
- version: 5.0.2
- resolution: "@cspell/dict-ruby@npm:5.0.2"
- checksum: c2006bcc808448b1eef146eb4b6b74388113c50334206191a9fe5817fb13669482ecd114f7bbd397562ad2e19a9683266ff396f48c6ce282f6445c2cfa8e82c7
+"@cspell/dict-ruby@npm:^5.0.7":
+ version: 5.0.7
+ resolution: "@cspell/dict-ruby@npm:5.0.7"
+ checksum: cdd1a7e15e4fb0e46f731ce13e76c35bea9529b22b80c61ea6f5b09ea9e217fa78de62c67337c9948a179137cf6b7c616a20afb29030134f7a774964419b0307
languageName: node
linkType: hard
-"@cspell/dict-rust@npm:^4.0.5":
- version: 4.0.5
- resolution: "@cspell/dict-rust@npm:4.0.5"
- checksum: 358ff7b35522616bcc95408d399f8982f0898c66c449621b7a0cae39605d5ba48ca785eecaaa43ee5b90567f5c481475ec97667f92995bb5a745a8d3296fb556
+"@cspell/dict-rust@npm:^4.0.9":
+ version: 4.0.9
+ resolution: "@cspell/dict-rust@npm:4.0.9"
+ checksum: 1421dbdb9e4e8c13ba1d12f1b637cb4d83b152fe21be4b1c878ec3078f2485f5913566573b5a8b54df50e4b6446cc4dcf8cb9b4cddc0bcdbd7fe461be1595c99
languageName: node
linkType: hard
-"@cspell/dict-scala@npm:^5.0.3":
- version: 5.0.3
- resolution: "@cspell/dict-scala@npm:5.0.3"
- checksum: af563dbfdbd51f9a39b78aafce564932278c6d13259e11031a5dcc63280f74e25cd70c3a07e5297bd736ace79a74aa038f02b386c56bc24fa0058e7d76b7b591
+"@cspell/dict-scala@npm:^5.0.6":
+ version: 5.0.6
+ resolution: "@cspell/dict-scala@npm:5.0.6"
+ checksum: 6ca19b5d54cb706c4fa59babb425f44c25a5c2961cc8862550c4ed9811b0c5504a4ac924c5e28c59ec7ce22189b786c740bbf6ddf7c8615d492f71678c6d463c
languageName: node
linkType: hard
-"@cspell/dict-software-terms@npm:^4.0.6":
- version: 4.0.6
- resolution: "@cspell/dict-software-terms@npm:4.0.6"
- checksum: a1c235d211a0f9ebbff85a5d9c3f6d7591240955db86398fd36ee61bde1e8eb9612e47e9edc18f647fe90a1bf4b5c6aa06159730780d6d22fdddf4df1904b73c
+"@cspell/dict-software-terms@npm:^4.1.10":
+ version: 4.1.10
+ resolution: "@cspell/dict-software-terms@npm:4.1.10"
+ checksum: 0a4d20f1b5587cde9efe928008091a59d0edf827e3c09029be2ac081fdf0ab70f268fe0f20633e1efd9719b34d31d004331ff621d5a76dd43bd9a544d7932e74
languageName: node
linkType: hard
-"@cspell/dict-sql@npm:^2.1.5":
- version: 2.1.5
- resolution: "@cspell/dict-sql@npm:2.1.5"
- checksum: 97928e1c42d9ec793401b37e97ab60955cfb7b623f9f2ad1578459e3c53bd5ae503dadc80f3192355de72bb15a89cb993be88d1ffc26a7f3b8c38a07e8b772a5
+"@cspell/dict-sql@npm:^2.1.8":
+ version: 2.1.8
+ resolution: "@cspell/dict-sql@npm:2.1.8"
+ checksum: 39be58da739ebedca501a020ebe22d86d3e34a4ebff1054672a3d9155b88da9fd13136fffae209fff8b0f333b3f591c86225d07e8a82ce5189e33c96fac464d8
languageName: node
linkType: hard
-"@cspell/dict-svelte@npm:^1.0.2":
- version: 1.0.2
- resolution: "@cspell/dict-svelte@npm:1.0.2"
- checksum: 5b42989bc6743a26ca5172cc23ebc1449d930695b10c908376048ce1835bf57fef7a0004f02ec5e43219f24a97f154e125041df470441199a045ed0be9e654fc
+"@cspell/dict-svelte@npm:^1.0.5":
+ version: 1.0.5
+ resolution: "@cspell/dict-svelte@npm:1.0.5"
+ checksum: 8bc4553b898435f2c40806b08d5eaf13b2055034458a9fc3c4e0f1e63fa7f96c8f85a166c33276780faa89b848eb4c385d4a4262c89abb4cb54c80b8c23ce56b
languageName: node
linkType: hard
-"@cspell/dict-swift@npm:^2.0.1":
- version: 2.0.1
- resolution: "@cspell/dict-swift@npm:2.0.1"
- checksum: 0bbb106266205c5f5e12886a73ebf0db2078bab1bdd2e1f304fe28445cd72d847a4c5072bf4fe8f9e8cdb4bc69d52fffec0806aea19ea9b64b7a87c67ee01175
+"@cspell/dict-swift@npm:^2.0.4":
+ version: 2.0.4
+ resolution: "@cspell/dict-swift@npm:2.0.4"
+ checksum: 319ba9b69a0058ff565215f0cd37cba4f6048cf1c83c5d0b4ae73b742d763171ada9eb2fc1407f88bf55c6c33314cd38e273017bdaa458a426bea169ac3e9aa5
languageName: node
linkType: hard
-"@cspell/dict-terraform@npm:^1.0.0":
- version: 1.0.0
- resolution: "@cspell/dict-terraform@npm:1.0.0"
- checksum: 132b8f0532aa5a6a08fa57487313722bc10ad37a4b94a5d76b072922eb4eb56d204a3e33c1569613af5b337bd125b8e2d30cae6bf5400a07fa58c551c7fe3b37
+"@cspell/dict-terraform@npm:^1.0.5":
+ version: 1.0.5
+ resolution: "@cspell/dict-terraform@npm:1.0.5"
+ checksum: b28ada2bb5e4731d2a5b748a25ba62a6b0d5d880f171879ecc87b8eea375a50f8d68849f6db1511ee21b2a58fbc22a3da62ef8abe7f09f83956bd755725b77ab
languageName: node
linkType: hard
-"@cspell/dict-typescript@npm:^3.1.6":
- version: 3.1.6
- resolution: "@cspell/dict-typescript@npm:3.1.6"
- checksum: c83033a52746b40be9752575d139325f954ecd824b2dd5f05f704f5a8791ccf1ad66d50a62728d651f4a32aa860ba2b8b84a6de350c5f7a87803b727b569668a
+"@cspell/dict-typescript@npm:^3.1.9":
+ version: 3.1.9
+ resolution: "@cspell/dict-typescript@npm:3.1.9"
+ checksum: c0d92f0f67db675e18893995456366a2b4326cf7c36d967b57a6dbcaf9b3030d3e80d8b429a2d24bb276c948c57ee776fbf9216c0de5b789bfab3df13eedde0e
languageName: node
linkType: hard
-"@cspell/dict-vue@npm:^3.0.0":
- version: 3.0.0
- resolution: "@cspell/dict-vue@npm:3.0.0"
- checksum: 4db58b1d6f9be1a523a35678877f2cca2bb04548b136ec5ec4e7186500978dbc32cc8747ced80ade3cad3acc3c80eb23afe980679165810f8f8f26802e952e2f
+"@cspell/dict-vue@npm:^3.0.3":
+ version: 3.0.3
+ resolution: "@cspell/dict-vue@npm:3.0.3"
+ checksum: 20b1b93e6ec178f6e07924f0df4c938b3ee3e72fb9f1572b221ae5f2a6786e0823b2e1080c27c41d1c73a99364e695d26806a619da6fcd17aae572dc3c04c721
languageName: node
linkType: hard
-"@cspell/dynamic-import@npm:8.14.2":
- version: 8.14.2
- resolution: "@cspell/dynamic-import@npm:8.14.2"
+"@cspell/dynamic-import@npm:8.15.2":
+ version: 8.15.2
+ resolution: "@cspell/dynamic-import@npm:8.15.2"
dependencies:
import-meta-resolve: ^4.1.0
- checksum: 59d63992dc0f8ea4fb1ddd6e60efc85e860d246c1c5b503ba679fb8c6161b0c6f2a28b233fb40ab691fd158541ad7823cc19cb1a6fc8590571e0a101f04021c4
+ checksum: 8df05cfcb8d5e5cce9fbd7a487fd17ea73922027a737d619742ae444f5b9db4678725b4d98a230f18014f830927cdd0e5dec09b41355dd3689cf2827fe9f8be1
languageName: node
linkType: hard
-"@cspell/filetypes@npm:8.14.2":
- version: 8.14.2
- resolution: "@cspell/filetypes@npm:8.14.2"
- checksum: be28a6d4cbc42fef60a1b240f24630aa6c946787bcdb9124be009f7fe884a24615b35e6e00b3aed3cd78bfced8ccffdc92fd7035ee3ebb6998de36945365c498
+"@cspell/filetypes@npm:8.15.2":
+ version: 8.15.2
+ resolution: "@cspell/filetypes@npm:8.15.2"
+ checksum: fa571ad99fb9628620390a0767e84209726b66034d1b6498eab75c3bfb96be918783ffaf196e3fe65d91d119f620f842bbca49ce3a8a33d9c2dd7e0e05db92de
languageName: node
linkType: hard
-"@cspell/strong-weak-map@npm:8.14.2":
- version: 8.14.2
- resolution: "@cspell/strong-weak-map@npm:8.14.2"
- checksum: 8b2cbe5bbf3156b0d0307878b6851450076a153d65ac3db306d48cab340486b6c9ec4eb745adfc610d9727fc4639ac73c3f02c48e74cbfc0bde4a563c8049beb
+"@cspell/strong-weak-map@npm:8.15.2":
+ version: 8.15.2
+ resolution: "@cspell/strong-weak-map@npm:8.15.2"
+ checksum: ceecf784c28a45deb039716e783fea1fcdcdc5359a2afc13d95b45e476e1c74ba184aef5f8754ed4bdf71d925393a78e17bf7ee8acdcc85d33a50bd9a4f6ca9a
languageName: node
linkType: hard
-"@cspell/url@npm:8.14.2":
- version: 8.14.2
- resolution: "@cspell/url@npm:8.14.2"
- checksum: 89ac902e187effc7bfd7cbd9315c6c6572d589b7d334dfd6148c673ca35c0d3d0443615e81f05d287ade00fdab169fdd2893bf04a74783649c91add08f9c5cec
+"@cspell/url@npm:8.15.2":
+ version: 8.15.2
+ resolution: "@cspell/url@npm:8.15.2"
+ checksum: af51013c32adfc0bac7762ac99b4c6992311aa4add546123bb683d23f353d91966e398c6b9a48dec7c3b253706b4153f09a77e2d530d14fcc3c65fc58e91231b
languageName: node
linkType: hard
@@ -3889,28 +3897,28 @@ __metadata:
languageName: node
linkType: hard
-"@microsoft/api-extractor-model@npm:7.29.2":
- version: 7.29.2
- resolution: "@microsoft/api-extractor-model@npm:7.29.2"
+"@microsoft/api-extractor-model@npm:7.29.8":
+ version: 7.29.8
+ resolution: "@microsoft/api-extractor-model@npm:7.29.8"
dependencies:
"@microsoft/tsdoc": ~0.15.0
"@microsoft/tsdoc-config": ~0.17.0
- "@rushstack/node-core-library": 5.4.1
- checksum: 71809004996b532f02f57b3d1191adeb08fa961d1f916ebbdc6eca2c29756278b2d08c40904d8e8e700af91699b36a062fba082ee61c72209c9a6e9b4aa3c9e9
+ "@rushstack/node-core-library": 5.9.0
+ checksum: 95a6b5df089d8bf44555f4565a6f0eda9323917266b2f4730b606aeb2c7f36df7c2cbcae9ca48a9198af7a33442cda8ce2c791e0f4c7c92f3bdaee6c3190b1f5
languageName: node
linkType: hard
-"@microsoft/api-extractor@npm:^7.43.0":
- version: 7.47.0
- resolution: "@microsoft/api-extractor@npm:7.47.0"
+"@microsoft/api-extractor@npm:^7.47.11":
+ version: 7.47.11
+ resolution: "@microsoft/api-extractor@npm:7.47.11"
dependencies:
- "@microsoft/api-extractor-model": 7.29.2
+ "@microsoft/api-extractor-model": 7.29.8
"@microsoft/tsdoc": ~0.15.0
"@microsoft/tsdoc-config": ~0.17.0
- "@rushstack/node-core-library": 5.4.1
- "@rushstack/rig-package": 0.5.2
- "@rushstack/terminal": 0.13.0
- "@rushstack/ts-command-line": 4.22.0
+ "@rushstack/node-core-library": 5.9.0
+ "@rushstack/rig-package": 0.5.3
+ "@rushstack/terminal": 0.14.2
+ "@rushstack/ts-command-line": 4.23.0
lodash: ~4.17.15
minimatch: ~3.0.3
resolve: ~1.22.1
@@ -3919,7 +3927,7 @@ __metadata:
typescript: 5.4.2
bin:
api-extractor: bin/api-extractor
- checksum: 7db5ad493ce6ee4739a1d9ed36a503aaf6355e062a01eaaa7151073a3967b6e807a19b0279553d492956be68af35b0a7b76b9179d2dd25f43df3bea982ce30be
+ checksum: 1ae7634c21e20fe191b5297a03b87547b03e9db4ee3439809363e554bcc7610ebd43dd71d30db5fbee573b7f84a2e1fa6ab3bdf320500a266b7c7c1ccc6049b2
languageName: node
linkType: hard
@@ -3998,59 +4006,10 @@ __metadata:
languageName: node
linkType: hard
-"@nrwl/devkit@npm:19.5.2":
- version: 19.5.2
- resolution: "@nrwl/devkit@npm:19.5.2"
- dependencies:
- "@nx/devkit": 19.5.2
- checksum: 06d924af5eae98d075d8bd26ab9ff9c666c694b6060257a40e32e570209acb0c84776ee7fa2e8cb3039142eccd1752818f53e9cc6461acc7daf888bddd95d663
- languageName: node
- linkType: hard
-
-"@nrwl/jest@npm:19.5.2":
- version: 19.5.2
- resolution: "@nrwl/jest@npm:19.5.2"
+"@nx/devkit@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@nx/devkit@npm:20.0.0"
dependencies:
- "@nx/jest": 19.5.2
- checksum: 45e97819ac378ac1211701d0af1a6ab3d780c5a68a814cfb0b08d1ac7fa81f40589ff9347039adf99a3dacd216267d0c32ce12fc2863968cb31355684c219db8
- languageName: node
- linkType: hard
-
-"@nrwl/js@npm:19.5.2":
- version: 19.5.2
- resolution: "@nrwl/js@npm:19.5.2"
- dependencies:
- "@nx/js": 19.5.2
- checksum: 5416515351a51e344c9bc6dfae92dc190748ae7a7e7093e16ee59d8872c7fd84fda0fe3c6af87a2720cfa92165037bad5c8d7aabba2ba5959ded52797fb63e3b
- languageName: node
- linkType: hard
-
-"@nrwl/tao@npm:19.5.2":
- version: 19.5.2
- resolution: "@nrwl/tao@npm:19.5.2"
- dependencies:
- nx: 19.5.2
- tslib: ^2.3.0
- bin:
- tao: index.js
- checksum: 52df90f436ad040a2e012f7a22501c7b5593cb7a1570ff9e02c6600d2fffe6a11c3390bb227de88b35efb5b9da83c1c9750aa4e558e38a256fbb27ac852807e1
- languageName: node
- linkType: hard
-
-"@nrwl/workspace@npm:19.5.2":
- version: 19.5.2
- resolution: "@nrwl/workspace@npm:19.5.2"
- dependencies:
- "@nx/workspace": 19.5.2
- checksum: f41fef7ab98b6bab8510af6ed7194d26449a56fcc1d8c72ab3ce94973358c29f63b7db455ed13614e76d6a7adab0347441358d9865c6da4b3c0a3b9a354a4cfe
- languageName: node
- linkType: hard
-
-"@nx/devkit@npm:19.5.2":
- version: 19.5.2
- resolution: "@nx/devkit@npm:19.5.2"
- dependencies:
- "@nrwl/devkit": 19.5.2
ejs: ^3.1.7
enquirer: ~2.3.6
ignore: ^5.0.4
@@ -4060,18 +4019,17 @@ __metadata:
tslib: ^2.3.0
yargs-parser: 21.1.1
peerDependencies:
- nx: ">= 17 <= 20"
- checksum: 862ea08dcccc8f3a7d81df4e3bf7acfe1a045940511a5a6c64b518852f9821bb167c9d4547ca73ddeadb00a00edd6b619883adcfd79cbf7f2ff0f588f309a802
+ nx: ">= 19 <= 21"
+ checksum: cefdae656627cb13bdc9a0f5bc191be50daf0fe2cfdaeabb7333229d5bcdce768a72445515ca288b2d322415c9eb87fca8a685707e9532990f42965f8fe10cb3
languageName: node
linkType: hard
-"@nx/eslint@npm:19.5.2":
- version: 19.5.2
- resolution: "@nx/eslint@npm:19.5.2"
+"@nx/eslint@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@nx/eslint@npm:20.0.0"
dependencies:
- "@nx/devkit": 19.5.2
- "@nx/js": 19.5.2
- "@nx/linter": 19.5.2
+ "@nx/devkit": 20.0.0
+ "@nx/js": 20.0.0
semver: ^7.5.3
tslib: ^2.3.0
typescript: ~5.4.2
@@ -4081,19 +4039,18 @@ __metadata:
peerDependenciesMeta:
"@zkochan/js-yaml":
optional: true
- checksum: 35f6def149a0fd98e7b49622927f86064c5f560cd035bcbe54062115b3c367857827c55e50401c916986b47edbbcd070211b9f73865b314315c03b66302ea6c4
+ checksum: fededf58d5b76c7e9501bf3a21fe0912d890df63e855c32371f28db659dd43287350fc4aee452d9e17293085a9b3929996f07be3713c8400f353350e99da91e3
languageName: node
linkType: hard
-"@nx/jest@npm:19.5.2":
- version: 19.5.2
- resolution: "@nx/jest@npm:19.5.2"
+"@nx/jest@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@nx/jest@npm:20.0.0"
dependencies:
"@jest/reporters": ^29.4.1
"@jest/test-result": ^29.4.1
- "@nrwl/jest": 19.5.2
- "@nx/devkit": 19.5.2
- "@nx/js": 19.5.2
+ "@nx/devkit": 20.0.0
+ "@nx/js": 20.0.0
"@phenomnomnominal/tsquery": ~5.0.1
chalk: ^4.1.0
identity-obj-proxy: 3.0.0
@@ -4102,15 +4059,16 @@ __metadata:
jest-util: ^29.4.1
minimatch: 9.0.3
resolve.exports: 1.1.0
+ semver: ^7.5.3
tslib: ^2.3.0
yargs-parser: 21.1.1
- checksum: c1a448784536c136871cbc0b9bc4e606c0b16c9011619afe6dec7ea813b721811a56162e5814c941b34101e79616f65a79b9950c039314addc203a4ade433d6c
+ checksum: 7fd5c1ea1d62d78ec76183124bbe305a044a4ab631e344a6f398e6054dd0d122ae7b6f8f5d63c5ead58b497ab532d160cfb4eb83ca17007eba21aeb71b185830
languageName: node
linkType: hard
-"@nx/js@npm:19.5.2":
- version: 19.5.2
- resolution: "@nx/js@npm:19.5.2"
+"@nx/js@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@nx/js@npm:20.0.0"
dependencies:
"@babel/core": ^7.23.2
"@babel/plugin-proposal-decorators": ^7.22.7
@@ -4119,19 +4077,20 @@ __metadata:
"@babel/preset-env": ^7.23.2
"@babel/preset-typescript": ^7.22.5
"@babel/runtime": ^7.22.6
- "@nrwl/js": 19.5.2
- "@nx/devkit": 19.5.2
- "@nx/workspace": 19.5.2
+ "@nx/devkit": 20.0.0
+ "@nx/workspace": 20.0.0
+ "@zkochan/js-yaml": 0.0.7
babel-plugin-const-enum: ^1.0.1
babel-plugin-macros: ^2.8.0
babel-plugin-transform-typescript-metadata: ^0.3.1
chalk: ^4.1.0
columnify: ^1.6.0
detect-port: ^1.5.1
+ enquirer: ~2.3.6
fast-glob: 3.2.7
- fs-extra: ^11.1.0
ignore: ^5.0.4
js-tokens: ^4.0.0
+ jsonc-parser: 3.2.0
minimatch: 9.0.3
npm-package-arg: 11.0.1
npm-run-path: ^4.0.1
@@ -4146,101 +4105,91 @@ __metadata:
peerDependenciesMeta:
verdaccio:
optional: true
- checksum: 1dea6884a2143398ac3979fc4d3f7360384bc2d4839835865d9d205b8038abc2f697cfd2955adfa435d8f59fc7ba239de7ca1f54d2436eccebe3a7182e2c69b7
+ checksum: 6a57a95641cfe49686eab8a4fdb999d86882cc239ff8701921239c75473541414dbe347b234f6c32fe1d8de823b8978952a5847a31e8cf36f1efc252fbb693d8
languageName: node
linkType: hard
-"@nx/linter@npm:19.5.2":
- version: 19.5.2
- resolution: "@nx/linter@npm:19.5.2"
- dependencies:
- "@nx/eslint": 19.5.2
- checksum: d4e5d4177b0e6a56bc14f9255fd9480324b06fc30d73f9ee27ee070b228306e26252b5af15db52ce53035bb47441044c0e21c9fc9e0d10463f7c7d66ad361f6d
- languageName: node
- linkType: hard
-
-"@nx/nx-darwin-arm64@npm:19.5.2":
- version: 19.5.2
- resolution: "@nx/nx-darwin-arm64@npm:19.5.2"
+"@nx/nx-darwin-arm64@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@nx/nx-darwin-arm64@npm:20.0.0"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@nx/nx-darwin-x64@npm:19.5.2":
- version: 19.5.2
- resolution: "@nx/nx-darwin-x64@npm:19.5.2"
+"@nx/nx-darwin-x64@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@nx/nx-darwin-x64@npm:20.0.0"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@nx/nx-freebsd-x64@npm:19.5.2":
- version: 19.5.2
- resolution: "@nx/nx-freebsd-x64@npm:19.5.2"
+"@nx/nx-freebsd-x64@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@nx/nx-freebsd-x64@npm:20.0.0"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
-"@nx/nx-linux-arm-gnueabihf@npm:19.5.2":
- version: 19.5.2
- resolution: "@nx/nx-linux-arm-gnueabihf@npm:19.5.2"
+"@nx/nx-linux-arm-gnueabihf@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@nx/nx-linux-arm-gnueabihf@npm:20.0.0"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
-"@nx/nx-linux-arm64-gnu@npm:19.5.2":
- version: 19.5.2
- resolution: "@nx/nx-linux-arm64-gnu@npm:19.5.2"
+"@nx/nx-linux-arm64-gnu@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@nx/nx-linux-arm64-gnu@npm:20.0.0"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
-"@nx/nx-linux-arm64-musl@npm:19.5.2":
- version: 19.5.2
- resolution: "@nx/nx-linux-arm64-musl@npm:19.5.2"
+"@nx/nx-linux-arm64-musl@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@nx/nx-linux-arm64-musl@npm:20.0.0"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
-"@nx/nx-linux-x64-gnu@npm:19.5.2":
- version: 19.5.2
- resolution: "@nx/nx-linux-x64-gnu@npm:19.5.2"
+"@nx/nx-linux-x64-gnu@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@nx/nx-linux-x64-gnu@npm:20.0.0"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
-"@nx/nx-linux-x64-musl@npm:19.5.2":
- version: 19.5.2
- resolution: "@nx/nx-linux-x64-musl@npm:19.5.2"
+"@nx/nx-linux-x64-musl@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@nx/nx-linux-x64-musl@npm:20.0.0"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
-"@nx/nx-win32-arm64-msvc@npm:19.5.2":
- version: 19.5.2
- resolution: "@nx/nx-win32-arm64-msvc@npm:19.5.2"
+"@nx/nx-win32-arm64-msvc@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@nx/nx-win32-arm64-msvc@npm:20.0.0"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@nx/nx-win32-x64-msvc@npm:19.5.2":
- version: 19.5.2
- resolution: "@nx/nx-win32-x64-msvc@npm:19.5.2"
+"@nx/nx-win32-x64-msvc@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@nx/nx-win32-x64-msvc@npm:20.0.0"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
-"@nx/workspace@npm:19.5.2":
- version: 19.5.2
- resolution: "@nx/workspace@npm:19.5.2"
+"@nx/workspace@npm:20.0.0":
+ version: 20.0.0
+ resolution: "@nx/workspace@npm:20.0.0"
dependencies:
- "@nrwl/workspace": 19.5.2
- "@nx/devkit": 19.5.2
+ "@nx/devkit": 20.0.0
chalk: ^4.1.0
enquirer: ~2.3.6
- nx: 19.5.2
+ nx: 20.0.0
tslib: ^2.3.0
yargs-parser: 21.1.1
- checksum: 2491b8b694f3b85c6263c7f44cc627c119ff4c4ec6d7de17a7fe8021e08dfda2ac8549e7156482f5bc2d8b120416cc7a546a8b6f3c57038a875c428ee1929f05
+ checksum: 27d731eb603623a8c155e392be9644fd5b933ed4dd8ed092b3778b57c1a74e0a9f9104946c24ae9a18614856de907e30811ce1b9bfe8285dd1051e030dd22817
languageName: node
linkType: hard
@@ -4478,9 +4427,9 @@ __metadata:
languageName: node
linkType: hard
-"@rushstack/node-core-library@npm:5.4.1":
- version: 5.4.1
- resolution: "@rushstack/node-core-library@npm:5.4.1"
+"@rushstack/node-core-library@npm:5.9.0":
+ version: 5.9.0
+ resolution: "@rushstack/node-core-library@npm:5.9.0"
dependencies:
ajv: ~8.13.0
ajv-draft-04: ~1.0.0
@@ -4495,44 +4444,44 @@ __metadata:
peerDependenciesMeta:
"@types/node":
optional: true
- checksum: 1316dcec7056a8c16a967284c82f09f6e55bd77c8944a5c10576d2c8e41708f6b43194d853a2f84a769d843acd84346b616e792a1c9bc2cad59c608f1601335e
+ checksum: beb558f118a796260f7df38b48b6669a94bbdb9711715785e0c5a426bd3a38c14721c03fc05e7a33883ec25a331ef0fb9e36438bb451ace021a7248a4f1fc74b
languageName: node
linkType: hard
-"@rushstack/rig-package@npm:0.5.2":
- version: 0.5.2
- resolution: "@rushstack/rig-package@npm:0.5.2"
+"@rushstack/rig-package@npm:0.5.3":
+ version: 0.5.3
+ resolution: "@rushstack/rig-package@npm:0.5.3"
dependencies:
resolve: ~1.22.1
strip-json-comments: ~3.1.1
- checksum: cdfbca218d85f0daf865b308a8f1ad572835e465b64a2efa74e8ee0025d31bb7da8d77a5f2c34af7fd8993eb0e317ea14cce14557dcbe0fe3041020d4141704b
+ checksum: bf3eadfc434bff273893efd22b319fe159d0e3b95729cb32ce3ad9f4ab4b6fabe3c4dd7f03ee0ddc7b480f0d989e908349eae6d6dce3500f896728a085af7aab
languageName: node
linkType: hard
-"@rushstack/terminal@npm:0.13.0":
- version: 0.13.0
- resolution: "@rushstack/terminal@npm:0.13.0"
+"@rushstack/terminal@npm:0.14.2":
+ version: 0.14.2
+ resolution: "@rushstack/terminal@npm:0.14.2"
dependencies:
- "@rushstack/node-core-library": 5.4.1
+ "@rushstack/node-core-library": 5.9.0
supports-color: ~8.1.1
peerDependencies:
"@types/node": "*"
peerDependenciesMeta:
"@types/node":
optional: true
- checksum: d2a90806e2f72ff8bf1522d8ab54b39ab8829f00b2b7f2e3edda4828dc70003ccd8cbda3dc25ad9275c8173286e61ccf46be0a8e9e56a7ee1f0557f6ef8eeefc
+ checksum: 90d38e6979737dcd97fdfdcebcc378194eed32a994341846235769273b6446b702e53e51e18fc8a373e8ed989c5622216aa6804198b8c7ae0e65cd6b103b90a1
languageName: node
linkType: hard
-"@rushstack/ts-command-line@npm:4.22.0":
- version: 4.22.0
- resolution: "@rushstack/ts-command-line@npm:4.22.0"
+"@rushstack/ts-command-line@npm:4.23.0":
+ version: 4.23.0
+ resolution: "@rushstack/ts-command-line@npm:4.23.0"
dependencies:
- "@rushstack/terminal": 0.13.0
+ "@rushstack/terminal": 0.14.2
"@types/argparse": 1.0.38
argparse: ~1.0.9
string-argv: ~0.3.1
- checksum: fd51fe8ac7f2e8066b5cd7071f4031e79dc59074ec4a0354ebc248f4b5c9c5e42ad5b39d929c8cddb2fe5e27948ca50ae982e046c62729f642049ce2e2333594
+ checksum: 4f3d77c5b2998bbc551d02e882f0c7b8e7aed0d97ad6e4ee45b2d6281a209087f738fc1a021397088ffbe666c4eae462c1d8c4a14dc031dddee2af055b12f794
languageName: node
linkType: hard
@@ -5293,7 +5242,7 @@ __metadata:
languageName: node
linkType: hard
-"@types/jest@npm:*, @types/jest@npm:29.5.12":
+"@types/jest@npm:*":
version: 29.5.12
resolution: "@types/jest@npm:29.5.12"
dependencies:
@@ -5303,6 +5252,16 @@ __metadata:
languageName: node
linkType: hard
+"@types/jest@npm:29.5.13":
+ version: 29.5.13
+ resolution: "@types/jest@npm:29.5.13"
+ dependencies:
+ expect: ^29.0.0
+ pretty-format: ^29.0.0
+ checksum: 875ac23c2398cdcf22aa56c6ba24560f11d2afda226d4fa23936322dde6202f9fdbd2b91602af51c27ecba223d9fc3c1e33c9df7e47b3bf0e2aefc6baf13ce53
+ languageName: node
+ linkType: hard
+
"@types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9":
version: 7.0.15
resolution: "@types/json-schema@npm:7.0.15"
@@ -5630,7 +5589,7 @@ __metadata:
"@babel/core": "*"
"@babel/eslint-parser": "*"
"@jest/types": 29.6.3
- "@microsoft/api-extractor": ^7.43.0
+ "@microsoft/api-extractor": ^7.47.11
glob: "*"
jest: 29.7.0
jest-diff: ^29.7.0
@@ -5659,7 +5618,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@typescript-eslint/eslint-plugin@8.9.0, @typescript-eslint/eslint-plugin@workspace:*, @typescript-eslint/eslint-plugin@workspace:^, @typescript-eslint/eslint-plugin@workspace:packages/eslint-plugin":
+"@typescript-eslint/eslint-plugin@8.10.0, @typescript-eslint/eslint-plugin@workspace:*, @typescript-eslint/eslint-plugin@workspace:^, @typescript-eslint/eslint-plugin@workspace:packages/eslint-plugin":
version: 0.0.0-use.local
resolution: "@typescript-eslint/eslint-plugin@workspace:packages/eslint-plugin"
dependencies:
@@ -5668,12 +5627,12 @@ __metadata:
"@types/marked": ^5.0.2
"@types/mdast": ^4.0.3
"@types/natural-compare": "*"
- "@typescript-eslint/rule-schema-to-typescript-types": 8.9.0
- "@typescript-eslint/rule-tester": 8.9.0
- "@typescript-eslint/scope-manager": 8.9.0
- "@typescript-eslint/type-utils": 8.9.0
- "@typescript-eslint/utils": 8.9.0
- "@typescript-eslint/visitor-keys": 8.9.0
+ "@typescript-eslint/rule-schema-to-typescript-types": 8.10.0
+ "@typescript-eslint/rule-tester": 8.10.0
+ "@typescript-eslint/scope-manager": 8.10.0
+ "@typescript-eslint/type-utils": 8.10.0
+ "@typescript-eslint/utils": 8.10.0
+ "@typescript-eslint/visitor-keys": 8.10.0
ajv: ^6.12.6
cross-env: ^7.0.3
cross-fetch: "*"
@@ -5717,16 +5676,16 @@ __metadata:
languageName: unknown
linkType: soft
-"@typescript-eslint/parser@8.9.0, @typescript-eslint/parser@workspace:*, @typescript-eslint/parser@workspace:packages/parser":
+"@typescript-eslint/parser@8.10.0, @typescript-eslint/parser@workspace:*, @typescript-eslint/parser@workspace:packages/parser":
version: 0.0.0-use.local
resolution: "@typescript-eslint/parser@workspace:packages/parser"
dependencies:
"@jest/types": 29.6.3
"@types/glob": "*"
- "@typescript-eslint/scope-manager": 8.9.0
- "@typescript-eslint/types": 8.9.0
- "@typescript-eslint/typescript-estree": 8.9.0
- "@typescript-eslint/visitor-keys": 8.9.0
+ "@typescript-eslint/scope-manager": 8.10.0
+ "@typescript-eslint/types": 8.10.0
+ "@typescript-eslint/typescript-estree": 8.10.0
+ "@typescript-eslint/visitor-keys": 8.10.0
debug: ^4.3.4
downlevel-dts: "*"
glob: "*"
@@ -5742,28 +5701,28 @@ __metadata:
languageName: unknown
linkType: soft
-"@typescript-eslint/rule-schema-to-typescript-types@8.9.0, @typescript-eslint/rule-schema-to-typescript-types@workspace:*, @typescript-eslint/rule-schema-to-typescript-types@workspace:packages/rule-schema-to-typescript-types":
+"@typescript-eslint/rule-schema-to-typescript-types@8.10.0, @typescript-eslint/rule-schema-to-typescript-types@workspace:*, @typescript-eslint/rule-schema-to-typescript-types@workspace:packages/rule-schema-to-typescript-types":
version: 0.0.0-use.local
resolution: "@typescript-eslint/rule-schema-to-typescript-types@workspace:packages/rule-schema-to-typescript-types"
dependencies:
"@jest/types": 29.6.3
- "@typescript-eslint/type-utils": 8.9.0
- "@typescript-eslint/utils": 8.9.0
+ "@typescript-eslint/type-utils": 8.10.0
+ "@typescript-eslint/utils": 8.10.0
natural-compare: ^1.4.0
prettier: ^3.2.5
languageName: unknown
linkType: soft
-"@typescript-eslint/rule-tester@8.9.0, @typescript-eslint/rule-tester@workspace:*, @typescript-eslint/rule-tester@workspace:packages/rule-tester":
+"@typescript-eslint/rule-tester@8.10.0, @typescript-eslint/rule-tester@workspace:*, @typescript-eslint/rule-tester@workspace:packages/rule-tester":
version: 0.0.0-use.local
resolution: "@typescript-eslint/rule-tester@workspace:packages/rule-tester"
dependencies:
"@jest/types": 29.6.3
"@types/json-stable-stringify-without-jsonify": ^1.0.2
"@types/lodash.merge": 4.6.9
- "@typescript-eslint/parser": 8.9.0
- "@typescript-eslint/typescript-estree": 8.9.0
- "@typescript-eslint/utils": 8.9.0
+ "@typescript-eslint/parser": 8.10.0
+ "@typescript-eslint/typescript-estree": 8.10.0
+ "@typescript-eslint/utils": 8.10.0
ajv: ^6.12.6
chai: ^4.4.1
eslint-visitor-keys: ^4.0.0
@@ -5781,18 +5740,19 @@ __metadata:
languageName: unknown
linkType: soft
-"@typescript-eslint/scope-manager@8.9.0, @typescript-eslint/scope-manager@workspace:*, @typescript-eslint/scope-manager@workspace:^, @typescript-eslint/scope-manager@workspace:packages/scope-manager":
+"@typescript-eslint/scope-manager@8.10.0, @typescript-eslint/scope-manager@workspace:*, @typescript-eslint/scope-manager@workspace:^, @typescript-eslint/scope-manager@workspace:packages/scope-manager":
version: 0.0.0-use.local
resolution: "@typescript-eslint/scope-manager@workspace:packages/scope-manager"
dependencies:
"@jest/types": 29.6.3
"@types/glob": "*"
- "@typescript-eslint/types": 8.9.0
- "@typescript-eslint/typescript-estree": 8.9.0
- "@typescript-eslint/visitor-keys": 8.9.0
+ "@typescript-eslint/types": 8.10.0
+ "@typescript-eslint/typescript-estree": 8.10.0
+ "@typescript-eslint/visitor-keys": 8.10.0
glob: "*"
jest-specific-snapshot: "*"
make-dir: "*"
+ prettier: ^3.2.5
pretty-format: "*"
typescript: "*"
languageName: unknown
@@ -5808,14 +5768,14 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/type-utils@8.9.0, @typescript-eslint/type-utils@workspace:*, @typescript-eslint/type-utils@workspace:packages/type-utils":
+"@typescript-eslint/type-utils@8.10.0, @typescript-eslint/type-utils@workspace:*, @typescript-eslint/type-utils@workspace:packages/type-utils":
version: 0.0.0-use.local
resolution: "@typescript-eslint/type-utils@workspace:packages/type-utils"
dependencies:
"@jest/types": 29.6.3
- "@typescript-eslint/parser": 8.9.0
- "@typescript-eslint/typescript-estree": 8.9.0
- "@typescript-eslint/utils": 8.9.0
+ "@typescript-eslint/parser": 8.10.0
+ "@typescript-eslint/typescript-estree": 8.10.0
+ "@typescript-eslint/utils": 8.10.0
ajv: ^6.12.6
debug: ^4.3.4
downlevel-dts: "*"
@@ -5830,7 +5790,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@typescript-eslint/types@8.9.0, @typescript-eslint/types@^8.8.0, @typescript-eslint/types@workspace:*, @typescript-eslint/types@workspace:^, @typescript-eslint/types@workspace:packages/types":
+"@typescript-eslint/types@8.10.0, @typescript-eslint/types@^8.8.0, @typescript-eslint/types@workspace:*, @typescript-eslint/types@workspace:^, @typescript-eslint/types@workspace:packages/types":
version: 0.0.0-use.local
resolution: "@typescript-eslint/types@workspace:packages/types"
dependencies:
@@ -5865,17 +5825,17 @@ __metadata:
"@eslint/eslintrc": ^2.1.4
"@eslint/js": ^8.57.0
"@jest/types": 29.6.3
- "@nx/devkit": 19.5.2
- "@nx/eslint": 19.5.2
- "@nx/jest": 19.5.2
- "@nx/workspace": 19.5.2
+ "@nx/devkit": 20.0.0
+ "@nx/eslint": 20.0.0
+ "@nx/jest": 20.0.0
+ "@nx/workspace": 20.0.0
"@swc/core": ^1.4.12
"@swc/jest": ^0.2.36
"@types/babel__code-frame": ^7.0.6
"@types/babel__core": ^7.20.5
"@types/debug": ^4.1.12
"@types/is-glob": ^4.0.4
- "@types/jest": 29.5.12
+ "@types/jest": 29.5.13
"@types/jest-specific-snapshot": ^0.5.9
"@types/natural-compare": ^1.4.3
"@types/ncp": ^2.0.8
@@ -5891,7 +5851,7 @@ __metadata:
"@typescript-eslint/utils": "workspace:^"
console-fail-test: ^0.5.0
cross-fetch: ^4.0.0
- cspell: ^8.6.1
+ cspell: ^8.15.2
downlevel-dts: ">=0.11.0"
eslint: ^9.3.0
eslint-plugin-eslint-comments: ^3.2.0
@@ -5918,26 +5878,26 @@ __metadata:
make-dir: ^4.0.0
markdownlint-cli: ^0.42.0
ncp: ^2.0.0
- nx: 19.5.2
+ nx: 20.0.0
prettier: 3.3.2
pretty-format: ^29.7.0
rimraf: ^5.0.5
semver: 7.6.2
tmp: ^0.2.1
tsx: "*"
- typescript: ">=4.8.4 <5.6.0"
+ typescript: ">=4.8.4 <5.7.0"
typescript-eslint: "workspace:^"
yargs: 17.7.2
languageName: unknown
linkType: soft
-"@typescript-eslint/typescript-estree@8.9.0, @typescript-eslint/typescript-estree@workspace:*, @typescript-eslint/typescript-estree@workspace:^, @typescript-eslint/typescript-estree@workspace:packages/typescript-estree":
+"@typescript-eslint/typescript-estree@8.10.0, @typescript-eslint/typescript-estree@workspace:*, @typescript-eslint/typescript-estree@workspace:^, @typescript-eslint/typescript-estree@workspace:packages/typescript-estree":
version: 0.0.0-use.local
resolution: "@typescript-eslint/typescript-estree@workspace:packages/typescript-estree"
dependencies:
"@jest/types": 29.6.3
- "@typescript-eslint/types": 8.9.0
- "@typescript-eslint/visitor-keys": 8.9.0
+ "@typescript-eslint/types": 8.10.0
+ "@typescript-eslint/visitor-keys": 8.10.0
debug: ^4.3.4
fast-glob: ^3.3.2
glob: "*"
@@ -5974,14 +5934,14 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/utils@8.9.0, @typescript-eslint/utils@^8.8.0, @typescript-eslint/utils@workspace:*, @typescript-eslint/utils@workspace:^, @typescript-eslint/utils@workspace:packages/utils":
+"@typescript-eslint/utils@8.10.0, @typescript-eslint/utils@^8.8.0, @typescript-eslint/utils@workspace:*, @typescript-eslint/utils@workspace:^, @typescript-eslint/utils@workspace:packages/utils":
version: 0.0.0-use.local
resolution: "@typescript-eslint/utils@workspace:packages/utils"
dependencies:
"@eslint-community/eslint-utils": ^4.4.0
- "@typescript-eslint/scope-manager": 8.9.0
- "@typescript-eslint/types": 8.9.0
- "@typescript-eslint/typescript-estree": 8.9.0
+ "@typescript-eslint/scope-manager": 8.10.0
+ "@typescript-eslint/types": 8.10.0
+ "@typescript-eslint/typescript-estree": 8.10.0
downlevel-dts: "*"
jest: 29.7.0
prettier: ^3.2.5
@@ -6010,13 +5970,13 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/visitor-keys@8.9.0, @typescript-eslint/visitor-keys@workspace:*, @typescript-eslint/visitor-keys@workspace:packages/visitor-keys":
+"@typescript-eslint/visitor-keys@8.10.0, @typescript-eslint/visitor-keys@workspace:*, @typescript-eslint/visitor-keys@workspace:packages/visitor-keys":
version: 0.0.0-use.local
resolution: "@typescript-eslint/visitor-keys@workspace:packages/visitor-keys"
dependencies:
"@jest/types": 29.6.3
"@types/eslint-visitor-keys": "*"
- "@typescript-eslint/types": 8.9.0
+ "@typescript-eslint/types": 8.10.0
downlevel-dts: "*"
eslint-visitor-keys: ^3.4.3
jest: 29.7.0
@@ -6871,14 +6831,14 @@ __metadata:
languageName: node
linkType: hard
-"axios@npm:^1.6.0":
- version: 1.6.7
- resolution: "axios@npm:1.6.7"
+"axios@npm:^1.7.4":
+ version: 1.7.7
+ resolution: "axios@npm:1.7.7"
dependencies:
- follow-redirects: ^1.15.4
+ follow-redirects: ^1.15.6
form-data: ^4.0.0
proxy-from-env: ^1.1.0
- checksum: 87d4d429927d09942771f3b3a6c13580c183e31d7be0ee12f09be6d5655304996bb033d85e54be81606f4e89684df43be7bf52d14becb73a12727bf33298a082
+ checksum: 882d4fe0ec694a07c7f5c1f68205eb6dc5a62aecdb632cc7a4a3d0985188ce3030e0b277e1a8260ac3f194d314ae342117660a151fabffdc5081ca0b5a8b47fe
languageName: node
linkType: hard
@@ -8278,95 +8238,95 @@ __metadata:
languageName: node
linkType: hard
-"cspell-config-lib@npm:8.14.2":
- version: 8.14.2
- resolution: "cspell-config-lib@npm:8.14.2"
+"cspell-config-lib@npm:8.15.2":
+ version: 8.15.2
+ resolution: "cspell-config-lib@npm:8.15.2"
dependencies:
- "@cspell/cspell-types": 8.14.2
+ "@cspell/cspell-types": 8.15.2
comment-json: ^4.2.5
- yaml: ^2.5.0
- checksum: 52a62f67dbb9157a04a3ade540dc42e97ec18edf0188fe3954ad9bd59d6ad0530200b12d2054980074a0e12ceb31519724bb8d2af3cce22409b5bb3baab454ef
+ yaml: ^2.6.0
+ checksum: b57b7dc8bfffb6b39f3e79123185149e60c863a171be5e376aa8b53a5a8d0980dac6fc0dcb9e730f96ba057cd858cd2af9c834b35b25566e9ca7b5e9cddddacd
languageName: node
linkType: hard
-"cspell-dictionary@npm:8.14.2":
- version: 8.14.2
- resolution: "cspell-dictionary@npm:8.14.2"
+"cspell-dictionary@npm:8.15.2":
+ version: 8.15.2
+ resolution: "cspell-dictionary@npm:8.15.2"
dependencies:
- "@cspell/cspell-pipe": 8.14.2
- "@cspell/cspell-types": 8.14.2
- cspell-trie-lib: 8.14.2
+ "@cspell/cspell-pipe": 8.15.2
+ "@cspell/cspell-types": 8.15.2
+ cspell-trie-lib: 8.15.2
fast-equals: ^5.0.1
- checksum: 27da9642344fead86b787328a9dedaddc199562c14d04d1c8e1f57786f7adb253eab4af6432b01743237055085feec9c7cdad8a6d26cdeffaa0bbadc82de52c0
+ checksum: d3861e71f0fa40fc4ea252149edb772228c5938648eb91f890e6001f9e9036e1f4999b509b008b654f416320cce9c99cb0a701a339f51610a4313e33f1c543e5
languageName: node
linkType: hard
-"cspell-gitignore@npm:8.14.2":
- version: 8.14.2
- resolution: "cspell-gitignore@npm:8.14.2"
+"cspell-gitignore@npm:8.15.2":
+ version: 8.15.2
+ resolution: "cspell-gitignore@npm:8.15.2"
dependencies:
- "@cspell/url": 8.14.2
- cspell-glob: 8.14.2
- cspell-io: 8.14.2
+ "@cspell/url": 8.15.2
+ cspell-glob: 8.15.2
+ cspell-io: 8.15.2
find-up-simple: ^1.0.0
bin:
cspell-gitignore: bin.mjs
- checksum: 4b7b73f9144e504a94e442a9fb40c3a9a4b0e4c410984654f251f5b192af8ba6d8873259f39366ec466ba7733101970c64a665b26baf271bd6483defae061e0c
+ checksum: 561142862707f4c3b59da8aeb2f7d5563c74b27452186270dceeef92add15bebda8fe70c4f18362b0f4605afe0973cf32329c7bf3ec73ae967e3fde745887b25
languageName: node
linkType: hard
-"cspell-glob@npm:8.14.2":
- version: 8.14.2
- resolution: "cspell-glob@npm:8.14.2"
+"cspell-glob@npm:8.15.2":
+ version: 8.15.2
+ resolution: "cspell-glob@npm:8.15.2"
dependencies:
- "@cspell/url": 8.14.2
- micromatch: ^4.0.7
- checksum: dfcdf85d0445c3fbd327654d582106aee44e2826056ff41dec62b2f2ac786271fdd76c0b2c665d45f2bae3c2fd6d692c3d94ba1c56595d381755f12fa1da87b7
+ "@cspell/url": 8.15.2
+ micromatch: ^4.0.8
+ checksum: 12f82c7b84efb29f7da12027725939c6e7bf4787f82c609ac531084eb85568d004758eea46dc7b93d2aeaffbc9b2ba90957a79055dbaf7134d5a959b5c0e052f
languageName: node
linkType: hard
-"cspell-grammar@npm:8.14.2":
- version: 8.14.2
- resolution: "cspell-grammar@npm:8.14.2"
+"cspell-grammar@npm:8.15.2":
+ version: 8.15.2
+ resolution: "cspell-grammar@npm:8.15.2"
dependencies:
- "@cspell/cspell-pipe": 8.14.2
- "@cspell/cspell-types": 8.14.2
+ "@cspell/cspell-pipe": 8.15.2
+ "@cspell/cspell-types": 8.15.2
bin:
cspell-grammar: bin.mjs
- checksum: d5676b78bb8938b009dc4461316c48fe2670801232ce911cc209f8af79301a9896f8f4749dd75f2e4963f7ff6d62fda6d867836a81a5c0a0b02d1fdc5c76cbc7
+ checksum: f3c00726830aaa3863a1bd1a0e6a4ef1c3fb451d0196be0d3c931fbbb6019954f6dd674f6f83d08343461edcb5889806aa44f30446bf38f7bad3219f69b9796f
languageName: node
linkType: hard
-"cspell-io@npm:8.14.2":
- version: 8.14.2
- resolution: "cspell-io@npm:8.14.2"
+"cspell-io@npm:8.15.2":
+ version: 8.15.2
+ resolution: "cspell-io@npm:8.15.2"
dependencies:
- "@cspell/cspell-service-bus": 8.14.2
- "@cspell/url": 8.14.2
- checksum: a8e95eda64a6cd47c9224471b7fca63da0b18310a50f623607d1a5d99773e97431594a27e952ad713771c7d1fc51a9ae94c468360560b746ef467325ff8d4248
+ "@cspell/cspell-service-bus": 8.15.2
+ "@cspell/url": 8.15.2
+ checksum: 87f8fb9873148bf84e1a22212e6793385677df3d6d10ae52cc97ce48382d36a7ff8255f611cd2158c3401d6e68a7970812a06fde32b45bfdd7e784765d25135d
languageName: node
linkType: hard
-"cspell-lib@npm:8.14.2":
- version: 8.14.2
- resolution: "cspell-lib@npm:8.14.2"
+"cspell-lib@npm:8.15.2":
+ version: 8.15.2
+ resolution: "cspell-lib@npm:8.15.2"
dependencies:
- "@cspell/cspell-bundled-dicts": 8.14.2
- "@cspell/cspell-pipe": 8.14.2
- "@cspell/cspell-resolver": 8.14.2
- "@cspell/cspell-types": 8.14.2
- "@cspell/dynamic-import": 8.14.2
- "@cspell/filetypes": 8.14.2
- "@cspell/strong-weak-map": 8.14.2
- "@cspell/url": 8.14.2
+ "@cspell/cspell-bundled-dicts": 8.15.2
+ "@cspell/cspell-pipe": 8.15.2
+ "@cspell/cspell-resolver": 8.15.2
+ "@cspell/cspell-types": 8.15.2
+ "@cspell/dynamic-import": 8.15.2
+ "@cspell/filetypes": 8.15.2
+ "@cspell/strong-weak-map": 8.15.2
+ "@cspell/url": 8.15.2
clear-module: ^4.1.2
comment-json: ^4.2.5
- cspell-config-lib: 8.14.2
- cspell-dictionary: 8.14.2
- cspell-glob: 8.14.2
- cspell-grammar: 8.14.2
- cspell-io: 8.14.2
- cspell-trie-lib: 8.14.2
+ cspell-config-lib: 8.15.2
+ cspell-dictionary: 8.15.2
+ cspell-glob: 8.15.2
+ cspell-grammar: 8.15.2
+ cspell-io: 8.15.2
+ cspell-trie-lib: 8.15.2
env-paths: ^3.0.0
fast-equals: ^5.0.1
gensequence: ^7.0.0
@@ -8375,48 +8335,47 @@ __metadata:
vscode-languageserver-textdocument: ^1.0.12
vscode-uri: ^3.0.8
xdg-basedir: ^5.1.0
- checksum: b8dcf4c44b5040a9a3fa2df78a5cf660fff229543dac1a03713bf69bdeadfb55afa11ef20a157ca3320989973cddfae155560663c792f12355d7399669b45de8
+ checksum: eb76edca89c5c58d6b345bc83969e1d85d78a7fe846ab6c1f856108ec9d7d01cf2bf4ce23ad60f41e4e20715dcc685da6466ecfed8d1e0bc6089ec17a1c35bc2
languageName: node
linkType: hard
-"cspell-trie-lib@npm:8.14.2":
- version: 8.14.2
- resolution: "cspell-trie-lib@npm:8.14.2"
+"cspell-trie-lib@npm:8.15.2":
+ version: 8.15.2
+ resolution: "cspell-trie-lib@npm:8.15.2"
dependencies:
- "@cspell/cspell-pipe": 8.14.2
- "@cspell/cspell-types": 8.14.2
+ "@cspell/cspell-pipe": 8.15.2
+ "@cspell/cspell-types": 8.15.2
gensequence: ^7.0.0
- checksum: 3c97cf60c81df0a88409a2d6069b843a04326cdf27e9aa7c352ef5e4e2e4ee7cc46d689966487dddb80bdf3cfdbfddce4def9d811b8c27b9019e980aa8615ef3
+ checksum: 14ac09a997bd403eb17f9ef7791ac839439fa1b398db20aaad51a70f652c1986542d828db01d7619e393592f291d1fe1c6436abad8a1e3f87c9535248297cafe
languageName: node
linkType: hard
-"cspell@npm:^8.6.1":
- version: 8.14.2
- resolution: "cspell@npm:8.14.2"
+"cspell@npm:^8.15.2":
+ version: 8.15.2
+ resolution: "cspell@npm:8.15.2"
dependencies:
- "@cspell/cspell-json-reporter": 8.14.2
- "@cspell/cspell-pipe": 8.14.2
- "@cspell/cspell-types": 8.14.2
- "@cspell/dynamic-import": 8.14.2
- "@cspell/url": 8.14.2
+ "@cspell/cspell-json-reporter": 8.15.2
+ "@cspell/cspell-pipe": 8.15.2
+ "@cspell/cspell-types": 8.15.2
+ "@cspell/dynamic-import": 8.15.2
+ "@cspell/url": 8.15.2
chalk: ^5.3.0
chalk-template: ^1.1.0
commander: ^12.1.0
- cspell-dictionary: 8.14.2
- cspell-gitignore: 8.14.2
- cspell-glob: 8.14.2
- cspell-io: 8.14.2
- cspell-lib: 8.14.2
- fast-glob: ^3.3.2
+ cspell-dictionary: 8.15.2
+ cspell-gitignore: 8.15.2
+ cspell-glob: 8.15.2
+ cspell-io: 8.15.2
+ cspell-lib: 8.15.2
fast-json-stable-stringify: ^2.1.0
- file-entry-cache: ^9.0.0
+ file-entry-cache: ^9.1.0
get-stdin: ^9.0.0
semver: ^7.6.3
- strip-ansi: ^7.1.0
+ tinyglobby: ^0.2.9
bin:
cspell: bin.mjs
cspell-esm: bin.mjs
- checksum: b069bdf3b6dd1362b2a6cc2cde8ac9f8517476996bb320dc18ef6ae8f05b3465d43899bb975a977b646e33d357feaba2b8260980512250fd72fe8e006ce225e5
+ checksum: 8d9846635b6577e5132ae663e422c39ba1c848307a699bc1bea1f89308274c4edfbc3559dbe1fa3c87aff583131222738f44edf78a586a72ff64695090352a25
languageName: node
linkType: hard
@@ -9180,7 +9139,7 @@ __metadata:
languageName: node
linkType: hard
-"duplexer@npm:^0.1.1, duplexer@npm:^0.1.2":
+"duplexer@npm:^0.1.2":
version: 0.1.2
resolution: "duplexer@npm:0.1.2"
checksum: 62ba61a830c56801db28ff6305c7d289b6dc9f859054e8c982abd8ee0b0a14d2e9a8e7d086ffee12e868d43e2bbe8a964be55ddbd8c8957714c87373c7a4f9b0
@@ -10509,6 +10468,18 @@ __metadata:
languageName: node
linkType: hard
+"fdir@npm:^6.4.0":
+ version: 6.4.0
+ resolution: "fdir@npm:6.4.0"
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+ checksum: 63b4dc592c662d0c4703ffcae1e3ad15901c0b9f64e742dff1bbc74f58029b1a43f4d05b0ab75503a0b9fc7a616d8a755cd56ea680504b6a1e87249ec79b43f3
+ languageName: node
+ linkType: hard
+
"feed@npm:^4.2.2":
version: 4.2.2
resolution: "feed@npm:4.2.2"
@@ -10545,6 +10516,15 @@ __metadata:
languageName: node
linkType: hard
+"file-entry-cache@npm:^9.1.0":
+ version: 9.1.0
+ resolution: "file-entry-cache@npm:9.1.0"
+ dependencies:
+ flat-cache: ^5.0.0
+ checksum: 9f2345505677fa83767c55aa3667c52b62c409bd6f2b5408999d635f1d8cc6ecab868f0a5fdfb2fadf64a0d2e92374c02ddd0c9eaea9651cfbcead56fd640099
+ languageName: node
+ linkType: hard
+
"file-loader@npm:^6.2.0":
version: 6.2.0
resolution: "file-loader@npm:6.2.0"
@@ -10689,7 +10669,7 @@ __metadata:
languageName: node
linkType: hard
-"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.15.4":
+"follow-redirects@npm:^1.0.0":
version: 1.15.5
resolution: "follow-redirects@npm:1.15.5"
peerDependenciesMeta:
@@ -10699,6 +10679,16 @@ __metadata:
languageName: node
linkType: hard
+"follow-redirects@npm:^1.15.6":
+ version: 1.15.9
+ resolution: "follow-redirects@npm:1.15.9"
+ peerDependenciesMeta:
+ debug:
+ optional: true
+ checksum: 859e2bacc7a54506f2bf9aacb10d165df78c8c1b0ceb8023f966621b233717dab56e8d08baadc3ad3b9db58af290413d585c999694b7c146aaf2616340c3d2a6
+ languageName: node
+ linkType: hard
+
"for-each@npm:^0.3.3":
version: 0.3.3
resolution: "for-each@npm:0.3.3"
@@ -10811,7 +10801,7 @@ __metadata:
languageName: node
linkType: hard
-"fs-extra@npm:^11.1.0, fs-extra@npm:^11.1.1, fs-extra@npm:^11.2.0":
+"fs-extra@npm:^11.1.1, fs-extra@npm:^11.2.0":
version: 11.2.0
resolution: "fs-extra@npm:11.2.0"
dependencies:
@@ -13632,6 +13622,13 @@ __metadata:
languageName: node
linkType: hard
+"lines-and-columns@npm:2.0.3":
+ version: 2.0.3
+ resolution: "lines-and-columns@npm:2.0.3"
+ checksum: 5955363dfd7d3d7c476d002eb47944dbe0310d57959e2112dce004c0dc76cecfd479cf8c098fd479ff344acdf04ee0e82b455462a26492231ac152f6c48d17a1
+ languageName: node
+ linkType: hard
+
"lines-and-columns@npm:^1.1.6":
version: 1.2.4
resolution: "lines-and-columns@npm:1.2.4"
@@ -13639,13 +13636,6 @@ __metadata:
languageName: node
linkType: hard
-"lines-and-columns@npm:~2.0.3":
- version: 2.0.3
- resolution: "lines-and-columns@npm:2.0.3"
- checksum: 5955363dfd7d3d7c476d002eb47944dbe0310d57959e2112dce004c0dc76cecfd479cf8c098fd479ff344acdf04ee0e82b455462a26492231ac152f6c48d17a1
- languageName: node
- linkType: hard
-
"linkify-it@npm:^5.0.0":
version: 5.0.0
resolution: "linkify-it@npm:5.0.0"
@@ -14908,7 +14898,7 @@ __metadata:
languageName: node
linkType: hard
-"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5, micromatch@npm:^4.0.7, micromatch@npm:^4.0.8, micromatch@npm:~4.0.7":
+"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5, micromatch@npm:^4.0.8, micromatch@npm:~4.0.7":
version: 4.0.8
resolution: "micromatch@npm:4.0.8"
dependencies:
@@ -15523,26 +15513,25 @@ __metadata:
languageName: node
linkType: hard
-"nx@npm:19.5.2":
- version: 19.5.2
- resolution: "nx@npm:19.5.2"
+"nx@npm:20.0.0":
+ version: 20.0.0
+ resolution: "nx@npm:20.0.0"
dependencies:
"@napi-rs/wasm-runtime": 0.2.4
- "@nrwl/tao": 19.5.2
- "@nx/nx-darwin-arm64": 19.5.2
- "@nx/nx-darwin-x64": 19.5.2
- "@nx/nx-freebsd-x64": 19.5.2
- "@nx/nx-linux-arm-gnueabihf": 19.5.2
- "@nx/nx-linux-arm64-gnu": 19.5.2
- "@nx/nx-linux-arm64-musl": 19.5.2
- "@nx/nx-linux-x64-gnu": 19.5.2
- "@nx/nx-linux-x64-musl": 19.5.2
- "@nx/nx-win32-arm64-msvc": 19.5.2
- "@nx/nx-win32-x64-msvc": 19.5.2
+ "@nx/nx-darwin-arm64": 20.0.0
+ "@nx/nx-darwin-x64": 20.0.0
+ "@nx/nx-freebsd-x64": 20.0.0
+ "@nx/nx-linux-arm-gnueabihf": 20.0.0
+ "@nx/nx-linux-arm64-gnu": 20.0.0
+ "@nx/nx-linux-arm64-musl": 20.0.0
+ "@nx/nx-linux-x64-gnu": 20.0.0
+ "@nx/nx-linux-x64-musl": 20.0.0
+ "@nx/nx-win32-arm64-msvc": 20.0.0
+ "@nx/nx-win32-x64-msvc": 20.0.0
"@yarnpkg/lockfile": ^1.1.0
"@yarnpkg/parsers": 3.0.0-rc.46
"@zkochan/js-yaml": 0.0.7
- axios: ^1.6.0
+ axios: ^1.7.4
chalk: ^4.1.0
cli-cursor: 3.1.0
cli-spinners: 2.6.1
@@ -15553,11 +15542,10 @@ __metadata:
figures: 3.2.0
flat: ^5.0.2
front-matter: ^4.0.2
- fs-extra: ^11.1.0
ignore: ^5.0.4
jest-diff: ^29.4.1
jsonc-parser: 3.2.0
- lines-and-columns: ~2.0.3
+ lines-and-columns: 2.0.3
minimatch: 9.0.3
node-machine-id: 1.1.12
npm-run-path: ^4.0.1
@@ -15565,7 +15553,6 @@ __metadata:
ora: 5.3.0
semver: ^7.5.3
string-width: ^4.2.3
- strong-log-transformer: ^2.1.0
tar-stream: ~2.2.0
tmp: ~0.2.1
tsconfig-paths: ^4.1.2
@@ -15604,7 +15591,7 @@ __metadata:
bin:
nx: bin/nx.js
nx-cloud: bin/nx-cloud.js
- checksum: 263e52b3512b50022aec740d46a9837b393b6d38a92cea9358d9286e18f088d082943ba730cc5fcba49d5e31c494a3277e68574b508ec0b360647234e0bca7f9
+ checksum: c9e19f4196c59c583d76d0034db349b43471c14690757ed67c8a5b2616f00dcb6f6f4bc83a8209cd0691789807deb4dca6dcce27621852d693e28161a6747e4b
languageName: node
linkType: hard
@@ -16162,7 +16149,7 @@ __metadata:
languageName: node
linkType: hard
-"picomatch@npm:^4.0.1":
+"picomatch@npm:^4.0.1, picomatch@npm:^4.0.2":
version: 4.0.2
resolution: "picomatch@npm:4.0.2"
checksum: a7a5188c954f82c6585720e9143297ccd0e35ad8072231608086ca950bee672d51b0ef676254af0788205e59bd4e4deb4e7708769226bed725bf13370a7d1464
@@ -16702,7 +16689,7 @@ __metadata:
languageName: node
linkType: hard
-"prettier@npm:3.3.2, prettier@npm:^3.2.5":
+"prettier@npm:3.3.2":
version: 3.3.2
resolution: "prettier@npm:3.3.2"
bin:
@@ -18879,19 +18866,6 @@ __metadata:
languageName: node
linkType: hard
-"strong-log-transformer@npm:^2.1.0":
- version: 2.1.0
- resolution: "strong-log-transformer@npm:2.1.0"
- dependencies:
- duplexer: ^0.1.1
- minimist: ^1.2.0
- through: ^2.3.4
- bin:
- sl-log-transformer: bin/sl-log-transformer.js
- checksum: abf9a4ac143118f26c3a0771b204b02f5cf4fa80384ae158f25e02bfbff761038accc44a7f65869ccd5a5995a7f2c16b1466b83149644ba6cecd3072a8927297
- languageName: node
- linkType: hard
-
"style-to-object@npm:^0.4.0":
version: 0.4.4
resolution: "style-to-object@npm:0.4.4"
@@ -19212,13 +19186,6 @@ __metadata:
languageName: node
linkType: hard
-"through@npm:^2.3.4":
- version: 2.3.8
- resolution: "through@npm:2.3.8"
- checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd
- languageName: node
- linkType: hard
-
"thunky@npm:^1.0.2":
version: 1.1.0
resolution: "thunky@npm:1.1.0"
@@ -19240,6 +19207,16 @@ __metadata:
languageName: node
linkType: hard
+"tinyglobby@npm:^0.2.9":
+ version: 0.2.9
+ resolution: "tinyglobby@npm:0.2.9"
+ dependencies:
+ fdir: ^6.4.0
+ picomatch: ^4.0.2
+ checksum: 6fa652880c963324dbb66ee39ae9e8d809bec8d9ac4f100ee420d31df12b3d1c4bb438684ac8ade040a6916131511495db2cf3259bb067cd0af27ba1552d5efc
+ languageName: node
+ linkType: hard
+
"title-case@npm:^3.0.3":
version: 3.0.3
resolution: "title-case@npm:3.0.3"
@@ -19623,9 +19600,9 @@ __metadata:
resolution: "typescript-eslint@workspace:packages/typescript-eslint"
dependencies:
"@jest/types": 29.6.3
- "@typescript-eslint/eslint-plugin": 8.9.0
- "@typescript-eslint/parser": 8.9.0
- "@typescript-eslint/utils": 8.9.0
+ "@typescript-eslint/eslint-plugin": 8.10.0
+ "@typescript-eslint/parser": 8.10.0
+ "@typescript-eslint/utils": 8.10.0
downlevel-dts: "*"
jest: 29.7.0
prettier: ^3.2.5
@@ -19637,23 +19614,23 @@ __metadata:
languageName: unknown
linkType: soft
-"typescript@npm:5.5.2":
- version: 5.5.2
- resolution: "typescript@npm:5.5.2"
+"typescript@npm:5.6.2":
+ version: 5.6.2
+ resolution: "typescript@npm:5.6.2"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
- checksum: 9c5a7982dadcb2d38d129c575dd38645ae11588ae0d4a12852fb04482bbc5a1660b2371e48fd5b33b6b605cc57cefe777670054546856945a05e77bd22c8c2cd
+ checksum: 48777e1dabd9044519f56cd012b0296e3b72bafe12b7e8e34222751d45c67e0eba5387ecdaa6c14a53871a29361127798df6dc8d1d35643a0a47cb0b1c65a33a
languageName: node
linkType: hard
-"typescript@patch:typescript@npm%3A5.5.2#~builtin":
- version: 5.5.2
- resolution: "typescript@patch:typescript@npm%3A5.5.2#~builtin::version=5.5.2&hash=b45daf"
+"typescript@patch:typescript@npm%3A5.6.2#~builtin":
+ version: 5.6.2
+ resolution: "typescript@patch:typescript@npm%3A5.6.2#~builtin::version=5.6.2&hash=b45daf"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
- checksum: 9d89bac0de650e15d6846485f238d1e65f1013f2c260d9e53e86a1da6ecf8109d9fad9402575c5c36a6592dc5d4370db090e12971c8630ae84453654baabb6b4
+ checksum: c084ee1ab865f108c787e6233a5f63c126c482c0c8e87ec998ac5288a2ad54b603e1ea8b8b272355823b833eb31b9fabb99e8c6152283e1cb47e3a76bd6faf6c
languageName: node
linkType: hard
@@ -20859,12 +20836,12 @@ __metadata:
languageName: node
linkType: hard
-"yaml@npm:^2.5.0":
- version: 2.5.0
- resolution: "yaml@npm:2.5.0"
+"yaml@npm:^2.6.0":
+ version: 2.6.0
+ resolution: "yaml@npm:2.6.0"
bin:
yaml: bin.mjs
- checksum: a116dca5c61641d9bf1f1016c6e71daeb1ed4915f5930ed237d45ab7a605aa5d92c332ff64879a6cd088cabede008c778774e3060ffeb4cd617d28088e4b2d83
+ checksum: e5e74fd75e01bde2c09333d529af9fbb5928c5f7f01bfdefdcb2bf753d4ef489a45cab4deac01c9448f55ca27e691612b81fe3c3a59bb8cb5b0069da0f92cf0b
languageName: node
linkType: hard