Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion backend/__tests__/__testData__/auth.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Configuration } from "@monkeytype/contracts/schemas/configuration";
import { Configuration } from "@monkeytype/schemas/configuration";
import { randomBytes } from "crypto";
import { hash } from "bcrypt";
import { ObjectId } from "mongodb";
Expand Down
2 changes: 1 addition & 1 deletion backend/__tests__/api/controllers/config.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,8 @@ describe("ConfigController", () => {
expect(body).toStrictEqual({
message: "Invalid request data schema",
validationErrors: [
`"autoSwitchTheme" Expected boolean, received string`,
`"confidenceMode" Invalid enum value. Expected 'off' | 'on' | 'max', received 'pretty'`,
`"autoSwitchTheme" Expected boolean, received string`,
],
});

Expand Down
2 changes: 1 addition & 1 deletion backend/__tests__/api/controllers/configuration.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
CONFIGURATION_FORM_SCHEMA,
} from "../../../src/constants/base-configuration";
import * as Configuration from "../../../src/init/configuration";
import type { Configuration as ConfigurationType } from "@monkeytype/contracts/schemas/configuration";
import type { Configuration as ConfigurationType } from "@monkeytype/schemas/configuration";
import { ObjectId } from "mongodb";
import * as Misc from "../../../src/utils/misc";
import * as AdminUuids from "../../../src/dal/admin-uids";
Expand Down
2 changes: 1 addition & 1 deletion backend/__tests__/api/controllers/leaderboard.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
mockAuthenticateWithApeKey,
mockBearerAuthentication,
} from "../../__testData__/auth";
import { XpLeaderboardEntry } from "@monkeytype/contracts/schemas/leaderboards";
import { XpLeaderboardEntry } from "@monkeytype/schemas/leaderboards";

