Fix various linting issues
authorAlexander Ebert <ebert@woltlab.com>
Fri, 1 Nov 2024 16:26:09 +0000 (17:26 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Fri, 1 Nov 2024 16:26:09 +0000 (17:26 +0100)
36 files changed:
ts/WoltLabSuite/Core/Ajax/Backend.ts
ts/WoltLabSuite/Core/Ajax/DboAction.ts
ts/WoltLabSuite/Core/Ajax/Error.ts
ts/WoltLabSuite/Core/Ajax/Request.ts
ts/WoltLabSuite/Core/Bbcode/Code.ts
ts/WoltLabSuite/Core/Component/Comment/List.ts
ts/WoltLabSuite/Core/Controller/Popover.ts
ts/WoltLabSuite/Core/Devtools.ts
ts/WoltLabSuite/Core/Form/Builder/Field/Checkboxes.ts
ts/WoltLabSuite/Core/Image/ExifUtil.ts
ts/WoltLabSuite/Core/Image/Resizer.ts
ts/WoltLabSuite/Core/Media/Manager/Base.ts
ts/WoltLabSuite/Core/Media/Manager/Editor.ts
ts/WoltLabSuite/Core/Notification/Handler.ts
ts/WoltLabSuite/Core/Ui/Dropdown/Simple.ts
ts/WoltLabSuite/Core/Ui/FlexibleMenu.ts
ts/WoltLabSuite/Core/Ui/Page/Action.ts
ts/WoltLabSuite/Core/Ui/Page/JumpTo.ts
ts/WoltLabSuite/Core/Ui/Reaction/CountButtons.ts
ts/WoltLabSuite/Core/Ui/Search/Page.ts
ts/WoltLabSuite/Core/Upload.ts
ts/WoltLabSuite/WebComponent/Language.ts
wcfsetup/install/files/js/WoltLabSuite/Core/Ajax/Backend.js
wcfsetup/install/files/js/WoltLabSuite/Core/Ajax/DboAction.js
wcfsetup/install/files/js/WoltLabSuite/Core/Ajax/Error.js
wcfsetup/install/files/js/WoltLabSuite/Core/Ajax/Request.js
wcfsetup/install/files/js/WoltLabSuite/Core/Controller/Popover.js
wcfsetup/install/files/js/WoltLabSuite/Core/Devtools.js
wcfsetup/install/files/js/WoltLabSuite/Core/Image/ExifUtil.js
wcfsetup/install/files/js/WoltLabSuite/Core/Image/Resizer.js
wcfsetup/install/files/js/WoltLabSuite/Core/Media/Manager/Base.js
wcfsetup/install/files/js/WoltLabSuite/Core/Notification/Handler.js
wcfsetup/install/files/js/WoltLabSuite/Core/Ui/Dropdown/Simple.js
wcfsetup/install/files/js/WoltLabSuite/Core/Ui/FlexibleMenu.js
wcfsetup/install/files/js/WoltLabSuite/Core/Ui/Page/Action.js
wcfsetup/install/files/js/WoltLabSuite/Core/Ui/Search/Page.js

index be1fcda4be9a06845fdf9327dd84c6e075722d51..ab672f6b169626203864c02c6e9d6920faf85049 100644 (file)
@@ -98,7 +98,7 @@ class BackendRequest {
     let json: unknown;
     try {
       json = await response.json();
-    } catch (e) {
+    } catch {
       throw new InvalidJson(response);
     }
 
index 0cfd2f86bfa8f80765a0ff604cb87569e85f8f43..004a27ac6d927d8cc31f7593abfa57fac7e2566b 100644 (file)
@@ -217,7 +217,7 @@ async function tryParseAsJson(response: Response): Promise<ResponseData> {
   let json: ResponseData;
   try {
     json = await response.json();
-  } catch (e) {
+  } catch {
     throw new InvalidJson(response);
   }
 
index 16b8352e29b0c236ba7c0464fdc357cc56fc91f5..1326b99ba7e453951ec624732ce74a0bf8196ea5 100644 (file)
@@ -60,7 +60,7 @@ async function getErrorHtml(error: ApiError): Promise<string | HTMLIFrameElement
       let json: ErrorResponse | undefined = undefined;
       try {
         json = await error.response.clone().json();
-      } catch (e) {
+      } catch {
         message = await error.response.clone().text();
       }
 
index 697dbf34fb3f802e6bc46f927a9d9ba9ed50c97c..2cbe31184dc0d7381f9deff4822fd65443ea98b1 100644 (file)
@@ -235,7 +235,7 @@ class AjaxRequest {
       if (this.getContentType(xhr) === "application/json") {
         try {
           data = JSON.parse(xhr.responseText) as ResponseData;
-        } catch (e) {
+        } catch {
           // invalid JSON
           this._failure(xhr, options);
 
@@ -275,7 +275,7 @@ class AjaxRequest {
     let data: ResponseData | null = null;
     try {
       data = JSON.parse(xhr.responseText);
-    } catch (e) {
+    } catch {
       // Ignore JSON parsing failure.
     }
 
index 5199d0a04cf6199a347d5e34857295dec28224d6..e1ea6ee1688f9c21b352661cb16c31916323cb57 100644 (file)
@@ -115,7 +115,7 @@ class Code {
       const chunkEnd = Math.min(chunkStart + Code.chunkSize, max);
 
       for (let offset = chunkStart; offset < chunkEnd; offset++) {
-        const toReplace = originalLines[offset]!;
+        const toReplace = originalLines[offset];
         const replacement = highlightedLines.next().value as Element;
         toReplace.parentNode!.replaceChild(replacement, toReplace);
       }
index b50bacebaa94e188294707fab85ce51c5a120e4c..9fc650f51b336753ebfdd72b2b9cc4228035e94f 100644 (file)
@@ -126,7 +126,7 @@ class CommentList {
     } catch (error) {
       await handleValidationErrors(error, () => {
         // The comment id is invalid or there is a mismatch, silently ignore it.
-        permaLinkComment!.remove();
+        permaLinkComment.remove();
 
         return true;
       });
@@ -195,7 +195,7 @@ class CommentList {
     } catch (error) {
       await handleValidationErrors(error, () => {
         // The response id is invalid or there is a mismatch, silently ignore it.
-        permalinkResponse!.remove();
+        permalinkResponse.remove();
 
         return true;
       });
index eea5fa06839e488756d786c266e76eb01e0319f9..d4fb6dca4685d92ec3f2c98b143d7d44e33122f8 100644 (file)
@@ -325,8 +325,8 @@ class ControllerPopover implements AjaxCallbackObject {
     if (forceHide) {
       this.popover.classList.add("forceHide");
 
-      // force layout
-      //noinspection BadExpressionStatementJS
+      // Query a layout related property to force a reflow, otherwise the transition is optimized away.
+      // eslint-disable-next-line @typescript-eslint/no-unused-expressions
       this.popover.offsetTop;
 
       this.clearContent();
index 1d6dd9b71cd846b4fca9cad52587d9528a599ff3..92e22cb06d163b8283c57d09700bf5d684109a56 100644 (file)
@@ -87,7 +87,7 @@ const Devtools = {
           if (settings !== null) {
             _settings = JSON.parse(settings);
           }
-        } catch (e) {
+        } catch {
           // Ignore JSON parsing failure.
         }
 
index 417ff880cf683f524e36f259bcb84d102464faa3..46f856296ecd0fad0814f9dbf65f0f9f538ed666 100644 (file)
@@ -29,7 +29,7 @@ class Checkboxes extends Field {
 
         return null;
       })
-      .filter((v) => v !== null) as string[];
+      .filter((v) => v !== null);
 
     return {
       [this._fieldId]: values,
index 6d45a2ac19a6034db12cd3f7427c354f6d3267e1..4a6df6e762e572f0049b33fabbf5e4e7d5262bf0 100644 (file)
@@ -55,7 +55,11 @@ async function blobToUint8(blob: Blob | File): Promise<Uint8Array> {
 
     reader.addEventListener("error", () => {
       reader.abort();
-      reject(reader.error);
+      if (reader.error) {
+        reject(reader.error);
+      } else {
+        reject();
+      }
     });
 
     reader.addEventListener("load", () => {
index 00dc13c2cac29c965abf3dac02f04be1686064ec..2eb659a770e0f85b901f09a57f89652f7f014c58 100644 (file)
@@ -117,7 +117,11 @@ class ImageResizer {
 
       reader.addEventListener("error", () => {
         reader.abort();
-        reject(reader.error);
+        if (reader.error) {
+          reject(reader.error);
+        } else {
+          reject();
+        }
       });
 
       image.addEventListener("error", reject);
index 03357f96e1c9da4c3c0a7bfd28f85313c8f61019..fe4bad9914816c2f02c3af455f26b360688d228a 100644 (file)
@@ -444,7 +444,7 @@ abstract class MediaManager<TOptions extends MediaManagerOptions = MediaManagerO
       // remove list item
       try {
         this._listItems.get(mediaId)!.remove();
-      } catch (e) {
+      } catch {
         // ignore errors if item has already been removed by other code
       }
 
index 3df63381eeaa33bd143cc4e916a3f1ff01117b9f..b71d615f6668eeadebb9062717a58cf7a6d71a50 100644 (file)
@@ -195,7 +195,7 @@ export class MediaManagerEditor extends MediaManager<MediaManagerEditorOptions>
 
         return null;
       })
-      .filter((s) => s !== null) as string[];
+      .filter((s) => s !== null);
   }
 
   /**
index b571e4590663a4fcf9bec653e94597650e3f0398..7f3d1b4660e45f7f5f520adde8f3bf77a68755bb 100644 (file)
@@ -157,7 +157,7 @@ class NotificationHandler {
 
       pollData = JSON.parse(pollData as string);
       keepAliveData = JSON.parse(keepAliveData as string);
-    } catch (e) {
+    } catch {
       abort = true;
     }
 
index 1ce0d133c456c744cdea4417afad83b727ac96f4..8d1ba020ee401a22b890c8e0cb059ec049c1d660 100644 (file)
@@ -620,7 +620,7 @@ const UiDropdownSimple = {
       UiDropdownSimple.close(containerId);
 
       _menus.get(containerId)?.remove();
-    } catch (e) {
+    } catch {
       // the elements might not exist anymore thus ignore all errors while cleaning up
     }
 
index 2c292b576544a98797efd025d3204549a36677c6..e0475e3da3432a3972b408c947296b02dab0de0e 100644 (file)
@@ -42,7 +42,7 @@ export function setup(): void {
 export function register(containerId: string): void {
   const container = document.getElementById(containerId);
   if (container === null) {
-    throw "Expected a valid element id, '" + containerId + "' does not exist.";
+    throw new Error("Expected a valid element id, '" + containerId + "' does not exist.");
   }
 
   if (_containers.has(containerId)) {
@@ -51,7 +51,7 @@ export function register(containerId: string): void {
 
   const list = DomTraverse.childByTag(container, "UL");
   if (list === null) {
-    throw "Expected an <ul> element as child of container '" + containerId + "'.";
+    throw new Error("Expected an <ul> element as child of container '" + containerId + "'.");
   }
 
   _containers.set(containerId, container);
@@ -90,7 +90,7 @@ export function rebuildAll(): void {
 export function rebuild(containerId: string): void {
   const container = _containers.get(containerId);
   if (container === undefined) {
-    throw "Expected a valid element id, '" + containerId + "' is unknown.";
+    throw new Error("Expected a valid element id, '" + containerId + "' is unknown.");
   }
 
   const styles = window.getComputedStyle(container);
index 575cf81581c27a0c27813dacc77e23a6e85ec82a..cf75907d5ef4cb2c4243cca8d9291b7e58c33825 100644 (file)
@@ -204,7 +204,7 @@ export function add(buttonName: string, button: HTMLElement, insertBeforeButton?
   _buttons.set(buttonName, button);
 
   // Query a layout related property to force a reflow, otherwise the transition is optimized away.
-  // noinspection BadExpressionStatementJS
+  // eslint-disable-next-line @typescript-eslint/no-unused-expressions
   wrapper.offsetParent;
 
   // Toggle the visibility to force the transition to be applied.
@@ -242,7 +242,7 @@ export function remove(buttonName: string): void {
         }
 
         listItem.removeEventListener("transitionend", callback);
-      } catch (e) {
+      } catch {
         // ignore errors if the element has already been removed
       }
     };
index 4bf9103d31c68f8af15ef4eaa31465bda8c0e8e7..2a03d68d5639b3b8080ce44cf06078467a0a2ada 100644 (file)
@@ -39,7 +39,7 @@ class UiPageJumpTo implements DialogCallbackObject {
     if (!this.elements.has(element)) {
       element.querySelectorAll(".jumpTo").forEach((jumpTo: HTMLElement) => {
         jumpTo.addEventListener("click", (ev) => this.click(element, ev));
-        this.elements.set(element, callback!);
+        this.elements.set(element, callback);
       });
     }
   }
index 1d42cd2bf62bbb6743714905bce16aafebe8d454..173f1c0443a518070004d66bedb899c59eaab633 100644 (file)
@@ -172,7 +172,7 @@ class CountButtons {
           countSpan.innerHTML = StringUtil.shortUnit(count);
           createdElement.appendChild(countSpan);
 
-          summaryList!.appendChild(createdElement);
+          summaryList.appendChild(createdElement);
 
           triggerChange = true;
         }
index 712a48fdbb82bde950d0fd6532525b4380b4d4c3..4ba81f9011811030927760f79ca8cd676bd687cf 100644 (file)
@@ -27,7 +27,7 @@ function click(event: MouseEvent): void {
         parameters.set(key, data[key]);
       });
     }
-  } catch (e) {
+  } catch {
     // Ignore JSON parsing failure.
   }
 
index f61cb96a00ce4f79e0eca0fbc1e7b015998b5528..aa1334ea0b4b456e752a6e54ce0efcfa5070a663 100644 (file)
@@ -360,10 +360,10 @@ abstract class Upload<TOptions extends UploadOptions = UploadOptions> {
 
       Object.entries(parameters).forEach(([key, value]) => {
         if (typeof value === "object") {
-          const newPrefix = prefix!.length === 0 ? key : `${prefix!}[${key}]`;
+          const newPrefix = prefix.length === 0 ? key : `${prefix}[${key}]`;
           appendFormData(value, newPrefix);
         } else {
-          const dataName = prefix!.length === 0 ? key : `${prefix!}[${key}]`;
+          const dataName = prefix.length === 0 ? key : `${prefix}[${key}]`;
           formData.append(dataName, value);
         }
       });
index 7cf1fc0e3601e142114d0d72876b5fe743b3ae8e..89c96be8165903b7138c743a0464143e4041dc92 100644 (file)
@@ -44,7 +44,7 @@ function compile(value: string): Phrase {
   try {
     const template = new Template(value);
     return template.fetch.bind(template);
-  } catch (e) {
+  } catch {
     return function () {
       return value;
     };
index 2eb132f05a4e384ab0bc2c059065a5dd52af9a8b..a500e54ff2b0a193a52192c7aec8b8be1b2d77c2 100644 (file)
@@ -69,7 +69,7 @@ define(["require", "exports", "tslib", "./Status", "./Error", "../Core"], functi
             try {
                 json = await response.json();
             }
-            catch (e) {
+            catch {
                 throw new Error_1.InvalidJson(response);
             }
             return json;
index 962465a579bbee9b8c9a26e7a523e827339d1f83..1871af86567327a1ca29fa1948ddfb4762abc1ac 100644 (file)
@@ -157,7 +157,7 @@ define(["require", "exports", "tslib", "./Error", "./Status", "../Core"], functi
         try {
             json = await response.json();
         }
-        catch (e) {
+        catch {
             throw new Error_1.InvalidJson(response);
         }
         return json;
index fd3e5a0a28cc527bb7e5e64d4003dbf9b5d5df19..330d19dd2d0c121a67c095a27a0e6ffe485c5214 100644 (file)
@@ -46,7 +46,7 @@ define(["require", "exports", "tslib", "../Component/Dialog", "../Core", "../Lan
                 try {
                     json = await error.response.clone().json();
                 }
-                catch (e) {
+                catch {
                     message = await error.response.clone().text();
                 }
                 if (json && Core.isPlainObject(json) && Object.keys(json).length > 0) {
index ce3db1bfb563dacef70744dc045a2570fe57bf5f..b25a7264528042bbee9e079a07e672e0bffb1fa6 100644 (file)
@@ -202,7 +202,7 @@ define(["require", "exports", "tslib", "./Status", "../Core", "../Dom/Change/Lis
                     try {
                         data = JSON.parse(xhr.responseText);
                     }
-                    catch (e) {
+                    catch {
                         // invalid JSON
                         this._failure(xhr, options);
                         return;
@@ -235,7 +235,7 @@ define(["require", "exports", "tslib", "./Status", "../Core", "../Dom/Change/Lis
             try {
                 data = JSON.parse(xhr.responseText);
             }
-            catch (e) {
+            catch {
                 // Ignore JSON parsing failure.
             }
             let showError = true;
index bfa6a967da19bfbaf8ce8ec4a68c343ee640f27c..d55863bccda44eb9e9af0f9fa6360f887b7418bd 100644 (file)
@@ -242,8 +242,8 @@ define(["require", "exports", "tslib", "../Ajax", "../Dom/Change/Listener", "../
             }
             if (forceHide) {
                 this.popover.classList.add("forceHide");
-                // force layout
-                //noinspection BadExpressionStatementJS
+                // Query a layout related property to force a reflow, otherwise the transition is optimized away.
+                // eslint-disable-next-line @typescript-eslint/no-unused-expressions
                 this.popover.offsetTop;
                 this.clearContent();
                 this.popover.classList.remove("forceHide");
index 661918fcb324c3fde65d773338f5a72fd6a3654e..8d2eaf40dbf7e77b3c861e5f80d39096dc748a24 100644 (file)
@@ -70,7 +70,7 @@ define(["require", "exports"], function (require, exports) {
                             _settings = JSON.parse(settings);
                         }
                     }
-                    catch (e) {
+                    catch {
                         // Ignore JSON parsing failure.
                     }
                     if (!_settings.editorAutosave) {
index f56d528609793938ce24cd3420d5ef0a53761a12..e09ff1091d93baf82937f2c46f4ddf0ca26efe5c 100644 (file)
@@ -53,7 +53,12 @@ define(["require", "exports"], function (require, exports) {
             const reader = new FileReader();
             reader.addEventListener("error", () => {
                 reader.abort();
-                reject(reader.error);
+                if (reader.error) {
+                    reject(reader.error);
+                }
+                else {
+                    reject();
+                }
             });
             reader.addEventListener("load", () => {
                 resolve(new Uint8Array(reader.result));
index 41065b21c84e65a334280fe7d7a04938408b0096..f36920c1e5cd47914b63e53d7f730491c722094e 100644 (file)
@@ -92,7 +92,12 @@ define(["require", "exports", "tslib", "../FileUtil", "./ExifUtil", "pica"], fun
                 });
                 reader.addEventListener("error", () => {
                     reader.abort();
-                    reject(reader.error);
+                    if (reader.error) {
+                        reject(reader.error);
+                    }
+                    else {
+                        reject();
+                    }
                 });
                 image.addEventListener("error", reject);
                 image.addEventListener("load", () => {
index 2ceb6f575e90dbcb01ed7be2ae1f97d46a568268..26af3bcdc24df58215c05a55856cf617e14e016e 100644 (file)
@@ -365,7 +365,7 @@ define(["require", "exports", "tslib", "../../Core", "../../Language", "../../Pe
                 try {
                     this._listItems.get(mediaId).remove();
                 }
-                catch (e) {
+                catch {
                     // ignore errors if item has already been removed by other code
                 }
                 this._listItems.delete(mediaId);
index fb8afeabd6ffca08e64c7cb937d17caa50522068..eb22c8bae0820ad5c1347ac1bcf059355c9962c1 100644 (file)
@@ -117,7 +117,7 @@ define(["require", "exports", "tslib", "../Ajax", "../Core", "../Event/Handler"]
                 pollData = JSON.parse(pollData);
                 keepAliveData = JSON.parse(keepAliveData);
             }
-            catch (e) {
+            catch {
                 abort = true;
             }
             if (!abort) {
index 36e0b07d010465809ed2993f0998c96e6f08395d..0b3fdc65aa4051b1e83320e11b15738f3da76504 100644 (file)
@@ -515,7 +515,7 @@ define(["require", "exports", "tslib", "../../CallbackList", "../../Core", "../.
                 UiDropdownSimple.close(containerId);
                 _menus.get(containerId)?.remove();
             }
-            catch (e) {
+            catch {
                 // the elements might not exist anymore thus ignore all errors while cleaning up
             }
             _menus.delete(containerId);
index 87dd38ce571a809435a1d48d5b33a243fb0845be..688e74f8fa51c5ab72715a04a237946c801485d4 100644 (file)
@@ -44,14 +44,14 @@ define(["require", "exports", "tslib", "../Dom/Change/Listener", "../Dom/Util",
     function register(containerId) {
         const container = document.getElementById(containerId);
         if (container === null) {
-            throw "Expected a valid element id, '" + containerId + "' does not exist.";
+            throw new Error("Expected a valid element id, '" + containerId + "' does not exist.");
         }
         if (_containers.has(containerId)) {
             return;
         }
         const list = DomTraverse.childByTag(container, "UL");
         if (list === null) {
-            throw "Expected an <ul> element as child of container '" + containerId + "'.";
+            throw new Error("Expected an <ul> element as child of container '" + containerId + "'.");
         }
         _containers.set(containerId, container);
         _itemLists.set(containerId, list);
@@ -85,7 +85,7 @@ define(["require", "exports", "tslib", "../Dom/Change/Listener", "../Dom/Util",
     function rebuild(containerId) {
         const container = _containers.get(containerId);
         if (container === undefined) {
-            throw "Expected a valid element id, '" + containerId + "' is unknown.";
+            throw new Error("Expected a valid element id, '" + containerId + "' is unknown.");
         }
         const styles = window.getComputedStyle(container);
         const parent = container.parentNode;
index 349faf9f214a7174758d653e885296857bc671fb..cb7e6a7795fad79025d5487f581d4ad7fbeda4b5 100644 (file)
@@ -168,7 +168,7 @@ define(["require", "exports", "tslib", "../../Core", "../../Language", "../../Ui
         _wrapper.classList.remove("scrolledDown");
         _buttons.set(buttonName, button);
         // Query a layout related property to force a reflow, otherwise the transition is optimized away.
-        // noinspection BadExpressionStatementJS
+        // eslint-disable-next-line @typescript-eslint/no-unused-expressions
         wrapper.offsetParent;
         // Toggle the visibility to force the transition to be applied.
         wrapper.setAttribute("aria-hidden", "false");
@@ -201,7 +201,7 @@ define(["require", "exports", "tslib", "../../Core", "../../Language", "../../Ui
                     }
                     listItem.removeEventListener("transitionend", callback);
                 }
-                catch (e) {
+                catch {
                     // ignore errors if the element has already been removed
                 }
             };
index 29f5da79253e9c2944ea209dc86301bf9e73d2d6..eb0f99ee0f33023ef933a61fd9c118d135b761db 100644 (file)
@@ -26,7 +26,7 @@ define(["require", "exports", "tslib", "../../Core", "../../Dom/Util", "../Dropd
                 });
             }
         }
-        catch (e) {
+        catch {
             // Ignore JSON parsing failure.
         }
         if (objectType && objectType !== "everywhere") {