From 567c1be4ae43e291a4e83478352abe62e0321926 Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Mon, 4 May 2026 17:25:49 +0300 Subject: [PATCH 1/7] Eslint: add @wordpress/use-recommended-components rule --- package.json | 4 +- tools/eslint/lint-js.cjs | 169 +++++ tools/eslint/suppressions.json | 1217 ++++++++++++++++++++++++++++++ tools/js-tools/eslintrc/base.mjs | 13 + 4 files changed, 1402 insertions(+), 1 deletion(-) create mode 100755 tools/eslint/lint-js.cjs create mode 100644 tools/eslint/suppressions.json diff --git a/package.json b/package.json index 4a4435f4d523..c517372cfba3 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,10 @@ "cli-setup": "pnpm install && jetpack cli link", "cli-unlink": "jetpack cli unlink", "lint": "pnpm run lint-file .", + "lint:js:prune-suppressions": "node tools/eslint/lint-js.cjs --prune-suppressions .", + "lint:js:update-suppressions": "node tools/eslint/lint-js.cjs --suppress-rule @wordpress/use-recommended-components .", "lint-changed": "eslint-changed --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.svelte --eslint-options flags='[\"v10_config_lookup_from_file\"]' --git", - "lint-file": "eslint --flag v10_config_lookup_from_file", + "lint-file": "node tools/eslint/lint-js.cjs", "lint-required": "ESLINT_IGNORE_REQUIRED=1 pnpm run lint --max-warnings=0", "lint-style": "stylelint --allow-empty-input --globby-options '{\"gitignore\":true,\"ignore\":[\"tools/docker/data\",\"**/vendor/**\",\"**/jetpack_vendor/**\"]}'", "php:autofix": "composer phpcs:fix", diff --git a/tools/eslint/lint-js.cjs b/tools/eslint/lint-js.cjs new file mode 100755 index 000000000000..06733046b3ea --- /dev/null +++ b/tools/eslint/lint-js.cjs @@ -0,0 +1,169 @@ +#!/usr/bin/env node + +/** + * ESLint wrapper that auto-applies the bulk suppressions file, detects stale + * suppressions, and optionally formats the suppressions file after pruning. + * + * Adapted from WordPress/gutenberg – tools/eslint/lint-js.cjs + */ + +const { spawn } = require( 'node:child_process' ); +const fs = require( 'node:fs' ); +const path = require( 'node:path' ); + +const STALE_SUPPRESSIONS_TOKEN = '--prune-suppressions'; + +const PRUNE_HELP_MESSAGE = + '👉 Run `pnpm run lint:js:prune-suppressions` and commit the updated `tools/eslint/suppressions.json`.'; + +const SUPPRESSIONS_FILE = path.join( __dirname, 'suppressions.json' ); + +// Resolve the ESLint binary via its package.json bin field. +const eslintPkgPath = require.resolve( 'eslint/package.json' ); +const eslintBin = path.join( path.dirname( eslintPkgPath ), require( eslintPkgPath ).bin.eslint ); + +// Resolve Prettier via the js-tools workspace (which declares prettier as a dep). +const jstoolsDir = path.join( __dirname, '..', 'js-tools' ); +const prettierPkgPath = require.resolve( 'prettier/package.json', { paths: [ jstoolsDir ] } ); +const prettierPkgData = require( prettierPkgPath ); +const prettierBinRelative = + typeof prettierPkgData.bin === 'string' ? prettierPkgData.bin : prettierPkgData.bin.prettier; +const prettierBin = path.join( path.dirname( prettierPkgPath ), prettierBinRelative ); + +const userArgs = process.argv.slice( 2 ); +const args = userArgs.some( arg => arg.startsWith( '--suppressions-location' ) ) + ? userArgs + : [ '--suppressions-location', SUPPRESSIONS_FILE, ...userArgs ]; + +const eslintFlags = [ '--flag', 'v10_config_lookup_from_file' ]; + +// Re-enable color when the parent has a TTY (child pipes disable it by default). +const childEnv = { ...process.env }; +if ( childEnv.FORCE_COLOR === undefined && ( process.stdout.isTTY || process.stderr.isTTY ) ) { + childEnv.FORCE_COLOR = '1'; +} + +// A small sliding tail buffer so we can scan for the stale-suppressions token +// without buffering all output. +const tailLength = STALE_SUPPRESSIONS_TOKEN.length - 1; +let outputTail = ''; +let staleSuppressionsDetected = false; + +const child = spawn( process.execPath, [ eslintBin, ...eslintFlags, ...args ], { + stdio: [ 'inherit', 'pipe', 'pipe' ], + env: childEnv, +} ); + +child.stdout.on( 'data', handleChunk( process.stdout ) ); +child.stderr.on( 'data', handleChunk( process.stderr ) ); + +child.on( 'error', error => { + throw error; +} ); + +child.on( 'close', ( code, signal ) => { + if ( shouldShowPruneHint() ) { + process.stderr.write( `\n${ PRUNE_HELP_MESSAGE }\n` ); + } + + if ( signal ) { + process.kill( process.pid, signal ); + return; + } + + // After --prune-suppressions, format the file through Prettier so the diff + // stays clean and consistent with the repo's formatting settings. + if ( args.includes( STALE_SUPPRESSIONS_TOKEN ) && fs.existsSync( SUPPRESSIONS_FILE ) ) { + formatSuppressionsFile( code ); + return; + } + + process.exitCode = code ?? 1; +} ); + +/** + * Creates a data handler that forwards chunks to a stream and scans for stale-suppression tokens. + * + * @param {NodeJS.WritableStream} destination - Stream to forward chunks to. + * @return {(chunk: import('node:buffer').Buffer) => void} Data event handler. + */ +function handleChunk( destination ) { + return chunk => { + destination.write( chunk ); + scanForStaleSuppressions( chunk ); + }; +} + +/** + * Scans a chunk of child output for the stale-suppressions token. + * + * @param {import('node:buffer').Buffer} chunk - Chunk of child output. + */ +function scanForStaleSuppressions( chunk ) { + if ( staleSuppressionsDetected ) { + return; + } + + const window = outputTail + chunk.toString( 'utf8' ); + + if ( window.includes( STALE_SUPPRESSIONS_TOKEN ) ) { + staleSuppressionsDetected = true; + outputTail = ''; + return; + } + + outputTail = window.slice( -tailLength ); +} + +/** + * Returns whether the stale-suppressions prune hint should be printed to stderr. + * + * @return {boolean} Whether to print the repo-specific prune hint. + */ +function shouldShowPruneHint() { + return ( + staleSuppressionsDetected && + ! args.includes( '--pass-on-unpruned-suppressions' ) && + ! args.includes( STALE_SUPPRESSIONS_TOKEN ) + ); +} + +/** + * Formats the suppressions file through Prettier after a prune run. + * + * @param {number|null} lintExitCode - Exit code from the lint child process. + */ +function formatSuppressionsFile( lintExitCode ) { + const formatChild = spawn( process.execPath, [ prettierBin, '--write', SUPPRESSIONS_FILE ], { + stdio: 'inherit', + env: childEnv, + } ); + + formatChild.on( 'error', error => { + throw error; + } ); + + formatChild.on( 'close', ( formatCode, formatSignal ) => { + if ( formatSignal ) { + process.kill( process.pid, formatSignal ); + return; + } + + process.exitCode = resolveExitCode( lintExitCode, formatCode ); + } ); +} + +/** + * Resolves the final exit code from the lint and format sub-processes. + * + * @param {number|null} lintExitCode - Exit code from the lint child process. + * @param {number|null} formatExitCode - Exit code from the format child process. + * @return {number} Exit code to use for the wrapper process. + */ +function resolveExitCode( lintExitCode, formatExitCode ) { + if ( lintExitCode !== null && lintExitCode !== 0 ) { + return lintExitCode; + } + + return formatExitCode ?? lintExitCode ?? 1; +} diff --git a/tools/eslint/suppressions.json b/tools/eslint/suppressions.json new file mode 100644 index 000000000000..60b12524f8d7 --- /dev/null +++ b/tools/eslint/suppressions.json @@ -0,0 +1,1217 @@ +{ + "projects/js-packages/ai-client/src/components/message/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/js-packages/components/components/admin-page/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/js-packages/components/components/button/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/js-packages/components/components/notice/stories/index.stories.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/js-packages/components/components/terms-of-service/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/js-packages/components/components/upsell-banner/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/js-packages/connection/components/disconnect-dialog/steps/step-disconnect.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/js-packages/connection/components/manage-connection-dialog/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/js-packages/connection/components/owner-disconnect-dialog/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/js-packages/licensing/components/activation-screen-error/use-get-error-content.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/js-packages/licensing/components/activation-screen-success-info/product-link/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/js-packages/shared-extension-utils/src/components/wpcom-support-link.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/activity-log/src/js/components/ActivityLog/ActivityActor.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/activity-log/src/js/components/ActivityLog/ActivityEvent.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/activity-log/src/js/components/ActivityLog/UpsellCallout.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/activity-log/src/js/components/ActivityLog/formatted-block/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/activity-log/src/js/components/DateRangePicker/date-inputs.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/activity-log/src/js/components/DateRangePicker/date-range-content.tsx": { + "@wordpress/use-recommended-components": { + "count": 3 + } + }, + "projects/packages/activity-log/src/js/components/DateRangePicker/presets-listbox.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/backup/src/js/components/Admin/index.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/backup/src/js/components/Backups.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/backup/src/js/components/backup-storage-space/storage-help-popover/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/backup/src/js/components/backup-storage-space/storage-usage-details/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/backup/src/js/components/next-scheduled-backup.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/backup/src/js/components/review-request/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/routes/forms/stage.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/routes/responses/integrations-modal.tsx": { + "@wordpress/use-recommended-components": { + "count": 4 + } + }, + "projects/packages/forms/routes/responses/stage.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/akismet.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/google-drive.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/hostinger-reach.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/jetpack-crm.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/mailpoet.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/salesforce.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/integration-card/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/integration-card/integration-card-body.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/integration-card/integration-card-header.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/forms/src/blocks/contact-form/components/notifications-settings.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/blocks/contact-form/edit.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/blocks/field-hidden/edit.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/blocks/field-slider/edit.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/blocks/input-range/edit.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/blocks/option/edit.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/dashboard/components/empty-responses/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 3 + } + }, + "projects/packages/forms/src/dashboard/components/export-responses/modal.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/forms/src/dashboard/components/forms-responses-tabs/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/dashboard/components/inbox-status-toggle/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/dashboard/components/inspector/mobile.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/dashboard/components/inspector/response-fields/field-email/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/dashboard/components/inspector/response-fields/field-file/file.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/dashboard/components/inspector/response-fields/field-image-select/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 5 + } + }, + "projects/packages/forms/src/dashboard/components/inspector/response-fields/field-preview/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 3 + } + }, + "projects/packages/forms/src/dashboard/components/inspector/response-fields/field-rating/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/forms/src/dashboard/components/inspector/response-meta/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 4 + } + }, + "projects/packages/forms/src/dashboard/components/inspector/single.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/dashboard/components/layout/header.tsx": { + "@wordpress/use-recommended-components": { + "count": 3 + } + }, + "projects/packages/forms/src/dashboard/components/page/header.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/dashboard/forms/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/dashboard/inbox/stage/index.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/dashboard/wp-build/components/dataviews-header-row/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/dashboard/wp-build/components/forms-help-modal/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 3 + } + }, + "projects/packages/forms/src/dashboard/wp-build/components/inbox-status-toggle/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/forms/src/form-editor/plugins/embed-form-modal.tsx": { + "@wordpress/use-recommended-components": { + "count": 6 + } + }, + "projects/packages/forms/src/form-editor/plugins/form-pre-publish-panel.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/jetpack-mu-wpcom/src/common/tour-kit/variants/wpcom/components/wpcom-tour-kit-step-card.tsx": { + "@wordpress/use-recommended-components": { + "count": 4 + } + }, + "projects/packages/jetpack-mu-wpcom/src/features/replace-site-visibility/site-visibility/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/my-jetpack/_inc/components/connection-screen/body.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/my-jetpack/_inc/components/help-card/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/my-jetpack/_inc/components/my-jetpack-tab-panel/help/footer.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/my-jetpack/_inc/components/my-jetpack-tab-panel/products/filtered-plans.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/my-jetpack/_inc/components/my-jetpack-tab-panel/products/filtered-products.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/my-jetpack/_inc/components/my-jetpack-tab-panel/products/product-card.tsx": { + "@wordpress/use-recommended-components": { + "count": 4 + } + }, + "projects/packages/my-jetpack/_inc/components/onboarding-tour/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/my-jetpack/_inc/components/plans-section/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/my-jetpack/_inc/components/product-cards-section/backup-card/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/my-jetpack/_inc/components/product-detail-card/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/my-jetpack/_inc/components/product-interstitial/jetpack-ai/product-page.jsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/my-jetpack/_inc/components/product-interstitial/products/jetpack-ai.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/my-jetpack/_inc/components/product-interstitial/protect/product-page.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/my-jetpack/_inc/components/stats-section/count-comparison-card.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/my-jetpack/_inc/hooks/use-notification-watcher/get-paid-plan-needs-plugins-content.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/my-jetpack/_inc/hooks/use-notification-watcher/use-paid-plan-needs-plugin-install-activation-notice.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/newsletter/src/settings/components/toggle-with-link.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/newsletter/src/settings/sections/email-byline-section.tsx": { + "@wordpress/use-recommended-components": { + "count": 5 + } + }, + "projects/packages/newsletter/src/settings/sections/email-content-section.tsx": { + "@wordpress/use-recommended-components": { + "count": 4 + } + }, + "projects/packages/newsletter/src/settings/sections/email-reply-to-settings-section.tsx": { + "@wordpress/use-recommended-components": { + "count": 4 + } + }, + "projects/packages/newsletter/src/settings/sections/email-sender-settings-section.tsx": { + "@wordpress/use-recommended-components": { + "count": 6 + } + }, + "projects/packages/newsletter/src/settings/sections/newsletter-categories-section.tsx": { + "@wordpress/use-recommended-components": { + "count": 7 + } + }, + "projects/packages/newsletter/src/settings/sections/newsletter-section.tsx": { + "@wordpress/use-recommended-components": { + "count": 6 + } + }, + "projects/packages/newsletter/src/settings/sections/paid-newsletter-section.tsx": { + "@wordpress/use-recommended-components": { + "count": 5 + } + }, + "projects/packages/newsletter/src/settings/sections/subscriptions-section.tsx": { + "@wordpress/use-recommended-components": { + "count": 6 + } + }, + "projects/packages/newsletter/src/settings/sections/welcome-email-section.tsx": { + "@wordpress/use-recommended-components": { + "count": 6 + } + }, + "projects/packages/paypal-payments/src/block/deprecated/v2/edit.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/paypal-payments/src/block/deprecated/v2/index.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/paypal-payments/src/block/edit.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/paypal-payments/src/paypal-payment-buttons/edit.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/admin-page/header/index.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/admin-page/pricing-page/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/admin-page/toggles/social-image-generator-toggle/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/admin-page/toggles/social-module-toggle/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/admin-page/toggles/social-notes-toggle/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/publicize/_inc/components/block-editor/placeholder.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/connection-management/connection-info.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/connection-management/connection-name.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/connection-management/connection-status.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/connection-management/disconnect.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/connection-management/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/customize-and-preview/customization-section/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/customize-and-preview/customization-section/per-connection-notice.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/customize-and-preview/preview-section/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/form/empty-state.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/form/media-requirements-notice.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/manage-connections-modal/confirmation-form/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/publicize/_inc/components/manage-connections-modal/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/manual-sharing/info.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/media-picker/index.js": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/publicize/_inc/components/media-section-v2/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/panel/description.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/services/connect-form.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/services/custom-inputs.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/services/service-item.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/services/utils.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/services/x-notice.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/share-buttons/share-buttons.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/share-status/share-status-action.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/unified-modal/sharing-activity/activity-action.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/x-usage/x-usage-content.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/search/src/dashboard/components/pages/sections/plan-usage-section.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/videopress/src/client/admin/components/edit-video-details/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/videopress/src/client/block-editor/blocks/video/components/details-panel/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/videopress/src/client/block-editor/blocks/video/components/playback-panel/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/videopress/src/client/block-editor/blocks/video/components/videopress-uploader/index.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/videopress/src/client/block-editor/blocks/video/components/videopress-uploader/uploader-error.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/videopress/src/client/block-editor/extend/core-embed/edit.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/videopress/src/client/block-editor/extend/core-video/index.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/yoast-promo/src/js/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/automattic-for-agencies-client/src/js/components/connection-card/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/boost/app/assets/src/js/features/boost-pricing-table/boost-pricing-table.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/boost/app/assets/src/js/features/cornerstone-pages/meta/meta.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/plugins/boost/app/assets/src/js/features/cornerstone-pages/prerender/prerender.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/boost/app/assets/src/js/features/critical-css/regenerate-critical-css-suggestion/regenerate-critical-css-suggestion.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/boost/app/assets/src/js/features/critical-css/show-stopper-error/show-stopper-error.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/plugins/boost/app/assets/src/js/features/image-guide/image-guide.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/boost/app/assets/src/js/features/lcp/status/error-details.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/plugins/boost/app/assets/src/js/features/minify-legacy-notice/minify-legacy-notice.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/boost/app/assets/src/js/features/module/module.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/plugins/boost/app/assets/src/js/features/page-cache/health/error-notices.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/plugins/boost/app/assets/src/js/features/page-cache/meta/meta.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/plugins/boost/app/assets/src/js/features/page-cache/page-cache.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/boost/app/assets/src/js/layout/settings-page/tips/tips.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/boost/app/assets/src/js/lib/utils/external-link-interpolate-var.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/boost/app/assets/src/js/lib/utils/get-critical-css-error-set-interpolate-vars.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/boost/app/assets/src/js/pages/cache-debug-log/cache-debug-log.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/boost/app/assets/src/js/pages/index/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/boost/app/assets/src/js/pages/purchase-success/purchase-success.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/ai/main.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/ai/mcp/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 5 + } + }, + "projects/plugins/jetpack/_inc/client/ai/mcp/read.jsx": { + "@wordpress/use-recommended-components": { + "count": 5 + } + }, + "projects/plugins/jetpack/_inc/client/ai/mcp/setup.jsx": { + "@wordpress/use-recommended-components": { + "count": 4 + } + }, + "projects/plugins/jetpack/_inc/client/ai/mcp/write.jsx": { + "@wordpress/use-recommended-components": { + "count": 5 + } + }, + "projects/plugins/jetpack/_inc/client/at-a-glance/backups.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/at-a-glance/boost/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/at-a-glance/crm/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/at-a-glance/jetpack-ai.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/at-a-glance/stats/dash-stats-bottom.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/at-a-glance/stats/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/components/block-theme-notice/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/components/connect-button/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/components/connection-banner/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/components/jetpack-benefits/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/components/jetpack-notices/deprecation-notice.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/components/jetpack-notices/state-notices.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/components/jetpack-product-card/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/components/owner-disconnect-dialog/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/components/product-expiration/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/components/section-nav/item.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/components/settings-card/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 3 + } + }, + "projects/plugins/jetpack/_inc/client/components/settings-nav-tabs/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/components/support-info/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/earn/ads.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/my-plan/my-plan-body.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/my-plan/my-plan-header/index.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/privacy/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/recommendations/feature-summary/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/recommendations/feature-summary/resource.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/recommendations/prompts/feature-prompt/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/recommendations/prompts/resource-prompt/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/recommendations/sidebar/mobile-app/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/recommendations/sidebar/product-spotlight/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/security/monitor.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/security/sso.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/security/waf.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/traffic/google-analytics.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/traffic/sitemaps.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/traffic/verification-services.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/_inc/client/traffic/verification-services/google.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/ai-assistant/components/feedback-control/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/ai-assistant/components/message/block-message.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/ai-assistant/edit.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/ai-chat/question-answer.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/blog-stats/inactive-placeholder.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/calendly/controls.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/calendly/edit.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/donations/controls.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/donations/first-time-modal.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/eventbrite/form.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/google-calendar/edit.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/google-docs-embed/preview.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/instagram-gallery/controls.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/like/edit.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/mailchimp/controls.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/map/controls.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/map/edit.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/opentable/edit.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/podcast-player/edit.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/related-posts/inactive-placeholder.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/subscriptions/email-preview.js": { + "@wordpress/use-recommended-components": { + "count": 3 + } + }, + "projects/plugins/jetpack/extensions/blocks/subscriptions/menu.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/top-posts/inactive-placeholder.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/videopress/edit.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/videopress/resumable-upload/index.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/blocks/wordads/components/jetpack-wordads-placeholder.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-assistant-plugin-sidebar/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/controls.tsx": { + "@wordpress/use-recommended-components": { + "count": 3 + } + }, + "projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/title-optimization/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/plugins/ai-content-lens/extend/ai-post-excerpt/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/plugins/likes/components/placeholder.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/plugins/payments/index.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/plugins/seo/components/placeholder.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/plugins/sharing/components/placeholder.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/shared/components/block-nudge/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/shared/components/product-management-controls/inspector-control.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/shared/components/product-management-controls/toolbar-control.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/extensions/shared/memberships/settings.js": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/modules/subscriptions/newsletter-widget/src/components/dashboard-link.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/jetpack/modules/subscriptions/newsletter-widget/test/dashboard-link.test.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/protect/src/js/components/paid-accordion/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/protect/src/js/components/protect-app/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/protect/src/js/hooks/use-notices.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/protect/src/js/routes/firewall/firewall-upgrade-prompt.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/protect/src/js/routes/firewall/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/plugins/protect/src/js/routes/settings/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + } +} diff --git a/tools/js-tools/eslintrc/base.mjs b/tools/js-tools/eslintrc/base.mjs index 2adbc4a0de34..9b5e209d559a 100644 --- a/tools/js-tools/eslintrc/base.mjs +++ b/tools/js-tools/eslintrc/base.mjs @@ -195,6 +195,11 @@ export function makeBaseConfig( configurl, opts = {} ) { wordpressEslintPlugin.configs.custom, wordpressEslintPlugin.configs.esnext, wordpressEslintPlugin.configs.i18n, + { + rules: { + '@wordpress/use-recommended-components': 'error', + }, + }, { plugins: { @@ -437,6 +442,14 @@ export function makeBaseConfig( configurl, opts = {} ) { }, }, + // .cjs files are always Node.js scripts — add Node.js globals too. + { + files: [ '**/*.cjs' ], + languageOptions: { + globals: globals.node, + }, + }, + // Various config files should allow 'node' globals. { files: [ '**/*.config.?([cm])js', '**/webpack.config.*.?([cm])js' ], From a6bebeedab1578a7abcfdf3c629490941e4670c9 Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Fri, 29 May 2026 18:54:37 +0300 Subject: [PATCH 2/7] Update lint-js.cjs --- tools/eslint/lint-js.cjs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tools/eslint/lint-js.cjs b/tools/eslint/lint-js.cjs index 06733046b3ea..ce34b6d98ab8 100755 --- a/tools/eslint/lint-js.cjs +++ b/tools/eslint/lint-js.cjs @@ -18,12 +18,10 @@ const PRUNE_HELP_MESSAGE = const SUPPRESSIONS_FILE = path.join( __dirname, 'suppressions.json' ); -// Resolve the ESLint binary via its package.json bin field. -const eslintPkgPath = require.resolve( 'eslint/package.json' ); -const eslintBin = path.join( path.dirname( eslintPkgPath ), require( eslintPkgPath ).bin.eslint ); - -// Resolve Prettier via the js-tools workspace (which declares prettier as a dep). +// Resolve ESLint and Prettier via the js-tools workspace (which declares them as deps). const jstoolsDir = path.join( __dirname, '..', 'js-tools' ); +const eslintPkgPath = require.resolve( 'eslint/package.json', { paths: [ jstoolsDir ] } ); +const eslintBin = path.join( path.dirname( eslintPkgPath ), require( eslintPkgPath ).bin.eslint ); const prettierPkgPath = require.resolve( 'prettier/package.json', { paths: [ jstoolsDir ] } ); const prettierPkgData = require( prettierPkgPath ); const prettierBinRelative = From f880aac688fce7897d05e1ba1005fc16c83c690c Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Fri, 29 May 2026 21:05:50 +0300 Subject: [PATCH 3/7] Update suppressions.json --- tools/eslint/suppressions.json | 490 +++++++++++++++++++++++++++++++-- 1 file changed, 465 insertions(+), 25 deletions(-) diff --git a/tools/eslint/suppressions.json b/tools/eslint/suppressions.json index 60b12524f8d7..acdfd8dbf2fd 100644 --- a/tools/eslint/suppressions.json +++ b/tools/eslint/suppressions.json @@ -19,6 +19,11 @@ "count": 1 } }, + "projects/js-packages/components/components/pricing-card/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, "projects/js-packages/components/components/terms-of-service/index.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -29,6 +34,21 @@ "count": 2 } }, + "projects/js-packages/connection/components/connect-button/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/js-packages/connection/components/connect-screen/basic/visual.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/js-packages/connection/components/connect-screen/required-plan/visual.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, "projects/js-packages/connection/components/disconnect-dialog/steps/step-disconnect.jsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -54,6 +74,21 @@ "count": 1 } }, + "projects/js-packages/partner-coupon/components/redeem-partner-coupon-post-connection/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/js-packages/partner-coupon/components/redeem-partner-coupon-pre-connection/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/js-packages/scan/src/components/threat-modal/threat-fix-details.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, "projects/js-packages/shared-extension-utils/src/components/wpcom-support-link.jsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -79,6 +114,11 @@ "count": 1 } }, + "projects/packages/activity-log/src/js/components/ActivityLog/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, "projects/packages/activity-log/src/js/components/DateRangePicker/date-inputs.tsx": { "@wordpress/use-recommended-components": { "count": 2 @@ -94,6 +134,26 @@ "count": 2 } }, + "projects/packages/backup/src/dashboard/components/file-info-card/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/backup/src/dashboard/screens/download.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/backup/src/dashboard/screens/overview.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/backup/src/dashboard/screens/restore.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, "projects/packages/backup/src/js/components/Admin/index.js": { "@wordpress/use-recommended-components": { "count": 1 @@ -106,7 +166,7 @@ }, "projects/packages/backup/src/js/components/backup-storage-space/storage-help-popover/index.jsx": { "@wordpress/use-recommended-components": { - "count": 2 + "count": 1 } }, "projects/packages/backup/src/js/components/backup-storage-space/storage-usage-details/index.jsx": { @@ -131,17 +191,17 @@ }, "projects/packages/forms/routes/responses/integrations-modal.tsx": { "@wordpress/use-recommended-components": { - "count": 4 + "count": 3 } }, "projects/packages/forms/routes/responses/stage.tsx": { "@wordpress/use-recommended-components": { - "count": 2 + "count": 1 } }, "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/akismet.tsx": { "@wordpress/use-recommended-components": { - "count": 2 + "count": 1 } }, "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/google-drive.tsx": { @@ -151,7 +211,7 @@ }, "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/hostinger-reach.tsx": { "@wordpress/use-recommended-components": { - "count": 2 + "count": 1 } }, "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/jetpack-crm.tsx": { @@ -161,7 +221,7 @@ }, "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/mailpoet.tsx": { "@wordpress/use-recommended-components": { - "count": 2 + "count": 1 } }, "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/salesforce.tsx": { @@ -221,7 +281,7 @@ }, "projects/packages/forms/src/dashboard/components/empty-responses/index.tsx": { "@wordpress/use-recommended-components": { - "count": 3 + "count": 2 } }, "projects/packages/forms/src/dashboard/components/export-responses/modal.tsx": { @@ -261,7 +321,7 @@ }, "projects/packages/forms/src/dashboard/components/inspector/response-fields/field-preview/index.tsx": { "@wordpress/use-recommended-components": { - "count": 3 + "count": 2 } }, "projects/packages/forms/src/dashboard/components/inspector/response-fields/field-rating/index.tsx": { @@ -271,7 +331,7 @@ }, "projects/packages/forms/src/dashboard/components/inspector/response-meta/index.tsx": { "@wordpress/use-recommended-components": { - "count": 4 + "count": 3 } }, "projects/packages/forms/src/dashboard/components/inspector/single.tsx": { @@ -374,6 +434,11 @@ "count": 1 } }, + "projects/packages/my-jetpack/_inc/components/product-card/recommendation-actions.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, "projects/packages/my-jetpack/_inc/components/product-cards-section/backup-card/index.jsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -384,9 +449,29 @@ "count": 1 } }, + "projects/packages/my-jetpack/_inc/components/product-interstitial-modal/product-interstitial-modal-cta.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/my-jetpack/_inc/components/product-interstitial/jetpack-ai/more-requests.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, "projects/packages/my-jetpack/_inc/components/product-interstitial/jetpack-ai/product-page.jsx": { "@wordpress/use-recommended-components": { - "count": 2 + "count": 1 + } + }, + "projects/packages/my-jetpack/_inc/components/product-interstitial/pricing-interstitial.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/my-jetpack/_inc/components/product-interstitial/product-interstitial.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 } }, "projects/packages/my-jetpack/_inc/components/product-interstitial/products/jetpack-ai.tsx": { @@ -396,7 +481,7 @@ }, "projects/packages/my-jetpack/_inc/components/product-interstitial/protect/product-page.tsx": { "@wordpress/use-recommended-components": { - "count": 2 + "count": 1 } }, "projects/packages/my-jetpack/_inc/components/stats-section/count-comparison-card.jsx": { @@ -414,11 +499,66 @@ "count": 1 } }, + "projects/packages/newsletter/_inc/components/newsletter-page.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/newsletter/_inc/subscribers/components/connection-gate.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/newsletter/_inc/subscribers/components/empty-state.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/newsletter/_inc/subscribers/components/header-actions.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/newsletter/_inc/subscribers/components/modals/add-subscribers-modal.tsx": { + "@wordpress/use-recommended-components": { + "count": 4 + } + }, + "projects/packages/newsletter/_inc/subscribers/components/modals/comp-modal.tsx": { + "@wordpress/use-recommended-components": { + "count": 3 + } + }, + "projects/packages/newsletter/_inc/subscribers/components/modals/remove-comp-modal.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/newsletter/_inc/subscribers/components/modals/unsubscribe-modal.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/newsletter/_inc/subscribers/components/subscribers-data-views.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/newsletter/routes/dashboard/stage.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, "projects/packages/newsletter/src/settings/components/toggle-with-link.tsx": { "@wordpress/use-recommended-components": { "count": 1 } }, + "projects/packages/newsletter/src/settings/newsletter-settings.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, "projects/packages/newsletter/src/settings/sections/email-byline-section.tsx": { "@wordpress/use-recommended-components": { "count": 5 @@ -426,7 +566,7 @@ }, "projects/packages/newsletter/src/settings/sections/email-content-section.tsx": { "@wordpress/use-recommended-components": { - "count": 4 + "count": 2 } }, "projects/packages/newsletter/src/settings/sections/email-reply-to-settings-section.tsx": { @@ -436,12 +576,12 @@ }, "projects/packages/newsletter/src/settings/sections/email-sender-settings-section.tsx": { "@wordpress/use-recommended-components": { - "count": 6 + "count": 2 } }, "projects/packages/newsletter/src/settings/sections/newsletter-categories-section.tsx": { "@wordpress/use-recommended-components": { - "count": 7 + "count": 3 } }, "projects/packages/newsletter/src/settings/sections/newsletter-section.tsx": { @@ -456,12 +596,12 @@ }, "projects/packages/newsletter/src/settings/sections/subscriptions-section.tsx": { "@wordpress/use-recommended-components": { - "count": 6 + "count": 2 } }, "projects/packages/newsletter/src/settings/sections/welcome-email-section.tsx": { "@wordpress/use-recommended-components": { - "count": 6 + "count": 2 } }, "projects/packages/paypal-payments/src/block/deprecated/v2/edit.js": { @@ -484,6 +624,66 @@ "count": 1 } }, + "projects/packages/podcast/src/blocks/podcast-episode/edit.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/podcast/src/dashboard/category-picker.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/podcast/src/dashboard/distribution/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 6 + } + }, + "projects/packages/podcast/src/dashboard/distribution/podcast-apps/pocketcasts/submit-modal.tsx": { + "@wordpress/use-recommended-components": { + "count": 3 + } + }, + "projects/packages/podcast/src/dashboard/distribution/submit-modal.tsx": { + "@wordpress/use-recommended-components": { + "count": 5 + } + }, + "projects/packages/podcast/src/dashboard/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/podcast/src/dashboard/settings/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 6 + } + }, + "projects/packages/podcast/src/dashboard/stats/components/horizontal-bar-list.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/podcast/src/dashboard/stats/components/section-card.tsx": { + "@wordpress/use-recommended-components": { + "count": 3 + } + }, + "projects/packages/podcast/src/dashboard/stats/components/summary-tiles.tsx": { + "@wordpress/use-recommended-components": { + "count": 3 + } + }, + "projects/packages/podcast/src/dashboard/welcome/category-setup-modal.tsx": { + "@wordpress/use-recommended-components": { + "count": 3 + } + }, + "projects/packages/podcast/src/dashboard/welcome/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 5 + } + }, "projects/packages/publicize/_inc/components/admin-page/header/index.js": { "@wordpress/use-recommended-components": { "count": 1 @@ -506,7 +706,7 @@ }, "projects/packages/publicize/_inc/components/admin-page/toggles/social-notes-toggle/index.tsx": { "@wordpress/use-recommended-components": { - "count": 2 + "count": 1 } }, "projects/packages/publicize/_inc/components/block-editor/placeholder.tsx": { @@ -514,6 +714,11 @@ "count": 1 } }, + "projects/packages/publicize/_inc/components/connection-management/connection-info-modern.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, "projects/packages/publicize/_inc/components/connection-management/connection-info.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -565,6 +770,11 @@ } }, "projects/packages/publicize/_inc/components/manage-connections-modal/confirmation-form/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/manage-connections-modal/index-modern.tsx": { "@wordpress/use-recommended-components": { "count": 2 } @@ -584,11 +794,26 @@ "count": 2 } }, + "projects/packages/publicize/_inc/components/media-picker/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, "projects/packages/publicize/_inc/components/media-section-v2/index.tsx": { "@wordpress/use-recommended-components": { "count": 1 } }, + "projects/packages/publicize/_inc/components/overview-tab/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/overview-tab/traffic-chart-card.tsx": { + "@wordpress/use-recommended-components": { + "count": 3 + } + }, "projects/packages/publicize/_inc/components/panel/description.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -599,11 +824,26 @@ "count": 1 } }, + "projects/packages/publicize/_inc/components/services/custom-inputs-modern.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, "projects/packages/publicize/_inc/components/services/custom-inputs.tsx": { "@wordpress/use-recommended-components": { "count": 1 } }, + "projects/packages/publicize/_inc/components/services/service-connection-info-modern.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/services/service-item-modern.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, "projects/packages/publicize/_inc/components/services/service-item.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -619,6 +859,21 @@ "count": 1 } }, + "projects/packages/publicize/_inc/components/settings-tab/content-creation-card.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/settings-tab/customize-media-card.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/settings-tab/publicize-inactive-empty-state.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, "projects/packages/publicize/_inc/components/share-buttons/share-buttons.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -629,6 +884,21 @@ "count": 1 } }, + "projects/packages/publicize/_inc/components/social-gate/connection-gate.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/social-gate/pricing-gate.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/publicize/_inc/components/social-page.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, "projects/packages/publicize/_inc/components/unified-modal/sharing-activity/activity-action.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -639,11 +909,116 @@ "count": 1 } }, + "projects/packages/publicize/routes/dashboard/stage.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/scan/_inc/components/scan-page.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/scan/routes/index/stage.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/scan/src/js/screens/overview/active-threats.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/scan/src/js/screens/overview/bulk-fix-modal.tsx": { + "@wordpress/use-recommended-components": { + "count": 3 + } + }, + "projects/packages/scan/src/js/screens/overview/fix-threat-modal.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/scan/src/js/screens/overview/ignore-threat-modal.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/scan/src/js/screens/overview/scan-history.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/scan/src/js/screens/overview/scan-status.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/scan/src/js/screens/overview/unignore-threat-modal.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/search/src/dashboard/components/ai-agent-access-control/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/search/src/dashboard/components/ai-answers-tab/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/search/src/dashboard/components/global-notices/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/search/src/dashboard/components/pages/dashboard-page.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/search/src/dashboard/components/pages/sections/first-run-section.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/search/src/dashboard/components/pages/sections/overview-section.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, "projects/packages/search/src/dashboard/components/pages/sections/plan-usage-section.jsx": { "@wordpress/use-recommended-components": { "count": 1 } }, + "projects/packages/search/src/dashboard/components/reader-chat-control/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/search/src/dashboard/components/record-meter/notice-box.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/search/src/dashboard/components/woocommerce-product-search-control/index.jsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/videopress/routes/library/stage.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/videopress/src/client/admin/components/admin-page/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, "projects/packages/videopress/src/client/admin/components/edit-video-details/index.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -679,6 +1054,61 @@ "count": 1 } }, + "projects/packages/videopress/src/dashboard/components/connection-gate/connect-screen.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/videopress/src/dashboard/components/dashboard-layout/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/videopress/src/dashboard/components/dashboard-tabs/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/videopress/src/dashboard/components/library/thumbnail-field.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/videopress/src/dashboard/components/overview/date-range-selector.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/videopress/src/dashboard/components/overview/free-tier-notice.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/videopress/src/dashboard/components/video-details/chapters-help-modal.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/videopress/src/dashboard/components/video-details/header-actions.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, + "projects/packages/videopress/src/dashboard/components/video-details/select-frame-dialog.tsx": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, + "projects/packages/videopress/src/dashboard/components/video-details/thumbnail-card.tsx": { + "@wordpress/use-recommended-components": { + "count": 3 + } + }, + "projects/packages/videopress/src/dashboard/components/video-details/video-details-card.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, "projects/packages/yoast-promo/src/js/index.jsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -696,7 +1126,7 @@ }, "projects/plugins/boost/app/assets/src/js/features/cornerstone-pages/meta/meta.tsx": { "@wordpress/use-recommended-components": { - "count": 2 + "count": 1 } }, "projects/plugins/boost/app/assets/src/js/features/cornerstone-pages/prerender/prerender.tsx": { @@ -711,7 +1141,7 @@ }, "projects/plugins/boost/app/assets/src/js/features/critical-css/show-stopper-error/show-stopper-error.tsx": { "@wordpress/use-recommended-components": { - "count": 2 + "count": 1 } }, "projects/plugins/boost/app/assets/src/js/features/image-guide/image-guide.tsx": { @@ -721,7 +1151,7 @@ }, "projects/plugins/boost/app/assets/src/js/features/lcp/status/error-details.tsx": { "@wordpress/use-recommended-components": { - "count": 2 + "count": 1 } }, "projects/plugins/boost/app/assets/src/js/features/minify-legacy-notice/minify-legacy-notice.tsx": { @@ -731,17 +1161,17 @@ }, "projects/plugins/boost/app/assets/src/js/features/module/module.tsx": { "@wordpress/use-recommended-components": { - "count": 2 + "count": 1 } }, "projects/plugins/boost/app/assets/src/js/features/page-cache/health/error-notices.tsx": { "@wordpress/use-recommended-components": { - "count": 2 + "count": 1 } }, "projects/plugins/boost/app/assets/src/js/features/page-cache/meta/meta.tsx": { "@wordpress/use-recommended-components": { - "count": 2 + "count": 1 } }, "projects/plugins/boost/app/assets/src/js/features/page-cache/page-cache.tsx": { @@ -1029,6 +1459,11 @@ "count": 1 } }, + "projects/plugins/jetpack/extensions/blocks/donations/style-controls.js": { + "@wordpress/use-recommended-components": { + "count": 2 + } + }, "projects/plugins/jetpack/extensions/blocks/eventbrite/form.js": { "@wordpress/use-recommended-components": { "count": 1 @@ -1086,7 +1521,7 @@ }, "projects/plugins/jetpack/extensions/blocks/subscriptions/email-preview.js": { "@wordpress/use-recommended-components": { - "count": 3 + "count": 2 } }, "projects/plugins/jetpack/extensions/blocks/subscriptions/menu.js": { @@ -1194,6 +1629,11 @@ "count": 1 } }, + "projects/plugins/protect/src/js/components/upgrade-notice/index.tsx": { + "@wordpress/use-recommended-components": { + "count": 1 + } + }, "projects/plugins/protect/src/js/hooks/use-notices.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -1211,7 +1651,7 @@ }, "projects/plugins/protect/src/js/routes/settings/index.jsx": { "@wordpress/use-recommended-components": { - "count": 2 + "count": 1 } } } From 44826d66c4bc1bb799f6ee7330f162d621c99f06 Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Mon, 1 Jun 2026 13:57:10 +0300 Subject: [PATCH 4/7] Move down to the base rules section --- tools/js-tools/eslintrc/base.mjs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/tools/js-tools/eslintrc/base.mjs b/tools/js-tools/eslintrc/base.mjs index 9b5e209d559a..c5a7f7516ba1 100644 --- a/tools/js-tools/eslintrc/base.mjs +++ b/tools/js-tools/eslintrc/base.mjs @@ -195,11 +195,6 @@ export function makeBaseConfig( configurl, opts = {} ) { wordpressEslintPlugin.configs.custom, wordpressEslintPlugin.configs.esnext, wordpressEslintPlugin.configs.i18n, - { - rules: { - '@wordpress/use-recommended-components': 'error', - }, - }, { plugins: { @@ -280,6 +275,8 @@ export function makeBaseConfig( configurl, opts = {} ) { }, }, rules: { + '@wordpress/use-recommended-components': 'error', + // Set domain from opts, with a bogus default in case it's omitted. '@wordpress/i18n-text-domain': [ 'error', From b914cdc160b965ba7d3b480c81b4b6fbf9dbdb30 Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Mon, 1 Jun 2026 14:03:33 +0300 Subject: [PATCH 5/7] Extend existing config for node globals --- tools/js-tools/eslintrc/base.mjs | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/tools/js-tools/eslintrc/base.mjs b/tools/js-tools/eslintrc/base.mjs index c5a7f7516ba1..70f657dec2ed 100644 --- a/tools/js-tools/eslintrc/base.mjs +++ b/tools/js-tools/eslintrc/base.mjs @@ -439,17 +439,14 @@ export function makeBaseConfig( configurl, opts = {} ) { }, }, - // .cjs files are always Node.js scripts — add Node.js globals too. + // Node tooling configs and scripts should allow 'node' globals (jest/babel/webpack, pnpm, lint helpers). { - files: [ '**/*.cjs' ], - languageOptions: { - globals: globals.node, - }, - }, - - // Various config files should allow 'node' globals. - { - files: [ '**/*.config.?([cm])js', '**/webpack.config.*.?([cm])js' ], + files: [ + '**/*.config.?([cm])js', + '**/webpack.config.*.?([cm])js', + 'tools/eslint/*.cjs', + '.pnpmfile.cjs', + ], languageOptions: { globals: globals.node, }, From f097860529ba5ab1c7fee91e15b1198206fc784b Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Mon, 1 Jun 2026 15:40:12 +0300 Subject: [PATCH 6/7] Update suppressions.json --- tools/eslint/suppressions.json | 709 +-------------------------------- 1 file changed, 7 insertions(+), 702 deletions(-) diff --git a/tools/eslint/suppressions.json b/tools/eslint/suppressions.json index acdfd8dbf2fd..4c2b1a291756 100644 --- a/tools/eslint/suppressions.json +++ b/tools/eslint/suppressions.json @@ -1,34 +1,14 @@ { - "projects/js-packages/ai-client/src/components/message/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/js-packages/components/components/admin-page/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/js-packages/components/components/button/index.tsx": { "@wordpress/use-recommended-components": { "count": 1 } }, - "projects/js-packages/components/components/notice/stories/index.stories.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/js-packages/components/components/pricing-card/index.tsx": { "@wordpress/use-recommended-components": { "count": 1 } }, - "projects/js-packages/components/components/terms-of-service/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/js-packages/components/components/upsell-banner/index.tsx": { "@wordpress/use-recommended-components": { "count": 2 @@ -49,31 +29,11 @@ "count": 1 } }, - "projects/js-packages/connection/components/disconnect-dialog/steps/step-disconnect.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/js-packages/connection/components/manage-connection-dialog/index.jsx": { "@wordpress/use-recommended-components": { "count": 1 } }, - "projects/js-packages/connection/components/owner-disconnect-dialog/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/js-packages/licensing/components/activation-screen-error/use-get-error-content.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/js-packages/licensing/components/activation-screen-success-info/product-link/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/js-packages/partner-coupon/components/redeem-partner-coupon-post-connection/index.jsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -89,11 +49,6 @@ "count": 1 } }, - "projects/js-packages/shared-extension-utils/src/components/wpcom-support-link.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/activity-log/src/js/components/ActivityLog/ActivityActor.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -109,11 +64,6 @@ "count": 1 } }, - "projects/packages/activity-log/src/js/components/ActivityLog/formatted-block/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/activity-log/src/js/components/ActivityLog/index.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -154,36 +104,11 @@ "count": 1 } }, - "projects/packages/backup/src/js/components/Admin/index.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/backup/src/js/components/Backups.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/backup/src/js/components/backup-storage-space/storage-help-popover/index.jsx": { "@wordpress/use-recommended-components": { "count": 1 } }, - "projects/packages/backup/src/js/components/backup-storage-space/storage-usage-details/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/backup/src/js/components/next-scheduled-backup.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/backup/src/js/components/review-request/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/forms/routes/forms/stage.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -214,21 +139,11 @@ "count": 1 } }, - "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/jetpack-crm.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/mailpoet.tsx": { "@wordpress/use-recommended-components": { "count": 1 } }, - "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/salesforce.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/index.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -249,16 +164,6 @@ "count": 2 } }, - "projects/packages/forms/src/blocks/contact-form/components/notifications-settings.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/blocks/contact-form/edit.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/forms/src/blocks/field-hidden/edit.js": { "@wordpress/use-recommended-components": { "count": 1 @@ -281,7 +186,7 @@ }, "projects/packages/forms/src/dashboard/components/empty-responses/index.tsx": { "@wordpress/use-recommended-components": { - "count": 2 + "count": 1 } }, "projects/packages/forms/src/dashboard/components/export-responses/modal.tsx": { @@ -309,11 +214,6 @@ "count": 1 } }, - "projects/packages/forms/src/dashboard/components/inspector/response-fields/field-file/file.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/forms/src/dashboard/components/inspector/response-fields/field-image-select/index.tsx": { "@wordpress/use-recommended-components": { "count": 5 @@ -354,11 +254,6 @@ "count": 1 } }, - "projects/packages/forms/src/dashboard/inbox/stage/index.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/forms/src/dashboard/wp-build/components/dataviews-header-row/index.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -389,26 +284,11 @@ "count": 4 } }, - "projects/packages/jetpack-mu-wpcom/src/features/replace-site-visibility/site-visibility/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/my-jetpack/_inc/components/connection-screen/body.tsx": { "@wordpress/use-recommended-components": { "count": 1 } }, - "projects/packages/my-jetpack/_inc/components/help-card/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/my-jetpack/_inc/components/my-jetpack-tab-panel/help/footer.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/my-jetpack/_inc/components/my-jetpack-tab-panel/products/filtered-plans.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -424,31 +304,11 @@ "count": 4 } }, - "projects/packages/my-jetpack/_inc/components/onboarding-tour/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/my-jetpack/_inc/components/plans-section/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/my-jetpack/_inc/components/product-card/recommendation-actions.tsx": { "@wordpress/use-recommended-components": { "count": 1 } }, - "projects/packages/my-jetpack/_inc/components/product-cards-section/backup-card/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/my-jetpack/_inc/components/product-detail-card/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/my-jetpack/_inc/components/product-interstitial-modal/product-interstitial-modal-cta.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -474,11 +334,6 @@ "count": 1 } }, - "projects/packages/my-jetpack/_inc/components/product-interstitial/products/jetpack-ai.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/my-jetpack/_inc/components/product-interstitial/protect/product-page.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -489,16 +344,6 @@ "count": 1 } }, - "projects/packages/my-jetpack/_inc/hooks/use-notification-watcher/get-paid-plan-needs-plugins-content.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/my-jetpack/_inc/hooks/use-notification-watcher/use-paid-plan-needs-plugin-install-activation-notice.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/newsletter/_inc/components/newsletter-page.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -549,31 +394,16 @@ "count": 1 } }, - "projects/packages/newsletter/src/settings/components/toggle-with-link.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/newsletter/src/settings/newsletter-settings.tsx": { "@wordpress/use-recommended-components": { "count": 1 } }, - "projects/packages/newsletter/src/settings/sections/email-byline-section.tsx": { - "@wordpress/use-recommended-components": { - "count": 5 - } - }, "projects/packages/newsletter/src/settings/sections/email-content-section.tsx": { "@wordpress/use-recommended-components": { "count": 2 } }, - "projects/packages/newsletter/src/settings/sections/email-reply-to-settings-section.tsx": { - "@wordpress/use-recommended-components": { - "count": 4 - } - }, "projects/packages/newsletter/src/settings/sections/email-sender-settings-section.tsx": { "@wordpress/use-recommended-components": { "count": 2 @@ -584,16 +414,6 @@ "count": 3 } }, - "projects/packages/newsletter/src/settings/sections/newsletter-section.tsx": { - "@wordpress/use-recommended-components": { - "count": 6 - } - }, - "projects/packages/newsletter/src/settings/sections/paid-newsletter-section.tsx": { - "@wordpress/use-recommended-components": { - "count": 5 - } - }, "projects/packages/newsletter/src/settings/sections/subscriptions-section.tsx": { "@wordpress/use-recommended-components": { "count": 2 @@ -604,26 +424,6 @@ "count": 2 } }, - "projects/packages/paypal-payments/src/block/deprecated/v2/edit.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/paypal-payments/src/block/deprecated/v2/index.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/paypal-payments/src/block/edit.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/paypal-payments/src/paypal-payment-buttons/edit.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/podcast/src/blocks/podcast-episode/edit.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -709,11 +509,6 @@ "count": 1 } }, - "projects/packages/publicize/_inc/components/block-editor/placeholder.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/publicize/_inc/components/connection-management/connection-info-modern.tsx": { "@wordpress/use-recommended-components": { "count": 2 @@ -724,16 +519,6 @@ "count": 1 } }, - "projects/packages/publicize/_inc/components/connection-management/connection-name.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/connection-management/connection-status.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/publicize/_inc/components/connection-management/disconnect.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -749,11 +534,6 @@ "count": 1 } }, - "projects/packages/publicize/_inc/components/customize-and-preview/customization-section/per-connection-notice.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/publicize/_inc/components/customize-and-preview/preview-section/index.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -764,11 +544,6 @@ "count": 1 } }, - "projects/packages/publicize/_inc/components/form/media-requirements-notice.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/publicize/_inc/components/manage-connections-modal/confirmation-form/index.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -779,31 +554,11 @@ "count": 2 } }, - "projects/packages/publicize/_inc/components/manage-connections-modal/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/manual-sharing/info.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/media-picker/index.js": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, "projects/packages/publicize/_inc/components/media-picker/index.tsx": { "@wordpress/use-recommended-components": { "count": 2 } }, - "projects/packages/publicize/_inc/components/media-section-v2/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/publicize/_inc/components/overview-tab/index.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -829,11 +584,6 @@ "count": 1 } }, - "projects/packages/publicize/_inc/components/services/custom-inputs.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/publicize/_inc/components/services/service-connection-info-modern.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -849,11 +599,6 @@ "count": 1 } }, - "projects/packages/publicize/_inc/components/services/utils.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/publicize/_inc/components/services/x-notice.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -879,11 +624,6 @@ "count": 1 } }, - "projects/packages/publicize/_inc/components/share-status/share-status-action.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/publicize/_inc/components/social-gate/connection-gate.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -899,16 +639,6 @@ "count": 2 } }, - "projects/packages/publicize/_inc/components/unified-modal/sharing-activity/activity-action.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/x-usage/x-usage-content.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/publicize/routes/dashboard/stage.tsx": { "@wordpress/use-recommended-components": { "count": 2 @@ -989,11 +719,6 @@ "count": 1 } }, - "projects/packages/search/src/dashboard/components/pages/sections/plan-usage-section.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/search/src/dashboard/components/reader-chat-control/index.jsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -1024,36 +749,6 @@ "count": 1 } }, - "projects/packages/videopress/src/client/block-editor/blocks/video/components/details-panel/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/videopress/src/client/block-editor/blocks/video/components/playback-panel/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/videopress/src/client/block-editor/blocks/video/components/videopress-uploader/index.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/videopress/src/client/block-editor/blocks/video/components/videopress-uploader/uploader-error.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/videopress/src/client/block-editor/extend/core-embed/edit.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/videopress/src/client/block-editor/extend/core-video/index.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/packages/videopress/src/dashboard/components/connection-gate/connect-screen.tsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -1109,47 +804,32 @@ "count": 1 } }, - "projects/packages/yoast-promo/src/js/index.jsx": { + "projects/plugins/boost/app/assets/src/js/features/boost-pricing-table/boost-pricing-table.tsx": { "@wordpress/use-recommended-components": { "count": 1 } }, - "projects/plugins/automattic-for-agencies-client/src/js/components/connection-card/index.jsx": { + "projects/plugins/boost/app/assets/src/js/features/cornerstone-pages/meta/meta.tsx": { "@wordpress/use-recommended-components": { "count": 1 } }, - "projects/plugins/boost/app/assets/src/js/features/boost-pricing-table/boost-pricing-table.tsx": { + "projects/plugins/boost/app/assets/src/js/features/critical-css/regenerate-critical-css-suggestion/regenerate-critical-css-suggestion.tsx": { "@wordpress/use-recommended-components": { "count": 1 } }, - "projects/plugins/boost/app/assets/src/js/features/cornerstone-pages/meta/meta.tsx": { + "projects/plugins/boost/app/assets/src/js/features/critical-css/show-stopper-error/show-stopper-error.tsx": { "@wordpress/use-recommended-components": { "count": 1 } }, - "projects/plugins/boost/app/assets/src/js/features/cornerstone-pages/prerender/prerender.tsx": { + "projects/plugins/boost/app/assets/src/js/features/image-guide/image-guide.tsx": { "@wordpress/use-recommended-components": { "count": 1 } }, - "projects/plugins/boost/app/assets/src/js/features/critical-css/regenerate-critical-css-suggestion/regenerate-critical-css-suggestion.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/features/critical-css/show-stopper-error/show-stopper-error.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/features/image-guide/image-guide.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/features/lcp/status/error-details.tsx": { + "projects/plugins/boost/app/assets/src/js/features/lcp/status/error-details.tsx": { "@wordpress/use-recommended-components": { "count": 1 } @@ -1179,36 +859,11 @@ "count": 1 } }, - "projects/plugins/boost/app/assets/src/js/layout/settings-page/tips/tips.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/lib/utils/external-link-interpolate-var.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/lib/utils/get-critical-css-error-set-interpolate-vars.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/plugins/boost/app/assets/src/js/pages/cache-debug-log/cache-debug-log.tsx": { "@wordpress/use-recommended-components": { "count": 1 } }, - "projects/plugins/boost/app/assets/src/js/pages/index/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/pages/purchase-success/purchase-success.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/plugins/jetpack/_inc/client/ai/main.jsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -1234,86 +889,11 @@ "count": 5 } }, - "projects/plugins/jetpack/_inc/client/at-a-glance/backups.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/at-a-glance/boost/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/at-a-glance/crm/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/at-a-glance/jetpack-ai.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/at-a-glance/stats/dash-stats-bottom.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/at-a-glance/stats/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/components/block-theme-notice/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/components/connect-button/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/plugins/jetpack/_inc/client/components/connection-banner/index.jsx": { "@wordpress/use-recommended-components": { "count": 1 } }, - "projects/plugins/jetpack/_inc/client/components/jetpack-benefits/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/components/jetpack-notices/deprecation-notice.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/components/jetpack-notices/state-notices.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/components/jetpack-product-card/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/components/owner-disconnect-dialog/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/components/product-expiration/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/components/section-nav/item.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/plugins/jetpack/_inc/client/components/settings-card/index.jsx": { "@wordpress/use-recommended-components": { "count": 3 @@ -1324,201 +904,16 @@ "count": 1 } }, - "projects/plugins/jetpack/_inc/client/components/support-info/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/earn/ads.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/my-plan/my-plan-body.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/my-plan/my-plan-header/index.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/privacy/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/recommendations/feature-summary/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/recommendations/feature-summary/resource.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/recommendations/prompts/feature-prompt/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/recommendations/prompts/resource-prompt/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/recommendations/sidebar/mobile-app/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/recommendations/sidebar/product-spotlight/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/security/monitor.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/security/sso.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/security/waf.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/traffic/google-analytics.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/traffic/sitemaps.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/traffic/verification-services.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/traffic/verification-services/google.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/ai-assistant/components/feedback-control/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/ai-assistant/components/message/block-message.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/ai-assistant/edit.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/ai-chat/question-answer.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/blog-stats/inactive-placeholder.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/calendly/controls.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/calendly/edit.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/plugins/jetpack/extensions/blocks/donations/controls.js": { "@wordpress/use-recommended-components": { "count": 1 } }, - "projects/plugins/jetpack/extensions/blocks/donations/first-time-modal.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/plugins/jetpack/extensions/blocks/donations/style-controls.js": { "@wordpress/use-recommended-components": { "count": 2 } }, - "projects/plugins/jetpack/extensions/blocks/eventbrite/form.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/google-calendar/edit.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/google-docs-embed/preview.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/instagram-gallery/controls.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/like/edit.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/mailchimp/controls.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/map/controls.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/map/edit.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/opentable/edit.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/podcast-player/edit.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/related-posts/inactive-placeholder.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/plugins/jetpack/extensions/blocks/subscriptions/email-preview.js": { "@wordpress/use-recommended-components": { "count": 2 @@ -1529,101 +924,16 @@ "count": 1 } }, - "projects/plugins/jetpack/extensions/blocks/top-posts/inactive-placeholder.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/videopress/edit.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/videopress/resumable-upload/index.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/wordads/components/jetpack-wordads-placeholder.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-assistant-plugin-sidebar/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/controls.tsx": { "@wordpress/use-recommended-components": { "count": 3 } }, - "projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/title-optimization/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/plugins/ai-content-lens/extend/ai-post-excerpt/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/plugins/likes/components/placeholder.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/plugins/payments/index.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/plugins/seo/components/placeholder.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/plugins/sharing/components/placeholder.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/shared/components/block-nudge/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/shared/components/product-management-controls/inspector-control.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/shared/components/product-management-controls/toolbar-control.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/plugins/jetpack/extensions/shared/memberships/settings.js": { "@wordpress/use-recommended-components": { "count": 1 } }, - "projects/plugins/jetpack/modules/subscriptions/newsletter-widget/src/components/dashboard-link.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/modules/subscriptions/newsletter-widget/test/dashboard-link.test.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/protect/src/js/components/paid-accordion/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/plugins/protect/src/js/components/protect-app/index.jsx": { "@wordpress/use-recommended-components": { "count": 1 @@ -1634,11 +944,6 @@ "count": 1 } }, - "projects/plugins/protect/src/js/hooks/use-notices.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, "projects/plugins/protect/src/js/routes/firewall/firewall-upgrade-prompt.jsx": { "@wordpress/use-recommended-components": { "count": 1 From 1e35df1f89f30dac9605bddd82c19493f3d07c02 Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Mon, 1 Jun 2026 19:27:22 +0300 Subject: [PATCH 7/7] Use existing @automattic/eslint-changed approach --- package.json | 4 +- tools/eslint-excludelist.json | 204 ++++++- tools/eslint/lint-js.cjs | 167 ------ tools/eslint/suppressions.json | 962 ------------------------------- tools/js-tools/eslintrc/base.mjs | 9 +- 5 files changed, 206 insertions(+), 1140 deletions(-) delete mode 100755 tools/eslint/lint-js.cjs delete mode 100644 tools/eslint/suppressions.json diff --git a/package.json b/package.json index c517372cfba3..4a4435f4d523 100644 --- a/package.json +++ b/package.json @@ -17,10 +17,8 @@ "cli-setup": "pnpm install && jetpack cli link", "cli-unlink": "jetpack cli unlink", "lint": "pnpm run lint-file .", - "lint:js:prune-suppressions": "node tools/eslint/lint-js.cjs --prune-suppressions .", - "lint:js:update-suppressions": "node tools/eslint/lint-js.cjs --suppress-rule @wordpress/use-recommended-components .", "lint-changed": "eslint-changed --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.svelte --eslint-options flags='[\"v10_config_lookup_from_file\"]' --git", - "lint-file": "node tools/eslint/lint-js.cjs", + "lint-file": "eslint --flag v10_config_lookup_from_file", "lint-required": "ESLINT_IGNORE_REQUIRED=1 pnpm run lint --max-warnings=0", "lint-style": "stylelint --allow-empty-input --globby-options '{\"gitignore\":true,\"ignore\":[\"tools/docker/data\",\"**/vendor/**\",\"**/jetpack_vendor/**\"]}'", "php:autofix": "composer phpcs:fix", diff --git a/tools/eslint-excludelist.json b/tools/eslint-excludelist.json index fe51488c7066..8d2d89111769 100644 --- a/tools/eslint-excludelist.json +++ b/tools/eslint-excludelist.json @@ -1 +1,203 @@ -[] +[ + "projects/js-packages/components/components/button/index.tsx", + "projects/js-packages/components/components/pricing-card/index.tsx", + "projects/js-packages/components/components/upsell-banner/index.tsx", + "projects/js-packages/connection/components/connect-button/index.jsx", + "projects/js-packages/connection/components/connect-screen/basic/visual.tsx", + "projects/js-packages/connection/components/connect-screen/required-plan/visual.jsx", + "projects/js-packages/connection/components/manage-connection-dialog/index.jsx", + "projects/js-packages/partner-coupon/components/redeem-partner-coupon-post-connection/index.jsx", + "projects/js-packages/partner-coupon/components/redeem-partner-coupon-pre-connection/index.jsx", + "projects/js-packages/scan/src/components/threat-modal/threat-fix-details.tsx", + "projects/packages/activity-log/src/js/components/ActivityLog/ActivityActor.tsx", + "projects/packages/activity-log/src/js/components/ActivityLog/ActivityEvent.tsx", + "projects/packages/activity-log/src/js/components/ActivityLog/UpsellCallout.tsx", + "projects/packages/activity-log/src/js/components/ActivityLog/index.tsx", + "projects/packages/activity-log/src/js/components/DateRangePicker/date-inputs.tsx", + "projects/packages/activity-log/src/js/components/DateRangePicker/date-range-content.tsx", + "projects/packages/activity-log/src/js/components/DateRangePicker/presets-listbox.tsx", + "projects/packages/backup/src/dashboard/components/file-info-card/index.tsx", + "projects/packages/backup/src/dashboard/screens/download.tsx", + "projects/packages/backup/src/dashboard/screens/overview.tsx", + "projects/packages/backup/src/dashboard/screens/restore.tsx", + "projects/packages/backup/src/js/components/backup-storage-space/storage-help-popover/index.jsx", + "projects/packages/forms/routes/forms/stage.tsx", + "projects/packages/forms/routes/responses/integrations-modal.tsx", + "projects/packages/forms/routes/responses/stage.tsx", + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/akismet.tsx", + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/google-drive.tsx", + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/hostinger-reach.tsx", + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/mailpoet.tsx", + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/index.tsx", + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/integration-card/index.tsx", + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/integration-card/integration-card-body.tsx", + "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/integration-card/integration-card-header.tsx", + "projects/packages/forms/src/blocks/field-hidden/edit.js", + "projects/packages/forms/src/blocks/field-slider/edit.js", + "projects/packages/forms/src/blocks/input-range/edit.js", + "projects/packages/forms/src/blocks/option/edit.js", + "projects/packages/forms/src/dashboard/components/empty-responses/index.tsx", + "projects/packages/forms/src/dashboard/components/export-responses/modal.tsx", + "projects/packages/forms/src/dashboard/components/forms-responses-tabs/index.tsx", + "projects/packages/forms/src/dashboard/components/inbox-status-toggle/index.tsx", + "projects/packages/forms/src/dashboard/components/inspector/mobile.tsx", + "projects/packages/forms/src/dashboard/components/inspector/response-fields/field-email/index.tsx", + "projects/packages/forms/src/dashboard/components/inspector/response-fields/field-image-select/index.tsx", + "projects/packages/forms/src/dashboard/components/inspector/response-fields/field-preview/index.tsx", + "projects/packages/forms/src/dashboard/components/inspector/response-fields/field-rating/index.tsx", + "projects/packages/forms/src/dashboard/components/inspector/response-meta/index.tsx", + "projects/packages/forms/src/dashboard/components/inspector/single.tsx", + "projects/packages/forms/src/dashboard/components/layout/header.tsx", + "projects/packages/forms/src/dashboard/components/page/header.tsx", + "projects/packages/forms/src/dashboard/forms/index.tsx", + "projects/packages/forms/src/dashboard/wp-build/components/dataviews-header-row/index.tsx", + "projects/packages/forms/src/dashboard/wp-build/components/forms-help-modal/index.tsx", + "projects/packages/forms/src/dashboard/wp-build/components/inbox-status-toggle/index.tsx", + "projects/packages/forms/src/form-editor/plugins/embed-form-modal.tsx", + "projects/packages/forms/src/form-editor/plugins/form-pre-publish-panel.tsx", + "projects/packages/jetpack-mu-wpcom/src/common/tour-kit/variants/wpcom/components/wpcom-tour-kit-step-card.tsx", + "projects/packages/my-jetpack/_inc/components/connection-screen/body.tsx", + "projects/packages/my-jetpack/_inc/components/my-jetpack-tab-panel/products/filtered-plans.tsx", + "projects/packages/my-jetpack/_inc/components/my-jetpack-tab-panel/products/filtered-products.tsx", + "projects/packages/my-jetpack/_inc/components/my-jetpack-tab-panel/products/product-card.tsx", + "projects/packages/my-jetpack/_inc/components/product-card/recommendation-actions.tsx", + "projects/packages/my-jetpack/_inc/components/product-interstitial-modal/product-interstitial-modal-cta.tsx", + "projects/packages/my-jetpack/_inc/components/product-interstitial/jetpack-ai/more-requests.jsx", + "projects/packages/my-jetpack/_inc/components/product-interstitial/jetpack-ai/product-page.jsx", + "projects/packages/my-jetpack/_inc/components/product-interstitial/pricing-interstitial.jsx", + "projects/packages/my-jetpack/_inc/components/product-interstitial/product-interstitial.jsx", + "projects/packages/my-jetpack/_inc/components/product-interstitial/protect/product-page.tsx", + "projects/packages/my-jetpack/_inc/components/stats-section/count-comparison-card.jsx", + "projects/packages/newsletter/_inc/components/newsletter-page.tsx", + "projects/packages/newsletter/_inc/subscribers/components/connection-gate.tsx", + "projects/packages/newsletter/_inc/subscribers/components/empty-state.tsx", + "projects/packages/newsletter/_inc/subscribers/components/header-actions.tsx", + "projects/packages/newsletter/_inc/subscribers/components/modals/add-subscribers-modal.tsx", + "projects/packages/newsletter/_inc/subscribers/components/modals/comp-modal.tsx", + "projects/packages/newsletter/_inc/subscribers/components/modals/remove-comp-modal.tsx", + "projects/packages/newsletter/_inc/subscribers/components/modals/unsubscribe-modal.tsx", + "projects/packages/newsletter/_inc/subscribers/components/subscribers-data-views.tsx", + "projects/packages/newsletter/routes/dashboard/stage.tsx", + "projects/packages/newsletter/src/settings/newsletter-settings.tsx", + "projects/packages/newsletter/src/settings/sections/email-content-section.tsx", + "projects/packages/newsletter/src/settings/sections/email-sender-settings-section.tsx", + "projects/packages/newsletter/src/settings/sections/newsletter-categories-section.tsx", + "projects/packages/newsletter/src/settings/sections/subscriptions-section.tsx", + "projects/packages/newsletter/src/settings/sections/welcome-email-section.tsx", + "projects/packages/podcast/src/blocks/podcast-episode/edit.tsx", + "projects/packages/podcast/src/dashboard/category-picker.tsx", + "projects/packages/podcast/src/dashboard/distribution/index.tsx", + "projects/packages/podcast/src/dashboard/distribution/podcast-apps/pocketcasts/submit-modal.tsx", + "projects/packages/podcast/src/dashboard/distribution/submit-modal.tsx", + "projects/packages/podcast/src/dashboard/index.tsx", + "projects/packages/podcast/src/dashboard/settings/index.tsx", + "projects/packages/podcast/src/dashboard/stats/components/horizontal-bar-list.tsx", + "projects/packages/podcast/src/dashboard/stats/components/section-card.tsx", + "projects/packages/podcast/src/dashboard/stats/components/summary-tiles.tsx", + "projects/packages/podcast/src/dashboard/welcome/category-setup-modal.tsx", + "projects/packages/podcast/src/dashboard/welcome/index.tsx", + "projects/packages/publicize/_inc/components/admin-page/header/index.js", + "projects/packages/publicize/_inc/components/admin-page/pricing-page/index.tsx", + "projects/packages/publicize/_inc/components/admin-page/toggles/social-image-generator-toggle/index.tsx", + "projects/packages/publicize/_inc/components/admin-page/toggles/social-module-toggle/index.tsx", + "projects/packages/publicize/_inc/components/admin-page/toggles/social-notes-toggle/index.tsx", + "projects/packages/publicize/_inc/components/connection-management/connection-info-modern.tsx", + "projects/packages/publicize/_inc/components/connection-management/connection-info.tsx", + "projects/packages/publicize/_inc/components/connection-management/disconnect.tsx", + "projects/packages/publicize/_inc/components/connection-management/index.tsx", + "projects/packages/publicize/_inc/components/customize-and-preview/customization-section/index.tsx", + "projects/packages/publicize/_inc/components/customize-and-preview/preview-section/index.tsx", + "projects/packages/publicize/_inc/components/form/empty-state.tsx", + "projects/packages/publicize/_inc/components/manage-connections-modal/confirmation-form/index.tsx", + "projects/packages/publicize/_inc/components/manage-connections-modal/index-modern.tsx", + "projects/packages/publicize/_inc/components/media-picker/index.tsx", + "projects/packages/publicize/_inc/components/overview-tab/index.tsx", + "projects/packages/publicize/_inc/components/overview-tab/traffic-chart-card.tsx", + "projects/packages/publicize/_inc/components/panel/description.tsx", + "projects/packages/publicize/_inc/components/services/connect-form.tsx", + "projects/packages/publicize/_inc/components/services/custom-inputs-modern.tsx", + "projects/packages/publicize/_inc/components/services/service-connection-info-modern.tsx", + "projects/packages/publicize/_inc/components/services/service-item-modern.tsx", + "projects/packages/publicize/_inc/components/services/service-item.tsx", + "projects/packages/publicize/_inc/components/services/x-notice.tsx", + "projects/packages/publicize/_inc/components/settings-tab/content-creation-card.tsx", + "projects/packages/publicize/_inc/components/settings-tab/customize-media-card.tsx", + "projects/packages/publicize/_inc/components/settings-tab/publicize-inactive-empty-state.tsx", + "projects/packages/publicize/_inc/components/share-buttons/share-buttons.tsx", + "projects/packages/publicize/_inc/components/social-gate/connection-gate.tsx", + "projects/packages/publicize/_inc/components/social-gate/pricing-gate.tsx", + "projects/packages/publicize/_inc/components/social-page.tsx", + "projects/packages/publicize/routes/dashboard/stage.tsx", + "projects/packages/scan/_inc/components/scan-page.tsx", + "projects/packages/scan/routes/index/stage.tsx", + "projects/packages/scan/src/js/screens/overview/active-threats.tsx", + "projects/packages/scan/src/js/screens/overview/bulk-fix-modal.tsx", + "projects/packages/scan/src/js/screens/overview/fix-threat-modal.tsx", + "projects/packages/scan/src/js/screens/overview/ignore-threat-modal.tsx", + "projects/packages/scan/src/js/screens/overview/scan-history.tsx", + "projects/packages/scan/src/js/screens/overview/scan-status.tsx", + "projects/packages/scan/src/js/screens/overview/unignore-threat-modal.tsx", + "projects/packages/search/src/dashboard/components/ai-agent-access-control/index.jsx", + "projects/packages/search/src/dashboard/components/ai-answers-tab/index.jsx", + "projects/packages/search/src/dashboard/components/global-notices/index.jsx", + "projects/packages/search/src/dashboard/components/pages/dashboard-page.jsx", + "projects/packages/search/src/dashboard/components/pages/sections/first-run-section.jsx", + "projects/packages/search/src/dashboard/components/pages/sections/overview-section.jsx", + "projects/packages/search/src/dashboard/components/reader-chat-control/index.jsx", + "projects/packages/search/src/dashboard/components/record-meter/notice-box.jsx", + "projects/packages/search/src/dashboard/components/woocommerce-product-search-control/index.jsx", + "projects/packages/videopress/routes/library/stage.tsx", + "projects/packages/videopress/src/client/admin/components/admin-page/index.tsx", + "projects/packages/videopress/src/client/admin/components/edit-video-details/index.tsx", + "projects/packages/videopress/src/dashboard/components/connection-gate/connect-screen.tsx", + "projects/packages/videopress/src/dashboard/components/dashboard-layout/index.tsx", + "projects/packages/videopress/src/dashboard/components/dashboard-tabs/index.tsx", + "projects/packages/videopress/src/dashboard/components/library/thumbnail-field.tsx", + "projects/packages/videopress/src/dashboard/components/overview/date-range-selector.tsx", + "projects/packages/videopress/src/dashboard/components/overview/free-tier-notice.tsx", + "projects/packages/videopress/src/dashboard/components/video-details/chapters-help-modal.tsx", + "projects/packages/videopress/src/dashboard/components/video-details/header-actions.tsx", + "projects/packages/videopress/src/dashboard/components/video-details/select-frame-dialog.tsx", + "projects/packages/videopress/src/dashboard/components/video-details/thumbnail-card.tsx", + "projects/packages/videopress/src/dashboard/components/video-details/video-details-card.tsx", + "projects/plugins/boost/app/assets/src/js/features/boost-pricing-table/boost-pricing-table.tsx", + "projects/plugins/boost/app/assets/src/js/features/cornerstone-pages/meta/meta.tsx", + "projects/plugins/boost/app/assets/src/js/features/critical-css/regenerate-critical-css-suggestion/regenerate-critical-css-suggestion.tsx", + "projects/plugins/boost/app/assets/src/js/features/critical-css/show-stopper-error/show-stopper-error.tsx", + "projects/plugins/boost/app/assets/src/js/features/image-guide/image-guide.tsx", + "projects/plugins/boost/app/assets/src/js/features/lcp/status/error-details.tsx", + "projects/plugins/boost/app/assets/src/js/features/minify-legacy-notice/minify-legacy-notice.tsx", + "projects/plugins/boost/app/assets/src/js/features/module/module.tsx", + "projects/plugins/boost/app/assets/src/js/features/page-cache/health/error-notices.tsx", + "projects/plugins/boost/app/assets/src/js/features/page-cache/meta/meta.tsx", + "projects/plugins/boost/app/assets/src/js/features/page-cache/page-cache.tsx", + "projects/plugins/boost/app/assets/src/js/pages/cache-debug-log/cache-debug-log.tsx", + "projects/plugins/jetpack/_inc/client/ai/main.jsx", + "projects/plugins/jetpack/_inc/client/ai/mcp/index.jsx", + "projects/plugins/jetpack/_inc/client/ai/mcp/read.jsx", + "projects/plugins/jetpack/_inc/client/ai/mcp/setup.jsx", + "projects/plugins/jetpack/_inc/client/ai/mcp/write.jsx", + "projects/plugins/jetpack/_inc/client/components/connection-banner/index.jsx", + "projects/plugins/jetpack/_inc/client/components/global-notices/state/notices/actions.js", + "projects/plugins/jetpack/_inc/client/components/global-notices/state/notices/reducer.js", + "projects/plugins/jetpack/_inc/client/components/modal/index.jsx", + "projects/plugins/jetpack/_inc/client/components/popover/util.js", + "projects/plugins/jetpack/_inc/client/components/settings-card/index.jsx", + "projects/plugins/jetpack/_inc/client/components/settings-nav-tabs/index.jsx", + "projects/plugins/jetpack/_inc/client/config.js", + "projects/plugins/jetpack/_inc/client/lib/accessible-focus/index.js", + "projects/plugins/jetpack/_inc/client/mixins/emitter/index.js", + "projects/plugins/jetpack/_inc/client/my-plan/index.jsx", + "projects/plugins/jetpack/_inc/twitter-timeline.js", + "projects/plugins/jetpack/extensions/blocks/donations/controls.js", + "projects/plugins/jetpack/extensions/blocks/donations/style-controls.js", + "projects/plugins/jetpack/extensions/blocks/subscriptions/email-preview.js", + "projects/plugins/jetpack/extensions/blocks/subscriptions/menu.js", + "projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/controls.tsx", + "projects/plugins/jetpack/extensions/shared/memberships/settings.js", + "projects/plugins/protect/src/js/components/protect-app/index.jsx", + "projects/plugins/protect/src/js/components/upgrade-notice/index.tsx", + "projects/plugins/protect/src/js/routes/firewall/firewall-upgrade-prompt.jsx", + "projects/plugins/protect/src/js/routes/firewall/index.jsx", + "projects/plugins/protect/src/js/routes/settings/index.jsx" +] diff --git a/tools/eslint/lint-js.cjs b/tools/eslint/lint-js.cjs deleted file mode 100755 index ce34b6d98ab8..000000000000 --- a/tools/eslint/lint-js.cjs +++ /dev/null @@ -1,167 +0,0 @@ -#!/usr/bin/env node - -/** - * ESLint wrapper that auto-applies the bulk suppressions file, detects stale - * suppressions, and optionally formats the suppressions file after pruning. - * - * Adapted from WordPress/gutenberg – tools/eslint/lint-js.cjs - */ - -const { spawn } = require( 'node:child_process' ); -const fs = require( 'node:fs' ); -const path = require( 'node:path' ); - -const STALE_SUPPRESSIONS_TOKEN = '--prune-suppressions'; - -const PRUNE_HELP_MESSAGE = - '👉 Run `pnpm run lint:js:prune-suppressions` and commit the updated `tools/eslint/suppressions.json`.'; - -const SUPPRESSIONS_FILE = path.join( __dirname, 'suppressions.json' ); - -// Resolve ESLint and Prettier via the js-tools workspace (which declares them as deps). -const jstoolsDir = path.join( __dirname, '..', 'js-tools' ); -const eslintPkgPath = require.resolve( 'eslint/package.json', { paths: [ jstoolsDir ] } ); -const eslintBin = path.join( path.dirname( eslintPkgPath ), require( eslintPkgPath ).bin.eslint ); -const prettierPkgPath = require.resolve( 'prettier/package.json', { paths: [ jstoolsDir ] } ); -const prettierPkgData = require( prettierPkgPath ); -const prettierBinRelative = - typeof prettierPkgData.bin === 'string' ? prettierPkgData.bin : prettierPkgData.bin.prettier; -const prettierBin = path.join( path.dirname( prettierPkgPath ), prettierBinRelative ); - -const userArgs = process.argv.slice( 2 ); -const args = userArgs.some( arg => arg.startsWith( '--suppressions-location' ) ) - ? userArgs - : [ '--suppressions-location', SUPPRESSIONS_FILE, ...userArgs ]; - -const eslintFlags = [ '--flag', 'v10_config_lookup_from_file' ]; - -// Re-enable color when the parent has a TTY (child pipes disable it by default). -const childEnv = { ...process.env }; -if ( childEnv.FORCE_COLOR === undefined && ( process.stdout.isTTY || process.stderr.isTTY ) ) { - childEnv.FORCE_COLOR = '1'; -} - -// A small sliding tail buffer so we can scan for the stale-suppressions token -// without buffering all output. -const tailLength = STALE_SUPPRESSIONS_TOKEN.length - 1; -let outputTail = ''; -let staleSuppressionsDetected = false; - -const child = spawn( process.execPath, [ eslintBin, ...eslintFlags, ...args ], { - stdio: [ 'inherit', 'pipe', 'pipe' ], - env: childEnv, -} ); - -child.stdout.on( 'data', handleChunk( process.stdout ) ); -child.stderr.on( 'data', handleChunk( process.stderr ) ); - -child.on( 'error', error => { - throw error; -} ); - -child.on( 'close', ( code, signal ) => { - if ( shouldShowPruneHint() ) { - process.stderr.write( `\n${ PRUNE_HELP_MESSAGE }\n` ); - } - - if ( signal ) { - process.kill( process.pid, signal ); - return; - } - - // After --prune-suppressions, format the file through Prettier so the diff - // stays clean and consistent with the repo's formatting settings. - if ( args.includes( STALE_SUPPRESSIONS_TOKEN ) && fs.existsSync( SUPPRESSIONS_FILE ) ) { - formatSuppressionsFile( code ); - return; - } - - process.exitCode = code ?? 1; -} ); - -/** - * Creates a data handler that forwards chunks to a stream and scans for stale-suppression tokens. - * - * @param {NodeJS.WritableStream} destination - Stream to forward chunks to. - * @return {(chunk: import('node:buffer').Buffer) => void} Data event handler. - */ -function handleChunk( destination ) { - return chunk => { - destination.write( chunk ); - scanForStaleSuppressions( chunk ); - }; -} - -/** - * Scans a chunk of child output for the stale-suppressions token. - * - * @param {import('node:buffer').Buffer} chunk - Chunk of child output. - */ -function scanForStaleSuppressions( chunk ) { - if ( staleSuppressionsDetected ) { - return; - } - - const window = outputTail + chunk.toString( 'utf8' ); - - if ( window.includes( STALE_SUPPRESSIONS_TOKEN ) ) { - staleSuppressionsDetected = true; - outputTail = ''; - return; - } - - outputTail = window.slice( -tailLength ); -} - -/** - * Returns whether the stale-suppressions prune hint should be printed to stderr. - * - * @return {boolean} Whether to print the repo-specific prune hint. - */ -function shouldShowPruneHint() { - return ( - staleSuppressionsDetected && - ! args.includes( '--pass-on-unpruned-suppressions' ) && - ! args.includes( STALE_SUPPRESSIONS_TOKEN ) - ); -} - -/** - * Formats the suppressions file through Prettier after a prune run. - * - * @param {number|null} lintExitCode - Exit code from the lint child process. - */ -function formatSuppressionsFile( lintExitCode ) { - const formatChild = spawn( process.execPath, [ prettierBin, '--write', SUPPRESSIONS_FILE ], { - stdio: 'inherit', - env: childEnv, - } ); - - formatChild.on( 'error', error => { - throw error; - } ); - - formatChild.on( 'close', ( formatCode, formatSignal ) => { - if ( formatSignal ) { - process.kill( process.pid, formatSignal ); - return; - } - - process.exitCode = resolveExitCode( lintExitCode, formatCode ); - } ); -} - -/** - * Resolves the final exit code from the lint and format sub-processes. - * - * @param {number|null} lintExitCode - Exit code from the lint child process. - * @param {number|null} formatExitCode - Exit code from the format child process. - * @return {number} Exit code to use for the wrapper process. - */ -function resolveExitCode( lintExitCode, formatExitCode ) { - if ( lintExitCode !== null && lintExitCode !== 0 ) { - return lintExitCode; - } - - return formatExitCode ?? lintExitCode ?? 1; -} diff --git a/tools/eslint/suppressions.json b/tools/eslint/suppressions.json deleted file mode 100644 index 4c2b1a291756..000000000000 --- a/tools/eslint/suppressions.json +++ /dev/null @@ -1,962 +0,0 @@ -{ - "projects/js-packages/components/components/button/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/js-packages/components/components/pricing-card/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/js-packages/components/components/upsell-banner/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/js-packages/connection/components/connect-button/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/js-packages/connection/components/connect-screen/basic/visual.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/js-packages/connection/components/connect-screen/required-plan/visual.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/js-packages/connection/components/manage-connection-dialog/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/js-packages/partner-coupon/components/redeem-partner-coupon-post-connection/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/js-packages/partner-coupon/components/redeem-partner-coupon-pre-connection/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/js-packages/scan/src/components/threat-modal/threat-fix-details.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/activity-log/src/js/components/ActivityLog/ActivityActor.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/activity-log/src/js/components/ActivityLog/ActivityEvent.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/activity-log/src/js/components/ActivityLog/UpsellCallout.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/activity-log/src/js/components/ActivityLog/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/activity-log/src/js/components/DateRangePicker/date-inputs.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/activity-log/src/js/components/DateRangePicker/date-range-content.tsx": { - "@wordpress/use-recommended-components": { - "count": 3 - } - }, - "projects/packages/activity-log/src/js/components/DateRangePicker/presets-listbox.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/backup/src/dashboard/components/file-info-card/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/backup/src/dashboard/screens/download.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/backup/src/dashboard/screens/overview.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/backup/src/dashboard/screens/restore.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/backup/src/js/components/backup-storage-space/storage-help-popover/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/routes/forms/stage.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/routes/responses/integrations-modal.tsx": { - "@wordpress/use-recommended-components": { - "count": 3 - } - }, - "projects/packages/forms/routes/responses/stage.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/akismet.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/google-drive.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/hostinger-reach.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/helpers/mailpoet.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/integration-card/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/integration-card/integration-card-body.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/integration-card/integration-card-header.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/forms/src/blocks/field-hidden/edit.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/blocks/field-slider/edit.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/blocks/input-range/edit.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/blocks/option/edit.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/dashboard/components/empty-responses/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/dashboard/components/export-responses/modal.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/forms/src/dashboard/components/forms-responses-tabs/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/dashboard/components/inbox-status-toggle/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/dashboard/components/inspector/mobile.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/dashboard/components/inspector/response-fields/field-email/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/dashboard/components/inspector/response-fields/field-image-select/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 5 - } - }, - "projects/packages/forms/src/dashboard/components/inspector/response-fields/field-preview/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/forms/src/dashboard/components/inspector/response-fields/field-rating/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/forms/src/dashboard/components/inspector/response-meta/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 3 - } - }, - "projects/packages/forms/src/dashboard/components/inspector/single.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/dashboard/components/layout/header.tsx": { - "@wordpress/use-recommended-components": { - "count": 3 - } - }, - "projects/packages/forms/src/dashboard/components/page/header.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/dashboard/forms/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/dashboard/wp-build/components/dataviews-header-row/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/dashboard/wp-build/components/forms-help-modal/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 3 - } - }, - "projects/packages/forms/src/dashboard/wp-build/components/inbox-status-toggle/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/forms/src/form-editor/plugins/embed-form-modal.tsx": { - "@wordpress/use-recommended-components": { - "count": 6 - } - }, - "projects/packages/forms/src/form-editor/plugins/form-pre-publish-panel.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/jetpack-mu-wpcom/src/common/tour-kit/variants/wpcom/components/wpcom-tour-kit-step-card.tsx": { - "@wordpress/use-recommended-components": { - "count": 4 - } - }, - "projects/packages/my-jetpack/_inc/components/connection-screen/body.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/my-jetpack/_inc/components/my-jetpack-tab-panel/products/filtered-plans.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/my-jetpack/_inc/components/my-jetpack-tab-panel/products/filtered-products.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/my-jetpack/_inc/components/my-jetpack-tab-panel/products/product-card.tsx": { - "@wordpress/use-recommended-components": { - "count": 4 - } - }, - "projects/packages/my-jetpack/_inc/components/product-card/recommendation-actions.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/my-jetpack/_inc/components/product-interstitial-modal/product-interstitial-modal-cta.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/my-jetpack/_inc/components/product-interstitial/jetpack-ai/more-requests.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/my-jetpack/_inc/components/product-interstitial/jetpack-ai/product-page.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/my-jetpack/_inc/components/product-interstitial/pricing-interstitial.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/my-jetpack/_inc/components/product-interstitial/product-interstitial.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/my-jetpack/_inc/components/product-interstitial/protect/product-page.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/my-jetpack/_inc/components/stats-section/count-comparison-card.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/newsletter/_inc/components/newsletter-page.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/newsletter/_inc/subscribers/components/connection-gate.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/newsletter/_inc/subscribers/components/empty-state.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/newsletter/_inc/subscribers/components/header-actions.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/newsletter/_inc/subscribers/components/modals/add-subscribers-modal.tsx": { - "@wordpress/use-recommended-components": { - "count": 4 - } - }, - "projects/packages/newsletter/_inc/subscribers/components/modals/comp-modal.tsx": { - "@wordpress/use-recommended-components": { - "count": 3 - } - }, - "projects/packages/newsletter/_inc/subscribers/components/modals/remove-comp-modal.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/newsletter/_inc/subscribers/components/modals/unsubscribe-modal.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/newsletter/_inc/subscribers/components/subscribers-data-views.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/newsletter/routes/dashboard/stage.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/newsletter/src/settings/newsletter-settings.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/newsletter/src/settings/sections/email-content-section.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/newsletter/src/settings/sections/email-sender-settings-section.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/newsletter/src/settings/sections/newsletter-categories-section.tsx": { - "@wordpress/use-recommended-components": { - "count": 3 - } - }, - "projects/packages/newsletter/src/settings/sections/subscriptions-section.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/newsletter/src/settings/sections/welcome-email-section.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/podcast/src/blocks/podcast-episode/edit.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/podcast/src/dashboard/category-picker.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/podcast/src/dashboard/distribution/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 6 - } - }, - "projects/packages/podcast/src/dashboard/distribution/podcast-apps/pocketcasts/submit-modal.tsx": { - "@wordpress/use-recommended-components": { - "count": 3 - } - }, - "projects/packages/podcast/src/dashboard/distribution/submit-modal.tsx": { - "@wordpress/use-recommended-components": { - "count": 5 - } - }, - "projects/packages/podcast/src/dashboard/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/podcast/src/dashboard/settings/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 6 - } - }, - "projects/packages/podcast/src/dashboard/stats/components/horizontal-bar-list.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/podcast/src/dashboard/stats/components/section-card.tsx": { - "@wordpress/use-recommended-components": { - "count": 3 - } - }, - "projects/packages/podcast/src/dashboard/stats/components/summary-tiles.tsx": { - "@wordpress/use-recommended-components": { - "count": 3 - } - }, - "projects/packages/podcast/src/dashboard/welcome/category-setup-modal.tsx": { - "@wordpress/use-recommended-components": { - "count": 3 - } - }, - "projects/packages/podcast/src/dashboard/welcome/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 5 - } - }, - "projects/packages/publicize/_inc/components/admin-page/header/index.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/admin-page/pricing-page/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/admin-page/toggles/social-image-generator-toggle/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/admin-page/toggles/social-module-toggle/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/admin-page/toggles/social-notes-toggle/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/connection-management/connection-info-modern.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/publicize/_inc/components/connection-management/connection-info.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/connection-management/disconnect.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/connection-management/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/customize-and-preview/customization-section/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/customize-and-preview/preview-section/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/form/empty-state.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/manage-connections-modal/confirmation-form/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/manage-connections-modal/index-modern.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/publicize/_inc/components/media-picker/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/publicize/_inc/components/overview-tab/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/overview-tab/traffic-chart-card.tsx": { - "@wordpress/use-recommended-components": { - "count": 3 - } - }, - "projects/packages/publicize/_inc/components/panel/description.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/services/connect-form.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/services/custom-inputs-modern.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/services/service-connection-info-modern.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/services/service-item-modern.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/services/service-item.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/services/x-notice.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/settings-tab/content-creation-card.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/settings-tab/customize-media-card.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/settings-tab/publicize-inactive-empty-state.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/share-buttons/share-buttons.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/social-gate/connection-gate.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/social-gate/pricing-gate.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/publicize/_inc/components/social-page.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/publicize/routes/dashboard/stage.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/scan/_inc/components/scan-page.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/scan/routes/index/stage.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/scan/src/js/screens/overview/active-threats.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/scan/src/js/screens/overview/bulk-fix-modal.tsx": { - "@wordpress/use-recommended-components": { - "count": 3 - } - }, - "projects/packages/scan/src/js/screens/overview/fix-threat-modal.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/scan/src/js/screens/overview/ignore-threat-modal.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/scan/src/js/screens/overview/scan-history.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/scan/src/js/screens/overview/scan-status.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/scan/src/js/screens/overview/unignore-threat-modal.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/search/src/dashboard/components/ai-agent-access-control/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/search/src/dashboard/components/ai-answers-tab/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/search/src/dashboard/components/global-notices/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/search/src/dashboard/components/pages/dashboard-page.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/search/src/dashboard/components/pages/sections/first-run-section.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/search/src/dashboard/components/pages/sections/overview-section.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/search/src/dashboard/components/reader-chat-control/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/search/src/dashboard/components/record-meter/notice-box.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/search/src/dashboard/components/woocommerce-product-search-control/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/videopress/routes/library/stage.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/videopress/src/client/admin/components/admin-page/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/videopress/src/client/admin/components/edit-video-details/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/videopress/src/dashboard/components/connection-gate/connect-screen.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/videopress/src/dashboard/components/dashboard-layout/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/videopress/src/dashboard/components/dashboard-tabs/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/videopress/src/dashboard/components/library/thumbnail-field.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/videopress/src/dashboard/components/overview/date-range-selector.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/videopress/src/dashboard/components/overview/free-tier-notice.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/videopress/src/dashboard/components/video-details/chapters-help-modal.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/videopress/src/dashboard/components/video-details/header-actions.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/packages/videopress/src/dashboard/components/video-details/select-frame-dialog.tsx": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/packages/videopress/src/dashboard/components/video-details/thumbnail-card.tsx": { - "@wordpress/use-recommended-components": { - "count": 3 - } - }, - "projects/packages/videopress/src/dashboard/components/video-details/video-details-card.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/features/boost-pricing-table/boost-pricing-table.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/features/cornerstone-pages/meta/meta.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/features/critical-css/regenerate-critical-css-suggestion/regenerate-critical-css-suggestion.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/features/critical-css/show-stopper-error/show-stopper-error.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/features/image-guide/image-guide.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/features/lcp/status/error-details.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/features/minify-legacy-notice/minify-legacy-notice.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/features/module/module.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/features/page-cache/health/error-notices.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/features/page-cache/meta/meta.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/features/page-cache/page-cache.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/boost/app/assets/src/js/pages/cache-debug-log/cache-debug-log.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/ai/main.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/ai/mcp/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 5 - } - }, - "projects/plugins/jetpack/_inc/client/ai/mcp/read.jsx": { - "@wordpress/use-recommended-components": { - "count": 5 - } - }, - "projects/plugins/jetpack/_inc/client/ai/mcp/setup.jsx": { - "@wordpress/use-recommended-components": { - "count": 4 - } - }, - "projects/plugins/jetpack/_inc/client/ai/mcp/write.jsx": { - "@wordpress/use-recommended-components": { - "count": 5 - } - }, - "projects/plugins/jetpack/_inc/client/components/connection-banner/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/_inc/client/components/settings-card/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 3 - } - }, - "projects/plugins/jetpack/_inc/client/components/settings-nav-tabs/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/donations/controls.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/blocks/donations/style-controls.js": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/plugins/jetpack/extensions/blocks/subscriptions/email-preview.js": { - "@wordpress/use-recommended-components": { - "count": 2 - } - }, - "projects/plugins/jetpack/extensions/blocks/subscriptions/menu.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/controls.tsx": { - "@wordpress/use-recommended-components": { - "count": 3 - } - }, - "projects/plugins/jetpack/extensions/shared/memberships/settings.js": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/protect/src/js/components/protect-app/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/protect/src/js/components/upgrade-notice/index.tsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/protect/src/js/routes/firewall/firewall-upgrade-prompt.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/protect/src/js/routes/firewall/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - }, - "projects/plugins/protect/src/js/routes/settings/index.jsx": { - "@wordpress/use-recommended-components": { - "count": 1 - } - } -} diff --git a/tools/js-tools/eslintrc/base.mjs b/tools/js-tools/eslintrc/base.mjs index 70f657dec2ed..8dea83a6e1f6 100644 --- a/tools/js-tools/eslintrc/base.mjs +++ b/tools/js-tools/eslintrc/base.mjs @@ -439,14 +439,9 @@ export function makeBaseConfig( configurl, opts = {} ) { }, }, - // Node tooling configs and scripts should allow 'node' globals (jest/babel/webpack, pnpm, lint helpers). + // Various config files should allow 'node' globals. { - files: [ - '**/*.config.?([cm])js', - '**/webpack.config.*.?([cm])js', - 'tools/eslint/*.cjs', - '.pnpmfile.cjs', - ], + files: [ '**/*.config.?([cm])js', '**/webpack.config.*.?([cm])js' ], languageOptions: { globals: globals.node, },