diff options
Diffstat (limited to 'ext/js')
-rw-r--r-- | ext/js/app/frontend.js | 8 | ||||
-rw-r--r-- | ext/js/app/popup.js | 8 | ||||
-rw-r--r-- | ext/js/background/backend.js | 40 | ||||
-rw-r--r-- | ext/js/background/offscreen-proxy.js | 12 | ||||
-rw-r--r-- | ext/js/comm/mecab.js | 10 | ||||
-rw-r--r-- | ext/js/data/sandbox/string-util.js | 8 | ||||
-rw-r--r-- | ext/js/display/display-generator.js | 6 | ||||
-rw-r--r-- | ext/js/display/option-toggle-hotkey-handler.js | 18 | ||||
-rw-r--r-- | ext/js/display/query-parser.js | 1 | ||||
-rw-r--r-- | ext/js/language/translator.js | 8 | ||||
-rw-r--r-- | ext/js/pages/settings/anki-controller.js | 20 | ||||
-rw-r--r-- | ext/js/templates/sandbox/anki-template-renderer.js | 8 |
12 files changed, 75 insertions, 72 deletions
diff --git a/ext/js/app/frontend.js b/ext/js/app/frontend.js index 8c11775a..c8b63813 100644 --- a/ext/js/app/frontend.js +++ b/ext/js/app/frontend.js @@ -964,7 +964,7 @@ export class Frontend { _prepareSiteSpecific() { switch (location.hostname.toLowerCase()) { case 'docs.google.com': - this._prepareGoogleDocs(); + this._prepareGoogleDocsWrapper(); break; } } @@ -972,18 +972,18 @@ export class Frontend { /** * @returns {Promise<void>} */ - async _prepareGoogleDocs() { + async _prepareGoogleDocsWrapper() { if (typeof GoogleDocsUtil !== 'undefined') { return; } await yomitan.api.loadExtensionScripts([ '/js/accessibility/google-docs-util.js' ]); - this._prepareGoogleDocs2(); + this._prepareGoogleDocs(); } /** * @returns {Promise<void>} */ - async _prepareGoogleDocs2() { + async _prepareGoogleDocs() { if (typeof GoogleDocsUtil === 'undefined') { return; } DocumentUtil.registerGetRangeFromPointHandler(GoogleDocsUtil.getRangeFromPoint.bind(GoogleDocsUtil)); } diff --git a/ext/js/app/popup.js b/ext/js/app/popup.js index 45604a55..a0712604 100644 --- a/ext/js/app/popup.js +++ b/ext/js/app/popup.js @@ -417,7 +417,7 @@ export class Popup extends EventDispatcher { _inject() { let injectPromise = this._injectPromise; if (injectPromise === null) { - injectPromise = this._injectInner1(); + injectPromise = this._injectInnerWrapper(); this._injectPromise = injectPromise; injectPromise.then( () => { @@ -433,9 +433,9 @@ export class Popup extends EventDispatcher { /** * @returns {Promise<boolean>} */ - async _injectInner1() { + async _injectInnerWrapper() { try { - await this._injectInner2(); + await this._injectInner(); return true; } catch (e) { this._resetFrame(); @@ -447,7 +447,7 @@ export class Popup extends EventDispatcher { /** * @returns {Promise<void>} */ - async _injectInner2() { + async _injectInner() { if (this._optionsContext === null) { throw new Error('Options not initialized'); } diff --git a/ext/js/background/backend.js b/ext/js/background/backend.js index 99aa0c5d..d62c852b 100644 --- a/ext/js/background/backend.js +++ b/ext/js/background/backend.js @@ -331,7 +331,7 @@ export class Backend { text = text.substring(0, maximumSearchLength); } try { - const {tab, created} = await this._getOrCreateSearchPopup(); + const {tab, created} = await this._getOrCreateSearchPopupWrapper(); const {id} = tab; if (typeof id !== 'number') { throw new Error('Tab does not have an id'); @@ -799,7 +799,7 @@ export class Backend { /** @type {import('api').Handler<import('api').GetOrCreateSearchPopupDetails, import('api').GetOrCreateSearchPopupResult>} */ async _onApiGetOrCreateSearchPopup({focus = false, text}) { - const {tab, created} = await this._getOrCreateSearchPopup(); + const {tab, created} = await this._getOrCreateSearchPopupWrapper(); if (focus === true || (focus === 'ifCreated' && created)) { await this._focusTab(tab); } @@ -960,18 +960,18 @@ export class Backend { const queryParams = {}; if (query.length > 0) { queryParams.query = query; } const queryString = new URLSearchParams(queryParams).toString(); - let url = baseUrl; + let queryUrl = baseUrl; if (queryString.length > 0) { - url += `?${queryString}`; + queryUrl += `?${queryString}`; } /** @type {import('backend').FindTabsPredicate} */ - const predicate = ({url: url2}) => { - if (url2 === null || !url2.startsWith(baseUrl)) { return false; } - const parsedUrl = new URL(url2); - const baseUrl2 = `${parsedUrl.origin}${parsedUrl.pathname}`; - const mode2 = parsedUrl.searchParams.get('mode'); - return baseUrl2 === baseUrl && (mode2 === mode || (!mode2 && mode === 'existingOrNewTab')); + const predicate = ({url}) => { + if (url === null || !url.startsWith(baseUrl)) { return false; } + const parsedUrl = new URL(url); + const parsedBaseUrl = `${parsedUrl.origin}${parsedUrl.pathname}`; + const parsedMode = parsedUrl.searchParams.get('mode'); + return parsedBaseUrl === baseUrl && (parsedMode === mode || (!parsedMode && mode === 'existingOrNewTab')); }; const openInTab = async () => { @@ -997,10 +997,10 @@ export class Backend { } catch (e) { // NOP } - await this._createTab(url); + await this._createTab(queryUrl); return; case 'newTab': - await this._createTab(url); + await this._createTab(queryUrl); return; } } @@ -1072,9 +1072,9 @@ export class Backend { /** * @returns {Promise<{tab: chrome.tabs.Tab, created: boolean}>} */ - _getOrCreateSearchPopup() { + _getOrCreateSearchPopupWrapper() { if (this._searchPopupTabCreatePromise === null) { - const promise = this._getOrCreateSearchPopup2(); + const promise = this._getOrCreateSearchPopup(); this._searchPopupTabCreatePromise = promise; promise.then(() => { this._searchPopupTabCreatePromise = null; }); } @@ -1084,7 +1084,7 @@ export class Backend { /** * @returns {Promise<{tab: chrome.tabs.Tab, created: boolean}>} */ - async _getOrCreateSearchPopup2() { + async _getOrCreateSearchPopup() { // Use existing tab const baseUrl = chrome.runtime.getURL('/search.html'); /** @@ -2418,13 +2418,13 @@ export class Backend { if (error instanceof ExtensionError && typeof error.data === 'object' && error.data !== null) { const {errors} = /** @type {import('core').SerializableObject} */ (error.data); if (Array.isArray(errors)) { - for (const error2 of errors) { - if (!(error2 instanceof Error)) { continue; } - if (error2.name === 'AbortError') { + for (const errorDetail of errors) { + if (!(errorDetail instanceof Error)) { continue; } + if (errorDetail.name === 'AbortError') { return this._createAudioDownloadError('Audio download was cancelled due to an idle timeout', 'audio-download-idle-timeout', errors); } - if (!(error2 instanceof ExtensionError)) { continue; } - const {data} = error2; + if (!(errorDetail instanceof ExtensionError)) { continue; } + const {data} = errorDetail; if (!(typeof data === 'object' && data !== null)) { continue; } const {details} = /** @type {import('core').SerializableObject} */ (data); if (!(typeof details === 'object' && details !== null)) { continue; } diff --git a/ext/js/background/offscreen-proxy.js b/ext/js/background/offscreen-proxy.js index 63f619fa..dfd342b4 100644 --- a/ext/js/background/offscreen-proxy.js +++ b/ext/js/background/offscreen-proxy.js @@ -95,16 +95,16 @@ export class OffscreenProxy { * @throws {Error} */ _getMessageResponseResult(response) { - const error = chrome.runtime.lastError; - if (error) { - throw new Error(error.message); + const runtimeError = chrome.runtime.lastError; + if (typeof runtimeError !== 'undefined') { + throw new Error(runtimeError.message); } if (!isObject(response)) { throw new Error('Offscreen document did not respond'); } - const error2 = response.error; - if (error2) { - throw ExtensionError.deserialize(error2); + const responseError = response.error; + if (responseError) { + throw ExtensionError.deserialize(responseError); } return response.result; } diff --git a/ext/js/comm/mecab.js b/ext/js/comm/mecab.js index 0a87463b..6d0f3f40 100644 --- a/ext/js/comm/mecab.js +++ b/ext/js/comm/mecab.js @@ -105,7 +105,7 @@ export class Mecab { */ async getVersion() { try { - await this._setupPort(); + await this._setupPortWrapper(); } catch (e) { // NOP } @@ -132,7 +132,7 @@ export class Mecab { * @returns {Promise<import('mecab').ParseResult[]>} A collection of parsing results of the text. */ async parseText(text) { - await this._setupPort(); + await this._setupPortWrapper(); const rawResults = await this._invoke('parse_text', {text}); // Note: The format of rawResults is not validated return this._convertParseTextResults(/** @type {import('mecab').ParseResultRaw} */ (rawResults)); @@ -225,12 +225,12 @@ export class Mecab { /** * @returns {Promise<void>} */ - async _setupPort() { + async _setupPortWrapper() { if (!this._enabled) { throw new Error('MeCab not enabled'); } if (this._setupPortPromise === null) { - this._setupPortPromise = this._setupPort2(); + this._setupPortPromise = this._setupPort(); } try { await this._setupPortPromise; @@ -242,7 +242,7 @@ export class Mecab { /** * @returns {Promise<void>} */ - async _setupPort2() { + async _setupPort() { const port = chrome.runtime.connectNative('yomitan_mecab'); this._eventListeners.addListener(port.onMessage, this._onMessage.bind(this)); this._eventListeners.addListener(port.onDisconnect, this._onDisconnect.bind(this)); diff --git a/ext/js/data/sandbox/string-util.js b/ext/js/data/sandbox/string-util.js index 096ecffe..3d810ffb 100644 --- a/ext/js/data/sandbox/string-util.js +++ b/ext/js/data/sandbox/string-util.js @@ -35,10 +35,10 @@ export class StringUtil { result += char; if (++position >= textLength) { break; } const charCode = char.charCodeAt(0); - if (charCode >= 0xd800 && charCode < 0xdc00) { + if (charCode >= 0xd800 && charCode < 0xdc00) { // charCode is a high surrogate code const char2 = text[position]; const charCode2 = char2.charCodeAt(0); - if (charCode2 >= 0xdc00 && charCode2 < 0xe000) { + if (charCode2 >= 0xdc00 && charCode2 < 0xe000) { // charCode2 is a low surrogate code result += char2; if (++position >= textLength) { break; } } @@ -61,10 +61,10 @@ export class StringUtil { result = char + result; if (--position < 0) { break; } const charCode = char.charCodeAt(0); - if (charCode >= 0xdc00 && charCode < 0xe000) { + if (charCode >= 0xdc00 && charCode < 0xe000) { // charCode is a low surrogate code const char2 = text[position]; const charCode2 = char2.charCodeAt(0); - if (charCode2 >= 0xd800 && charCode2 < 0xdc00) { + if (charCode2 >= 0xd800 && charCode2 < 0xdc00) { // charCode2 is a high surrogate code result = char2 + result; if (--position < 0) { break; } } diff --git a/ext/js/display/display-generator.js b/ext/js/display/display-generator.js index ccdd49cf..87b02f8a 100644 --- a/ext/js/display/display-generator.js +++ b/ext/js/display/display-generator.js @@ -882,13 +882,13 @@ export class DisplayGenerator { _appendFurigana(container, term, reading, addText) { container.lang = 'ja'; const segments = this._japaneseUtil.distributeFurigana(term, reading); - for (const {text, reading: reading2} of segments) { - if (reading2) { + for (const {text, reading: furigana} of segments) { + if (furigana) { const ruby = document.createElement('ruby'); const rt = document.createElement('rt'); addText(ruby, text); ruby.appendChild(rt); - rt.appendChild(document.createTextNode(reading2)); + rt.appendChild(document.createTextNode(furigana)); container.appendChild(ruby); } else { addText(container, text); diff --git a/ext/js/display/option-toggle-hotkey-handler.js b/ext/js/display/option-toggle-hotkey-handler.js index edd7de5b..73c92d59 100644 --- a/ext/js/display/option-toggle-hotkey-handler.js +++ b/ext/js/display/option-toggle-hotkey-handler.js @@ -71,17 +71,17 @@ export class OptionToggleHotkeyHandler { try { const optionsContext = this._display.getOptionsContext(); - const result = (await yomitan.api.getSettings([{ + const getSettingsResponse = (await yomitan.api.getSettings([{ scope: 'profile', path, optionsContext }]))[0]; - const {error} = result; - if (typeof error !== 'undefined') { - throw ExtensionError.deserialize(error); + const {error: getSettingsError} = getSettingsResponse; + if (typeof getSettingsError !== 'undefined') { + throw ExtensionError.deserialize(getSettingsError); } - value = result.result; + value = getSettingsResponse.result; if (typeof value !== 'boolean') { throw new Error(`Option value of type ${typeof value} cannot be toggled`); } @@ -96,10 +96,10 @@ export class OptionToggleHotkeyHandler { value, optionsContext }; - const result2 = (await yomitan.api.modifySettings([modification], this._source))[0]; - const {error: error2} = result2; - if (typeof error2 !== 'undefined') { - throw ExtensionError.deserialize(error2); + const modifySettingsResponse = (await yomitan.api.modifySettings([modification], this._source))[0]; + const {error: modifySettingsError} = modifySettingsResponse; + if (typeof modifySettingsError !== 'undefined') { + throw ExtensionError.deserialize(modifySettingsError); } this._showNotification(this._createSuccessMessage(path, value), true); diff --git a/ext/js/display/query-parser.js b/ext/js/display/query-parser.js index e71c7251..3e59098f 100644 --- a/ext/js/display/query-parser.js +++ b/ext/js/display/query-parser.js @@ -339,6 +339,7 @@ export class QueryParser extends EventDispatcher { } /** + * Convert _reading_ to hiragana, katakana, or romaji, or _term_ if it is entirely kana and _reading_ is an empty string, based on _readingMode. * @param {string} term * @param {string} reading * @returns {string} diff --git a/ext/js/language/translator.js b/ext/js/language/translator.js index bf22ee6b..ddbd8578 100644 --- a/ext/js/language/translator.js +++ b/ext/js/language/translator.js @@ -70,7 +70,7 @@ export class Translator { async findTerms(mode, text, options) { const {enabledDictionaryMap, excludeDictionaryDefinitions, sortFrequencyDictionary, sortFrequencyDictionaryOrder} = options; const tagAggregator = new TranslatorTagAggregator(); - let {dictionaryEntries, originalTextLength} = await this._findTermsInternal(text, enabledDictionaryMap, options, tagAggregator); + let {dictionaryEntries, originalTextLength} = await this._findTermsInternalWrapper(text, enabledDictionaryMap, options, tagAggregator); switch (mode) { case 'group': @@ -208,7 +208,7 @@ export class Translator { * @param {TranslatorTagAggregator} tagAggregator * @returns {Promise<import('translator').FindTermsResult>} */ - async _findTermsInternal(text, enabledDictionaryMap, options, tagAggregator) { + async _findTermsInternalWrapper(text, enabledDictionaryMap, options, tagAggregator) { if (options.removeNonJapaneseCharacters) { text = this._getJapaneseOnlyText(text); } @@ -216,7 +216,7 @@ export class Translator { return {dictionaryEntries: [], originalTextLength: 0}; } - const deinflections = await this._findTermsInternal2(text, enabledDictionaryMap, options); + const deinflections = await this._findTermsInternal(text, enabledDictionaryMap, options); let originalTextLength = 0; const dictionaryEntries = []; @@ -242,7 +242,7 @@ export class Translator { * @param {import('translation').FindTermsOptions} options * @returns {Promise<import('translation-internal').DatabaseDeinflection[]>} */ - async _findTermsInternal2(text, enabledDictionaryMap, options) { + async _findTermsInternal(text, enabledDictionaryMap, options) { const deinflections = ( options.deinflect ? this._getAllDeinflections(text, options) : diff --git a/ext/js/pages/settings/anki-controller.js b/ext/js/pages/settings/anki-controller.js index f470d9fa..6f357680 100644 --- a/ext/js/pages/settings/anki-controller.js +++ b/ext/js/pages/settings/anki-controller.js @@ -275,11 +275,13 @@ export class AnkiController { */ _onTestAnkiNoteViewerButtonClick(e) { const element = /** @type {HTMLElement} */ (e.currentTarget); + // Anki note GUI mode const {mode} = element.dataset; if (typeof mode !== 'string') { return; } - const mode2 = this._normalizeAnkiNoteGuiMode(mode); - if (mode2 === null) { return; } - this._testAnkiNoteViewerSafe(mode2); + + const normalizedMode = this._normalizeAnkiNoteGuiMode(mode); + if (normalizedMode === null) { return; } + this._testAnkiNoteViewerSafe(normalizedMode); } /** @@ -379,17 +381,17 @@ export class AnkiController { async _getAnkiData() { this._setAnkiStatusChanging(); const [ - [deckNames, error1], - [modelNames, error2] + [deckNames, getDeckNamesError], + [modelNames, getModelNamesError] ] = await Promise.all([ this._getDeckNames(), this._getModelNames() ]); - if (error1 !== null) { - this._showAnkiError(error1); - } else if (error2 !== null) { - this._showAnkiError(error2); + if (getDeckNamesError !== null) { + this._showAnkiError(getDeckNamesError); + } else if (getModelNamesError !== null) { + this._showAnkiError(getModelNamesError); } else { this._hideAnkiError(); } diff --git a/ext/js/templates/sandbox/anki-template-renderer.js b/ext/js/templates/sandbox/anki-template-renderer.js index 857922bf..515e85da 100644 --- a/ext/js/templates/sandbox/anki-template-renderer.js +++ b/ext/js/templates/sandbox/anki-template-renderer.js @@ -171,10 +171,10 @@ export class AnkiTemplateRenderer { /** @type {import('template-renderer').HelperFunction<string>} */ _furigana(args, context, options) { const {expression, reading} = this._getFuriganaExpressionAndReading(args, context, options); - const segs = this._japaneseUtil.distributeFurigana(expression, reading); + const segments = this._japaneseUtil.distributeFurigana(expression, reading); let result = ''; - for (const {text, reading: reading2} of segs) { + for (const {text, reading: reading2} of segments) { const safeText = this._escape(text); const safeReading = this._escape(reading2); if (safeReading.length > 0) { @@ -190,10 +190,10 @@ export class AnkiTemplateRenderer { /** @type {import('template-renderer').HelperFunction<string>} */ _furiganaPlain(args, context, options) { const {expression, reading} = this._getFuriganaExpressionAndReading(args, context, options); - const segs = this._japaneseUtil.distributeFurigana(expression, reading); + const segments = this._japaneseUtil.distributeFurigana(expression, reading); let result = ''; - for (const {text, reading: reading2} of segs) { + for (const {text, reading: reading2} of segments) { if (reading2.length > 0) { if (result.length > 0) { result += ' '; } result += `${text}[${reading2}]`; |