const mockApp = request(app);
const configuration = Configuration.getCachedConfiguration();
Expand Down
6 changes: 3 additions & 3 deletions backend/__tests__/api/controllers/preset.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -249,8 +249,8 @@ describe("PresetController", () => {
expect(body).toStrictEqual({
message: "Invalid request data schema",
validationErrors: [
`"config.autoSwitchTheme" Expected boolean, received string`,
`"config.confidenceMode" Invalid enum value. Expected 'off' | 'on' | 'max', received 'pretty'`,
`"config.autoSwitchTheme" Expected boolean, received string`,
`"config" Unrecognized key(s) in object: 'extra'`,
`Unrecognized key(s) in object: '_id', 'extra'`,
],
Expand Down Expand Up @@ -427,9 +427,9 @@ describe("PresetController", () => {
expect(body).toStrictEqual({
message: "Invalid request data schema",
validationErrors: [
`"settingGroups.0" Invalid enum value. Expected 'test' | 'behavior' | 'input' | 'sound' | 'caret' | 'appearance' | 'theme' | 'hideElements' | 'ads' | 'hidden', received 'mappers'`,
`"config.autoSwitchTheme" Expected boolean, received string`,
`"settingGroups.0" Invalid enum value. Expected 'test' | 'behavior' | 'input' | 'sound' | 'caret' | 'appearance' | 'theme' | 'hideElements' | 'hidden' | 'ads', received 'mappers'`,
`"config.confidenceMode" Invalid enum value. Expected 'off' | 'on' | 'max', received 'pretty'`,
`"config.autoSwitchTheme" Expected boolean, received string`,
`"config" Unrecognized key(s) in object: 'extra'`,
`Unrecognized key(s) in object: 'extra'`,
],
Expand Down
2 changes: 1 addition & 1 deletion backend/__tests__/api/controllers/quotes.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import * as ReportDal from "../../../src/dal/report";
import * as Captcha from "../../../src/utils/captcha";
import { ObjectId } from "mongodb";
import _ from "lodash";
import { ApproveQuote } from "@monkeytype/contracts/schemas/quotes";
import { ApproveQuote } from "@monkeytype/schemas/quotes";
import { mockBearerAuthentication } from "../../__testData__/auth";

const mockApp = request(app);
Expand Down
6 changes: 3 additions & 3 deletions backend/__tests__/api/controllers/user.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,17 @@ import { FirebaseError } from "firebase-admin";
import * as ApeKeysDal from "../../../src/dal/ape-keys";
import * as LogDal from "../../../src/dal/logs";
import { ObjectId } from "mongodb";
import { PersonalBest } from "@monkeytype/contracts/schemas/shared";
import { PersonalBest } from "@monkeytype/schemas/shared";
import { pb } from "../../dal/leaderboards.spec";
import {
mockAuthenticateWithApeKey,
mockBearerAuthentication,
} from "../../__testData__/auth";
import { randomUUID } from "node:crypto";
import _ from "lodash";
import { MonkeyMail, UserStreak } from "@monkeytype/contracts/schemas/users";
import { MonkeyMail, UserStreak } from "@monkeytype/schemas/users";
import MonkeyError, { isFirebaseError } from "../../../src/utils/error";
import { LeaderboardEntry } from "@monkeytype/contracts/schemas/leaderboards";
import { LeaderboardEntry } from "@monkeytype/schemas/leaderboards";
import * as WeeklyXpLeaderboard from "../../../src/services/weekly-xp-leaderboard";

const mockApp = request(app);
Expand Down
2 changes: 1 addition & 1 deletion backend/__tests__/dal/leaderboards.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import * as LeaderboardsDal from "../../src/dal/leaderboards";
import * as PublicDal from "../../src/dal/public";
import * as Configuration from "../../src/init/configuration";
import type { DBLeaderboardEntry } from "../../src/dal/leaderboards";
import type { PersonalBest } from "@monkeytype/contracts/schemas/shared";
import type { PersonalBest } from "@monkeytype/schemas/shared";
const configuration = Configuration.getCachedConfiguration();

import * as DB from "../../src/init/db";
Expand Down
9 changes: 3 additions & 6 deletions backend/__tests__/dal/user.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@ import _ from "lodash";
import * as UserDAL from "../../src/dal/user";
import * as UserTestData from "../__testData__/users";
import { ObjectId } from "mongodb";
import { MonkeyMail, ResultFilters } from "@monkeytype/contracts/schemas/users";
import {
PersonalBest,
PersonalBests,
} from "@monkeytype/contracts/schemas/shared";
import { CustomThemeColors } from "@monkeytype/contracts/schemas/configs";
import { MonkeyMail, ResultFilters } from "@monkeytype/schemas/users";
import { PersonalBest, PersonalBests } from "@monkeytype/schemas/shared";
import { CustomThemeColors } from "@monkeytype/schemas/configs";

const mockPersonalBest = {
acc: 1,
Expand Down
2 changes: 1 addition & 1 deletion backend/__tests__/middlewares/auth.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import crypto from "crypto";
import {
EndpointMetadata,
RequestAuthenticationOptions,
} from "@monkeytype/contracts/schemas/api";
} from "@monkeytype/schemas/api";
import * as Prometheus from "../../src/utils/prometheus";
import { TsRestRequestWithContext } from "../../src/api/types";

Expand Down
2 changes: 1 addition & 1 deletion backend/__tests__/middlewares/configuration.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { RequireConfiguration } from "@monkeytype/contracts/require-configuration/index";
import { verifyRequiredConfiguration } from "../../src/middlewares/configuration";
import { Configuration } from "@monkeytype/contracts/schemas/configuration";
import { Configuration } from "@monkeytype/schemas/configuration";
import { Response } from "express";
import MonkeyError from "../../src/utils/error";
import { TsRestRequest } from "../../src/api/types";
Expand Down
2 changes: 1 addition & 1 deletion backend/__tests__/middlewares/permission.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Response } from "express";
import { verifyPermissions } from "../../src/middlewares/permission";
import { EndpointMetadata } from "@monkeytype/contracts/schemas/api";
import { EndpointMetadata } from "@monkeytype/schemas/api";
import * as Misc from "../../src/utils/misc";
import * as AdminUids from "../../src/dal/admin-uids";
import * as UserDal from "../../src/dal/user";
Expand Down
2 changes: 1 addition & 1 deletion backend/__tests__/utils/daily-leaderboards.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Mode } from "@monkeytype/contracts/schemas/shared";
import { Mode } from "@monkeytype/schemas/shared";
import { getDailyLeaderboard } from "../../src/utils/daily-leaderboards";

const dailyLeaderboardsConfig = {
Expand Down
6 changes: 3 additions & 3 deletions backend/__tests__/utils/pb.spec.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import _ from "lodash";
import * as pb from "../../src/utils/pb";
import { Mode, PersonalBests } from "@monkeytype/contracts/schemas/shared";
import { Result } from "@monkeytype/contracts/schemas/results";
import { FunboxName } from "@monkeytype/contracts/schemas/configs";
import { Mode, PersonalBests } from "@monkeytype/schemas/shared";
import { Result } from "@monkeytype/schemas/results";
import { FunboxName } from "@monkeytype/schemas/configs";

describe("Pb Utils", () => {
it("funboxCatGetPb", () => {
Expand Down
1 change: 1 addition & 0 deletions backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@
"devDependencies": {
"@monkeytype/eslint-config": "workspace:*",
"@monkeytype/oxlint-config": "workspace:*",
"@monkeytype/schemas": "workspace:*",
"@monkeytype/typescript-config": "workspace:*",
"@redocly/cli": "1.28.5",
"@types/bcrypt": "5.0.2",
Expand Down
7 changes: 2 additions & 5 deletions backend/scripts/openapi.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
import { generateOpenApi } from "@ts-rest/open-api";
import { contract } from "@monkeytype/contracts/index";
import { writeFileSync, mkdirSync } from "fs";
import {
EndpointMetadata,
PermissionId,
} from "@monkeytype/contracts/schemas/api";
import { EndpointMetadata, PermissionId } from "@monkeytype/contracts/util/api";
import type { OpenAPIObject, OperationObject } from "openapi3-ts";
import {
RateLimitIds,
Expand Down Expand Up @@ -277,7 +274,7 @@ function addRequiredConfiguration(
if (metadata === undefined || metadata.requireConfiguration === undefined)
return;

//@ts-expect-error
//@ts-expect-error somehow path doesnt exist
operation.description += `**Required configuration:** This operation can only be called if the [configuration](#tag/configuration/operation/configuration.get) for \`${metadata.requireConfiguration.path}\` is \`true\`.\n\n`;
}

Expand Down
5 changes: 1 addition & 4 deletions backend/src/anticheat/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
const hasAnticheatImplemented = process.env["BYPASS_ANTICHEAT"] === "true";

import {
CompletedEvent,
KeyStats,
} from "@monkeytype/contracts/schemas/results";
import { CompletedEvent, KeyStats } from "@monkeytype/schemas/results";
import Logger from "../utils/logger";

export function implemented(): boolean {
Expand Down
2 changes: 1 addition & 1 deletion backend/src/api/controllers/admin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
ToggleBanResponse,
} from "@monkeytype/contracts/admin";
import MonkeyError, { getErrorMessage } from "../../utils/error";
import { Configuration } from "@monkeytype/contracts/schemas/configuration";
import { Configuration } from "@monkeytype/schemas/configuration";
import { addImportantLog } from "../../dal/logs";
import { MonkeyRequest } from "../types";

Expand Down
2 changes: 1 addition & 1 deletion backend/src/api/controllers/ape-key.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {
EditApeKeyRequest,
GetApeKeyResponse,
} from "@monkeytype/contracts/ape-keys";
import { ApeKey } from "@monkeytype/contracts/schemas/ape-keys";
import { ApeKey } from "@monkeytype/schemas/ape-keys";
import { MonkeyRequest } from "../types";

function cleanApeKey(apeKey: ApeKeysDAL.DBApeKey): ApeKey {
Expand Down
2 changes: 1 addition & 1 deletion backend/src/api/controllers/config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { PartialConfig } from "@monkeytype/contracts/schemas/configs";
import { PartialConfig } from "@monkeytype/schemas/configs";
import * as ConfigDAL from "../../dal/config";
import { MonkeyResponse } from "../../utils/monkey-response";
import { GetConfigResponse } from "@monkeytype/contracts/configs";
Expand Down
8 changes: 2 additions & 6 deletions backend/src/api/controllers/dev.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,7 @@ import { ObjectId } from "mongodb";
import * as LeaderboardDal from "../../dal/leaderboards";
import MonkeyError from "../../utils/error";

import {
Mode,
PersonalBest,
PersonalBests,
} from "@monkeytype/contracts/schemas/shared";
import { Mode, PersonalBest, PersonalBests } from "@monkeytype/schemas/shared";
import {
GenerateDataRequest,
GenerateDataResponse,
Expand All @@ -22,7 +18,7 @@ import { roundTo2 } from "@monkeytype/util/numbers";
import { MonkeyRequest } from "../types";
import { DBResult } from "../../utils/result";
import { LbPersonalBests } from "../../utils/pb";
import { Language } from "@monkeytype/contracts/schemas/languages";
import { Language } from "@monkeytype/schemas/languages";

const CREATE_RESULT_DEFAULT_OPTIONS = {
firstTestTimestamp: DateUtils.startOfDay(new UTCDate(Date.now())).valueOf(),
Expand Down
2 changes: 1 addition & 1 deletion backend/src/api/controllers/leaderboard.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import {
GetWeeklyXpLeaderboardRankResponse,
GetWeeklyXpLeaderboardResponse,
} from "@monkeytype/contracts/leaderboards";
import { Configuration } from "@monkeytype/contracts/schemas/configuration";
import { Configuration } from "@monkeytype/schemas/configuration";
import {
getCurrentDayTimestamp,
getCurrentWeekTimestamp,
Expand Down
2 changes: 1 addition & 1 deletion backend/src/api/controllers/preset.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
import * as PresetDAL from "../../dal/preset";
import { MonkeyResponse } from "../../utils/monkey-response";
import { replaceObjectId } from "../../utils/misc";
import { EditPresetRequest } from "@monkeytype/contracts/schemas/presets";
import { EditPresetRequest } from "@monkeytype/schemas/presets";
import { MonkeyRequest } from "../types";

export async function getPresets(
Expand Down
2 changes: 1 addition & 1 deletion backend/src/api/controllers/quote.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import {
} from "@monkeytype/contracts/quotes";
import { replaceObjectId, replaceObjectIds } from "../../utils/misc";
import { MonkeyRequest } from "../types";
import { Language } from "@monkeytype/contracts/schemas/languages";
import { Language } from "@monkeytype/schemas/languages";

async function verifyCaptcha(captcha: string): Promise<void> {
if (!(await verify(captcha))) {
Expand Down
6 changes: 3 additions & 3 deletions backend/src/api/controllers/result.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import {
DBResult,
replaceLegacyValues,
} from "../../utils/result";
import { Configuration } from "@monkeytype/contracts/schemas/configuration";
import { Configuration } from "@monkeytype/schemas/configuration";
import { addImportantLog, addLog } from "../../dal/logs";
import {
AddResultRequest,
Expand All @@ -50,8 +50,8 @@ import {
Result,
PostResultResponse,
XpBreakdown,
} from "@monkeytype/contracts/schemas/results";
import { Mode } from "@monkeytype/contracts/schemas/shared";
} from "@monkeytype/schemas/results";
import { Mode } from "@monkeytype/schemas/shared";
import {
isSafeNumber,
mapRange,
Expand Down
2 changes: 1 addition & 1 deletion backend/src/api/controllers/user.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ import {
CountByYearAndDay,
TestActivity,
UserProfileDetails,
} from "@monkeytype/contracts/schemas/users";
} from "@monkeytype/schemas/users";
import { addImportantLog, addLog, deleteUserLogs } from "../../dal/logs";
import { sendForgotPasswordEmail as authSendForgotPasswordEmail } from "../../utils/auth";
import {
Expand Down
2 changes: 1 addition & 1 deletion backend/src/api/routes/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import { getLiveConfiguration } from "../../init/configuration";
import Logger from "../../utils/logger";
import { createExpressEndpoints, initServer } from "@ts-rest/express";
import { ZodIssue } from "zod";
import { MonkeyValidationError } from "@monkeytype/contracts/schemas/api";
import { MonkeyValidationError } from "@monkeytype/contracts/util/api";
import { authenticateTsRestRequest } from "../../middlewares/auth";
import { rateLimitRequest } from "../../middlewares/rate-limit";
import { verifyPermissions } from "../../middlewares/permission";
Expand Down
2 changes: 1 addition & 1 deletion backend/src/constants/base-configuration.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Configuration } from "@monkeytype/contracts/schemas/configuration";
import { Configuration } from "@monkeytype/schemas/configuration";

/**
* This is the base schema for the configuration of the API backend.
Expand Down
2 changes: 1 addition & 1 deletion backend/src/dal/ape-keys.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
Collection,
} from "mongodb";
import MonkeyError from "../utils/error";
import { ApeKey } from "@monkeytype/contracts/schemas/ape-keys";
import { ApeKey } from "@monkeytype/schemas/ape-keys";

export type DBApeKey = ApeKey & {
_id: ObjectId;
Expand Down
2 changes: 1 addition & 1 deletion backend/src/dal/blocklist.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Collection } from "mongodb";
import * as db from "../init/db";
import { createHash } from "crypto";
import { User } from "@monkeytype/contracts/schemas/users";
import { User } from "@monkeytype/schemas/users";
import { WithObjectId } from "../utils/misc";

type BlocklistEntryProperties = Pick<User, "name" | "email" | "discordId">;
Expand Down
2 changes: 1 addition & 1 deletion backend/src/dal/config.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Collection, ObjectId, UpdateResult } from "mongodb";
import * as db from "../init/db";
import _ from "lodash";
import { Config, PartialConfig } from "@monkeytype/contracts/schemas/configs";
import { Config, PartialConfig } from "@monkeytype/schemas/configs";

const configLegacyProperties = [
"swapEscAndTab",
Expand Down
2 changes: 1 addition & 1 deletion backend/src/dal/leaderboards.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {

import { addLog } from "./logs";
import { Collection, ObjectId } from "mongodb";
import { LeaderboardEntry } from "@monkeytype/contracts/schemas/leaderboards";
import { LeaderboardEntry } from "@monkeytype/schemas/leaderboards";
import { omit } from "lodash";
import { DBUser, getUsersCollection } from "./user";
import MonkeyError from "../utils/error";
Expand Down
4 changes: 2 additions & 2 deletions backend/src/dal/new-quotes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ import { readFile } from "node:fs/promises";
import * as db from "../init/db";
import MonkeyError from "../utils/error";
import { compareTwoStrings } from "string-similarity";
import { ApproveQuote, Quote } from "@monkeytype/contracts/schemas/quotes";
import { ApproveQuote, Quote } from "@monkeytype/schemas/quotes";
import { WithObjectId } from "../utils/misc";
import { parseWithSchema as parseJsonWithSchema } from "@monkeytype/util/json";
import { z } from "zod";
import { tryCatchSync } from "@monkeytype/util/trycatch";
import { Language } from "@monkeytype/contracts/schemas/languages";
import { Language } from "@monkeytype/schemas/languages";

const JsonQuoteSchema = z.object({
text: z.string(),
Expand Down
5 changes: 1 addition & 4 deletions backend/src/dal/preset.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
import MonkeyError from "../utils/error";
import * as db from "../init/db";
import { ObjectId, type Filter, Collection, type WithId } from "mongodb";
import {
EditPresetRequest,
Preset,
} from "@monkeytype/contracts/schemas/presets";
import { EditPresetRequest, Preset } from "@monkeytype/schemas/presets";
import { omit } from "lodash";
import { WithObjectId } from "../utils/misc";

Expand Down
2 changes: 1 addition & 1 deletion backend/src/dal/psa.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { PSA } from "@monkeytype/contracts/schemas/psas";
import { PSA } from "@monkeytype/schemas/psas";
import * as db from "../init/db";
import { WithObjectId } from "../utils/misc";

Expand Down
5 changes: 1 addition & 4 deletions backend/src/dal/public.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
import { roundTo2 } from "@monkeytype/util/numbers";
import * as db from "../init/db";
import MonkeyError from "../utils/error";
import {
TypingStats,
SpeedHistogram,
} from "@monkeytype/contracts/schemas/public";
import { TypingStats, SpeedHistogram } from "@monkeytype/schemas/public";

export type PublicTypingStatsDB = TypingStats & { _id: "stats" };
export type PublicSpeedStatsDB = {
Expand Down
Loading
Loading