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 = () => { ` ); }; -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 = `