diff --git a/README.md b/README.md index 41ac925f4c..06b53a0e6b 100644 --- a/README.md +++ b/README.md @@ -1,76 +1,3 @@ -# js-libp2p-monorepo - -[![libp2p.io](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/) -[![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.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p) -[![CI](https://img.shields.io/github/actions/workflow/status/libp2p/js-libp2p/main.yml?branch=master\&style=flat-square)](https://github.com/libp2p/js-libp2p/actions/workflows/main.yml?query=branch%3Amaster) - -> JavaScript implementation of libp2p, a modular peer to peer network stack - -## Table of contents - -- [Structure](#structure) - - [Project status](#project-status) -- [Background](#background) -- [Roadmap](#roadmap) -- [Install](#install) -- [Usage](#usage) - - [Configuration](#configuration) - - [Limits](#limits) - - [Getting started](#getting-started) - - [Tutorials and Examples](#tutorials-and-examples) -- [Development](#development) - - [Tests](#tests) - - [Run unit tests](#run-unit-tests) - - [Packages](#packages) -- [Used by](#used-by) -- [Contribute](#contribute) -- [API Docs](#api-docs) -- [License](#license) -- [Contribution](#contribution) - -## Structure - -- [`/doc`](./doc) Docs for libp2p -- [`/examples/auto-relay`](./examples/auto-relay) Shows how to configure relayed connections -- [`/examples/chat`](./examples/chat) An example chat app using libp2p -- [`/examples/connection-encryption`](./examples/connection-encryption) An example of how to configure connection encrypters -- [`/examples/delegated-routing`](./examples/delegated-routing) How to configure libp2p delegated routers -- [`/examples/discovery-mechanisms`](./examples/discovery-mechanisms) How to configure peer discovery mechanisms -- [`/examples/echo`](./examples/echo) An example echo app -- [`/examples/peer-and-content-routing`](./examples/peer-and-content-routing) How to use peer and content routing -- [`/examples/pnet`](./examples/pnet) How to configure a libp2p private network -- [`/examples/protocol-and-stream-muxing`](./examples/protocol-and-stream-muxing) How to use multiplex protocols streams -- [`/examples/pubsub`](./examples/pubsub) An example using libp2p pubsub -- [`/examples/transports`](./examples/transports) An example using different types of libp2p transport -- [`/interop`](./interop) Multidimension Interop Test -- [`/packages/crypto`](./packages/crypto) Crypto primitives for libp2p -- [`/packages/interface`](./packages/interface) The interface implemented by a libp2p node -- [`/packages/interface-compliance-tests`](./packages/interface-compliance-tests) Compliance tests for JS libp2p interfaces -- [`/packages/interface-internal`](./packages/interface-internal) Interfaces implemented by internal libp2p components -- [`/packages/kad-dht`](./packages/kad-dht) JavaScript implementation of the Kad-DHT for libp2p -- [`/packages/keychain`](./packages/keychain) Key management and cryptographically protected messages -- [`/packages/libp2p`](./packages/libp2p) JavaScript implementation of libp2p, a modular peer to peer network stack -- [`/packages/logger`](./packages/logger) A logging component for use in js-libp2p modules -- [`/packages/metrics-prometheus`](./packages/metrics-prometheus) Collect libp2p metrics for scraping by Prometheus or Graphana -- [`/packages/multistream-select`](./packages/multistream-select) JavaScript implementation of multistream-select -- [`/packages/peer-collections`](./packages/peer-collections) Stores values against a peer id -- [`/packages/peer-discovery-bootstrap`](./packages/peer-discovery-bootstrap) Peer discovery via a list of bootstrap peers -- [`/packages/peer-discovery-mdns`](./packages/peer-discovery-mdns) Node.js libp2p mDNS discovery implementation for peer discovery -- [`/packages/peer-id`](./packages/peer-id) Implementation of @libp2p/interface-peer-id -- [`/packages/peer-id-factory`](./packages/peer-id-factory) Create PeerId instances -- [`/packages/peer-record`](./packages/peer-record) Used to transfer signed peer data across the network -- [`/packages/peer-store`](./packages/peer-store) Stores information about peers libp2p knows on the network -- [`/packages/protocol-perf`](./packages/protocol-perf) Implementation of Perf Protocol -- [`/packages/pubsub`](./packages/pubsub) libp2p pubsub base class -- [`/packages/pubsub-floodsub`](./packages/pubsub-floodsub) libp2p-floodsub, also known as pubsub-flood or just dumbsub, this implementation of pubsub focused on delivering an API for Publish/Subscribe, but with no CastTree Forming (it just floods the network). -- [`/packages/stream-multiplexer-mplex`](./packages/stream-multiplexer-mplex) JavaScript implementation of -- [`/packages/transport-tcp`](./packages/transport-tcp) A TCP transport for libp2p -- [`/packages/transport-webrtc`](./packages/transport-webrtc) A libp2p transport using WebRTC connections -- [`/packages/transport-websockets`](./packages/transport-websockets) JavaScript implementation of the WebSockets module that libp2p uses and that implements the interface-transport spec -- [`/packages/transport-webtransport`](./packages/transport-webtransport) JavaScript implementation of the WebTransport module that libp2p uses and that implements the interface-transport spec -- [`/packages/utils`](./packages/utils) Package to aggregate shared logic and dependencies for the libp2p ecosystem -

