SPB Git

Repository Public

data.ts 1.5 KB 27 lines typescript

1import { z } from "zod";2import nodesJson from "../../data/nodes.json";3import photosJson from "../../data/photos.json";4import researchJson from "../../data/research.json";5import benchmarksJson from "../../data/benchmarks.json";6import timelineJson from "../../data/timeline.json";7import plannedJson from "../../data/planned.json";8import siteJson from "../../data/site.json";9import { benchmarkSchema, nodeSchema, photoSchema, plannedSchema, researchSchema, siteSchema, timelineSchema } from "./schemas";10import { publicNodes } from "./inventory";1112/** All content is version-controlled JSON, validated at build time: a malformed record fails the build. */13export const allNodes = z.array(nodeSchema).parse(nodesJson);14export const nodes = publicNodes(allNodes);15export const photos = z.array(photoSchema).parse(photosJson);16export const research = z.array(researchSchema).parse(researchJson);17export const benchmarks = z.array(benchmarkSchema).parse(benchmarksJson);18export const timeline = z.array(timelineSchema).parse(timelineJson).sort((a, b) => b.date.localeCompare(a.date));19export const planned = z.array(plannedSchema).parse(plannedJson);20export const site = siteSchema.parse(siteJson);2122/** Only measured, non-preview observations are ever published. */23export const publishedBenchmarks = benchmarks.filter((b) => !b.preview);2425export const photoById = (id: string) => photos.find((p) => p.id === id);26export const nodeById = (id: string) => nodes.find((n) => n.id === id);27
Files main
Menu

Theme