transceiver-db/src/types.ts
2026-03-19 15:42:02 +10:00

138 lines
2.5 KiB
TypeScript

/**
* Core type definitions for the transceiver database.
*/
export type FormFactor =
| "SFP"
| "SFP+"
| "SFP28"
| "SFP56"
| "QSFP+"
| "QSFP28"
| "QSFP56"
| "QSFP-DD"
| "OSFP"
| "CFP"
| "CFP2"
| "CFP4"
| "CFP2-DCO"
| "XFP"
| "GBIC"
| "CXP"
| "SFP-DD"
| "SFP56-DD"
| "QSFP-DD800"
| "OSFP-XD";
export type FiberType = "MMF" | "SMF" | "MMF/SMF" | "Copper" | "N/A";
export type ConnectorType =
| "LC"
| "SC"
| "MPO-12"
| "MPO-16"
| "MPO-24"
| "RJ45"
| "None"
| "CS"
| "SN"
| "2xMPO-12";
export type TempRange = "COM" | "IND";
export type ProductCategory =
| "DataCenter"
| "Metro"
| "LongHaul"
| "DCI"
| "Access"
| "Coherent"
| "CWDM"
| "DWDM"
| "BiDi"
| "AOC"
| "DAC"
| "Breakout"
| "Legacy"
| "IXP"
| "5G"
| "AI";
export type PriceTier = "Budget" | "Standard" | "Premium";
export type MarketStatus = "Mainstream" | "Growth" | "Emerging" | "Legacy" | "EOL";
export interface VendorCompat {
vendor: string;
partPattern: string;
}
export interface Transceiver {
id: string;
standard: string;
ieeeReference?: string;
formFactor: FormFactor;
speed: string;
speedGbps: number;
lanes?: number;
laneRate?: string;
modulation?: string;
reachMeters: number;
reachLabel: string;
fiberType: FiberType;
wavelengths: string;
connector: ConnectorType;
powerConsumptionW: number;
tempRange: TempRange;
category: ProductCategory;
priceTier: PriceTier;
useCase: string;
vendors: VendorCompat[];
tags: string[];
generation?: string;
marketStatus?: MarketStatus;
yearIntroduced?: number;
breakoutCapable?: boolean;
breakoutTo?: string;
}
export interface Standard {
standard: string;
ieeeReference: string;
speed: string;
lanes: number;
laneRate: string;
modulation: string;
fiberType: string;
wavelength: string;
maxReachMeters: number;
maxReachLabel: string;
connector: string;
fecRequired: boolean;
formFactors: string[];
yearRatified: number;
notes: string;
}
export interface Competitor {
name: string;
type: "OEM" | "Whitebox" | "Manufacturer" | "Distributor" | "Compatible";
headquarters: string;
marketPosition: string;
formFactorsOffered: string[];
speedTiersOffered: string[];
strengths: string[];
weaknesses: string[];
}
export interface Breakout {
id: string;
from: string;
to: string;
formFactor: string;
description: string;
cableType: "Passive" | "Active";
maxLength: string;
speedPerLane: string;
}