From 2924414995356ce179da315fde8fda0958959e2d Mon Sep 17 00:00:00 2001 From: Alex Potsides Date: Wed, 15 Jun 2022 07:40:22 +0100 Subject: [PATCH] feat: update to latest interfaces (#184) BREAKING CHANGE: uses new single-issue libp2p interface modules --- README.md | 42 +++++++++++++++++++--------------------- package.json | 8 ++++++-- src/index.ts | 2 +- src/listener.ts | 4 ++-- src/socket-to-conn.ts | 2 +- test/compliance.spec.ts | 2 +- test/connection.spec.ts | 6 +++--- test/listen-dial.spec.ts | 4 ++-- 8 files changed, 36 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 94b8f49..ebca2c9 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,16 @@ -# js-libp2p-tcp +# @libp2p/tcp -[![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://protocol.ai) -[![](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/) -[![](https://img.shields.io/badge/freenode-%23libp2p-yellow.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23libp2p) -[![Discourse posts](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg)](https://discuss.libp2p.io) -[![](https://img.shields.io/codecov/c/github/libp2p/js-libp2p-tcp.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p-tcp) -[![Build Status](https://github.com/libp2p/js-libp2p-tcp/actions/workflows/js-test-and-release.yml/badge.svg?branch=main)](https://github.com/libp2p/js-libp2p-tcp/actions/workflows/js-test-and-release.yml) -[![Dependency Status](https://david-dm.org/libp2p/js-libp2p-tcp.svg?style=flat-square)](https://david-dm.org/libp2p/js-libp2p-tcp) -[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/feross/standard) +[![libp2p.io](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/) +[![IRC](https://img.shields.io/badge/freenode-%23libp2p-yellow.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23libp2p) +[![Discuss](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg?style=flat-square)](https://discuss.libp2p.io) +[![codecov](https://img.shields.io/codecov/c/github/libp2p/js-libp2p-tcp.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p-tcp) +[![CI](https://img.shields.io/github/workflow/status/libp2p/js-libp2p-interfaces/test%20&%20maybe%20release/master?style=flat-square)](https://github.com/libp2p/js-libp2p-tcp/actions/workflows/js-test-and-release.yml) -[![](https://raw.githubusercontent.com/libp2p/js-libp2p-interfaces/master/src/transport/img/badge.png)](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/transport) -[![](https://raw.githubusercontent.com/libp2p/js-libp2p-interfaces/master/src/connection/img/badge.png)](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/connection) +> Node.js implementation of the TCP module that libp2p uses, which implements the interface-connection and interface-transport interfaces -> JavaScript implementation of the TCP module for libp2p. It exposes the [interface-transport](https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-interfaces/src/transport) for dial/listen. `libp2p-tcp` is a very thin shim that adds support for dialing to a `multiaddr`. This small shim will enable libp2p to use other transports. - -## Table of Contents +## Table of contents - [Install](#install) - - [npm](#npm) - [Usage](#usage) - [API](#api) - [Transport](#transport) @@ -25,11 +18,16 @@ - [Contribute](#contribute) - [Contribute](#contribute-1) - [License](#license) - - [Contribution](#contribution) +- [Contribution](#contribution) ## Install -### npm +```console +$ npm i @libp2p/tcp +``` + +[![](https://raw.githubusercontent.com/libp2p/js-libp2p-interfaces/master/src/transport/img/badge.png)](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/transport) +[![](https://raw.githubusercontent.com/libp2p/js-libp2p-interfaces/master/src/connection/img/badge.png)](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/connection) ```sh > npm install @libp2p/tcp @@ -117,16 +115,16 @@ Small note: If editing the README, please conform to the [standard-readme](https The libp2p implementation in JavaScript is a work in progress. As such, there are a few things you can do right now to help out: - - Go through the modules and **check out existing issues**. This is especially useful for modules in active development. Some knowledge of IPFS/libp2p may be required, as well as the infrastructure behind it - for instance, you may need to read up on p2p and more complex operations like muxing to be able to help technically. - - **Perform code reviews**. More eyes will help a) speed the project along b) ensure quality and c) reduce possible future bugs. +- Go through the modules and **check out existing issues**. This is especially useful for modules in active development. Some knowledge of IPFS/libp2p may be required, as well as the infrastructure behind it - for instance, you may need to read up on p2p and more complex operations like muxing to be able to help technically. +- **Perform code reviews**. More eyes will help a) speed the project along b) ensure quality and c) reduce possible future bugs. ## License Licensed under either of - * Apache 2.0, ([LICENSE-APACHE](LICENSE-APACHE) / http://www.apache.org/licenses/LICENSE-2.0) - * MIT ([LICENSE-MIT](LICENSE-MIT) / http://opensource.org/licenses/MIT) +- Apache 2.0, ([LICENSE-APACHE](LICENSE-APACHE) / ) +- MIT ([LICENSE-MIT](LICENSE-MIT) / ) -### Contribution +## Contribution Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. diff --git a/package.json b/package.json index 48f76e9..96fad90 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ ], "exports": { ".": { + "types": "./src/index.d.ts", "import": "./dist/src/index.js" } }, @@ -135,7 +136,9 @@ "release": "aegir release" }, "dependencies": { - "@libp2p/interfaces": "^2.0.1", + "@libp2p/interface-connection": "^1.0.1", + "@libp2p/interface-transport": "^1.0.0", + "@libp2p/interfaces": "^3.0.2", "@libp2p/logger": "^1.1.2", "@libp2p/utils": "^1.0.9", "@multiformats/mafmt": "^11.0.2", @@ -145,7 +148,8 @@ "stream-to-it": "^0.2.2" }, "devDependencies": { - "@libp2p/interface-compliance-tests": "^2.0.1", + "@libp2p/interface-mocks": "^1.0.1", + "@libp2p/interface-transport-compliance-tests": "^1.0.0", "aegir": "^37.0.4", "it-all": "^1.0.6", "it-pipe": "^2.0.3", diff --git a/src/index.ts b/src/index.ts index b43e0a7..911d239 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,7 +7,7 @@ import { createListener } from './listener.js' import { multiaddrToNetConfig } from './utils.js' import { AbortError } from '@libp2p/interfaces/errors' import { CODE_CIRCUIT, CODE_P2P } from './constants.js' -import { CreateListenerOptions, DialOptions, symbol, Transport } from '@libp2p/interfaces/transport' +import { CreateListenerOptions, DialOptions, symbol, Transport } from '@libp2p/interface-transport' import type { Multiaddr } from '@multiformats/multiaddr' import type { Socket } from 'net' import type { AbortOptions } from '@libp2p/interfaces' diff --git a/src/listener.ts b/src/listener.ts index 20e58a1..2e54c32 100644 --- a/src/listener.ts +++ b/src/listener.ts @@ -7,8 +7,8 @@ import { multiaddrToNetConfig } from './utils.js' import { EventEmitter, CustomEvent } from '@libp2p/interfaces/events' -import type { Connection } from '@libp2p/interfaces/connection' -import type { MultiaddrConnection, Upgrader, Listener } from '@libp2p/interfaces/transport' +import type { MultiaddrConnection, Connection } from '@libp2p/interface-connection' +import type { Upgrader, Listener } from '@libp2p/interface-transport' import type { Server } from 'net' import type { Multiaddr } from '@multiformats/multiaddr' diff --git a/src/socket-to-conn.ts b/src/socket-to-conn.ts index 85fc2ba..57cc3a2 100644 --- a/src/socket-to-conn.ts +++ b/src/socket-to-conn.ts @@ -6,7 +6,7 @@ import { ipPortToMultiaddr as toMultiaddr } from '@libp2p/utils/ip-port-to-multi import { CLOSE_TIMEOUT } from './constants.js' import type { Socket } from 'net' import type { Multiaddr } from '@multiformats/multiaddr' -import type { MultiaddrConnection } from '@libp2p/interfaces/transport' +import type { MultiaddrConnection } from '@libp2p/interface-connection' const log = logger('libp2p:tcp:socket') diff --git a/test/compliance.spec.ts b/test/compliance.spec.ts index 3042ca0..95f8888 100644 --- a/test/compliance.spec.ts +++ b/test/compliance.spec.ts @@ -1,5 +1,5 @@ import sinon from 'sinon' -import tests from '@libp2p/interface-compliance-tests/transport' +import tests from '@libp2p/interface-transport-compliance-tests' import { Multiaddr } from '@multiformats/multiaddr' import net from 'net' import { TCP } from '../src/index.js' diff --git a/test/connection.spec.ts b/test/connection.spec.ts index fb9fe8a..d24023c 100644 --- a/test/connection.spec.ts +++ b/test/connection.spec.ts @@ -1,9 +1,9 @@ import { expect } from 'aegir/chai' import { TCP } from '../src/index.js' import { Multiaddr } from '@multiformats/multiaddr' -import { mockUpgrader } from '@libp2p/interface-compliance-tests/mocks' -import type { Connection } from '@libp2p/interfaces/connection' -import type { Upgrader } from '@libp2p/interfaces/transport' +import { mockUpgrader } from '@libp2p/interface-mocks' +import type { Connection } from '@libp2p/interface-connection' +import type { Upgrader } from '@libp2p/interface-transport' describe('valid localAddr and remoteAddr', () => { let tcp: TCP diff --git a/test/listen-dial.spec.ts b/test/listen-dial.spec.ts index 0627e50..c71bbe8 100644 --- a/test/listen-dial.spec.ts +++ b/test/listen-dial.spec.ts @@ -5,9 +5,9 @@ import path from 'path' import { Multiaddr } from '@multiformats/multiaddr' import { pipe } from 'it-pipe' import all from 'it-all' -import { mockRegistrar, mockUpgrader } from '@libp2p/interface-compliance-tests/mocks' +import { mockRegistrar, mockUpgrader } from '@libp2p/interface-mocks' import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string' -import type { Upgrader } from '@libp2p/interfaces/transport' +import type { Upgrader } from '@libp2p/interface-transport' const isCI = process.env.CI