diff --git a/src/utils/solutions.ts b/src/utils/solutions.ts index fc354562..504bc20b 100644 --- a/src/utils/solutions.ts +++ b/src/utils/solutions.ts @@ -4,9 +4,7 @@ import { z } from "zod"; export type SolutionPage = z.infer; export type SolutionData = z.infer; -export type SolutionPages = z.infer; -type MaybeSolutionPages = z.infer; -type MaybeSolutionPage = z.infer; +export type SolutionPages = z.infer; const solutionDataSchema = z .object({ @@ -27,21 +25,23 @@ const solutionPageSchema = z const solutionPageNullableSchema = solutionPageSchema.optional(); -const solutionPagesSchema = solutionPageNullableSchema.array().readonly(); +const solutionPagesNullableSchema = solutionPageNullableSchema + .array() + .readonly(); -const solutionPagesFilteredSchema = solutionPagesSchema.transform( - (val: MaybeSolutionPages): readonly SolutionPage[] => +const solutionPagesSchema = solutionPagesNullableSchema.transform( + (val: z.infer): readonly SolutionPage[] => val.filter( - (val: MaybeSolutionPage): val is SolutionPage => val !== undefined, + (val: z.infer): val is SolutionPage => + val !== undefined, ), ); -const solutionPagesPromiseSchema = z.promise(solutionPagesFilteredSchema); - const dir = "src/content"; export const solutions = await getSolutions(); /** Get all solutions. */ +// biome-ignore lint/nursery/useAwait: export async function getSolutions(): Promise { const files = Deno.readDir(dir); const promises = []; @@ -50,7 +50,7 @@ export async function getSolutions(): Promise { promises.push(getSolution(slug)); } - return await solutionPagesPromiseSchema.parse(Promise.all(promises)); + return z.promise(solutionPagesSchema).parse(Promise.all(promises)); } /** Get a solution. */