From 1007809aa5e11d62bb9bd8c499fbbf1dbcd43ae7 Mon Sep 17 00:00:00 2001 From: ChanHo Lee Date: Wed, 3 Jun 2026 16:59:01 +0900 Subject: [PATCH 1/4] [ZEPPELIN-6426] Remove redundant eslint-disable comments in zeppelin-web-angular --- .../src/interfaces/message-common.interface.ts | 1 - .../src/interfaces/message-operator.interface.ts | 1 - .../src/g2-visualization-component-base.ts | 1 - .../zeppelin-visualization/src/table-transformation.ts | 1 - zeppelin-web-angular/src/app/app-http.interceptor.ts | 1 - .../src/app/core/destroy-hook/destroy-hook.component.ts | 1 - .../src/app/core/message-listener/message-listener.ts | 8 ++------ zeppelin-web-angular/src/app/languages/scala.ts | 1 - .../app/pages/workspace/share/result/result.component.ts | 1 - zeppelin-web-angular/src/app/services/helium.service.ts | 1 - 10 files changed, 2 insertions(+), 15 deletions(-) diff --git a/zeppelin-web-angular/projects/zeppelin-sdk/src/interfaces/message-common.interface.ts b/zeppelin-web-angular/projects/zeppelin-sdk/src/interfaces/message-common.interface.ts index 2ebbe71f526..dfbaf4bf189 100644 --- a/zeppelin-web-angular/projects/zeppelin-sdk/src/interfaces/message-common.interface.ts +++ b/zeppelin-web-angular/projects/zeppelin-sdk/src/interfaces/message-common.interface.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/naming-convention */ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/zeppelin-web-angular/projects/zeppelin-sdk/src/interfaces/message-operator.interface.ts b/zeppelin-web-angular/projects/zeppelin-sdk/src/interfaces/message-operator.interface.ts index c1a0c969524..1f8036b3931 100644 --- a/zeppelin-web-angular/projects/zeppelin-sdk/src/interfaces/message-operator.interface.ts +++ b/zeppelin-web-angular/projects/zeppelin-sdk/src/interfaces/message-operator.interface.ts @@ -10,7 +10,6 @@ * limitations under the License. */ -/* eslint-disable jsdoc/no-types */ /** * Representation of event type. */ diff --git a/zeppelin-web-angular/projects/zeppelin-visualization/src/g2-visualization-component-base.ts b/zeppelin-web-angular/projects/zeppelin-visualization/src/g2-visualization-component-base.ts index 3a1f3da43c2..cc6e01173f0 100644 --- a/zeppelin-web-angular/projects/zeppelin-visualization/src/g2-visualization-component-base.ts +++ b/zeppelin-web-angular/projects/zeppelin-visualization/src/g2-visualization-component-base.ts @@ -21,7 +21,6 @@ import { Visualization } from './visualization'; template: '', standalone: false }) -// eslint-disable-next-line @angular-eslint/component-class-suffix export abstract class G2VisualizationComponentBase implements OnDestroy { abstract container: ElementRef; chart?: G2.Chart | null; diff --git a/zeppelin-web-angular/projects/zeppelin-visualization/src/table-transformation.ts b/zeppelin-web-angular/projects/zeppelin-visualization/src/table-transformation.ts index fcaf559cb56..aa671fcd735 100644 --- a/zeppelin-web-angular/projects/zeppelin-visualization/src/table-transformation.ts +++ b/zeppelin-web-angular/projects/zeppelin-visualization/src/table-transformation.ts @@ -14,7 +14,6 @@ import { GraphConfig } from '@zeppelin/sdk'; import { TableData } from './table-data'; import { Transformation } from './transformation'; -// eslint-disable-next-line @typescript-eslint/no-explicit-any export class TableTransformation extends Transformation { constructor(config: GraphConfig) { super(config); diff --git a/zeppelin-web-angular/src/app/app-http.interceptor.ts b/zeppelin-web-angular/src/app/app-http.interceptor.ts index db003370f90..e3e4f26a4f0 100644 --- a/zeppelin-web-angular/src/app/app-http.interceptor.ts +++ b/zeppelin-web-angular/src/app/app-http.interceptor.ts @@ -28,7 +28,6 @@ export class AppHttpInterceptor implements HttpInterceptor { intercept(httpRequest: HttpRequest, next: HttpHandler): Observable> { let httpRequestUpdated = httpRequest.clone({ withCredentials: true }); if (environment.production) { - // eslint-disable-next-line @typescript-eslint/naming-convention httpRequestUpdated = httpRequest.clone({ setHeaders: { 'X-Requested-With': 'XMLHttpRequest' } }); } return next.handle(httpRequestUpdated).pipe( diff --git a/zeppelin-web-angular/src/app/core/destroy-hook/destroy-hook.component.ts b/zeppelin-web-angular/src/app/core/destroy-hook/destroy-hook.component.ts index 97d15b2d7e0..12e7374e9b3 100644 --- a/zeppelin-web-angular/src/app/core/destroy-hook/destroy-hook.component.ts +++ b/zeppelin-web-angular/src/app/core/destroy-hook/destroy-hook.component.ts @@ -17,7 +17,6 @@ import { Subject } from 'rxjs'; template: '', standalone: false }) -// eslint-disable-next-line @angular-eslint/component-class-suffix export class DestroyHookComponent implements OnDestroy { readonly destroy$ = new Subject(); diff --git a/zeppelin-web-angular/src/app/core/message-listener/message-listener.ts b/zeppelin-web-angular/src/app/core/message-listener/message-listener.ts index 12897460aef..8e601935934 100644 --- a/zeppelin-web-angular/src/app/core/message-listener/message-listener.ts +++ b/zeppelin-web-angular/src/app/core/message-listener/message-listener.ts @@ -19,7 +19,6 @@ import { Message, MessageReceiveDataTypeMap, ReceiveArgumentsType } from '@zeppe template: '', standalone: false }) -// eslint-disable-next-line @angular-eslint/component-class-suffix export class MessageListenersManager implements OnDestroy { __zeppelinMessageListeners__?: Array<() => void>; __zeppelinMessageListeners$__: Subscriber | null = new Subscriber(); @@ -43,18 +42,15 @@ export function MessageListener(op: K ) { const oldValue = descriptor.value as ReceiveArgumentsType; - // eslint-disable-next-line no-invalid-this const fn = function (this: MessageListenersManager) { - // eslint-disable-next-line no-invalid-this if (!this.__zeppelinMessageListeners$__) { throw new Error('__zeppelinMessageListeners$__ is not defined'); } - // eslint-disable-next-line no-invalid-this + this.__zeppelinMessageListeners$__.add( - // eslint-disable-next-line no-invalid-this this.messageService.receive(op).subscribe(data => { // @ts-ignore - // eslint-disable-next-line no-invalid-this + oldValue.apply(this, [data]); }) ); diff --git a/zeppelin-web-angular/src/app/languages/scala.ts b/zeppelin-web-angular/src/app/languages/scala.ts index 4b8c821055e..4930eb05c92 100644 --- a/zeppelin-web-angular/src/app/languages/scala.ts +++ b/zeppelin-web-angular/src/app/languages/scala.ts @@ -232,7 +232,6 @@ export const language = { [/[\/*]/, 'comment.doc'] ], - // eslint-disable-next-line id-blacklist string: [ [/[^\\"]+/, 'string'], [/@escapes/, 'string.escape'], diff --git a/zeppelin-web-angular/src/app/pages/workspace/share/result/result.component.ts b/zeppelin-web-angular/src/app/pages/workspace/share/result/result.component.ts index 85f9715c7f2..1b2ef5c9f38 100644 --- a/zeppelin-web-angular/src/app/pages/workspace/share/result/result.component.ts +++ b/zeppelin-web-angular/src/app/pages/workspace/share/result/result.component.ts @@ -596,7 +596,6 @@ export class NotebookParagraphResultComponent implements OnInit, AfterViewInit, this.destroy$.complete(); } - // eslint-disable-next-line @typescript-eslint/no-explicit-any private commitClassicVizConfigChange(configForMode: GraphConfig, mode: string) { if (this.isPending) { return; diff --git a/zeppelin-web-angular/src/app/services/helium.service.ts b/zeppelin-web-angular/src/app/services/helium.service.ts index 84fe126e2f0..f120bc120da 100644 --- a/zeppelin-web-angular/src/app/services/helium.service.ts +++ b/zeppelin-web-angular/src/app/services/helium.service.ts @@ -91,7 +91,6 @@ export class HeliumService extends BaseRest { // eslint-disable-next-line @typescript-eslint/no-explicit-any (window as any)._heliumBundles = [] as HeliumBundle[]; availableBundles.forEach(bundle => { - // eslint-disable-next-line no-eval eval(bundle); }); From f163199e50fc886426fd69516d6897b903934c71 Mon Sep 17 00:00:00 2001 From: ChanHo Lee Date: Sat, 6 Jun 2026 00:42:30 +0900 Subject: [PATCH 2/4] Remove redundant blank line MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: YONGJAE LEE (이용재) --- .../src/app/core/message-listener/message-listener.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/zeppelin-web-angular/src/app/core/message-listener/message-listener.ts b/zeppelin-web-angular/src/app/core/message-listener/message-listener.ts index 8e601935934..6487124ecc7 100644 --- a/zeppelin-web-angular/src/app/core/message-listener/message-listener.ts +++ b/zeppelin-web-angular/src/app/core/message-listener/message-listener.ts @@ -50,7 +50,6 @@ export function MessageListener(op: K this.__zeppelinMessageListeners$__.add( this.messageService.receive(op).subscribe(data => { // @ts-ignore - oldValue.apply(this, [data]); }) ); From 746751d2f338ed69c0747cf688665969d8d61a3c Mon Sep 17 00:00:00 2001 From: ChanHo Lee Date: Sat, 6 Jun 2026 00:52:13 +0900 Subject: [PATCH 3/4] [ZEPPELIN-6426] Enforce unused eslint-disable directives as errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Set linterOptions.reportUnusedDisableDirectives to 'error' in zeppelin-web-angular/eslint.config.js so eslint-disable directives that no longer suppress anything fail `ng lint` instead of only warning. The flat-config default is 'warn' and `ng lint` exits 0 on warnings, so without this the redundant directives removed in this change would silently accumulate again over time; promoting to error keeps the cleanup enforced by default. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Assisted-By: Claude --- zeppelin-web-angular/eslint.config.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/zeppelin-web-angular/eslint.config.js b/zeppelin-web-angular/eslint.config.js index 86f78bb57c1..69bc491e056 100644 --- a/zeppelin-web-angular/eslint.config.js +++ b/zeppelin-web-angular/eslint.config.js @@ -25,6 +25,13 @@ module.exports = tseslint.config( // Build output, vendored binaries and the React sub-app are never linted. ignores: ['dist/**', 'target/**', '.angular/**', 'coverage/**', 'node/**', 'projects/zeppelin-react/**'] }, + { + // Fail (not just warn) on eslint-disable directives that no longer suppress + // anything. The flat-config default is 'warn', and `ng lint` exits 0 on + // warnings, so stale directives would otherwise accumulate unnoticed -- + // promoting to 'error' keeps the ZEPPELIN-6426 cleanup enforced. + linterOptions: { reportUnusedDisableDirectives: 'error' } + }, { files: ['**/*.ts'], // == legacy `plugin:@angular-eslint/recommended` (sets the TS parser and From baf33cd640d98c9a5e2266fd9188cbde8bc71afb Mon Sep 17 00:00:00 2001 From: ChanHo Lee Date: Sat, 6 Jun 2026 00:56:06 +0900 Subject: [PATCH 4/4] [ZEPPELIN-6426] Enforce unused eslint-disable directives in zeppelin-react MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mirror the root zeppelin-web-angular change in the zeppelin-react sub-app's eslint.config.js by setting linterOptions.reportUnusedDisableDirectives to 'error', so eslint-disable directives that no longer suppress anything fail `npm run lint:react` instead of only warning. The flat-config default is 'warn' and plain `eslint` (no --max-warnings) exits 0 on warnings, so without this stale directives would silently accumulate in the React sources too; this keeps both sub-apps consistent. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Assisted-By: Claude --- .../projects/zeppelin-react/eslint.config.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/zeppelin-web-angular/projects/zeppelin-react/eslint.config.js b/zeppelin-web-angular/projects/zeppelin-react/eslint.config.js index b981e30ca16..4cc363261d9 100644 --- a/zeppelin-web-angular/projects/zeppelin-react/eslint.config.js +++ b/zeppelin-web-angular/projects/zeppelin-react/eslint.config.js @@ -31,6 +31,14 @@ module.exports = tseslint.config( // == legacy `ignorePatterns` ignores: ['dist/**', 'node_modules/**', 'webpack.config.js'] }, + { + // Fail (not just warn) on eslint-disable directives that no longer suppress + // anything. The flat-config default is 'warn', and `npm run lint:react` + // (plain `eslint`, no --max-warnings) exits 0 on warnings, so stale + // directives would otherwise accumulate unnoticed -- mirrors the root + // zeppelin-web-angular config (ZEPPELIN-6426). + linterOptions: { reportUnusedDisableDirectives: 'error' } + }, { files: ['src/**/*.{ts,tsx}'], // == legacy `extends`: eslint:recommended + @typescript-eslint/recommended