style: make linting changes

This commit is contained in:
William Oldham
2025-01-20 12:13:47 +00:00
parent e63adcd63f
commit 1c1e453213
19 changed files with 141 additions and 145 deletions

View File

@@ -1,11 +1,11 @@
const { GraphQLClient, gql } = require('graphql-request');
const Stripe = require('stripe');
const logger = require('./logger');
const config = require('../config.json');
const logger = require('./logger');
const github = new GraphQLClient('https://api.github.com/graphql', {
headers: {
Authorization: `bearer ${config.github.graphql_token}`,
Authorization: `bearer ${config.github.graphql_token}`
}
});
@@ -82,7 +82,7 @@ let stripeDonationCache = {
sections: []
};
async function getGitHubProjectsV2(after='') {
async function getGitHubProjectsV2(after = '') {
let projects = [];
const data = await github.request(getProjectsV2GQL, {
@@ -94,7 +94,7 @@ async function getGitHubProjectsV2(after='') {
projects.push({
id: node.id,
title: node.title,
url: node.repositories.nodes[0]?.url,
url: node.repositories.nodes[0]?.url
});
}
@@ -108,7 +108,7 @@ async function getGitHubProjectsV2(after='') {
return projects;
}
async function getGitHubProjectsV2Fields(id, after='') {
async function getGitHubProjectsV2Fields(id, after = '') {
let fields = [];
const data = await github.request(getProjectsV2FieldsGQL, {

View File

@@ -1,6 +1,6 @@
const mongoose = require('mongoose');
const PNIDSchema = require('./schema/pnid');
const config = require('../config.json');
const PNIDSchema = require('./schema/pnid');
const accountServerConfig = config.database.account;
const { connection_string, options } = accountServerConfig;

View File

@@ -2,7 +2,7 @@ async function redirectMiddleware(request, response, next) {
if (request.path.startsWith('/account/logout')) {
return next();
}
if (request.method === 'POST') {
request.redirect = request.body.redirect?.startsWith('/') ? request.body.redirect : null;
}

View File

@@ -1,6 +1,6 @@
const fs = require('fs');
const util = require('../util');
const database = require('../database');
const fs = require('fs');
const localeFileNames = fs.readdirSync(`${__dirname}/../../locales`);
async function renderDataMiddleware(request, response, next) {
@@ -16,7 +16,7 @@ async function renderDataMiddleware(request, response, next) {
const reqLocale = request.cookies.preferredLocale || request.locale.toString();
const locale = util.getLocale(reqLocale);
let localeList = localeFileNames.map(locale => {
let localeList = localeFileNames.map((locale) => {
const code = locale.replace('.json', '').replace('_', '-');
// Check if it's a real language code, or a custom one

View File

@@ -1,5 +1,5 @@
const express = require('express');
const crypto = require('crypto');
const express = require('express');
const DiscordOauth2 = require('discord-oauth2');
const Stripe = require('stripe');
const { REST: DiscordRest } = require('@discordjs/rest');
@@ -11,7 +11,7 @@ const util = require('../util');
const { handleStripeEvent } = require('../stripe');
const logger = require('../logger');
const config = require('../../config.json');
const editorJSON = require('../json/miieditor.json');
const editorJSON = require('../json/miieditor.json');
const { Router } = express;
@@ -60,7 +60,7 @@ router.get('/', requireLoginMiddleware, async (request, response) => {
// If no Discord account linked, generate an auth URL
const discordAuthURL = discordOAuth.generateAuthUrl({
scope: ['identify', 'guilds'],
state: crypto.randomBytes(16).toString('hex'),
state: crypto.randomBytes(16).toString('hex')
});
renderData.discordAuthURL = discordAuthURL;
@@ -155,8 +155,8 @@ router.get('/forgot-password', async (request, response) => {
const renderData = {
input: request.cookies.input,
success_message: request.cookies.success_message,
error_message: request.cookies.error_message,
}
error_message: request.cookies.error_message
};
response.clearCookie('input', { domain: '.pretendo.network' });
@@ -172,7 +172,7 @@ router.post('/forgot-password', async (request, response) => {
await util.forgotPassword({
input,
hCaptchaResponse
})
});
response.clearCookie('input', { domain: '.pretendo.network' });
@@ -201,9 +201,9 @@ router.get('/connect/discord', requireLoginMiddleware, async (request, response)
tokens = await discordOAuth.tokenRequest({
code: request.query.code,
scope: 'identify guilds',
grantType: 'authorization_code',
grantType: 'authorization_code'
});
} catch (error) {
} catch (ignored) {
response.cookie('error_message', 'Invalid Discord authorization code. Please try again', { domain: '.pretendo.network' });
return response.redirect('/account');
}
@@ -291,7 +291,7 @@ router.get('/upgrade', requireLoginMiddleware, async (request, response) => {
renderData.tiers = products
.filter(product => product.active)
.sort((a, b) => +a.metadata.tier_level - +b.metadata.tier_level)
.map(product => {
.map((product) => {
const price = prices.find(price => price.id === product.default_price);
const perks = [];
@@ -309,7 +309,7 @@ router.get('/upgrade', requireLoginMiddleware, async (request, response) => {
name: product.name,
description: product.description,
perks,
price: (price.unit_amount / 100).toLocaleString('en-US', { style: 'currency', currency: 'USD' }),
price: (price.unit_amount / 100).toLocaleString('en-US', { style: 'currency', currency: 'USD' })
};
});
@@ -358,8 +358,8 @@ router.post('/stripe/checkout/:priceId', requireLoginMiddleware, async (request,
line_items: [
{
price: priceId,
quantity: 1,
},
quantity: 1
}
],
customer: customer.id,
mode: 'subscription',
@@ -391,9 +391,9 @@ router.post('/stripe/unsubscribe', requireLoginMiddleware, async (request, respo
const updateData = {
'connections.stripe.subscription_id': null,
'connections.stripe.price_id': null,
'connections.stripe.price_id': null,
'connections.stripe.tier_level': 0,
'connections.stripe.tier_name': null,
'connections.stripe.tier_name': null
};
if (pnid.get('access_level') < 2) {

View File

@@ -1,11 +1,11 @@
const { Router } = require('express');
const logger = require('../logger');
const router = new Router();
const fs = require('fs');
const path = require('path');
const { Router } = require('express');
const { marked } = require('marked');
const matter = require('gray-matter');
const logger = require('../logger');
const router = new Router();
const postList = () => {
const files = fs.readdirSync('blogposts');
@@ -23,7 +23,7 @@ const postList = () => {
const { data: postInfo } = matter(rawPost);
return {
slug,
postInfo,
postInfo
};
});
@@ -35,7 +35,7 @@ const postList = () => {
};
router.get('/', async (request, response) => {
const renderData = {
const renderData = {
postList
};
@@ -44,7 +44,6 @@ router.get('/', async (request, response) => {
// RSS feed
router.get('/feed.xml', async (request, response) => {
// Adds the pubDate and the cover_extension to the post array
const posts = postList().map((post) => {
post.postInfo.pubDate = new Date(post.postInfo.date).toUTCString();
@@ -60,10 +59,9 @@ router.get('/feed.xml', async (request, response) => {
});
router.get('/:slug', async (request, response, next) => {
const renderData = {
const renderData = {
layout: 'blog-opengraph',
postList,
postList
};
// Get the name of the post from the URL
@@ -73,13 +71,13 @@ router.get('/:slug', async (request, response, next) => {
let rawPost;
try {
rawPost = fs.readFileSync(path.join('blogposts', `${postName}.md`), 'utf-8');
} catch(err) {
} catch (err) {
logger.error(err);
next();
return;
}
// Convert the post info into JSON and separate it and the content
// eslint-disable-next-line prefer-const
let { data: postInfo, content } = matter(rawPost);
renderData.postInfo = postInfo;

View File

@@ -13,7 +13,7 @@ router.get('/', async (request, response) => {
router.get('/welcome', async (request, response) => {
const renderData = {
currentPage: 'welcome',
currentPage: 'welcome'
};
response.render('docs/welcome', renderData);
@@ -21,7 +21,7 @@ router.get('/welcome', async (request, response) => {
router.get('/install', async (request, response) => {
const renderData = {
currentPage: 'install',
currentPage: 'install'
};
response.render('docs/install', renderData);
@@ -29,11 +29,11 @@ router.get('/install', async (request, response) => {
router.get([
'/search', // TODO - Deprecate search page
'/errors',
'/errors'
], async (_request, response) => {
const renderData = {
errorList: JSON.stringify(errorList),
currentPage: 'errors',
currentPage: 'errors'
};
response.render('docs/search', renderData);
@@ -44,7 +44,7 @@ router.get('/error', async (_request, response) => {
});
router.get('/:page', async (request, response, next) => {
const renderData = {};
const renderData = {};
const locale = response.locals.localeString;
const pageName = request.params.page;
@@ -63,12 +63,12 @@ router.get('/:page', async (request, response, next) => {
router.get([
'/errors/:errorCode', // TODO - Deprecate "errors" route
'/error/:errorCode',
'/error/:errorCode'
], async (request, response, next) => {
const locale = response.locals.localeString;
const error = request.params.errorCode;
const [ sysmodule, errorCode ] = error.split('-');
const [sysmodule, errorCode] = error.split('-');
if (!errorCode) {
return next();

View File

@@ -1,10 +1,10 @@
const { Router } = require('express');
const router = new Router();
const { getGithubProjectsCache } = require('../cache');
const router = new Router();
router.get('/', async (request, response) => {
const renderData = {};
const renderData = {};
const githubProjectsCache = await getGithubProjectsCache();
@@ -48,7 +48,7 @@ router.get('/', async (request, response) => {
};
// Calculates individual completion percentages and progress states
githubProjectsCache.sections.forEach(section => {
githubProjectsCache.sections.forEach((section) => {
const { todo, in_progress, done } = section.cards;
// Calculates the completion percentage of the project, and sums it to the total
@@ -57,7 +57,7 @@ router.get('/', async (request, response) => {
const sectionTitle = `${section.title} [${Math.floor(sectionCompletionPercentage * 100)}%]`;
switch(sectionCompletionPercentage) {
switch (sectionCompletionPercentage) {
case 0:
totalProgress.cards.todo.push(sectionTitle);
break;

View File

@@ -1,10 +1,10 @@
const { Router } = require('express');
const router = new Router();
const { getGithubProjectsCache, getStripeDonationCache } = require('../cache');
const router = new Router();
router.get('/', async (request, response) => {
const renderData = {
const renderData = {
progressLists: await getGithubProjectsCache(),
donationCache: await getStripeDonationCache()
};

View File

@@ -8,55 +8,58 @@ const handlebars = require('express-handlebars');
const morgan = require('morgan');
const expressLocale = require('express-locale');
const cookieParser = require('cookie-parser');
//const Stripe = require('stripe');
// const Stripe = require('stripe');
const config = require('../config.json');
const redirectMiddleware = require('./middleware/redirect');
const renderDataMiddleware = require('./middleware/render-data');
const database = require('./database');
const util = require('./util');
const logger = require('./logger');
const config = require('../config.json');
const { http: { port } } = config;
const app = express();
//const stripe = new Stripe(config.stripe.secret_key);
// const stripe = new Stripe(config.stripe.secret_key);
logger.info('Setting up Middleware');
app.use(morgan('dev'));
//app.use(express.json());
app.use(express.json({ verify: (req, res, buf) => { req.rawBody = buf; } }));
// app.use(express.json());
app.use(express.json({
verify: (req, res, buf) => {
req.rawBody = buf;
}
}));
app.use(express.urlencoded({
extended: true
}));
app.use(cookieParser());
app.use(expressLocale({
'priority': ['cookie', 'accept-language', 'map', 'default'],
priority: ['cookie', 'accept-language', 'map', 'default'],
cookie: { name: 'preferredLocale' },
// Map unavailable regions to available locales from the same language
map: {
/* TODO: map more regions to the available locales */
en: 'en-US', 'en-AU': 'en-US', 'en-CA': 'en-US',
ar: 'ar-AR',
ca: 'ca-ES',
cs: 'cs-CZ',
cn: 'zh-CN',
de: 'de-DE',
nl: 'nl-NL',
es: 'es-ES',
fr: 'fr-FR', 'fr-CA': 'fr-FR', 'fr-CH': 'fr-FR',
fi: 'fi-FI',
it: 'it-IT', 'it-CH': 'it-IT',
ja: 'ja-JP',
kk: 'kk-KZ',
ko: 'ko-KR',
nb: 'nb-NO',
no: 'nb-NO',
pl: 'pl-PL',
pt: 'pt-BR',
ro: 'ro-RO',
ru: 'ru-RU',
sr: 'sr-RS',
tr: 'tr-TR',
uk: 'uk-UA',
'en': 'en-US', 'en-AU': 'en-US', 'en-CA': 'en-US',
'ar': 'ar-AR',
'ca': 'ca-ES',
'cs': 'cs-CZ',
'cn': 'zh-CN',
'de': 'de-DE',
'nl': 'nl-NL',
'es': 'es-ES',
'fr': 'fr-FR', 'fr-CA': 'fr-FR', 'fr-CH': 'fr-FR',
'fi': 'fi-FI',
'it': 'it-IT', 'it-CH': 'it-IT',
'ja': 'ja-JP',
'kk': 'kk-KZ',
'ko': 'ko-KR',
'nb': 'nb-NO',
'no': 'nb-NO',
'pl': 'pl-PL',
'pt': 'pt-BR',
'ro': 'ro-RO',
'ru': 'ru-RU',
'sr': 'sr-RS',
'tr': 'tr-TR',
'uk': 'uk-UA'
},
allowed: [
'en', 'en-US', 'en-GB', 'en-AU', 'en-CA',
@@ -84,7 +87,7 @@ app.use(expressLocale({
'uk', 'uk-UA',
'en@uwu'
],
'default': 'en-US'
default: 'en-US'
}));
app.use(redirectMiddleware);
app.use(renderDataMiddleware);
@@ -117,7 +120,6 @@ logger.info('Creating 404 status handler');
// This works because it is the last router created
// Meaning the request could not find a valid router
app.use((request, response) => {
const fullUrl = util.fullUrl(request);
response.render('404');
});

View File

@@ -1,9 +1,9 @@
const Stripe = require('stripe');
const config = require('../config.json');
const mailer = require('./mailer');
const util = require('./util');
const database = require('./database');
const logger = require('./logger');
const config = require('../config.json');
const stripe = new Stripe(config.stripe.secret_key);
@@ -95,12 +95,12 @@ async function handleStripeEvent(event) {
if (subscription.status === 'canceled' && currentSubscriptionId && subscription.id !== currentSubscriptionId) {
// Canceling old subscription, do nothing but update webhook date and remove Discord roles
if (product.metadata.beta === 'true') {
util.removeDiscordMemberTesterRole(discordId).catch(error => {
util.removeDiscordMemberTesterRole(discordId).catch((error) => {
logger.error(`Error removing user Discord tester role | ${customer.id}, ${discordId}, ${pid} | - ${error.message}`);
});
}
util.removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch(error => {
util.removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch((error) => {
logger.error(`Error removing user Discord supporter role | ${customer.id}, ${discordId}, ${pid}, ${product.metadata.discord_role_id} | - ${error.message}`);
});
@@ -123,7 +123,7 @@ async function handleStripeEvent(event) {
'connections.stripe.price_id': subscription.status === 'active' ? subscription.plan.id : null,
'connections.stripe.tier_level': subscription.status === 'active' ? Number(product.metadata.tier_level || 0) : 0,
'connections.stripe.tier_name': subscription.status === 'active' ? product.name : null,
'connections.stripe.latest_webhook_timestamp': event.created,
'connections.stripe.latest_webhook_timestamp': event.created
};
if (product.metadata.beta === 'true') {
@@ -133,7 +133,7 @@ async function handleStripeEvent(event) {
updateData.server_access_level = 'test';
}
util.assignDiscordMemberTesterRole(discordId).catch(error => {
util.assignDiscordMemberTesterRole(discordId).catch((error) => {
logger.error(`Error assigning user Discord tester role | ${customer.id}, ${discordId}, ${pid} | - ${error.message}`);
});
} else {
@@ -144,7 +144,7 @@ async function handleStripeEvent(event) {
updateData.server_access_level = 'prod';
}
util.removeDiscordMemberTesterRole(discordId).catch(error => {
util.removeDiscordMemberTesterRole(discordId).catch((error) => {
logger.error(`Error removing user Discord tester role | ${customer.id}, ${discordId}, ${pid} | - ${error.message}`);
});
}
@@ -188,7 +188,7 @@ async function handleStripeEvent(event) {
logger.error(`Error sending email | ${customer.id}, ${customer.email}, ${pid} | - ${error.message}`);
}
util.assignDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch(error => {
util.assignDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch((error) => {
logger.error(`Error assigning user Discord supporter role | ${customer.id}, ${discordId}, ${pid}, ${product.metadata.discord_role_id} | - ${error.message}`);
});
@@ -215,7 +215,7 @@ async function handleStripeEvent(event) {
logger.error(`Error sending email | ${customer.id}, ${customer.email}, ${pid} | - ${error.message}`);
}
util.removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch(error => {
util.removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch((error) => {
logger.error(`Error removing user Discord supporter role | ${customer.id}, ${discordId}, ${pid}, ${product.metadata.discord_role_id} | - ${error.message}`);
});
@@ -242,7 +242,7 @@ async function handleStripeEvent(event) {
logger.error(`Error sending email | ${customer.id}, ${customer.email}, ${pid} | - ${error.message}`);
}
util.removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch(error => {
util.removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch((error) => {
logger.error(`Error removing user Discord supporter role | ${customer.id}, ${discordId}, ${pid}, ${product.metadata.discord_role_id} | - ${error.message}`);
});
@@ -269,7 +269,7 @@ async function handleStripeEvent(event) {
logger.error(`Error sending email | ${customer.id}, ${customer.email}, ${pid} | - ${error.message}`);
}
util.removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch(error => {
util.removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch((error) => {
logger.error(`Error removing user Discord supporter role | ${customer.id}, ${discordId}, ${pid}, ${product.metadata.discord_role_id} | - ${error.message}`);
});

View File

@@ -1,13 +1,13 @@
const path = require('path');
const crypto = require('crypto');
const fs = require('fs-extra');
const got = require('got');
const crypto = require('crypto');
const { marked } = require('marked');
const { REST: DiscordRest } = require('@discordjs/rest');
const { Routes: DiscordRoutes } = require('discord-api-types/v10');
const merge = require('lodash.merge');
const logger = require('./logger');
const config = require('../config.json');
const logger = require('./logger');
const baseLocale = require(`${__dirname}/../locales/en_US.json`);
const discordRest = new DiscordRest({ version: '10' }).setToken(config.discord.bot_token);
@@ -34,14 +34,13 @@ function getLocale(locale) {
}
function getRawDocs(locale, subpath, pageName) {
const localePath = path.join(__dirname, '../docs', locale.replace('-', '_'), subpath, `${pageName}.md`);
const defaultPath = path.join(__dirname, '../docs', 'en_US', subpath, `${pageName}.md`);
if (fs.existsSync(localePath)) {
return {
content: parseDocs(fs.readFileSync(localePath, 'utf8')),
MDLocale: locale,
MDLocale: locale
};
} else if (fs.existsSync(defaultPath)) {
return {
@@ -77,7 +76,7 @@ function apiGetRequest(path, headers) {
responseType: 'json',
throwHttpErrors: false,
https: {
rejectUnauthorized: false, // Needed for self-signed certificates on localhost testing
rejectUnauthorized: false // Needed for self-signed certificates on localhost testing
},
headers
});
@@ -88,7 +87,7 @@ function apiPostRequest(path, headers, json) {
responseType: 'json',
throwHttpErrors: false,
https: {
rejectUnauthorized: false, // Needed for self-signed certificates on localhost testing
rejectUnauthorized: false // Needed for self-signed certificates on localhost testing
},
headers,
json
@@ -99,7 +98,7 @@ function apiDeleteRequest(path, headers, json) {
return got.delete(`${config.api_base}${path}`, {
throwHttpErrors: false,
https: {
rejectUnauthorized: false, // Needed for self-signed certificates on localhost testing
rejectUnauthorized: false // Needed for self-signed certificates on localhost testing
},
headers,
json
@@ -162,9 +161,9 @@ async function refreshLogin(request, response) {
request.cookies.token_type = tokens.token_type;
}
async function getUserAccountData(request, response, fromRetry=false) {
async function getUserAccountData(request, response, fromRetry = false) {
const apiResponse = await apiGetRequest('/v1/user', {
'Authorization': `${request.cookies.token_type} ${request.cookies.access_token}`
Authorization: `${request.cookies.token_type} ${request.cookies.access_token}`
});
if (apiResponse.statusCode !== 200 && fromRetry === true) {
@@ -180,9 +179,9 @@ async function getUserAccountData(request, response, fromRetry=false) {
return apiResponse.body;
}
async function updateDiscordConnection(discordUser, request, response, fromRetry=false) {
async function updateDiscordConnection(discordUser, request, response, fromRetry = false) {
const apiResponse = await apiPostRequest('/v1/connections/add/discord', {
'Authorization': `${request.cookies.token_type} ${request.cookies.access_token}`
Authorization: `${request.cookies.token_type} ${request.cookies.access_token}`
}, {
data: {
id: discordUser.id
@@ -202,7 +201,7 @@ async function updateDiscordConnection(discordUser, request, response, fromRetry
async function removeDiscordConnection(request, response, fromRetry = false) {
const apiResponse = await apiDeleteRequest('/v1/connections/remove/discord', {
'Authorization': `${request.cookies.token_type} ${request.cookies.access_token}`
Authorization: `${request.cookies.token_type} ${request.cookies.access_token}`
});
if (apiResponse.statusCode !== 200 && fromRetry === true) {