From af790210b45c5f92faf5875d38f339a01ddb082f Mon Sep 17 00:00:00 2001 From: Nad Alaba <37968805+nadalaba@users.noreply.github.com> Date: Tue, 17 Mar 2026 22:17:33 +0300 Subject: [PATCH] clean up some types --- frontend/scripts/check-assets.ts | 10 ++------ frontend/scripts/get-short-quotes.ts | 36 ++++++++++++++++++---------- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/frontend/scripts/check-assets.ts b/frontend/scripts/check-assets.ts index f58b54d49d5c..80f83819b7b5 100644 --- a/frontend/scripts/check-assets.ts +++ b/frontend/scripts/check-assets.ts @@ -11,7 +11,6 @@ import { Language, LanguageObject, LanguageObjectSchema, - LanguageSchema, } from "@monkeytype/schemas/languages"; import { Layout, ThemeName } from "@monkeytype/schemas/configs"; import { LayoutsList } from "../src/ts/constants/layouts"; @@ -154,7 +153,7 @@ async function validateQuotes(): Promise { const shortQuotes = JSON.parse( fs.readFileSync("./scripts/short-quotes.json", "utf8"), - ) as Partial>; + ) as Record; const quotesFiles = fs.readdirSync("./static/quotes/"); for (let quotefilename of quotesFiles) { @@ -185,12 +184,7 @@ async function validateQuotes(): Promise { } //check schema - const schema = QuoteDataSchema.extend({ - language: LanguageSchema - //icelandic only exists as icelandic_1k, language in quote file is stripped of its size - .or(z.literal("icelandic")), - }); - problems.addValidation(quotefilename, schema.safeParse(quoteData)); + problems.addValidation(quotefilename, QuoteDataSchema.safeParse(quoteData)); //check for duplicate ids const duplicates = findDuplicates(quoteData.quotes.map((it) => it.id)); diff --git a/frontend/scripts/get-short-quotes.ts b/frontend/scripts/get-short-quotes.ts index 7098fd7fa4b6..2045b13ac8d1 100644 --- a/frontend/scripts/get-short-quotes.ts +++ b/frontend/scripts/get-short-quotes.ts @@ -1,26 +1,38 @@ -import * as fs from "fs"; import { QuoteData } from "@monkeytype/schemas/quotes"; +import * as fs from "fs"; + +import path, { dirname } from "path"; +import { fileURLToPath } from "url"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); +const FRONTEND_ROOT = path.resolve(__dirname, ".."); async function getShortQuotes(): Promise { - let shortQuotes: Partial> = {}; + const shortQuotes = {} as Record; let count = 0; - const quotesFiles = fs.readdirSync("./static/quotes/"); + const quotesFiles = fs.readdirSync( + path.resolve(FRONTEND_ROOT, "static/quotes"), + ); for (const quotefilename of quotesFiles) { - const lang = quotefilename.split(".")[0] as QuoteData["language"]; - let quoteData: QuoteData; - let quoteJson: string; - quoteJson = fs.readFileSync(`./static/quotes/${lang}.json`, "utf8"); - //quoteJson = await (await fetch(`https://raw.githubusercontent.com/monkeytypegame/monkeytype/refs/heads/master/frontend/static/quotes/${lang}.json`)).json(); - quoteData = JSON.parse(quoteJson) as QuoteData; + const quoteJson = fs.readFileSync( + path.resolve(FRONTEND_ROOT, `static/quotes/${quotefilename}`), + "utf8", + ); + //const quoteJson = await (await fetch(`https://raw.githubusercontent.com/monkeytypegame/monkeytype/refs/heads/master/frontend/static/quotes/${quotefilename}`)).json(); + const quoteData = JSON.parse(quoteJson) as QuoteData; for (const quote of quoteData.quotes) { if (quote.length < 60) { - shortQuotes[lang] ??= []; - shortQuotes[lang].push(quote.id); + shortQuotes[quoteData.language] ??= []; + shortQuotes[quoteData.language].push(quote.id); count++; } } } - fs.writeFileSync("./scripts/short-quotes.json", JSON.stringify(shortQuotes)); + fs.writeFileSync( + path.resolve(__dirname, "short-quotes.json"), + JSON.stringify(shortQuotes), + ); console.log(`There are ${count} allowed short quotes`); }