# @0xgg/korona

> **Korona = Kill Corona (virus)**, to memorate those who fight against the corona virus bravely in 2020. 仅已此库纪念 2020 年那些勇敢与新冠状病毒抗争的人们。

Latest version **0.0.7** (published 2022-08-03) · MIT license · 0 weekly downloads

## Install

```sh
npm install @0xgg/korona
pnpm add @0xgg/korona
yarn add @0xgg/korona
bun add @0xgg/korona
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.7 |
| Published | 2022-08-03 |
| First published | 2020-02-23 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 346.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 4 |
| Author | Yiyi Wang |
| Maintainers | shd101wyy |

## Links

- npm: https://www.npmjs.com/package/@0xgg/korona
- Repository: https://github.com/0xGG/korona
- Homepage: https://github.com/0xGG/korona#readme
- Issues: https://github.com/0xGG/korona/issues
- npm.io page: https://npm.io/package/@0xgg/korona

## Dependencies (2)

- [peerjs](https://npm.io/package/peerjs.md) ^1.4.6
- [typed-emitter](https://npm.io/package/typed-emitter.md) ^2.1.0

## Recent versions

- 0.0.7 (latest) — 2022-08-03
- 0.0.6 — 2022-08-03
- 0.0.5 — 2022-08-01
- 0.0.4 — 2022-08-01
- 0.0.3 — 2022-06-22
- 0.0.2 — 2022-06-22
- 0.0.1 — 2020-02-23

## README

# Korona

**Korona = Kill Corona (virus)**, to memorate those who fight against the corona virus bravely in 2020.  
仅已此库纪念 2020 年那些勇敢与新冠状病毒抗争的人们。

Minimal library to quickly construct decentralized p2p network

## Installation

```bash
$ npm install @0xgg/korona
```

## Demo

Simple Korona P2P Chat application:

https://0xgg.github.io/korona/

## Usages

Check the `index.html` for example usages.

```typescript
import { Korona, randomId } from "@0xgg/korona";

// Initialize the Korona P2P network
const peer = new Korona({
  peerId = randomId(), // The peerId, default to `randomId()`
  roomId = "public-rrom", // The roomId, default to `undefined`. If specified, then the peer will try to join the PubSub room. The peer might become the PubSub room host if there is no host yet.
  peerJSOptions: {
    // Follows https://peerjs.com/docs/#peer-options
  },
  maxPeers: 5, // Max number of peer connections that your peer can have
});

// Get ready to be used
peer.on("open", async (peerId) => {
  // When another peer just connected to you and tries to sync data with you,
  // you send some data back.
  peer.on("sync", async (send, peerId) => {
    return send({
      // ... data that you want to send
    });
  });

  // When a new peer joined the P2P network
  peer.on("peerJoined", async (peerId) => {
    console.log(`${peerId} joined`);
  });

  // When a peer left the P2P network
  peer.on("peerLeft", async (peerId) => {
    console.log(`${peerId} left`);
  });

  // When your peer gets disconnnected from the server but keep the connections alive in the P2P network. Will not be able to accept new peer connections.
  peer.on("disconnected", async () => {
    // Do something
  });

  // Emitted when the peer is destroyed and can no longer accept or create any new connections. At this time, the peer's connections will all be closed.
  peer.on("close", async () => {
    // Do something
  });

  // When there is peer error: https://peerjs.com/docs/#peeron-error
  peer.on("error", async (error) => {
    // Do something
  });

  // When you receive data from other peers
  peer.on("data", async (data: any) => {
    // Do something
  });

  // When the PubSub host changed,
  peer.on("pubsubHostChanged", async () => {
    // Do something
  });

  // Join the P2P network that other peer lives in
  await peer.requestConnection("target-peer-id");

  // Broadcast the data to all other peers in the P2P network
  await peer.broadcast({
    // Data goes here
  });

  // Send data to specific peer by id
  await peer.send("target-peer-id", {
    // Data goes here
  });
});
```

## References

- https://github.com/conclave-team/conclave
- https://hal.archives-ouvertes.fr/hal-00921633/document

## License

MIT

---
_Source: https://npm.io/package/@0xgg/korona · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
