SPB Git forge
38commits 1branches 0releases
338.7 MBsize
maindefault branch
4 h agolast push
HTML 53.9% TypeScript 44.5% JavaScript 0.6% SQL 0.5%
2.4 KB · 64 lines typescript
Raw Blame History
1import type { CloudRegionDetail as CloudRegionDetailContract, FacilityStatus, FacilitySummary, IxpDetail as IxpDetailContract, SourceRef } from "@dci/core";23/**4 * Response shapes implemented by @dci/api that extend the shared contract in packages/core/src/api-types.ts5 * (see apps/api/README.md and apps/api/src/repositories/*).6 */78/** Contract CloudRegionDetail (hostFacilities / marketFacilities / note / events / provenance) + the legacy fields the API still returns. */9export interface CloudRegionDetail extends CloudRegionDetailContract {10  regionName: string | null;11  countryName: string | null;12  /** legacy alias of marketFacilities */13  facilitiesInMetro: FacilitySummary[];14  updatedAt: string;15}1617/** Contract IxpDetail (facilities / operators / nearbyFacilities / trafficNote) + the extra fields the web reads. */18export interface IxpDetail extends IxpDetailContract {19  countryName: string | null;20  metro: { id: string; slug: string; name: string } | null;21  regionContinent: string | null;22  updatedAt: string;23}2425export interface SourceWithCounts extends SourceRef {26  connectorId: string;27  priority: number;28  robotsAllowed: boolean | null;29  notes: string | null;30  documents: number;31  provenanceRows: number;32  facilities: number;33  lastDocumentAt: string | null;34  updatedAt: string;35}3637export interface SourceDetail extends SourceWithCounts {38  byPageType: Array<{ pageType: string; count: number }>;39  byEntityType: Array<{ entityType: string; count: number }>;40}4142export interface PipelineAggregates {43  byStatus: Array<{ status: FacilityStatus; count: number; mw: number | null; investmentUsd: number | null }>;44  byYear: Array<{ year: string; count: number; mw: number | null }>;45  byCountry: Array<{ countryIso2: string; name: string | null; slug: string | null; count: number; mw: number | null }>;46  totals: { projects: number; plannedMw: number | null; investmentUsd: number | null; ai: number };47}4849export interface SitemapEntry {50  slug: string;51  updatedAt: string;52}5354export const SITEMAP_KINDS = ["facilities", "operators", "countries", "metros", "projects", "cloud-regions"] as const;55export type SitemapKind = (typeof SITEMAP_KINDS)[number];5657/** `meta` returned by the operator / country / metro detail endpoints (facilities paginated with ?fPage). */58export interface DetailFacilitiesMeta {59  facilitiesPage?: number;60  facilitiesPerPage?: number;61  facilitiesTotal?: number;62  methodology?: string;63}64