diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..171800a
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,5 @@
+{
+ "arrowParens": "avoid",
+ "semi": true,
+ "singleQuote": true
+}
\ No newline at end of file
diff --git a/package.json b/package.json
index e4465fc..5d2a01f 100644
--- a/package.json
+++ b/package.json
@@ -8,23 +8,25 @@
"scripts": {
"build:tamper": "parcel build ./src/*.js --no-minify --no-source-maps",
"build:quickbar": "parcel build ./src/*.js --out-dir dist/quickbar --no-source-maps",
- "build": "npm-run-all build:*"
+ "build": "npm-run-all build:*",
+ "git:add": "git add .",
+ "format": "prettier --write \"src/*.{js,jsx,ts,tsx,json,md}\""
},
"dependencies": {
"date-fns": "^2.14.0",
- "date-fns-tz": "^1.0.10",
- "lodash": "^4.17.19",
- "parcel": "^1.12.4",
- "validator": "^13.1.1"
+ "parcel": "^1.12.4"
},
"browserslist": [
"since 2017-06"
],
"devDependencies": {
"npm-run-all": "^4.1.5",
- "pre-commit": "^1.2.2"
+ "pre-commit": "^1.2.2",
+ "prettier": "^2.2.1"
},
"pre-commit": [
- "build"
+ "format",
+ "build",
+ "git:add"
]
}
diff --git a/src/bonusBarbarianVillageFinder.js b/src/bonusBarbarianVillageFinder.js
index 1bd5632..2927c2f 100644
--- a/src/bonusBarbarianVillageFinder.js
+++ b/src/bonusBarbarianVillageFinder.js
@@ -51,7 +51,7 @@ const buildReqOptions = (bonus, offset) => {
};
};
-const loadBonusVillages = async (bonus) => {
+const loadBonusVillages = async bonus => {
const { villages } = await requestCreator(buildReqOptions(bonus, 0));
for (let i = villages.length; i < villages.total; i += 1000) {
const data = await requestCreator(buildReqOptions(bonus, 0));
@@ -60,14 +60,14 @@ const loadBonusVillages = async (bonus) => {
return villages;
};
-const searchBonusBarbarianVillages = async (e) => {
+const searchBonusBarbarianVillages = async e => {
e.preventDefault();
const villages = await loadBonusVillages(parseInt(e.target[0].value));
const coords = TWMap.pos;
villages.items = villages.items
- .map((item) => {
+ .map(item => {
return {
...item,
distance: calcDistanceBetweenTwoPoints(
@@ -96,7 +96,7 @@ const getBonuses = () => {
return bonuses;
};
-const buildTableBodyHTML = (villages) => {
+const buildTableBodyHTML = villages => {
return `
@@ -114,7 +114,7 @@ const buildTableBodyHTML = (villages) => {
Array.isArray(villages)
? villages
.map(
- (village) => `
+ village => `
${twutils.buildVillageName(
@@ -154,7 +154,7 @@ const renderUI = () => {
|
${ennoblements.items
- .map((ennoblement) => {
+ .map(ennoblement => {
let rowHTML =
'' + `${formatDate(ennoblement.ennobledAt)} | `;
if (ennoblement.village) {
@@ -94,7 +94,7 @@ export default (
document
.querySelectorAll('#' + PAGINATION_CONTAINER_ID + ' a')
- .forEach((el) => {
+ .forEach(el => {
el.addEventListener('click', onPageChange);
});
};
diff --git a/src/common/showHistoryPopup.js b/src/common/showHistoryPopup.js
index a987e5e..47594a3 100644
--- a/src/common/showHistoryPopup.js
+++ b/src/common/showHistoryPopup.js
@@ -11,7 +11,7 @@ import * as twutils from '../utils/tribalwars';
const PAGINATION_CONTAINER_ID = 'historyPagination';
const translations = getTranslations();
-const addMathSymbol = (v) => {
+const addMathSymbol = v => {
return v > 0 ? '+' + v : v;
};
@@ -56,12 +56,12 @@ export default (
${tribe ? '' : `${translations.ods} | `}
${history.items
- .map((history) => {
+ .map(history => {
const subtracted =
subDays(new Date(history.createDate), 1)
.toISOString()
.split('.')[0] + 'Z';
- const stats = daily.items.find((stats) => {
+ const stats = daily.items.find(stats => {
return stats.createDate === subtracted;
});
@@ -142,7 +142,7 @@ export default (
document
.querySelectorAll('#' + PAGINATION_CONTAINER_ID + ' a')
- .forEach((el) => {
+ .forEach(el => {
el.addEventListener('click', onPageChange);
});
};
diff --git a/src/extendedMapPopup.js b/src/extendedMapPopup.js
index 3daedb7..bac7772 100644
--- a/src/extendedMapPopup.js
+++ b/src/extendedMapPopup.js
@@ -97,7 +97,7 @@ const cacheServerConfig = (data = {}) => {
setItem(SERVER_CONFIG_LOCAL_STORAGE_KEY, data);
};
-const isConfigExpired = (date) => {
+const isConfigExpired = date => {
return Math.abs(date.getTime() - new Date().getTime()) > 1000 * 60 * 60 * 24;
};
@@ -166,7 +166,7 @@ const getAvailableUnits = (unitCfg = {}) => {
return units;
};
-const getUnitTdBgColor = (index) => (index % 2 === 0 ? '#f8f4e8' : '#ded3b9;');
+const getUnitTdBgColor = index => (index % 2 === 0 ? '#f8f4e8' : '#ded3b9;');
const buildUnitHeader = (unit, index) => {
return `
@@ -295,13 +295,13 @@ const renderAdditionalInfo = (id, data, { config, unitConfig }) => {
`;
};
-const createLoadVillageHandler = (cfg) => async (e) => {
+const createLoadVillageHandler = cfg => async e => {
TWMap.popup._loadVillage(e);
const data = await loadVillageData(parseInt(e));
renderAdditionalInfo(parseInt(e), data, cfg);
};
-const createDisplayForVillageHandler = (cfg) => async (e, a, t) => {
+const createDisplayForVillageHandler = cfg => async (e, a, t) => {
TWMap.popup._displayForVillage(e, a, t);
const data = await loadVillageData(parseInt(e.id), {
cacheOnly: window.game_data.features.Premium.active,
diff --git a/src/extendedPlayerProfile.js b/src/extendedPlayerProfile.js
index 7a4a372..e59aa48 100644
--- a/src/extendedPlayerProfile.js
+++ b/src/extendedPlayerProfile.js
@@ -280,7 +280,7 @@ const renderTr = ({ title, data, id }) => {
tr.children[1].innerHTML = data;
};
-const renderPlayerServers = (player) => {
+const renderPlayerServers = player => {
let playerServers = document.querySelector('#playerServers');
if (!playerServers) {
playerServers = document.createElement('table');
@@ -305,7 +305,7 @@ const renderPlayerServers = (player) => {
playerServers.querySelector('td').innerHTML = player.servers
.sort()
.map(
- (server) =>
+ server =>
`${v[1]}`
@@ -604,7 +604,7 @@ const loadMembersGrowthData = async ({ createDateLTE, createDateGT } = {}) => {
return data;
};
-const handleShowMembersGrowthClick = async (e) => {
+const handleShowMembersGrowthClick = async e => {
e.preventDefault();
const createDateGT = new Date();
createDateGT.setDate(createDateGT.getDate() - 7);
@@ -640,7 +640,7 @@ const renderTribeChanges = (e, currentPage, tribeChanges) => {
${tribeChanges.items
- .map((tribeChange) => {
+ .map(tribeChange => {
let rowHTML =
'' + `${formatDate(tribeChange.createdAt)} | `;
if (tribeChange.player) {
@@ -671,12 +671,12 @@ const renderTribeChanges = (e, currentPage, tribeChanges) => {
document
.querySelectorAll('#' + TRIBE_CHANGES_PAGINATION_CONTAINER_ID + ' a')
- .forEach((el) => {
+ .forEach(el => {
el.addEventListener('click', handleShowTribeChangesClick);
});
};
-const handleShowTribeChangesClick = async (e) => {
+const handleShowTribeChangesClick = async e => {
e.preventDefault();
const page = getPage(e.target);
if (!isNaN(page)) {
@@ -699,7 +699,7 @@ const handleShowTribeChangesClick = async (e) => {
}
};
-const handleGenerateMailingListClick = (e) => {
+const handleGenerateMailingListClick = e => {
e.preventDefault();
const members = getMemberNames();
@@ -758,7 +758,7 @@ const showLoadingDialog = (current = 0, total = 0) => {
);
};
-const handleExportTribeVillagesFormSubmit = async (e) => {
+const handleExportTribeVillagesFormSubmit = async e => {
e.preventDefault();
let limit = parseInt(e.target[4].value);
const variables = {
@@ -798,13 +798,13 @@ const handleExportTribeVillagesFormSubmit = async (e) => {
'exportTribeVillages',
`
`
);
};
-const handleExportTribeVillagesClick = (e) => {
+const handleExportTribeVillagesClick = e => {
e.preventDefault();
const FORM_ID = 'etvForm';
@@ -843,7 +843,7 @@ const handleExportTribeVillagesClick = (e) => {
.addEventListener('submit', handleExportTribeVillagesFormSubmit);
};
-const wrapAction = (action) => {
+const wrapAction = action => {
const actionWrapperTd = document.createElement('td');
actionWrapperTd.colSpan = '2';
actionWrapperTd.append(action);
diff --git a/src/extendedVillageProfile.js b/src/extendedVillageProfile.js
index c16252f..18c5cf4 100644
--- a/src/extendedVillageProfile.js
+++ b/src/extendedVillageProfile.js
@@ -138,7 +138,7 @@ const cacheServerConfig = (data = {}) => {
setItem(SERVER_CONFIG_LOCAL_STORAGE_KEY, data);
};
-const isConfigExpired = (date) => {
+const isConfigExpired = date => {
return Math.abs(date.getTime() - new Date().getTime()) > 1000 * 60 * 60 * 24;
};
@@ -177,7 +177,7 @@ const loadPageData = async () => {
return data;
};
-const handleShowTribeEnnoblementsClick = async (e) => {
+const handleShowTribeEnnoblementsClick = async e => {
e.preventDefault();
const page = getPage(e.target);
if (!isNaN(page)) {
@@ -201,7 +201,7 @@ const handleShowTribeEnnoblementsClick = async (e) => {
}
};
-const buildCellsForIncSupport = (units) => {
+const buildCellsForIncSupport = units => {
const cells = [];
let pop = 0;
for (let unit in units) {
@@ -212,14 +212,14 @@ const buildCellsForIncSupport = (units) => {
return cells;
};
-const handleCountIncomingSupportClick = async (e) => {
+const handleCountIncomingSupportClick = async e => {
e.preventDefault();
const ids = [];
const allyCommand = {};
document
.querySelectorAll('span.command_hover_details[data-command-type="support"]')
- .forEach((el) => {
+ .forEach(el => {
const id = parseInt(el.getAttribute('data-command-id'));
if (el.classList.contains('commandicon-ally')) {
allyCommand[id] = true;
@@ -328,7 +328,7 @@ const handleCountIncomingSupportClick = async (e) => {
}
};
-const wrapAction = (action) => {
+const wrapAction = action => {
const actionWrapperTd = document.createElement('td');
actionWrapperTd.colSpan = '2';
actionWrapperTd.append(action);
@@ -423,7 +423,7 @@ const renderAdditionalInfo = ({ config, ennoblements } = {}) => {
tr.style.textAlign = 'center';
tr.style.fontWeight = 'bold';
tr.appendChild(document.createElement('td'));
- units.forEach((count) => {
+ units.forEach(count => {
const td = document.createElement('td');
td.innerHTML = count;
tr.appendChild(td);
diff --git a/src/inADayTribeRankingGenerator.js b/src/inADayTribeRankingGenerator.js
index d4253a5..d41b596 100644
--- a/src/inADayTribeRankingGenerator.js
+++ b/src/inADayTribeRankingGenerator.js
@@ -35,17 +35,15 @@ const addTribe = () => {
container.appendChild(div);
};
-const handleFormSubmit = async (e) => {
+const handleFormSubmit = async e => {
e.preventDefault();
const limit = parseInt(document.querySelector('#' + LIMIT_INPUT_ID).value);
const tribes = [];
const type =
new URLSearchParams(window.location.search).get('type') || 'kill_att';
- document
- .querySelectorAll('#' + TRIBE_CONTAINER_ID + ' input')
- .forEach((el) => {
- if (el.value) tribes.push(el.value.trim());
- });
+ document.querySelectorAll('#' + TRIBE_CONTAINER_ID + ' input').forEach(el => {
+ if (el.value) tribes.push(el.value.trim());
+ });
let players = [];
let page = 0;
diff --git a/src/latestEnnoblements.js b/src/latestEnnoblements.js
index 1a80eda..4b4a6c0 100644
--- a/src/latestEnnoblements.js
+++ b/src/latestEnnoblements.js
@@ -92,9 +92,9 @@ const loadLatestEnnoblements = () => {
limit: 50,
sort: ['ennobledAt DESC'],
},
- }).then((data) => {
+ }).then(data => {
cacheEnnoblements(data);
- return new Promise((resolve) => resolve(data));
+ return new Promise(resolve => resolve(data));
});
};
@@ -115,7 +115,7 @@ const filterEnnoblements = (
ennoblements = [],
{ newOwner, newOwnerTribe, oldOwner, oldOwnerTribe } = {}
) => {
- return ennoblements.filter((ennoblement) => {
+ return ennoblements.filter(ennoblement => {
if (newOwner && !isValidPlayer(ennoblement.newOwner, newOwner)) {
return false;
}
@@ -156,14 +156,12 @@ const applyFilters = (e, ennoblements) => {
};
const addEventListeners = (ennoblements = []) => {
- document
- .querySelector('#' + FILTER_FORM_ID)
- .addEventListener('submit', (e) => {
- applyFilters(e, ennoblements);
- });
+ document.querySelector('#' + FILTER_FORM_ID).addEventListener('submit', e => {
+ applyFilters(e, ennoblements);
+ });
};
-const getPlayerHTML = (player) => {
+const getPlayerHTML = player => {
return player && player.name
? `${player.name} (${
player.tribe && player.tribe.tag
@@ -175,14 +173,14 @@ const getPlayerHTML = (player) => {
: '-';
};
-const getVillageHTML = (village) => {
+const getVillageHTML = village => {
return `${twutils.buildVillageName(village.name, village.x, village.y)}`;
};
-const buildEnnoblementsRows = (ennoblements) => {
- return ennoblements.map((ennoblement) => {
+const buildEnnoblementsRows = ennoblements => {
+ return ennoblements.map(ennoblement => {
return `
${getVillageHTML(ennoblement.village)} |
${getPlayerHTML(ennoblement.newOwner)} |
diff --git a/src/libs/InADayParser.js b/src/libs/InADayParser.js
index ea5f065..1da061c 100644
--- a/src/libs/InADayParser.js
+++ b/src/libs/InADayParser.js
@@ -16,7 +16,7 @@ export default class InADayParser {
if (
this.filters.tribes &&
Array.isArray(this.filters.tribes) &&
- !this.filters.tribes.some((tribe) => tribe === row.tribe)
+ !this.filters.tribes.some(tribe => tribe === row.tribe)
) {
return false;
}
diff --git a/src/libs/requestCreator.js b/src/libs/requestCreator.js
index 6e10d56..4a42700 100644
--- a/src/libs/requestCreator.js
+++ b/src/libs/requestCreator.js
@@ -11,13 +11,13 @@ export default ({ query, variables = {} } = {}) => {
'Content-Type': 'application/json',
},
})
- .then((res) => {
+ .then(res => {
return res.json();
})
.then(({ data, errors }) => {
if (errors && Array.isArray(errors) && errors.length > 0) {
throw new Error(errors[0].message);
}
- return new Promise((resolve) => resolve(data));
+ return new Promise(resolve => resolve(data));
});
};
diff --git a/src/mapCoordsPicker.js b/src/mapCoordsPicker.js
index 10b25a0..2b24383 100644
--- a/src/mapCoordsPicker.js
+++ b/src/mapCoordsPicker.js
@@ -55,11 +55,11 @@ const setVillageBorder = (x, y, color = 'transparent') => {
}
};
-const deleteVillageFromOtherGroups = (key) => {
+const deleteVillageFromOtherGroups = key => {
for (let name in config.groups) {
if (name === config.selectedGroup) return;
config.groups[name].villages = config.groups[name].villages.filter(
- (village) => village.key !== key
+ village => village.key !== key
);
}
};
@@ -69,12 +69,12 @@ const handleMapClick = (x, y, e) => {
const key = `${x}|${y}`;
const selected = config.groups[config.selectedGroup].villages.some(
- (village) => village.key === key
+ village => village.key === key
);
if (selected) {
config.groups[config.selectedGroup].villages = config.groups[
config.selectedGroup
- ].villages.filter((village) => village.key !== key);
+ ].villages.filter(village => village.key !== key);
setVillageBorder(x, y, 'transparent');
} else {
config.groups[config.selectedGroup].villages = [
@@ -114,7 +114,7 @@ const renderForm = (container, group) => {
const form = document.createElement('form');
form.innerHTML = html;
- form.addEventListener('submit', (e) => {
+ form.addEventListener('submit', e => {
e.preventDefault();
if (group) {
if (group.name === config.selectedGroup)
@@ -148,7 +148,7 @@ const renderForm = (container, group) => {
const selectButton = form.querySelector('.selectButton');
if (selectButton) {
- selectButton.addEventListener('click', (e) => {
+ selectButton.addEventListener('click', e => {
config.selectedGroup = group.name;
renderGroups();
});
@@ -173,7 +173,7 @@ const handleExportVillages = () => {
groups.push(`
${name}
`);
@@ -240,7 +240,7 @@ const handleButtonClick = () => {
};
const colorizeGroupVillages = (name, bgColor = '') => {
- config.groups[name].villages.forEach((village) => {
+ config.groups[name].villages.forEach(village => {
setVillageBorder(
village.x,
village.y,
diff --git a/src/utils/buildUnitImgURL.js b/src/utils/buildUnitImgURL.js
index 46bb7d2..b30760c 100644
--- a/src/utils/buildUnitImgURL.js
+++ b/src/utils/buildUnitImgURL.js
@@ -1,5 +1,5 @@
import { buildImgURL } from './tribalwars';
-export default (unit) => {
+export default unit => {
return buildImgURL(`unit/unit_${unit}.png`);
};
diff --git a/src/utils/getIDFromURL.js b/src/utils/getIDFromURL.js
index 0faf646..306a44c 100644
--- a/src/utils/getIDFromURL.js
+++ b/src/utils/getIDFromURL.js
@@ -1 +1 @@
-export default (url) => parseInt(new URLSearchParams(url).get('id'));
+export default url => parseInt(new URLSearchParams(url).get('id'));
diff --git a/src/utils/hyphensToCamelCase.js b/src/utils/hyphensToCamelCase.js
index 8b97d2b..f1e0898 100644
--- a/src/utils/hyphensToCamelCase.js
+++ b/src/utils/hyphensToCamelCase.js
@@ -1,4 +1,4 @@
-export default (str) => {
+export default str => {
const arr = str.split(/[_-]/);
let newStr = '';
for (let i = 1; i < arr.length; i++) {
diff --git a/src/utils/isNil.js b/src/utils/isNil.js
index 21563f1..1987e7f 100644
--- a/src/utils/isNil.js
+++ b/src/utils/isNil.js
@@ -1 +1 @@
-export default (v) => v === undefined || v === null;
+export default v => v === undefined || v === null;
diff --git a/src/utils/pagination.js b/src/utils/pagination.js
index 5136716..b71cfa4 100644
--- a/src/utils/pagination.js
+++ b/src/utils/pagination.js
@@ -15,7 +15,7 @@ export const setPage = (el, page = 1) => {
el.setAttribute(ATTRIBUTE, page + '');
};
-export const getPage = (el) => {
+export const getPage = el => {
if (!el instanceof HTMLElement) {
return 0;
}
diff --git a/src/utils/tribalwars.js b/src/utils/tribalwars.js
index 881fffc..88617dc 100644
--- a/src/utils/tribalwars.js
+++ b/src/utils/tribalwars.js
@@ -1,4 +1,4 @@
-export const buildTribeURL = (id) => {
+export const buildTribeURL = id => {
return (
window.location.origin +
TribalWars.buildURL('', {
@@ -8,7 +8,7 @@ export const buildTribeURL = (id) => {
);
};
-export const buildPlayerURL = (id) => {
+export const buildPlayerURL = id => {
return (
window.location.origin +
TribalWars.buildURL('', {
@@ -18,7 +18,7 @@ export const buildPlayerURL = (id) => {
);
};
-export const buildVillageURL = (id) => {
+export const buildVillageURL = id => {
return (
window.location.origin +
TribalWars.buildURL('', {
@@ -37,6 +37,6 @@ export const calcAttackDuration = (distance, baseSpeed) => {
return Math.round(distance * baseSpeed);
};
-export const buildImgURL = (img) => {
+export const buildImgURL = img => {
return image_base + img;
};
diff --git a/src/utils/wait.js b/src/utils/wait.js
index 0873538..25c47cf 100644
--- a/src/utils/wait.js
+++ b/src/utils/wait.js
@@ -1 +1 @@
-export default (t) => new Promise((resolve) => setTimeout(resolve, t));
+export default t => new Promise(resolve => setTimeout(resolve, t));
diff --git a/src/warStatsGenerator.js b/src/warStatsGenerator.js
index 8d2a539..7ef389c 100644
--- a/src/warStatsGenerator.js
+++ b/src/warStatsGenerator.js
@@ -67,7 +67,7 @@ const showResult = (sideOne = 0, sideTwo = 0) => {
document.querySelector('#' + RESULT_CONTAINER_ID).innerHTML = html;
};
-const createAddTribeHandler = (container) => {
+const createAddTribeHandler = container => {
return () => {
const div = document.createElement('div');
div.innerHTML = `
@@ -82,21 +82,21 @@ const createAddTribeHandler = (container) => {
};
};
-const handleFormSubmit = async (e) => {
+const handleFormSubmit = async e => {
e.preventDefault();
const sideOneTags = [];
const sideTwoTags = [];
e.target
.querySelectorAll(`#${SIDE_ONE_INPUT_CONTAINER_ID} input`)
- .forEach((el) => {
+ .forEach(el => {
if (el.value.trim()) {
sideOneTags.push(el.value.trim());
}
});
e.target
.querySelectorAll(`#${SIDE_TWO_INPUT_CONTAINER_ID} input`)
- .forEach((el) => {
+ .forEach(el => {
if (el.value.trim()) {
sideTwoTags.push(el.value.trim());
}
@@ -124,7 +124,7 @@ const handleFormSubmit = async (e) => {
if (toInputs.length === 2 && toInputs[0].value && toInputs[1].value) {
ennobledAtLTE = new Date(`${toInputs[0].value}T${toInputs[1].value}:00`);
}
- e.target.querySelectorAll('button').forEach((button) => {
+ e.target.querySelectorAll('button').forEach(button => {
button.disabled = true;
});
@@ -139,11 +139,11 @@ const handleFormSubmit = async (e) => {
},
});
const sideOneTribes = tribes.items
- .filter((item) => sideOneTags.some((tag) => item.tag === tag))
- .map((tribe) => tribe.id);
+ .filter(item => sideOneTags.some(tag => item.tag === tag))
+ .map(tribe => tribe.id);
const sideTwoTribes = tribes.items
- .filter((item) => sideTwoTags.some((tag) => item.tag === tag))
- .map((tribe) => tribe.id);
+ .filter(item => sideTwoTags.some(tag => item.tag === tag))
+ .map(tribe => tribe.id);
const { sideOneEnnoblements, sideTwoEnnoblements } = await requestCreator({
query: ENNOBLEMENTS_QUERY,
@@ -174,12 +174,12 @@ const handleFormSubmit = async (e) => {
} catch (error) {
console.log('handleFormSubmit', error);
}
- e.target.querySelectorAll('button').forEach((button) => {
+ e.target.querySelectorAll('button').forEach(button => {
button.disabled = false;
});
};
-const showWarStatsForm = (e) => {
+const showWarStatsForm = e => {
const html = `