Add return types on module boundaries
authorTim Düsterhus <duesterhus@woltlab.com>
Fri, 30 Oct 2020 11:02:44 +0000 (12:02 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Fri, 30 Oct 2020 11:26:19 +0000 (12:26 +0100)
18 files changed:
wcfsetup/install/files/js/WoltLabSuite/Core/I18n/Plural.js
wcfsetup/install/files/js/WoltLabSuite/Core/Ui/CloseOverlay.js
wcfsetup/install/files/js/WoltLabSuite/Core/Ui/Page/Search/Handler.js
wcfsetup/install/files/ts/WoltLabSuite/Core/Core.ts
wcfsetup/install/files/ts/WoltLabSuite/Core/I18n/Plural.ts
wcfsetup/install/files/ts/WoltLabSuite/Core/Ui/Article/Search.ts
wcfsetup/install/files/ts/WoltLabSuite/Core/Ui/CloseOverlay.ts
wcfsetup/install/files/ts/WoltLabSuite/Core/Ui/Confirmation.ts
wcfsetup/install/files/ts/WoltLabSuite/Core/Ui/Dialog/Data.ts
wcfsetup/install/files/ts/WoltLabSuite/Core/Ui/Page/JumpTo.ts
wcfsetup/install/files/ts/WoltLabSuite/Core/Ui/Page/Search.ts
wcfsetup/install/files/ts/WoltLabSuite/Core/Ui/Page/Search/Handler.ts
wcfsetup/install/files/ts/WoltLabSuite/Core/Ui/Suggestion.ts
wcfsetup/install/files/ts/WoltLabSuite/Core/Ui/TabMenu.ts
wcfsetup/install/files/ts/WoltLabSuite/Core/Ui/TabMenu/Simple.ts
wcfsetup/install/files/ts/WoltLabSuite/Core/Ui/User/Editor.ts
wcfsetup/install/files/ts/WoltLabSuite/Core/Ui/User/List.ts
wcfsetup/install/files/ts/WoltLabSuite/Core/Ui/User/Trophy/List.ts

index f57471651e245cf1cba14bbcbf8144b8c98f719a..4fc431a55bdf8ca34d787b2fff632d8d926e57ab 100644 (file)
@@ -141,7 +141,9 @@ define(["require", "exports", "tslib", "../StringUtil"], function (require, expo
                 return PLURAL_ONE;
         },
         // Tibetan
-        bo(_n) { },
+        bo(_n) {
+            return undefined;
+        },
         // Bosnian
         bs(n) {
             const v = Plural.getV(n);
@@ -270,7 +272,9 @@ define(["require", "exports", "tslib", "../StringUtil"], function (require, expo
                 return PLURAL_ONE;
         },
         // Indonesian
-        id(_n) { },
+        id(_n) {
+            return undefined;
+        },
         // Icelandic
         is(n) {
             const f = Plural.getF(n);
@@ -278,9 +282,13 @@ define(["require", "exports", "tslib", "../StringUtil"], function (require, expo
                 return PLURAL_ONE;
         },
         // Japanese
-        ja(_n) { },
+        ja(_n) {
+            return undefined;
+        },
         // Javanese
-        jv(_n) { },
+        jv(_n) {
+            return undefined;
+        },
         // Georgian
         ka(n) {
             if (n == 1)
@@ -292,14 +300,18 @@ define(["require", "exports", "tslib", "../StringUtil"], function (require, expo
                 return PLURAL_ONE;
         },
         // Khmer
-        km(_n) { },
+        km(_n) {
+            return undefined;
+        },
         // Kannada
         kn(n) {
             if (n >= 0 && n <= 1)
                 return PLURAL_ONE;
         },
         // Korean
-        ko(_n) { },
+        ko(_n) {
+            return undefined;
+        },
         // Kurdish
         ku(n) {
             if (n == 1)
@@ -316,7 +328,9 @@ define(["require", "exports", "tslib", "../StringUtil"], function (require, expo
                 return PLURAL_ONE;
         },
         // Lao
-        lo(_n) { },
+        lo(_n) {
+            return undefined;
+        },
         // Lithuanian
         lt(n) {
             const mod10 = n % 10;
@@ -361,7 +375,9 @@ define(["require", "exports", "tslib", "../StringUtil"], function (require, expo
                 return PLURAL_ONE;
         },
         // Malay
-        ms(_n) { },
+        ms(_n) {
+            return undefined;
+        },
         // Maltese
         mt(n) {
             const mod100 = n % 100;
@@ -373,7 +389,9 @@ define(["require", "exports", "tslib", "../StringUtil"], function (require, expo
                 return PLURAL_MANY;
         },
         // Burmese
-        my(_n) { },
+        my(_n) {
+            return undefined;
+        },
         // Norwegian
         no(n) {
             if (n == 1)
@@ -486,9 +504,13 @@ define(["require", "exports", "tslib", "../StringUtil"], function (require, expo
                 return PLURAL_ONE;
         },
         // Tajik
-        tg(_n) { },
+        tg(_n) {
+            return undefined;
+        },
         // Thai
-        th(_n) { },
+        th(_n) {
+            return undefined;
+        },
         // Turkmen
         tk(n) {
             if (n == 1)
@@ -515,9 +537,13 @@ define(["require", "exports", "tslib", "../StringUtil"], function (require, expo
                 return PLURAL_ONE;
         },
         // Vietnamese
-        vi(_n) { },
+        vi(_n) {
+            return undefined;
+        },
         // Chinese
-        zh(_n) { },
+        zh(_n) {
+            return undefined;
+        },
     };
     return Plural;
 });
index 6ee0344e7b84aca40b72f4a4ca8d11b086a0ea87..16959ae0bfe9481e01d1895c028fd07334df87f4 100644 (file)
@@ -27,6 +27,6 @@ define(["require", "exports", "tslib", "../CallbackList"], function (require, ex
             _callbackList.forEach(null, (callback) => callback());
         },
     };
-    document.body.addEventListener("click", UiCloseOverlay.execute);
+    document.body.addEventListener("click", () => UiCloseOverlay.execute());
     return UiCloseOverlay;
 });
index 1936aa6d994633362a44b99b67e53d053d11d8ad..c21d75a10ab5fcffeac02c2bbcba4d2d2c838870 100644 (file)
@@ -149,11 +149,6 @@ define(["require", "exports", "tslib", "../../../Language", "../../../StringUtil
     }
     /**
      * Opens the lookup overlay for provided page id.
-     *
-     * @param  {int}    pageId      page id
-     * @param  {string}  title      dialog title
-     * @param  {function}  callback    callback function provided with the user-selected object id
-     * @param  {string?}  labelLanguageItem  optional language item name for the search input label
      */
     function open(pageId, title, callback, labelLanguageItem) {
         getUiPageSearchHandler().open(pageId, title, callback, labelLanguageItem);
index 1a0de00ffa921432e66d63679ca3e9616787c267..ccb355207c44bb1a24828cd8328ef436b18a540a 100644 (file)
@@ -207,7 +207,7 @@ export function triggerEvent(element: EventTarget, eventName: string): void {
 /**
  * Returns the unique prefix for the localStorage.
  */
-export function getStoragePrefix() {
+export function getStoragePrefix(): string {
   return _prefix;
 }
 
index 445b3a3a2964e80020bab16a589a4a6b2826d707..71047d61a4ab82b755be504fdff0f8a0b87672ed 100644 (file)
@@ -151,7 +151,9 @@ const Plural = {
   },
 
   // Tibetan
-  bo(_n: number) {},
+  bo(_n: number): string | undefined {
+    return undefined;
+  },
 
   // Bosnian
   bs(n: number): string | undefined {
@@ -276,7 +278,9 @@ const Plural = {
   },
 
   // Indonesian
-  id(_n: number) {},
+  id(_n: number): string | undefined {
+    return undefined;
+  },
 
   // Icelandic
   is(n: number): string | undefined {
@@ -286,10 +290,14 @@ const Plural = {
   },
 
   // Japanese
-  ja(_n: number) {},
+  ja(_n: number): string | undefined {
+    return undefined;
+  },
 
   // Javanese
-  jv(_n: number) {},
+  jv(_n: number): string | undefined {
+    return undefined;
+  },
 
   // Georgian
   ka(n: number): string | undefined {
@@ -302,7 +310,9 @@ const Plural = {
   },
 
   // Khmer
-  km(_n: number) {},
+  km(_n: number): string | undefined {
+    return undefined;
+  },
 
   // Kannada
   kn(n: number): string | undefined {
@@ -310,7 +320,9 @@ const Plural = {
   },
 
   // Korean
-  ko(_n: number) {},
+  ko(_n: number): string | undefined {
+    return undefined;
+  },
 
   // Kurdish
   ku(n: number): string | undefined {
@@ -328,7 +340,9 @@ const Plural = {
   },
 
   // Lao
-  lo(_n: number) {},
+  lo(_n: number): string | undefined {
+    return undefined;
+  },
 
   // Lithuanian
   lt(n: number): string | undefined {
@@ -375,7 +389,9 @@ const Plural = {
   },
 
   // Malay
-  ms(_n: number) {},
+  ms(_n: number): string | undefined {
+    return undefined;
+  },
 
   // Maltese
   mt(n: number): string | undefined {
@@ -387,7 +403,9 @@ const Plural = {
   },
 
   // Burmese
-  my(_n: number) {},
+  my(_n: number): string | undefined {
+    return undefined;
+  },
 
   // Norwegian
   no(n: number): string | undefined {
@@ -503,10 +521,14 @@ const Plural = {
   },
 
   // Tajik
-  tg(_n: number) {},
+  tg(_n: number): string | undefined {
+    return undefined;
+  },
 
   // Thai
-  th(_n: number) {},
+  th(_n: number): string | undefined {
+    return undefined;
+  },
 
   // Turkmen
   tk(n: number): string | undefined {
@@ -535,10 +557,14 @@ const Plural = {
   },
 
   // Vietnamese
-  vi(_n: number) {},
+  vi(_n: number): string | undefined {
+    return undefined;
+  },
 
   // Chinese
-  zh(_n: number) {},
+  zh(_n: number): string | undefined {
+    return undefined;
+  },
 };
 
 export = Plural;
index d296c696fe03f3b663d62c2bcc827f7bad9aa3f2..49096a4e481bb122bd54a128ef23da489ffd1cfb 100644 (file)
@@ -1,6 +1,6 @@
 import * as Ajax from "../../Ajax";
 import { AjaxCallbackObject, CallbackSetup, DatabaseObjectActionResponse } from "../../Ajax/Data";
-import { DialogCallbackObject } from "../Dialog/Data";
+import { DialogCallbackObject, CallbackSetup as DialogSetup } from "../Dialog/Data";
 import DomUtil from "../../Dom/Util";
 import * as Language from "../../Language";
 import * as StringUtil from "../../StringUtil";
@@ -98,7 +98,7 @@ class UiArticleSearch implements AjaxCallbackObject, DialogCallbackObject {
     };
   }
 
-  _dialogSetup() {
+  _dialogSetup(): ReturnType<DialogSetup> {
     return {
       id: "wcfUiArticleSearch",
       options: {
@@ -154,6 +154,6 @@ function getUiArticleSearch() {
   return uiArticleSearch;
 }
 
-export function open(callbackSelect) {
+export function open(callbackSelect: CallbackSelect): void {
   getUiArticleSearch().open(callbackSelect);
 }
index 61113fcd1070d124146395596e185c8c7471c8e3..d01867f9f2ecab53ae185b9145ad8d5064aecff7 100644 (file)
@@ -26,11 +26,11 @@ const UiCloseOverlay = {
   /**
    * Invokes all registered callbacks.
    */
-  execute() {
+  execute(): void {
     _callbackList.forEach(null, (callback) => callback());
   },
 };
 
-document.body.addEventListener("click", UiCloseOverlay.execute);
+document.body.addEventListener("click", () => UiCloseOverlay.execute());
 
 export = UiCloseOverlay;
index cde445dc4005dd08c7c3d2c891adc2a8ca18bc74..6db16091f459cc468edfa5bfdc7288a5124c07d8 100644 (file)
@@ -11,7 +11,7 @@
 import * as Core from "../Core";
 import * as Language from "../Language";
 import UiDialog from "./Dialog";
-import { DialogCallbackObject } from "./Dialog/Data";
+import { DialogCallbackObject, CallbackSetup as DialogSetup } from "./Dialog/Data";
 
 class UiConfirmation implements DialogCallbackObject {
   private _active = false;
@@ -124,7 +124,7 @@ class UiConfirmation implements DialogCallbackObject {
     this.confirmButton.focus();
   }
 
-  _dialogSetup() {
+  _dialogSetup(): ReturnType<DialogSetup> {
     return {
       id: "wcfSystemConfirmation",
       options: {
index c9a7845660ece76b7bc01b316f9190798dd5b7fb..38be27a05720944340653e8d872dbef285039c31 100644 (file)
@@ -2,9 +2,12 @@ import { RequestPayload, ResponseData } from "../../Ajax/Data";
 
 export type DialogHtml = DocumentFragment | string | null;
 
+export type CallbackSetup = () => DialogSettings;
+export type CallbackSubmit = () => void;
+
 export interface DialogCallbackObject {
-  _dialogSetup: () => DialogSettings;
-  _dialogSubmit?: () => void;
+  _dialogSetup: CallbackSetup;
+  _dialogSubmit?: CallbackSubmit;
 }
 
 export interface AjaxInitialization extends RequestPayload {
index 83ee8bee007e8beb0a06a18cb2a9245c6f2118c9..797a24d070f38939c1d0be0ad100014ad10296c3 100644 (file)
@@ -7,7 +7,7 @@
  * @module  WoltLabSuite/Core/Ui/Page/JumpTo
  */
 
-import { DialogCallbackObject, DialogSettings } from "../Dialog/Data";
+import { DialogCallbackObject, CallbackSetup as DialogSetup } from "../Dialog/Data";
 import * as Language from "../../Language";
 import UiDialog from "../Dialog";
 
@@ -86,7 +86,7 @@ class UiPageJumpTo implements DialogCallbackObject {
     UiDialog.close(this);
   }
 
-  _dialogSetup(): DialogSettings {
+  _dialogSetup(): ReturnType<DialogSetup> {
     const source = `<dl>
         <dt><label for="jsPaginationPageNo">${Language.get("wcf.page.jumpTo")}</label></dt>
                 <dd>
index b0ed37d9f2028de4556c26392d71aa641c5e5e96..611294a2fe1eecae9b6440e3ee4206ca883d2a62 100644 (file)
@@ -1,6 +1,6 @@
 import * as Ajax from "../../Ajax";
 import { AjaxCallbackObject, CallbackSetup, DatabaseObjectActionResponse } from "../../Ajax/Data";
-import { DialogCallbackObject } from "../Dialog/Data";
+import { DialogCallbackObject, CallbackSetup as DialogSetup } from "../Dialog/Data";
 import DomUtil from "../../Dom/Util";
 import * as Language from "../../Language";
 import * as StringUtil from "../../StringUtil";
@@ -98,7 +98,7 @@ class UiPageSearch implements AjaxCallbackObject, DialogCallbackObject {
     };
   }
 
-  _dialogSetup() {
+  _dialogSetup(): ReturnType<DialogSetup> {
     return {
       id: "wcfUiPageSearch",
       options: {
index ace186a0413fcfdeb77bc89562e71ac58ff5ad7f..3e33ca0025a80ccaafc7db9996b1ed2e5d569c51 100644 (file)
@@ -12,6 +12,7 @@ import * as Language from "../../../Language";
 import * as StringUtil from "../../../StringUtil";
 import DomUtil from "../../../Dom/Util";
 import UiDialog from "../../Dialog";
+import { DialogCallbackObject, CallbackSetup as DialogSetup } from "../../Dialog/Data";
 import UiPageSearchInput from "./Input";
 import { DatabaseObjectActionResponse } from "../../../Ajax/Data";
 
@@ -29,7 +30,7 @@ interface AjaxResponse extends DatabaseObjectActionResponse {
   returnValues: ItemData[];
 }
 
-class UiPageSearchHandler {
+class UiPageSearchHandler implements DialogCallbackObject {
   private callbackSuccess?: CallbackSelect = undefined;
   private resultList?: HTMLUListElement = undefined;
   private resultListContainer?: HTMLElement = undefined;
@@ -136,7 +137,7 @@ class UiPageSearchHandler {
     UiDialog.close(this);
   }
 
-  _dialogSetup() {
+  _dialogSetup(): ReturnType<DialogSetup> {
     return {
       id: "wcfUiPageSearchHandler",
       options: {
@@ -191,12 +192,7 @@ function getUiPageSearchHandler(): UiPageSearchHandler {
 
 /**
  * Opens the lookup overlay for provided page id.
- *
- * @param  {int}    pageId      page id
- * @param  {string}  title      dialog title
- * @param  {function}  callback    callback function provided with the user-selected object id
- * @param  {string?}  labelLanguageItem  optional language item name for the search input label
  */
-export function open(pageId, title, callback, labelLanguageItem) {
+export function open(pageId: number, title: string, callback: CallbackSelect, labelLanguageItem?: string): void {
   getUiPageSearchHandler().open(pageId, title, callback, labelLanguageItem);
 }
index 14987c699d7be12e8b82fd93ae54a22709bc73bd..6ca21bc6576229da27d71e3ac706132b3132e1aa 100644 (file)
@@ -74,7 +74,7 @@ class UiSuggestion implements AjaxCallbackObject {
   /**
    * Removes an excluded search value.
    */
-  removeExcludedValue(value: string) {
+  removeExcludedValue(value: string): void {
     this.excludedSearchValues.delete(value);
   }
 
index 13076595ebf8e7f3c27c4b819a3492fc91753b30..50ce3a3b10d6ac02490b3c28aec95a82ab7f75f1 100644 (file)
@@ -234,7 +234,7 @@ function rebuildMenuOverflow(menu) {
 /**
  * Sets up tab menus and binds listeners.
  */
-export function setup() {
+export function setup(): void {
   init();
   selectErroneousTabs();
 
@@ -306,7 +306,7 @@ export function getTabMenu(containerId: string): TabMenuSimple | undefined {
   return _tabMenus.get(containerId);
 }
 
-export function scrollToTab(tab) {
+export function scrollToTab(tab): void {
   if (!_enableTabScroll) {
     return;
   }
index 804f19ba52723585670a45be346fd550da0fc1d3..0f5230084fd0e948904191226473d969e01ec32f 100644 (file)
@@ -433,7 +433,7 @@ class TabMenuSimple {
     return this.tabs;
   }
 
-  static getIdentifierFromHash() {
+  static getIdentifierFromHash(): string {
     if (window.location.hash.match(/^#+([^\/]+)+(?:\/.+)?/)) {
       return RegExp.$1;
     }
index b4ea7e318f95dee32a7292bbb5d354e27d3dd8d7..ac354aae7cf878267013b0ff5c082615c795fc24 100644 (file)
@@ -10,7 +10,7 @@
 import * as Ajax from "../../Ajax";
 import { AjaxCallbackObject, CallbackSetup } from "../../Ajax/Data";
 import * as Core from "../../Core";
-import { DialogCallbackObject, DialogSettings } from "../Dialog/Data";
+import { DialogCallbackObject, CallbackSetup as DialogSetup } from "../Dialog/Data";
 import DomUtil from "../../Dom/Util";
 import * as Language from "../../Language";
 import * as StringUtil from "../../StringUtil";
@@ -192,7 +192,7 @@ class UserEditor implements AjaxCallbackObject, DialogCallbackObject {
     };
   }
 
-  _dialogSetup(): DialogSettings {
+  _dialogSetup(): ReturnType<DialogSetup> {
     return {
       id: "wcfUiUserEditor",
       options: {
@@ -254,6 +254,6 @@ class UserEditor implements AjaxCallbackObject, DialogCallbackObject {
 /**
  * Initializes the user editor.
  */
-export function init() {
+export function init(): void {
   new UserEditor();
 }
index bba9ccc98d1324c46d48d0211134687da92ce6db..a6c5b564165b60fb707b091c88a1c55156e8a6cf 100644 (file)
@@ -13,7 +13,7 @@ import DomUtil from "../../Dom/Util";
 import UiDialog from "../Dialog";
 import UiPagination from "../Pagination";
 import { AjaxCallbackObject, CallbackSetup, DatabaseObjectActionResponse } from "../../Ajax/Data";
-import { DialogCallbackObject, DialogData, DialogSettings } from "../Dialog/Data";
+import { DialogCallbackObject, DialogData, CallbackSetup as DialogSetup } from "../Dialog/Data";
 
 /**
  * @constructor
@@ -108,7 +108,7 @@ class UiUserList implements AjaxCallbackObject, DialogCallbackObject {
     };
   }
 
-  _dialogSetup(): DialogSettings {
+  _dialogSetup(): ReturnType<DialogSetup> {
     return {
       id: DomUtil.getUniqueId(),
       options: {
index b48c48d79c508260fbeb68dc049f5239de794e18..9aafde448070770f9cb7c7b2c2dc7f0d662a78a8 100644 (file)
@@ -9,7 +9,7 @@
 
 import * as Ajax from "../../../Ajax";
 import { AjaxCallbackObject, CallbackSetup, DatabaseObjectActionResponse } from "../../../Ajax/Data";
-import { DialogCallbackObject, DialogData } from "../../Dialog/Data";
+import { DialogCallbackObject, DialogData, CallbackSetup as DialogSetup } from "../../Dialog/Data";
 import DomChangeListener from "../../../Dom/Change/Listener";
 import UiDialog from "../../Dialog";
 import UiPagination from "../../Pagination";
@@ -133,7 +133,7 @@ class UiUserTrophyList implements AjaxCallbackObject, DialogCallbackObject {
     };
   }
 
-  _dialogSetup() {
+  _dialogSetup(): ReturnType<DialogSetup> {
     return {
       id: "userTrophyListOverlay",
       options: {