Merge pull request #363 from toasted-nutbread/eslint-stylistic-rules

Eslint stylistic rules
This commit is contained in:
toasted-nutbread 2020-02-22 15:22:42 -05:00 committed by GitHub
commit 897f2360be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 135 additions and 96 deletions

View File

@ -21,11 +21,16 @@
"curly": ["error", "all"],
"dot-notation": "error",
"eqeqeq": "error",
"func-names": ["error", "always"],
"no-case-declarations": "error",
"no-const-assign": "error",
"no-constant-condition": "off",
"no-global-assign": "error",
"no-param-reassign": "off",
"no-prototype-builtins": "error",
"no-shadow": ["error", {"builtinGlobals": false}],
"no-undef": "error",
"no-unneeded-ternary": "error",
"no-unused-vars": ["error", {"vars": "local", "args": "after-used", "argsIgnorePattern": "^_", "caughtErrors": "none"}],
"no-unused-expressions": "error",
"no-var": "error",
@ -34,6 +39,35 @@
"quotes": ["error", "single", "avoid-escape"],
"require-atomic-updates": "off",
"semi": "error",
// Whitespace rules
"brace-style": ["error", "1tbs", {"allowSingleLine": true}],
"indent": ["error", 4, {"SwitchCase": 1, "MemberExpression": 1, "flatTernaryExpressions": true, "ignoredNodes": ["ConditionalExpression"]}],
"object-curly-newline": "error",
"padded-blocks": ["error", "never"],
"array-bracket-spacing": ["error", "never"],
"arrow-spacing": ["error", {"before": true, "after": true}],
"block-spacing": ["error", "always"],
"comma-spacing": ["error", { "before": false, "after": true }],
"computed-property-spacing": ["error", "never"],
"func-call-spacing": ["error", "never"],
"generator-star-spacing": ["error", "before"],
"key-spacing": ["error", {"beforeColon": false, "afterColon": true, "mode": "strict"}],
"keyword-spacing": ["error", {"before": true, "after": true}],
"no-trailing-spaces": "error",
"no-whitespace-before-property": "error",
"object-curly-spacing": ["error", "never"],
"rest-spread-spacing": ["error", "never"],
"semi-spacing": ["error", {"before": false, "after": true}],
"space-in-parens": ["error", "never"],
"space-unary-ops": "error",
"spaced-comment": ["error", "always", {"markers": ["global"]}],
"switch-colon-spacing": ["error", {"after": true, "before": false}],
"template-curly-spacing": ["error", "never"],
"template-tag-spacing": ["error", "never"],
// Extensions
"no-unsanitized/method": "error",
"no-unsanitized/property": "error"
},

View File

