()
| 407 | } |
| 408 | |
| 409 | function buildPages() { |
| 410 | const pages = new Map<string, RenderedPage>(); |
| 411 | const modelList = sortModels([...ModelEntries.values()]); |
| 412 | const providerList = Object.entries(Providers).sort(([, a], [, b]) => |
| 413 | a.name.localeCompare(b.name), |
| 414 | ); |
| 415 | |
| 416 | const addPage = (route: string, page: RenderedPage) => { |
| 417 | pages.set(normalizeRoute(route), page); |
| 418 | }; |
| 419 | |
| 420 | const home = renderPage( |
| 421 | "models", |
| 422 | <HomePage models={modelList} providers={providerList} labs={LabEntries} />, |
| 423 | ); |
| 424 | |
| 425 | addPage("/", home); |
| 426 | addPage("/models", home); |
| 427 | addPage( |
| 428 | "/providers", |
| 429 | renderPage("providers", <ProvidersPage providers={providerList} />), |
| 430 | ); |
| 431 | addPage("/labs", renderPage("labs", <LabsPage labs={LabEntries} />)); |
| 432 | |
| 433 | for (const model of modelList) { |
| 434 | addPage( |
| 435 | modelHref(model.id), |
| 436 | renderPage("models", <ModelPage model={model} />, modelPageMetadata(model)), |
| 437 | ); |
| 438 | } |
| 439 | |
| 440 | for (const [providerId, provider] of providerList) { |
| 441 | const models = ProviderModelEntries.filter( |
| 442 | (entry) => entry.providerId === providerId, |
| 443 | ); |
| 444 | addPage( |
| 445 | providerHref(providerId), |
| 446 | renderPage( |
| 447 | "providers", |
| 448 | <ProviderPage providerId={providerId} provider={provider} models={models} />, |
| 449 | providerPageMetadata(providerId, provider, models), |
| 450 | ), |
| 451 | ); |
| 452 | } |
| 453 | |
| 454 | for (const lab of LabEntries) { |
| 455 | addPage(labHref(lab.id), renderPage("labs", <LabPage lab={lab} />, labPageMetadata(lab))); |
| 456 | } |
| 457 | |
| 458 | return pages; |
| 459 | } |
| 460 | |
| 461 | function renderPage( |
| 462 | active: ActiveSection, |
no test coverage detected