diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index 1a99742cfedd8..0000000000000
--- a/.eslintignore
+++ /dev/null
@@ -1 +0,0 @@
-# Don't put anything in here, put it in .eslintignore.root or a project's .eslintignore.
diff --git a/.eslintignore.root b/.eslintignore.root
index f899bfd9d3b79..b9017d477d2c0 100644
--- a/.eslintignore.root
+++ b/.eslintignore.root
@@ -1,12 +1,10 @@
-# Named ".eslintignore.root" rather than ".eslintignore" because there's no way to stop eslint from reading this after processing ignorePatterns in .eslintrc.js. Sigh.
+# Our standard eslint config reads .gitignore and .eslintignore to determine what to ignore.
+# This file is named ".eslintignore.root" rather than ".eslintignore" because eslint, despite not using it, still complains if it exists.
# Stuff not to lint in general.
*.min.js
**/changelog/
-# Storybook files
-**/@(storybook|stories)/**/*.js
-
# Ignored by default, but we should check it
!.github/
!.prettierrc.js
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644
index 7b15a5f9a750c..0000000000000
--- a/.eslintrc.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// Do not extend this file anymore! Extend tools/js-tools/eslintrc/base.js instead.
-const loadIgnorePatterns = require( './tools/js-tools/load-eslint-ignore.js' );
-/**
- * @type {import("eslint").Linter.Config}
- */
-
-module.exports = {
- root: true,
- extends: [ './tools/js-tools/eslintrc/base.js' ],
- ignorePatterns: loadIgnorePatterns( __dirname ),
-};
diff --git a/.gitattributes b/.gitattributes
index 6d0b766d93f94..79968a2650fa8 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -17,8 +17,9 @@
.gitkeep production-exclude
# We don't need these files in any production mirror.
-.eslintrc.js production-exclude
-jsconfig.json production-exclude
-tsconfig.json production-exclude
-**/.phan/** production-exclude
+eslint.config.mjs production-exclude
+.eslintignore production-exclude
+jsconfig.json production-exclude
+tsconfig.json production-exclude
+**/.phan/** production-exclude
**/.w.org-assets/** production-exclude
diff --git a/.github/.eslintrc.js b/.github/.eslintrc.js
deleted file mode 100644
index 5f7bbae324097..0000000000000
--- a/.github/.eslintrc.js
+++ /dev/null
@@ -1,9 +0,0 @@
-module.exports = {
- env: {
- node: true,
- },
- rules: {
- 'no-console': 'off',
- 'n/no-process-exit': 'off',
- },
-};
diff --git a/.github/eslint.config.mjs b/.github/eslint.config.mjs
new file mode 100644
index 0000000000000..5ad3c9460cc3f
--- /dev/null
+++ b/.github/eslint.config.mjs
@@ -0,0 +1,11 @@
+import makeBaseConfig from 'jetpack-js-tools/eslintrc/base.mjs';
+
+export default [
+ ...makeBaseConfig( import.meta.url, { envs: [ 'node' ] } ),
+ {
+ rules: {
+ 'no-console': 'off',
+ 'n/no-process-exit': 'off',
+ },
+ },
+];
diff --git a/.github/files/lint-project-structure.sh b/.github/files/lint-project-structure.sh
index 923455db849c6..175f7e6c4575f 100755
--- a/.github/files/lint-project-structure.sh
+++ b/.github/files/lint-project-structure.sh
@@ -222,14 +222,6 @@ for PROJECT in projects/*/*; do
fi
fi
- # - If a project uses react, it should include the react linting rules too.
- if [[ -e "$PROJECT/package.json" ]] && jq -e '.dependencies.react // .devDependencies.react' "$PROJECT/package.json" >/dev/null && ! git grep eslintrc/react "$PROJECT"/.eslintrc.* &>/dev/null; then
- EXIT=1
- TMP=$( git ls-files "$PROJECT"/.eslintrc.* | head -n 1 ) || true
- [[ -n "$TMP" ]] && TMP=" file=$TMP"
- echo "::error${TMP}::Project $SLUG appears to use React but does not extend jetpack-js-tools/eslintrc/react in its eslint config. Please add that."
- fi
-
# - composer.json must exist.
if [[ ! -e "$PROJECT/composer.json" ]]; then
EXIT=1
@@ -520,7 +512,7 @@ done
# - Text domains in phpcs config should match composer.json.
debug "Checking package textdomain usage in phpcs config"
-for FILE in $(git -c core.quotepath=off ls-files 'projects/packages/**/.phpcs.dir.xml'); do
+for FILE in $(git -c core.quotepath=off ls-files 'projects/*/**/.phpcs.dir.xml'); do
DOM="$(php -r '$doc = new DOMDocument(); $doc->load( $argv[1] ); $xpath = new DOMXPath( $doc ); echo $xpath->evaluate( "string(//rule[@ref=\"WordPress.WP.I18n\"]/properties/property[@name=\"text_domain\"]/element/@value)" );' "$FILE")"
[[ -z "$DOM" ]] && continue
DIR="$FILE"
@@ -528,7 +520,13 @@ for FILE in $(git -c core.quotepath=off ls-files 'projects/packages/**/.phpcs.di
DIR="${DIR%/*}"
done
SLUG="${DIR#projects/}"
- DOM2="$(jq -r '.extra.textdomain // ""' "$DIR/composer.json")"
+ if [[ "$SLUG" == plugins/* ]]; then
+ WHAT='`.extra.wp-plugin-slug` or `.extra.beta-plugin-slug`'
+ DOM2="$(jq -r '.extra["wp-plugin-slug"] // .extra["beta-plugin-slug"] // ""' "$DIR/composer.json")"
+ else
+ WHAT='`.extra.textdomain`'
+ DOM2="$(jq -r '.extra.textdomain // ""' "$DIR/composer.json")"
+ fi
if [[ "$DOM" != "$DOM2" ]]; then
EXIT=1
LINE=$(grep --line-number --max-count=1 'name="text_domain"' "$FILE" || true)
@@ -536,38 +534,13 @@ for FILE in $(git -c core.quotepath=off ls-files 'projects/packages/**/.phpcs.di
LINE=",line=${LINE%%:*}"
fi
if [[ -z "$DOM2" ]]; then
- echo "::error file=$FILE$LINE::PHPCS config sets textdomain \"$DOM\", but $SLUG's composer.json does not set \`.extra.textdomain\`."
+ echo "::error file=$FILE$LINE::PHPCS config sets textdomain \"$DOM\", but $SLUG's composer.json does not set $WHAT."
else
echo "::error file=$FILE$LINE::PHPCS config sets textdomain \"$DOM\", but $SLUG's composer.json sets domain \"$DOM2\"."
fi
fi
done
-# - Text domains in eslint config should match composer.json.
-debug "Checking package textdomain usage in eslint config"
-for FILE in $(git -c core.quotepath=off ls-files 'projects/packages/**/.eslintrc.js' 'projects/packages/**/.eslintrc.cjs'); do
- DOM="$(node -e 'const x = require( `./${ process.argv[1] }` ); console.log( x.rules?.["@wordpress/i18n-text-domain"]?.[1]?.allowedTextDomain ?? "" );' "$FILE")"
- [[ -z "$DOM" ]] && continue
- DIR="$FILE"
- while ! [[ "$DIR" =~ ^projects/[^/]*/[^/]*$ ]]; do
- DIR="${DIR%/*}"
- done
- SLUG="${DIR#projects/}"
- DOM2="$(jq -r '.extra.textdomain // ""' "$DIR/composer.json")"
- if [[ "$DOM" != "$DOM2" ]]; then
- EXIT=1
- LINE=$(grep --line-number --max-count=1 'allowedTextDomain' "$FILE" || true)
- if [[ -n "$LINE" ]]; then
- LINE=",line=${LINE%%:*}"
- fi
- if [[ -z "$DOM2" ]]; then
- echo "::error file=$FILE$LINE::Eslint config sets textdomain \"$DOM\", but $SLUG's composer.json does not set \`.extra.textdomain\`."
- else
- echo "::error file=$FILE$LINE::Eslint config sets textdomain \"$DOM\", but $SLUG's composer.json sets domain \"$DOM2\"."
- fi
- fi
-done
-
# - Text domains in block.json should match composer.json.
debug "Checking textdomain usage in block.json"
for FILE in $(git -c core.quotepath=off ls-files 'projects/packages/**/block.json' 'projects/plugins/**/block.json'); do
@@ -580,8 +553,10 @@ for FILE in $(git -c core.quotepath=off ls-files 'projects/packages/**/block.jso
done
SLUG="${DIR#projects/}"
if [[ "$SLUG" == plugins/* ]]; then
- DOM2="$(jq -r '.extra["wp-plugin-slug"] // .extra["wp-theme-slug"] // ""' "$DIR/composer.json")"
+ WHAT='`.extra.wp-plugin-slug` or `.extra.beta-plugin-slug`'
+ DOM2="$(jq -r '.extra["wp-plugin-slug"] // .extra["beta-plugin-slug"] // ""' "$DIR/composer.json")"
else
+ WHAT='`.extra.textdomain`'
DOM2="$(jq -r '.extra.textdomain // ""' "$DIR/composer.json")"
fi
if [[ "$DOM" != "$DOM2" ]]; then
@@ -591,7 +566,7 @@ for FILE in $(git -c core.quotepath=off ls-files 'projects/packages/**/block.jso
LINE=",line=${LINE%%:*}"
fi
if [[ -z "$DOM2" ]]; then
- echo "::error file=$FILE$LINE::block.json sets textdomain \"$DOM\", but $SLUG's composer.json does not set \`.extra.textdomain\`."
+ echo "::error file=$FILE$LINE::block.json sets textdomain \"$DOM\", but $SLUG's composer.json does not set $WHAT."
else
echo "::error file=$FILE$LINE::block.json sets textdomain \"$DOM\", but $SLUG's composer.json sets domain \"$DOM2\"."
fi
diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml
index 6321df91924af..5e5b2e6b0b60c 100644
--- a/.github/workflows/linting.yml
+++ b/.github/workflows/linting.yml
@@ -117,9 +117,9 @@ jobs:
- 'pnpm-lock.yaml'
- '.eslintignore'
- '.eslintignore.root'
- - '.eslintrc.*'
+ - 'eslint.config.*'
- '**/.eslintignore'
- - '**/.eslintrc.*'
+ - '**/eslint.config.*'
# If the excludelist changed, run to ensure newly non-excluded files pass.
- 'tools/eslint-excludelist.json'
misc_excludelist:
diff --git a/.pnpmfile.cjs b/.pnpmfile.cjs
index 4173d635ebfcb..424998f096eea 100644
--- a/.pnpmfile.cjs
+++ b/.pnpmfile.cjs
@@ -55,6 +55,11 @@ function fixDeps( pkg ) {
pkg.peerDependencies[ dep ] = ver.replace( /^\^?/, '>=' );
}
}
+
+ // Doesn't really need these at all with eslint 9 and our config.
+ pkg.peerDependenciesMeta ??= {};
+ pkg.peerDependenciesMeta[ '@typescript-eslint/eslint-plugin' ] = { optional: true };
+ pkg.peerDependenciesMeta[ '@typescript-eslint/parser' ] = { optional: true };
}
// Unnecessarily explicit deps. I don't think we really even need @wordpress/babel-preset-default at all.
diff --git a/docs/development-environment.md b/docs/development-environment.md
index bb939ef5d6f02..354e4de39f45f 100644
--- a/docs/development-environment.md
+++ b/docs/development-environment.md
@@ -364,7 +364,7 @@ To execute them in your local environment, you can use the following commands.
We strongly recommend that you install tools to review your code in your IDE. It will make it easier for you to notice any missing documentation or coding standards you should respect. Most IDEs display warnings and notices inside the editor, making it even easier.
- Jetpack's custom Code Sniffer ruleset is located at `./projects/packages/codesniffer/Jetpack/ruleset.xml`. Depending on your IDE, you can use this path or you may need to use `.phpcs.xml.dist` in the monorepo root.
-- For JavaScript, we recommend installing ESLint. Most IDEs come with an ESLint plugin that you can use. Jetpack includes a `.eslintrc.js` file that defines our coding standards.
+- For JavaScript, we recommend installing ESLint. Most IDEs come with an ESLint plugin that you can use. Jetpack includes a `eslint.config.mjs` file that defines our coding standards.
## Linting
diff --git a/docs/monorepo.md b/docs/monorepo.md
index ccb76d833e5a2..99214f513a8b6 100644
--- a/docs/monorepo.md
+++ b/docs/monorepo.md
@@ -195,17 +195,7 @@ The following environment variables are available for all tests:
We use eslint and phpcs to lint JavaScript and PHP code. Projects should comply with the [coding standards](development-environment.md#coding-standards) enforced by these tools.
-* Projects may include `.eslintrc.js` to adjust eslint configuration as necessary, but try to keep to the spirit of it.
-
- Note we're using something of a hack to get eslint to read ignore rules from `.gitignore` and per-directory `.eslintignore` files.
- Any eslintrc that does `root: true` or an `extends` that extends from an eslintrc that includes the hack will have to do like
- ```js
- const loadIgnorePatterns = require( 'jetpack-js-tools/load-eslint-ignore.js' );
- module.exports = {
- // Whatever stuff, including `root: true` or `extends`.
- ignorePatterns: loadIgnorePatterns( __dirname ),
- };
- ```
+* Projects may include `eslint.config.mjs` to adjust eslint configuration as necessary, but try to keep to the spirit of it. Configurations should generally start with `...makeBaseConfig( import.meta.url )` (imported from `jetpack-js-tools/eslintrc/base.mjs`) with any appropriate options, and override from there.
* We're using a fork of phpcs and a custom filter that adds support for per-directory configuration (`.phpcs.dir.xml`) and use of `.gitignore` and `.phpcsignore` files. Again, try to keep to the spirit of things.
### Static Analysis
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 0000000000000..c2f18e5a4c77b
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,4 @@
+import autoProjects from 'jetpack-js-tools/eslintrc/auto-projects.mjs';
+import makeBaseConfig from 'jetpack-js-tools/eslintrc/base.mjs';
+
+export default [ ...makeBaseConfig( import.meta.url ), ...autoProjects ];
diff --git a/package.json b/package.json
index 347afccb62110..605f3c28d9302 100644
--- a/package.json
+++ b/package.json
@@ -17,8 +17,8 @@
"cli-setup": "pnpm install && jetpack cli link",
"cli-unlink": "jetpack cli unlink",
"lint": "pnpm run lint-file .",
- "lint-changed": "eslint-changed --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.svelte --git",
- "lint-file": "eslint --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.svelte",
+ "lint-changed": "eslint-changed --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.svelte --eslint-options flags='[\"unstable_config_lookup_from_file\"]' --git",
+ "lint-file": "eslint --flag unstable_config_lookup_from_file",
"lint-required": "ESLINT_IGNORE_REQUIRED=1 pnpm run lint --max-warnings=0",
"php:autofix": "composer phpcs:fix",
"php:compatibility": "composer phpcs:compatibility",
@@ -28,7 +28,7 @@
"version-packages": "bash ./tools/version-packages.sh"
},
"devDependencies": {
- "eslint": "8.57.1",
+ "eslint": "9.16.0",
"husky": "8.0.3",
"jetpack-cli": "workspace:*",
"jetpack-js-tools": "workspace:*"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 875a95a7613cf..57a36196e0416 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4,15 +4,15 @@ settings:
autoInstallPeers: false
excludeLinksFromLockfile: false
-pnpmfileChecksum: 6marfmkr2lst65l77sijt7okgq
+pnpmfileChecksum: kmseazxfbymwdp5ie53bnph5mq
importers:
.:
devDependencies:
eslint:
- specifier: 8.57.1
- version: 8.57.1
+ specifier: 9.16.0
+ version: 9.16.0
husky:
specifier: 8.0.3
version: 8.0.3
@@ -699,11 +699,11 @@ importers:
specifier: 6.13.0
version: 6.13.0
eslint:
- specifier: 8.57.1
- version: 8.57.1
+ specifier: 9.16.0
+ version: 9.16.0
eslint-plugin-es-x:
specifier: 7.8.0
- version: 7.8.0(eslint@8.57.1)
+ version: 7.8.0(eslint@9.16.0)
globals:
specifier: 15.4.0
version: 15.4.0
@@ -4767,34 +4767,34 @@ importers:
version: 7.26.0
'@babel/eslint-parser':
specifier: 7.25.9
- version: 7.25.9(@babel/core@7.26.0)(eslint@8.57.1)
+ version: 7.25.9(@babel/core@7.26.0)(eslint@9.16.0)
'@babel/preset-react':
specifier: 7.25.9
version: 7.25.9(@babel/core@7.26.0)
'@babel/preset-typescript':
specifier: 7.26.0
version: 7.26.0(@babel/core@7.26.0)
+ '@eslint/compat':
+ specifier: 1.2.4
+ version: 1.2.4(eslint@9.16.0)
+ '@eslint/eslintrc':
+ specifier: 3.2.0
+ version: 3.2.0
+ '@eslint/js':
+ specifier: 9.16.0
+ version: 9.16.0
'@octokit/auth-token':
specifier: 5.1.1
version: 5.1.1
'@octokit/rest':
specifier: 20.1.1
version: 20.1.1
- '@rushstack/eslint-patch':
- specifier: 1.3.3
- version: 1.3.3
'@testing-library/jest-dom':
specifier: 6.5.0
version: 6.5.0
- '@typescript-eslint/eslint-plugin':
- specifier: 8.17.0
- version: 8.17.0(@typescript-eslint/parser@8.17.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(typescript@5.0.4)
- '@typescript-eslint/parser':
- specifier: 8.17.0
- version: 8.17.0(eslint@8.57.1)(typescript@5.0.4)
'@wordpress/eslint-plugin':
specifier: 21.6.0
- version: 21.6.0(fzbcnz4ipaqbgo63n3xlswab5a)
+ version: 21.6.0(@babel/core@7.26.0)(eslint-config-prettier@9.1.0(eslint@9.16.0))(eslint-plugin-import@2.31.0(eslint-import-resolver-typescript@3.7.0)(eslint@9.16.0))(eslint-plugin-jest@28.9.0(eslint@9.16.0)(jest@29.7.0)(typescript@5.0.4))(eslint-plugin-jsdoc@50.6.0(eslint@9.16.0))(eslint-plugin-jsx-a11y@6.10.2(eslint@9.16.0))(eslint-plugin-playwright@2.1.0(eslint@9.16.0))(eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.16.0))(eslint@9.16.0)(wp-prettier@3.0.3))(eslint-plugin-react-hooks@5.1.0(eslint@9.16.0))(eslint-plugin-react@7.37.2(eslint@9.16.0))(eslint@9.16.0)(typescript@5.0.4)(wp-prettier@3.0.3)
'@wordpress/jest-console':
specifier: 8.13.0
version: 8.13.0(jest@29.7.0)
@@ -4811,59 +4811,62 @@ importers:
specifier: 2.4.1
version: 2.4.1
eslint:
- specifier: 8.57.1
- version: 8.57.1
+ specifier: 9.16.0
+ version: 9.16.0
eslint-config-prettier:
specifier: 9.1.0
- version: 9.1.0(eslint@8.57.1)
+ version: 9.1.0(eslint@9.16.0)
eslint-import-resolver-typescript:
specifier: 3.7.0
- version: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1)
+ version: 3.7.0(eslint-plugin-import@2.31.0)(eslint@9.16.0)
eslint-plugin-es-x:
specifier: 7.8.0
- version: 7.8.0(eslint@8.57.1)
+ version: 7.8.0(eslint@9.16.0)
eslint-plugin-import:
specifier: 2.31.0
- version: 2.31.0(@typescript-eslint/parser@8.17.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1)
+ version: 2.31.0(eslint-import-resolver-typescript@3.7.0)(eslint@9.16.0)
eslint-plugin-jest:
specifier: 28.9.0
- version: 28.9.0(@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(jest@29.7.0)(typescript@5.0.4)
+ version: 28.9.0(eslint@9.16.0)(jest@29.7.0)(typescript@5.0.4)
eslint-plugin-jest-dom:
specifier: 5.5.0
- version: 5.5.0(eslint@8.57.1)
+ version: 5.5.0(eslint@9.16.0)
eslint-plugin-jsdoc:
specifier: 50.6.0
- version: 50.6.0(eslint@8.57.1)
+ version: 50.6.0(eslint@9.16.0)
eslint-plugin-jsx-a11y:
specifier: 6.10.2
- version: 6.10.2(eslint@8.57.1)
+ version: 6.10.2(eslint@9.16.0)
eslint-plugin-lodash:
- specifier: 7.4.0
- version: 7.4.0(eslint@8.57.1)
+ specifier: 8.0.0
+ version: 8.0.0(eslint@9.16.0)
eslint-plugin-n:
specifier: 17.14.0
- version: 17.14.0(eslint@8.57.1)
+ version: 17.14.0(eslint@9.16.0)
eslint-plugin-playwright:
specifier: 2.1.0
- version: 2.1.0(eslint@8.57.1)
+ version: 2.1.0(eslint@9.16.0)
eslint-plugin-prettier:
specifier: 5.2.1
- version: 5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(wp-prettier@3.0.3)
+ version: 5.2.1(eslint-config-prettier@9.1.0(eslint@9.16.0))(eslint@9.16.0)(wp-prettier@3.0.3)
eslint-plugin-react:
specifier: 7.37.2
- version: 7.37.2(eslint@8.57.1)
+ version: 7.37.2(eslint@9.16.0)
eslint-plugin-react-hooks:
specifier: 5.1.0
- version: 5.1.0(eslint@8.57.1)
+ version: 5.1.0(eslint@9.16.0)
eslint-plugin-svelte:
specifier: 2.46.1
- version: 2.46.1(eslint@8.57.1)(svelte@4.2.19)
+ version: 2.46.1(eslint@9.16.0)(svelte@4.2.19)
eslint-plugin-testing-library:
specifier: 7.1.1
- version: 7.1.1(eslint@8.57.1)(typescript@5.0.4)
+ version: 7.1.1(eslint@9.16.0)(typescript@5.0.4)
glob:
specifier: 10.4.1
version: 10.4.1
+ globals:
+ specifier: 15.13.0
+ version: 15.13.0
ignore:
specifier: 5.1.8
version: 5.1.8
@@ -4903,6 +4906,9 @@ importers:
typescript:
specifier: 5.0.4
version: 5.0.4
+ typescript-eslint:
+ specifier: 8.17.0
+ version: 8.17.0(eslint@9.16.0)(typescript@5.0.4)
yaml:
specifier: 2.2.2
version: 2.2.2
@@ -6159,13 +6165,38 @@ packages:
resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- '@eslint/eslintrc@2.1.4':
- resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@eslint/compat@1.2.4':
+ resolution: {integrity: sha512-S8ZdQj/N69YAtuqFt7653jwcvuUj131+6qGLUyDqfDg1OIoBQ66OCuXC473YQfO2AaxITTutiRQiDwoo7ZLYyg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^9.10.0
+ peerDependenciesMeta:
+ eslint:
+ optional: true
- '@eslint/js@8.57.1':
- resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@eslint/config-array@0.19.1':
+ resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/core@0.9.1':
+ resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/eslintrc@3.2.0':
+ resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/js@9.16.0':
+ resolution: {integrity: sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/object-schema@2.1.5':
+ resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/plugin-kit@0.2.4':
+ resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@fastify/busboy@2.1.1':
resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==}
@@ -6192,18 +6223,25 @@ packages:
'@hapi/topo@5.1.0':
resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
- '@humanwhocodes/config-array@0.13.0':
- resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==}
- engines: {node: '>=10.10.0'}
- deprecated: Use @eslint/config-array instead
+ '@humanfs/core@0.19.1':
+ resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
+ engines: {node: '>=18.18.0'}
+
+ '@humanfs/node@0.16.6':
+ resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==}
+ engines: {node: '>=18.18.0'}
'@humanwhocodes/module-importer@1.0.1':
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
engines: {node: '>=12.22'}
- '@humanwhocodes/object-schema@2.0.3':
- resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
- deprecated: Use @eslint/object-schema instead
+ '@humanwhocodes/retry@0.3.1':
+ resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==}
+ engines: {node: '>=18.18'}
+
+ '@humanwhocodes/retry@0.4.1':
+ resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==}
+ engines: {node: '>=18.18'}
'@isaacs/cliui@8.0.2':
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
@@ -6793,9 +6831,6 @@ packages:
'@rtsao/scc@1.1.0':
resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
- '@rushstack/eslint-patch@1.3.3':
- resolution: {integrity: sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==}
-
'@samverschueren/stream-to-observable@0.3.1':
resolution: {integrity: sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==}
engines: {node: '>=6'}
@@ -8158,6 +8193,10 @@ packages:
prettier: '>=3'
typescript: '>=4'
peerDependenciesMeta:
+ '@typescript-eslint/eslint-plugin':
+ optional: true
+ '@typescript-eslint/parser':
+ optional: true
prettier:
optional: true
typescript:
@@ -9960,11 +9999,11 @@ packages:
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
- eslint-plugin-lodash@7.4.0:
- resolution: {integrity: sha512-Tl83UwVXqe1OVeBRKUeWcfg6/pCW1GTRObbdnbEJgYwjxp5Q92MEWQaH9+dmzbRt6kvYU1Mp893E79nJiCSM8A==}
+ eslint-plugin-lodash@8.0.0:
+ resolution: {integrity: sha512-7DA8485FolmWRzh+8t4S8Pzin2TTuWfb0ZW3j/2fYElgk82ZanFz8vDcvc4BBPceYdX1p/za+tkbO68maDBGGw==}
engines: {node: '>=10'}
peerDependencies:
- eslint: '>=2'
+ eslint: '>=9.0.0'
eslint-plugin-n@17.14.0:
resolution: {integrity: sha512-maxPLMEA0rPmRpoOlxEclKng4UpDe+N5BJS4t24I3UKnN109Qcivnfs37KMy84G0af3bxjog5lKctP5ObsvcTA==}
@@ -10028,6 +10067,10 @@ packages:
resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ eslint-scope@8.2.0:
+ resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
eslint-visitor-keys@2.1.0:
resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
engines: {node: '>=10'}
@@ -10040,11 +10083,15 @@ packages:
resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- eslint@8.57.1:
- resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
+ eslint@9.16.0:
+ resolution: {integrity: sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
+ peerDependencies:
+ jiti: '*'
+ peerDependenciesMeta:
+ jiti:
+ optional: true
espree@10.3.0:
resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
@@ -10211,9 +10258,9 @@ packages:
resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==}
engines: {node: '>=4'}
- file-entry-cache@6.0.1:
- resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
- engines: {node: ^10.12.0 || >=12.0.0}
+ file-entry-cache@8.0.0:
+ resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
+ engines: {node: '>=16.0.0'}
filelist@1.0.4:
resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
@@ -10277,6 +10324,10 @@ packages:
resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
engines: {node: ^10.12.0 || >=12.0.0}
+ flat-cache@4.0.1:
+ resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
+ engines: {node: '>=16'}
+
flat@5.0.2:
resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
hasBin: true
@@ -10505,6 +10556,10 @@ packages:
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
engines: {node: '>=8'}
+ globals@14.0.0:
+ resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
+ engines: {node: '>=18'}
+
globals@15.13.0:
resolution: {integrity: sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==}
engines: {node: '>=18'}
@@ -10919,10 +10974,6 @@ packages:
resolution: {integrity: sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==}
engines: {node: '>=4'}
- is-path-inside@3.0.3:
- resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
- engines: {node: '>=8'}
-
is-plain-obj@2.1.0:
resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==}
engines: {node: '>=8'}
@@ -13875,9 +13926,6 @@ packages:
text-hex@1.0.0:
resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==}
- text-table@0.2.0:
- resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
-
thread-loader@3.0.4:
resolution: {integrity: sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA==}
engines: {node: '>= 10.13.0'}
@@ -14068,6 +14116,16 @@ packages:
typescript-compare@0.0.2:
resolution: {integrity: sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA==}
+ typescript-eslint@8.17.0:
+ resolution: {integrity: sha512-409VXvFd/f1br1DCbuKNFqQpXICoTB+V51afcwG1pn1a3Cp92MqAUges3YjwEdQ0cMUoCIodjVDAYzyD8h3SYA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
typescript-logic@0.0.0:
resolution: {integrity: sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q==}
@@ -14793,11 +14851,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/eslint-parser@7.25.9(@babel/core@7.26.0)(eslint@8.57.1)':
+ '@babel/eslint-parser@7.25.9(@babel/core@7.26.0)(eslint@9.16.0)':
dependencies:
'@babel/core': 7.26.0
'@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1
- eslint: 8.57.1
+ eslint: 9.16.0
eslint-visitor-keys: 2.1.0
semver: 6.3.1
@@ -15969,19 +16027,35 @@ snapshots:
'@esbuild/win32-x64@0.24.0':
optional: true
- '@eslint-community/eslint-utils@4.4.1(eslint@8.57.1)':
+ '@eslint-community/eslint-utils@4.4.1(eslint@9.16.0)':
dependencies:
- eslint: 8.57.1
+ eslint: 9.16.0
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.1': {}
- '@eslint/eslintrc@2.1.4':
+ '@eslint/compat@1.2.4(eslint@9.16.0)':
+ optionalDependencies:
+ eslint: 9.16.0
+
+ '@eslint/config-array@0.19.1':
+ dependencies:
+ '@eslint/object-schema': 2.1.5
+ debug: 4.3.4
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/core@0.9.1':
+ dependencies:
+ '@types/json-schema': 7.0.15
+
+ '@eslint/eslintrc@3.2.0':
dependencies:
ajv: 6.12.6
debug: 4.3.4
- espree: 9.6.1
- globals: 13.24.0
+ espree: 10.3.0
+ globals: 14.0.0
ignore: 5.3.2
import-fresh: 3.3.0
js-yaml: 4.1.0
@@ -15990,7 +16064,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/js@8.57.1': {}
+ '@eslint/js@9.16.0': {}
+
+ '@eslint/object-schema@2.1.5': {}
+
+ '@eslint/plugin-kit@0.2.4':
+ dependencies:
+ levn: 0.4.1
'@fastify/busboy@2.1.1': {}
@@ -16017,17 +16097,18 @@ snapshots:
dependencies:
'@hapi/hoek': 9.3.0
- '@humanwhocodes/config-array@0.13.0':
+ '@humanfs/core@0.19.1': {}
+
+ '@humanfs/node@0.16.6':
dependencies:
- '@humanwhocodes/object-schema': 2.0.3
- debug: 4.3.4
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
+ '@humanfs/core': 0.19.1
+ '@humanwhocodes/retry': 0.3.1
'@humanwhocodes/module-importer@1.0.1': {}
- '@humanwhocodes/object-schema@2.0.3': {}
+ '@humanwhocodes/retry@0.3.1': {}
+
+ '@humanwhocodes/retry@0.4.1': {}
'@isaacs/cliui@8.0.2':
dependencies:
@@ -17003,8 +17084,6 @@ snapshots:
'@rtsao/scc@1.1.0': {}
- '@rushstack/eslint-patch@1.3.3': {}
-
'@samverschueren/stream-to-observable@0.3.1(rxjs@6.6.7)':
dependencies:
any-observable: 0.3.0(rxjs@6.6.7)
@@ -18207,15 +18286,15 @@ snapshots:
'@types/node': 20.17.9
optional: true
- '@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(typescript@5.0.4)':
+ '@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.0.4))(eslint@9.16.0)(typescript@5.0.4)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.17.0(eslint@8.57.1)(typescript@5.0.4)
+ '@typescript-eslint/parser': 8.17.0(eslint@9.16.0)(typescript@5.0.4)
'@typescript-eslint/scope-manager': 8.17.0
- '@typescript-eslint/type-utils': 8.17.0(eslint@8.57.1)(typescript@5.0.4)
- '@typescript-eslint/utils': 8.17.0(eslint@8.57.1)(typescript@5.0.4)
+ '@typescript-eslint/type-utils': 8.17.0(eslint@9.16.0)(typescript@5.0.4)
+ '@typescript-eslint/utils': 8.17.0(eslint@9.16.0)(typescript@5.0.4)
'@typescript-eslint/visitor-keys': 8.17.0
- eslint: 8.57.1
+ eslint: 9.16.0
graphemer: 1.4.0
ignore: 5.3.2
natural-compare: 1.4.0
@@ -18225,14 +18304,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.17.0(eslint@8.57.1)(typescript@5.0.4)':
+ '@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.0.4)':
dependencies:
'@typescript-eslint/scope-manager': 8.17.0
'@typescript-eslint/types': 8.17.0
'@typescript-eslint/typescript-estree': 8.17.0(typescript@5.0.4)
'@typescript-eslint/visitor-keys': 8.17.0
debug: 4.3.4
- eslint: 8.57.1
+ eslint: 9.16.0
optionalDependencies:
typescript: 5.0.4
transitivePeerDependencies:
@@ -18248,12 +18327,12 @@ snapshots:
'@typescript-eslint/types': 8.18.0
'@typescript-eslint/visitor-keys': 8.18.0
- '@typescript-eslint/type-utils@8.17.0(eslint@8.57.1)(typescript@5.0.4)':
+ '@typescript-eslint/type-utils@8.17.0(eslint@9.16.0)(typescript@5.0.4)':
dependencies:
'@typescript-eslint/typescript-estree': 8.17.0(typescript@5.0.4)
- '@typescript-eslint/utils': 8.17.0(eslint@8.57.1)(typescript@5.0.4)
+ '@typescript-eslint/utils': 8.17.0(eslint@9.16.0)(typescript@5.0.4)
debug: 4.3.4
- eslint: 8.57.1
+ eslint: 9.16.0
ts-api-utils: 1.4.3(typescript@5.0.4)
optionalDependencies:
typescript: 5.0.4
@@ -18293,25 +18372,25 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.17.0(eslint@8.57.1)(typescript@5.0.4)':
+ '@typescript-eslint/utils@8.17.0(eslint@9.16.0)(typescript@5.0.4)':
dependencies:
- '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1)
+ '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0)
'@typescript-eslint/scope-manager': 8.17.0
'@typescript-eslint/types': 8.17.0
'@typescript-eslint/typescript-estree': 8.17.0(typescript@5.0.4)
- eslint: 8.57.1
+ eslint: 9.16.0
optionalDependencies:
typescript: 5.0.4
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.18.0(eslint@8.57.1)(typescript@5.0.4)':
+ '@typescript-eslint/utils@8.18.0(eslint@9.16.0)(typescript@5.0.4)':
dependencies:
- '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1)
+ '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0)
'@typescript-eslint/scope-manager': 8.18.0
'@typescript-eslint/types': 8.18.0
'@typescript-eslint/typescript-estree': 8.18.0(typescript@5.0.4)
- eslint: 8.57.1
+ eslint: 9.16.0
typescript: 5.0.4
transitivePeerDependencies:
- supports-color
@@ -19883,25 +19962,23 @@ snapshots:
dependencies:
'@babel/runtime': 7.25.7
- '@wordpress/eslint-plugin@21.6.0(fzbcnz4ipaqbgo63n3xlswab5a)':
+ '@wordpress/eslint-plugin@21.6.0(@babel/core@7.26.0)(eslint-config-prettier@9.1.0(eslint@9.16.0))(eslint-plugin-import@2.31.0(eslint-import-resolver-typescript@3.7.0)(eslint@9.16.0))(eslint-plugin-jest@28.9.0(eslint@9.16.0)(jest@29.7.0)(typescript@5.0.4))(eslint-plugin-jsdoc@50.6.0(eslint@9.16.0))(eslint-plugin-jsx-a11y@6.10.2(eslint@9.16.0))(eslint-plugin-playwright@2.1.0(eslint@9.16.0))(eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.16.0))(eslint@9.16.0)(wp-prettier@3.0.3))(eslint-plugin-react-hooks@5.1.0(eslint@9.16.0))(eslint-plugin-react@7.37.2(eslint@9.16.0))(eslint@9.16.0)(typescript@5.0.4)(wp-prettier@3.0.3)':
dependencies:
'@babel/core': 7.26.0
- '@babel/eslint-parser': 7.25.9(@babel/core@7.26.0)(eslint@8.57.1)
- '@typescript-eslint/eslint-plugin': 8.17.0(@typescript-eslint/parser@8.17.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(typescript@5.0.4)
- '@typescript-eslint/parser': 8.17.0(eslint@8.57.1)(typescript@5.0.4)
+ '@babel/eslint-parser': 7.25.9(@babel/core@7.26.0)(eslint@9.16.0)
'@wordpress/babel-preset-default': 8.13.0
'@wordpress/prettier-config': 4.13.0(wp-prettier@3.0.3)
cosmiconfig: 7.1.0
- eslint: 8.57.1
- eslint-config-prettier: 9.1.0(eslint@8.57.1)
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.17.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1)
- eslint-plugin-jest: 28.9.0(@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(jest@29.7.0)(typescript@5.0.4)
- eslint-plugin-jsdoc: 50.6.0(eslint@8.57.1)
- eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1)
- eslint-plugin-playwright: 2.1.0(eslint@8.57.1)
- eslint-plugin-prettier: 5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(wp-prettier@3.0.3)
- eslint-plugin-react: 7.37.2(eslint@8.57.1)
- eslint-plugin-react-hooks: 5.1.0(eslint@8.57.1)
+ eslint: 9.16.0
+ eslint-config-prettier: 9.1.0(eslint@9.16.0)
+ eslint-plugin-import: 2.31.0(eslint-import-resolver-typescript@3.7.0)(eslint@9.16.0)
+ eslint-plugin-jest: 28.9.0(eslint@9.16.0)(jest@29.7.0)(typescript@5.0.4)
+ eslint-plugin-jsdoc: 50.6.0(eslint@9.16.0)
+ eslint-plugin-jsx-a11y: 6.10.2(eslint@9.16.0)
+ eslint-plugin-playwright: 2.1.0(eslint@9.16.0)
+ eslint-plugin-prettier: 5.2.1(eslint-config-prettier@9.1.0(eslint@9.16.0))(eslint@9.16.0)(wp-prettier@3.0.3)
+ eslint-plugin-react: 7.37.2(eslint@9.16.0)
+ eslint-plugin-react-hooks: 5.1.0(eslint@9.16.0)
globals: 13.24.0
requireindex: 1.2.0
optionalDependencies:
@@ -22439,14 +22516,14 @@ snapshots:
optionalDependencies:
source-map: 0.6.1
- eslint-compat-utils@0.5.1(eslint@8.57.1):
+ eslint-compat-utils@0.5.1(eslint@9.16.0):
dependencies:
- eslint: 8.57.1
+ eslint: 9.16.0
semver: 7.6.3
- eslint-config-prettier@9.1.0(eslint@8.57.1):
+ eslint-config-prettier@9.1.0(eslint@9.16.0):
dependencies:
- eslint: 8.57.1
+ eslint: 9.16.0
eslint-import-resolver-node@0.3.9:
dependencies:
@@ -22456,41 +22533,40 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1):
+ eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@9.16.0):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.0
enhanced-resolve: 5.17.1
- eslint: 8.57.1
+ eslint: 9.16.0
fast-glob: 3.3.2
get-tsconfig: 4.8.1
is-bun-module: 1.3.0
is-glob: 4.0.3
stable-hash: 0.0.4
optionalDependencies:
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.17.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1)
+ eslint-plugin-import: 2.31.0(eslint-import-resolver-typescript@3.7.0)(eslint@9.16.0)
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.0(@typescript-eslint/parser@8.17.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1):
+ eslint-module-utils@2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@9.16.0))(eslint@9.16.0):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.17.0(eslint@8.57.1)(typescript@5.0.4)
- eslint: 8.57.1
+ eslint: 9.16.0
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1)
+ eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@9.16.0)
transitivePeerDependencies:
- supports-color
- eslint-plugin-es-x@7.8.0(eslint@8.57.1):
+ eslint-plugin-es-x@7.8.0(eslint@9.16.0):
dependencies:
- '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1)
+ '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0)
'@eslint-community/regexpp': 4.12.1
- eslint: 8.57.1
- eslint-compat-utils: 0.5.1(eslint@8.57.1)
+ eslint: 9.16.0
+ eslint-compat-utils: 0.5.1(eslint@9.16.0)
- eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.17.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1):
+ eslint-plugin-import@2.31.0(eslint-import-resolver-typescript@3.7.0)(eslint@9.16.0):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
@@ -22499,9 +22575,9 @@ snapshots:
array.prototype.flatmap: 1.3.2
debug: 3.2.7
doctrine: 2.1.0
- eslint: 8.57.1
+ eslint: 9.16.0
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.17.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1)
+ eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@9.16.0))(eslint@9.16.0)
hasown: 2.0.2
is-core-module: 2.15.1
is-glob: 4.0.3
@@ -22512,38 +22588,35 @@ snapshots:
semver: 6.3.1
string.prototype.trimend: 1.0.8
tsconfig-paths: 3.15.0
- optionalDependencies:
- '@typescript-eslint/parser': 8.17.0(eslint@8.57.1)(typescript@5.0.4)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-jest-dom@5.5.0(eslint@8.57.1):
+ eslint-plugin-jest-dom@5.5.0(eslint@9.16.0):
dependencies:
'@babel/runtime': 7.26.0
- eslint: 8.57.1
+ eslint: 9.16.0
requireindex: 1.2.0
- eslint-plugin-jest@28.9.0(@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(jest@29.7.0)(typescript@5.0.4):
+ eslint-plugin-jest@28.9.0(eslint@9.16.0)(jest@29.7.0)(typescript@5.0.4):
dependencies:
- '@typescript-eslint/utils': 8.18.0(eslint@8.57.1)(typescript@5.0.4)
- eslint: 8.57.1
+ '@typescript-eslint/utils': 8.18.0(eslint@9.16.0)(typescript@5.0.4)
+ eslint: 9.16.0
optionalDependencies:
- '@typescript-eslint/eslint-plugin': 8.17.0(@typescript-eslint/parser@8.17.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(typescript@5.0.4)
jest: 29.7.0
transitivePeerDependencies:
- supports-color
- typescript
- eslint-plugin-jsdoc@50.6.0(eslint@8.57.1):
+ eslint-plugin-jsdoc@50.6.0(eslint@9.16.0):
dependencies:
'@es-joy/jsdoccomment': 0.49.0
are-docs-informative: 0.0.2
comment-parser: 1.4.1
debug: 4.4.0
escape-string-regexp: 4.0.0
- eslint: 8.57.1
+ eslint: 9.16.0
espree: 10.3.0
esquery: 1.6.0
parse-imports: 2.2.1
@@ -22553,7 +22626,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1):
+ eslint-plugin-jsx-a11y@6.10.2(eslint@9.16.0):
dependencies:
aria-query: 5.3.2
array-includes: 3.1.8
@@ -22563,7 +22636,7 @@ snapshots:
axobject-query: 4.1.0
damerau-levenshtein: 1.0.8
emoji-regex: 9.2.2
- eslint: 8.57.1
+ eslint: 9.16.0
hasown: 2.0.2
jsx-ast-utils: 3.3.5
language-tags: 1.0.9
@@ -22572,42 +22645,42 @@ snapshots:
safe-regex-test: 1.0.3
string.prototype.includes: 2.0.1
- eslint-plugin-lodash@7.4.0(eslint@8.57.1):
+ eslint-plugin-lodash@8.0.0(eslint@9.16.0):
dependencies:
- eslint: 8.57.1
+ eslint: 9.16.0
lodash: 4.17.21
- eslint-plugin-n@17.14.0(eslint@8.57.1):
+ eslint-plugin-n@17.14.0(eslint@9.16.0):
dependencies:
- '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1)
+ '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0)
enhanced-resolve: 5.17.1
- eslint: 8.57.1
- eslint-plugin-es-x: 7.8.0(eslint@8.57.1)
+ eslint: 9.16.0
+ eslint-plugin-es-x: 7.8.0(eslint@9.16.0)
get-tsconfig: 4.8.1
globals: 15.13.0
ignore: 5.3.2
minimatch: 9.0.5
semver: 7.6.3
- eslint-plugin-playwright@2.1.0(eslint@8.57.1):
+ eslint-plugin-playwright@2.1.0(eslint@9.16.0):
dependencies:
- eslint: 8.57.1
+ eslint: 9.16.0
globals: 13.24.0
- eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(wp-prettier@3.0.3):
+ eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.16.0))(eslint@9.16.0)(wp-prettier@3.0.3):
dependencies:
- eslint: 8.57.1
+ eslint: 9.16.0
prettier: wp-prettier@3.0.3
prettier-linter-helpers: 1.0.0
synckit: 0.9.2
optionalDependencies:
- eslint-config-prettier: 9.1.0(eslint@8.57.1)
+ eslint-config-prettier: 9.1.0(eslint@9.16.0)
- eslint-plugin-react-hooks@5.1.0(eslint@8.57.1):
+ eslint-plugin-react-hooks@5.1.0(eslint@9.16.0):
dependencies:
- eslint: 8.57.1
+ eslint: 9.16.0
- eslint-plugin-react@7.37.2(eslint@8.57.1):
+ eslint-plugin-react@7.37.2(eslint@9.16.0):
dependencies:
array-includes: 3.1.8
array.prototype.findlast: 1.2.5
@@ -22615,7 +22688,7 @@ snapshots:
array.prototype.tosorted: 1.1.4
doctrine: 2.1.0
es-iterator-helpers: 1.2.0
- eslint: 8.57.1
+ eslint: 9.16.0
estraverse: 5.3.0
hasown: 2.0.2
jsx-ast-utils: 3.3.5
@@ -22629,12 +22702,12 @@ snapshots:
string.prototype.matchall: 4.0.11
string.prototype.repeat: 1.0.0
- eslint-plugin-svelte@2.46.1(eslint@8.57.1)(svelte@4.2.19):
+ eslint-plugin-svelte@2.46.1(eslint@9.16.0)(svelte@4.2.19):
dependencies:
- '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1)
+ '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0)
'@jridgewell/sourcemap-codec': 1.5.0
- eslint: 8.57.1
- eslint-compat-utils: 0.5.1(eslint@8.57.1)
+ eslint: 9.16.0
+ eslint-compat-utils: 0.5.1(eslint@9.16.0)
esutils: 2.0.3
known-css-properties: 0.35.0
postcss: 8.4.47
@@ -22648,11 +22721,11 @@ snapshots:
transitivePeerDependencies:
- ts-node
- eslint-plugin-testing-library@7.1.1(eslint@8.57.1)(typescript@5.0.4):
+ eslint-plugin-testing-library@7.1.1(eslint@9.16.0)(typescript@5.0.4):
dependencies:
'@typescript-eslint/scope-manager': 8.18.0
- '@typescript-eslint/utils': 8.18.0(eslint@8.57.1)(typescript@5.0.4)
- eslint: 8.57.1
+ '@typescript-eslint/utils': 8.18.0(eslint@9.16.0)(typescript@5.0.4)
+ eslint: 9.16.0
transitivePeerDependencies:
- supports-color
- typescript
@@ -22667,52 +22740,53 @@ snapshots:
esrecurse: 4.3.0
estraverse: 5.3.0
+ eslint-scope@8.2.0:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+
eslint-visitor-keys@2.1.0: {}
eslint-visitor-keys@3.4.3: {}
eslint-visitor-keys@4.2.0: {}
- eslint@8.57.1:
+ eslint@9.16.0:
dependencies:
- '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1)
+ '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0)
'@eslint-community/regexpp': 4.12.1
- '@eslint/eslintrc': 2.1.4
- '@eslint/js': 8.57.1
- '@humanwhocodes/config-array': 0.13.0
+ '@eslint/config-array': 0.19.1
+ '@eslint/core': 0.9.1
+ '@eslint/eslintrc': 3.2.0
+ '@eslint/js': 9.16.0
+ '@eslint/plugin-kit': 0.2.4
+ '@humanfs/node': 0.16.6
'@humanwhocodes/module-importer': 1.0.1
- '@nodelib/fs.walk': 1.2.8
- '@ungap/structured-clone': 1.2.1
+ '@humanwhocodes/retry': 0.4.1
+ '@types/estree': 1.0.6
+ '@types/json-schema': 7.0.15
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.6
debug: 4.3.4
- doctrine: 3.0.0
escape-string-regexp: 4.0.0
- eslint-scope: 7.2.2
- eslint-visitor-keys: 3.4.3
- espree: 9.6.1
+ eslint-scope: 8.2.0
+ eslint-visitor-keys: 4.2.0
+ espree: 10.3.0
esquery: 1.6.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
- file-entry-cache: 6.0.1
+ file-entry-cache: 8.0.0
find-up: 5.0.0
glob-parent: 6.0.2
- globals: 13.24.0
- graphemer: 1.4.0
ignore: 5.3.2
imurmurhash: 0.1.4
is-glob: 4.0.3
- is-path-inside: 3.0.3
- js-yaml: 4.1.0
json-stable-stringify-without-jsonify: 1.0.1
- levn: 0.4.1
lodash.merge: 4.6.2
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.4
- strip-ansi: 6.0.1
- text-table: 0.2.0
transitivePeerDependencies:
- supports-color
@@ -22920,9 +22994,9 @@ snapshots:
dependencies:
escape-string-regexp: 1.0.5
- file-entry-cache@6.0.1:
+ file-entry-cache@8.0.0:
dependencies:
- flat-cache: 3.2.0
+ flat-cache: 4.0.1
filelist@1.0.4:
dependencies:
@@ -23007,6 +23081,11 @@ snapshots:
keyv: 4.5.4
rimraf: 3.0.2
+ flat-cache@4.0.1:
+ dependencies:
+ flatted: 3.3.2
+ keyv: 4.5.4
+
flat@5.0.2: {}
flatted@3.3.2: {}
@@ -23252,6 +23331,8 @@ snapshots:
dependencies:
type-fest: 0.20.2
+ globals@14.0.0: {}
+
globals@15.13.0: {}
globals@15.4.0: {}
@@ -23654,8 +23735,6 @@ snapshots:
dependencies:
symbol-observable: 1.2.0
- is-path-inside@3.0.3: {}
-
is-plain-obj@2.1.0: {}
is-plain-obj@4.1.0: {}
@@ -27271,8 +27350,6 @@ snapshots:
text-hex@1.0.0: {}
- text-table@0.2.0: {}
-
thread-loader@3.0.4(webpack@5.94.0(webpack-cli@4.9.1)):
dependencies:
json-parse-better-errors: 1.0.2
@@ -27461,6 +27538,17 @@ snapshots:
dependencies:
typescript-logic: 0.0.0
+ typescript-eslint@8.17.0(eslint@9.16.0)(typescript@5.0.4):
+ dependencies:
+ '@typescript-eslint/eslint-plugin': 8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.0.4))(eslint@9.16.0)(typescript@5.0.4)
+ '@typescript-eslint/parser': 8.17.0(eslint@9.16.0)(typescript@5.0.4)
+ '@typescript-eslint/utils': 8.17.0(eslint@9.16.0)(typescript@5.0.4)
+ eslint: 9.16.0
+ optionalDependencies:
+ typescript: 5.0.4
+ transitivePeerDependencies:
+ - supports-color
+
typescript-logic@0.0.0: {}
typescript-tuple@2.2.1:
diff --git a/projects/github-actions/repo-gardening/changelog/update-eslint-9 b/projects/github-actions/repo-gardening/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/github-actions/repo-gardening/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/github-actions/repo-gardening/eslint.config.mjs b/projects/github-actions/repo-gardening/eslint.config.mjs
new file mode 100644
index 0000000000000..c38533370c754
--- /dev/null
+++ b/projects/github-actions/repo-gardening/eslint.config.mjs
@@ -0,0 +1,3 @@
+import makeBaseConfig from 'jetpack-js-tools/eslintrc/base.mjs';
+
+export default [ ...makeBaseConfig( import.meta.url, { envs: [ 'node', 'commonjs' ] } ) ];
diff --git a/projects/github-actions/required-review/changelog/update-eslint-9 b/projects/github-actions/required-review/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/github-actions/required-review/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/github-actions/required-review/eslint.config.mjs b/projects/github-actions/required-review/eslint.config.mjs
new file mode 100644
index 0000000000000..c38533370c754
--- /dev/null
+++ b/projects/github-actions/required-review/eslint.config.mjs
@@ -0,0 +1,3 @@
+import makeBaseConfig from 'jetpack-js-tools/eslintrc/base.mjs';
+
+export default [ ...makeBaseConfig( import.meta.url, { envs: [ 'node', 'commonjs' ] } ) ];
diff --git a/projects/github-actions/test-results-to-slack/changelog/update-eslint-9 b/projects/github-actions/test-results-to-slack/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/github-actions/test-results-to-slack/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/github-actions/test-results-to-slack/eslint.config.mjs b/projects/github-actions/test-results-to-slack/eslint.config.mjs
new file mode 100644
index 0000000000000..c38533370c754
--- /dev/null
+++ b/projects/github-actions/test-results-to-slack/eslint.config.mjs
@@ -0,0 +1,3 @@
+import makeBaseConfig from 'jetpack-js-tools/eslintrc/base.mjs';
+
+export default [ ...makeBaseConfig( import.meta.url, { envs: [ 'node', 'commonjs' ] } ) ];
diff --git a/projects/js-packages/ai-client/.eslintrc.cjs b/projects/js-packages/ai-client/.eslintrc.cjs
deleted file mode 100644
index 8682f6d3e0d5b..0000000000000
--- a/projects/js-packages/ai-client/.eslintrc.cjs
+++ /dev/null
@@ -1,13 +0,0 @@
-module.exports = {
- // @todo Uncomment this:
- // extends: [ require.resolve( 'jetpack-js-tools/eslintrc/react' ) ],
- rules: {
- // Enforce use of the correct textdomain.
- '@wordpress/i18n-text-domain': [
- 'error',
- {
- allowedTextDomain: 'jetpack-ai-client',
- },
- ],
- },
-};
diff --git a/projects/js-packages/ai-client/.gitattributes b/projects/js-packages/ai-client/.gitattributes
index 71afd991c0ac3..f5e05378ec61d 100644
--- a/projects/js-packages/ai-client/.gitattributes
+++ b/projects/js-packages/ai-client/.gitattributes
@@ -8,7 +8,6 @@ node_modules export-ignore
# Files to exclude from the mirror repo
/changelog/** production-exclude
-/.eslintrc.cjs production-exclude
/jest.config.cjs production-exclude
**/stories/** production-exclude
/tests/** production-exclude
diff --git a/projects/js-packages/ai-client/changelog/update-eslint-9 b/projects/js-packages/ai-client/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/js-packages/ai-client/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/js-packages/ai-client/composer.json b/projects/js-packages/ai-client/composer.json
index 328c58235e9c6..10018bb5e48c0 100644
--- a/projects/js-packages/ai-client/composer.json
+++ b/projects/js-packages/ai-client/composer.json
@@ -44,6 +44,7 @@
"prefer-stable": true,
"extra": {
"mirror-repo": "Automattic/jetpack-ai-client",
+ "textdomain": "jetpack-ai-client",
"changelogger": {
"link-template": "https://github.com/Automattic/jetpack-ai-client/compare/v${old}...v${new}"
},
diff --git a/projects/js-packages/ai-client/eslint.config.mjs b/projects/js-packages/ai-client/eslint.config.mjs
new file mode 100644
index 0000000000000..fb9a749abad1c
--- /dev/null
+++ b/projects/js-packages/ai-client/eslint.config.mjs
@@ -0,0 +1,4 @@
+import makeBaseConfig from 'jetpack-js-tools/eslintrc/base.mjs';
+
+// @todo: Remove this file, use the defaults (particularly `react: true`).
+export default [ ...makeBaseConfig( import.meta.url, { react: false } ) ];
diff --git a/projects/js-packages/api/.gitattributes b/projects/js-packages/api/.gitattributes
index aff5ca06b5da0..2ae37414e6abc 100644
--- a/projects/js-packages/api/.gitattributes
+++ b/projects/js-packages/api/.gitattributes
@@ -4,7 +4,6 @@ node_modules export-ignore
# Files to exclude from the mirror repo
/changelog/** production-exclude
-/.eslintrc.cjs production-exclude
/.gitignore production-exclude
/jest.config.cjs production-exclude
/test/** production-exclude
diff --git a/projects/js-packages/api/changelog/update-eslint-9 b/projects/js-packages/api/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/js-packages/api/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/js-packages/babel-plugin-replace-textdomain/.eslintignore b/projects/js-packages/babel-plugin-replace-textdomain/.eslintignore
index 34201e224eb8a..5918eaac02490 100644
--- a/projects/js-packages/babel-plugin-replace-textdomain/.eslintignore
+++ b/projects/js-packages/babel-plugin-replace-textdomain/.eslintignore
@@ -1,3 +1,3 @@
-# Not loaded by default eslint, but we use tools/js-tools/load-eslint-ignore.js in .eslintrc to munge it in.
+# Our standard eslint config reads .gitignore and .eslintignore to determine what to ignore.
tests/fixtures/
diff --git a/projects/js-packages/babel-plugin-replace-textdomain/.gitattributes b/projects/js-packages/babel-plugin-replace-textdomain/.gitattributes
index 34504b47f0be4..c4610dcb12f4e 100644
--- a/projects/js-packages/babel-plugin-replace-textdomain/.gitattributes
+++ b/projects/js-packages/babel-plugin-replace-textdomain/.gitattributes
@@ -1,5 +1,4 @@
# Files to exclude from the mirror repo
-.eslintignore production-exclude
.gitattributes production-exclude
/changelog/** production-exclude
/tests/** production-exclude
diff --git a/projects/js-packages/babel-plugin-replace-textdomain/changelog/update-eslint-9 b/projects/js-packages/babel-plugin-replace-textdomain/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/js-packages/babel-plugin-replace-textdomain/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/js-packages/base-styles/.gitattributes b/projects/js-packages/base-styles/.gitattributes
index b57ab27fe12ab..44a012a28ecc6 100644
--- a/projects/js-packages/base-styles/.gitattributes
+++ b/projects/js-packages/base-styles/.gitattributes
@@ -4,5 +4,4 @@ node_modules export-ignore
# Files to exclude from the mirror repo
/changelog/** production-exclude
-/.eslintrc.cjs production-exclude
**/stories/** production-exclude
diff --git a/projects/js-packages/base-styles/changelog/update-eslint-9 b/projects/js-packages/base-styles/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/js-packages/base-styles/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/js-packages/boost-score-api/.eslintrc.cjs b/projects/js-packages/boost-score-api/.eslintrc.cjs
deleted file mode 100644
index fdf9613709cbb..0000000000000
--- a/projects/js-packages/boost-score-api/.eslintrc.cjs
+++ /dev/null
@@ -1,27 +0,0 @@
-const loadIgnorePatterns = require( 'jetpack-js-tools/load-eslint-ignore.js' );
-
-module.exports = {
- root: true,
- extends: [ require.resolve( 'jetpack-js-tools/eslintrc/base' ) ],
- ignorePatterns: loadIgnorePatterns( __dirname ),
- parserOptions: {
- tsconfigRootDir: __dirname,
- project: [ './tsconfig.json' ],
- },
- overrides: [
- {
- files: [ '*.js', '*.cjs' ],
- parserOptions: {
- project: null,
- },
- },
- ],
- rules: {
- '@wordpress/i18n-text-domain': [
- 'error',
- {
- allowedTextDomain: 'boost-score-api',
- },
- ],
- },
-};
diff --git a/projects/js-packages/boost-score-api/.gitattributes b/projects/js-packages/boost-score-api/.gitattributes
index 6ac76521ac7cc..c3a026de40914 100644
--- a/projects/js-packages/boost-score-api/.gitattributes
+++ b/projects/js-packages/boost-score-api/.gitattributes
@@ -9,7 +9,6 @@ package.json export-ignore
# Files to exclude from the mirror repo
/changelog/** production-exclude
-/.eslintrc.cjs production-exclude
.gitignore production-exclude
/src/** production-exclude
tests/** production-exclude
diff --git a/projects/js-packages/boost-score-api/changelog/update-eslint-9 b/projects/js-packages/boost-score-api/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/js-packages/boost-score-api/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/js-packages/boost-score-api/composer.json b/projects/js-packages/boost-score-api/composer.json
index 57bc08a6ef502..fca2f5ecf9e9e 100644
--- a/projects/js-packages/boost-score-api/composer.json
+++ b/projects/js-packages/boost-score-api/composer.json
@@ -45,6 +45,7 @@
"extra": {
"npmjs-autopublish": true,
"mirror-repo": "Automattic/jetpack-boost-score-api",
+ "textdomain": "boost-score-api",
"changelogger": {
"link-template": "https://github.com/Automattic/jetpack-boost-score-api/compare/v${old}...v${new}"
},
diff --git a/projects/js-packages/charts/.eslintrc.cjs b/projects/js-packages/charts/.eslintrc.cjs
deleted file mode 100644
index 71fa9fce90964..0000000000000
--- a/projects/js-packages/charts/.eslintrc.cjs
+++ /dev/null
@@ -1,12 +0,0 @@
-module.exports = {
- extends: [ require.resolve( 'jetpack-js-tools/eslintrc/react' ) ],
- rules: {
- // Enforce use of the correct textdomain.
- '@wordpress/i18n-text-domain': [
- 'error',
- {
- allowedTextDomain: 'jetpack-charts',
- },
- ],
- },
-};
diff --git a/projects/js-packages/charts/.gitattributes b/projects/js-packages/charts/.gitattributes
index 7905b040f94a0..8552e6d81e9fd 100644
--- a/projects/js-packages/charts/.gitattributes
+++ b/projects/js-packages/charts/.gitattributes
@@ -4,6 +4,5 @@ node_modules export-ignore
# Files to exclude from the mirror repo.
/changelog/** production-exclude
-/.eslintrc.cjs production-exclude
**/stories/** production-exclude
**/test/** production-exclude
diff --git a/projects/js-packages/charts/changelog/update-eslint-9 b/projects/js-packages/charts/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/js-packages/charts/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/js-packages/charts/composer.json b/projects/js-packages/charts/composer.json
index 8fc45449250b7..f2d38414dc78c 100644
--- a/projects/js-packages/charts/composer.json
+++ b/projects/js-packages/charts/composer.json
@@ -37,6 +37,7 @@
"changelogger": {
"link-template": "https://github.com/Automattic/charts/compare/v${old}...v${new}"
},
- "mirror-repo": "Automattic/charts"
+ "mirror-repo": "Automattic/charts",
+ "textdomain": "jetpack-charts"
}
}
diff --git a/projects/js-packages/components/.eslintrc.cjs b/projects/js-packages/components/.eslintrc.cjs
deleted file mode 100644
index 17efe12ad9b08..0000000000000
--- a/projects/js-packages/components/.eslintrc.cjs
+++ /dev/null
@@ -1,12 +0,0 @@
-module.exports = {
- extends: [ require.resolve( 'jetpack-js-tools/eslintrc/react' ) ],
- rules: {
- // Enforce use of the correct textdomain.
- '@wordpress/i18n-text-domain': [
- 'error',
- {
- allowedTextDomain: 'jetpack-components',
- },
- ],
- },
-};
diff --git a/projects/js-packages/components/.gitattributes b/projects/js-packages/components/.gitattributes
index be6edb2a4b8fb..69ec662162552 100644
--- a/projects/js-packages/components/.gitattributes
+++ b/projects/js-packages/components/.gitattributes
@@ -4,7 +4,6 @@ node_modules export-ignore
# Files to exclude from the mirror repo
/changelog/** production-exclude
-/.eslintrc.cjs production-exclude
/jest.config.cjs production-exclude
**/stories/** production-exclude
**/test/** production-exclude
diff --git a/projects/js-packages/components/changelog/update-eslint-9 b/projects/js-packages/components/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/js-packages/components/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/js-packages/components/composer.json b/projects/js-packages/components/composer.json
index 153cea19fe232..e5a33ab529022 100644
--- a/projects/js-packages/components/composer.json
+++ b/projects/js-packages/components/composer.json
@@ -33,6 +33,7 @@
"autotagger": true,
"npmjs-autopublish": true,
"mirror-repo": "Automattic/jetpack-components",
+ "textdomain": "jetpack-components",
"changelogger": {
"link-template": "https://github.com/Automattic/jetpack-components/compare/${old}...${new}"
}
diff --git a/projects/js-packages/connection/.eslintrc.cjs b/projects/js-packages/connection/.eslintrc.cjs
deleted file mode 100644
index 7b3c1104bb1d1..0000000000000
--- a/projects/js-packages/connection/.eslintrc.cjs
+++ /dev/null
@@ -1,12 +0,0 @@
-module.exports = {
- extends: [ require.resolve( 'jetpack-js-tools/eslintrc/react' ) ],
- rules: {
- // Enforce use of the correct textdomain.
- '@wordpress/i18n-text-domain': [
- 'error',
- {
- allowedTextDomain: 'jetpack-connection-js',
- },
- ],
- },
-};
diff --git a/projects/js-packages/connection/.gitattributes b/projects/js-packages/connection/.gitattributes
index 6af47a9f3bd74..e58265fca7df4 100644
--- a/projects/js-packages/connection/.gitattributes
+++ b/projects/js-packages/connection/.gitattributes
@@ -4,7 +4,6 @@ node_modules export-ignore
# Files to exclude from the mirror repo
/changelog/** production-exclude
-/.eslintrc.cjs production-exclude
/.gitignore production-exclude
/jest.config.cjs production-exclude
/jest.setup.js production-exclude
diff --git a/projects/js-packages/connection/changelog/update-eslint-9 b/projects/js-packages/connection/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/js-packages/connection/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/js-packages/connection/composer.json b/projects/js-packages/connection/composer.json
index f11c6354db7e9..d52720a1734e9 100644
--- a/projects/js-packages/connection/composer.json
+++ b/projects/js-packages/connection/composer.json
@@ -25,6 +25,7 @@
],
"extra": {
"mirror-repo": "Automattic/jetpack-connection-js",
+ "textdomain": "jetpack-connection-js",
"changelogger": {
"link-template": "https://github.com/Automattic/jetpack-connection-js/compare/v${old}...v${new}"
},
diff --git a/projects/js-packages/critical-css-gen/changelog/update-eslint-9 b/projects/js-packages/critical-css-gen/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/js-packages/critical-css-gen/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/js-packages/critical-css-gen/eslint.config.mjs b/projects/js-packages/critical-css-gen/eslint.config.mjs
new file mode 100644
index 0000000000000..162221bdcc895
--- /dev/null
+++ b/projects/js-packages/critical-css-gen/eslint.config.mjs
@@ -0,0 +1,13 @@
+import makeBaseConfig from 'jetpack-js-tools/eslintrc/base.mjs';
+
+export default [
+ ...makeBaseConfig( import.meta.url ),
+ {
+ rules: {
+ '@typescript-eslint/no-unused-vars': [
+ 'warn',
+ { argsIgnorePattern: '^_', caughtErrors: 'none' },
+ ],
+ },
+ },
+];
diff --git a/projects/js-packages/eslint-changed/.eslintrc.cjs b/projects/js-packages/eslint-changed/.eslintrc.cjs
deleted file mode 100644
index 6b63595069759..0000000000000
--- a/projects/js-packages/eslint-changed/.eslintrc.cjs
+++ /dev/null
@@ -1,5 +0,0 @@
-module.exports = {
- env: {
- node: true,
- },
-};
diff --git a/projects/js-packages/eslint-changed/.gitattributes b/projects/js-packages/eslint-changed/.gitattributes
index 7507c46b55f11..e5a626ecc092c 100644
--- a/projects/js-packages/eslint-changed/.gitattributes
+++ b/projects/js-packages/eslint-changed/.gitattributes
@@ -1,5 +1,4 @@
/changelog/** production-exclude
-/.eslintrc.cjs production-exclude
/.gitattributes production-exclude
/.gitignore production-exclude
/tests/** production-exclude
diff --git a/projects/js-packages/eslint-changed/changelog/update-eslint-9 b/projects/js-packages/eslint-changed/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/js-packages/eslint-changed/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/js-packages/eslint-changed/eslint.config.mjs b/projects/js-packages/eslint-changed/eslint.config.mjs
new file mode 100644
index 0000000000000..b9e6516fb62d7
--- /dev/null
+++ b/projects/js-packages/eslint-changed/eslint.config.mjs
@@ -0,0 +1,3 @@
+import makeBaseConfig from 'jetpack-js-tools/eslintrc/base.mjs';
+
+export default [ ...makeBaseConfig( import.meta.url, { envs: [ 'node' ] } ) ];
diff --git a/projects/js-packages/eslint-config-target-es/.gitattributes b/projects/js-packages/eslint-config-target-es/.gitattributes
index c8db4f83dcb91..54e938ff9f10b 100644
--- a/projects/js-packages/eslint-config-target-es/.gitattributes
+++ b/projects/js-packages/eslint-config-target-es/.gitattributes
@@ -3,6 +3,5 @@ node_modules export-ignore
# Files to exclude from the mirror repo
/changelog/** production-exclude
-/.eslintrc.cjs production-exclude
/.gitattributes production-exclude
/tests/** production-exclude
diff --git a/projects/js-packages/eslint-config-target-es/changelog/update-eslint-9 b/projects/js-packages/eslint-config-target-es/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/js-packages/eslint-config-target-es/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/js-packages/eslint-config-target-es/package.json b/projects/js-packages/eslint-config-target-es/package.json
index af3b40439157b..15b1d8126df83 100644
--- a/projects/js-packages/eslint-config-target-es/package.json
+++ b/projects/js-packages/eslint-config-target-es/package.json
@@ -25,7 +25,7 @@
},
"devDependencies": {
"@wordpress/browserslist-config": "6.13.0",
- "eslint": "8.57.1",
+ "eslint": "9.16.0",
"eslint-plugin-es-x": "7.8.0",
"globals": "15.4.0",
"jest": "29.7.0"
diff --git a/projects/js-packages/eslint-config-target-es/tests/configs-flat.test.js b/projects/js-packages/eslint-config-target-es/tests/configs-flat.test.js
index a1ba3f652b1fa..1819a00472e50 100644
--- a/projects/js-packages/eslint-config-target-es/tests/configs-flat.test.js
+++ b/projects/js-packages/eslint-config-target-es/tests/configs-flat.test.js
@@ -4,8 +4,6 @@ const path = require( 'path' );
const globals = require( 'globals' );
const { getRules } = require( '../src/funcs.js' );
-/* global globalThis */
-
// "Mock" to ensure the same object is returned every time so `toEqual()` later won't try to descend it.
jest.mock( 'eslint-plugin-es-x', () => {
globalThis.mockEsx ??= jest.requireActual( 'eslint-plugin-es-x' );
diff --git a/projects/js-packages/i18n-check-webpack-plugin/.eslintignore b/projects/js-packages/i18n-check-webpack-plugin/.eslintignore
index 34201e224eb8a..5918eaac02490 100644
--- a/projects/js-packages/i18n-check-webpack-plugin/.eslintignore
+++ b/projects/js-packages/i18n-check-webpack-plugin/.eslintignore
@@ -1,3 +1,3 @@
-# Not loaded by default eslint, but we use tools/js-tools/load-eslint-ignore.js in .eslintrc to munge it in.
+# Our standard eslint config reads .gitignore and .eslintignore to determine what to ignore.
tests/fixtures/
diff --git a/projects/js-packages/i18n-check-webpack-plugin/.gitattributes b/projects/js-packages/i18n-check-webpack-plugin/.gitattributes
index 34504b47f0be4..c4610dcb12f4e 100644
--- a/projects/js-packages/i18n-check-webpack-plugin/.gitattributes
+++ b/projects/js-packages/i18n-check-webpack-plugin/.gitattributes
@@ -1,5 +1,4 @@
# Files to exclude from the mirror repo
-.eslintignore production-exclude
.gitattributes production-exclude
/changelog/** production-exclude
/tests/** production-exclude
diff --git a/projects/js-packages/i18n-check-webpack-plugin/changelog/update-eslint-9 b/projects/js-packages/i18n-check-webpack-plugin/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/js-packages/i18n-check-webpack-plugin/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/js-packages/i18n-loader-webpack-plugin/.eslintignore b/projects/js-packages/i18n-loader-webpack-plugin/.eslintignore
index 34201e224eb8a..5918eaac02490 100644
--- a/projects/js-packages/i18n-loader-webpack-plugin/.eslintignore
+++ b/projects/js-packages/i18n-loader-webpack-plugin/.eslintignore
@@ -1,3 +1,3 @@
-# Not loaded by default eslint, but we use tools/js-tools/load-eslint-ignore.js in .eslintrc to munge it in.
+# Our standard eslint config reads .gitignore and .eslintignore to determine what to ignore.
tests/fixtures/
diff --git a/projects/js-packages/i18n-loader-webpack-plugin/.gitattributes b/projects/js-packages/i18n-loader-webpack-plugin/.gitattributes
index 34504b47f0be4..c4610dcb12f4e 100644
--- a/projects/js-packages/i18n-loader-webpack-plugin/.gitattributes
+++ b/projects/js-packages/i18n-loader-webpack-plugin/.gitattributes
@@ -1,5 +1,4 @@
# Files to exclude from the mirror repo
-.eslintignore production-exclude
.gitattributes production-exclude
/changelog/** production-exclude
/tests/** production-exclude
diff --git a/projects/js-packages/i18n-loader-webpack-plugin/changelog/update-eslint-9 b/projects/js-packages/i18n-loader-webpack-plugin/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/js-packages/i18n-loader-webpack-plugin/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/js-packages/idc/.eslintrc.cjs b/projects/js-packages/idc/.eslintrc.cjs
deleted file mode 100644
index c48a90251efaa..0000000000000
--- a/projects/js-packages/idc/.eslintrc.cjs
+++ /dev/null
@@ -1,12 +0,0 @@
-module.exports = {
- extends: [ require.resolve( 'jetpack-js-tools/eslintrc/react' ) ],
- rules: {
- // Enforce use of the correct textdomain.
- '@wordpress/i18n-text-domain': [
- 'error',
- {
- allowedTextDomain: 'jetpack-idc',
- },
- ],
- },
-};
diff --git a/projects/js-packages/idc/.gitattributes b/projects/js-packages/idc/.gitattributes
index 7e44bd96454e9..992b114f7ffa8 100644
--- a/projects/js-packages/idc/.gitattributes
+++ b/projects/js-packages/idc/.gitattributes
@@ -4,4 +4,3 @@ node_modules export-ignore
# Files to exclude from the mirror repo
/changelog/** production-exclude
-/.eslintrc.cjs production-exclude
diff --git a/projects/js-packages/idc/changelog/update-eslint-9 b/projects/js-packages/idc/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/js-packages/idc/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/js-packages/idc/composer.json b/projects/js-packages/idc/composer.json
index 43f8ab536a632..74049fc7ad686 100644
--- a/projects/js-packages/idc/composer.json
+++ b/projects/js-packages/idc/composer.json
@@ -15,5 +15,8 @@
"monorepo": true
}
}
- ]
+ ],
+ "extra": {
+ "textdomain": "jetpack-idc"
+ }
}
diff --git a/projects/js-packages/image-guide/.eslintrc.cjs b/projects/js-packages/image-guide/.eslintrc.cjs
deleted file mode 100644
index 4db4abfa0a82f..0000000000000
--- a/projects/js-packages/image-guide/.eslintrc.cjs
+++ /dev/null
@@ -1,48 +0,0 @@
-// eslint-disable-next-line import/no-extraneous-dependencies
-const loadIgnorePatterns = require( 'jetpack-js-tools/load-eslint-ignore.js' );
-
-module.exports = {
- root: true,
- extends: [
- require.resolve( 'jetpack-js-tools/eslintrc/base' ),
- require.resolve( 'jetpack-js-tools/eslintrc/wp-eslint-plugin/recommended' ),
- require.resolve( 'jetpack-js-tools/eslintrc/svelte' ),
- ],
- ignorePatterns: loadIgnorePatterns( __dirname ),
- parserOptions: {
- tsconfigRootDir: __dirname,
- project: [ './tsconfig.json' ],
- },
- overrides: [
- // .js and .cjs files in the root are not part of the TypeScript project.
- {
- files: [ '*.js', '*.cjs' ],
- parserOptions: {
- project: null,
- },
- },
- ],
- rules: {
- // Enforce the use of the jetpack-boost textdomain.
- '@wordpress/i18n-text-domain': [
- 'error',
- {
- allowedTextDomain: 'jetpack-boost',
- },
- ],
-
- 'jsdoc/no-undefined-types': [
- 1,
- {
- definedTypes: [ 'TemplateVars', 'ErrorSet', 'Readable' ],
- },
- ],
-
- // This is not a react project.
- 'react-hooks/rules-of-hooks': 0,
- 'import/no-unresolved': 0,
- 'import/order': 0,
- 'no-nested-ternary': 0,
- camelcase: 0,
- },
-};
diff --git a/projects/js-packages/image-guide/.gitattributes b/projects/js-packages/image-guide/.gitattributes
index 6ac76521ac7cc..c3a026de40914 100644
--- a/projects/js-packages/image-guide/.gitattributes
+++ b/projects/js-packages/image-guide/.gitattributes
@@ -9,7 +9,6 @@ package.json export-ignore
# Files to exclude from the mirror repo
/changelog/** production-exclude
-/.eslintrc.cjs production-exclude
.gitignore production-exclude
/src/** production-exclude
tests/** production-exclude
diff --git a/projects/js-packages/image-guide/changelog/update-eslint-9 b/projects/js-packages/image-guide/changelog/update-eslint-9
new file mode 100644
index 0000000000000..1cb10572ab69e
--- /dev/null
+++ b/projects/js-packages/image-guide/changelog/update-eslint-9
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update eslint config for eslint 9.
+
+
diff --git a/projects/js-packages/image-guide/composer.json b/projects/js-packages/image-guide/composer.json
index 41453f1697a97..55d80f8d70d64 100644
--- a/projects/js-packages/image-guide/composer.json
+++ b/projects/js-packages/image-guide/composer.json
@@ -45,6 +45,7 @@
"extra": {
"npmjs-autopublish": true,
"mirror-repo": "Automattic/jetpack-image-guide",
+ "textdomain": "jetpack-image-guide",
"changelogger": {
"link-template": "https://github.com/Automattic/jetpack-image-guide/compare/v${old}...v${new}"
},
diff --git a/projects/js-packages/image-guide/eslint.config.mjs b/projects/js-packages/image-guide/eslint.config.mjs
new file mode 100644
index 0000000000000..950acfd0fa2f2
--- /dev/null
+++ b/projects/js-packages/image-guide/eslint.config.mjs
@@ -0,0 +1,25 @@
+/* eslint-disable import/no-extraneous-dependencies */
+import makeBaseConfig from 'jetpack-js-tools/eslintrc/base.mjs';
+import svelteConfig from 'jetpack-js-tools/eslintrc/svelte.mjs';
+
+export default [
+ ...makeBaseConfig( import.meta.url ),
+ ...svelteConfig,
+ {
+ rules: {
+ 'import/no-extraneous-dependencies': 'error',
+
+ 'space-in-parens': 'off',
+ 'computed-property-spacing': 'off',
+
+ 'jsdoc/require-jsdoc': 'off',
+ 'jsdoc/require-description': 'off',
+ 'jsdoc/require-returns': 'off',
+ 'jsdoc/require-param-description': 'off',
+ 'jsdoc/require-param-type': 'off',
+
+ 'import/order': 'off',
+ 'no-nested-ternary': 'off',
+ },
+ },
+];
diff --git a/projects/js-packages/image-guide/src/ui/Bubble.svelte b/projects/js-packages/image-guide/src/ui/Bubble.svelte
index 9b3e40fbfa049..3344189e582b9 100644
--- a/projects/js-packages/image-guide/src/ui/Bubble.svelte
+++ b/projects/js-packages/image-guide/src/ui/Bubble.svelte
@@ -1,7 +1,9 @@