From 9602877baf181695a209bd3f89bdcd6577f9d7d2 Mon Sep 17 00:00:00 2001 From: zkldi Date: Tue, 8 Jun 2021 14:21:09 +0100 Subject: [PATCH] rename all instances of ktchi to tachi and change how config works --- server/.gitignore | 3 + server/@types/express/index.d.ts | 8 +- server/package.json | 3 +- server/pnpm-lock.yaml | 3 +- .../__KT_DATABASE_MIGRATION/tierlists.ts | 2 +- server/scripts/arc-db-sync/arc-db-merge.ts | 6 +- server/scripts/update-bpi-poyashi.ts | 18 ++-- server/src/external/mongo/db.ts | 4 +- server/src/lib/cdn/cdn.ts | 2 +- server/src/lib/constants/ktchi.ts | 1 - server/src/lib/constants/tachi.ts | 1 + server/src/lib/env/env.ts | 32 ------- .../framework/common/converter-failures.ts | 5 +- .../import-types/api/arc-ddr/parser.ts | 2 +- .../api/arc-iidx/class-handler.ts | 2 +- .../import-types/api/arc-iidx/parser.ts | 2 +- .../import-types/api/arc-sdvx/parser.ts | 2 +- .../common/api-kai/iidx/parser.ts | 2 +- .../common/api-kai/sdvx/parser.ts | 2 +- .../common/eamusement-iidx-csv/converter.ts | 20 ++--- .../ir/fervidex/converter.test.ts | 66 +++++++------- .../import-types/ir/fervidex/converter.ts | 16 ++-- server/src/lib/setup/config.ts | 89 +++++++++++++++++++ server/src/main.ts | 2 +- .../middleware/require-logged-in.test.ts | 4 +- .../server/middleware/require-logged-in.ts | 2 +- server/src/server/router/api/v1/auth/auth.ts | 2 +- .../src/server/router/api/v1/auth/router.ts | 8 +- .../src/server/router/api/v1/import/router.ts | 2 +- .../src/server/router/ir/barbatos/router.ts | 2 +- .../server/router/ir/beatoraja/auth.test.ts | 14 +-- server/src/server/router/ir/beatoraja/auth.ts | 8 +- .../beatoraja/charts/convert-scores.test.ts | 14 +-- .../ir/beatoraja/charts/convert-scores.ts | 10 +-- .../router/ir/beatoraja/charts/router.test.ts | 4 +- .../router/ir/beatoraja/charts/router.ts | 12 +-- .../server/router/ir/beatoraja/router.test.ts | 44 ++++----- .../src/server/router/ir/beatoraja/router.ts | 6 +- .../src/server/router/ir/chunitachi/router.ts | 2 +- .../server/router/ir/direct-manual/router.ts | 2 +- .../src/server/router/ir/fervidex/router.ts | 22 ++--- server/src/server/router/ir/usc/router.ts | 26 +++--- server/src/server/router/ir/usc/usc.test.ts | 14 +-- server/src/server/router/ir/usc/usc.ts | 38 ++++---- server/src/server/server.ts | 2 +- server/src/test-utils/resets.ts | 2 +- server/src/utils/req-ktchi-data.ts | 12 --- server/src/utils/req-tachi-data.ts | 12 +++ server/src/utils/types.ts | 14 +-- 49 files changed, 317 insertions(+), 254 deletions(-) delete mode 100644 server/src/lib/constants/ktchi.ts create mode 100644 server/src/lib/constants/tachi.ts delete mode 100644 server/src/lib/env/env.ts create mode 100644 server/src/lib/setup/config.ts delete mode 100644 server/src/utils/req-ktchi-data.ts create mode 100644 server/src/utils/req-tachi-data.ts diff --git a/server/.gitignore b/server/.gitignore index 537e1cb15..164e88ad7 100644 --- a/server/.gitignore +++ b/server/.gitignore @@ -9,6 +9,9 @@ coverage .setup_env failed-tests.txt +# config files +conf.json5 + scripts/arc-db-sync/charts.json scripts/arc-db-sync/songs.json scripts/validate-database-errs/* diff --git a/server/@types/express/index.d.ts b/server/@types/express/index.d.ts index 75043b97e..9f91389ca 100644 --- a/server/@types/express/index.d.ts +++ b/server/@types/express/index.d.ts @@ -1,6 +1,6 @@ import { Session, SessionData } from "express-session"; -import { SYMBOL_KtchiData } from "../../src/lib/constants/ktchi"; -import { KtchiRequestData, KtchiSessionData } from "../../src/utils/types"; +import { SYMBOL_TachiData } from "../../src/lib/constants/tachi"; +import { TachiRequestData, TachiSessionData } from "../../src/utils/types"; export {}; @@ -8,7 +8,7 @@ export {}; declare module "express-session" { // Inject additional properties on express-session interface SessionData { - ktchi: KtchiSessionData; + tachi: TachiSessionData; } } @@ -17,7 +17,7 @@ declare global { interface Request { session: Session & Partial; - [SYMBOL_KtchiData]?: Partial; + [SYMBOL_TachiData]?: Partial; } } } diff --git a/server/package.json b/server/package.json index 7ff499b70..3228eb149 100644 --- a/server/package.json +++ b/server/package.json @@ -54,7 +54,7 @@ "express-session": "^1.17.2", "fast-json-stable-hash": "^1.0.2", "fast-xml-parser": "^3.19.0", - "tachi-common": "github:zkldi/tachi-common", + "json5": "^2.2.0", "mkdirp": "^1.0.4", "mongodb": "3.6.3", "monk": "^7.3.4", @@ -63,6 +63,7 @@ "prudence": "^0.9.6", "redis": "^3.1.2", "rimraf": "^3.0.2", + "tachi-common": "github:zkldi/tachi-common", "typescript": "^4.3.2", "winston": "^3.3.3" }, diff --git a/server/pnpm-lock.yaml b/server/pnpm-lock.yaml index d1dfa18bb..03968df5c 100644 --- a/server/pnpm-lock.yaml +++ b/server/pnpm-lock.yaml @@ -33,6 +33,7 @@ specifiers: express-session: ^1.17.2 fast-json-stable-hash: ^1.0.2 fast-xml-parser: ^3.19.0 + json5: ^2.2.0 mkdirp: ^1.0.4 mongodb: 3.6.3 monk: ^7.3.4 @@ -64,6 +65,7 @@ dependencies: express-session: 1.17.2 fast-json-stable-hash: 1.0.2 fast-xml-parser: 3.19.0 + json5: 2.2.0 mkdirp: 1.0.4 mongodb: 3.6.3 monk: 7.3.4 @@ -2561,7 +2563,6 @@ packages: hasBin: true dependencies: minimist: 1.2.5 - dev: true /jsprim/1.4.1: resolution: {integrity: sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=} diff --git a/server/scripts/__KT_DATABASE_MIGRATION/tierlists.ts b/server/scripts/__KT_DATABASE_MIGRATION/tierlists.ts index 83ce92483..abb19de28 100644 --- a/server/scripts/__KT_DATABASE_MIGRATION/tierlists.ts +++ b/server/scripts/__KT_DATABASE_MIGRATION/tierlists.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { TierlistParent, Game } from "tachi-common"; import { gameHuman, validPlaytypes } from "tachi-common/js/config"; -import db from "../../src/db/db"; +import db from "../../src/external/mongo/db"; import MigrateRecords from "./migrate"; function ConvertFn(c: any): TierlistParent { diff --git a/server/scripts/arc-db-sync/arc-db-merge.ts b/server/scripts/arc-db-sync/arc-db-merge.ts index 40019b782..276b32c41 100644 --- a/server/scripts/arc-db-sync/arc-db-merge.ts +++ b/server/scripts/arc-db-sync/arc-db-merge.ts @@ -39,7 +39,7 @@ async function MergeIDs() { } // eslint-disable-next-line no-await-in-loop - const ktchiChart = await FindChartWithPTDFVersion( + const tachiChart = await FindChartWithPTDFVersion( "iidx", song.id, playtype, @@ -47,7 +47,7 @@ async function MergeIDs() { version ); - if (!ktchiChart) { + if (!tachiChart) { logger.error( `Could not find chart ${songTitle} ${playtype} ${difficulty} ${version}.` ); @@ -59,7 +59,7 @@ async function MergeIDs() { db.charts.iidx as unknown as ICollection> ).update( { - _id: ktchiChart._id, + _id: tachiChart._id, }, { $set: { diff --git a/server/scripts/update-bpi-poyashi.ts b/server/scripts/update-bpi-poyashi.ts index 318469fe5..1fc69458e 100644 --- a/server/scripts/update-bpi-poyashi.ts +++ b/server/scripts/update-bpi-poyashi.ts @@ -60,24 +60,24 @@ async function UpdatePoyashiData() { const [playtype, diff] = res; - const ktchiSong = await FindSongOnTitle("iidx", d.title); + const tachiSong = await FindSongOnTitle("iidx", d.title); - if (!ktchiSong) { + if (!tachiSong) { logger.warn(`Cannot find song ${d.title}?`); continue; } - const ktchiChart = (await FindChartWithPTDFVersion( + const tachiChart = (await FindChartWithPTDFVersion( "iidx", - ktchiSong.id, + tachiSong.id, playtype as "SP" | "DP", diff as Difficulties["iidx:DP" | "iidx:SP"], "28" )) as ChartDocument<"iidx:SP" | "iidx:DP">; - if (!ktchiChart) { + if (!tachiChart) { logger.warn( - `Cannot find chart ${ktchiSong.title} (${ktchiSong.id}) ${playtype}, ${diff}?` + `Cannot find chart ${tachiSong.title} (${tachiSong.id}) ${playtype}, ${diff}?` ); continue; } @@ -86,21 +86,21 @@ async function UpdatePoyashiData() { if (kavg < 0) { logger.warn( - `${ktchiSong.title} (${playtype} ${diff}). Invalid kavg ${d.avg}, Skipping.` + `${tachiSong.title} (${playtype} ${diff}). Invalid kavg ${d.avg}, Skipping.` ); continue; } const kesd = ESDCore.CalculateESD( config.judgementWindows.iidx.SP, - kavg / (ktchiChart.data.notecount * 2) + kavg / (tachiChart.data.notecount * 2) ); realData.push({ coef: d.coef === -1 ? null : d.coef, kavg: Number(d.avg), wr: Number(d.wr), - chartID: ktchiChart.chartID, + chartID: tachiChart.chartID, kesd, }); } diff --git a/server/src/external/mongo/db.ts b/server/src/external/mongo/db.ts index 998ad7c7c..29672801d 100644 --- a/server/src/external/mongo/db.ts +++ b/server/src/external/mongo/db.ts @@ -26,7 +26,7 @@ import { BMSCourseDocument, } from "tachi-common"; import monk from "monk"; -import { MONGO_BASE_URL } from "../../lib/env/env"; +import { MONGO_BASE_URL } from "../../lib/setup/config"; import CreateLogCtx from "../../lib/logger/logger"; import { OrphanScoreDocument } from "../../lib/score-import/import-types/common/types"; @@ -39,7 +39,7 @@ let dbName = "ktblackdb"; /* istanbul ignore next */ if (process.env.NODE_ENV === "test") { - if (process.env.KTBSV_PARALLEL_TESTS) { + if (process.env.TACHI_PARALLEL_TESTS) { dbName = `test-ephemeral-${process.pid}`; } else { dbName = `testingdb`; diff --git a/server/src/lib/cdn/cdn.ts b/server/src/lib/cdn/cdn.ts index 826bd482f..7d785ad06 100644 --- a/server/src/lib/cdn/cdn.ts +++ b/server/src/lib/cdn/cdn.ts @@ -1,6 +1,6 @@ import fs from "fs"; import path from "path"; -import { KTCDN_ROOT } from "../env/env"; +import { KTCDN_ROOT } from "../setup/config"; import CreateLogCtx from "../logger/logger"; import { promisify } from "util"; import mkdirp from "mkdirp"; diff --git a/server/src/lib/constants/ktchi.ts b/server/src/lib/constants/ktchi.ts deleted file mode 100644 index 486ac03ee..000000000 --- a/server/src/lib/constants/ktchi.ts +++ /dev/null @@ -1 +0,0 @@ -export const SYMBOL_KtchiData = Symbol("ktchi-request-patch"); diff --git a/server/src/lib/constants/tachi.ts b/server/src/lib/constants/tachi.ts new file mode 100644 index 000000000..9f26030a9 --- /dev/null +++ b/server/src/lib/constants/tachi.ts @@ -0,0 +1 @@ +export const SYMBOL_TachiData = Symbol("tachi-request-patch"); diff --git a/server/src/lib/env/env.ts b/server/src/lib/env/env.ts deleted file mode 100644 index c74112266..000000000 --- a/server/src/lib/env/env.ts +++ /dev/null @@ -1,32 +0,0 @@ -// barrel file for re-exporting env variables. -import dotenv from "dotenv"; -dotenv.config(); - -const envVars = [ - "KTBSV_MONGO_BASE_URL", - "KTBSV_LOG_LEVEL", - "KTBSV_CAPTCHA_SECRET_KEY", - "KTBSV_SESSION_SECRET", - "KTBSV_FLO_API_URL", - "KTBSV_EAG_API_URL", - "KTBSV_ARC_API_URL", - "KTBSV_ARC_AUTH_TOKEN", - "KTCDN_ROOT", -]; - -for (const eVar of envVars) { - /* istanbul ignore next */ - if (!process.env[eVar]) { - throw new Error(`${eVar} was not defined.`); - } -} - -export const MONGO_BASE_URL = process.env.KTBSV_MONGO_BASE_URL!; -export const LOG_LEVEL = process.env.KTBSV_LOG_LEVEL!; -export const SESSION_SECRET = process.env.KTBSV_SESSION_SECRET!; -export const CAPTCHA_SECRET_KEY = process.env.KTBSV_CAPTCHA_SECRET_KEY!; -export const FLO_API_URL = process.env.KTBSV_FLO_API_URL!; -export const EAG_API_URL = process.env.KTBSV_EAG_API_URL!; -export const ARC_API_URL = process.env.KTBSV_ARC_API_URL!; -export const ARC_AUTH_TOKEN = process.env.KTBSV_ARC_AUTH_TOKEN!; -export const KTCDN_ROOT = process.env.KTCDN_ROOT!; diff --git a/server/src/lib/score-import/framework/common/converter-failures.ts b/server/src/lib/score-import/framework/common/converter-failures.ts index dd1c75f02..81815d66a 100644 --- a/server/src/lib/score-import/framework/common/converter-failures.ts +++ b/server/src/lib/score-import/framework/common/converter-failures.ts @@ -13,8 +13,9 @@ export class ConverterFailure { } /** - * SkipScoreFailure - This score could not be processed because Kamaitachi does not + * SkipScoreFailure - This score could not be processed because we do not * support it. This is not an error, but is not a success either. + * An example scenario would be something like a 5KEY score being imported from SSS. */ export class SkipScoreFailure extends ConverterFailure {} @@ -43,7 +44,7 @@ export class KTDataNotFoundFailure extends ConverterFailu } /** - * InvalidScoreError - This score provided invalid data that Kamaitachi + * InvalidScoreError - This score provided invalid data that we * can not accept. */ export class InvalidScoreFailure extends ConverterFailure {} diff --git a/server/src/lib/score-import/import-types/api/arc-ddr/parser.ts b/server/src/lib/score-import/import-types/api/arc-ddr/parser.ts index f12a49fe4..5803a93b4 100644 --- a/server/src/lib/score-import/import-types/api/arc-ddr/parser.ts +++ b/server/src/lib/score-import/import-types/api/arc-ddr/parser.ts @@ -3,7 +3,7 @@ import nodeFetch from "../../../../../utils/fetch"; import { TraverseKaiAPI } from "../../common/api-kai/traverse-api"; import { ParserFunctionReturnsAsync } from "../../common/types"; import { EmptyObject } from "../../../../../utils/types"; -import { ARC_API_URL, ARC_AUTH_TOKEN } from "../../../../env/env"; +import { ARC_API_URL, ARC_AUTH_TOKEN } from "../../../../setup/config"; export function ParseArcDDR( arcProfileID: string, diff --git a/server/src/lib/score-import/import-types/api/arc-iidx/class-handler.ts b/server/src/lib/score-import/import-types/api/arc-iidx/class-handler.ts index cf24f160d..99ea373b1 100644 --- a/server/src/lib/score-import/import-types/api/arc-iidx/class-handler.ts +++ b/server/src/lib/score-import/import-types/api/arc-iidx/class-handler.ts @@ -1,7 +1,7 @@ import nodeFetch from "../../../../../utils/fetch"; import { HasOwnProperty } from "../../../../../utils/misc"; import { IIDXClasses } from "../../../../constants/classes"; -import { ARC_API_URL } from "../../../../env/env"; +import { ARC_API_URL } from "../../../../setup/config"; import { ClassHandler } from "../../../framework/user-game-stats/types"; export async function CreateArcIIDXClassHandler( diff --git a/server/src/lib/score-import/import-types/api/arc-iidx/parser.ts b/server/src/lib/score-import/import-types/api/arc-iidx/parser.ts index b54bdd929..f549995da 100644 --- a/server/src/lib/score-import/import-types/api/arc-iidx/parser.ts +++ b/server/src/lib/score-import/import-types/api/arc-iidx/parser.ts @@ -3,7 +3,7 @@ import nodeFetch from "../../../../../utils/fetch"; import { TraverseKaiAPI } from "../../common/api-kai/traverse-api"; import { ParserFunctionReturnsAsync } from "../../common/types"; import { EmptyObject } from "../../../../../utils/types"; -import { ARC_API_URL, ARC_AUTH_TOKEN } from "../../../../env/env"; +import { ARC_API_URL, ARC_AUTH_TOKEN } from "../../../../setup/config"; import { CreateArcIIDXClassHandler } from "./class-handler"; export async function ParseArcIIDX( diff --git a/server/src/lib/score-import/import-types/api/arc-sdvx/parser.ts b/server/src/lib/score-import/import-types/api/arc-sdvx/parser.ts index c720b524c..44d9413f5 100644 --- a/server/src/lib/score-import/import-types/api/arc-sdvx/parser.ts +++ b/server/src/lib/score-import/import-types/api/arc-sdvx/parser.ts @@ -3,7 +3,7 @@ import nodeFetch from "../../../../../utils/fetch"; import { TraverseKaiAPI } from "../../common/api-kai/traverse-api"; import { ParserFunctionReturnsAsync } from "../../common/types"; import { EmptyObject } from "../../../../../utils/types"; -import { ARC_API_URL, ARC_AUTH_TOKEN } from "../../../../env/env"; +import { ARC_API_URL, ARC_AUTH_TOKEN } from "../../../../setup/config"; export function ParseArcSDVX( arcProfileID: string, diff --git a/server/src/lib/score-import/import-types/common/api-kai/iidx/parser.ts b/server/src/lib/score-import/import-types/common/api-kai/iidx/parser.ts index 5f423474c..18dafcfde 100644 --- a/server/src/lib/score-import/import-types/common/api-kai/iidx/parser.ts +++ b/server/src/lib/score-import/import-types/common/api-kai/iidx/parser.ts @@ -4,7 +4,7 @@ import { KaiAuthDocument } from "tachi-common"; import { KaiContext } from "../types"; import { TraverseKaiAPI } from "../traverse-api"; import { ParserFunctionReturnsAsync } from "../../types"; -import { FLO_API_URL, EAG_API_URL } from "../../../../../env/env"; +import { FLO_API_URL, EAG_API_URL } from "../../../../../setup/config"; export function ParseKaiIIDX( service: "FLO" | "EAG", diff --git a/server/src/lib/score-import/import-types/common/api-kai/sdvx/parser.ts b/server/src/lib/score-import/import-types/common/api-kai/sdvx/parser.ts index 01e12951b..00a230b26 100644 --- a/server/src/lib/score-import/import-types/common/api-kai/sdvx/parser.ts +++ b/server/src/lib/score-import/import-types/common/api-kai/sdvx/parser.ts @@ -4,7 +4,7 @@ import { KaiAuthDocument } from "tachi-common"; import { KaiContext } from "../types"; import { TraverseKaiAPI } from "../traverse-api"; import { ParserFunctionReturnsAsync } from "../../types"; -import { EAG_API_URL, FLO_API_URL } from "../../../../../env/env"; +import { EAG_API_URL, FLO_API_URL } from "../../../../../setup/config"; export function ParseKaiSDVX( service: "FLO" | "EAG", diff --git a/server/src/lib/score-import/import-types/common/eamusement-iidx-csv/converter.ts b/server/src/lib/score-import/import-types/common/eamusement-iidx-csv/converter.ts index 7655ee737..2f39704b5 100644 --- a/server/src/lib/score-import/import-types/common/eamusement-iidx-csv/converter.ts +++ b/server/src/lib/score-import/import-types/common/eamusement-iidx-csv/converter.ts @@ -57,9 +57,9 @@ const ConvertEamIIDXCSV: ConverterFunction; - if (!ktchiChart) { + if (!tachiChart) { throw new KTDataNotFoundFailure( `Could not find chart for ${HUMANISED_CHART_TITLE}`, "file/eamusement-iidx-csv", @@ -96,7 +96,7 @@ const ConvertEamIIDXCSV: ConverterFunction MAX_EX) { throw new InvalidScoreFailure( @@ -129,7 +129,7 @@ const ConvertEamIIDXCSV: ConverterFunction { t.end(); }); -t.test("#KtchifyAssist", (t) => { - t.equal(KtchifyAssist("ASCR_LEGACY"), "FULL ASSIST"); - t.equal(KtchifyAssist("AUTO_SCRATCH"), "AUTO SCRATCH"); - t.equal(KtchifyAssist("FULL_ASSIST"), "FULL ASSIST"); - t.equal(KtchifyAssist("LEGACY_NOTE"), "LEGACY NOTE"); - t.equal(KtchifyAssist(null), "NO ASSIST"); - t.equal(KtchifyAssist(undefined), "NO ASSIST"); +t.test("#TachifyAssist", (t) => { + t.equal(TachifyAssist("ASCR_LEGACY"), "FULL ASSIST"); + t.equal(TachifyAssist("AUTO_SCRATCH"), "AUTO SCRATCH"); + t.equal(TachifyAssist("FULL_ASSIST"), "FULL ASSIST"); + t.equal(TachifyAssist("LEGACY_NOTE"), "LEGACY NOTE"); + t.equal(TachifyAssist(null), "NO ASSIST"); + t.equal(TachifyAssist(undefined), "NO ASSIST"); t.end(); }); -t.test("#KtchifyGauge", (t) => { - t.equal(KtchifyGauge("ASSISTED_EASY"), "ASSISTED EASY"); - t.equal(KtchifyGauge("EASY"), "EASY"); - t.equal(KtchifyGauge("HARD"), "HARD"); - t.equal(KtchifyGauge("EX_HARD"), "EX HARD"); - t.equal(KtchifyGauge(null), "NORMAL"); - t.equal(KtchifyGauge(undefined), "NORMAL"); +t.test("#TachifyGauge", (t) => { + t.equal(TachifyGauge("ASSISTED_EASY"), "ASSISTED EASY"); + t.equal(TachifyGauge("EASY"), "EASY"); + t.equal(TachifyGauge("HARD"), "HARD"); + t.equal(TachifyGauge("EX_HARD"), "EX HARD"); + t.equal(TachifyGauge(null), "NORMAL"); + t.equal(TachifyGauge(undefined), "NORMAL"); t.end(); }); -t.test("#KtchifyRange", (t) => { - t.equal(KtchifyRange("HIDDEN_PLUS"), "HIDDEN+"); - t.equal(KtchifyRange("LIFT"), "LIFT"); - t.equal(KtchifyRange("LIFT_SUD_PLUS"), "LIFT SUD+"); - t.equal(KtchifyRange("SUDDEN_PLUS"), "SUDDEN+"); - t.equal(KtchifyRange("SUD_PLUS_HID_PLUS"), "SUD+ HID+"); - t.equal(KtchifyRange(null), "NONE"); - t.equal(KtchifyRange(undefined), "NONE"); +t.test("#TachifyRange", (t) => { + t.equal(TachifyRange("HIDDEN_PLUS"), "HIDDEN+"); + t.equal(TachifyRange("LIFT"), "LIFT"); + t.equal(TachifyRange("LIFT_SUD_PLUS"), "LIFT SUD+"); + t.equal(TachifyRange("SUDDEN_PLUS"), "SUDDEN+"); + t.equal(TachifyRange("SUD_PLUS_HID_PLUS"), "SUD+ HID+"); + t.equal(TachifyRange(null), "NONE"); + t.equal(TachifyRange(undefined), "NONE"); t.end(); }); -t.test("#KtchifyRandom", (t) => { - t.equal(KtchifyRandom("MIRROR"), "MIRROR"); - t.equal(KtchifyRandom("R_RANDOM"), "R-RANDOM"); - t.equal(KtchifyRandom("S_RANDOM"), "S-RANDOM"); - t.equal(KtchifyRandom("RANDOM"), "RANDOM"); - t.equal(KtchifyRandom(null), "NONRAN"); - t.equal(KtchifyRandom(undefined), "NONRAN"); +t.test("#TachifyRandom", (t) => { + t.equal(TachifyRandom("MIRROR"), "MIRROR"); + t.equal(TachifyRandom("R_RANDOM"), "R-RANDOM"); + t.equal(TachifyRandom("S_RANDOM"), "S-RANDOM"); + t.equal(TachifyRandom("RANDOM"), "RANDOM"); + t.equal(TachifyRandom(null), "NONRAN"); + t.equal(TachifyRandom(undefined), "NONRAN"); t.end(); }); diff --git a/server/src/lib/score-import/import-types/ir/fervidex/converter.ts b/server/src/lib/score-import/import-types/ir/fervidex/converter.ts index 0031b71dd..e465d2b6c 100644 --- a/server/src/lib/score-import/import-types/ir/fervidex/converter.ts +++ b/server/src/lib/score-import/import-types/ir/fervidex/converter.ts @@ -25,7 +25,7 @@ export const FERVIDEX_LAMP_LOOKUP = { 7: "FULL COMBO", }; -export function KtchifyAssist( +export function TachifyAssist( assist: FervidexScore["option"]["assist"] ): DryScore<"iidx:SP" | "iidx:DP">["scoreMeta"]["assist"] { switch (assist) { @@ -43,7 +43,7 @@ export function KtchifyAssist( } } -export function KtchifyGauge( +export function TachifyGauge( gauge: FervidexScore["option"]["gauge"] ): DryScore<"iidx:SP" | "iidx:DP">["scoreMeta"]["gauge"] { switch (gauge) { @@ -61,7 +61,7 @@ export function KtchifyGauge( } } -export function KtchifyRange( +export function TachifyRange( gauge: FervidexScore["option"]["range"] ): DryScore<"iidx:SP" | "iidx:DP">["scoreMeta"]["range"] { switch (gauge) { @@ -81,7 +81,7 @@ export function KtchifyRange( } } -export function KtchifyRandom( +export function TachifyRandom( gauge: FervidexScore["option"]["style"] ): DryScore<"iidx:SP" | "iidx:DP">["scoreMeta"]["random"] { switch (gauge) { @@ -209,10 +209,10 @@ export const ConverterIRFervidex: ConverterFunction { t.test("Should reject users that are not logged in.", async (t) => { const { res } = await expMiddlewareMock(RequireLoggedIn, { session: { - ktchi: null, + tachi: null, }, }); @@ -23,7 +23,7 @@ t.test("#RequireLoggedIn", (t) => { t.test("Should allow users that are logged in.", async (t) => { const { res } = await expMiddlewareMock(RequireLoggedIn, { session: { - ktchi: { + tachi: { userID: 1, }, }, diff --git a/server/src/server/middleware/require-logged-in.ts b/server/src/server/middleware/require-logged-in.ts index d5d0c143e..b6c4dc210 100644 --- a/server/src/server/middleware/require-logged-in.ts +++ b/server/src/server/middleware/require-logged-in.ts @@ -4,7 +4,7 @@ import CreateLogCtx from "../../lib/logger/logger"; const logger = CreateLogCtx(__filename); export function RequireLoggedIn(req: Request, res: Response, next: NextFunction) { - if (!req.session.ktchi?.userID) { + if (!req.session.tachi?.userID) { logger.info(`Received unauthorised request from ${req.ip} from ${req.originalUrl}`); return res.status(401).json({ diff --git a/server/src/server/router/api/v1/auth/auth.ts b/server/src/server/router/api/v1/auth/auth.ts index e79dfd74f..5037ac898 100644 --- a/server/src/server/router/api/v1/auth/auth.ts +++ b/server/src/server/router/api/v1/auth/auth.ts @@ -12,7 +12,7 @@ import { GetNextCounterValue } from "../../../../../utils/db"; import CreateLogCtx from "../../../../../lib/logger/logger"; import { FormatUserDoc } from "../../../../../utils/user"; import nodeFetch from "../../../../../utils/fetch"; -import { CAPTCHA_SECRET_KEY } from "../../../../../lib/env/env"; +import { CAPTCHA_SECRET_KEY } from "../../../../../lib/setup/config"; const logger = CreateLogCtx(__filename); diff --git a/server/src/server/router/api/v1/auth/router.ts b/server/src/server/router/api/v1/auth/router.ts index 893cdbfc1..34ff6e1d1 100644 --- a/server/src/server/router/api/v1/auth/router.ts +++ b/server/src/server/router/api/v1/auth/router.ts @@ -33,7 +33,7 @@ router.post("/status", RequireLoggedIn, (req, res) => success: true, description: "Logged In.", body: { - userID: req.session.ktchi!.userID, + userID: req.session.tachi!.userID, }, }) ); @@ -56,8 +56,8 @@ router.post( } ), async (req, res) => { - if (req.session.ktchi?.userID) { - logger.info(`Dual log-in attempted from ${req.session.ktchi.userID}`); + if (req.session.tachi?.userID) { + logger.info(`Dual log-in attempted from ${req.session.tachi.userID}`); return res.status(409).json({ success: false, description: `You are already logged in as someone.`, @@ -107,7 +107,7 @@ router.post( }); } - req.session.ktchi = { + req.session.tachi = { userID: requestedUser.id, }; diff --git a/server/src/server/router/api/v1/import/router.ts b/server/src/server/router/api/v1/import/router.ts index 0a4165d83..440dc2f79 100644 --- a/server/src/server/router/api/v1/import/router.ts +++ b/server/src/server/router/api/v1/import/router.ts @@ -55,7 +55,7 @@ router.post( const inputParser = (logger: KtLogger) => ResolveFileUploadData(importType, req.file, req.body, logger); - const userDoc = await GetUserWithIDGuaranteed(req.session.ktchi!.userID); + const userDoc = await GetUserWithIDGuaranteed(req.session.tachi!.userID); // The here is deliberate - TS picks the IIDX-CSV generic values // for this function call because it sees them first diff --git a/server/src/server/router/ir/barbatos/router.ts b/server/src/server/router/ir/barbatos/router.ts index 9df34787d..a82ad8576 100644 --- a/server/src/server/router/ir/barbatos/router.ts +++ b/server/src/server/router/ir/barbatos/router.ts @@ -11,7 +11,7 @@ const router: Router = Router({ mergeParams: true }); * @name POST /ir/barbatos/score/submit */ router.post("/score/submit", RequireLoggedIn, async (req, res) => { - const userDoc = await GetUserWithIDGuaranteed(req.session.ktchi!.userID); + const userDoc = await GetUserWithIDGuaranteed(req.session.tachi!.userID); const responseData = await ExpressWrappedScoreImportMain( userDoc, diff --git a/server/src/server/router/ir/beatoraja/auth.test.ts b/server/src/server/router/ir/beatoraja/auth.test.ts index e00c6ab57..22eb5f92f 100644 --- a/server/src/server/router/ir/beatoraja/auth.test.ts +++ b/server/src/server/router/ir/beatoraja/auth.test.ts @@ -2,14 +2,14 @@ import t from "tap"; import { ValidateAuthToken, ValidateIRClientVersion } from "./auth"; import expMiddlewareMock from "express-request-mock"; import ResetDBState from "../../../../test-utils/resets"; -import { SYMBOL_KtchiData } from "../../../../lib/constants/ktchi"; +import { SYMBOL_TachiData } from "../../../../lib/constants/tachi"; import { CloseAllConnections } from "../../../../test-utils/close-connections"; t.test("#ValidateIRClientVersion", (t) => { t.test("Should reject clients that are not supported", async (t) => { const { res } = await expMiddlewareMock(ValidateIRClientVersion, { headers: { - "X-KtchiIR-Version": "1.2.0", + "X-TachiIR-Version": "1.2.0", }, }); @@ -17,7 +17,7 @@ t.test("#ValidateIRClientVersion", (t) => { t.equal(res.statusCode, 400); t.equal(json.success, false); - t.match(json.description, /Invalid KtchiIR client version/u); + t.match(json.description, /Invalid TachiIR client version/u); t.end(); }); @@ -29,7 +29,7 @@ t.test("#ValidateIRClientVersion", (t) => { t.equal(res.statusCode, 400); t.equal(json.success, false); - t.match(json.description, /Invalid KtchiIR client version/u); + t.match(json.description, /Invalid TachiIR client version/u); t.end(); }); @@ -37,7 +37,7 @@ t.test("#ValidateIRClientVersion", (t) => { t.test("Should accept 2.0.0", async (t) => { const { res } = await expMiddlewareMock(ValidateIRClientVersion, { headers: { - "X-KtchiIR-Version": "2.0.0", + "X-TachiIR-Version": "2.0.0", }, }); @@ -106,9 +106,9 @@ t.test("#ValidateAuthToken", (t) => { t.equal(res.statusCode, 200); t.hasStrict( - req[SYMBOL_KtchiData]?.beatorajaAuthDoc, + req[SYMBOL_TachiData]?.beatorajaAuthDoc, { token: "token", userID: 1 }, - "Should attach the authDoc to the request KtchiData" + "Should attach the authDoc to the request TachiData" ); t.end(); diff --git a/server/src/server/router/ir/beatoraja/auth.ts b/server/src/server/router/ir/beatoraja/auth.ts index 9b8192e27..b7405b1f3 100644 --- a/server/src/server/router/ir/beatoraja/auth.ts +++ b/server/src/server/router/ir/beatoraja/auth.ts @@ -2,7 +2,7 @@ import { GenericAuthDocument } from "tachi-common"; import { RequestHandler } from "express"; import db from "../../../../external/mongo/db"; import { SplitAuthorizationHeader } from "../../../../utils/misc"; -import { AssignToReqKtchiData } from "../../../../utils/req-ktchi-data"; +import { AssignToReqTachiData } from "../../../../utils/req-tachi-data"; export const ValidateAuthToken: RequestHandler = async (req, res, next) => { const header = req.header("Authorization"); @@ -34,18 +34,18 @@ export const ValidateAuthToken: RequestHandler = async (req, res, next) => { }); } - AssignToReqKtchiData(req, { beatorajaAuthDoc }); + AssignToReqTachiData(req, { beatorajaAuthDoc }); return next(); }; export const ValidateIRClientVersion: RequestHandler = (req, res, next) => { - const header = req.header("X-KtchiIR-Version"); + const header = req.header("X-TachiIR-Version"); if (header !== "2.0.0") { return res.status(400).json({ success: false, - description: "Invalid KtchiIR client version.", + description: "Invalid TachiIR client version.", }); } diff --git a/server/src/server/router/ir/beatoraja/charts/convert-scores.test.ts b/server/src/server/router/ir/beatoraja/charts/convert-scores.test.ts index b869942c4..d1d3332ca 100644 --- a/server/src/server/router/ir/beatoraja/charts/convert-scores.test.ts +++ b/server/src/server/router/ir/beatoraja/charts/convert-scores.test.ts @@ -2,7 +2,7 @@ import t from "tap"; import db from "../../../../../external/mongo/db"; import ResetDBState from "../../../../../test-utils/resets"; import { GetKTDataJSON } from "../../../../../test-utils/test-data"; -import { KtchiPBScoreToBeatorajaFormat } from "./convert-scores"; +import { TachiPBScoreToBeatorajaFormat } from "./convert-scores"; import { ScoreDocument, PBScoreDocument } from "tachi-common"; import { Random20Hex } from "../../../../../utils/misc"; import deepmerge from "deepmerge"; @@ -25,7 +25,7 @@ const pbScore = { userID: 1, } as unknown as PBScoreDocument<"bms:7K" | "bms:14K">; -t.test("#KtchiPBScoreToBeatorajaFormat", (t) => { +t.test("#TachiPBScoreToBeatorajaFormat", (t) => { t.beforeEach(ResetDBState); t.beforeEach(async () => { await db.scores.insert( @@ -48,7 +48,7 @@ t.test("#KtchiPBScoreToBeatorajaFormat", (t) => { }); t.test("Should convert score.", async (t) => { - const res = await KtchiPBScoreToBeatorajaFormat(pbScore, gazerChart, 1); + const res = await TachiPBScoreToBeatorajaFormat(pbScore, gazerChart, 1); t.strictSame( res, @@ -73,7 +73,7 @@ t.test("#KtchiPBScoreToBeatorajaFormat", (t) => { }); t.test("Should emplace username if requestingUserID is not the pbscore owner", async (t) => { - const res = await KtchiPBScoreToBeatorajaFormat(pbScore, gazerChart, 2); + const res = await TachiPBScoreToBeatorajaFormat(pbScore, gazerChart, 2); t.strictSame( res, @@ -110,7 +110,7 @@ t.test("#KtchiPBScoreToBeatorajaFormat", (t) => { }, } as ScoreDocument); - const res = await KtchiPBScoreToBeatorajaFormat(pbScore, gazerChart, 2); + const res = await TachiPBScoreToBeatorajaFormat(pbScore, gazerChart, 2); t.strictSame( res, @@ -147,7 +147,7 @@ t.test("#KtchiPBScoreToBeatorajaFormat", (t) => { }, } as ScoreDocument); - const res = await KtchiPBScoreToBeatorajaFormat( + const res = await TachiPBScoreToBeatorajaFormat( deepmerge(pbScore, { playtype: "14K" }), gazerChart, 2 @@ -178,7 +178,7 @@ t.test("#KtchiPBScoreToBeatorajaFormat", (t) => { t.test("Should throw severe if no lampPB exists.", async (t) => { await db.scores.remove({ scoreID: "mock_lampPB" }); - t.rejects(() => KtchiPBScoreToBeatorajaFormat(pbScore, gazerChart, 2), { + t.rejects(() => TachiPBScoreToBeatorajaFormat(pbScore, gazerChart, 2), { message: /User 1's PB on.*has no lampPB/u, } as any); diff --git a/server/src/server/router/ir/beatoraja/charts/convert-scores.ts b/server/src/server/router/ir/beatoraja/charts/convert-scores.ts index 2944cfa12..e7c2ba642 100644 --- a/server/src/server/router/ir/beatoraja/charts/convert-scores.ts +++ b/server/src/server/router/ir/beatoraja/charts/convert-scores.ts @@ -39,14 +39,14 @@ export type BeatorajaIRScoreFormat = BeatorajaPartialScoreFormat & BeatorajaScor const logger = CreateLogCtx(__filename); /** - * Converts a Kamaitachi Score PB into the beatoraja IR format. + * Converts a Tachi Score PB into the beatoraja IR format. * @param pbScore - The PB score to convert. * @param chart - The chart document the PB score belongs to. * @param requestingUserID - The user who requested this conversion. This is * because beatoraja uses the empty string to dictate that the score was from * the requesting user. */ -export async function KtchiPBScoreToBeatorajaFormat( +export async function TachiPBScoreToBeatorajaFormat( pbScore: PBScoreDocument<"bms:7K" | "bms:14K">, chart: ChartDocument<"bms:7K" | "bms:14K">, requestingUserID: integer @@ -67,7 +67,7 @@ export async function KtchiPBScoreToBeatorajaFormat( ); } - return KtchiScoreDataToBeatorajaFormat( + return TachiScoreDataToBeatorajaFormat( pbScore, chart.data.hashSHA256, username, @@ -79,7 +79,7 @@ export async function KtchiPBScoreToBeatorajaFormat( } /** - * Converts various data from Kamaitachi to the beatoraja format. + * Converts various data from Tachi to the beatoraja format. * @param pbScore - The users PB Score document for this chart. * @param sha256 - The SHA256 for this chart. * @param username - The users name. Beatoraja uses the special value "" to indicate the user is the current player. @@ -89,7 +89,7 @@ export async function KtchiPBScoreToBeatorajaFormat( * @param random - What random modifier was used. * @returns A Beatoraja Score Document. */ -function KtchiScoreDataToBeatorajaFormat( +function TachiScoreDataToBeatorajaFormat( pbScore: PBScoreDocument<"bms:7K" | "bms:14K">, sha256: string, username: string, diff --git a/server/src/server/router/ir/beatoraja/charts/router.test.ts b/server/src/server/router/ir/beatoraja/charts/router.test.ts index 05ddf2296..cc73d4ca8 100644 --- a/server/src/server/router/ir/beatoraja/charts/router.test.ts +++ b/server/src/server/router/ir/beatoraja/charts/router.test.ts @@ -35,7 +35,7 @@ t.test("GET /ir/beatoraja/charts/:chartSHA256/scores", (t) => { const res = await mockApi .get(`/ir/beatoraja/charts/${GAZER_SHA256}/scores`) - .set("X-KtchiIR-Version", "2.0.0") + .set("X-TachiIR-Version", "2.0.0") .set("Authorization", "Bearer token"); t.equal(res.status, 200); @@ -46,7 +46,7 @@ t.test("GET /ir/beatoraja/charts/:chartSHA256/scores", (t) => { t.test("Should return 404 if chart doesnt exist", async (t) => { const res = await mockApi .get(`/ir/beatoraja/charts/INVALID/scores`) - .set("X-KtchiIR-Version", "2.0.0") + .set("X-TachiIR-Version", "2.0.0") .set("Authorization", "Bearer token"); t.equal(res.status, 404); diff --git a/server/src/server/router/ir/beatoraja/charts/router.ts b/server/src/server/router/ir/beatoraja/charts/router.ts index 4bcad3315..cfe210e2c 100644 --- a/server/src/server/router/ir/beatoraja/charts/router.ts +++ b/server/src/server/router/ir/beatoraja/charts/router.ts @@ -1,9 +1,9 @@ import { ChartDocument, PBScoreDocument } from "tachi-common"; import { Router, RequestHandler } from "express"; import db from "../../../../../external/mongo/db"; -import { SYMBOL_KtchiData } from "../../../../../lib/constants/ktchi"; -import { KtchiPBScoreToBeatorajaFormat } from "./convert-scores"; -import { AssignToReqKtchiData } from "../../../../../utils/req-ktchi-data"; +import { SYMBOL_TachiData } from "../../../../../lib/constants/tachi"; +import { TachiPBScoreToBeatorajaFormat } from "./convert-scores"; +import { AssignToReqTachiData } from "../../../../../utils/req-tachi-data"; const router: Router = Router({ mergeParams: true }); @@ -19,7 +19,7 @@ const GetChartDocument: RequestHandler = async (req, res, next) => { }); } - AssignToReqKtchiData(req, { beatorajaChartDoc: chart }); + AssignToReqTachiData(req, { beatorajaChartDoc: chart }); return next(); }; @@ -31,7 +31,7 @@ router.use(GetChartDocument); * @name GET /ir/beatoraja/chart/:chartSHA256/scores */ router.get("/scores", async (req, res) => { - const chart = req[SYMBOL_KtchiData]!.beatorajaChartDoc!; + const chart = req[SYMBOL_TachiData]!.beatorajaChartDoc!; const scores = (await db["score-pbs"].find({ chartID: chart.chartID, @@ -41,7 +41,7 @@ router.get("/scores", async (req, res) => { // @optimisable - This should be solved with a couple queries and a hashmap. const beatorajaScores = await Promise.all( scores.map((e) => - KtchiPBScoreToBeatorajaFormat(e, chart, req[SYMBOL_KtchiData]!.beatorajaAuthDoc!.userID) + TachiPBScoreToBeatorajaFormat(e, chart, req[SYMBOL_TachiData]!.beatorajaAuthDoc!.userID) ) ); diff --git a/server/src/server/router/ir/beatoraja/router.test.ts b/server/src/server/router/ir/beatoraja/router.test.ts index 6154f366c..f433c9b17 100644 --- a/server/src/server/router/ir/beatoraja/router.test.ts +++ b/server/src/server/router/ir/beatoraja/router.test.ts @@ -16,7 +16,7 @@ t.test("POST /ir/beatoraja/login", (t) => { username: "test_zkldi", password: "password", }) - .set("X-KtchiIR-Version", "2.0.0"); + .set("X-TachiIR-Version", "2.0.0"); t.equal(res.status, 200); t.match(res.body.body.token, /^[0-9a-f]{40}$/u, "Should return a 20 byte long token."); @@ -31,7 +31,7 @@ t.test("POST /ir/beatoraja/login", (t) => { username: "test_zkldi", password: "invalid", }) - .set("X-KtchiIR-Version", "2.0.0"); + .set("X-TachiIR-Version", "2.0.0"); t.equal(res.status, 401); t.equal(res.body.success, false); @@ -40,14 +40,14 @@ t.test("POST /ir/beatoraja/login", (t) => { t.end(); }); - t.test("Should reject X-KtchiIR-Versions", async (t) => { + t.test("Should reject X-TachiIR-Versions", async (t) => { const res = await mockApi .post("/ir/beatoraja/login") .send({ username: "test_zkldi", password: "password", }) - .set("X-KtchiIR-Version", "1.2.0"); + .set("X-TachiIR-Version", "1.2.0"); t.equal(res.status, 400); t.equal(res.body.success, false); @@ -72,7 +72,7 @@ t.test("POST /ir/beatoraja/login", (t) => { username: "invalid", password: "password", }) - .set("X-KtchiIR-Version", "2.0.0"); + .set("X-TachiIR-Version", "2.0.0"); t.equal(res.status, 404); t.equal(res.body.success, false); @@ -85,7 +85,7 @@ t.test("POST /ir/beatoraja/login", (t) => { const res = await mockApi .post("/ir/beatoraja/login") .send({}) - .set("X-KtchiIR-Version", "2.0.0"); + .set("X-TachiIR-Version", "2.0.0"); t.equal(res.status, 400); t.equal(res.body.success, false); @@ -97,7 +97,7 @@ t.test("POST /ir/beatoraja/login", (t) => { username: { $where: "for(;;){}" }, password: 123, }) - .set("X-KtchiIR-Version", "2.0.0"); + .set("X-TachiIR-Version", "2.0.0"); t.equal(res2.status, 400); t.equal(res2.body.success, false); @@ -117,7 +117,7 @@ t.test("POST /ir/beatoraja/submit-score", (t) => { t.test("Should import a valid score.", async (t) => { const res = await mockApi .post("/ir/beatoraja/submit-score") - .set("X-KtchiIR-Version", "2.0.0") + .set("X-TachiIR-Version", "2.0.0") .set("Authorization", "Bearer token") .send(scoreReq); @@ -154,7 +154,7 @@ t.test("POST /ir/beatoraja/submit-score", (t) => { t.test("Should return an error if invalid client.", async (t) => { const res = await mockApi .post("/ir/beatoraja/submit-score") - .set("X-KtchiIR-Version", "2.0.0") + .set("X-TachiIR-Version", "2.0.0") .set("Authorization", "Bearer token") .send(deepmerge(scoreReq, { client: "INVALID" })); @@ -169,7 +169,7 @@ t.test("POST /ir/beatoraja/submit-score", (t) => { t.test("Should return an error if invalid score.", async (t) => { const res = await mockApi .post("/ir/beatoraja/submit-score") - .set("X-KtchiIR-Version", "2.0.0") + .set("X-TachiIR-Version", "2.0.0") .set("Authorization", "Bearer token") .send(deepmerge(scoreReq, { score: { exscore: -1 } })); @@ -184,7 +184,7 @@ t.test("POST /ir/beatoraja/submit-score", (t) => { t.test("Should return an error if invalid chart.", async (t) => { const res = await mockApi .post("/ir/beatoraja/submit-score") - .set("X-KtchiIR-Version", "2.0.0") + .set("X-TachiIR-Version", "2.0.0") .set("Authorization", "Bearer token") .send(deepmerge(scoreReq, { chart: { title: null } })); @@ -258,7 +258,7 @@ t.test("POST /ir/beatoraja/submit-course", (t) => { t.test("Should accept a valid clear", async (t) => { const res = await mockApi .post("/ir/beatoraja/submit-course") - .set("X-KtchiIR-Version", "2.0.0") + .set("X-TachiIR-Version", "2.0.0") .set("Authorization", "Bearer token") .send(courseScore); @@ -276,7 +276,7 @@ t.test("POST /ir/beatoraja/submit-course", (t) => { t.test("Should silently reject a fail", async (t) => { const res = await mockApi .post("/ir/beatoraja/submit-course") - .set("X-KtchiIR-Version", "2.0.0") + .set("X-TachiIR-Version", "2.0.0") .set("Authorization", "Bearer token") .send(deepmerge(courseScore, { score: { clear: "Failed" } })); @@ -290,7 +290,7 @@ t.test("POST /ir/beatoraja/submit-course", (t) => { t.test("Should reject scores with no charts", async (t) => { const res = await mockApi .post("/ir/beatoraja/submit-course") - .set("X-KtchiIR-Version", "2.0.0") + .set("X-TachiIR-Version", "2.0.0") .set("Authorization", "Bearer token") .send(deepmerge(courseScore, { course: { charts: [] } }, { arrayMerge: (d, s) => s })); @@ -304,7 +304,7 @@ t.test("POST /ir/beatoraja/submit-course", (t) => { t.test("Should reject scores with invalid chart documents", async (t) => { const res = await mockApi .post("/ir/beatoraja/submit-course") - .set("X-KtchiIR-Version", "2.0.0") + .set("X-TachiIR-Version", "2.0.0") .set("Authorization", "Bearer token") .send(deepmerge(courseScore, { course: { charts: [1, 2, 3, 4] } })); @@ -318,7 +318,7 @@ t.test("POST /ir/beatoraja/submit-course", (t) => { t.test("Should reject scores with too many chart documents", async (t) => { const res = await mockApi .post("/ir/beatoraja/submit-course") - .set("X-KtchiIR-Version", "2.0.0") + .set("X-TachiIR-Version", "2.0.0") .set("Authorization", "Bearer token") .send( deepmerge(courseScore, { @@ -336,7 +336,7 @@ t.test("POST /ir/beatoraja/submit-course", (t) => { t.test("Should reject scores not on LN mode", async (t) => { const res = await mockApi .post("/ir/beatoraja/submit-course") - .set("X-KtchiIR-Version", "2.0.0") + .set("X-TachiIR-Version", "2.0.0") .set("Authorization", "Bearer token") .send( deepmerge(courseScore, { @@ -356,7 +356,7 @@ t.test("POST /ir/beatoraja/submit-course", (t) => { t.test("Should reject too few constraints", async (t) => { const res = await mockApi .post("/ir/beatoraja/submit-course") - .set("X-KtchiIR-Version", "2.0.0") + .set("X-TachiIR-Version", "2.0.0") .set("Authorization", "Bearer token") .send( deepmerge( @@ -380,7 +380,7 @@ t.test("POST /ir/beatoraja/submit-course", (t) => { t.test("Should reject non-array constraints", async (t) => { const res = await mockApi .post("/ir/beatoraja/submit-course") - .set("X-KtchiIR-Version", "2.0.0") + .set("X-TachiIR-Version", "2.0.0") .set("Authorization", "Bearer token") .send( deepmerge( @@ -404,7 +404,7 @@ t.test("POST /ir/beatoraja/submit-course", (t) => { t.test("Should reject too many constraints", async (t) => { const res = await mockApi .post("/ir/beatoraja/submit-course") - .set("X-KtchiIR-Version", "2.0.0") + .set("X-TachiIR-Version", "2.0.0") .set("Authorization", "Bearer token") .send( deepmerge( @@ -428,7 +428,7 @@ t.test("POST /ir/beatoraja/submit-course", (t) => { t.test("Should reject invalid constraints", async (t) => { const res = await mockApi .post("/ir/beatoraja/submit-course") - .set("X-KtchiIR-Version", "2.0.0") + .set("X-TachiIR-Version", "2.0.0") .set("Authorization", "Bearer token") .send( deepmerge( @@ -452,7 +452,7 @@ t.test("POST /ir/beatoraja/submit-course", (t) => { t.test("Should reject invalid constraints for 3", async (t) => { const res = await mockApi .post("/ir/beatoraja/submit-course") - .set("X-KtchiIR-Version", "2.0.0") + .set("X-TachiIR-Version", "2.0.0") .set("Authorization", "Bearer token") .send( deepmerge( diff --git a/server/src/server/router/ir/beatoraja/router.ts b/server/src/server/router/ir/beatoraja/router.ts index b5c05656e..d55830d1c 100644 --- a/server/src/server/router/ir/beatoraja/router.ts +++ b/server/src/server/router/ir/beatoraja/router.ts @@ -1,6 +1,6 @@ import { Router } from "express"; import db from "../../../../external/mongo/db"; -import { SYMBOL_KtchiData } from "../../../../lib/constants/ktchi"; +import { SYMBOL_TachiData } from "../../../../lib/constants/tachi"; import CreateLogCtx, { KtLogger } from "../../../../lib/logger/logger"; import { ExpressWrappedScoreImportMain } from "../../../../lib/score-import/framework/express-wrapper"; import { ParseBeatorajaSingle } from "../../../../lib/score-import/import-types/ir/beatoraja/parser"; @@ -77,7 +77,7 @@ router.use(ValidateAuthToken); * @name POST /ir/beatoraja/submit-score */ router.post("/submit-score", async (req, res) => { - const userDoc = await GetUserWithIDGuaranteed(req[SYMBOL_KtchiData]!.beatorajaAuthDoc!.userID); + const userDoc = await GetUserWithIDGuaranteed(req[SYMBOL_TachiData]!.beatorajaAuthDoc!.userID); const ParserFunction = (logger: KtLogger) => ParseBeatorajaSingle(req.body, logger); @@ -220,7 +220,7 @@ router.post("/submit-course", async (req, res) => { }); } - const userID = req[SYMBOL_KtchiData]!.beatorajaAuthDoc!.userID; + const userID = req[SYMBOL_TachiData]!.beatorajaAuthDoc!.userID; const result = await UpdateClassIfGreater( userID, diff --git a/server/src/server/router/ir/chunitachi/router.ts b/server/src/server/router/ir/chunitachi/router.ts index dba2f62bf..81143ec48 100644 --- a/server/src/server/router/ir/chunitachi/router.ts +++ b/server/src/server/router/ir/chunitachi/router.ts @@ -11,7 +11,7 @@ const router: Router = Router({ mergeParams: true }); * @name POST /ir/chunitachi/score/submit */ router.post("/import", RequireLoggedIn, async (req, res) => { - const userDoc = await GetUserWithIDGuaranteed(req.session.ktchi!.userID); + const userDoc = await GetUserWithIDGuaranteed(req.session.tachi!.userID); if (req.body?.head?.game !== "chunithm") { return res.status(400).json({ diff --git a/server/src/server/router/ir/direct-manual/router.ts b/server/src/server/router/ir/direct-manual/router.ts index d64447dbf..46f93f648 100644 --- a/server/src/server/router/ir/direct-manual/router.ts +++ b/server/src/server/router/ir/direct-manual/router.ts @@ -11,7 +11,7 @@ const router: Router = Router({ mergeParams: true }); * @name POST /ir/direct-manual/import */ router.post("/import", RequireLoggedIn, async (req, res) => { - const userDoc = await GetUserWithIDGuaranteed(req.session.ktchi!.userID); + const userDoc = await GetUserWithIDGuaranteed(req.session.tachi!.userID); const intent = req.header("X-User-Intent"); diff --git a/server/src/server/router/ir/fervidex/router.ts b/server/src/server/router/ir/fervidex/router.ts index c9e4b03f0..cbe0119b7 100644 --- a/server/src/server/router/ir/fervidex/router.ts +++ b/server/src/server/router/ir/fervidex/router.ts @@ -19,7 +19,7 @@ const ValidateFervidexHeader: RequestHandler = (req, res, next) => { if (!agent) { logger.debug( - `Rejected fervidex client with no agent from user ${req.session.ktchi!.userID}.` + `Rejected fervidex client with no agent from user ${req.session.tachi!.userID}.` ); return res.status(400).json({ success: false, @@ -30,7 +30,7 @@ const ValidateFervidexHeader: RequestHandler = (req, res, next) => { if (!agent.startsWith("fervidex/")) { logger.info( `Rejected fervidex client with invalid agent ${agent} from user ${ - req.session.ktchi!.userID + req.session.tachi!.userID }.` ); return res.status(400).json({ @@ -44,7 +44,7 @@ const ValidateFervidexHeader: RequestHandler = (req, res, next) => { if (!versions.every((e) => !Number.isNaN(e))) { logger.info( `Rejected fervidex client with agent ${agent} for NaN-like versions from user ${ - req.session.ktchi!.userID + req.session.tachi!.userID }.` ); return res.status(400).json({ @@ -55,7 +55,7 @@ const ValidateFervidexHeader: RequestHandler = (req, res, next) => { // version.minor if (versions[1] < 3) { - logger.debug(`Rejected outdated fervidex client from user ${req.session.ktchi!.userID}.`); + logger.debug(`Rejected outdated fervidex client from user ${req.session.tachi!.userID}.`); return res.status(400).json({ success: false, description: `Versions of fervidex < 1.3.0 are not supported.`, @@ -69,7 +69,7 @@ const RequireInf2ModelHeader: RequestHandler = (req, res, next) => { const swModel = req.header("X-Software-Model"); if (!swModel) { - logger.debug(`Rejected empty X-Software-Model from user ${req.session.ktchi!.userID}.`); + logger.debug(`Rejected empty X-Software-Model from user ${req.session.tachi!.userID}.`); return res.status(400).json({ success: false, description: `Invalid X-Software-Model.`, @@ -80,7 +80,7 @@ const RequireInf2ModelHeader: RequestHandler = (req, res, next) => { const softID = ParseEA3SoftID(swModel); if (softID.model !== MODEL_INFINITAS_2) { - logger.debug(`Rejected non-inf2 model from user ${req.session.ktchi!.userID}.`); + logger.debug(`Rejected non-inf2 model from user ${req.session.tachi!.userID}.`); return res.status(400).send({ success: false, description: "This endpoint is only available for INF2 clients.", @@ -101,7 +101,7 @@ const ValidateModelHeader: RequestHandler = (req, res, next) => { const swModel = req.header("X-Software-Model"); if (!swModel) { - logger.debug(`Rejected empty X-Software Model from user ${req.session.ktchi!.userID}.`); + logger.debug(`Rejected empty X-Software Model from user ${req.session.tachi!.userID}.`); return res.status(400).json({ success: false, description: `Invalid X-Software-Model.`, @@ -125,7 +125,7 @@ const ValidateModelHeader: RequestHandler = (req, res, next) => { if (softID.ext !== EXT_HEROIC_VERSE) { logger.info( `Rejected invalid Software Model ${softID.ext} from user ${ - req.session.ktchi!.userID + req.session.tachi!.userID }.` ); return res.status(400).json({ @@ -155,7 +155,7 @@ router.use(RequireLoggedIn, ValidateFervidexHeader, ValidateModelHeader); * @name POST /ir/fervidex/profile/submit */ router.post("/profile/submit", RequireInf2ModelHeader, async (req, res) => { - const userDoc = await GetUserWithIDGuaranteed(req.session.ktchi!.userID); + const userDoc = await GetUserWithIDGuaranteed(req.session.tachi!.userID); const headers = { // guaranteed to exist because of RequireInf2ModelHeader @@ -180,7 +180,7 @@ router.post("/profile/submit", RequireInf2ModelHeader, async (req, res) => { * @name POST /ir/fervidex/score/submit */ router.post("/score/submit", ValidateModelHeader, async (req, res) => { - const userDoc = await GetUserWithIDGuaranteed(req.session.ktchi!.userID); + const userDoc = await GetUserWithIDGuaranteed(req.session.tachi!.userID); const model = req.header("X-Software-Model"); @@ -243,7 +243,7 @@ router.post("/class/submit", ValidateModelHeader, async (req, res) => { const playtype: Playtypes["iidx"] = req.body.play_style === 0 ? "SP" : "DP"; const r = await UpdateClassIfGreater( - req.session.ktchi!.userID, + req.session.tachi!.userID, "iidx", playtype, "dan", diff --git a/server/src/server/router/ir/usc/router.ts b/server/src/server/router/ir/usc/router.ts index 766f83a81..8cabff9c7 100644 --- a/server/src/server/router/ir/usc/router.ts +++ b/server/src/server/router/ir/usc/router.ts @@ -1,6 +1,6 @@ import { Router, RequestHandler } from "express"; import { FindChartOnSHA256 } from "../../../../utils/queries/charts"; -import { SYMBOL_KtchiData } from "../../../../lib/constants/ktchi"; +import { SYMBOL_TachiData } from "../../../../lib/constants/tachi"; import db from "../../../../external/mongo/db"; import { ChartDocument, @@ -10,13 +10,13 @@ import { } from "tachi-common"; import { AssertStrAsPositiveNonZeroInt } from "../../../../lib/score-import/framework/common/string-asserts"; import CreateLogCtx, { KtLogger } from "../../../../lib/logger/logger"; -import { CreatePOSTScoresResponseBody, KtchiScoreToServerScore } from "./usc"; +import { CreatePOSTScoresResponseBody, TachiScoreToServerScore } from "./usc"; import { ExpressWrappedScoreImportMain } from "../../../../lib/score-import/framework/express-wrapper"; import { GetUserWithID } from "../../../../utils/user"; import { ParseIRUSC } from "../../../../lib/score-import/import-types/ir/usc/parser"; import { USCIR_MAX_LEADERBOARD_N } from "../../../../lib/constants/usc-ir"; import { CreateMulterSingleUploadMiddleware } from "../../../middleware/multer-upload"; -import { AssignToReqKtchiData } from "../../../../utils/req-ktchi-data"; +import { AssignToReqTachiData } from "../../../../utils/req-tachi-data"; import { StoreCDN } from "../../../../lib/cdn/cdn"; import { ONE_MEGABYTE } from "../../../../lib/constants/filesize"; import crypto from "crypto"; @@ -70,7 +70,7 @@ const ValidateUSCRequest: RequestHandler = async (req, res, next) => { }); } - AssignToReqKtchiData(req, { uscAuthDoc }); + AssignToReqTachiData(req, { uscAuthDoc }); return next(); }; @@ -97,7 +97,7 @@ router.get("/", (req, res) => const RetrieveChart: RequestHandler = async (req, res, next) => { const chart = await FindChartOnSHA256("usc", req.params.chartHash); - AssignToReqKtchiData(req, { + AssignToReqTachiData(req, { uscChartDoc: (chart ?? undefined) as ChartDocument<"usc:Single"> | undefined, }); @@ -110,7 +110,7 @@ const RetrieveChart: RequestHandler = async (req, res, next) => { * @name GET /ir/usc/charts/:chartHash */ router.get("/charts/:chartHash", RetrieveChart, (req, res) => { - const chart = req[SYMBOL_KtchiData]!.uscChartDoc; + const chart = req[SYMBOL_TachiData]!.uscChartDoc; if (!chart) { return res.status(200).json({ @@ -131,7 +131,7 @@ router.get("/charts/:chartHash", RetrieveChart, (req, res) => { * @name GET /ir/usc/charts/:chartHash/record */ router.get("/charts/:chartHash/record", RetrieveChart, async (req, res) => { - const chart = req[SYMBOL_KtchiData]!.uscChartDoc; + const chart = req[SYMBOL_TachiData]!.uscChartDoc; // spec ambigious here @@ -154,7 +154,7 @@ router.get("/charts/:chartHash/record", RetrieveChart, async (req, res) => { }); } - const serverScore = await KtchiScoreToServerScore(serverRecord); + const serverScore = await TachiScoreToServerScore(serverRecord); return res.status(200).json({ statusCode: STATUS_CODES.SUCCESS, @@ -169,7 +169,7 @@ router.get("/charts/:chartHash/record", RetrieveChart, async (req, res) => { * @name GET /ir/usc/charts/:chartHash/leaderboard */ router.get("/charts/:chartHash/leaderboard", RetrieveChart, async (req, res) => { - const chart = req[SYMBOL_KtchiData]!.uscChartDoc!; + const chart = req[SYMBOL_TachiData]!.uscChartDoc!; if (!(typeof req.query.mode === "string" && ["best", "rivals"].includes(req.query.mode))) { return res.status(200).json({ @@ -221,7 +221,7 @@ router.get("/charts/:chartHash/leaderboard", RetrieveChart, async (req, res) => } )) as PBScoreDocument<"usc:Single">[]; - const serverScores = await Promise.all(bestScores.map(KtchiScoreToServerScore)); + const serverScores = await Promise.all(bestScores.map(TachiScoreToServerScore)); return res.status(200).json({ statusCode: STATUS_CODES.SUCCESS, @@ -262,10 +262,10 @@ router.post("/scores", async (req, res) => { }); } - const userDoc = await GetUserWithID(req[SYMBOL_KtchiData]!.uscAuthDoc!.userID); + const userDoc = await GetUserWithID(req[SYMBOL_TachiData]!.uscAuthDoc!.userID); if (!userDoc) { - logger.severe(`User ${req[SYMBOL_KtchiData]!.uscAuthDoc!.userID} as no parent userDoc?`); + logger.severe(`User ${req[SYMBOL_TachiData]!.uscAuthDoc!.userID} as no parent userDoc?`); return res.status(200).json({ statusCode: STATUS_CODES.SERVER_ERROR, description: "An internal server error has occured.", @@ -334,7 +334,7 @@ router.post( } const correspondingScore = await db.scores.findOne({ - userID: req[SYMBOL_KtchiData]!.uscAuthDoc!.userID, + userID: req[SYMBOL_TachiData]!.uscAuthDoc!.userID, game: "usc", scoreID: req.body.identifier, }); diff --git a/server/src/server/router/ir/usc/usc.test.ts b/server/src/server/router/ir/usc/usc.test.ts index 3297feb53..c9198737a 100644 --- a/server/src/server/router/ir/usc/usc.test.ts +++ b/server/src/server/router/ir/usc/usc.test.ts @@ -1,7 +1,7 @@ import t from "tap"; import db from "../../../../external/mongo/db"; import ResetDBState from "../../../../test-utils/resets"; -import { CreatePOSTScoresResponseBody, KtchiScoreToServerScore } from "./usc"; +import { CreatePOSTScoresResponseBody, TachiScoreToServerScore } from "./usc"; import { ChartDocument, PBScoreDocument, ScoreDocument } from "tachi-common"; import deepmerge from "deepmerge"; import { CloseAllConnections } from "../../../../test-utils/close-connections"; @@ -51,13 +51,13 @@ const mockScoreDocument = { }, } as ScoreDocument; -t.test("#KtchiScoreToServerScore", (t) => { +t.test("#TachiScoreToServerScore", (t) => { t.beforeEach(ResetDBState); - t.test("Should correctly convert a ktchiScore to a serverScore", async (t) => { + t.test("Should correctly convert a tachiScore to a serverScore", async (t) => { await db.scores.insert(mockScoreDocument as ScoreDocument); - const res = await KtchiScoreToServerScore(mockScorePB); + const res = await TachiScoreToServerScore(mockScorePB); t.strictSame( res, @@ -82,7 +82,7 @@ t.test("#KtchiScoreToServerScore", (t) => { t.test("Should work for timestamped scores", async (t) => { await db.scores.insert(mockScoreDocument); - const res = await KtchiScoreToServerScore( + const res = await TachiScoreToServerScore( deepmerge(mockScorePB, { timeAchieved: 1_621_844_762_995 }) ); @@ -107,7 +107,7 @@ t.test("#KtchiScoreToServerScore", (t) => { }); t.test("Should throw if user document does not exist.", (t) => { - t.rejects(() => KtchiScoreToServerScore(deepmerge(mockScorePB, { userID: 2 } as any)), { + t.rejects(() => TachiScoreToServerScore(deepmerge(mockScorePB, { userID: 2 } as any)), { message: /User 2 from PB on chart.*has no user document\?/u, } as any); @@ -115,7 +115,7 @@ t.test("#KtchiScoreToServerScore", (t) => { }); t.test("Should throw if scorePB document does not exist.", (t) => { - t.rejects(() => KtchiScoreToServerScore(mockScorePB), { + t.rejects(() => TachiScoreToServerScore(mockScorePB), { message: /Score USC_EXAMPLE_SCORE_PB_ID does not exist, but is referenced in 1's PBDoc on/u, } as any); diff --git a/server/src/server/router/ir/usc/usc.ts b/server/src/server/router/ir/usc/usc.ts index 514b11c6b..a20fc8ea6 100644 --- a/server/src/server/router/ir/usc/usc.ts +++ b/server/src/server/router/ir/usc/usc.ts @@ -26,15 +26,15 @@ export const KT_LAMP_TO_USC: Record< * returns sentinel values in the case that certain * fields are null. */ -export async function KtchiScoreToServerScore( - ktchiScore: PBScoreDocument<"usc:Single"> +export async function TachiScoreToServerScore( + tachiScore: PBScoreDocument<"usc:Single"> ): Promise { // @optimisable // Repeated calls to this may pre-emptively provide usernames // and score PBs. const userDoc = await db.users.findOne( { - id: ktchiScore.userID, + id: tachiScore.userID, }, { projection: { @@ -45,35 +45,35 @@ export async function KtchiScoreToServerScore( if (!userDoc) { logger.severe( - `User ${ktchiScore.userID} from PB on chart ${ktchiScore.chartID} has no user document?` + `User ${tachiScore.userID} from PB on chart ${tachiScore.chartID} has no user document?` ); throw new Error( - `User ${ktchiScore.userID} from PB on chart ${ktchiScore.chartID} has no user document?` + `User ${tachiScore.userID} from PB on chart ${tachiScore.chartID} has no user document?` ); } const scorePB = (await db.scores.findOne({ - scoreID: ktchiScore.composedFrom.scorePB, + scoreID: tachiScore.composedFrom.scorePB, })) as ScoreDocument<"usc:Single"> | null; if (!scorePB) { logger.severe( - `Score ${ktchiScore.composedFrom.scorePB} does not exist, but is referenced in ${ktchiScore.userID}'s PBDoc on ${ktchiScore.chartID}?` + `Score ${tachiScore.composedFrom.scorePB} does not exist, but is referenced in ${tachiScore.userID}'s PBDoc on ${tachiScore.chartID}?` ); throw new Error( - `Score ${ktchiScore.composedFrom.scorePB} does not exist, but is referenced in ${ktchiScore.userID}'s PBDoc on ${ktchiScore.chartID}?` + `Score ${tachiScore.composedFrom.scorePB} does not exist, but is referenced in ${tachiScore.userID}'s PBDoc on ${tachiScore.chartID}?` ); } return { - score: ktchiScore.scoreData.score, - timestamp: MStoS(ktchiScore.timeAchieved ?? 0), - crit: ktchiScore.scoreData.hitData.critical ?? 0, - near: ktchiScore.scoreData.hitData.near ?? 0, - error: ktchiScore.scoreData.hitData.miss ?? 0, - ranking: ktchiScore.rankingData.rank, - lamp: KT_LAMP_TO_USC[ktchiScore.scoreData.lamp], + score: tachiScore.scoreData.score, + timestamp: MStoS(tachiScore.timeAchieved ?? 0), + crit: tachiScore.scoreData.hitData.critical ?? 0, + near: tachiScore.scoreData.hitData.near ?? 0, + error: tachiScore.scoreData.hitData.miss ?? 0, + ranking: tachiScore.rankingData.rank, + lamp: KT_LAMP_TO_USC[tachiScore.scoreData.lamp], username: userDoc.username, noteMod: scorePB.scoreMeta.noteMod ?? "NORMAL", gaugeMod: scorePB.scoreMeta.gaugeMod ?? "NORMAL", @@ -162,10 +162,10 @@ export async function CreatePOSTScoresResponseBody( )) as PBScoreDocument<"usc:Single">[]; const [score, serverRecord, adjacentAbove, adjacentBelow] = await Promise.all([ - KtchiScoreToServerScore(scorePB), - KtchiScoreToServerScore(ktServerRecord), - Promise.all(adjAbove.map(KtchiScoreToServerScore)), - Promise.all(adjBelow.map(KtchiScoreToServerScore)), + TachiScoreToServerScore(scorePB), + TachiScoreToServerScore(ktServerRecord), + Promise.all(adjAbove.map(TachiScoreToServerScore)), + Promise.all(adjBelow.map(TachiScoreToServerScore)), ]); const originalScore = (await db.scores.findOne({ diff --git a/server/src/server/server.ts b/server/src/server/server.ts index 2f2bf74bd..affcec77a 100644 --- a/server/src/server/server.ts +++ b/server/src/server/server.ts @@ -4,7 +4,7 @@ import CreateLogCtx from "../lib/logger/logger"; import expressSession from "express-session"; import { integer } from "tachi-common"; import { RedisClient } from "../external/redis/redis"; -import { SESSION_SECRET } from "../lib/env/env"; +import { SESSION_SECRET } from "../lib/setup/config"; import connectRedis from "connect-redis"; const logger = CreateLogCtx(__filename); diff --git a/server/src/test-utils/resets.ts b/server/src/test-utils/resets.ts index 583e53cc3..565f41638 100644 --- a/server/src/test-utils/resets.ts +++ b/server/src/test-utils/resets.ts @@ -7,7 +7,7 @@ import path from "path"; import CreateLogCtx from "../lib/logger/logger"; // im installing an entire library for rm rf... import rimraf from "rimraf"; -import { KTCDN_ROOT } from "../lib/env/env"; +import { KTCDN_ROOT } from "../lib/setup/config"; const logger = CreateLogCtx(__filename); diff --git a/server/src/utils/req-ktchi-data.ts b/server/src/utils/req-ktchi-data.ts deleted file mode 100644 index a6c1b02bf..000000000 --- a/server/src/utils/req-ktchi-data.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { SYMBOL_KtchiData } from "../lib/constants/ktchi"; -import { Request } from "express"; -import { KtchiRequestData } from "./types"; -import deepmerge from "deepmerge"; - -export function AssignToReqKtchiData(req: Request, data: Partial) { - if (!req[SYMBOL_KtchiData]) { - req[SYMBOL_KtchiData] = data; - } else { - req[SYMBOL_KtchiData] = deepmerge(req[SYMBOL_KtchiData]!, data); - } -} diff --git a/server/src/utils/req-tachi-data.ts b/server/src/utils/req-tachi-data.ts new file mode 100644 index 000000000..276f7c7ad --- /dev/null +++ b/server/src/utils/req-tachi-data.ts @@ -0,0 +1,12 @@ +import { SYMBOL_TachiData } from "../lib/constants/tachi"; +import { Request } from "express"; +import { TachiRequestData } from "./types"; +import deepmerge from "deepmerge"; + +export function AssignToReqTachiData(req: Request, data: Partial) { + if (!req[SYMBOL_TachiData]) { + req[SYMBOL_TachiData] = data; + } else { + req[SYMBOL_TachiData] = deepmerge(req[SYMBOL_TachiData]!, data); + } +} diff --git a/server/src/utils/types.ts b/server/src/utils/types.ts index 619474f79..f6e161f3c 100644 --- a/server/src/utils/types.ts +++ b/server/src/utils/types.ts @@ -3,26 +3,26 @@ import { integer, GenericAuthDocument, ChartDocument } from "tachi-common"; declare module "express-session" { // Inject additional properties on express-session interface SessionData { - ktchi: KtchiSessionData; + tachi: TachiSessionData; } } -export interface KtchiSessionData { +export interface TachiSessionData { userID: integer; } -export interface KTFailResponse { +export interface TachiAPIFailResponse { success: false; description: string; } -export interface KTSuccessResponse { +export interface TachiAPISuccessResponse { success: true; description: string; body: Record; } -export type KTReponse = KTFailResponse | KTSuccessResponse; +export type TachiAPIReponse = TachiAPIFailResponse | TachiAPISuccessResponse; /** * Clarity type for empty objects - such as in context. @@ -30,9 +30,9 @@ export type KTReponse = KTFailResponse | KTSuccessResponse; export type EmptyObject = Record; /** - * Data that may be monkey-patched onto req.ktchi. This holds things such as middleware results. + * Data that may be monkey-patched onto req.tachi. This holds things such as middleware results. */ -export interface KtchiRequestData { +export interface TachiRequestData { uscAuthDoc?: GenericAuthDocument; uscChartDoc?: ChartDocument<"usc:Single">;