Merge pull request #363 from toasted-nutbread/eslint-stylistic-rules
Eslint stylistic rules
This commit is contained in:
commit
897f2360be
@ -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"
|
||||
},
|
||||
|
@ -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();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -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)
|
||||
);
|
||||
|
@ -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) {
|
||||
|
@ -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(); }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
}});
|
||||
|
@ -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);
|
||||
});
|
||||
}
|
||||
|
@ -163,7 +163,6 @@ async function _showSettingsImportWarnings(warnings) {
|
||||
sanitize: e.currentTarget.dataset.importSanitize === 'true'
|
||||
});
|
||||
modalNode.modal('hide');
|
||||
|
||||
};
|
||||
const onModalHide = () => {
|
||||
complete({result: false});
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -30,7 +30,7 @@ function testValidate1() {
|
||||
]
|
||||
};
|
||||
|
||||
const schemaValidate = (value, schema) => {
|
||||
const schemaValidate = (value) => {
|
||||
try {
|
||||
JsonSchema.validate(value, schema);
|
||||
return true;
|
||||
@ -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}
|
||||
]
|
||||
];
|
||||
|
Loading…
Reference in New Issue
Block a user