@ -274,18 +274,18 @@ class Backend {
const node = nodes.pop();
for (const key of Object.keys(node.obj)) {
const path = node.path.concat(key);
const obj = node.obj[key];
if (obj !== null && typeof obj === 'object') {
nodes.unshift({obj, path});
const obj2 = node.obj[key];
if (obj2 !== null && typeof obj2 === 'object') {
nodes.unshift({obj: obj2, path});
} else {
valuePaths.push([obj, path]);
valuePaths.push([obj2, path]);
}
}
}
return valuePaths;
}
function modifyOption(path, value, options) {
function modifyOption(path, value) {
let pivot = options;
for (const key of path.slice(0, -1)) {
if (!hasOwn(pivot, key)) {
@ -298,7 +298,7 @@ class Backend {
}
for (const [value, path] of getValuePaths(changedOptions)) {
modifyOption(path, value, options);
modifyOption(path, value);
}
await this._onApiOptionsSave({source});
@ -340,9 +340,9 @@ class Backend {
dictTermsSort(definitions);
const {expression, reading} = definitions[0];
const source = text.substring(0, sourceLength);
for (const {text, furigana} of jpDistributeFuriganaInflected(expression, reading, source)) {
const reading = jpConvertReading(text, furigana, options.parsing.readingMode);
term.push({text, reading});
for (const {text: text2, furigana} of jpDistributeFuriganaInflected(expression, reading, source)) {
const reading2 = jpConvertReading(text2, furigana, options.parsing.readingMode);
term.push({text: text2, reading: reading2});
}
text = text.substring(source.length);
} else {
@ -365,17 +365,17 @@ class Backend {
for (const {expression, reading, source} of parsedLine) {
const term = [];
if (expression !== null && reading !== null) {
for (const {text, furigana} of jpDistributeFuriganaInflected(
for (const {text: text2, furigana} of jpDistributeFuriganaInflected(
expression,
jpKatakanaToHiragana(reading),
source
)) {
const reading = jpConvertReading(text, furigana, options.parsing.readingMode);
term.push({text, reading});
const reading2 = jpConvertReading(text2, furigana, options.parsing.readingMode);
term.push({text: text2, reading: reading2});
}
} else {
const reading = jpConvertReading(source, null, options.parsing.readingMode);
term.push({text: source, reading});
const reading2 = jpConvertReading(source, null, options.parsing.readingMode);
term.push({text: source, reading: reading2});
}
result.push(term);
}
@ -801,8 +801,11 @@ class Backend {
await new Promise((resolve, reject) => {
chrome.tabs.update(tab.id, {active: true}, () => {
const e = chrome.runtime.lastError;
if (e) { reject(e); }
else { resolve(); }
if (e) {
reject(e);
} else {
resolve();
}
});
});
@ -813,18 +816,24 @@ class Backend {
try {
const tabWindow = await new Promise((resolve, reject) => {
chrome.windows.get(tab.windowId, {}, (tabWindow) => {
chrome.windows.get(tab.windowId, {}, (value) => {
const e = chrome.runtime.lastError;
if (e) { reject(e); }
else { resolve(tabWindow); }
if (e) {
reject(e);
} else {
resolve(value);
}
});
});
if (!tabWindow.focused) {
await new Promise((resolve, reject) => {
chrome.windows.update(tab.windowId, {focused: true}, () => {
const e = chrome.runtime.lastError;
if (e) { reject(e); }
else { resolve(); }
if (e) {
reject(e);
} else {
resolve();
}
});
});
}

View File

@ -809,9 +809,9 @@ class Database {
for (const objectStoreName of objectStoreNames) {
const {primaryKey, indices} = stores[objectStoreName];
const objectStoreNames = transaction.objectStoreNames || db.objectStoreNames;
const objectStoreNames2 = transaction.objectStoreNames || db.objectStoreNames;
const objectStore = (
Database._listContains(objectStoreNames, objectStoreName) ?
Database._listContains(objectStoreNames2, objectStoreName) ?
transaction.objectStore(objectStoreName) :
db.createObjectStore(objectStoreName, primaryKey)
);

View File

@ -224,15 +224,15 @@ function jpDistributeFurigana(expression, reading) {
}
let isAmbiguous = false;
const segmentize = (reading, groups) => {
const segmentize = (reading2, groups) => {
if (groups.length === 0 || isAmbiguous) {
return [];
}
const group = groups[0];
if (group.mode === 'kana') {
if (jpKatakanaToHiragana(reading).startsWith(jpKatakanaToHiragana(group.text))) {
const readingLeft = reading.substring(group.text.length);
if (jpKatakanaToHiragana(reading2).startsWith(jpKatakanaToHiragana(group.text))) {
const readingLeft = reading2.substring(group.text.length);
const segs = segmentize(readingLeft, groups.splice(1));
if (segs) {
return [{text: group.text}].concat(segs);
@ -240,9 +240,9 @@ function jpDistributeFurigana(expression, reading) {
}
} else {
let foundSegments = null;
for (let i = reading.length; i >= group.text.length; --i) {
const readingUsed = reading.substring(0, i);
const readingLeft = reading.substring(i);
for (let i = reading2.length; i >= group.text.length; --i) {
const readingUsed = reading2.substring(0, i);
const readingLeft = reading2.substring(i);
const segs = segmentize(readingLeft, groups.slice(1));
if (segs) {
if (foundSegments !== null) {

View File

@ -401,7 +401,7 @@ class JsonSchemaProxyHandler {
info.valuePush(i, propertyValue);
JsonSchemaProxyHandler.validate(propertyValue, propertySchema, info);
info.valuePop();
for (let i = 0; i < schemaPath.length; ++i) { info.schemaPop(); }
for (let j = 0, jj = schemaPath.length; j < jj; ++j) { info.schemaPop(); }
}
}

View File

@ -59,7 +59,7 @@ class QueryParser extends TextScanner {
this.search.setContent('terms', {definitions, context: {
focus: false,
disableHistory: cause === 'mouse' ? true : false,
disableHistory: cause === 'mouse',
sentence: {text: searchText, offset: 0},
url: window.location.href
}});

View File

@ -70,7 +70,7 @@ class DisplaySearch extends Display {
this.wanakanaEnable.checked = false;
}
this.wanakanaEnable.addEventListener('change', (e) => {
const {queryParams: {query=''}} = parseUrl(window.location.href);
const {queryParams: {query: query2=''}} = parseUrl(window.location.href);
if (e.target.checked) {
window.wanakana.bind(this.query);
apiOptionsSet({general: {enableWanakana: true}}, this.getOptionsContext());
@ -78,7 +78,7 @@ class DisplaySearch extends Display {
window.wanakana.unbind(this.query);
apiOptionsSet({general: {enableWanakana: false}}, this.getOptionsContext());
}
this.setQuery(query);
this.setQuery(query2);
this.onSearchQueryUpdated(this.query.value, false);
});
}

View File

@ -163,7 +163,6 @@ async function _showSettingsImportWarnings(warnings) {
sanitize: e.currentTarget.dataset.importSanitize === 'true'
});
modalNode.modal('hide');
};
const onModalHide = () => {
complete({result: false});

View File

@ -166,7 +166,7 @@ class SettingsDictionaryListUI {
delete n.dataset.dict;
$(n).modal('hide');
const index = this.dictionaryEntries.findIndex((e) => e.dictionaryInfo.title === title);
const index = this.dictionaryEntries.findIndex((entry) => entry.dictionaryInfo.title === title);
if (index >= 0) {
this.dictionaryEntries[index].deleteDictionary();
}

View File

@ -60,8 +60,8 @@ class SettingsPopupPreview {
this.frontend = new Frontend(this.popup);
this.frontend.setEnabled = function () {};
this.frontend.searchClear = function () {};
this.frontend.setEnabled = () => {};
this.frontend.searchClear = () => {};
await this.frontend.prepare();

View File

@ -33,7 +33,7 @@ function utilIsolate(value) {
}
function utilFunctionIsolate(func) {
return function (...args) {
return function isolatedFunction(...args) {
try {
args = args.map((v) => utilIsolate(v));
return func.call(this, ...args);

View File

@ -192,8 +192,7 @@ function docSentenceExtract(source, extent) {
if (terminators.includes(c)) {
endPos = i + 1;
break;
}
else if (c in quotesBwd) {
} else if (c in quotesBwd) {
endPos = i;
break;
}

View File

@ -54,7 +54,6 @@ class TextToSpeechAudio {
speechSynthesis.cancel();
speechSynthesis.speak(this._utterance);
} catch (e) {
// NOP
}
@ -82,7 +81,6 @@ class TextToSpeechAudio {
return new TextToSpeechAudio(text, voice);
}
}
function audioGetFromUrl(url, willDownload) {

View File

@ -160,9 +160,9 @@ function promiseTimeout(delay, resolveValue) {
const resolve = (value) => complete(promiseResolve, value);
const reject = (value) => complete(promiseReject, value);
const promise = new Promise((resolve, reject) => {
promiseResolve = resolve;
promiseReject = reject;
const promise = new Promise((resolve2, reject2) => {
promiseResolve = resolve2;
promiseReject = reject2;
});
timer = window.setTimeout(() => {
timer = null;

View File

@ -36,8 +36,8 @@ class XMLHttpRequest {
callbacks.push(callback);
}
open(action, url) {
this._url = url;
open(action, url2) {
this._url = url2;
}
send() {
@ -116,10 +116,10 @@ function clearDatabase(timeout) {
(async () => {
const indexedDB = global.indexedDB;
for (const {name} of await indexedDB.databases()) {
await new Promise((resolve, reject) => {
await new Promise((resolve2, reject2) => {
const request = indexedDB.deleteDatabase(name);
request.onerror = (e) => reject(e);
request.onsuccess = () => resolve();
request.onerror = (e) => reject2(e);
request.onsuccess = () => resolve2();
});
}
clearTimeout(timer);

View File

@ -30,7 +30,7 @@ function testValidate1() {
]
};
const schemaValidate = (value, schema) => {
const schemaValidate = (value) => {
try {
JsonSchema.validate(value, schema);
return true;
@ -48,7 +48,7 @@ function testValidate1() {
) &&
(
(
(value % 3 )=== 0 ||
(value % 3) === 0 ||
(value % 5) === 0
) &&
(value % 15) !== 0
@ -81,7 +81,7 @@ function testGetValidValueOrDefault1() {
const testData = [
[
void(0),
void 0,
{test: 'default'}
],
[
@ -210,7 +210,7 @@ function testGetValidValueOrDefault3() {
{test: 'value', test2: 2, test3: 10}
],
[
{test: 'value', test2: 2, test3: void(0)},
{test: 'value', test2: 2, test3: void 0},
{test: 'value', test2: 2, test3: 10}
]
];