MCPcopy Create free account
hub / github.com/monkeytypegame/monkeytype / validateLanguages

Function validateLanguages

frontend/scripts/check-assets.ts:257–350  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

255}
256
257async function validateLanguages(): Promise<void> {
258 const problems = new Problems<Language, "_additional" | "_groups">(
259 "Languages",
260 {
261 _additional:
262 "Language files present but missing in packages/schemas/src/languages.ts",
263 _groups:
264 "Problems in LanguageGroups in frontend/src/ts/constants/languages.ts",
265 },
266 );
267
268 const duplicatePercentageThreshold = 0.0001;
269 for (const language of LanguageList) {
270 let languageFileData: LanguageObject;
271 try {
272 languageFileData = JSON.parse(
273 fs.readFileSync(`./static/languages/${language}.json`, {
274 encoding: "utf8",
275 flag: "r",
276 }),
277 ) as LanguageObject;
278 } catch (e) {
279 problems.add(
280 language,
281 `missing json file frontend/static/languages/${language}.json`,
282 );
283
284 continue;
285 }
286 problems.addValidation(
287 language,
288 LanguageObjectSchema.extend({
289 _comment: z.string().optional(),
290 }).safeParse(languageFileData),
291 );
292
293 if (languageFileData.name !== language) {
294 problems.add(language, `Name is not ${language}`);
295 }
296 const duplicates = findDuplicates(languageFileData.words);
297 const duplicatePercentage =
298 (duplicates.length / languageFileData.words.length) * 100;
299 if (duplicatePercentage >= duplicatePercentageThreshold) {
300 problems.add(
301 language,
302 `contains ${duplicates.length} (${Math.round(
303 duplicatePercentage,
304 )}%) duplicates:\n ${duplicates.join(",")}`,
305 );
306 }
307 }
308
309 //no files not defined in LanguageList
310 fs.readdirSync("./static/languages")
311 .filter((it) => !LanguageList.some((language) => `${language}.json` === it))
312 .forEach((it) => problems.add("_additional", it));
313
314 //check groups

Callers

nothing calls this directly

Calls 7

addMethod · 0.95
addValidationMethod · 0.95
toStringMethod · 0.95
hasErrorMethod · 0.95
findDuplicatesFunction · 0.85
pushMethod · 0.80
setMethod · 0.80

Tested by

no test coverage detected