From 202dcef4e8b0cb9e55c1f4e3006879bbb98d41f5 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Wed, 5 Feb 2025 08:30:18 +0100 Subject: [PATCH] fix: constrain options transport to tcp or udp Update the types to express that the `transport` field will only ever be `'tcp'` or `'udp'`. --- src/index.ts | 2 +- src/multiaddr.ts | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/index.ts b/src/index.ts index 47e691a7..34150aa7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -115,7 +115,7 @@ export interface Protocol { export interface MultiaddrObject { family: 4 | 6 host: string - transport: string + transport: 'tcp' | 'udp' port: number } diff --git a/src/multiaddr.ts b/src/multiaddr.ts index 52320217..ced63b6f 100644 --- a/src/multiaddr.ts +++ b/src/multiaddr.ts @@ -1,3 +1,4 @@ +/* eslint-disable complexity */ import { base58btc } from 'multiformats/bases/base58' import { CID } from 'multiformats/cid' import { equals as uint8ArrayEquals } from 'uint8arrays/equals' @@ -73,7 +74,7 @@ export class Multiaddr implements MultiaddrInterface { toOptions (): MultiaddrObject { let family: 4 | 6 | undefined - let transport: string | undefined + let transport: 'tcp' | 'udp' | undefined let host: string | undefined let port: number | undefined let zone = '' @@ -92,19 +93,19 @@ export class Multiaddr implements MultiaddrInterface { // default to https when protocol & port are omitted from DNS addrs if (DNS_CODES.includes(code)) { - transport = tcp.name + transport = tcp.name === 'tcp' ? 'tcp' : 'udp' port = 443 host = `${value ?? ''}${zone}` family = code === dns6.code ? 6 : 4 } if (code === tcp.code || code === udp.code) { - transport = getProtocol(code).name + transport = getProtocol(code).name === 'tcp' ? 'tcp' : 'udp' port = parseInt(value ?? '') } if (code === ip4.code || code === ip6.code) { - transport = getProtocol(code).name + transport = getProtocol(code).name === 'tcp' ? 'tcp' : 'udp' host = `${value ?? ''}${zone}` family = code === ip6.code ? 6 : 4 }