spb/datacenterindex
Public
HTML 53.9%
TypeScript 44.5%
JavaScript 0.6%
SQL 0.5%
1/**2 * Curated canonical operator names + aliases. Used by operator resolution so that "Interxion", "Telx" and3 * "Digital Realty Trust" all land on one operator record, and to infer kind / cloud / carrier flags.4 * Only naming knowledge lives here — never facility data.5 */6import { normalizeName, type OperatorKind } from "@dci/core";78export interface CanonicalOperator {9 name: string;10 aliases: string[];11 kind: OperatorKind;12 website?: string;13 hqCountryIso2?: string;14 isCloudProvider?: boolean;15 isCarrier?: boolean;16 /** canonical name of the parent group, when the brand is a subsidiary */17 parent?: string;18}1920export const HYPERSCALER_NAMES = ["Amazon Web Services", "Microsoft", "Google", "Meta", "Oracle", "Alibaba Cloud", "Tencent Cloud", "Apple", "IBM", "Huawei Cloud"] as const;2122export const CANONICAL_OPERATORS: CanonicalOperator[] = [23 // Hyperscalers / cloud24 { name: "Amazon Web Services", aliases: ["AWS", "Amazon", "Amazon Data Services", "Amazon.com", "Amazon Web Services, Inc."], kind: "hyperscaler", website: "https://aws.amazon.com", hqCountryIso2: "US", isCloudProvider: true },25 { name: "Microsoft", aliases: ["Microsoft Azure", "Azure", "Microsoft Corporation", "Microsoft Corp"], kind: "hyperscaler", website: "https://azure.microsoft.com", hqCountryIso2: "US", isCloudProvider: true },26 { name: "Google", aliases: ["Google Cloud", "Google Cloud Platform", "GCP", "Google LLC", "Alphabet"], kind: "hyperscaler", website: "https://cloud.google.com", hqCountryIso2: "US", isCloudProvider: true },27 { name: "Meta", aliases: ["Facebook", "Meta Platforms", "Meta Platforms, Inc."], kind: "hyperscaler", website: "https://www.meta.com", hqCountryIso2: "US" },28 { name: "Oracle", aliases: ["Oracle Cloud", "Oracle Cloud Infrastructure", "OCI", "Oracle Corporation"], kind: "hyperscaler", website: "https://www.oracle.com/cloud", hqCountryIso2: "US", isCloudProvider: true },29 { name: "Alibaba Cloud", aliases: ["Aliyun", "Alibaba", "Alibaba Group"], kind: "hyperscaler", website: "https://www.alibabacloud.com", hqCountryIso2: "CN", isCloudProvider: true },30 { name: "Tencent Cloud", aliases: ["Tencent"], kind: "hyperscaler", website: "https://www.tencentcloud.com", hqCountryIso2: "CN", isCloudProvider: true },31 { name: "Huawei Cloud", aliases: ["Huawei", "Huawei Technologies"], kind: "hyperscaler", website: "https://www.huaweicloud.com", hqCountryIso2: "CN", isCloudProvider: true },32 { name: "IBM", aliases: ["IBM Cloud", "International Business Machines", "SoftLayer"], kind: "hyperscaler", website: "https://www.ibm.com/cloud", hqCountryIso2: "US", isCloudProvider: true },33 { name: "Apple", aliases: ["Apple Inc.", "Apple Inc"], kind: "hyperscaler", website: "https://www.apple.com", hqCountryIso2: "US" },34 { name: "OVHcloud", aliases: ["OVH", "OVH Groupe", "OVH SAS"], kind: "cloud", website: "https://www.ovhcloud.com", hqCountryIso2: "FR", isCloudProvider: true },35 { name: "CoreWeave", aliases: ["CoreWeave, Inc."], kind: "cloud", website: "https://www.coreweave.com", hqCountryIso2: "US", isCloudProvider: true },36 { name: "Lambda", aliases: ["Lambda Labs", "Lambda, Inc."], kind: "cloud", website: "https://lambda.ai", hqCountryIso2: "US", isCloudProvider: true },37 { name: "Crusoe", aliases: ["Crusoe Energy", "Crusoe Energy Systems", "Crusoe Cloud"], kind: "developer", website: "https://www.crusoe.ai", hqCountryIso2: "US", isCloudProvider: true },38 { name: "Applied Digital", aliases: ["Applied Digital Corporation", "APLD"], kind: "developer", website: "https://www.applieddigital.com", hqCountryIso2: "US" },39 { name: "Core Scientific", aliases: ["Core Scientific, Inc."], kind: "developer", website: "https://corescientific.com", hqCountryIso2: "US" },40 { name: "Cipher Mining", aliases: ["Cipher Mining Inc."], kind: "developer", website: "https://www.ciphermining.com", hqCountryIso2: "US" },4142 // Global colocation / wholesale43 { name: "Equinix", aliases: ["Equinix Inc.", "Equinix, Inc.", "Equinix Inc", "Equinix Metal", "Packet"], kind: "colocation", website: "https://www.equinix.com", hqCountryIso2: "US" },44 { name: "Digital Realty", aliases: ["Digital Realty Trust", "Digital Realty Trust, Inc.", "DLR", "Interxion", "InterXion", "Telx", "DuPont Fabros", "DuPont Fabros Technology", "DFT", "Teraco Digital Realty"], kind: "colocation", website: "https://www.digitalrealty.com", hqCountryIso2: "US" },45 { name: "NTT Global Data Centers", aliases: ["NTT", "NTT Ltd.", "NTT Ltd", "NTT DATA", "NTT Communications", "RagingWire", "RagingWire Data Centers", "e-shelter", "e-shelter services", "Gyron", "Gyron Internet", "NetMagic", "Netmagic Solutions", "NTT Global Data Centers Americas"], kind: "colocation", website: "https://services.global.ntt", hqCountryIso2: "JP" },46 { name: "Iron Mountain Data Centers", aliases: ["Iron Mountain", "Iron Mountain Incorporated", "IO", "IO Data Centers", "Fortrust"], kind: "colocation", website: "https://www.ironmountain.com/data-centers", hqCountryIso2: "US" },47 { name: "CyrusOne", aliases: ["CyrusOne LLC", "CyrusOne Inc.", "Cyrus One"], kind: "colocation", website: "https://www.cyrusone.com", hqCountryIso2: "US" },48 { name: "QTS", aliases: ["QTS Data Centers", "QTS Realty Trust", "Quality Technology Services"], kind: "colocation", website: "https://www.qtsdatacenters.com", hqCountryIso2: "US" },49 { name: "Vantage Data Centers", aliases: ["Vantage", "Vantage Data Centres", "Etix Everywhere", "Next Generation Data", "NGD"], kind: "colocation", website: "https://vantage-dc.com", hqCountryIso2: "US" },50 { name: "STACK Infrastructure", aliases: ["STACK", "Stack Infrastructure", "STACK EMEA", "Supernap Italia", "Infinity SDC"], kind: "colocation", website: "https://www.stackinfra.com", hqCountryIso2: "US" },51 { name: "CoreSite", aliases: ["CoreSite Realty", "CoreSite (American Tower)", "American Tower CoreSite"], kind: "colocation", website: "https://www.coresite.com", hqCountryIso2: "US", parent: "American Tower" },52 { name: "American Tower", aliases: ["American Tower Corporation", "AMT"], kind: "investor", website: "https://www.americantower.com", hqCountryIso2: "US" },53 { name: "Switch", aliases: ["Switch, Inc.", "Switch Inc", "Switch SUPERNAP", "SUPERNAP"], kind: "colocation", website: "https://www.switch.com", hqCountryIso2: "US" },54 { name: "DataBank", aliases: ["DataBank Holdings", "zColo", "Zayo Colocation", "Edge Presence"], kind: "colocation", website: "https://www.databank.com", hqCountryIso2: "US" },55 { name: "EdgeConneX", aliases: ["Edge ConneX", "EdgeConnex"], kind: "colocation", website: "https://www.edgeconnex.com", hqCountryIso2: "US" },56 { name: "Compass Datacenters", aliases: ["Compass", "Compass Data Centers", "Compass Quantum"], kind: "colocation", website: "https://www.compassdatacenters.com", hqCountryIso2: "US" },57 { name: "Aligned Data Centers", aliases: ["Aligned", "Aligned Energy"], kind: "colocation", website: "https://www.aligneddc.com", hqCountryIso2: "US" },58 { name: "Flexential", aliases: ["Peak 10", "ViaWest", "Peak 10 + ViaWest"], kind: "colocation", website: "https://www.flexential.com", hqCountryIso2: "US" },59 { name: "Cologix", aliases: ["Cologix, Inc.", "COLO-D", "Colo-D", "vXchnge"], kind: "colocation", website: "https://www.cologix.com", hqCountryIso2: "US" },60 { name: "Colt Data Centre Services", aliases: ["Colt DCS", "Colt Data Centres", "Colt Technology Services"], kind: "colocation", website: "https://www.coltdatacentres.net", hqCountryIso2: "GB" },61 { name: "Global Switch", aliases: ["Global Switch Holdings"], kind: "colocation", website: "https://www.globalswitch.com", hqCountryIso2: "GB" },62 { name: "Telehouse", aliases: ["Telehouse International", "KDDI Telehouse", "Telehouse (KDDI)"], kind: "colocation", website: "https://www.telehouse.net", hqCountryIso2: "JP", parent: "KDDI" },63 { name: "KDDI", aliases: ["KDDI Corporation"], kind: "carrier", website: "https://www.kddi.com", hqCountryIso2: "JP", isCarrier: true },64 { name: "AirTrunk", aliases: ["Air Trunk", "AirTrunk Operating"], kind: "colocation", website: "https://airtrunk.com", hqCountryIso2: "AU" },65 { name: "NEXTDC", aliases: ["NextDC", "NEXTDC Limited"], kind: "colocation", website: "https://www.nextdc.com", hqCountryIso2: "AU" },66 { name: "Scala Data Centers", aliases: ["Scala", "Scala Data Center"], kind: "colocation", website: "https://scaladatacenters.com", hqCountryIso2: "BR" },67 { name: "Ascenty", aliases: ["Ascenty Data Centers"], kind: "colocation", website: "https://ascenty.com", hqCountryIso2: "BR", parent: "Digital Realty" },68 { name: "ST Telemedia Global Data Centres", aliases: ["STT GDC", "ST Telemedia", "STT Global Data Centres", "VIRTUS Data Centres", "Virtus", "VIRTUS"], kind: "colocation", website: "https://www.sttelemediagdc.com", hqCountryIso2: "SG" },69 { name: "Princeton Digital Group", aliases: ["PDG"], kind: "colocation", website: "https://www.princetondg.com", hqCountryIso2: "SG" },70 { name: "Yondr", aliases: ["Yondr Group"], kind: "developer", website: "https://www.yondrgroup.com", hqCountryIso2: "GB" },71 { name: "CloudHQ", aliases: ["Cloud HQ", "CloudHQ LLC"], kind: "developer", website: "https://cloudhq.com", hqCountryIso2: "US" },72 { name: "Sabey Data Centers", aliases: ["Sabey", "Sabey Data Center Properties"], kind: "colocation", website: "https://sabeydatacenters.com", hqCountryIso2: "US" },73 { name: "T5 Data Centers", aliases: ["T5", "T5 Data Centres"], kind: "developer", website: "https://t5datacenters.com", hqCountryIso2: "US" },74 { name: "Centersquare", aliases: ["Cyxtera", "Cyxtera Technologies", "Evoque", "Evoque Data Center Solutions", "CenterSquare"], kind: "colocation", website: "https://www.centersquaredc.com", hqCountryIso2: "US" },75 { name: "Element Critical", aliases: ["Element Critical Data Centers"], kind: "colocation", website: "https://elementcritical.com", hqCountryIso2: "US" },76 { name: "Green Mountain", aliases: ["Green Mountain AS", "Green Mountain Data Centers"], kind: "colocation", website: "https://greenmountain.no", hqCountryIso2: "NO" },77 { name: "atNorth", aliases: ["Advania Data Centers", "At North"], kind: "colocation", website: "https://www.atnorth.com", hqCountryIso2: "IS" },78 { name: "Bulk Infrastructure", aliases: ["Bulk", "Bulk Data Centers"], kind: "colocation", website: "https://www.bulkinfrastructure.com", hqCountryIso2: "NO" },79 { name: "Data4", aliases: ["DATA4", "Data4 Group", "DATA4 Group"], kind: "colocation", website: "https://www.data4group.com", hqCountryIso2: "FR" },80 { name: "Digital Edge", aliases: ["Digital Edge DC", "Digital Edge (Singapore)"], kind: "colocation", website: "https://www.digitaledgedc.com", hqCountryIso2: "SG" },81 { name: "Keppel Data Centres", aliases: ["Keppel DC", "Keppel DC REIT", "Keppel Data Centers"], kind: "colocation", website: "https://www.keppeldatacentres.com", hqCountryIso2: "SG" },82 { name: "GDS", aliases: ["GDS Holdings", "GDS Services", "DayOne", "DayOne Data Centers"], kind: "colocation", website: "https://www.gds-services.com", hqCountryIso2: "CN" },83 { name: "VNET", aliases: ["21Vianet", "VNET Group", "21Vianet Group"], kind: "colocation", website: "https://www.vnet.com", hqCountryIso2: "CN" },84 { name: "Chindata", aliases: ["Chindata Group", "Bridge Data Centres", "Bridge DC"], kind: "colocation", website: "https://www.chindatagroup.com", hqCountryIso2: "CN" },85 { name: "Sify Technologies", aliases: ["Sify", "Sify Infinit Spaces"], kind: "colocation", website: "https://www.sifytechnologies.com", hqCountryIso2: "IN" },86 { name: "Nxtra by Airtel", aliases: ["Nxtra", "Nxtra Data", "Airtel Nxtra", "Bharti Airtel Nxtra"], kind: "colocation", website: "https://www.nxtra.in", hqCountryIso2: "IN" },87 { name: "Teraco", aliases: ["Teraco Data Environments"], kind: "colocation", website: "https://www.teraco.co.za", hqCountryIso2: "ZA", parent: "Digital Realty" },88 { name: "Africa Data Centres", aliases: ["Africa Data Centers", "ADC"], kind: "colocation", website: "https://www.africadatacentres.com", hqCountryIso2: "ZA" },89 { name: "ODATA", aliases: ["Odata", "ODATA Colocation"], kind: "colocation", website: "https://odatacolocation.com", hqCountryIso2: "BR", parent: "Aligned Data Centers" },90 { name: "Elea Data Centers", aliases: ["Elea", "Elea Digital"], kind: "colocation", website: "https://eleadatacenters.com", hqCountryIso2: "BR" },91 { name: "Vocus", aliases: ["Vocus Group", "Vocus Communications"], kind: "carrier", website: "https://www.vocus.com.au", hqCountryIso2: "AU", isCarrier: true },92 { name: "Macquarie Data Centres", aliases: ["Macquarie Telecom", "Macquarie Technology Group", "Macquarie Data Centers"], kind: "colocation", website: "https://macquariedatacentres.com", hqCountryIso2: "AU" },93 { name: "Canberra Data Centres", aliases: ["CDC", "CDC Data Centres", "Canberra Data Centers"], kind: "colocation", website: "https://www.cdcdatacentres.com.au", hqCountryIso2: "AU" },94 { name: "Kao Data", aliases: ["Kao Data Campus"], kind: "colocation", website: "https://www.kaodata.com", hqCountryIso2: "GB" },95 { name: "Ark Data Centres", aliases: ["Ark", "Ark Data Centers"], kind: "colocation", website: "https://arkdatacentres.co.uk", hqCountryIso2: "GB" },96 { name: "Pulsant", aliases: ["Pulsant Ltd"], kind: "colocation", website: "https://www.pulsant.com", hqCountryIso2: "GB" },97 { name: "Echelon Data Centres", aliases: ["Echelon", "Echelon DC"], kind: "developer", website: "https://echelon-dc.com", hqCountryIso2: "IE" },98 { name: "Lumen Technologies", aliases: ["Lumen", "CenturyLink", "Level 3", "Level 3 Communications", "Level(3)"], kind: "carrier", website: "https://www.lumen.com", hqCountryIso2: "US", isCarrier: true },99 { name: "Zayo", aliases: ["Zayo Group", "Zayo Group Holdings"], kind: "carrier", website: "https://www.zayo.com", hqCountryIso2: "US", isCarrier: true },100 { name: "TierPoint", aliases: ["Tier Point", "TierPoint LLC"], kind: "colocation", website: "https://www.tierpoint.com", hqCountryIso2: "US" },101 { name: "365 Data Centers", aliases: ["365 Main", "365 Datacenters"], kind: "colocation", website: "https://www.365datacenters.com", hqCountryIso2: "US" },102 { name: "Hivelocity", aliases: ["Hivelocity Inc."], kind: "colocation", website: "https://www.hivelocity.net", hqCountryIso2: "US" },103 { name: "Evocative", aliases: ["Evocative Data Centers", "INAP", "Internap"], kind: "colocation", website: "https://www.evocative.com", hqCountryIso2: "US" },104 { name: "Involta", aliases: ["Involta LLC"], kind: "colocation", website: "https://www.involta.com", hqCountryIso2: "US" },105 { name: "Netrality Data Centers", aliases: ["Netrality", "Netrality Properties"], kind: "colocation", website: "https://netrality.com", hqCountryIso2: "US" },106 { name: "Stream Data Centers", aliases: ["Stream", "Stream Realty Data Centers"], kind: "developer", website: "https://www.streamdatacenters.com", hqCountryIso2: "US" },107 { name: "Skybox Datacenters", aliases: ["Skybox", "Skybox Data Centers"], kind: "developer", website: "https://www.skyboxdatacenters.com", hqCountryIso2: "US" },108 { name: "Prime Data Centers", aliases: ["Prime DC", "Prime Data Centres"], kind: "developer", website: "https://www.primedatacenters.com", hqCountryIso2: "US" },109 { name: "Corscale Data Centers", aliases: ["Corscale", "Patrinely Corscale"], kind: "developer", website: "https://www.corscale.com", hqCountryIso2: "US" },110 { name: "Rowan Digital Infrastructure", aliases: ["Rowan Digital", "Rowan"], kind: "developer", website: "https://www.rowandigital.com", hqCountryIso2: "US" },111 { name: "Telecom Italia Sparkle", aliases: ["TI Sparkle", "Sparkle"], kind: "carrier", website: "https://www.tisparkle.com", hqCountryIso2: "IT", isCarrier: true },112 { name: "Orange", aliases: ["Orange S.A.", "Orange Business", "France Télécom", "France Telecom"], kind: "carrier", website: "https://www.orange.com", hqCountryIso2: "FR", isCarrier: true },113 { name: "Deutsche Telekom", aliases: ["T-Systems", "Telekom"], kind: "carrier", website: "https://www.telekom.com", hqCountryIso2: "DE", isCarrier: true },114 { name: "BT", aliases: ["BT Group", "British Telecom", "British Telecommunications"], kind: "carrier", website: "https://www.bt.com", hqCountryIso2: "GB", isCarrier: true },115 { name: "Verizon", aliases: ["Verizon Business", "Verizon Communications", "MCI"], kind: "carrier", website: "https://www.verizon.com", hqCountryIso2: "US", isCarrier: true },116 { name: "AT&T", aliases: ["AT&T Inc.", "ATT"], kind: "carrier", website: "https://www.att.com", hqCountryIso2: "US", isCarrier: true },117 { name: "Cogent", aliases: ["Cogent Communications"], kind: "carrier", website: "https://www.cogentco.com", hqCountryIso2: "US", isCarrier: true },118 { name: "Arelion", aliases: ["Telia Carrier", "Telia"], kind: "carrier", website: "https://www.arelion.com", hqCountryIso2: "SE", isCarrier: true },119 { name: "GTT", aliases: ["GTT Communications"], kind: "carrier", website: "https://www.gtt.net", hqCountryIso2: "US", isCarrier: true },120 { name: "Tata Communications", aliases: ["Tata"], kind: "carrier", website: "https://www.tatacommunications.com", hqCountryIso2: "IN", isCarrier: true },121 { name: "Singtel", aliases: ["Singapore Telecommunications", "SingTel"], kind: "carrier", website: "https://www.singtel.com", hqCountryIso2: "SG", isCarrier: true },122 { name: "China Telecom", aliases: ["China Telecom Global", "CTG"], kind: "carrier", website: "https://www.chinatelecomglobal.com", hqCountryIso2: "CN", isCarrier: true },123 { name: "Telstra", aliases: ["Telstra Corporation", "Telstra International"], kind: "carrier", website: "https://www.telstra.com", hqCountryIso2: "AU", isCarrier: true },124 { name: "Bell Canada", aliases: ["Bell", "BCE", "Bell Business Markets"], kind: "carrier", website: "https://www.bell.ca", hqCountryIso2: "CA", isCarrier: true },125 { name: "Rogers", aliases: ["Rogers Communications"], kind: "carrier", website: "https://www.rogers.com", hqCountryIso2: "CA", isCarrier: true },126 { name: "TELUS", aliases: ["Telus", "TELUS Communications"], kind: "carrier", website: "https://www.telus.com", hqCountryIso2: "CA", isCarrier: true },127 { name: "eStruxture", aliases: ["eStruxture Data Centers", "Estruxture"], kind: "colocation", website: "https://www.estruxture.com", hqCountryIso2: "CA" },128 { name: "Urbacon Data Centre Solutions", aliases: ["Urbacon", "UDCS"], kind: "colocation", website: "https://www.urbacondcs.com", hqCountryIso2: "CA" },129 { name: "QScale", aliases: ["Q-Scale"], kind: "developer", website: "https://www.qscale.com", hqCountryIso2: "CA" },130 { name: "Hut 8", aliases: ["Hut 8 Corp", "Hut 8 Mining"], kind: "developer", website: "https://hut8.com", hqCountryIso2: "US" },131 { name: "DE-CIX", aliases: ["DE-CIX Group", "DE-CIX Management GmbH"], kind: "ixp_operator", website: "https://www.de-cix.net", hqCountryIso2: "DE" },132 { name: "AMS-IX", aliases: ["Amsterdam Internet Exchange"], kind: "ixp_operator", website: "https://www.ams-ix.net", hqCountryIso2: "NL" },133 { name: "LINX", aliases: ["London Internet Exchange"], kind: "ixp_operator", website: "https://www.linx.net", hqCountryIso2: "GB" },134 { name: "Serverfarm", aliases: ["ServerFarm", "Server Farm Realty"], kind: "colocation", website: "https://www.serverfarmllc.com", hqCountryIso2: "US" },135 { name: "Novva Data Centers", aliases: ["Novva"], kind: "colocation", website: "https://www.novva.com", hqCountryIso2: "US" },136 { name: "PowerHouse Data Centers", aliases: ["PowerHouse", "American Real Estate Partners"], kind: "developer", website: "https://www.powerhousedatacenters.com", hqCountryIso2: "US" },137 { name: "Tract", aliases: ["Tract Capital"], kind: "developer", website: "https://tract.com", hqCountryIso2: "US" },138 { name: "Nscale", aliases: ["NScale"], kind: "developer", website: "https://www.nscale.com", hqCountryIso2: "GB", isCloudProvider: true },139 { name: "Nebius", aliases: ["Nebius Group", "Nebius AI"], kind: "cloud", website: "https://nebius.com", hqCountryIso2: "NL", isCloudProvider: true },140 { name: "Scaleway", aliases: ["Scaleway (Iliad)", "Iliad", "Free Pro", "OpCore"], kind: "cloud", website: "https://www.scaleway.com", hqCountryIso2: "FR", isCloudProvider: true },141 { name: "Hetzner", aliases: ["Hetzner Online"], kind: "cloud", website: "https://www.hetzner.com", hqCountryIso2: "DE", isCloudProvider: true },142 { name: "Cloudflare", aliases: ["Cloudflare, Inc."], kind: "cloud", website: "https://www.cloudflare.com", hqCountryIso2: "US", isCloudProvider: true },143 { name: "Akamai", aliases: ["Akamai Technologies", "Linode"], kind: "cloud", website: "https://www.akamai.com", hqCountryIso2: "US", isCloudProvider: true },144 { name: "DigitalOcean", aliases: ["Digital Ocean"], kind: "cloud", website: "https://www.digitalocean.com", hqCountryIso2: "US", isCloudProvider: true },145 { name: "Vultr", aliases: ["Constant", "The Constant Company"], kind: "cloud", website: "https://www.vultr.com", hqCountryIso2: "US", isCloudProvider: true },146 { name: "Salesforce", aliases: ["Salesforce.com"], kind: "cloud", website: "https://www.salesforce.com", hqCountryIso2: "US", isCloudProvider: true },147 { name: "SAP", aliases: ["SAP SE"], kind: "cloud", website: "https://www.sap.com", hqCountryIso2: "DE", isCloudProvider: true },148 { name: "Baidu AI Cloud", aliases: ["Baidu", "Baidu Cloud"], kind: "cloud", website: "https://intl.cloud.baidu.com", hqCountryIso2: "CN", isCloudProvider: true },149 { name: "Naver Cloud", aliases: ["NAVER Cloud", "Naver"], kind: "cloud", website: "https://www.navercloudcorp.com", hqCountryIso2: "KR", isCloudProvider: true },150 { name: "SK Broadband", aliases: ["SK Telecom", "SKT"], kind: "carrier", website: "https://www.skbroadband.com", hqCountryIso2: "KR", isCarrier: true },151 { name: "KT", aliases: ["KT Corporation", "Korea Telecom", "KT Cloud"], kind: "carrier", website: "https://www.kt.com", hqCountryIso2: "KR", isCarrier: true },152 { name: "Telefónica", aliases: ["Telefonica", "Telxius", "Telefónica Tech"], kind: "carrier", website: "https://www.telefonica.com", hqCountryIso2: "ES", isCarrier: true },153 { name: "Nabiax", aliases: [], kind: "colocation", website: "https://nabiax.com", hqCountryIso2: "ES" },154 { name: "Aruba", aliases: ["Aruba S.p.A.", "Aruba Cloud"], kind: "colocation", website: "https://www.aruba.it", hqCountryIso2: "IT", isCloudProvider: true },155 { name: "maincubes", aliases: ["Maincubes", "maincubes one"], kind: "colocation", website: "https://www.maincubes.com", hqCountryIso2: "DE" },156 { name: "NorthC", aliases: ["NorthC Datacenters", "NorthC Group"], kind: "colocation", website: "https://www.northcdatacenters.com", hqCountryIso2: "NL" },157 { name: "Penta Infra", aliases: ["Penta Infrastructure"], kind: "colocation", website: "https://www.pentainfra.com", hqCountryIso2: "NL" },158 { name: "EcoDataCenter", aliases: ["Eco Data Center", "EcoDC"], kind: "colocation", website: "https://ecodatacenter.tech", hqCountryIso2: "SE" },159 { name: "Verne", aliases: ["Verne Global"], kind: "colocation", website: "https://verneglobal.com", hqCountryIso2: "GB" },160 { name: "Telia (Telia Company)", aliases: ["Telia Company", "Telia Sverige"], kind: "carrier", website: "https://www.teliacompany.com", hqCountryIso2: "SE", isCarrier: true },161 { name: "Khazna Data Centers", aliases: ["Khazna", "Khazna Data Centres"], kind: "colocation", website: "https://www.khazna.com", hqCountryIso2: "AE" },162 { name: "Moro Hub", aliases: ["Moro"], kind: "colocation", website: "https://morohub.com", hqCountryIso2: "AE" },163 { name: "Gulf Data Hub", aliases: ["GDH"], kind: "colocation", website: "https://gulfdatahub.com", hqCountryIso2: "AE" },164 { name: "stc", aliases: ["Saudi Telecom Company", "center3", "Center3", "STC"], kind: "carrier", website: "https://www.stc.com.sa", hqCountryIso2: "SA", isCarrier: true },165 { name: "Ooredoo", aliases: ["Ooredoo Group", "MEEZA"], kind: "carrier", website: "https://www.ooredoo.com", hqCountryIso2: "QA", isCarrier: true },166 { name: "Rack Centre", aliases: ["Rack Center"], kind: "colocation", website: "https://www.rack-centre.com", hqCountryIso2: "NG" },167 { name: "MainOne", aliases: ["Main One", "MDXi"], kind: "colocation", website: "https://www.mainone.net", hqCountryIso2: "NG", parent: "Equinix" },168 { name: "Raxio", aliases: ["Raxio Group", "Raxio Data Centres"], kind: "colocation", website: "https://raxiogroup.com", hqCountryIso2: "UG" },169 { name: "iXAfrica", aliases: ["IX Africa", "iXAfrica Data Centre"], kind: "colocation", website: "https://ixafrica.com", hqCountryIso2: "KE" },170 { name: "KIO", aliases: ["KIO Networks", "KIO Data Centers"], kind: "colocation", website: "https://www.kio.tech", hqCountryIso2: "MX" },171 { name: "Cirion Technologies", aliases: ["Cirion", "Lumen LatAm"], kind: "colocation", website: "https://www.ciriontechnologies.com", hqCountryIso2: "UY" },172 { name: "HostDime", aliases: [], kind: "colocation", website: "https://www.hostdime.com", hqCountryIso2: "US" },173 { name: "Tecto Data Centers", aliases: ["Tecto", "Takoda"], kind: "colocation", website: "https://tecto.com.br", hqCountryIso2: "BR" },174 { name: "SpaceDC", aliases: ["Space DC"], kind: "colocation", website: "https://www.spacedc.com", hqCountryIso2: "SG" },175 { name: "ESR", aliases: ["ESR Group", "ESR Data Centres"], kind: "developer", website: "https://www.esr.com", hqCountryIso2: "HK" },176 { name: "SUNeVision", aliases: ["SUNeVision iAdvantage", "iAdvantage"], kind: "colocation", website: "https://www.sunevision.com", hqCountryIso2: "HK" },177 { name: "PCCW", aliases: ["PCCW Solutions", "HKT"], kind: "carrier", website: "https://www.pccw.com", hqCountryIso2: "HK", isCarrier: true },178 { name: "Chief Telecom", aliases: ["Chief", "Chief Telecom Inc."], kind: "colocation", website: "https://www.chief.com.tw", hqCountryIso2: "TW" },179 { name: "Chunghwa Telecom", aliases: ["CHT"], kind: "carrier", website: "https://www.cht.com.tw", hqCountryIso2: "TW", isCarrier: true },180 { name: "SoftBank", aliases: ["SoftBank Corp.", "IDC Frontier"], kind: "carrier", website: "https://www.softbank.jp", hqCountryIso2: "JP", isCarrier: true },181 { name: "AdaniConneX", aliases: ["Adani ConneX", "Adani Enterprises Data Centers"], kind: "colocation", website: "https://www.adaniconnex.com", hqCountryIso2: "IN" },182 { name: "Yotta", aliases: ["Yotta Data Services", "Yotta Infrastructure"], kind: "colocation", website: "https://yotta.com", hqCountryIso2: "IN" },183 { name: "CtrlS", aliases: ["CtrlS Datacenters", "Ctrl S"], kind: "colocation", website: "https://www.ctrls.in", hqCountryIso2: "IN" },184 { name: "Reliance Jio", aliases: ["Jio", "Jio Platforms", "Reliance"], kind: "carrier", website: "https://www.jio.com", hqCountryIso2: "IN", isCarrier: true },185 { name: "Telkom Indonesia", aliases: ["Telkom", "Telin", "NeutraDC"], kind: "carrier", website: "https://www.telkom.co.id", hqCountryIso2: "ID", isCarrier: true },186 { name: "TM ONE", aliases: ["Telekom Malaysia", "TM"], kind: "carrier", website: "https://www.tm.com.my", hqCountryIso2: "MY", isCarrier: true },187 { name: "YTL Data Center", aliases: ["YTL", "YTL Power", "YTL Data Center Holdings"], kind: "developer", website: "https://www.ytlpowerinternational.com", hqCountryIso2: "MY" },188 { name: "Datacom", aliases: ["Datacom Group"], kind: "colocation", website: "https://datacom.com", hqCountryIso2: "NZ" },189 { name: "Spark New Zealand", aliases: ["Spark", "Spark NZ", "Revera"], kind: "carrier", website: "https://www.spark.co.nz", hqCountryIso2: "NZ", isCarrier: true },190 { name: "Rostelecom", aliases: ["Rostelecom Data Centers", "Ростелеком"], kind: "carrier", website: "https://www.rt.ru", hqCountryIso2: "RU", isCarrier: true },191 { name: "Turkcell", aliases: ["Turkcell Data Center"], kind: "carrier", website: "https://www.turkcell.com.tr", hqCountryIso2: "TR", isCarrier: true },192 { name: "Türk Telekom", aliases: ["Turk Telekom"], kind: "carrier", website: "https://www.turktelekom.com.tr", hqCountryIso2: "TR", isCarrier: true },193 { name: "Lamda Hellix", aliases: ["Lamda Hellix (Digital Realty)"], kind: "colocation", website: "https://www.lamdahellix.com", hqCountryIso2: "GR", parent: "Digital Realty" },194 { name: "Atman", aliases: ["ATM S.A.", "Atman Data Centers"], kind: "colocation", website: "https://www.atman.pl", hqCountryIso2: "PL" },195 { name: "Beyond.pl", aliases: ["Beyond"], kind: "colocation", website: "https://www.beyond.pl", hqCountryIso2: "PL" },196 { name: "Green Datacenter", aliases: ["Green", "green.ch", "Green Datacenter AG"], kind: "colocation", website: "https://www.green.ch", hqCountryIso2: "CH" },197 { name: "Swisscom", aliases: ["Swisscom AG"], kind: "carrier", website: "https://www.swisscom.ch", hqCountryIso2: "CH", isCarrier: true },198 { name: "Proximus", aliases: ["Belgacom"], kind: "carrier", website: "https://www.proximus.com", hqCountryIso2: "BE", isCarrier: true },199 { name: "LuxConnect", aliases: ["Lux Connect"], kind: "colocation", website: "https://www.luxconnect.lu", hqCountryIso2: "LU" },200 { name: "EBRC", aliases: ["European Business Reliance Centre"], kind: "colocation", website: "https://www.ebrc.com", hqCountryIso2: "LU" },201];202203/** Quick set of hyperscaler canonical names (kind inference + is_hyperscale hints). */204export const HYPERSCALERS: ReadonlySet<string> = new Set<string>(HYPERSCALER_NAMES);205206const byNorm = new Map<string, CanonicalOperator>();207for (const c of CANONICAL_OPERATORS) {208 const n = normalizeName(c.name);209 if (n && !byNorm.has(n)) byNorm.set(n, c);210 for (const a of c.aliases) {211 const an = normalizeName(a);212 if (an && !byNorm.has(an)) byNorm.set(an, c);213 }214}215216/** Resolve a raw operator name to its curated canonical entry (by canonical name or alias), or null. */217export function findCanonicalOperator(name: string | null | undefined): CanonicalOperator | null {218 if (!name) return null;219 const n = normalizeName(name);220 if (!n) return null;221 const direct = byNorm.get(n);222 if (direct) return direct;223 // "Equinix Inc." → normalizeName drops "inc" already; also try the raw lowercase (aliases like "AT&T" lose '&')224 const raw = name.trim().toLowerCase();225 for (const c of CANONICAL_OPERATORS) {226 if (c.name.toLowerCase() === raw) return c;227 if (c.aliases.some((a) => a.toLowerCase() === raw)) return c;228 }229 return null;230}231232export function isHyperscalerName(name: string | null | undefined): boolean {233 const c = findCanonicalOperator(name);234 return !!c && HYPERSCALERS.has(c.name);235}236237export const CANONICAL_OPERATOR_COUNT = CANONICAL_OPERATORS.length;238