From 3693f04ca879d7e1bd7dc5d37d845d7f14b88a73 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Mon, 9 Sep 2024 10:11:26 +0100 Subject: [PATCH] fix!: remove CodeError class The `CodeError` class has been replaced with specific error subclasses with named constructors that use a `.name` property. BREAKING CHANGE: instead of `CodeError`, use `TimeoutError`, `UnexpectedPeerError`, etc --- packages/interface/src/errors.ts | 37 ------------------- .../test/connection-monitor/index.spec.ts | 6 +-- packages/transport-tcp/src/tcp.ts | 4 +- 3 files changed, 5 insertions(+), 42 deletions(-) diff --git a/packages/interface/src/errors.ts b/packages/interface/src/errors.ts index a9475792dd..1fa104cfbf 100644 --- a/packages/interface/src/errors.ts +++ b/packages/interface/src/errors.ts @@ -10,43 +10,6 @@ export class AbortError extends Error { } } -/** - * @deprecated - */ -export class CodeError = Record> extends Error { - public readonly props: T - - constructor ( - message: string, - public readonly code: string, - props?: T - ) { - super(message) - - this.name = props?.name ?? 'CodeError' - this.props = props ?? {} as T // eslint-disable-line @typescript-eslint/consistent-type-assertions - } -} - -/** - * @deprecated - */ -export class AggregateCodeError = Record> extends AggregateError { - public readonly props: T - - constructor ( - errors: Error[], - message: string, - public readonly code: string, - props?: T - ) { - super(errors, message) - - this.name = props?.name ?? 'AggregateCodeError' - this.props = props ?? {} as T // eslint-disable-line @typescript-eslint/consistent-type-assertions - } -} - export class UnexpectedPeerError extends Error { constructor (message = 'Unexpected Peer') { super(message) diff --git a/packages/libp2p/test/connection-monitor/index.spec.ts b/packages/libp2p/test/connection-monitor/index.spec.ts index 633a1c4121..808c137c7c 100644 --- a/packages/libp2p/test/connection-monitor/index.spec.ts +++ b/packages/libp2p/test/connection-monitor/index.spec.ts @@ -1,6 +1,6 @@ /* eslint-env mocha */ -import { CodeError, start, stop } from '@libp2p/interface' +import { ConnectionClosedError, UnsupportedProtocolError, start, stop } from '@libp2p/interface' import { defaultLogger } from '@libp2p/logger' import { expect } from 'aegir/chai' import delay from 'delay' @@ -81,7 +81,7 @@ describe('connection monitor', () => { const connection = stubInterface() connection.newStream.withArgs('/ipfs/ping/1.0.0').callsFake(async () => { await delay(10) - throw new CodeError('Unsupported protocol', 'ERR_UNSUPPORTED_PROTOCOL') + throw new UnsupportedProtocolError('Unsupported protocol') }) components.connectionManager.getConnections.returns([connection]) @@ -124,7 +124,7 @@ describe('connection monitor', () => { const connection = stubInterface() connection.newStream.withArgs('/ipfs/ping/1.0.0').callsFake(async (protocols, opts) => { - throw new CodeError('Connection closed', 'ERR_CONNECTION_CLOSED') + throw new ConnectionClosedError('Connection closed') }) components.connectionManager.getConnections.returns([connection]) diff --git a/packages/transport-tcp/src/tcp.ts b/packages/transport-tcp/src/tcp.ts index 97da0476be..5316940ab7 100644 --- a/packages/transport-tcp/src/tcp.ts +++ b/packages/transport-tcp/src/tcp.ts @@ -28,7 +28,7 @@ */ import net from 'net' -import { AbortError, CodeError, serviceCapabilities, transportSymbol } from '@libp2p/interface' +import { AbortError, TimeoutError, serviceCapabilities, transportSymbol } from '@libp2p/interface' import * as mafmt from '@multiformats/mafmt' import { CustomProgressEvent } from 'progress-events' import { CODE_CIRCUIT, CODE_P2P, CODE_UNIX } from './constants.js' @@ -139,7 +139,7 @@ export class TCP implements Transport { this.log('connection timeout %a', ma) this.metrics?.dialerEvents.increment({ timeout: true }) - const err = new CodeError(`connection timeout after ${Date.now() - start}ms`, 'ERR_CONNECT_TIMEOUT') + const err = new TimeoutError(`connection timeout after ${Date.now() - start}ms`) // Note: this will result in onError() being called rawSocket.emit('error', err) }