diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2023-11-27 19:33:01 -0500 | 
|---|---|---|
| committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2023-11-27 19:33:01 -0500 | 
| commit | 14d12f6ba20b837a04c638b935773f3120e194ff (patch) | |
| tree | dcd6b61d51ff39c97b60812b2bf3c8cd564347f8 /ext/js | |
| parent | d5b1217df3fe7480fc5f58fe194f5bbf73281094 (diff) | |
Update timer types and such
Diffstat (limited to 'ext/js')
| -rw-r--r-- | ext/js/app/frontend.js | 11 | ||||
| -rw-r--r-- | ext/js/background/backend.js | 4 | ||||
| -rw-r--r-- | ext/js/background/offscreen.js | 4 | ||||
| -rw-r--r-- | ext/js/comm/api.js | 2 | ||||
| -rw-r--r-- | ext/js/comm/clipboard-monitor.js | 2 | ||||
| -rw-r--r-- | ext/js/comm/cross-frame-api.js | 21 | ||||
| -rw-r--r-- | ext/js/comm/frame-ancestry-handler.js | 2 | ||||
| -rw-r--r-- | ext/js/comm/frame-client.js | 2 | ||||
| -rw-r--r-- | ext/js/comm/mecab.js | 2 | ||||
| -rw-r--r-- | ext/js/core.js | 2 | ||||
| -rw-r--r-- | ext/js/display/display-audio.js | 2 | ||||
| -rw-r--r-- | ext/js/display/display-notification.js | 2 | ||||
| -rw-r--r-- | ext/js/display/display.js | 2 | ||||
| -rw-r--r-- | ext/js/display/element-overflow-controller.js | 8 | ||||
| -rw-r--r-- | ext/js/display/option-toggle-hotkey-handler.js | 2 | ||||
| -rw-r--r-- | ext/js/display/search-display-controller.js | 2 | ||||
| -rw-r--r-- | ext/js/dom/document-util.js | 2 | ||||
| -rw-r--r-- | ext/js/dom/panel-element.js | 2 | ||||
| -rw-r--r-- | ext/js/language/text-scanner.js | 6 | ||||
| -rw-r--r-- | ext/js/media/audio-downloader.js | 2 | ||||
| -rw-r--r-- | ext/js/pages/settings/popup-preview-frame.js | 2 | 
21 files changed, 49 insertions, 35 deletions
| diff --git a/ext/js/app/frontend.js b/ext/js/app/frontend.js index 628c504e..e1f8d8c9 100644 --- a/ext/js/app/frontend.js +++ b/ext/js/app/frontend.js @@ -99,7 +99,7 @@ export class Frontend {          this._popupEventListeners = new EventListenerCollection();          /** @type {?import('core').TokenObject} */          this._updatePopupToken = null; -        /** @type {?number} */ +        /** @type {?import('core').Timeout} */          this._clearSelectionTimer = null;          /** @type {boolean} */          this._isPointerOverPopup = false; @@ -840,7 +840,7 @@ export class Frontend {       */      async _waitForFrontendReady(frameId, timeout) {          return new Promise((resolve, reject) => { -            /** @type {?number} */ +            /** @type {?import('core').Timeout} */              let timeoutId = null;              const cleanup = () => { @@ -973,6 +973,13 @@ export class Frontend {          await yomitan.api.loadExtensionScripts([              '/js/accessibility/google-docs-util.js'          ]); +        this._prepareGoogleDocs2(); +    } + +    /** +     * @returns {Promise<void>} +     */ +    async _prepareGoogleDocs2() {          if (typeof GoogleDocsUtil === 'undefined') { return; }          DocumentUtil.registerGetRangeFromPointHandler(GoogleDocsUtil.getRangeFromPoint.bind(GoogleDocsUtil));      } diff --git a/ext/js/background/backend.js b/ext/js/background/backend.js index 44f5a42d..f1a47e7f 100644 --- a/ext/js/background/backend.js +++ b/ext/js/background/backend.js @@ -138,7 +138,7 @@ export class Backend {          /** @type {?string} */          this._defaultBrowserActionTitle = null; -        /** @type {?number} */ +        /** @type {?import('core').Timeout} */          this._badgePrepareDelayTimer = null;          /** @type {?import('log').LogLevel} */          this._logErrorLevel = null; @@ -1981,7 +1981,7 @@ export class Backend {       */      _waitUntilTabFrameIsReady(tabId, frameId, timeout=null) {          return new Promise((resolve, reject) => { -            /** @type {?number} */ +            /** @type {?import('core').Timeout} */              let timer = null;              /** @type {?import('extension').ChromeRuntimeOnMessageCallback} */              let onMessage = (message, sender) => { diff --git a/ext/js/background/offscreen.js b/ext/js/background/offscreen.js index 45345c01..8da661ad 100644 --- a/ext/js/background/offscreen.js +++ b/ext/js/background/offscreen.js @@ -51,7 +51,7 @@ export class Offscreen {          });          /** @type {import('offscreen').MessageHandlerMap} */ -        this._messageHandlers = new Map([ +        const messageHandlers = new Map([              ['clipboardGetTextOffscreen',    {async: true,  handler: this._getTextHandler.bind(this)}],              ['clipboardGetImageOffscreen',   {async: true,  handler: this._getImageHandler.bind(this)}],              ['clipboardSetBrowserOffscreen', {async: false, handler: this._setClipboardBrowser.bind(this)}], @@ -65,6 +65,8 @@ export class Offscreen {              ['getTermFrequenciesOffscreen',  {async: true,  handler: this._getTermFrequenciesHandler.bind(this)}],              ['clearDatabaseCachesOffscreen', {async: false, handler: this._clearDatabaseCachesHandler.bind(this)}]          ]); +        /** @type {import('offscreen').MessageHandlerMap<string>} */ +        this._messageHandlers = messageHandlers;          const onMessage = this._onMessage.bind(this);          chrome.runtime.onMessage.addListener(onMessage); diff --git a/ext/js/comm/api.js b/ext/js/comm/api.js index 0cfdba59..26218595 100644 --- a/ext/js/comm/api.js +++ b/ext/js/comm/api.js @@ -431,7 +431,7 @@ export class API {       */      _createActionPort(timeout) {          return new Promise((resolve, reject) => { -            /** @type {?number} */ +            /** @type {?import('core').Timeout} */              let timer = null;              const portDetails = deferPromise(); diff --git a/ext/js/comm/clipboard-monitor.js b/ext/js/comm/clipboard-monitor.js index 06e95438..3b3a56a9 100644 --- a/ext/js/comm/clipboard-monitor.js +++ b/ext/js/comm/clipboard-monitor.js @@ -31,7 +31,7 @@ export class ClipboardMonitor extends EventDispatcher {          this._japaneseUtil = japaneseUtil;          /** @type {import('clipboard-monitor').ClipboardReaderLike} */          this._clipboardReader = clipboardReader; -        /** @type {?number} */ +        /** @type {?import('core').Timeout} */          this._timerId = null;          /** @type {?import('core').TokenObject} */          this._timerToken = null; diff --git a/ext/js/comm/cross-frame-api.js b/ext/js/comm/cross-frame-api.js index 34f3f36a..3ac38cf2 100644 --- a/ext/js/comm/cross-frame-api.js +++ b/ext/js/comm/cross-frame-api.js @@ -25,14 +25,14 @@ import {yomitan} from '../yomitan.js';   */  class CrossFrameAPIPort extends EventDispatcher {      /** -     * @param {?number} otherTabId +     * @param {number} otherTabId       * @param {number} otherFrameId       * @param {chrome.runtime.Port} port       * @param {import('core').MessageHandlerMap} messageHandlers       */      constructor(otherTabId, otherFrameId, port, messageHandlers) {          super(); -        /** @type {?number} */ +        /** @type {number} */          this._otherTabId = otherTabId;          /** @type {number} */          this._otherFrameId = otherFrameId; @@ -48,7 +48,7 @@ class CrossFrameAPIPort extends EventDispatcher {          this._eventListeners = new EventListenerCollection();      } -    /** @type {?number} */ +    /** @type {number} */      get otherTabId() {          return this._otherTabId;      } @@ -299,7 +299,7 @@ export class CrossFrameAPI {          this._ackTimeout = 3000; // 3 seconds          /** @type {number} */          this._responseTimeout = 10000; // 10 seconds -        /** @type {Map<?number, Map<number, CrossFrameAPIPort>>} */ +        /** @type {Map<number, Map<number, CrossFrameAPIPort>>} */          this._commPorts = new Map();          /** @type {import('core').MessageHandlerMap} */          this._messageHandlers = new Map(); @@ -339,7 +339,12 @@ export class CrossFrameAPI {       * @returns {Promise<TReturn>}       */      async invokeTab(targetTabId, targetFrameId, action, params) { -        if (typeof targetTabId !== 'number') { targetTabId = this._tabId; } +        if (typeof targetTabId !== 'number') { +            targetTabId = this._tabId; +            if (typeof targetTabId !== 'number') { +                throw new Error('Unknown target tab id for invocation'); +            } +        }          const commPort = await this._getOrCreateCommPort(targetTabId, targetFrameId);          return await commPort.invoke(action, params, this._ackTimeout, this._responseTimeout);      } @@ -405,7 +410,7 @@ export class CrossFrameAPI {      }      /** -     * @param {?number} otherTabId +     * @param {number} otherTabId       * @param {number} otherFrameId       * @returns {Promise<CrossFrameAPIPort>}       */ @@ -420,7 +425,7 @@ export class CrossFrameAPI {          return await this._createCommPort(otherTabId, otherFrameId);      }      /** -     * @param {?number} otherTabId +     * @param {number} otherTabId       * @param {number} otherFrameId       * @returns {Promise<CrossFrameAPIPort>}       */ @@ -438,7 +443,7 @@ export class CrossFrameAPI {      }      /** -     * @param {?number} otherTabId +     * @param {number} otherTabId       * @param {number} otherFrameId       * @param {chrome.runtime.Port} port       * @returns {CrossFrameAPIPort} diff --git a/ext/js/comm/frame-ancestry-handler.js b/ext/js/comm/frame-ancestry-handler.js index 49c96c22..687ec368 100644 --- a/ext/js/comm/frame-ancestry-handler.js +++ b/ext/js/comm/frame-ancestry-handler.js @@ -122,7 +122,7 @@ export class FrameAncestryHandler {              const responseMessageId = `${this._responseMessageIdBase}${uniqueId}`;              /** @type {number[]} */              const results = []; -            /** @type {?number} */ +            /** @type {?import('core').Timeout} */              let timer = null;              const cleanup = () => { diff --git a/ext/js/comm/frame-client.js b/ext/js/comm/frame-client.js index 1519cf7f..8aa8c6d6 100644 --- a/ext/js/comm/frame-client.js +++ b/ext/js/comm/frame-client.js @@ -83,7 +83,7 @@ export class FrameClient {      _connectInternal(frame, targetOrigin, hostFrameId, setupFrame, timeout) {          return new Promise((resolve, reject) => {              const tokenMap = new Map(); -            /** @type {?number} */ +            /** @type {?import('core').Timeout} */              let timer = null;              const deferPromiseDetails = /** @type {import('core').DeferredPromiseDetails<void>} */ (deferPromise());              const frameLoadedPromise = deferPromiseDetails.promise; diff --git a/ext/js/comm/mecab.js b/ext/js/comm/mecab.js index 072b42f3..0a87463b 100644 --- a/ext/js/comm/mecab.js +++ b/ext/js/comm/mecab.js @@ -31,7 +31,7 @@ export class Mecab {          this._port = null;          /** @type {number} */          this._sequence = 0; -        /** @type {Map<number, {resolve: (value: unknown) => void, reject: (reason?: unknown) => void, timer: number}>} */ +        /** @type {Map<number, {resolve: (value: unknown) => void, reject: (reason?: unknown) => void, timer: import('core').Timeout}>} */          this._invocations = new Map();          /** @type {EventListenerCollection} */          this._eventListeners = new EventListenerCollection(); diff --git a/ext/js/core.js b/ext/js/core.js index cdac2020..a53d5572 100644 --- a/ext/js/core.js +++ b/ext/js/core.js @@ -307,7 +307,7 @@ export function promiseAnimationFrame(timeout) {              return;          } -        /** @type {?number} */ +        /** @type {?import('core').Timeout} */          let timer = null;          /** @type {?number} */          let frameRequest = null; diff --git a/ext/js/display/display-audio.js b/ext/js/display/display-audio.js index 3fbfc3c8..3576decb 100644 --- a/ext/js/display/display-audio.js +++ b/ext/js/display/display-audio.js @@ -36,7 +36,7 @@ export class DisplayAudio {          this._playbackVolume = 1.0;          /** @type {boolean} */          this._autoPlay = false; -        /** @type {?number} */ +        /** @type {?import('core').Timeout} */          this._autoPlayAudioTimer = null;          /** @type {number} */          this._autoPlayAudioDelay = 400; diff --git a/ext/js/display/display-notification.js b/ext/js/display/display-notification.js index b3f20700..d1cfa537 100644 --- a/ext/js/display/display-notification.js +++ b/ext/js/display/display-notification.js @@ -34,7 +34,7 @@ export class DisplayNotification {          this._closeButton = /** @type {HTMLElement} */ (node.querySelector('.footer-notification-close-button'));          /** @type {EventListenerCollection} */          this._eventListeners = new EventListenerCollection(); -        /** @type {?number} */ +        /** @type {?import('core').Timeout} */          this._closeTimer = null;      } diff --git a/ext/js/display/display.js b/ext/js/display/display.js index f14291d1..6e1450c3 100644 --- a/ext/js/display/display.js +++ b/ext/js/display/display.js @@ -117,7 +117,7 @@ export class Display extends EventDispatcher {          this._queryOffset = 0;          /** @type {HTMLElement} */          this._progressIndicator = /** @type {HTMLElement} */ (document.querySelector('#progress-indicator')); -        /** @type {?number} */ +        /** @type {?import('core').Timeout} */          this._progressIndicatorTimer = null;          /** @type {DynamicProperty<boolean>} */          this._progressIndicatorVisible = new DynamicProperty(false); diff --git a/ext/js/display/element-overflow-controller.js b/ext/js/display/element-overflow-controller.js index 1d2c808f..35277fa5 100644 --- a/ext/js/display/element-overflow-controller.js +++ b/ext/js/display/element-overflow-controller.js @@ -22,7 +22,7 @@ export class ElementOverflowController {      constructor() {          /** @type {Element[]} */          this._elements = []; -        /** @type {?number} */ +        /** @type {?(number|import('core').Timeout)} */          this._checkTimer = null;          /** @type {EventListenerCollection} */          this._eventListeners = new EventListenerCollection(); @@ -154,7 +154,7 @@ export class ElementOverflowController {      /**       * @param {() => void} callback       * @param {number} timeout -     * @returns {number} +     * @returns {number|import('core').Timeout}       */      _requestIdleCallback(callback, timeout) {          if (typeof requestIdleCallback === 'function') { @@ -165,11 +165,11 @@ export class ElementOverflowController {      }      /** -     * @param {number} handle +     * @param {number|import('core').Timeout} handle       */      _cancelIdleCallback(handle) {          if (typeof cancelIdleCallback === 'function') { -            cancelIdleCallback(handle); +            cancelIdleCallback(/** @type {number} */ (handle));          } else {              clearTimeout(handle);          } diff --git a/ext/js/display/option-toggle-hotkey-handler.js b/ext/js/display/option-toggle-hotkey-handler.js index 531e208d..edd7de5b 100644 --- a/ext/js/display/option-toggle-hotkey-handler.js +++ b/ext/js/display/option-toggle-hotkey-handler.js @@ -29,7 +29,7 @@ export class OptionToggleHotkeyHandler {          this._display = display;          /** @type {?import('./display-notification.js').DisplayNotification} */          this._notification = null; -        /** @type {?number} */ +        /** @type {?import('core').Timeout} */          this._notificationHideTimer = null;          /** @type {number} */          this._notificationHideTimeout = 5000; diff --git a/ext/js/display/search-display-controller.js b/ext/js/display/search-display-controller.js index b93757c2..98a4666b 100644 --- a/ext/js/display/search-display-controller.js +++ b/ext/js/display/search-display-controller.js @@ -63,7 +63,7 @@ export class SearchDisplayController {          this._wanakanaBound = false;          /** @type {boolean} */          this._introVisible = true; -        /** @type {?number} */ +        /** @type {?import('core').Timeout} */          this._introAnimationTimer = null;          /** @type {boolean} */          this._clipboardMonitorEnabled = false; diff --git a/ext/js/dom/document-util.js b/ext/js/dom/document-util.js index cf58d39f..549a8195 100644 --- a/ext/js/dom/document-util.js +++ b/ext/js/dom/document-util.js @@ -360,7 +360,7 @@ export class DocumentUtil {      /**       * Adds a fullscreen change event listener. This function handles all of the browser-specific variants.       * @param {EventListener} onFullscreenChanged The event callback. -     * @param {?EventListenerCollection} eventListenerCollection An optional `EventListenerCollection` to add the registration to. +     * @param {?import('../core.js').EventListenerCollection} eventListenerCollection An optional `EventListenerCollection` to add the registration to.       */      static addFullscreenChangeEventListener(onFullscreenChanged, eventListenerCollection=null) {          const target = document; diff --git a/ext/js/dom/panel-element.js b/ext/js/dom/panel-element.js index 314eb2fd..748c3a36 100644 --- a/ext/js/dom/panel-element.js +++ b/ext/js/dom/panel-element.js @@ -37,7 +37,7 @@ export class PanelElement extends EventDispatcher {          this._mutationObserver = null;          /** @type {boolean} */          this._visible = false; -        /** @type {?number} */ +        /** @type {?import('core').Timeout} */          this._closeTimer = null;      } diff --git a/ext/js/language/text-scanner.js b/ext/js/language/text-scanner.js index f6bcde8d..d1b033e6 100644 --- a/ext/js/language/text-scanner.js +++ b/ext/js/language/text-scanner.js @@ -120,7 +120,7 @@ export class TextScanner extends EventDispatcher {          /** @type {boolean} */          this._preventNextClickScan = false; -        /** @type {?number} */ +        /** @type {?import('core').Timeout} */          this._preventNextClickScanTimer = null;          /** @type {number} */          this._preventNextClickScanTimerDuration = 50; @@ -145,7 +145,7 @@ export class TextScanner extends EventDispatcher {          /** @type {boolean} */          this._canClearSelection = true; -        /** @type {?number} */ +        /** @type {?import('core').Timeout} */          this._textSelectionTimer = null;          /** @type {boolean} */          this._yomitanIsChangingTextSelectionNow = false; @@ -995,7 +995,7 @@ export class TextScanner extends EventDispatcher {      async _scanTimerWait() {          const delay = this._delay;          const promise = /** @type {Promise<boolean>} */ (new Promise((resolve) => { -            /** @type {?number} */ +            /** @type {?import('core').Timeout} */              let timeout = setTimeout(() => {                  timeout = null;                  resolve(true); diff --git a/ext/js/media/audio-downloader.js b/ext/js/media/audio-downloader.js index 0847d479..e041cc67 100644 --- a/ext/js/media/audio-downloader.js +++ b/ext/js/media/audio-downloader.js @@ -316,7 +316,7 @@ export class AudioDownloader {          let signal;          /** @type {?import('request-builder.js').ProgressCallback} */          let onProgress = null; -        /** @type {?number} */ +        /** @type {?import('core').Timeout} */          let idleTimer = null;          if (typeof idleTimeout === 'number') {              const abortController = new AbortController(); diff --git a/ext/js/pages/settings/popup-preview-frame.js b/ext/js/pages/settings/popup-preview-frame.js index bb00829f..dab21f4d 100644 --- a/ext/js/pages/settings/popup-preview-frame.js +++ b/ext/js/pages/settings/popup-preview-frame.js @@ -43,7 +43,7 @@ export class PopupPreviewFrame {          this._apiOptionsGetOld = null;          /** @type {boolean} */          this._popupShown = false; -        /** @type {?number} */ +        /** @type {?import('core').Timeout} */          this._themeChangeTimeout = null;          /** @type {?import('text-source').TextSource} */          this._textSource = null; |