Upgrade ESLint to 9 and migrate to flat config - #2432
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR upgrades the monorepo from ESLint 8.57.1 to ESLint 9.39.5 and migrates the workspace from legacy .eslintrc* configs to ESLint flat config (eslint.config.mjs). It also includes the necessary ecosystem bumps (TypeScript ESLint, Prettier 3, related plugins) and applies formatting/cleanup changes required by the stricter linting setup.
Changes:
- Upgrade ESLint + TypeScript ESLint + related lint/format tooling and migrate to workspace/project flat configs.
- Remove legacy
.eslintrc.jsonfiles across projects and adjust Nx lint cache inputs to track flat config files. - Apply mechanical formatting and a few targeted cleanups/fixes surfaced by the new lint rules (plus CLI generator adjustment to remove generated ESLint configs).
Blocking
tools/scripts/validate-publishable-packages.tsstartsPromise.all()without awaiting it (script can finish before validations complete).packages/server/api/src/app/workers/worker-controller.tsreturns success for/save-payloadswithout awaiting persistence, so failures can be silently logged while the caller receives{}.
Non-blocking
- None.
Merge recommendation
Do not merge
Reviewed changes
Copilot reviewed 274 out of 289 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/scripts/validate-publishable-packages.ts | Fix formatting, but still needs awaiting validation promises (blocking). |
| tools/scripts/utils/publish-nx-project.ts | Formatting-only updates to publish helper script. |
| tools/scripts/utils/files.ts | Removes legacy .eslintrc.json read/write helpers. |
| tools/scripts/utils/exec.ts | Formatting-only updates. |
| tools/scripts/publish.mjs | Import/order + formatting changes in Nx publish script. |
| tools/licenses/.generatelicensefile.json | JSON formatting normalization. |
| packages/ui-kit/eslint.config.mjs | Adds flat ESLint config for ui-kit. |
| packages/ui-kit/.eslintrc.json | Removes legacy ESLint config. |
| packages/ui-components/tailwind.config.cjs | Minor formatting update (trailing comma). |
| packages/ui-components/src/ui/use-toast.tsx | Refactors action type representation (lint-driven). |
| packages/ui-components/src/ui/tree-view.tsx | Formatting-only ternary indentation. |
| packages/ui-components/src/ui/status-icon-with-text.tsx | Type formatting change for interface extension. |
| packages/ui-components/src/ui/sortable.tsx | Type formatting change for generic interfaces. |
| packages/ui-components/src/ui/select-all-checkbox/select-all-checkbox.tsx | Formatting-only interface extends wrapping. |
| packages/ui-components/src/ui/numeric-input.tsx | Formatting-only interface type wrapping. |
| packages/ui-components/src/ui/multi-step-form/multi-step-form-header.tsx | Formatting-only interface declaration line wrap. |
| packages/ui-components/src/ui/image-with-fallback.tsx | Formatting-only interface declaration line wrap. |
| packages/ui-components/src/ui/dot.tsx | Formatting-only interface extends wrapping. |
| packages/ui-components/src/ui/data-table.tsx | Formatting-only reduce/meta union formatting changes. |
| packages/ui-components/src/ui/data-table-column-header.tsx | Formatting-only generic interface wrapping. |
| packages/ui-components/src/ui/button.tsx | Formatting-only interface extends wrapping. |
| packages/ui-components/src/ui/badge.tsx | Formatting-only interface extends wrapping. |
| packages/ui-components/src/tailwind.css | CSS formatting (multi-line font-feature-settings). |
| packages/ui-components/src/stories/sidebar/sidebar.stories.tsx | Formatting-only ternary indentation. |
| packages/ui-components/src/stories/select-all-checkbox.stories.tsx | Formatting-only interface extends wrapping. |
| packages/ui-components/src/lib/types.ts | Formatting-only union type compaction. |
| packages/ui-components/src/components/flow-canvas/edges/utils.ts | Formatting-only union type compaction. |
| packages/ui-components/src/components/assistant-ui/tooltip-copy-button/tooltip-copy-button.tsx | Formatting-only union type compaction. |
| packages/ui-components/eslint.config.mjs | Adds flat ESLint config for ui-components (incl. Storybook). |
| packages/ui-components/.storybook/preview-head.html | HTML formatting normalization for preload links. |
| packages/ui-components/.eslintrc.json | Removes legacy ESLint config. |
| packages/tests-e2e/README.md | Formatting-only change. |
| packages/tests-e2e/.eslintrc.json | Removes legacy ESLint config. |
| packages/shared/src/lib/flow-run/execution/step-output.ts | Formatting-only union type compaction. |
| packages/shared/src/lib/engine/engine-operation.ts | Formatting-only union/conditional type indentation. |
| packages/shared/src/lib/common/application-error.ts | Formatting-only constructor wrapping. |
| packages/shared/src/lib/app-connection/app-connection.ts | Formatting-only conditional type indentation. |
| packages/shared/src/index.ts | Removes redundant top-level re-exports (stale reference cleanup). |
| packages/shared/eslint.config.mjs | Adds flat ESLint config for shared. |
| packages/shared/.eslintrc.json | Removes legacy ESLint config. |
| packages/server/worker/src/lib/engine/flow-enginer-util.ts | Formatting-only union type compaction. |
| packages/server/worker/src/lib/engine/engine-runner.ts | Formatting-only union type compaction. |
| packages/server/worker/src/lib/engine/call-engine.ts | Formatting-only line wrapping. |
| packages/server/worker/src/lib/api/axios-client.ts | Formatting-only constructor wrapping. |
| packages/server/worker/eslint.config.mjs | Adds flat ESLint config for server/worker. |
| packages/server/worker/.eslintrc.json | Removes legacy ESLint config. |
| packages/server/shared/test/cache/memory-wrapper.test.ts | Formatting-only wrapping for long await line. |
| packages/server/shared/src/lib/blocks/file-blocks-utils.ts | Formatting-only wrapping for long await line. |
| packages/server/shared/eslint.config.mjs | Adds flat ESLint config for server/shared. |
| packages/server/shared/.eslintrc.json | Removes legacy ESLint config. |
| packages/server/api/test/unit/flow-template/flow-template.service.test.ts | Formatting-only wrapping for long await line. |
| packages/server/api/test/unit/benchmark/benchmark-feature-guard.test.ts | Simplifies cast formatting. |
| packages/server/api/test/unit/authentication/authentication.controller.test.ts | Formatting-only wrapping for dynamic import line. |
| packages/server/api/test/integration/cloud/project/project.service.test.ts | Formatting-only wrapping for long await line. |
| packages/server/api/test/integration/ce/flows/test-run-action-limits-calculator.test.ts | Formatting-only wrapping for long generic cast. |
| packages/server/api/src/assets/azure-benchmark-dashboard/datasets/openops_tables_connection/Azure_Benchmark_KPI_efficiency.yaml | YAML formatting normalization. |
| packages/server/api/src/assets/azure-benchmark-dashboard/charts/Azure_Total_Opportunities_16.yaml | YAML formatting normalization. |
| packages/server/api/src/assets/azure-benchmark-dashboard/charts/Azure_Top_opportunities_to_address_15.yaml | YAML formatting normalization. |
| packages/server/api/src/assets/azure-benchmark-dashboard/charts/Azure_Monthly_Amortized_Cost_Over_Time_12.yaml | YAML formatting normalization. |
| packages/server/api/src/assets/azure-benchmark-dashboard/charts/Azure_Estimated_Monthly_Savings_13.yaml | YAML formatting normalization. |
| packages/server/api/src/assets/aws-benchmark-dashboard/charts/Unified_Cost_Efficiency_Metric_8.yaml | YAML formatting normalization. |
| packages/server/api/src/app/workers/worker-controller.ts | Fixes Promise.all() inputs; still should await for correctness (blocking). |
| packages/server/api/src/app/workers/redis/redis-migration.ts | Formatting-only wrapping for long await line. |
| packages/server/api/src/app/workers/redis/flow-run-cleaner.ts | Formatting-only wrapping for long await line. |
| packages/server/api/src/app/workers/queue/queue-manager.ts | Formatting-only conditional type indentation. |
| packages/server/api/src/app/wizard/resolvers/aws/aws-option-resolver.ts | Formatting-only union type compaction. |
| packages/server/api/src/app/openops-analytics/benchmark/create-azure-benchmark-dashboard.ts | Formatting-only wrapping for long await line. |
| packages/server/api/src/app/openops-analytics/benchmark/create-aws-benchmark-dashboard.ts | Formatting-only wrapping for long await line. |
| packages/server/api/src/app/openops-analytics/analytics-seeding-service.ts | Formatting-only wrapping for long await line. |
| packages/server/api/src/app/flows/flow/resolve-manual-run-payload.ts | Parentheses tweak (lint-driven) in conditional expression. |
| packages/server/api/src/app/flows/flow/flow-version.controller.ts | Formatting-only wrapping for long await line. |
| packages/server/api/src/app/flows/flow-run/flow-run-service.ts | Parentheses tweak (lint-driven) in ternary/nullish chain. |
| packages/server/api/src/app/database/seeds/seed-admin.ts | Formatting-only union type compaction. |
| packages/server/api/src/app/database/seeds/ensure-tables-mcp-endpoint-exists.ts | Formatting-only wrapping for long await line. |
| packages/server/api/src/app/database/migrations/1776097737024-FixFolderUniqueConstraint.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1773046640936-AddIsCleanupToBenchmarkFlow.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1772449919844-DropLastRunIdFromBenchmark.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1770297289194-AddBenchmarkAndBenchmarkFlowTables.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1763755045436-MigrateTablesUserPassword.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1763394159990-AddTablesTokenToProject.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1763131154284-AddTablesTokenToProject.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1760500000000-MoveTablesWorkspaceIdFromOrganizationToProject.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1760429290001-AddTestRunActionLimitsToFlowVersion.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1759242268873-MigrateAiConfigToAppConnection.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1756377588949-RenameIsWorkflowToIsInternal.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1756298583000-AddIsWorkflowToFlowTable.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1755942417309-MigrateStepTestOutputToNewCompressionAlgorithm.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1754489349007-AddTriggerSourceToFlowRun.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1752758891771-UpdateUmbrellaRecommendationTypesAcrossFlowVersions.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1752487641303-AddSuccessToFlowStepTestOutputTable.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1751282188913-AddInputToTriggerEventTable.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1750933522145-AddInputToTestOutputTable.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1750161024797-RemoveBlockNameFromConnectionsTable.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1749809813762-SetBlockNameAsNullableInConnectionsTable.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1749644220381-AddStepIdToExistingFlowVersions.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1749111073431-AddAuthProviderKeyToExistingAppConnections.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1749066895522-AddAuthProviderKeyToAppConnectionTable.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1748356358053-AddProviderToAppConnectionTable.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1746618034190-AddStepIdToExistingFlowVersionsAndInsertOutputInTestOutputTable.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1746454781866-AddFlowStepTestOutputTable.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1745309649736-AddProviderSettingsAndConstraintForAiConfig.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1741945618000-ReplaceSelectOptionsIdsWithNames.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1741475952000-RenamePieceToBlock.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1741016911542-AddColumnForStartupTemplates.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/database/migrations/1740463047000-InitializePostgresSchema.ts | Formatting-only class declaration wrap. |
| packages/server/api/src/app/benchmark/attach-benchmark-flows.service.ts | Formatting-only wrapping for long await line. |
| packages/server/api/src/app/ai/mcp/openops-tools.ts | Formatting-only wrapping for long await line. |
| packages/server/api/eslint.config.mjs | Adds flat ESLint config for server/api. |
| packages/server/api/.eslintrc.json | Removes legacy ESLint config. |
| packages/server/api/mocks/isolated-vm.js | Formatting-only comment spacing. |
| packages/react-ui/tailwind.config.cjs | Minor formatting update (trailing comma). |
| packages/react-ui/src/app/routes/settings/ai/index.tsx | Formatting-only union type compaction in casts. |
| packages/react-ui/src/app/routes/openops-analytics/openops-analytics.css | CSS indentation normalization. |
| packages/react-ui/src/app/features/templates/components/public-flow-template-filter-sidebar-wrapper.tsx | Formatting-only wrapping for reduce call. |
| packages/react-ui/src/app/features/templates/components/connections-picker/connections-picker.tsx | Parentheses tweak (lint-driven) in conditional expression. |
| packages/react-ui/src/app/features/navigation/side-menu/left-sidebar.tsx | Formatting-only generic interface wrapping. |
| packages/react-ui/src/app/features/folders/component/move-subfolder-dialog.tsx | Formatting-only generic type wrapping. |
| packages/react-ui/src/app/features/flows/components/move-flow-dialog.tsx | Formatting-only generic type wrapping. |
| packages/react-ui/src/app/features/connections/lib/connections-utils.ts | Formatting-only wrapping for reduce call. |
| packages/react-ui/src/app/features/connections/components/secret-text-connection-settings.tsx | Removes runtime Type.Object usage; uses static request type for form. |
| packages/react-ui/src/app/features/connections/components/oauth2-connection-settings.tsx | Parentheses tweak (lint-driven) in nullish coalescing. |
| packages/react-ui/src/app/features/connections/components/basic-secret-connection-settings.tsx | Removes runtime Type.Object usage; uses static request type for form. |
| packages/react-ui/src/app/features/builder/hooks/tests/should-resync-step-settings.test.ts | Simplifies cast formatting. |
| packages/react-ui/src/app/features/builder/flow-version-undo-redo/hooks/utils.ts | Formatting-only wrapping for long await line. |
| packages/react-ui/src/app/features/builder/flow-version-undo-redo/hooks/flow-version-undo-redo.ts | Removes unused catch binding (lint-driven). |
| packages/react-ui/src/app/features/builder/data-selector/index.tsx | Formatting-only ternary indentation. |
| packages/react-ui/src/app/features/builder/builder-header/builder-publish-button.tsx | Formatting-only wrapping for long i18n string. |
| packages/react-ui/src/app/features/builder/block-properties/text-input-with-mentions/tip-tap.css | CSS indentation normalization. |
| packages/react-ui/src/app/features/builder/block-properties/form-utils.tsx | Parentheses tweaks (lint-driven) for nullish coalescing. |
| packages/react-ui/src/app/features/builder/block-properties/dynamic-array/utils.ts | Formatting-only wrapping for reduce call. |
| packages/react-ui/src/app/features/benchmark/use-provider-connections.ts | Formatting-only union type compaction. |
| packages/react-ui/src/app/common/components/multi-select.tsx | Formatting-only generic interface wrapping + boolean expression indentation. |
| packages/react-ui/public/html/collect_input.html | HTML doctype normalization. |
| packages/react-ui/index.html | HTML formatting normalization + doctype normalization. |
| packages/react-ui/eslint.config.mjs | Adds flat ESLint config for react-ui. |
| packages/react-ui/.eslintrc.json | Removes legacy ESLint config. |
| packages/openops/tsconfig.spec.json | JSON formatting normalization. |
| packages/openops/tsconfig.lib.json | JSON formatting normalization. |
| packages/openops/test/azure/auth.test.ts | Formatting-only wrapping for dynamic import line. |
| packages/openops/test/aws/ssm/get-ssm-documents.test.ts | Formatting-only wrapping for mock implementation signature. |
| packages/openops/test/aws/ssm/get-ssm-document-versions.test.ts | Formatting-only wrapping for mock implementation signature. |
| packages/openops/test/aws/ssm/get-ssm-describe-document-info.test.ts | Formatting-only wrapping for mock implementation signature. |
| packages/openops/test/aws/auth.test.ts | Formatting-only wrapping for dynamic import line. |
| packages/openops/src/lib/servicenow/get-tables.ts | Formatting-only wrapping for queryParams assignment. |
| packages/openops/src/lib/servicenow/get-state-fields.ts | Parentheses tweak (lint-driven) in nullish coalescing. |
| packages/openops/src/lib/promise-pool.ts | Formatting-only union type compaction. |
| packages/openops/src/lib/aws/pricing.ts | Formatting-only union type compaction. |
| packages/openops/src/lib/aws/azure-aws-federation.ts | Formatting-only wrapping for long await line. |
| packages/openops/src/lib/aws/arn-handler.ts | Formatting-only wrapping for reduce call. |
| packages/openops/src/lib/ai/ai-auth.ts | Formatting-only union type compaction. |
| packages/openops/project.json | JSON formatting normalization. |
| packages/openops/eslint.config.mjs | Adds flat ESLint config for openops. |
| packages/openops/.eslintrc.json | Removes legacy ESLint config. |
| packages/engine/src/lib/variables/props-resolver.ts | Removes a no-longer-needed eslint-disable comment. |
| packages/engine/src/lib/variables/processors/array-zipper.ts | Formatting-only wrapping for reduce call. |
| packages/engine/src/lib/operations.ts | Formatting-only union type compaction. |
| packages/engine/src/lib/handler/branch-executor.ts | Formatting-only ternary indentation. |
| packages/engine/src/lib/engine-ipc.ts | Formatting-only union type compaction. |
| packages/engine/src/lib/core/code/v8-isolate-code-sandbox.ts | Adds eslint-disable for lazy require (lint-driven). |
| packages/engine/src/lib/cancellation-request-validator.ts | Formatting-only wrapping for long await line. |
| packages/engine/src/get-feature-flag.ts | Formatting-only wrapping for generic type arg line. |
| packages/engine/project.json | Removes legacy ignorePath (flat-config migration). |
| packages/engine/eslint.config.mjs | Adds flat ESLint config for engine, including ignore replacement. |
| packages/engine/.eslintrc.json | Removes legacy ESLint config. |
| packages/engine/.eslintignore | Removes legacy ignore file (flat config now handles ignores). |
| packages/cli/src/lib/utils/files.ts | Removes legacy .eslintrc.json read/write helpers. |
| packages/cli/src/lib/utils/block-generators.ts | Removes ESLint-config mutation; now deletes generated configs for blocks. |
| packages/cli/src/lib/commands/create-block.ts | Updates generator to remove generated ESLint config file(s). |
| packages/cli/package.json | JSON formatting normalization. |
| packages/cli/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/zendesk/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/webhook/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/vegacloud/src/lib/actions/get-anomalies-action.ts | Formatting-only union type compaction. |
| packages/blocks/vegacloud/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/vantage/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/text-helper/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/terraform/src/lib/tfvars-parser.ts | Formatting-only union type compaction. |
| packages/blocks/terraform/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/ternary/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/store/package.json | Removes trailing newline/whitespace at EOF. |
| packages/blocks/store/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/snowflake/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/smtp/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/slack/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/sftp/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/servicenow/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/schedule/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/openops-tables/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/nops/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/monday/src/lib/common/helper.ts | Fixes NaN fallback behavior for hour/minute parsing. |
| packages/blocks/monday/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/microsoft-teams/src/lib/common/on-action-received.ts | Formatting-only union type compaction. |
| packages/blocks/microsoft-teams/src/lib/actions/request-action-message.ts | Formatting-only union type compaction. |
| packages/blocks/microsoft-teams/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/microsoft-outlook/src/lib/actions/forward-email.ts | Formatting-only union type compaction. |
| packages/blocks/microsoft-outlook/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/math-helper/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/list-operations/src/lib/actions/group-by-action.ts | Formatting-only wrapping for reduce call. |
| packages/blocks/list-operations/project.json | JSON formatting normalization. |
| packages/blocks/list-operations/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/linear/src/lib/triggers/new-issue.ts | Formatting-only wrapping for long await line. |
| packages/blocks/linear/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/kion/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/jira-cloud/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/imap/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/hyperglance/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/http/src/lib/actions/send-http-request-action.ts | Formatting-only union type compaction. |
| packages/blocks/http/package.json | Removes trailing newline/whitespace at EOF. |
| packages/blocks/http/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/google-cloud/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/github/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/framework/src/lib/trigger/trigger.ts | Formatting-only class declaration wrap. |
| packages/blocks/framework/src/lib/property/input/common.ts | Formatting-only conditional type indentation. |
| packages/blocks/framework/src/lib/property/index.ts | Formatting-only conditional type indentation. |
| packages/blocks/framework/src/lib/context.ts | Formatting-only conditional type indentation. |
| packages/blocks/framework/src/lib/block.ts | Formatting-only generic class declaration wrap. |
| packages/blocks/framework/src/lib/action/action.ts | Formatting-only class declaration wrap. |
| packages/blocks/framework/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/flexera/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/flexera-one/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/finout/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/file-helper/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/end-flow/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/delay/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/date-helper/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/databricks/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/common/src/lib/http/core/delegating-authentication-converter.ts | Formatting-only class declaration wrap. |
| packages/blocks/common/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/cloudzero/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/cloudhealth/src/lib/actions/get-asset-perspectives.ts | Formatting-only wrapping for reduce call. |
| packages/blocks/cloudhealth/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/cloudformation/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/cloudfix/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/cloudability/src/lib/common/recommendations-api.ts | Parentheses tweak (lint-driven) for nullish coalescing. |
| packages/blocks/cloudability/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/azure/src/lib/common-properties.ts | Formatting-only union type compaction + wrapping. |
| packages/blocks/azure/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/aws/src/lib/actions/get-account-id-action.ts | Formatting-only union type compaction. |
| packages/blocks/aws/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/aws-compute-optimizer/src/lib/common/ec2-recommendations-builder.ts | Formatting-only generic class declaration wrap. |
| packages/blocks/aws-compute-optimizer/src/lib/common/ebs-recommendations-builder.ts | Formatting-only generic class declaration wrap. |
| packages/blocks/aws-compute-optimizer/src/lib/actions/get-recommendations-summary-action.ts | Formatting-only union type compaction. |
| packages/blocks/aws-compute-optimizer/src/lib/actions/ec2-get-recommendations-action.ts | Formatting-only union type compaction. |
| packages/blocks/aws-compute-optimizer/src/lib/actions/ebs-get-recommendations-action.ts | Formatting-only union type compaction. |
| packages/blocks/aws-compute-optimizer/project.json | JSON formatting normalization. |
| packages/blocks/aws-compute-optimizer/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/aws-athena/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/archera/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/approval/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/anodot/src/lib/get-recommendations-action-predefined.ts | Formatting-only union type compaction. |
| packages/blocks/anodot/.eslintrc.json | Removes legacy ESLint config. |
| packages/blocks/ai/.eslintrc.json | Removes legacy ESLint config. |
| package.json | Upgrades ESLint ecosystem deps (ESLint 9, TS ESLint 8, Prettier 3, plugin updates). |
| nx.json | Updates lint target inputs for Nx caching with flat config files. |
| jest.config.ts | Formatting-only trailing comma. |
| eslint.config.mjs | Adds root flat ESLint config entrypoint. |
| deploy/docker-compose/README.md | Markdown formatting normalization. |
| CONTRIBUTING.md | Markdown list formatting normalization. |
| AGENTS.md | Updates code fence formatting + references new ESLint config filename. |
| .vscode/settings.json | JSON formatting normalization. |
| .vscode/launch.json | JSON formatting normalization. |
| .prettierrc | Adds explicit Prettier plugin config (Prettier 3 behavior). |
| .github/ISSUE_TEMPLATE/feature-request.md | YAML frontmatter quoting/formatting normalization. |
| .github/ISSUE_TEMPLATE/bug.md | YAML frontmatter + markdown spacing normalization. |
| .github/dependabot.yml | YAML quoting/formatting normalization. |
| .eslintrc.json | Removes legacy root ESLint config (flat-config migration). |
| .eslintignore | Removes legacy ignore file (flat-config migration). |
| .claude/skills/react/SKILL.md | Formatting-only wrapping in example snippet. |
| .claude/skills/frontend-build-timing-audit/scripts/update-baseline.mjs | Formatting-only import/order/wrapping changes. |
| .claude/skills/frontend-build-timing-audit/scripts/snapshot.mjs | Formatting-only import/order/wrapping changes. |
| .claude/skills/frontend-build-timing-audit/scripts/lib/analyze.mjs | Formatting-only import/order/wrapping changes. |
| .claude/skills/frontend-build-timing-audit/scripts/find-toplevel-init-calls.mjs | Formatting-only import/order/wrapping changes. |
| .claude/skills/frontend-build-timing-audit/scripts/check-regression.mjs | Formatting-only wrapping changes. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Prepares the toolchain for flat config and ESLint 9. typescript-eslint 7 only accepts ESLint ^8.56, so it is the hard blocker for any upgrade past v8; everything else here is either required by v8 or needed because the plugin has no flat-config export. Dependency changes: - @typescript-eslint/* 7.18.0 -> 8.66.0 (accepts ESLint ^8/^9/^10) - prettier 2.8.8 -> 3.9.6 and eslint-plugin-prettier 4.2.5 -> 5.5.6, since v4 has no flat-config export - eslint-config-prettier 9.1.2 -> 10.1.8 (@nx/eslint-plugin peer wants ^10) - eslint-plugin-vitest 0.5.4 -> @vitest/eslint-plugin 1.6.27 (renamed); its configs register as `@vitest`, so the extends were renamed to match - eslint-plugin-testing-library 6.5.0 -> 7.16.2, eslint-plugin-jest-dom 5.5.0 -> 5.10.1, jsonc-eslint-parser 2.4.2 -> 3.3.0 - drop eslint-plugin-tailwindcss, which no config referenced Prettier 3 no longer auto-loads plugins, so prettier-plugin-organize-imports is now declared explicitly in .prettierrc. Without it the plugin silently stops organizing imports. Fixes for findings the upgrade surfaced: - worker-controller passed the void results of rejectedPromiseHandler to Promise.all, so the payload saves were never actually awaited. Caught by a stricter await-thenable. - server/api extended the TypeScript and import-x configs at top level, which applied TS rules to .json files. Scoped them to the ts/js override. - switch-exhaustiveness-check pins considerDefaultExhaustiveForUnions, which v8 flipped to false, to keep the previous behaviour - drop a stale ban-types disable comment for a rule v8 removed - replace three consts used only in `typeof` positions with plain types @vitest/no-conditional-expect is disabled with a TODO: it newly reports pre-existing conditional assertions in data-driven tests. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Mechanical reformat only, no behaviour changes. Split from the dependency bump so the meaningful diff stays reviewable. Scoped to the file types ESLint actually enforces prettier/prettier on - ts, tsx, js and json. Prettier also covers md, yaml, css, html and mjs, but nothing checks those in CI, so reformatting them would have been churn unrelated to this upgrade. Note that lint-staged does run prettier on them, so they will be reformatted whenever they are next edited. The blast radius is small because .prettierrc already set trailingComma: "all", which was Prettier 3's most disruptive default change. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Replaces 65 legacy config files (64 .eslintrc.json plus two .eslintignore) with 11 flat configs. ESLint 10 removes eslintrc support entirely, so this is the prerequisite for that upgrade; ESLint 8.57 reads flat config already, and Nx sets ESLINT_USE_FLAT_CONFIG for us until we move to v9. Most of the deleted files carried no configuration: 52 of the block configs only re-declared the root config with empty rule blocks, and the two that looked different were an identical file with different indentation and one that redundantly re-applied the root's prettier config. Projects without their own config now resolve to the root one, since both the Nx executor and ESLint search upwards from the project directory. Shared layers live in eslint.base.config.mjs as named exports (baseConfig, frontendConfig, serverConfig) so Nx tracks one file as a lint cache input; a second root config file would not match Nx's eslint config glob and so would not invalidate the cache. nx.json inputs are updated to match. The eslintrc "ignore everything, then un-ignore per project" idiom is gone, replaced by real ignores. Note that cwd differs between the two ways Nx runs ESLint - the executor runs from the workspace root, inferred targets from the project root - and flat-config patterns resolve against cwd, so patterns are globstar-prefixed to behave the same either way. Also in this commit, because they are only reachable once the configs are rewritten: - eslint-plugin-import-x 0.5.3 -> 4.17.1 and eslint-import-resolver-typescript 3.10.1 -> 4.4.5, adding import-x's typescript config so `named` stops reporting type-only exports - add @eslint/js, globals and the typescript-eslint meta package, which @nx/eslint-plugin's flat configs require - engine's .eslintignore became `ignores`; its lint target no longer passes ignorePath, which flat config rejects - drop three re-exports from packages/shared/src/index.ts that duplicated what the ./lib/common and ./lib/flows barrels already export. import-x/export flagged them; a full build confirms nothing depended on them. Verified: lint passes for all 63 projects, full build passes, and linted file counts are unchanged (react-ui 459, server-api 500). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Flat config is the default in v9, so Nx no longer sets ESLINT_USE_FLAT_CONFIG and the "Support for ESLint v8 is deprecated" warnings are gone. v9 adds no-constant-binary-expression to the recommended set, which caught a real bug in the monday block: `Number(x) ?? 0` never falls back, because Number() returns NaN rather than a nullish value, so a malformed hour or minute propagated NaN instead of 0. Changed to `|| 0`. Also cleans up references left stale by the flat config migration: - nx.json's production named input excluded .eslintrc.json - the block generator edited a .eslintrc.json that Nx no longer emits, which would have broken `npm run create-block`. Blocks inherit the workspace config, so it now deletes the generated config instead of rewriting it. - drop the now-unused readPackageEslint/writePackageEslint helpers - AGENTS.md pointed at .eslintrc Verified: lint passes for all 63 projects, full build passes, and the full test suite passes except blocks-azure, which fails identically on origin/main. That test asserts AZURE_EXTENSION_DIR is forwarded, but the implementation only forwards it when set, so it depends on the environment. Left alone as pre-existing and out of scope. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
MarceloRGonc
force-pushed
the
chore/eslint-9-flat-config
branch
from
August 11, 2026 11:09
f4dce0e to
3ef2e05
Compare
The OAuth authorization server merged from main was formatted with Prettier 2, so prettier/prettier reported 8 errors in server-api once this branch's Prettier 3 took effect. Formatting only: Prettier 3 breaks after `=` rather than wrapping the call arguments. No semantic change. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Build and release tooling under tools/ is not shipped code. No Nx project covers that directory, so `nx lint` never reached it; the ignore stops editors and bare `eslint .` runs from reporting on it too. Since those files are no longer lint-enforced, their Prettier 3 reformatting is reverted for consistency with the rest of this branch, which only reformats what lint checks. The one deliberate change kept there is the removal of the dead readPackageEslint/writePackageEslint helpers, which had no callers and referenced the .eslintrc.json files this branch deletes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Corrects the earlier fix in this branch. The original defect was not that the saves went unawaited - the route returns immediately both before and after, so nothing was ever awaited. The defect was that `rejectedPromiseHandler(Promise.all(savePayloads))` was dead code: the mapped values were already void, so the aggregate could never see a rejection. The earlier fix passed the real promises to Promise.all, which made the aggregate live but reports only the first rejection, losing a log line per additional failed save. This keeps one handler per save, so every failure is logged, and drops the pointless aggregate. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
ravikiranvm
approved these changes
Aug 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Part of OPS-4714