diff options
Diffstat (limited to 'ext/js')
46 files changed, 130 insertions, 95 deletions
| diff --git a/ext/js/app/frontend.js b/ext/js/app/frontend.js index e1f8d8c9..a1bbb217 100644 --- a/ext/js/app/frontend.js +++ b/ext/js/app/frontend.js @@ -41,9 +41,9 @@ export class Frontend {          parentPopupId,          parentFrameId,          useProxyPopup, -        canUseWindowPopup=true, +        canUseWindowPopup = true,          allowRootFramePopupProxy, -        childrenSupported=true, +        childrenSupported = true,          hotkeyHandler      }) {          /** @type {import('frontend').PageType} */ @@ -106,6 +106,7 @@ export class Frontend {          /** @type {?import('settings').OptionsContext} */          this._optionsContextOverride = null; +        /* eslint-disable no-multi-spaces */          /** @type {import('core').MessageHandlerMap} */          this._runtimeMessageHandlers = new Map(/** @type {import('core').MessageHandlerArray} */ ([              ['Frontend.requestReadyBroadcast',   {async: false, handler: this._onMessageRequestFrontendReadyBroadcast.bind(this)}], @@ -117,6 +118,7 @@ export class Frontend {              ['scanSelectedText', this._onActionScanSelectedText.bind(this)],              ['scanTextAtCaret',  this._onActionScanTextAtCaret.bind(this)]          ]); +        /* eslint-enable no-multi-spaces */      }      /** @@ -174,6 +176,7 @@ export class Frontend {          this._textScanner.on('clear', this._onTextScannerClear.bind(this));          this._textScanner.on('searched', this._onSearched.bind(this)); +        /* eslint-disable no-multi-spaces */          yomitan.crossFrame.registerHandlers([              ['Frontend.closePopup',       {async: false, handler: this._onApiClosePopup.bind(this)}],              ['Frontend.copySelection',    {async: false, handler: this._onApiCopySelection.bind(this)}], @@ -181,6 +184,7 @@ export class Frontend {              ['Frontend.getPopupInfo',     {async: false, handler: this._onApiGetPopupInfo.bind(this)}],              ['Frontend.getPageInfo',      {async: false, handler: this._onApiGetPageInfo.bind(this)}]          ]); +        /* eslint-enable no-multi-spaces */          this._prepareSiteSpecific();          this._updateContentScale(); diff --git a/ext/js/app/popup-factory.js b/ext/js/app/popup-factory.js index 6fa50796..41984841 100644 --- a/ext/js/app/popup-factory.js +++ b/ext/js/app/popup-factory.js @@ -47,6 +47,7 @@ export class PopupFactory {       */      prepare() {          this._frameOffsetForwarder.prepare(); +        /* eslint-disable no-multi-spaces */          yomitan.crossFrame.registerHandlers([              ['PopupFactory.getOrCreatePopup',     {async: true,  handler: this._onApiGetOrCreatePopup.bind(this)}],              ['PopupFactory.setOptionsContext',    {async: true,  handler: this._onApiSetOptionsContext.bind(this)}], @@ -64,6 +65,7 @@ export class PopupFactory {              ['PopupFactory.getFrameSize',         {async: true,  handler: this._onApiGetFrameSize.bind(this)}],              ['PopupFactory.setFrameSize',         {async: true,  handler: this._onApiSetFrameSize.bind(this)}]          ]); +        /* eslint-enable no-multi-spaces */      }      /** @@ -72,12 +74,12 @@ export class PopupFactory {       * @returns {Promise<import('popup').PopupAny>}       */      async getOrCreatePopup({ -        frameId=null, -        id=null, -        parentPopupId=null, -        depth=null, -        popupWindow=false, -        childrenSupported=false +        frameId = null, +        id = null, +        parentPopupId = null, +        depth = null, +        popupWindow = false, +        childrenSupported = false      }) {          // Find by existing id          if (id !== null) { diff --git a/ext/js/app/popup.js b/ext/js/app/popup.js index 7419785b..a2aa204a 100644 --- a/ext/js/app/popup.js +++ b/ext/js/app/popup.js @@ -718,7 +718,7 @@ export class Popup extends EventDispatcher {       * @param {string} action       * @param {import('core').SerializableObject} params       */ -    _invokeWindow(action, params={}) { +    _invokeWindow(action, params = {}) {          const contentWindow = this._frame.contentWindow;          if (this._frameClient === null || !this._frameClient.isConnected() || contentWindow === null) { return; } diff --git a/ext/js/background/backend.js b/ext/js/background/backend.js index 3eefed53..749c81a6 100644 --- a/ext/js/background/backend.js +++ b/ext/js/background/backend.js @@ -147,6 +147,7 @@ export class Backend {          /** @type {PermissionsUtil} */          this._permissionsUtil = new PermissionsUtil(); +        /* eslint-disable no-multi-spaces */          /** @type {import('backend').MessageHandlerMap} */          this._messageHandlers = new Map(/** @type {import('backend').MessageHandlerMapInit} */ ([              ['requestBackendReadySignal',    {async: false, contentScript: true,  handler: this._onApiRequestBackendReadySignal.bind(this)}], @@ -193,6 +194,7 @@ export class Backend {              ['loadExtensionScripts',         {async: true,  contentScript: true,  handler: this._onApiLoadExtensionScripts.bind(this)}],              ['openCrossFramePort',           {async: false, contentScript: true,  handler: this._onApiOpenCrossFramePort.bind(this)}]          ])); +        /* eslint-enable no-multi-spaces */          /** @type {import('backend').MessageHandlerWithProgressMap} */          this._messageHandlersWithProgress = new Map(/** @type {import('backend').MessageHandlerWithProgressMapInit} */ ([              // Empty @@ -201,10 +203,10 @@ export class Backend {          /** @type {Map<string, (params?: import('core').SerializableObject) => void>} */          this._commandHandlers = new Map(/** @type {[name: string, handler: (params?: import('core').SerializableObject) => void][]} */ ([              ['toggleTextScanning', this._onCommandToggleTextScanning.bind(this)], -            ['openInfoPage',       this._onCommandOpenInfoPage.bind(this)], -            ['openSettingsPage',   this._onCommandOpenSettingsPage.bind(this)], -            ['openSearchPage',     this._onCommandOpenSearchPage.bind(this)], -            ['openPopupWindow',    this._onCommandOpenPopupWindow.bind(this)] +            ['openInfoPage', this._onCommandOpenInfoPage.bind(this)], +            ['openSettingsPage', this._onCommandOpenSettingsPage.bind(this)], +            ['openSearchPage', this._onCommandOpenSearchPage.bind(this)], +            ['openPopupWindow', this._onCommandOpenPopupWindow.bind(this)]          ]));      } @@ -805,7 +807,7 @@ export class Backend {      }      /** @type {import('api').Handler<import('api').GetOrCreateSearchPopupDetails, import('api').GetOrCreateSearchPopupResult>} */ -    async _onApiGetOrCreateSearchPopup({focus=false, text}) { +    async _onApiGetOrCreateSearchPopup({focus = false, text}) {          const {tab, created} = await this._getOrCreateSearchPopup();          if (focus === true || (focus === 'ifCreated' && created)) {              await this._focusTab(tab); @@ -1979,7 +1981,7 @@ export class Backend {       * @param {?number} [timeout=null]       * @returns {Promise<void>}       */ -    _waitUntilTabFrameIsReady(tabId, frameId, timeout=null) { +    _waitUntilTabFrameIsReady(tabId, frameId, timeout = null) {          return new Promise((resolve, reject) => {              /** @type {?import('core').Timeout} */              let timer = null; diff --git a/ext/js/background/offscreen.js b/ext/js/background/offscreen.js index 4b57514d..85b6847b 100644 --- a/ext/js/background/offscreen.js +++ b/ext/js/background/offscreen.js @@ -50,6 +50,7 @@ export class Offscreen {              richContentPasteTargetSelector: '#clipboard-rich-content-paste-target'          }); +        /* eslint-disable no-multi-spaces */          /** @type {import('offscreen').MessageHandlerMap} */          const messageHandlers = new Map([              ['clipboardGetTextOffscreen',    {async: true,  handler: this._getTextHandler.bind(this)}], @@ -65,6 +66,7 @@ export class Offscreen {              ['getTermFrequenciesOffscreen',  {async: true,  handler: this._getTermFrequenciesHandler.bind(this)}],              ['clearDatabaseCachesOffscreen', {async: false, handler: this._clearDatabaseCachesHandler.bind(this)}]          ]); +        /* eslint-enable no-multi-spaces */          /** @type {import('offscreen').MessageHandlerMap<string>} */          this._messageHandlers = messageHandlers; diff --git a/ext/js/background/profile-conditions-util.js b/ext/js/background/profile-conditions-util.js index ceade070..b1bbe1d5 100644 --- a/ext/js/background/profile-conditions-util.js +++ b/ext/js/background/profile-conditions-util.js @@ -34,11 +34,11 @@ export class ProfileConditionsUtil {                  'popupLevel',                  {                      operators: new Map(/** @type {import('profile-conditions-util').OperatorMapArray} */ ([ -                        ['equal',              this._createSchemaPopupLevelEqual.bind(this)], -                        ['notEqual',           this._createSchemaPopupLevelNotEqual.bind(this)], -                        ['lessThan',           this._createSchemaPopupLevelLessThan.bind(this)], -                        ['greaterThan',        this._createSchemaPopupLevelGreaterThan.bind(this)], -                        ['lessThanOrEqual',    this._createSchemaPopupLevelLessThanOrEqual.bind(this)], +                        ['equal', this._createSchemaPopupLevelEqual.bind(this)], +                        ['notEqual', this._createSchemaPopupLevelNotEqual.bind(this)], +                        ['lessThan', this._createSchemaPopupLevelLessThan.bind(this)], +                        ['greaterThan', this._createSchemaPopupLevelGreaterThan.bind(this)], +                        ['lessThanOrEqual', this._createSchemaPopupLevelLessThanOrEqual.bind(this)],                          ['greaterThanOrEqual', this._createSchemaPopupLevelGreaterThanOrEqual.bind(this)]                      ]))                  } diff --git a/ext/js/comm/anki-connect.js b/ext/js/comm/anki-connect.js index 7ff8d0e1..bd9a69a2 100644 --- a/ext/js/comm/anki-connect.js +++ b/ext/js/comm/anki-connect.js @@ -318,7 +318,7 @@ export class AnkiConnect {       * @param {?string[]} actions A list of actions to check for       * @returns {Promise<import('anki').ApiReflectResult>} Information about the APIs.       */ -    async apiReflect(scopes, actions=null) { +    async apiReflect(scopes, actions = null) {          const result = await this._invoke('apiReflect', {scopes, actions});          if (!(typeof result === 'object' && result !== null)) {              throw this._createUnexpectedResultError('object', result); diff --git a/ext/js/comm/api.js b/ext/js/comm/api.js index 26218595..35a66d9e 100644 --- a/ext/js/comm/api.js +++ b/ext/js/comm/api.js @@ -482,7 +482,7 @@ export class API {       * @param {number} [timeout]       * @returns {Promise<TReturn>}       */ -    _invokeWithProgress(action, params, onProgress0, timeout=5000) { +    _invokeWithProgress(action, params, onProgress0, timeout = 5000) {          return new Promise((resolve, reject) => {              /** @type {?chrome.runtime.Port} */              let port = null; @@ -554,7 +554,7 @@ export class API {       * @param {import('core').SerializableObject} [params]       * @returns {Promise<TReturn>}       */ -    _invoke(action, params={}) { +    _invoke(action, params = {}) {          const data = {action, params};          return new Promise((resolve, reject) => {              try { diff --git a/ext/js/comm/clipboard-reader.js b/ext/js/comm/clipboard-reader.js index 364e31a3..a6d1c068 100644 --- a/ext/js/comm/clipboard-reader.js +++ b/ext/js/comm/clipboard-reader.js @@ -26,7 +26,7 @@ export class ClipboardReader {       * Creates a new instances of a clipboard reader.       * @param {{document: ?Document, pasteTargetSelector: ?string, richContentPasteTargetSelector: ?string}} details Details about how to set up the instance.       */ -    constructor({document=null, pasteTargetSelector=null, richContentPasteTargetSelector=null}) { +    constructor({document = null, pasteTargetSelector = null, richContentPasteTargetSelector = null}) {          /** @type {?Document} */          this._document = document;          /** @type {?import('environment').Browser} */ diff --git a/ext/js/comm/frame-ancestry-handler.js b/ext/js/comm/frame-ancestry-handler.js index e4d08f28..b91046bc 100644 --- a/ext/js/comm/frame-ancestry-handler.js +++ b/ext/js/comm/frame-ancestry-handler.js @@ -109,7 +109,7 @@ export class FrameAncestryHandler {       * @param {number} [timeout]       * @returns {Promise<number[]>}       */ -    _getFrameAncestryInfo(timeout=5000) { +    _getFrameAncestryInfo(timeout = 5000) {          return new Promise((resolve, reject) => {              const targetWindow = window.parent;              if (window === targetWindow) { diff --git a/ext/js/comm/frame-client.js b/ext/js/comm/frame-client.js index 8aa8c6d6..b07bb796 100644 --- a/ext/js/comm/frame-client.js +++ b/ext/js/comm/frame-client.js @@ -41,7 +41,7 @@ export class FrameClient {       * @param {import('frame-client').SetupFrameFunction} setupFrame       * @param {number} [timeout]       */ -    async connect(frame, targetOrigin, hostFrameId, setupFrame, timeout=10000) { +    async connect(frame, targetOrigin, hostFrameId, setupFrame, timeout = 10000) {          const {secret, token, frameId} = await this._connectInternal(frame, targetOrigin, hostFrameId, setupFrame, timeout);          this._secret = secret;          this._token = token; diff --git a/ext/js/core.js b/ext/js/core.js index 14d0ef56..5c0c964b 100644 --- a/ext/js/core.js +++ b/ext/js/core.js @@ -600,7 +600,7 @@ export class DynamicProperty extends EventDispatcher {       * @returns {import('core').TokenString} A string token which can be passed to the clearOverride function       *   to remove the override.       */ -    setOverride(value, priority=0) { +    setOverride(value, priority = 0) {          const overridesCount = this._overrides.length;          let i = 0;          for (; i < overridesCount; ++i) { @@ -670,7 +670,7 @@ export class Logger extends EventDispatcher {       *   Other values will be logged at a non-error level.       * @param {?import('log').LogContext} [context] An optional context object for the error which should typically include a `url` field.       */ -    log(error, level, context=null) { +    log(error, level, context = null) {          if (typeof context !== 'object' || context === null) {              context = {url: location.href};          } @@ -745,7 +745,7 @@ export class Logger extends EventDispatcher {       * @param {unknown} error The error to log. This is typically an `Error` or `Error`-like object.       * @param {?import('log').LogContext} context An optional context object for the error which should typically include a `url` field.       */ -    warn(error, context=null) { +    warn(error, context = null) {          this.log(error, 'warn', context);      } @@ -754,7 +754,7 @@ export class Logger extends EventDispatcher {       * @param {unknown} error The error to log. This is typically an `Error` or `Error`-like object.       * @param {?import('log').LogContext} context An optional context object for the error which should typically include a `url` field.       */ -    error(error, context=null) { +    error(error, context = null) {          this.log(error, 'error', context);      }  } diff --git a/ext/js/data/anki-note-builder.js b/ext/js/data/anki-note-builder.js index 4920db39..864bd2d4 100644 --- a/ext/js/data/anki-note-builder.js +++ b/ext/js/data/anki-note-builder.js @@ -51,15 +51,15 @@ export class AnkiNoteBuilder {          deckName,          modelName,          fields, -        tags=[], -        requirements=[], -        checkForDuplicates=true, -        duplicateScope='collection', -        duplicateScopeCheckAllModels=false, -        resultOutputMode='split', -        glossaryLayoutMode='default', -        compactTags=false, -        mediaOptions=null +        tags = [], +        requirements = [], +        checkForDuplicates = true, +        duplicateScope = 'collection', +        duplicateScopeCheckAllModels = false, +        resultOutputMode = 'split', +        glossaryLayoutMode = 'default', +        compactTags = false, +        mediaOptions = null      }) {          let duplicateScopeDeckName = null;          let duplicateScopeCheckChildren = false; @@ -130,9 +130,9 @@ export class AnkiNoteBuilder {          dictionaryEntry,          mode,          context, -        resultOutputMode='split', -        glossaryLayoutMode='default', -        compactTags=false, +        resultOutputMode = 'split', +        glossaryLayoutMode = 'default', +        compactTags = false,          marker      }) {          const commonData = this._createData(dictionaryEntry, mode, context, resultOutputMode, glossaryLayoutMode, compactTags, void 0); diff --git a/ext/js/data/database.js b/ext/js/data/database.js index 026945ca..8b9e7354 100644 --- a/ext/js/data/database.js +++ b/ext/js/data/database.js @@ -265,7 +265,7 @@ export class Database {       * @param {?(completedCount: number, totalCount: number) => void} onProgress       * @returns {Promise<void>}       */ -    bulkDelete(objectStoreName, indexName, query, filterKeys=null, onProgress=null) { +    bulkDelete(objectStoreName, indexName, query, filterKeys = null, onProgress = null) {          return new Promise((resolve, reject) => {              const transaction = this._readWriteTransaction([objectStoreName], resolve, reject);              const objectStore = transaction.objectStore(objectStoreName); diff --git a/ext/js/data/options-util.js b/ext/js/data/options-util.js index 70c1622f..c3c0e685 100644 --- a/ext/js/data/options-util.js +++ b/ext/js/data/options-util.js @@ -39,7 +39,7 @@ export class OptionsUtil {       * @param {?number} [targetVersion]       * @returns {Promise<import('settings').Options>}       */ -    async update(optionsInput, targetVersion=null) { +    async update(optionsInput, targetVersion = null) {          // Invalid options          let options = /** @type {{[key: string]: unknown}} */ (              typeof optionsInput === 'object' && optionsInput !== null && !Array.isArray(optionsInput) ? @@ -530,6 +530,7 @@ export class OptionsUtil {       * @returns {import('options-util').ModernUpdate[]}       */      _getVersionUpdates(targetVersion) { +        /* eslint-disable no-multi-spaces */          const result = [              {async: false, update: this._updateVersion1.bind(this)},              {async: false, update: this._updateVersion2.bind(this)}, @@ -553,6 +554,7 @@ export class OptionsUtil {              {async: false, update: this._updateVersion20.bind(this)},              {async: true,  update: this._updateVersion21.bind(this)}          ]; +        /* eslint-enable no-multi-spaces */          if (typeof targetVersion === 'number' && targetVersion < result.length) {              result.splice(targetVersion);          } @@ -818,6 +820,7 @@ export class OptionsUtil {              };              delete profile.options.anki.sentenceExt;              profile.options.general.popupActionBarLocation = 'top'; +            /* eslint-disable no-multi-spaces */              profile.options.inputs = {                  hotkeys: [                      {action: 'close',             key: 'Escape',    modifiers: [],       scopes: ['popup'], enabled: true}, @@ -838,6 +841,7 @@ export class OptionsUtil {                      {action: 'copyHostSelection', key: 'KeyC',      modifiers: ['ctrl'], scopes: ['popup'], enabled: true}                  ]              }; +            /* eslint-enable no-multi-spaces */              profile.options.anki.suspendNewCards = false;              profile.options.popupWindow = {                  width: profile.options.general.popupWidth, diff --git a/ext/js/display/display-anki.js b/ext/js/display/display-anki.js index 81791285..322237da 100644 --- a/ext/js/display/display-anki.js +++ b/ext/js/display/display-anki.js @@ -108,12 +108,14 @@ export class DisplayAnki {      /** */      prepare() {          this._noteContext = this._getNoteContext(); +        /* eslint-disable no-multi-spaces */          this._display.hotkeyHandler.registerActions([              ['addNoteKanji',      () => { this._tryAddAnkiNoteForSelectedEntry('kanji'); }],              ['addNoteTermKanji',  () => { this._tryAddAnkiNoteForSelectedEntry('term-kanji'); }],              ['addNoteTermKana',   () => { this._tryAddAnkiNoteForSelectedEntry('term-kana'); }],              ['viewNote',          this._viewNoteForSelectedEntry.bind(this)]          ]); +        /* eslint-enable no-multi-spaces */          this._display.on('optionsUpdated', this._onOptionsUpdated.bind(this));          this._display.on('contentClear', this._onContentClear.bind(this));          this._display.on('contentUpdateStart', this._onContentUpdateStart.bind(this)); diff --git a/ext/js/display/display-audio.js b/ext/js/display/display-audio.js index 1f279030..8cd1ccc3 100644 --- a/ext/js/display/display-audio.js +++ b/ext/js/display/display-audio.js @@ -83,6 +83,7 @@ export class DisplayAudio {      /** */      prepare() {          this._audioSystem.prepare(); +        /* eslint-disable no-multi-spaces */          this._display.hotkeyHandler.registerActions([              ['playAudio',           this._onHotkeyActionPlayAudio.bind(this)],              ['playAudioFromSource', this._onHotkeyActionPlayAudioFromSource.bind(this)] @@ -90,6 +91,7 @@ export class DisplayAudio {          this._display.registerDirectMessageHandlers([              ['Display.clearAutoPlayTimer', {async: false, handler: this._onMessageClearAutoPlayTimer.bind(this)}]          ]); +        /* eslint-enable no-multi-spaces */          this._display.on('optionsUpdated', this._onOptionsUpdated.bind(this));          this._display.on('contentClear', this._onContentClear.bind(this));          this._display.on('contentUpdateEntry', this._onContentUpdateEntry.bind(this)); @@ -120,7 +122,7 @@ export class DisplayAudio {       * @param {number} headwordIndex       * @param {?string} [sourceType]       */ -    async playAudio(dictionaryEntryIndex, headwordIndex, sourceType=null) { +    async playAudio(dictionaryEntryIndex, headwordIndex, sourceType = null) {          let sources = this._audioSources;          if (sourceType !== null) {              sources = []; diff --git a/ext/js/display/display-generator.js b/ext/js/display/display-generator.js index eb464001..7bedfa12 100644 --- a/ext/js/display/display-generator.js +++ b/ext/js/display/display-generator.js @@ -28,7 +28,7 @@ export class DisplayGenerator {      /**       * @param {import('display').DisplayGeneratorConstructorDetails} details       */ -    constructor({japaneseUtil, contentManager, hotkeyHelpController=null}) { +    constructor({japaneseUtil, contentManager, hotkeyHelpController = null}) {          /** @type {import('../language/sandbox/japanese-util.js').JapaneseUtil} */          this._japaneseUtil = japaneseUtil;          /** @type {import('./display-content-manager.js').DisplayContentManager} */ diff --git a/ext/js/display/display-history.js b/ext/js/display/display-history.js index f9d2e35d..af6d734e 100644 --- a/ext/js/display/display-history.js +++ b/ext/js/display/display-history.js @@ -25,7 +25,7 @@ export class DisplayHistory extends EventDispatcher {      /**       * @param {{clearable?: boolean, useBrowserHistory?: boolean}} details       */ -    constructor({clearable=true, useBrowserHistory=false}) { +    constructor({clearable = true, useBrowserHistory = false}) {          super();          /** @type {boolean} */          this._clearable = clearable; diff --git a/ext/js/display/display-notification.js b/ext/js/display/display-notification.js index a0e9e35c..df475adf 100644 --- a/ext/js/display/display-notification.js +++ b/ext/js/display/display-notification.js @@ -67,7 +67,7 @@ export class DisplayNotification {      /**       * @param {boolean} [animate]       */ -    close(animate=false) { +    close(animate = false) {          if (this.isClosed()) { return; }          if (animate) { diff --git a/ext/js/display/display.js b/ext/js/display/display.js index b6a818ba..945ec0b9 100644 --- a/ext/js/display/display.js +++ b/ext/js/display/display.js @@ -196,6 +196,7 @@ export class Display extends EventDispatcher {          /** @type {ThemeController} */          this._themeController = new ThemeController(document.documentElement); +        /* eslint-disable no-multi-spaces */          this._hotkeyHandler.registerActions([              ['close',             () => { this._onHotkeyClose(); }],              ['nextEntry',         this._onHotkeyActionMoveRelative.bind(this, 1)], @@ -219,6 +220,7 @@ export class Display extends EventDispatcher {          this.registerWindowMessageHandlers([              ['Display.extensionUnloaded', {async: false, handler: this._onMessageExtensionUnloaded.bind(this)}]          ]); +        /* eslint-enable no-multi-spaces */      }      /** @type {DisplayGenerator} */ @@ -586,7 +588,7 @@ export class Display extends EventDispatcher {       * @param {import('core').SerializableObject} [params]       * @returns {Promise<TReturn>}       */ -    async invokeContentOrigin(action, params={}) { +    async invokeContentOrigin(action, params = {}) {          if (this._contentOriginTabId === this._tabId && this._contentOriginFrameId === this._frameId) {              throw new Error('Content origin is same page');          } @@ -602,7 +604,7 @@ export class Display extends EventDispatcher {       * @param {import('core').SerializableObject} [params]       * @returns {Promise<TReturn>}       */ -    async invokeParentFrame(action, params={}) { +    async invokeParentFrame(action, params = {}) {          if (this._parentFrameId === null || this._parentFrameId === this._frameId) {              throw new Error('Invalid parent frame');          } diff --git a/ext/js/display/search-display-controller.js b/ext/js/display/search-display-controller.js index b512a16d..44850cbb 100644 --- a/ext/js/display/search-display-controller.js +++ b/ext/js/display/search-display-controller.js @@ -94,11 +94,13 @@ export class SearchDisplayController {          this._display.hotkeyHandler.registerActions([              ['focusSearchBox', this._onActionFocusSearchBox.bind(this)]          ]); +        /* eslint-disable no-multi-spaces */          this._registerMessageHandlers([              ['SearchDisplayController.getMode',           {async: false, handler: this._onMessageGetMode.bind(this)}],              ['SearchDisplayController.setMode',           {async: false, handler: this._onMessageSetMode.bind(this)}],              ['SearchDisplayController.updateSearchQuery', {async: false, handler: this._onExternalSearchUpdate.bind(this)}]          ]); +        /* eslint-enable no-multi-spaces */          this._updateClipboardMonitorEnabled(); @@ -285,7 +287,7 @@ export class SearchDisplayController {      /**       * @param {{text: string, animate?: boolean}} details       */ -    _onExternalSearchUpdate({text, animate=true}) { +    _onExternalSearchUpdate({text, animate = true}) {          const options = this._display.getOptions();          if (options === null) { return; }          const {clipboard: {autoSearchContent, maximumSearchLength}} = options; diff --git a/ext/js/dom/document-focus-controller.js b/ext/js/dom/document-focus-controller.js index 32ea2ce8..fd88a35d 100644 --- a/ext/js/dom/document-focus-controller.js +++ b/ext/js/dom/document-focus-controller.js @@ -28,7 +28,7 @@ export class DocumentFocusController {       * @param {?string} autofocusElementSelector A selector string which can be used to specify an element which       *   should be automatically focused on prepare.       */ -    constructor(autofocusElementSelector=null) { +    constructor(autofocusElementSelector = null) {          /** @type {?HTMLElement} */          this._autofocusElement = (autofocusElementSelector !== null ? document.querySelector(autofocusElementSelector) : null);          /** @type {?HTMLElement} */ diff --git a/ext/js/dom/document-util.js b/ext/js/dom/document-util.js index 0153e74a..fe10d670 100644 --- a/ext/js/dom/document-util.js +++ b/ext/js/dom/document-util.js @@ -349,7 +349,7 @@ export class DocumentUtil {       * @param {EventListener} onFullscreenChanged The event callback.       * @param {?import('../core.js').EventListenerCollection} eventListenerCollection An optional `EventListenerCollection` to add the registration to.       */ -    static addFullscreenChangeEventListener(onFullscreenChanged, eventListenerCollection=null) { +    static addFullscreenChangeEventListener(onFullscreenChanged, eventListenerCollection = null) {          const target = document;          const options = false;          const fullscreenEventNames = [ diff --git a/ext/js/dom/dom-data-binder.js b/ext/js/dom/dom-data-binder.js index cf98a243..e2558338 100644 --- a/ext/js/dom/dom-data-binder.js +++ b/ext/js/dom/dom-data-binder.js @@ -27,7 +27,7 @@ export class DOMDataBinder {      /**       * @param {import('dom-data-binder').ConstructorDetails<T>} details       */ -    constructor({selector, createElementMetadata, compareElementMetadata, getValues, setValues, onError=null}) { +    constructor({selector, createElementMetadata, compareElementMetadata, getValues, setValues, onError = null}) {          /** @type {string} */          this._selector = selector;          /** @type {import('dom-data-binder').CreateElementMetadataCallback<T>} */ diff --git a/ext/js/dom/dom-text-scanner.js b/ext/js/dom/dom-text-scanner.js index 42e0acc9..df097688 100644 --- a/ext/js/dom/dom-text-scanner.js +++ b/ext/js/dom/dom-text-scanner.js @@ -31,7 +31,7 @@ export class DOMTextScanner {       *   regardless of CSS styling.       * @param {boolean} generateLayoutContent Whether or not newlines should be added based on CSS styling.       */ -    constructor(node, offset, forcePreserveWhitespace=false, generateLayoutContent=true) { +    constructor(node, offset, forcePreserveWhitespace = false, generateLayoutContent = true) {          const ruby = DOMTextScanner.getParentRubyElement(node);          const resetOffset = (ruby !== null);          if (resetOffset) { node = ruby; } diff --git a/ext/js/dom/panel-element.js b/ext/js/dom/panel-element.js index 748c3a36..d4cb28fd 100644 --- a/ext/js/dom/panel-element.js +++ b/ext/js/dom/panel-element.js @@ -57,7 +57,7 @@ export class PanelElement extends EventDispatcher {       * @param {boolean} value       * @param {boolean} [animate]       */ -    setVisible(value, animate=true) { +    setVisible(value, animate = true) {          value = !!value;          if (this.isVisible() === value) { return; } diff --git a/ext/js/dom/popup-menu.js b/ext/js/dom/popup-menu.js index 33cdd1ae..72df82a0 100644 --- a/ext/js/dom/popup-menu.js +++ b/ext/js/dom/popup-menu.js @@ -96,7 +96,7 @@ export class PopupMenu extends EventDispatcher {       * @param {boolean} [cancelable]       * @returns {boolean}       */ -    close(cancelable=true) { +    close(cancelable = true) {          return this._close(null, 'close', cancelable, null);      } diff --git a/ext/js/dom/selector-observer.js b/ext/js/dom/selector-observer.js index 2cf46543..8dd18242 100644 --- a/ext/js/dom/selector-observer.js +++ b/ext/js/dom/selector-observer.js @@ -25,7 +25,7 @@ export class SelectorObserver {       * Creates a new instance.       * @param {import('selector-observer').ConstructorDetails<T>} details The configuration for the object.       */ -    constructor({selector, ignoreSelector=null, onAdded=null, onRemoved=null, onChildrenUpdated=null, isStale=null}) { +    constructor({selector, ignoreSelector = null, onAdded = null, onRemoved = null, onChildrenUpdated = null, isStale = null}) {          /** @type {string} */          this._selector = selector;          /** @type {?string} */ @@ -65,7 +65,7 @@ export class SelectorObserver {       * @throws {Error} An error if element is null.       * @throws {Error} An error if an element is already being observed.       */ -    observe(element, attributes=false) { +    observe(element, attributes = false) {          if (element === null) {              throw new Error('Invalid element');          } diff --git a/ext/js/general/text-source-map.js b/ext/js/general/text-source-map.js index b03f6eb2..cfccf7c9 100644 --- a/ext/js/general/text-source-map.js +++ b/ext/js/general/text-source-map.js @@ -21,7 +21,7 @@ export class TextSourceMap {       * @param {string} source       * @param {number[]|null} [mapping=null]       */ -    constructor(source, mapping=null) { +    constructor(source, mapping = null) {          /** @type {string} */          this._source = source;          /** @type {?number[]} */ diff --git a/ext/js/input/hotkey-util.js b/ext/js/input/hotkey-util.js index 10328924..601f5d55 100644 --- a/ext/js/input/hotkey-util.js +++ b/ext/js/input/hotkey-util.js @@ -24,7 +24,7 @@ export class HotkeyUtil {       * Creates a new instance.       * @param {?import('environment').OperatingSystem} os The operating system for this instance.       */ -    constructor(os=null) { +    constructor(os = null) {          /** @type {?import('environment').OperatingSystem} */          this._os = os;          /** @type {string} */ diff --git a/ext/js/language/deinflector.js b/ext/js/language/deinflector.js index b7a235d0..537a4556 100644 --- a/ext/js/language/deinflector.js +++ b/ext/js/language/deinflector.js @@ -103,6 +103,8 @@ export class Deinflector {      }  } + +/* eslint-disable no-multi-spaces */  /** @type {Map<string, import('translation-internal').DeinflectionRuleFlags>} */  // eslint-disable-next-line no-underscore-dangle  Deinflector._ruleTypes = new Map([ @@ -114,3 +116,4 @@ Deinflector._ruleTypes = new Map([      ['adj-i', /** @type {import('translation-internal').DeinflectionRuleFlags} */ (0b00100000)], // Adjective i      ['iru',   /** @type {import('translation-internal').DeinflectionRuleFlags} */ (0b01000000)] // Intermediate -iru endings for progressive or perfect tense  ]); +/* eslint-enable no-multi-spaces */ diff --git a/ext/js/language/dictionary-importer.js b/ext/js/language/dictionary-importer.js index 08fcf86b..dfbd9590 100644 --- a/ext/js/language/dictionary-importer.js +++ b/ext/js/language/dictionary-importer.js @@ -112,11 +112,11 @@ export class DictionaryImporter {          const dataBankSchemas = this._getDataBankSchemas(version);          // Files -        const termFiles      = this._getArchiveFiles(fileMap, 'term_bank_?.json'); -        const termMetaFiles  = this._getArchiveFiles(fileMap, 'term_meta_bank_?.json'); -        const kanjiFiles     = this._getArchiveFiles(fileMap, 'kanji_bank_?.json'); +        const termFiles = this._getArchiveFiles(fileMap, 'term_bank_?.json'); +        const termMetaFiles = this._getArchiveFiles(fileMap, 'term_meta_bank_?.json'); +        const kanjiFiles = this._getArchiveFiles(fileMap, 'kanji_bank_?.json');          const kanjiMetaFiles = this._getArchiveFiles(fileMap, 'kanji_meta_bank_?.json'); -        const tagFiles       = this._getArchiveFiles(fileMap, 'tag_bank_?.json'); +        const tagFiles = this._getArchiveFiles(fileMap, 'tag_bank_?.json');          // Load data          this._progressNextStep(termFiles.length + termMetaFiles.length + kanjiFiles.length + kanjiMetaFiles.length + tagFiles.length); @@ -538,7 +538,7 @@ export class DictionaryImporter {           */          const createError = (message) => {              const {expression, reading} = entry; -            const readingSource = reading.length > 0 ? ` (${reading})`: ''; +            const readingSource = reading.length > 0 ? ` (${reading})` : '';              return new Error(`${message} at path ${JSON.stringify(path)} for ${expression}${readingSource} in ${dictionary}`);          }; diff --git a/ext/js/language/sandbox/japanese-util.js b/ext/js/language/sandbox/japanese-util.js index 6f4fc8e0..9d36497a 100644 --- a/ext/js/language/sandbox/japanese-util.js +++ b/ext/js/language/sandbox/japanese-util.js @@ -88,7 +88,7 @@ const JAPANESE_RANGES = [      [0xff1a, 0xff1f], // Fullwidth punctuation 2      [0xff3b, 0xff3f], // Fullwidth punctuation 3      [0xff5b, 0xff60], // Fullwidth punctuation 4 -    [0xffe0, 0xffee]  // Currency markers +    [0xffe0, 0xffee] // Currency markers  ];  const SMALL_KANA_SET = new Set(Array.from('ぁぃぅぇぉゃゅょゎァィゥェォャュョヮ')); @@ -235,7 +235,7 @@ export class JapaneseUtil {      /**       * @param {?import('wanakana')|import('../../../lib/wanakana.js')} wanakana       */ -    constructor(wanakana=null) { +    constructor(wanakana = null) {          /** @type {?import('wanakana')} */          this._wanakana = /** @type {import('wanakana')} */ (wanakana);      } @@ -386,7 +386,7 @@ export class JapaneseUtil {       * @param {boolean} [keepProlongedSoundMarks]       * @returns {string}       */ -    convertKatakanaToHiragana(text, keepProlongedSoundMarks=false) { +    convertKatakanaToHiragana(text, keepProlongedSoundMarks = false) {          let result = '';          const offset = (HIRAGANA_CONVERSION_RANGE[0] - KATAKANA_CONVERSION_RANGE[0]);          for (let char of text) { @@ -469,7 +469,7 @@ export class JapaneseUtil {       * @param {?import('../../general/text-source-map.js').TextSourceMap} [sourceMap]       * @returns {string}       */ -    convertHalfWidthKanaToFullWidth(text, sourceMap=null) { +    convertHalfWidthKanaToFullWidth(text, sourceMap = null) {          let result = '';          // This function is safe to use charCodeAt instead of codePointAt, since all @@ -516,7 +516,7 @@ export class JapaneseUtil {       * @param {?import('../../general/text-source-map.js').TextSourceMap} sourceMap       * @returns {string}       */ -    convertAlphabeticToKana(text, sourceMap=null) { +    convertAlphabeticToKana(text, sourceMap = null) {          let part = '';          let result = ''; @@ -679,7 +679,7 @@ export class JapaneseUtil {       * @param {?import('../../general/text-source-map.js').TextSourceMap} [sourceMap]       * @returns {string}       */ -    collapseEmphaticSequences(text, fullCollapse, sourceMap=null) { +    collapseEmphaticSequences(text, fullCollapse, sourceMap = null) {          let result = '';          let collapseCodePoint = -1;          const hasSourceMap = (sourceMap !== null); diff --git a/ext/js/language/text-scanner.js b/ext/js/language/text-scanner.js index 3de16f54..800e3697 100644 --- a/ext/js/language/text-scanner.js +++ b/ext/js/language/text-scanner.js @@ -31,12 +31,12 @@ export class TextScanner extends EventDispatcher {      constructor({          node,          getSearchContext, -        ignoreElements=null, -        ignorePoint=null, -        searchTerms=false, -        searchKanji=false, -        searchOnClick=false, -        searchOnClickOnly=false +        ignoreElements = null, +        ignorePoint = null, +        searchTerms = false, +        searchKanji = false, +        searchOnClick = false, +        searchOnClickOnly = false      }) {          super();          /** @type {HTMLElement|Window} */ diff --git a/ext/js/pages/settings/backup-controller.js b/ext/js/pages/settings/backup-controller.js index 94f85416..85803077 100644 --- a/ext/js/pages/settings/backup-controller.js +++ b/ext/js/pages/settings/backup-controller.js @@ -540,7 +540,7 @@ export class BackupController {       * @param {string} message       * @param {boolean} [isWarning]       */ -    _databaseExportImportErrorMessage(message, isWarning=false) { +    _databaseExportImportErrorMessage(message, isWarning = false) {          /** @type {HTMLElement} */          const errorMessageContainer = querySelectorNotNull(document, '#db-ops-error-report');          errorMessageContainer.style.display = 'block'; diff --git a/ext/js/pages/settings/dictionary-controller.js b/ext/js/pages/settings/dictionary-controller.js index 0d84ccbf..63671feb 100644 --- a/ext/js/pages/settings/dictionary-controller.js +++ b/ext/js/pages/settings/dictionary-controller.js @@ -324,7 +324,7 @@ class DictionaryExtraInfo {                  node.parentNode.removeChild(node);              }          } -        this._nodes.length =0; +        this._nodes.length = 0;      }      // Private diff --git a/ext/js/pages/settings/keyboard-mouse-input-field.js b/ext/js/pages/settings/keyboard-mouse-input-field.js index f0a53f1a..99af3941 100644 --- a/ext/js/pages/settings/keyboard-mouse-input-field.js +++ b/ext/js/pages/settings/keyboard-mouse-input-field.js @@ -30,7 +30,7 @@ export class KeyboardMouseInputField extends EventDispatcher {       * @param {?import('environment').OperatingSystem} os       * @param {?(pointerType: string) => boolean} [isPointerTypeSupported]       */ -    constructor(inputNode, mouseButton, os, isPointerTypeSupported=null) { +    constructor(inputNode, mouseButton, os, isPointerTypeSupported = null) {          super();          /** @type {HTMLInputElement} */          this._inputNode = inputNode; @@ -65,7 +65,7 @@ export class KeyboardMouseInputField extends EventDispatcher {       * @param {boolean} [mouseModifiersSupported]       * @param {boolean} [keySupported]       */ -    prepare(key, modifiers, mouseModifiersSupported=false, keySupported=false) { +    prepare(key, modifiers, mouseModifiersSupported = false, keySupported = false) {          this.cleanup();          this._mouseModifiersSupported = mouseModifiersSupported; diff --git a/ext/js/pages/settings/keyboard-shortcuts-controller.js b/ext/js/pages/settings/keyboard-shortcuts-controller.js index 0734faa1..cbdae77d 100644 --- a/ext/js/pages/settings/keyboard-shortcuts-controller.js +++ b/ext/js/pages/settings/keyboard-shortcuts-controller.js @@ -46,6 +46,7 @@ export class KeyboardShortcutController {          this._stringComparer = new Intl.Collator('en-US'); // Invariant locale          /** @type {HTMLElement} */          this._scrollContainer = querySelectorNotNull(document, '#keyboard-shortcuts-modal .modal-body'); +        /* eslint-disable no-multi-spaces */          /** @type {Map<string, import('keyboard-shortcut-controller').ActionDetails>} */          this._actionDetails = new Map([              ['',                                 {scopes: new Set()}], @@ -70,6 +71,7 @@ export class KeyboardShortcutController {              ['scanTextAtCaret',                  {scopes: new Set(['web'])}],              ['toggleOption',                     {scopes: new Set(['popup', 'search']), argument: {template: 'hotkey-argument-setting-path', default: ''}}]          ]); +        /* eslint-enable no-multi-spaces */      }      /** @type {import('./settings-controller.js').SettingsController} */ diff --git a/ext/js/pages/settings/popup-preview-frame.js b/ext/js/pages/settings/popup-preview-frame.js index e5cc6580..7828a025 100644 --- a/ext/js/pages/settings/popup-preview-frame.js +++ b/ext/js/pages/settings/popup-preview-frame.js @@ -57,6 +57,7 @@ export class PopupPreviewFrame {          /** @type {string} */          this._targetOrigin = chrome.runtime.getURL('/').replace(/\/$/, ''); +        /* eslint-disable no-multi-spaces */          /** @type {Map<string, (params: import('core').SerializableObjectAny) => void>} */          this._windowMessageHandlers = new Map(/** @type {[key: string, handler: (params: import('core').SerializableObjectAny) => void][]} */ ([              ['PopupPreviewFrame.setText',              this._onSetText.bind(this)], @@ -64,6 +65,7 @@ export class PopupPreviewFrame {              ['PopupPreviewFrame.setCustomOuterCss',    this._setCustomOuterCss.bind(this)],              ['PopupPreviewFrame.updateOptionsContext', this._updateOptionsContext.bind(this)]          ])); +        /* eslint-enable no-multi-spaces */      }      /** */ diff --git a/ext/js/pages/settings/profile-conditions-ui.js b/ext/js/pages/settings/profile-conditions-ui.js index e02d2585..715aeb69 100644 --- a/ext/js/pages/settings/profile-conditions-ui.js +++ b/ext/js/pages/settings/profile-conditions-ui.js @@ -50,6 +50,7 @@ export class ProfileConditionsUI extends EventDispatcher {          const normalizeInteger = this._normalizeInteger.bind(this);          const validateFlags = this._validateFlags.bind(this);          const normalizeFlags = this._normalizeFlags.bind(this); +        /* eslint-disable no-multi-spaces */          /** @type {Map<import('profile-conditions-ui').DescriptorType, import('profile-conditions-ui').Descriptor>} */          this._descriptors = new Map([              [ @@ -105,6 +106,7 @@ export class ProfileConditionsUI extends EventDispatcher {                  }              ]          ]); +        /* eslint-enable no-multi-spaces */          /** @type {Set<string>} */          this._validFlags = new Set([              'clipboard' @@ -217,12 +219,12 @@ export class ProfileConditionsUI extends EventDispatcher {          const info = this._getOperatorDetails(type, operator);          const { -            displayName=operator, -            type: type2='string', -            defaultValue='', -            resetDefaultOnChange=false, -            validate=null, -            normalize=null +            displayName = operator, +            type: type2 = 'string', +            defaultValue = '', +            resetDefaultOnChange = false, +            validate = null, +            normalize = null          } = (typeof info === 'undefined' ? {} : info);          return { diff --git a/ext/js/script/dynamic-loader.js b/ext/js/script/dynamic-loader.js index 75bf7b8b..8fdb77e9 100644 --- a/ext/js/script/dynamic-loader.js +++ b/ext/js/script/dynamic-loader.js @@ -64,7 +64,7 @@ export const dynamicLoader = (() => {       * @returns {Promise<?HTMLStyleElement|HTMLLinkElement>}       * @throws {Error}       */ -    async function loadStyle(id, type, value, useWebExtensionApi=false, parentNode=null) { +    async function loadStyle(id, type, value, useWebExtensionApi = false, parentNode = null) {          if (useWebExtensionApi && yomitan.isExtensionUrl(window.location.href)) {              // Permissions error will occur if trying to use the WebExtension API to inject into an extension page              useWebExtensionApi = false; diff --git a/ext/js/templates/sandbox/anki-template-renderer.js b/ext/js/templates/sandbox/anki-template-renderer.js index dbf395e9..857922bf 100644 --- a/ext/js/templates/sandbox/anki-template-renderer.js +++ b/ext/js/templates/sandbox/anki-template-renderer.js @@ -74,6 +74,7 @@ export class AnkiTemplateRenderer {       * Prepares the data that is necessary before the template renderer can be safely used.       */      async prepare() { +        /* eslint-disable no-multi-spaces */          this._templateRenderer.registerHelpers([              ['dumpObject',       this._dumpObject.bind(this)],              ['furigana',         this._furigana.bind(this)], @@ -103,6 +104,7 @@ export class AnkiTemplateRenderer {              ['hiragana',         this._hiragana.bind(this)],              ['katakana',         this._katakana.bind(this)]          ]); +        /* eslint-enable no-multi-spaces */          this._templateRenderer.registerDataType('ankiNote', {              modifier: ({marker, commonData}) => this._ankiNoteDataCreator.create(marker, commonData),              composeData: ({marker}, commonData) => ({marker, commonData}) @@ -392,9 +394,9 @@ export class AnkiTemplateRenderer {              case '!=': return operand1 != operand2; // eslint-disable-line eqeqeq              case '===': return operand1 === operand2;              case '!==': return operand1 !== operand2; -            case '<':  return operand1 < operand2; +            case '<': return operand1 < operand2;              case '<=': return operand1 <= operand2; -            case '>':  return operand1 > operand2; +            case '>': return operand1 > operand2;              case '>=': return operand1 >= operand2;              case '<<': return operand1 << operand2;              case '>>': return operand1 >> operand2; diff --git a/ext/js/templates/sandbox/template-renderer-media-provider.js b/ext/js/templates/sandbox/template-renderer-media-provider.js index d8a0a16d..0a7f5d9b 100644 --- a/ext/js/templates/sandbox/template-renderer-media-provider.js +++ b/ext/js/templates/sandbox/template-renderer-media-provider.js @@ -79,7 +79,7 @@ export class TemplateRendererMediaProvider {       */      _getFormattedValue(data, namedArgs) {          let {value} = data; -        const {escape=true} = namedArgs; +        const {escape = true} = namedArgs;          if (escape) {              value = Handlebars.Utils.escapeExpression(value);          } diff --git a/ext/js/templates/template-renderer-proxy.js b/ext/js/templates/template-renderer-proxy.js index 642eea8b..7cbab3c8 100644 --- a/ext/js/templates/template-renderer-proxy.js +++ b/ext/js/templates/template-renderer-proxy.js @@ -99,7 +99,7 @@ export class TemplateRendererProxy {       * @param {number} [timeout]       * @returns {Promise<void>}       */ -    _loadFrame(frame, url, timeout=5000) { +    _loadFrame(frame, url, timeout = 5000) {          return new Promise((resolve, reject) => {              let state = 0x0; // 0x1 = frame added; 0x2 = frame loaded; 0x4 = frame ready              const cleanup = () => { @@ -165,7 +165,7 @@ export class TemplateRendererProxy {       * @param {?number} [timeout]       * @returns {Promise<unknown>}       */ -    _invoke(action, params, timeout=null) { +    _invoke(action, params, timeout = null) {          return new Promise((resolve, reject) => {              const frameWindow = (this._frame !== null ? this._frame.contentWindow : null);              if (frameWindow === null) { diff --git a/ext/js/yomitan.js b/ext/js/yomitan.js index 7cf67aec..37455d00 100644 --- a/ext/js/yomitan.js +++ b/ext/js/yomitan.js @@ -88,6 +88,7 @@ export class Yomitan extends EventDispatcher {          /** @type {?(() => void)} */          this._isBackendReadyPromiseResolve = resolve; +        /* eslint-disable no-multi-spaces */          /** @type {import('core').MessageHandlerMap} */          this._messageHandlers = new Map(/** @type {import('core').MessageHandlerArray} */ ([              ['Yomitan.isReady',         {async: false, handler: this._onMessageIsReady.bind(this)}], @@ -97,6 +98,7 @@ export class Yomitan extends EventDispatcher {              ['Yomitan.databaseUpdated', {async: false, handler: this._onMessageDatabaseUpdated.bind(this)}],              ['Yomitan.zoomChanged',     {async: false, handler: this._onMessageZoomChanged.bind(this)}]          ])); +        /* eslint-enable no-multi-spaces */      }      /** @@ -140,7 +142,7 @@ export class Yomitan extends EventDispatcher {       * Prepares the instance for use.       * @param {boolean} [isBackground=false] Assigns whether this instance is being used from the background page/service worker.       */ -    async prepare(isBackground=false) { +    async prepare(isBackground = false) {          this._isBackground = isBackground;          chrome.runtime.onMessage.addListener(this._onMessage.bind(this)); |