Skip to content
This repository has been archived by the owner on Jul 21, 2023. It is now read-only.

Commit

Permalink
feat!: update to latest interfaces (#159)
Browse files Browse the repository at this point in the history
BREAKING CHANGE: uses new single-issue libp2p interface modules
  • Loading branch information
achingbrain authored Jun 15, 2022
1 parent f605c31 commit e140bed
Show file tree
Hide file tree
Showing 9 changed files with 44 additions and 42 deletions.
2 changes: 1 addition & 1 deletion .aegir.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Multiaddr } from '@multiformats/multiaddr'
import { mockRegistrar, mockUpgrader } from '@libp2p/interface-compliance-tests/mocks'
import { mockRegistrar, mockUpgrader } from '@libp2p/interface-mocks'
import { pipe }from 'it-pipe'

/** @type {import('aegir/types').PartialOptions} */
Expand Down
55 changes: 26 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,44 +1,41 @@
# js-libp2p-websockets <!-- omit in toc -->

[![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://ipn.io)
[![](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/)
[![](https://img.shields.io/badge/freenode-%23ipfs-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23ipfs)
[![Discourse posts](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg)](https://discuss.libp2p.io)
[![Coverage Status](https://coveralls.io/repos/github/libp2p/js-libp2p-websockets/badge.svg?branch=master)](https://coveralls.io/github/libp2p/js-libp2p-websockets?branch=master)
[![Build Status](https://github.com/libp2p/js-libp2p-websockets/actions/workflows/js-test-and-release.yml/badge.svg?branch=main)](https://github.com/libp2p/js-libp2p-websockets/actions/workflows/js-test-and-release.yml)
[![Dependency Status](https://david-dm.org/libp2p/js-libp2p-websockets.svg?style=flat-square)](https://david-dm.org/libp2p/js-libp2p-websockets)
[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/feross/standard)
![](https://img.shields.io/badge/Node.js-%3E%3D14.0.0-orange.svg?style=flat-square)
# @libp2p/websockets <!-- omit in toc -->

[![](https://github.com/raw/libp2p/interface-transport/master/img/badge.png)](https://github.com/libp2p/interface-transport)
[![](https://github.com/raw/libp2p/interface-connection/master/img/badge.png)](https://github.com/libp2p/interface-connection)
[![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-websockets.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p-websockets)
[![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-websockets/actions/workflows/js-test-and-release.yml)

> JavaScript implementation of the WebSockets module that libp2p uses and that implements the interface-transport interface
> JavaScript implementation of the WebSockets module that libp2p uses and that implements the interface-transport spec
## Table of Contents <!-- omit in toc -->
## Table of contents <!-- omit in toc -->

- [Install](#install)
- [Description](#description)
- [Usage](#usage)
- [Install](#install)
- [npm](#npm)
- [Constructor properties](#constructor-properties)
- [Libp2p Usage Example](#libp2p-usage-example)
- [API](#api)
- [Transport](#transport)
- [Connection](#connection)
- [License](#license)
- [Contribution](#contribution)
- [Contribution](#contribution)

## Install

```console
$ npm i @libp2p/websockets
```

[![](https://github.com/raw/libp2p/interface-transport/master/img/badge.png)](https://github.com/libp2p/interface-transport)
[![](https://github.com/raw/libp2p/interface-connection/master/img/badge.png)](https://github.com/libp2p/interface-connection)

## Description

`libp2p-websockets` is the WebSockets implementation compatible with libp2p.

## Usage

## Install

### npm

```sh
> npm i @libp2p/websockets
```
Expand All @@ -56,10 +53,10 @@ const properties = {
const ws = new WS(properties)
```

| Name | Type | Description | Default |
|------|------|-------------|---------|
| upgrader | [`Upgrader`](https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-interfaces/src/transport#upgrader) | connection upgrader object with `upgradeOutbound` and `upgradeInbound` | **REQUIRED** |
| filter | `(multiaddrs: Array<Multiaddr>) => Array<Multiaddr>` | override transport addresses filter | **Browser:** DNS+WSS multiaddrs / **Node.js:** DNS+{WS, WSS} multiaddrs |
| Name | Type | Description | Default |
| -------- | -------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| upgrader | [`Upgrader`](https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-interfaces/src/transport#upgrader) | connection upgrader object with `upgradeOutbound` and `upgradeInbound` | **REQUIRED** |
| filter | `(multiaddrs: Array<Multiaddr>) => Array<Multiaddr>` | override transport addresses filter | **Browser:** DNS+WSS multiaddrs / **Node.js:** DNS+{WS, WSS} multiaddrs |

You can create your own address filters for this transports, or rely in the filters [provided](./src/filters.js).

Expand Down Expand Up @@ -114,9 +111,9 @@ For more information see [libp2p/js-libp2p/doc/CONFIGURATION.md#customizing-tran

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) / <http://www.apache.org/licenses/LICENSE-2.0>)
- MIT ([LICENSE-MIT](LICENSE-MIT) / <http://opensource.org/licenses/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.
11 changes: 8 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,11 @@
],
"exports": {
".": {
"types": "./src/index.d.ts",
"import": "./dist/src/index.js"
},
"./filters": {
"types": "./dist/src/filters.d.ts",
"import": "./dist/src/filters.js"
}
},
Expand Down Expand Up @@ -152,7 +154,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.1",
"@libp2p/logger": "^1.1.3",
"@libp2p/utils": "^1.0.10",
"@multiformats/mafmt": "^11.0.2",
Expand All @@ -166,9 +170,10 @@
"wherearewe": "^1.0.0"
},
"devDependencies": {
"@libp2p/interface-compliance-tests": "^2.0.1",
"@libp2p/interface-mocks": "^1.0.1",
"@libp2p/interface-transport-compliance-tests": "^1.0.0",
"@types/ws": "^8.2.2",
"aegir": "^37.0.12",
"aegir": "^37.2.0",
"is-loopback-addr": "^2.0.1",
"it-all": "^1.0.6",
"it-drain": "^1.0.5",
Expand Down
2 changes: 1 addition & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import env from 'wherearewe'
import { createListener } from './listener.js'
import { socketToMaConn } from './socket-to-conn.js'
import * as filters from './filters.js'
import { Transport, MultiaddrFilter, symbol, CreateListenerOptions, DialOptions } from '@libp2p/interfaces/transport'
import { Transport, MultiaddrFilter, symbol, CreateListenerOptions, DialOptions } from '@libp2p/interface-transport'
import type { AbortOptions } from '@libp2p/interfaces'
import type { Multiaddr } from '@multiformats/multiaddr'
import type { DuplexWebSocket } from 'it-ws/duplex'
Expand Down
4 changes: 2 additions & 2 deletions src/listener.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import { createServer } from 'it-ws/server'
import { logger } from '@libp2p/logger'
import { socketToMaConn } from './socket-to-conn.js'
import { ipPortToMultiaddr as toMultiaddr } from '@libp2p/utils/ip-port-to-multiaddr'
import type { Listener, ListenerEvents, CreateListenerOptions } from '@libp2p/interfaces/transport'
import type { Listener, ListenerEvents, CreateListenerOptions } from '@libp2p/interface-transport'
import type { Server } from 'http'
import type { WebSocketServer } from 'it-ws/server'
import type { DuplexWebSocket } from 'it-ws/duplex'
import { EventEmitter, CustomEvent } from '@libp2p/interfaces/events'
import type { Connection } from '@libp2p/interfaces/connection'
import type { Connection } from '@libp2p/interface-connection'

const log = logger('libp2p:websockets:listener')

Expand Down
2 changes: 1 addition & 1 deletion src/socket-to-conn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { CLOSE_TIMEOUT } from './constants.js'
import pTimeout from 'p-timeout'
import { logger } from '@libp2p/logger'
import type { AbortOptions } from '@libp2p/interfaces'
import type { MultiaddrConnection } from '@libp2p/interfaces/transport'
import type { MultiaddrConnection } from '@libp2p/interface-connection'
import type { Multiaddr } from '@multiformats/multiaddr'
import type { DuplexWebSocket } from 'it-ws/duplex'

Expand Down
4 changes: 2 additions & 2 deletions test/browser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import { pipe } from 'it-pipe'
import all from 'it-all'
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
import { WebSockets } from '../src/index.js'
import { mockUpgrader } from '@libp2p/interface-compliance-tests/mocks'
import { mockUpgrader } from '@libp2p/interface-mocks'
import env from 'wherearewe'
import type { Connection } from '@libp2p/interfaces/connection'
import type { Connection } from '@libp2p/interface-connection'

const protocol = '/echo/1.0.0'

Expand Down
2 changes: 1 addition & 1 deletion test/compliance.node.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* eslint-env mocha */

import tests from '@libp2p/interface-compliance-tests/transport'
import tests from '@libp2p/interface-transport-compliance-tests'
import { Multiaddr } from '@multiformats/multiaddr'
import http from 'http'
import { WebSockets } from '../src/index.js'
Expand Down
4 changes: 2 additions & 2 deletions test/node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ import { isLoopbackAddr } from 'is-loopback-addr'
import all from 'it-all'
import { pipe } from 'it-pipe'
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
import { mockRegistrar, mockUpgrader } from '@libp2p/interface-compliance-tests/mocks'
import { mockRegistrar, mockUpgrader } from '@libp2p/interface-mocks'
import defer from 'p-defer'
import waitFor from 'p-wait-for'
import { WebSockets } from '../src/index.js'
import * as filters from '../src/filters.js'
import drain from 'it-drain'
import type { Listener } from '@libp2p/interfaces/transport'
import type { Listener } from '@libp2p/interface-transport'

import './compliance.node.js'

Expand Down

0 comments on commit e140bed

Please sign in to comment.