mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-09-04 21:58:59 +08:00
backend imports
This commit is contained in:
parent
795d3b7a8d
commit
d715198829
80 changed files with 353 additions and 339 deletions
|
@ -1,7 +1,7 @@
|
|||
import { MonkeyResponse } from "../../utils/monkey-response";
|
||||
import { buildMonkeyMail } from "../../utils/monkey-mail";
|
||||
import * as UserDAL from "../../dal/user";
|
||||
import * as ReportDAL from "../../dal/report";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response.js";
|
||||
import { buildMonkeyMail } from "../../utils/monkey-mail.js";
|
||||
import * as UserDAL from "../../dal/user.js";
|
||||
import * as ReportDAL from "../../dal/report.js";
|
||||
|
||||
export async function test(): Promise<MonkeyResponse> {
|
||||
return new MonkeyResponse("OK");
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import _ from "lodash";
|
||||
import { randomBytes } from "crypto";
|
||||
import { hash } from "bcrypt";
|
||||
import * as ApeKeysDAL from "../../dal/ape-keys";
|
||||
import MonkeyError from "../../utils/error";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response";
|
||||
import { base64UrlEncode } from "../../utils/misc";
|
||||
import * as ApeKeysDAL from "../../dal/ape-keys.js";
|
||||
import MonkeyError from "../../utils/error.js";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response.js";
|
||||
import { base64UrlEncode } from "../../utils/misc.js";
|
||||
import { ObjectId } from "mongodb";
|
||||
import { ApeKey } from "@monkeytype/shared-types";
|
||||
import { PlaySoundOnError } from "@monkeytype/shared-types/config";
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import * as ConfigDAL from "../../dal/config";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response";
|
||||
import * as ConfigDAL from "../../dal/config.js";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response.js";
|
||||
|
||||
export async function getConfig(
|
||||
req: MonkeyTypes.Request
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import * as Configuration from "../../init/configuration";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response";
|
||||
import { CONFIGURATION_FORM_SCHEMA } from "../../constants/base-configuration";
|
||||
import * as Configuration from "../../init/configuration.js";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response.js";
|
||||
import { CONFIGURATION_FORM_SCHEMA } from "../../constants/base-configuration.js";
|
||||
|
||||
export async function getConfiguration(
|
||||
_req: MonkeyTypes.Request
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
import { MonkeyResponse } from "../../utils/monkey-response";
|
||||
import * as UserDal from "../../dal/user";
|
||||
import FirebaseAdmin from "../../init/firebase-admin";
|
||||
import Logger from "../../utils/logger";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response.js";
|
||||
import * as UserDal from "../../dal/user.js";
|
||||
import FirebaseAdmin from "../../init/firebase-admin.js";
|
||||
import Logger from "../../utils/logger.js";
|
||||
import * as DateUtils from "date-fns";
|
||||
import { UTCDate } from "@date-fns/utc";
|
||||
import * as ResultDal from "../../dal/result";
|
||||
import { roundTo2 } from "../../utils/misc";
|
||||
import * as ResultDal from "../../dal/result.js";
|
||||
import { roundTo2 } from "../../utils/misc.js";
|
||||
import { ObjectId } from "mongodb";
|
||||
import * as LeaderboardDal from "../../dal/leaderboards";
|
||||
import * as LeaderboardDal from "../../dal/leaderboards.js";
|
||||
import { isNumber } from "lodash";
|
||||
import MonkeyError from "../../utils/error";
|
||||
import MonkeyError from "../../utils/error.js";
|
||||
|
||||
type GenerateDataOptions = {
|
||||
firstTestTimestamp: Date;
|
||||
|
|
|
@ -3,12 +3,12 @@ import {
|
|||
getCurrentDayTimestamp,
|
||||
MILLISECONDS_IN_DAY,
|
||||
getCurrentWeekTimestamp,
|
||||
} from "../../utils/misc";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response";
|
||||
import * as LeaderboardsDAL from "../../dal/leaderboards";
|
||||
import MonkeyError from "../../utils/error";
|
||||
import * as DailyLeaderboards from "../../utils/daily-leaderboards";
|
||||
import * as WeeklyXpLeaderboard from "../../services/weekly-xp-leaderboard";
|
||||
} from "../../utils/misc.js";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response.js";
|
||||
import * as LeaderboardsDAL from "../../dal/leaderboards.js";
|
||||
import MonkeyError from "../../utils/error.js";
|
||||
import * as DailyLeaderboards from "../../utils/daily-leaderboards.js";
|
||||
import * as WeeklyXpLeaderboard from "../../services/weekly-xp-leaderboard.js";
|
||||
|
||||
export async function getLeaderboard(
|
||||
req: MonkeyTypes.Request
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import * as PresetDAL from "../../dal/preset";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response";
|
||||
import * as PresetDAL from "../../dal/preset.js";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response.js";
|
||||
|
||||
export async function getPresets(
|
||||
req: MonkeyTypes.Request
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import * as PsaDAL from "../../dal/psa";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response";
|
||||
import * as PsaDAL from "../../dal/psa.js";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response.js";
|
||||
|
||||
export async function getPsas(): Promise<MonkeyResponse> {
|
||||
const data = await PsaDAL.get();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import * as PublicDAL from "../../dal/public";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response";
|
||||
import * as PublicDAL from "../../dal/public.js";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response.js";
|
||||
|
||||
export async function getPublicSpeedHistogram(
|
||||
req: MonkeyTypes.Request
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
import _ from "lodash";
|
||||
import { v4 as uuidv4 } from "uuid";
|
||||
import { getPartialUser, updateQuoteRatings } from "../../dal/user";
|
||||
import * as ReportDAL from "../../dal/report";
|
||||
import * as NewQuotesDAL from "../../dal/new-quotes";
|
||||
import * as QuoteRatingsDAL from "../../dal/quote-ratings";
|
||||
import MonkeyError from "../../utils/error";
|
||||
import { verify } from "../../utils/captcha";
|
||||
import Logger from "../../utils/logger";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response";
|
||||
import { getPartialUser, updateQuoteRatings } from "../../dal/user.js";
|
||||
import * as ReportDAL from "../../dal/report.js";
|
||||
import * as NewQuotesDAL from "../../dal/new-quotes.js";
|
||||
import * as QuoteRatingsDAL from "../../dal/quote-ratings.js";
|
||||
import MonkeyError from "../../utils/error.js";
|
||||
import { verify } from "../../utils/captcha.js";
|
||||
import Logger from "../../utils/logger.js";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response.js";
|
||||
import { ObjectId } from "mongodb";
|
||||
|
||||
async function verifyCaptcha(captcha: string): Promise<void> {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import * as ResultDAL from "../../dal/result";
|
||||
import * as PublicDAL from "../../dal/public";
|
||||
import * as ResultDAL from "../../dal/result.js";
|
||||
import * as PublicDAL from "../../dal/public.js";
|
||||
import {
|
||||
getCurrentDayTimestamp,
|
||||
getStartOfDayTimestamp,
|
||||
|
@ -8,34 +8,37 @@ import {
|
|||
roundTo2,
|
||||
stdDev,
|
||||
stringToNumberOrDefault,
|
||||
} from "../../utils/misc";
|
||||
} from "../../utils/misc.js";
|
||||
import objectHash from "object-hash";
|
||||
import Logger from "../../utils/logger";
|
||||
import Logger from "../../utils/logger.js";
|
||||
import "dotenv/config";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response";
|
||||
import MonkeyError from "../../utils/error";
|
||||
import { areFunboxesCompatible, isTestTooShort } from "../../utils/validation";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response.js";
|
||||
import MonkeyError from "../../utils/error.js";
|
||||
import {
|
||||
areFunboxesCompatible,
|
||||
isTestTooShort,
|
||||
} from "../../utils/validation.js";
|
||||
import {
|
||||
implemented as anticheatImplemented,
|
||||
validateResult,
|
||||
validateKeys,
|
||||
} from "../../anticheat/index";
|
||||
import MonkeyStatusCodes from "../../constants/monkey-status-codes";
|
||||
} from "../../anticheat/index.js";
|
||||
import MonkeyStatusCodes from "../../constants/monkey-status-codes.js";
|
||||
import {
|
||||
incrementResult,
|
||||
incrementDailyLeaderboard,
|
||||
} from "../../utils/prometheus";
|
||||
import GeorgeQueue from "../../queues/george-queue";
|
||||
import { getDailyLeaderboard } from "../../utils/daily-leaderboards";
|
||||
import AutoRoleList from "../../constants/auto-roles";
|
||||
import * as UserDAL from "../../dal/user";
|
||||
import { buildMonkeyMail } from "../../utils/monkey-mail";
|
||||
import FunboxList from "../../constants/funbox-list";
|
||||
} from "../../utils/prometheus.js";
|
||||
import GeorgeQueue from "../../queues/george-queue.js";
|
||||
import { getDailyLeaderboard } from "../../utils/daily-leaderboards.js";
|
||||
import AutoRoleList from "../../constants/auto-roles.js";
|
||||
import * as UserDAL from "../../dal/user.js";
|
||||
import { buildMonkeyMail } from "../../utils/monkey-mail.js";
|
||||
import FunboxList from "../../constants/funbox-list.js";
|
||||
import _ from "lodash";
|
||||
import * as WeeklyXpLeaderboard from "../../services/weekly-xp-leaderboard";
|
||||
import * as WeeklyXpLeaderboard from "../../services/weekly-xp-leaderboard.js";
|
||||
import { UAParser } from "ua-parser-js";
|
||||
import { canFunboxGetPb } from "../../utils/pb";
|
||||
import { buildDbResult } from "../../utils/result";
|
||||
import { canFunboxGetPb } from "../../utils/pb.js";
|
||||
import { buildDbResult } from "../../utils/result.js";
|
||||
|
||||
try {
|
||||
if (!anticheatImplemented()) throw new Error("undefined");
|
||||
|
|
|
@ -1,34 +1,34 @@
|
|||
import _ from "lodash";
|
||||
import * as UserDAL from "../../dal/user";
|
||||
import MonkeyError from "../../utils/error";
|
||||
import Logger from "../../utils/logger";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response";
|
||||
import * as DiscordUtils from "../../utils/discord";
|
||||
import * as UserDAL from "../../dal/user.js";
|
||||
import MonkeyError from "../../utils/error.js";
|
||||
import Logger from "../../utils/logger.js";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response.js";
|
||||
import * as DiscordUtils from "../../utils/discord.js";
|
||||
import {
|
||||
MILLISECONDS_IN_DAY,
|
||||
buildAgentLog,
|
||||
isDevEnvironment,
|
||||
sanitizeString,
|
||||
} from "../../utils/misc";
|
||||
import GeorgeQueue from "../../queues/george-queue";
|
||||
} from "../../utils/misc.js";
|
||||
import GeorgeQueue from "../../queues/george-queue.js";
|
||||
import admin, { FirebaseError } from "firebase-admin";
|
||||
import { deleteAllApeKeys } from "../../dal/ape-keys";
|
||||
import { deleteAllPresets } from "../../dal/preset";
|
||||
import { deleteAll as deleteAllResults } from "../../dal/result";
|
||||
import { deleteConfig } from "../../dal/config";
|
||||
import { verify } from "../../utils/captcha";
|
||||
import * as LeaderboardsDAL from "../../dal/leaderboards";
|
||||
import { purgeUserFromDailyLeaderboards } from "../../utils/daily-leaderboards";
|
||||
import { deleteAllApeKeys } from "../../dal/ape-keys.js";
|
||||
import { deleteAllPresets } from "../../dal/preset.js";
|
||||
import { deleteAll as deleteAllResults } from "../../dal/result.js";
|
||||
import { deleteConfig } from "../../dal/config.js";
|
||||
import { verify } from "../../utils/captcha.js";
|
||||
import * as LeaderboardsDAL from "../../dal/leaderboards.js";
|
||||
import { purgeUserFromDailyLeaderboards } from "../../utils/daily-leaderboards.js";
|
||||
import { v4 as uuidv4 } from "uuid";
|
||||
import { ObjectId } from "mongodb";
|
||||
import * as ReportDAL from "../../dal/report";
|
||||
import emailQueue from "../../queues/email-queue";
|
||||
import FirebaseAdmin from "../../init/firebase-admin";
|
||||
import * as AuthUtil from "../../utils/auth";
|
||||
import * as ReportDAL from "../../dal/report.js";
|
||||
import emailQueue from "../../queues/email-queue.js";
|
||||
import FirebaseAdmin from "../../init/firebase-admin.js";
|
||||
import * as AuthUtil from "../../utils/auth.js";
|
||||
|
||||
import * as Dates from "date-fns";
|
||||
import { UTCDateMini } from "@date-fns/utc";
|
||||
import * as BlocklistDal from "../../dal/blocklist";
|
||||
import * as BlocklistDal from "../../dal/blocklist.js";
|
||||
|
||||
async function verifyCaptcha(captcha: string): Promise<void> {
|
||||
if (!(await verify(captcha))) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { MonkeyResponse } from "../../utils/monkey-response";
|
||||
import GeorgeQueue from "../../queues/george-queue";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response.js";
|
||||
import GeorgeQueue from "../../queues/george-queue.js";
|
||||
|
||||
export async function githubRelease(
|
||||
req: MonkeyTypes.Request
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
// import joi from "joi";
|
||||
import { Router } from "express";
|
||||
import { authenticateRequest } from "../../middlewares/auth";
|
||||
import * as AdminController from "../controllers/admin";
|
||||
import { adminLimit } from "../../middlewares/rate-limit";
|
||||
import { sendForgotPasswordEmail, toggleBan } from "../controllers/user";
|
||||
import { authenticateRequest } from "../../middlewares/auth.js";
|
||||
import * as AdminController from "../controllers/admin.js";
|
||||
import { adminLimit } from "../../middlewares/rate-limit.js";
|
||||
import { sendForgotPasswordEmail, toggleBan } from "../controllers/user.js";
|
||||
import joi from "joi";
|
||||
import { validate } from "../../middlewares/configuration";
|
||||
import { checkIfUserIsAdmin } from "../../middlewares/permission";
|
||||
import { asyncHandler } from "../../middlewares/utility";
|
||||
import { validateRequest } from "../../middlewares/validation";
|
||||
import { validate } from "../../middlewares/configuration.js";
|
||||
import { checkIfUserIsAdmin } from "../../middlewares/permission.js";
|
||||
import { asyncHandler } from "../../middlewares/utility.js";
|
||||
import { validateRequest } from "../../middlewares/validation.js";
|
||||
|
||||
const router = Router();
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
import joi from "joi";
|
||||
import { Router } from "express";
|
||||
import { authenticateRequest } from "../../middlewares/auth";
|
||||
import * as ApeKeyController from "../controllers/ape-key";
|
||||
import * as RateLimit from "../../middlewares/rate-limit";
|
||||
import { checkUserPermissions } from "../../middlewares/permission";
|
||||
import { validate } from "../../middlewares/configuration";
|
||||
import { asyncHandler } from "../../middlewares/utility";
|
||||
import { validateRequest } from "../../middlewares/validation";
|
||||
import { authenticateRequest } from "../../middlewares/auth.js";
|
||||
import * as ApeKeyController from "../controllers/ape-key.js";
|
||||
import * as RateLimit from "../../middlewares/rate-limit.js";
|
||||
import { checkUserPermissions } from "../../middlewares/permission.js";
|
||||
import { validate } from "../../middlewares/configuration.js";
|
||||
import { asyncHandler } from "../../middlewares/utility.js";
|
||||
import { validateRequest } from "../../middlewares/validation.js";
|
||||
|
||||
const apeKeyNameSchema = joi
|
||||
.string()
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import { Router } from "express";
|
||||
import { authenticateRequest } from "../../middlewares/auth";
|
||||
import configSchema from "../schemas/config-schema";
|
||||
import * as ConfigController from "../controllers/config";
|
||||
import * as RateLimit from "../../middlewares/rate-limit";
|
||||
import { asyncHandler } from "../../middlewares/utility";
|
||||
import { validateRequest } from "../../middlewares/validation";
|
||||
import { authenticateRequest } from "../../middlewares/auth.js";
|
||||
import configSchema from "../schemas/config-schema.js";
|
||||
import * as ConfigController from "../controllers/config.js";
|
||||
import * as RateLimit from "../../middlewares/rate-limit.js";
|
||||
import { asyncHandler } from "../../middlewares/utility.js";
|
||||
import { validateRequest } from "../../middlewares/validation.js";
|
||||
|
||||
const router = Router();
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import joi from "joi";
|
||||
import { Router } from "express";
|
||||
import * as ConfigurationController from "../controllers/configuration";
|
||||
import { authenticateRequest } from "../../middlewares/auth";
|
||||
import { adminLimit } from "../../middlewares/rate-limit";
|
||||
import { asyncHandler, useInProduction } from "../../middlewares/utility";
|
||||
import { checkIfUserIsAdmin } from "../../middlewares/permission";
|
||||
import { validateRequest } from "../../middlewares/validation";
|
||||
import * as ConfigurationController from "../controllers/configuration.js";
|
||||
import { authenticateRequest } from "../../middlewares/auth.js";
|
||||
import { adminLimit } from "../../middlewares/rate-limit.js";
|
||||
import { asyncHandler, useInProduction } from "../../middlewares/utility.js";
|
||||
import { checkIfUserIsAdmin } from "../../middlewares/permission.js";
|
||||
import { validateRequest } from "../../middlewares/validation.js";
|
||||
|
||||
const router = Router();
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import { Router } from "express";
|
||||
import joi from "joi";
|
||||
import { createTestData } from "../controllers/dev";
|
||||
import { isDevEnvironment } from "../../utils/misc";
|
||||
import { validate } from "../../middlewares/configuration";
|
||||
import { validateRequest } from "../../middlewares/validation";
|
||||
import { asyncHandler } from "../../middlewares/utility";
|
||||
import { createTestData } from "../controllers/dev.js";
|
||||
import { isDevEnvironment } from "../../utils/misc.js";
|
||||
import { validate } from "../../middlewares/configuration.js";
|
||||
import { validateRequest } from "../../middlewares/validation.js";
|
||||
import { asyncHandler } from "../../middlewares/utility.js";
|
||||
|
||||
const router = Router();
|
||||
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
import _ from "lodash";
|
||||
import psas from "./psas";
|
||||
import publicStats from "./public";
|
||||
import users from "./users";
|
||||
import psas from "./psas.js";
|
||||
import publicStats from "./public.js";
|
||||
import users from "./users.js";
|
||||
import { join } from "path";
|
||||
import quotes from "./quotes";
|
||||
import configs from "./configs";
|
||||
import results from "./results";
|
||||
import presets from "./presets";
|
||||
import apeKeys from "./ape-keys";
|
||||
import admin from "./admin";
|
||||
import webhooks from "./webhooks";
|
||||
import dev from "./dev";
|
||||
import configuration from "./configuration";
|
||||
import { version } from "../../version";
|
||||
import leaderboards from "./leaderboards";
|
||||
import addSwaggerMiddlewares from "./swagger";
|
||||
import { asyncHandler } from "../../middlewares/utility";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response";
|
||||
import { recordClientVersion } from "../../utils/prometheus";
|
||||
import quotes from "./quotes.js";
|
||||
import configs from "./configs.js";
|
||||
import results from "./results.js";
|
||||
import presets from "./presets.js";
|
||||
import apeKeys from "./ape-keys.js";
|
||||
import admin from "./admin.js";
|
||||
import webhooks from "./webhooks.js";
|
||||
import dev from "./dev.js";
|
||||
import configuration from "./configuration.js";
|
||||
import { version } from "../../version.js";
|
||||
import leaderboards from "./leaderboards.js";
|
||||
import addSwaggerMiddlewares from "./swagger.js";
|
||||
import { asyncHandler } from "../../middlewares/utility.js";
|
||||
import { MonkeyResponse } from "../../utils/monkey-response.js";
|
||||
import { recordClientVersion } from "../../utils/prometheus.js";
|
||||
import {
|
||||
Application,
|
||||
NextFunction,
|
||||
|
@ -25,9 +25,9 @@ import {
|
|||
Router,
|
||||
static as expressStatic,
|
||||
} from "express";
|
||||
import { isDevEnvironment } from "../../utils/misc";
|
||||
import { getLiveConfiguration } from "../../init/configuration";
|
||||
import Logger from "../../utils/logger";
|
||||
import { isDevEnvironment } from "../../utils/misc.js";
|
||||
import { getLiveConfiguration } from "../../init/configuration.js";
|
||||
import Logger from "../../utils/logger.js";
|
||||
|
||||
const pathOverride = process.env["API_PATH_OVERRIDE"];
|
||||
const BASE_ROUTE = pathOverride !== undefined ? `/${pathOverride}` : "";
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
import joi from "joi";
|
||||
import { Router } from "express";
|
||||
import * as RateLimit from "../../middlewares/rate-limit";
|
||||
import { withApeRateLimiter } from "../../middlewares/ape-rate-limit";
|
||||
import { authenticateRequest } from "../../middlewares/auth";
|
||||
import * as LeaderboardController from "../controllers/leaderboard";
|
||||
import { validate } from "../../middlewares/configuration";
|
||||
import { validateRequest } from "../../middlewares/validation";
|
||||
import { asyncHandler } from "../../middlewares/utility";
|
||||
import * as RateLimit from "../../middlewares/rate-limit.js";
|
||||
import { withApeRateLimiter } from "../../middlewares/ape-rate-limit.js";
|
||||
import { authenticateRequest } from "../../middlewares/auth.js";
|
||||
import * as LeaderboardController from "../controllers/leaderboard.js";
|
||||
import { validate } from "../../middlewares/configuration.js";
|
||||
import { validateRequest } from "../../middlewares/validation.js";
|
||||
import { asyncHandler } from "../../middlewares/utility.js";
|
||||
|
||||
const BASE_LEADERBOARD_VALIDATION_SCHEMA = {
|
||||
language: joi
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import joi from "joi";
|
||||
import { authenticateRequest } from "../../middlewares/auth";
|
||||
import * as PresetController from "../controllers/preset";
|
||||
import * as RateLimit from "../../middlewares/rate-limit";
|
||||
import configSchema from "../schemas/config-schema";
|
||||
import { authenticateRequest } from "../../middlewares/auth.js";
|
||||
import * as PresetController from "../controllers/preset.js";
|
||||
import * as RateLimit from "../../middlewares/rate-limit.js";
|
||||
import configSchema from "../schemas/config-schema.js";
|
||||
import { Router } from "express";
|
||||
import { asyncHandler } from "../../middlewares/utility";
|
||||
import { validateRequest } from "../../middlewares/validation";
|
||||
import { asyncHandler } from "../../middlewares/utility.js";
|
||||
import { validateRequest } from "../../middlewares/validation.js";
|
||||
|
||||
const router = Router();
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { Router } from "express";
|
||||
import * as PsaController from "../controllers/psa";
|
||||
import * as RateLimit from "../../middlewares/rate-limit";
|
||||
import { asyncHandler } from "../../middlewares/utility";
|
||||
import * as PsaController from "../controllers/psa.js";
|
||||
import * as RateLimit from "../../middlewares/rate-limit.js";
|
||||
import { asyncHandler } from "../../middlewares/utility.js";
|
||||
|
||||
const router = Router();
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import { Router } from "express";
|
||||
import * as PublicController from "../controllers/public";
|
||||
import * as RateLimit from "../../middlewares/rate-limit";
|
||||
import { asyncHandler } from "../../middlewares/utility";
|
||||
import * as PublicController from "../controllers/public.js";
|
||||
import * as RateLimit from "../../middlewares/rate-limit.js";
|
||||
import { asyncHandler } from "../../middlewares/utility.js";
|
||||
import joi from "joi";
|
||||
import { validateRequest } from "../../middlewares/validation";
|
||||
import { validateRequest } from "../../middlewares/validation.js";
|
||||
|
||||
const GET_MODE_STATS_VALIDATION_SCHEMA = {
|
||||
language: joi
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
import joi from "joi";
|
||||
import { authenticateRequest } from "../../middlewares/auth";
|
||||
import { authenticateRequest } from "../../middlewares/auth.js";
|
||||
import { Router } from "express";
|
||||
import * as QuoteController from "../controllers/quote";
|
||||
import * as RateLimit from "../../middlewares/rate-limit";
|
||||
import { checkUserPermissions } from "../../middlewares/permission";
|
||||
import { asyncHandler } from "../../middlewares/utility";
|
||||
import { validate } from "../../middlewares/configuration";
|
||||
import { validateRequest } from "../../middlewares/validation";
|
||||
import * as QuoteController from "../controllers/quote.js";
|
||||
import * as RateLimit from "../../middlewares/rate-limit.js";
|
||||
import { checkUserPermissions } from "../../middlewares/permission.js";
|
||||
import { asyncHandler } from "../../middlewares/utility.js";
|
||||
import { validate } from "../../middlewares/configuration.js";
|
||||
import { validateRequest } from "../../middlewares/validation.js";
|
||||
|
||||
const router = Router();
|
||||
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
import * as ResultController from "../controllers/result";
|
||||
import resultSchema from "../schemas/result-schema";
|
||||
import * as RateLimit from "../../middlewares/rate-limit";
|
||||
import * as ResultController from "../controllers/result.js";
|
||||
import resultSchema from "../schemas/result-schema.js";
|
||||
import * as RateLimit from "../../middlewares/rate-limit.js";
|
||||
import { Router } from "express";
|
||||
import { authenticateRequest } from "../../middlewares/auth";
|
||||
import { authenticateRequest } from "../../middlewares/auth.js";
|
||||
import joi from "joi";
|
||||
import { withApeRateLimiter } from "../../middlewares/ape-rate-limit";
|
||||
import { validateRequest } from "../../middlewares/validation";
|
||||
import { asyncHandler } from "../../middlewares/utility";
|
||||
import { validate } from "../../middlewares/configuration";
|
||||
import { withApeRateLimiter } from "../../middlewares/ape-rate-limit.js";
|
||||
import { validateRequest } from "../../middlewares/validation.js";
|
||||
import { asyncHandler } from "../../middlewares/utility.js";
|
||||
import { validate } from "../../middlewares/configuration.js";
|
||||
|
||||
const router = Router();
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ import {
|
|||
} from "swagger-ui-express";
|
||||
import publicSwaggerSpec from "../../documentation/public-swagger.json";
|
||||
import internalSwaggerSpec from "../../documentation/internal-swagger.json";
|
||||
import { isDevEnvironment } from "../../utils/misc";
|
||||
import { isDevEnvironment } from "../../utils/misc.js";
|
||||
|
||||
const SWAGGER_UI_OPTIONS = {
|
||||
customCss: ".swagger-ui .topbar { display: none } .try-out { display: none }",
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
import joi from "joi";
|
||||
import { authenticateRequest } from "../../middlewares/auth";
|
||||
import { authenticateRequest } from "../../middlewares/auth.js";
|
||||
import { Router } from "express";
|
||||
import * as UserController from "../controllers/user";
|
||||
import * as RateLimit from "../../middlewares/rate-limit";
|
||||
import { withApeRateLimiter } from "../../middlewares/ape-rate-limit";
|
||||
import { containsProfanity, isUsernameValid } from "../../utils/validation";
|
||||
import filterSchema from "../schemas/filter-schema";
|
||||
import { asyncHandler } from "../../middlewares/utility";
|
||||
import { validate } from "../../middlewares/configuration";
|
||||
import { validateRequest } from "../../middlewares/validation";
|
||||
import { checkUserPermissions } from "../../middlewares/permission";
|
||||
import * as UserController from "../controllers/user.js";
|
||||
import * as RateLimit from "../../middlewares/rate-limit.js";
|
||||
import { withApeRateLimiter } from "../../middlewares/ape-rate-limit.js";
|
||||
import { containsProfanity, isUsernameValid } from "../../utils/validation.js";
|
||||
import filterSchema from "../schemas/filter-schema.js";
|
||||
import { asyncHandler } from "../../middlewares/utility.js";
|
||||
import { validate } from "../../middlewares/configuration.js";
|
||||
import { validateRequest } from "../../middlewares/validation.js";
|
||||
import { checkUserPermissions } from "../../middlewares/permission.js";
|
||||
|
||||
const router = Router();
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
// import joi from "joi";
|
||||
import { Router } from "express";
|
||||
import { authenticateGithubWebhook } from "../../middlewares/auth";
|
||||
import { asyncHandler } from "../../middlewares/utility";
|
||||
import { webhookLimit } from "../../middlewares/rate-limit";
|
||||
import { githubRelease } from "../controllers/webhooks";
|
||||
import { authenticateGithubWebhook } from "../../middlewares/auth.js";
|
||||
import { asyncHandler } from "../../middlewares/utility.js";
|
||||
import { webhookLimit } from "../../middlewares/rate-limit.js";
|
||||
import { githubRelease } from "../controllers/webhooks.js";
|
||||
|
||||
const router = Router();
|
||||
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
import cors from "cors";
|
||||
import helmet from "helmet";
|
||||
import addApiRoutes from "./api/routes";
|
||||
import addApiRoutes from "./api/routes/index.js";
|
||||
import express, { urlencoded, json } from "express";
|
||||
import contextMiddleware from "./middlewares/context";
|
||||
import errorHandlingMiddleware from "./middlewares/error";
|
||||
import contextMiddleware from "./middlewares/context.js";
|
||||
import errorHandlingMiddleware from "./middlewares/error.js";
|
||||
import {
|
||||
badAuthRateLimiterHandler,
|
||||
rootRateLimiter,
|
||||
} from "./middlewares/rate-limit";
|
||||
} from "./middlewares/rate-limit.js";
|
||||
|
||||
function buildApp(): express.Application {
|
||||
const app = express();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import * as db from "../init/db";
|
||||
import * as db from "../init/db.js";
|
||||
|
||||
export async function isAdmin(uid: string): Promise<boolean> {
|
||||
const doc = await db.collection("admin-uids").findOne({ uid });
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import _ from "lodash";
|
||||
import * as db from "../init/db";
|
||||
import * as db from "../init/db.js";
|
||||
import {
|
||||
Filter,
|
||||
ObjectId,
|
||||
|
@ -7,7 +7,7 @@ import {
|
|||
Collection,
|
||||
WithId,
|
||||
} from "mongodb";
|
||||
import MonkeyError from "../utils/error";
|
||||
import MonkeyError from "../utils/error.js";
|
||||
|
||||
export const getApeKeysCollection = (): Collection<
|
||||
WithId<MonkeyTypes.ApeKeyDB>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { Collection } from "mongodb";
|
||||
import * as db from "../init/db";
|
||||
import * as db from "../init/db.js";
|
||||
import { createHash } from "crypto";
|
||||
|
||||
type BlocklistEntryProperties = Pick<
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { UpdateResult } from "mongodb";
|
||||
import * as db from "../init/db";
|
||||
import * as db from "../init/db.js";
|
||||
import _ from "lodash";
|
||||
|
||||
const configLegacyProperties = [
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import * as db from "../init/db";
|
||||
import Logger from "../utils/logger";
|
||||
import * as db from "../init/db.js";
|
||||
import Logger from "../utils/logger.js";
|
||||
import { performance } from "perf_hooks";
|
||||
import { setLeaderboard } from "../utils/prometheus";
|
||||
import { isDevEnvironment } from "../utils/misc";
|
||||
import { getCachedConfiguration } from "../init/configuration";
|
||||
import { setLeaderboard } from "../utils/prometheus.js";
|
||||
import { isDevEnvironment } from "../utils/misc.js";
|
||||
import { getCachedConfiguration } from "../init/configuration.js";
|
||||
|
||||
export async function get(
|
||||
mode: string,
|
||||
|
|
|
@ -3,11 +3,11 @@ import { ObjectId } from "mongodb";
|
|||
import path from "path";
|
||||
import { existsSync, writeFileSync } from "fs";
|
||||
import { readFile } from "node:fs/promises";
|
||||
import * as db from "../init/db";
|
||||
import MonkeyError from "../utils/error";
|
||||
import * as db from "../init/db.js";
|
||||
import MonkeyError from "../utils/error.js";
|
||||
import { compareTwoStrings } from "string-similarity";
|
||||
|
||||
const PATH_TO_REPO = "../../../../monkeytype-new-quotes";
|
||||
const PATH_TO_REPO = "../../../../monkeytype-new-quotes.js";
|
||||
|
||||
let git;
|
||||
try {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import MonkeyError from "../utils/error";
|
||||
import * as db from "../init/db";
|
||||
import MonkeyError from "../utils/error.js";
|
||||
import * as db from "../init/db.js";
|
||||
import { ObjectId, Filter, Collection, WithId } from "mongodb";
|
||||
|
||||
const MAX_PRESETS = 10;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import * as db from "../init/db";
|
||||
import * as db from "../init/db.js";
|
||||
|
||||
type PSA = MonkeyTypes.WithObjectId<SharedTypes.PSA>;
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import * as db from "../init/db";
|
||||
import { roundTo2 } from "../utils/misc";
|
||||
import MonkeyError from "../utils/error";
|
||||
import * as db from "../init/db.js";
|
||||
import { roundTo2 } from "../utils/misc.js";
|
||||
import MonkeyError from "../utils/error.js";
|
||||
|
||||
type PublicTypingStatsDB = SharedTypes.PublicTypingStats & { _id: "stats" };
|
||||
type PublicSpeedStatsDB = {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import * as db from "../init/db";
|
||||
import * as db from "../init/db.js";
|
||||
|
||||
export async function submit(
|
||||
quoteId: number,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import MonkeyError from "../utils/error";
|
||||
import * as db from "../init/db";
|
||||
import MonkeyError from "../utils/error.js";
|
||||
import * as db from "../init/db.js";
|
||||
|
||||
const COLLECTION_NAME = "reports";
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import _ from "lodash";
|
||||
import { Collection, DeleteResult, ObjectId, UpdateResult } from "mongodb";
|
||||
import MonkeyError from "../utils/error";
|
||||
import * as db from "../init/db";
|
||||
import MonkeyError from "../utils/error.js";
|
||||
import * as db from "../init/db.js";
|
||||
|
||||
import { getUser, getTags } from "./user";
|
||||
import { getUser, getTags } from "./user.js";
|
||||
|
||||
type DBResult = MonkeyTypes.WithObjectId<
|
||||
SharedTypes.DBResult<SharedTypes.Config.Mode>
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
import _ from "lodash";
|
||||
import { containsProfanity, isUsernameValid } from "../utils/validation";
|
||||
import { canFunboxGetPb, checkAndUpdatePb } from "../utils/pb";
|
||||
import * as db from "../init/db";
|
||||
import MonkeyError from "../utils/error";
|
||||
import { containsProfanity, isUsernameValid } from "../utils/validation.js";
|
||||
import { canFunboxGetPb, checkAndUpdatePb } from "../utils/pb.js";
|
||||
import * as db from "../init/db.js";
|
||||
import MonkeyError from "../utils/error.js";
|
||||
import { Collection, ObjectId, Long, UpdateFilter, Filter } from "mongodb";
|
||||
import Logger from "../utils/logger";
|
||||
import { flattenObjectDeep, isToday, isYesterday } from "../utils/misc";
|
||||
import { getCachedConfiguration } from "../init/configuration";
|
||||
import Logger from "../utils/logger.js";
|
||||
import { flattenObjectDeep, isToday, isYesterday } from "../utils/misc.js";
|
||||
import { getCachedConfiguration } from "../init/configuration.js";
|
||||
import { getDayOfYear } from "date-fns";
|
||||
import { UTCDate } from "@date-fns/utc";
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import _ from "lodash";
|
||||
import * as db from "./db";
|
||||
import * as db from "./db.js";
|
||||
import { ObjectId } from "mongodb";
|
||||
import Logger from "../utils/logger";
|
||||
import { identity } from "../utils/misc";
|
||||
import { BASE_CONFIGURATION } from "../constants/base-configuration";
|
||||
import Logger from "../utils/logger.js";
|
||||
import { identity } from "../utils/misc.js";
|
||||
import { BASE_CONFIGURATION } from "../constants/base-configuration.js";
|
||||
|
||||
const CONFIG_UPDATE_INTERVAL = 10 * 60 * 1000; // 10 Minutes
|
||||
|
||||
|
|
|
@ -6,8 +6,8 @@ import {
|
|||
MongoClientOptions,
|
||||
WithId,
|
||||
} from "mongodb";
|
||||
import MonkeyError from "../utils/error";
|
||||
import Logger from "../utils/logger";
|
||||
import MonkeyError from "../utils/error.js";
|
||||
import Logger from "../utils/logger.js";
|
||||
|
||||
let db: Db;
|
||||
let mongoClient: MongoClient;
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
import * as nodemailer from "nodemailer";
|
||||
import Logger from "../utils/logger";
|
||||
import Logger from "../utils/logger.js";
|
||||
import fs from "fs";
|
||||
import { join } from "path";
|
||||
import mjml2html from "mjml";
|
||||
import mustache from "mustache";
|
||||
import { recordEmail } from "../utils/prometheus";
|
||||
import { EmailTaskContexts, EmailType } from "../queues/email-queue";
|
||||
import { isDevEnvironment } from "../utils/misc";
|
||||
import { recordEmail } from "../utils/prometheus.js";
|
||||
import { EmailTaskContexts, EmailType } from "../queues/email-queue.js";
|
||||
import { isDevEnvironment } from "../utils/misc.js";
|
||||
|
||||
type EmailMetadata = {
|
||||
subject: string;
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import admin, { ServiceAccount } from "firebase-admin";
|
||||
import Logger from "../utils/logger";
|
||||
import Logger from "../utils/logger.js";
|
||||
import { readFileSync, existsSync } from "fs";
|
||||
import MonkeyError from "../utils/error";
|
||||
import MonkeyError from "../utils/error.js";
|
||||
import path from "path";
|
||||
import { isDevEnvironment } from "../utils/misc";
|
||||
import { isDevEnvironment } from "../utils/misc.js";
|
||||
|
||||
const SERVICE_ACCOUNT_PATH = path.join(
|
||||
__dirname,
|
||||
|
|
|
@ -2,8 +2,8 @@ import fs from "fs";
|
|||
import _ from "lodash";
|
||||
import { join } from "path";
|
||||
import IORedis from "ioredis";
|
||||
import Logger from "../utils/logger";
|
||||
import { isDevEnvironment } from "../utils/misc";
|
||||
import Logger from "../utils/logger.js";
|
||||
import { isDevEnvironment } from "../utils/misc.js";
|
||||
|
||||
let connection: IORedis.Redis;
|
||||
let connected = false;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { CronJob } from "cron";
|
||||
import * as db from "../init/db";
|
||||
import Logger from "../utils/logger";
|
||||
import { getCachedConfiguration } from "../init/configuration";
|
||||
import * as db from "../init/db.js";
|
||||
import Logger from "../utils/logger.js";
|
||||
import { getCachedConfiguration } from "../init/configuration.js";
|
||||
|
||||
const CRON_SCHEDULE = "0 0 0 * * *";
|
||||
const LOG_MAX_AGE_DAYS = 30;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import updateLeaderboards from "./update-leaderboards";
|
||||
import deleteOldLogs from "./delete-old-logs";
|
||||
import logCollectionSizes from "./log-collection-sizes";
|
||||
import logQueueSizes from "./log-queue-sizes";
|
||||
import updateLeaderboards from "./update-leaderboards.js";
|
||||
import deleteOldLogs from "./delete-old-logs.js";
|
||||
import logCollectionSizes from "./log-collection-sizes.js";
|
||||
import logQueueSizes from "./log-queue-sizes.js";
|
||||
|
||||
export default [
|
||||
updateLeaderboards,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { CronJob } from "cron";
|
||||
import * as db from "../init/db";
|
||||
import * as Prometheus from "../utils/prometheus";
|
||||
import * as db from "../init/db.js";
|
||||
import * as Prometheus from "../utils/prometheus.js";
|
||||
|
||||
const CRON_SCHEDULE = "0 */5 * * * *";
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { CronJob } from "cron";
|
||||
import Queues from "../queues/index";
|
||||
import { setQueueLength } from "../utils/prometheus";
|
||||
import Queues from "../queues/index.js";
|
||||
import { setQueueLength } from "../utils/prometheus.js";
|
||||
|
||||
const CRON_SCHEDULE = "0 */5 * * * *";
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { CronJob } from "cron";
|
||||
import GeorgeQueue from "../queues/george-queue";
|
||||
import * as LeaderboardsDAL from "../dal/leaderboards";
|
||||
import { getCachedConfiguration } from "../init/configuration";
|
||||
import GeorgeQueue from "../queues/george-queue.js";
|
||||
import * as LeaderboardsDAL from "../dal/leaderboards.js";
|
||||
import { getCachedConfiguration } from "../init/configuration.js";
|
||||
|
||||
const CRON_SCHEDULE = "30 14/15 * * * *";
|
||||
const RECENT_AGE_MINUTES = 10;
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import MonkeyError from "../utils/error";
|
||||
import MonkeyError from "../utils/error.js";
|
||||
import { Response, NextFunction, RequestHandler } from "express";
|
||||
import statuses from "../constants/monkey-status-codes";
|
||||
import statuses from "../constants/monkey-status-codes.js";
|
||||
import rateLimit, {
|
||||
RateLimitRequestHandler,
|
||||
Options,
|
||||
} from "express-rate-limit";
|
||||
import { isDevEnvironment } from "../utils/misc";
|
||||
import { isDevEnvironment } from "../utils/misc.js";
|
||||
|
||||
const REQUEST_MULTIPLIER = isDevEnvironment() ? 1 : 1;
|
||||
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
import { compare } from "bcrypt";
|
||||
import { getApeKey, updateLastUsedOn } from "../dal/ape-keys";
|
||||
import MonkeyError from "../utils/error";
|
||||
import { verifyIdToken } from "../utils/auth";
|
||||
import { base64UrlDecode, isDevEnvironment } from "../utils/misc";
|
||||
import { getApeKey, updateLastUsedOn } from "../dal/ape-keys.js";
|
||||
import MonkeyError from "../utils/error.js";
|
||||
import { verifyIdToken } from "../utils/auth.js";
|
||||
import { base64UrlDecode, isDevEnvironment } from "../utils/misc.js";
|
||||
import { NextFunction, Response, Handler } from "express";
|
||||
import statuses from "../constants/monkey-status-codes";
|
||||
import statuses from "../constants/monkey-status-codes.js";
|
||||
import {
|
||||
incrementAuth,
|
||||
recordAuthTime,
|
||||
recordRequestCountry,
|
||||
// recordRequestForUid,
|
||||
} from "../utils/prometheus";
|
||||
} from "../utils/prometheus.js";
|
||||
import crypto from "crypto";
|
||||
import { performance } from "perf_hooks";
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { Response, NextFunction, RequestHandler } from "express";
|
||||
import MonkeyError from "../utils/error";
|
||||
import MonkeyError from "../utils/error.js";
|
||||
|
||||
export type ValidationOptions<T> = {
|
||||
criteria: (data: T) => boolean;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { getCachedConfiguration } from "../init/configuration";
|
||||
import { getCachedConfiguration } from "../init/configuration.js";
|
||||
import { Response, NextFunction } from "express";
|
||||
|
||||
async function contextMiddleware(
|
||||
|
|
|
@ -1,17 +1,20 @@
|
|||
import * as db from "../init/db";
|
||||
import * as db from "../init/db.js";
|
||||
import { v4 as uuidv4 } from "uuid";
|
||||
import Logger from "../utils/logger";
|
||||
import MonkeyError from "../utils/error";
|
||||
import { incrementBadAuth } from "./rate-limit";
|
||||
import Logger from "../utils/logger.js";
|
||||
import MonkeyError from "../utils/error.js";
|
||||
import { incrementBadAuth } from "./rate-limit.js";
|
||||
import { NextFunction, Response } from "express";
|
||||
import { MonkeyResponse, handleMonkeyResponse } from "../utils/monkey-response";
|
||||
import {
|
||||
MonkeyResponse,
|
||||
handleMonkeyResponse,
|
||||
} from "../utils/monkey-response.js";
|
||||
import {
|
||||
recordClientErrorByVersion,
|
||||
recordServerErrorByVersion,
|
||||
} from "../utils/prometheus";
|
||||
import { isDevEnvironment } from "../utils/misc";
|
||||
} from "../utils/prometheus.js";
|
||||
import { isDevEnvironment } from "../utils/misc.js";
|
||||
import { ObjectId } from "mongodb";
|
||||
import { version } from "../version";
|
||||
import { version } from "../version.js";
|
||||
|
||||
type DBError = {
|
||||
_id: ObjectId;
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import _ from "lodash";
|
||||
import MonkeyError from "../utils/error";
|
||||
import MonkeyError from "../utils/error.js";
|
||||
import { Response, NextFunction, RequestHandler } from "express";
|
||||
import { getUser } from "../dal/user";
|
||||
import { isAdmin } from "../dal/admin-uids";
|
||||
import { ValidationOptions } from "./configuration";
|
||||
import { getUser } from "../dal/user.js";
|
||||
import { isAdmin } from "../dal/admin-uids.js";
|
||||
import { ValidationOptions } from "./configuration.js";
|
||||
|
||||
/**
|
||||
* Check if the user is an admin before handling request.
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import _ from "lodash";
|
||||
import MonkeyError from "../utils/error";
|
||||
import MonkeyError from "../utils/error.js";
|
||||
import { Response, NextFunction } from "express";
|
||||
import { RateLimiterMemory } from "rate-limiter-flexible";
|
||||
import rateLimit, { Options } from "express-rate-limit";
|
||||
import { isDevEnvironment } from "../utils/misc";
|
||||
import { isDevEnvironment } from "../utils/misc.js";
|
||||
|
||||
const REQUEST_MULTIPLIER = isDevEnvironment() ? 100 : 1;
|
||||
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
import _ from "lodash";
|
||||
import { Response, NextFunction, RequestHandler } from "express";
|
||||
import { handleMonkeyResponse, MonkeyResponse } from "../utils/monkey-response";
|
||||
import { isDevEnvironment } from "../utils/misc";
|
||||
import {
|
||||
handleMonkeyResponse,
|
||||
MonkeyResponse,
|
||||
} from "../utils/monkey-response.js";
|
||||
import { isDevEnvironment } from "../utils/misc.js";
|
||||
|
||||
export const emptyMiddleware = (
|
||||
_req: MonkeyTypes.Request,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import _ from "lodash";
|
||||
import joi from "joi";
|
||||
import MonkeyError from "../utils/error";
|
||||
import MonkeyError from "../utils/error.js";
|
||||
import { Response, NextFunction, RequestHandler } from "express";
|
||||
|
||||
type ValidationSchema = {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { MonkeyQueue } from "./monkey-queue";
|
||||
import { MonkeyQueue } from "./monkey-queue.js";
|
||||
|
||||
const QUEUE_NAME = "email-tasks";
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { LbEntryWithRank } from "../utils/daily-leaderboards";
|
||||
import { MonkeyQueue } from "./monkey-queue";
|
||||
import { LbEntryWithRank } from "../utils/daily-leaderboards.js";
|
||||
import { MonkeyQueue } from "./monkey-queue.js";
|
||||
|
||||
const QUEUE_NAME = "george-tasks";
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import LaterQueue from "./later-queue";
|
||||
import GeorgeQueue from "./george-queue";
|
||||
import EmailQueue from "./email-queue";
|
||||
import LaterQueue from "./later-queue.js";
|
||||
import GeorgeQueue from "./george-queue.js";
|
||||
import EmailQueue from "./email-queue.js";
|
||||
|
||||
export default [GeorgeQueue, LaterQueue, EmailQueue];
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
import LRUCache from "lru-cache";
|
||||
import Logger from "../utils/logger";
|
||||
import { MonkeyQueue } from "./monkey-queue";
|
||||
import { getCurrentDayTimestamp, getCurrentWeekTimestamp } from "../utils/misc";
|
||||
import Logger from "../utils/logger.js";
|
||||
import { MonkeyQueue } from "./monkey-queue.js";
|
||||
import {
|
||||
getCurrentDayTimestamp,
|
||||
getCurrentWeekTimestamp,
|
||||
} from "../utils/misc.js";
|
||||
|
||||
const QUEUE_NAME = "later";
|
||||
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
import "dotenv/config";
|
||||
import * as db from "./init/db";
|
||||
import jobs from "./jobs";
|
||||
import { getLiveConfiguration } from "./init/configuration";
|
||||
import app from "./app";
|
||||
import * as db from "./init/db.js";
|
||||
import jobs from "./jobs/index.js";
|
||||
import { getLiveConfiguration } from "./init/configuration.js";
|
||||
import app from "./app.js";
|
||||
import { Server } from "http";
|
||||
import { version } from "./version";
|
||||
import { recordServerVersion } from "./utils/prometheus";
|
||||
import * as RedisClient from "./init/redis";
|
||||
import queues from "./queues";
|
||||
import workers from "./workers";
|
||||
import Logger from "./utils/logger";
|
||||
import * as EmailClient from "./init/email-client";
|
||||
import { init as initFirebaseAdmin } from "./init/firebase-admin";
|
||||
import { version } from "./version.js";
|
||||
import { recordServerVersion } from "./utils/prometheus.js";
|
||||
import * as RedisClient from "./init/redis.js";
|
||||
import queues from "./queues/index.js";
|
||||
import workers from "./workers/index.js";
|
||||
import Logger from "./utils/logger.js";
|
||||
import * as EmailClient from "./init/email-client.js";
|
||||
import { init as initFirebaseAdmin } from "./init/firebase-admin.js";
|
||||
|
||||
import { createIndicies as leaderboardDbSetup } from "./dal/leaderboards";
|
||||
import { createIndicies as blocklistDbSetup } from "./dal/blocklist";
|
||||
import { createIndicies as leaderboardDbSetup } from "./dal/leaderboards.js";
|
||||
import { createIndicies as blocklistDbSetup } from "./dal/blocklist.js";
|
||||
import { monotest } from "@monkeytype/mono-test";
|
||||
|
||||
monotest();
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import * as RedisClient from "../init/redis";
|
||||
import LaterQueue from "../queues/later-queue";
|
||||
import { getCurrentWeekTimestamp } from "../utils/misc";
|
||||
import * as RedisClient from "../init/redis.js";
|
||||
import LaterQueue from "../queues/later-queue.js";
|
||||
import { getCurrentWeekTimestamp } from "../utils/misc.js";
|
||||
|
||||
type InternalWeeklyXpLeaderboardEntry = {
|
||||
uid: string;
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import FirebaseAdmin from "./../init/firebase-admin";
|
||||
import FirebaseAdmin from "./../init/firebase-admin.js";
|
||||
import LRUCache from "lru-cache";
|
||||
import {
|
||||
recordTokenCacheAccess,
|
||||
setTokenCacheLength,
|
||||
setTokenCacheSize,
|
||||
} from "./prometheus";
|
||||
} from "./prometheus.js";
|
||||
import { DecodedIdToken, UserRecord } from "firebase-admin/auth";
|
||||
|
||||
const tokenCache = new LRUCache<string, DecodedIdToken>({
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import fetch from "node-fetch";
|
||||
import { isDevEnvironment } from "./misc";
|
||||
import { isDevEnvironment } from "./misc.js";
|
||||
|
||||
type CaptchaData = {
|
||||
success: boolean;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import _ from "lodash";
|
||||
import * as RedisClient from "../init/redis";
|
||||
import LaterQueue from "../queues/later-queue";
|
||||
import { getCurrentDayTimestamp, matchesAPattern, kogascore } from "./misc";
|
||||
import * as RedisClient from "../init/redis.js";
|
||||
import LaterQueue from "../queues/later-queue.js";
|
||||
import { getCurrentDayTimestamp, matchesAPattern, kogascore } from "./misc.js";
|
||||
|
||||
type DailyLeaderboardEntry = {
|
||||
uid: string;
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
import fetch from "node-fetch";
|
||||
import { isDevEnvironment } from "./misc";
|
||||
import * as RedisClient from "../init/redis";
|
||||
import { isDevEnvironment } from "./misc.js";
|
||||
import * as RedisClient from "../init/redis.js";
|
||||
import { randomBytes } from "crypto";
|
||||
import MonkeyError from "./error";
|
||||
import MonkeyError from "./error.js";
|
||||
|
||||
const BASE_URL = "https://discord.com/api";
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { v4 as uuidv4 } from "uuid";
|
||||
import { isDevEnvironment } from "./misc";
|
||||
import { isDevEnvironment } from "./misc.js";
|
||||
|
||||
class MonkeyError extends Error {
|
||||
status: number;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import * as db from "../init/db";
|
||||
import * as db from "../init/db.js";
|
||||
import chalk from "chalk";
|
||||
import { format, createLogger, transports, Logger } from "winston";
|
||||
import { resolve } from "path";
|
||||
|
@ -9,7 +9,7 @@ const warningColor = chalk.yellow.bold;
|
|||
const successColor = chalk.green.bold;
|
||||
const infoColor = chalk.white;
|
||||
|
||||
const logFolderPath = process.env["LOG_FOLDER_PATH"] ?? "./logs";
|
||||
const logFolderPath = process.env["LOG_FOLDER_PATH"] ?? "./logs.js";
|
||||
const maxLogSize = parseInt(process.env["LOG_FILE_MAX_SIZE"] ?? "10485760");
|
||||
|
||||
type Log = {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { Response } from "express";
|
||||
import { isCustomCode } from "../constants/monkey-status-codes";
|
||||
import { isCustomCode } from "../constants/monkey-status-codes.js";
|
||||
|
||||
//TODO FIX ANYS
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import _ from "lodash";
|
||||
import FunboxList from "../constants/funbox-list";
|
||||
import FunboxList from "../constants/funbox-list.js";
|
||||
|
||||
type CheckAndUpdatePbResult = {
|
||||
isPb: boolean;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import _ from "lodash";
|
||||
import { replaceHomoglyphs } from "../constants/homoglyphs";
|
||||
import { profanities } from "../constants/profanities";
|
||||
import { intersect, sanitizeString } from "./misc";
|
||||
import { default as FunboxList } from "../constants/funbox-list";
|
||||
import { replaceHomoglyphs } from "../constants/homoglyphs.js";
|
||||
import { profanities } from "../constants/profanities.js";
|
||||
import { intersect, sanitizeString } from "./misc.js";
|
||||
import { default as FunboxList } from "../constants/funbox-list.js";
|
||||
|
||||
export function inRange(value: number, min: number, max: number): boolean {
|
||||
return value >= min && value <= max;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { join } from "path";
|
||||
import { isDevEnvironment, padNumbers } from "./utils/misc";
|
||||
import { isDevEnvironment, padNumbers } from "./utils/misc.js";
|
||||
import { readFileSync, writeFileSync, existsSync } from "fs";
|
||||
|
||||
const SERVER_VERSION_FILE_PATH = join(__dirname, "./server.version");
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
import _ from "lodash";
|
||||
import IORedis from "ioredis";
|
||||
import { Worker, Job, ConnectionOptions } from "bullmq";
|
||||
import Logger from "../utils/logger";
|
||||
import Logger from "../utils/logger.js";
|
||||
import EmailQueue, {
|
||||
EmailTaskContexts,
|
||||
EmailType,
|
||||
} from "../queues/email-queue";
|
||||
import { sendEmail } from "../init/email-client";
|
||||
import { recordTimeToCompleteJob } from "../utils/prometheus";
|
||||
} from "../queues/email-queue.js";
|
||||
import { sendEmail } from "../init/email-client.js";
|
||||
import { recordTimeToCompleteJob } from "../utils/prometheus.js";
|
||||
|
||||
async function jobHandler(job: Job): Promise<void> {
|
||||
const type: EmailType = job.data.type;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import LaterWorker from "./later-worker";
|
||||
import EmailWorker from "./email-worker";
|
||||
import LaterWorker from "./later-worker.js";
|
||||
import EmailWorker from "./email-worker.js";
|
||||
|
||||
export default [LaterWorker, EmailWorker];
|
||||
|
|
|
@ -1,19 +1,23 @@
|
|||
import _ from "lodash";
|
||||
import IORedis from "ioredis";
|
||||
import { Worker, Job, ConnectionOptions } from "bullmq";
|
||||
import Logger from "../utils/logger";
|
||||
import { addToInboxBulk } from "../dal/user";
|
||||
import GeorgeQueue from "../queues/george-queue";
|
||||
import { buildMonkeyMail } from "../utils/monkey-mail";
|
||||
import { DailyLeaderboard } from "../utils/daily-leaderboards";
|
||||
import { getCachedConfiguration } from "../init/configuration";
|
||||
import { formatSeconds, getOrdinalNumberString, mapRange } from "../utils/misc";
|
||||
import Logger from "../utils/logger.js";
|
||||
import { addToInboxBulk } from "../dal/user.js";
|
||||
import GeorgeQueue from "../queues/george-queue.js";
|
||||
import { buildMonkeyMail } from "../utils/monkey-mail.js";
|
||||
import { DailyLeaderboard } from "../utils/daily-leaderboards.js";
|
||||
import { getCachedConfiguration } from "../init/configuration.js";
|
||||
import {
|
||||
formatSeconds,
|
||||
getOrdinalNumberString,
|
||||
mapRange,
|
||||
} from "../utils/misc.js";
|
||||
import LaterQueue, {
|
||||
LaterTask,
|
||||
LaterTaskContexts,
|
||||
LaterTaskType,
|
||||
} from "../queues/later-queue";
|
||||
import { recordTimeToCompleteJob } from "../utils/prometheus";
|
||||
} from "../queues/later-queue.js";
|
||||
import { recordTimeToCompleteJob } from "../utils/prometheus.js";
|
||||
import { WeeklyXpLeaderboard } from "../services/weekly-xp-leaderboard.js";
|
||||
|
||||
async function handleDailyLeaderboardResults(
|
||||
|
|
Loading…
Add table
Reference in a new issue