libp2p hex logo

@@ -99,6 +26,16 @@

+# js-libp2p-monorepo + +[![libp2p.io](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/) +[![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.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p) +[![CI](https://img.shields.io/github/actions/workflow/status/libp2p/js-libp2p/main.yml?branch=master\&style=flat-square)](https://github.com/libp2p/js-libp2p/actions/workflows/main.yml?query=branch%3Amaster) + +> JavaScript implementation of libp2p, a modular peer to peer network stack + + ### Project status This project has been used in production for years in Ethereum, IPFS, and more. It is actively maintained by multiple organizations and continues to be improved! The API might change, but we strictly follow semver. @@ -110,6 +47,26 @@ If you are looking for the documentation of the latest release, you can view the **Want to update libp2p in your project?** Check our [migrations folder](./doc/migrations). +## Table of contents + +- [Background](#background) +- [Roadmap](#roadmap) +- [Install](#install) +- [Usage](#usage) + - [Configuration](#configuration) + - [Limits](#limits) + - [Getting started](#getting-started) + - [Tutorials and Examples](#tutorials-and-examples) +- [Structure](#structure) +- [Development](#development) + - [Tests](#tests) + - [Run unit tests](#run-unit-tests) + - [Packages](#packages) +- [Used by](#used-by) +- [Contribute](#contribute) +- [API Docs](#api-docs) +- [License](#license) + ## Background libp2p is the product of a long and arduous quest to understand the evolution of the Internet networking stack. In order to build P2P applications, devs have long had to make custom ad-hoc solutions to fit their needs, sometimes making some hard assumptions about their runtimes and the state of the network at the time of their development. Today, looking back more than 20 years, we see a clear pattern in the types of mechanisms built around the Internet Protocol, IP, which can be found throughout many layers of the OSI layer system, libp2p distils these mechanisms into flat categories and defines clear interfaces that once exposed, enable other protocols and applications to use and swap them, enabling upgradability and adaptability for the runtime, without breaking the API. @@ -159,6 +116,48 @@ If you are starting your journey with `js-libp2p`, read the [GETTING\_STARTED.md You can find multiple examples on the [examples folder](./examples) that will guide you through using libp2p for several scenarios. +## Structure + +- [`/doc`](./doc) Docs for libp2p +- [`/examples/auto-relay`](./examples/auto-relay) Shows how to configure relayed connections +- [`/examples/chat`](./examples/chat) An example chat app using libp2p +- [`/examples/connection-encryption`](./examples/connection-encryption) An example of how to configure connection encrypters +- [`/examples/delegated-routing`](./examples/delegated-routing) How to configure libp2p delegated routers +- [`/examples/discovery-mechanisms`](./examples/discovery-mechanisms) How to configure peer discovery mechanisms +- [`/examples/echo`](./examples/echo) An example echo app +- [`/examples/peer-and-content-routing`](./examples/peer-and-content-routing) How to use peer and content routing +- [`/examples/pnet`](./examples/pnet) How to configure a libp2p private network +- [`/examples/protocol-and-stream-muxing`](./examples/protocol-and-stream-muxing) How to use multiplex protocols streams +- [`/examples/pubsub`](./examples/pubsub) An example using libp2p pubsub +- [`/examples/transports`](./examples/transports) An example using different types of libp2p transport +- [`/interop`](./interop) Multidimension Interop Test +- [`/packages/crypto`](./packages/crypto) Crypto primitives for libp2p +- [`/packages/interface`](./packages/interface) The interface implemented by a libp2p node +- [`/packages/interface-compliance-tests`](./packages/interface-compliance-tests) Compliance tests for JS libp2p interfaces +- [`/packages/interface-internal`](./packages/interface-internal) Interfaces implemented by internal libp2p components +- [`/packages/kad-dht`](./packages/kad-dht) JavaScript implementation of the Kad-DHT for libp2p +- [`/packages/keychain`](./packages/keychain) Key management and cryptographically protected messages +- [`/packages/libp2p`](./packages/libp2p) JavaScript implementation of libp2p, a modular peer to peer network stack +- [`/packages/logger`](./packages/logger) A logging component for use in js-libp2p modules +- [`/packages/metrics-prometheus`](./packages/metrics-prometheus) Collect libp2p metrics for scraping by Prometheus or Graphana +- [`/packages/multistream-select`](./packages/multistream-select) JavaScript implementation of multistream-select +- [`/packages/peer-collections`](./packages/peer-collections) Stores values against a peer id +- [`/packages/peer-discovery-bootstrap`](./packages/peer-discovery-bootstrap) Peer discovery via a list of bootstrap peers +- [`/packages/peer-discovery-mdns`](./packages/peer-discovery-mdns) Node.js libp2p mDNS discovery implementation for peer discovery +- [`/packages/peer-id`](./packages/peer-id) Implementation of @libp2p/interface-peer-id +- [`/packages/peer-id-factory`](./packages/peer-id-factory) Create PeerId instances +- [`/packages/peer-record`](./packages/peer-record) Used to transfer signed peer data across the network +- [`/packages/peer-store`](./packages/peer-store) Stores information about peers libp2p knows on the network +- [`/packages/protocol-perf`](./packages/protocol-perf) Implementation of Perf Protocol +- [`/packages/pubsub`](./packages/pubsub) libp2p pubsub base class +- [`/packages/pubsub-floodsub`](./packages/pubsub-floodsub) libp2p-floodsub, also known as pubsub-flood or just dumbsub, this implementation of pubsub focused on delivering an API for Publish/Subscribe, but with no CastTree Forming (it just floods the network). +- [`/packages/stream-multiplexer-mplex`](./packages/stream-multiplexer-mplex) JavaScript implementation of +- [`/packages/transport-tcp`](./packages/transport-tcp) A TCP transport for libp2p +- [`/packages/transport-webrtc`](./packages/transport-webrtc) A libp2p transport using WebRTC connections +- [`/packages/transport-websockets`](./packages/transport-websockets) JavaScript implementation of the WebSockets module that libp2p uses and that implements the interface-transport spec +- [`/packages/transport-webtransport`](./packages/transport-webtransport) JavaScript implementation of the WebTransport module that libp2p uses and that implements the interface-transport spec +- [`/packages/utils`](./packages/utils) Package to aggregate shared logic and dependencies for the libp2p ecosystem + ## Development **Clone and install dependencies:**