# @koush/werift

> WebRTC Implementation for TypeScript (Node.js)

Latest version **0.17.14** (published 2023-05-18) · MIT license · 0 weekly downloads

## Install

```sh
npm install @koush/werift
pnpm add @koush/werift
yarn add @koush/werift
bun add @koush/werift
```

## Health

**Score 40/100 (D)** — status: abandoned.

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

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

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 0.17.14 |
| Published | 2023-05-18 |
| First published | 2022-02-02 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=16 |
| Dependencies | 21 |
| Unpacked size | 2.2 MB |
| Known vulnerabilities | 0 (+3 in 3 direct dependencies) |
| Install scripts | no |
| GitHub stars | 628 |
| Author | shinyoshiaki |
| Maintainers | koush |
| Keywords | WebRTC, node.js |

## Links

- npm: https://www.npmjs.com/package/@koush/werift
- Repository: https://github.com/shinyoshiaki/werift-webrtc
- Issues: https://github.com/shinyoshiaki/werift-webrtc/issues
- npm.io page: https://npm.io/package/@koush/werift

## Dependencies (21)

- [ip](https://npm.io/package/ip.md) ^1.1.8
- [uuid](https://npm.io/package/uuid.md) ^9.0.0
- [debug](https://npm.io/package/debug.md) ^4.3.4
- [aes-js](https://npm.io/package/aes-js.md) ^3.1.2
- [jspack](https://npm.io/package/jspack.md) ^0.0.4
- [lodash](https://npm.io/package/lodash.md) ^4.17.21
- [rx.mini](https://npm.io/package/rx.mini.md) ^1.2.2
- [date-fns](https://npm.io/package/date-fns.md) ^2.29.3
- [elliptic](https://npm.io/package/elliptic.md) ^6.5.4
- [nano-time](https://npm.io/package/nano-time.md) ^1.0.0
- [tweetnacl](https://npm.io/package/tweetnacl.md) ^1.0.3
- [@fidm/x509](https://npm.io/package/@fidm/x509.md) ^1.2.1
- [binary-data](https://npm.io/package/binary-data.md) ^0.6.0
- [turbo-crc32](https://npm.io/package/turbo-crc32.md) ^1.0.1
- [buffer-crc32](https://npm.io/package/buffer-crc32.md) ^0.2.13
- [int64-buffer](https://npm.io/package/int64-buffer.md) ^1.0.1
- [p-cancelable](https://npm.io/package/p-cancelable.md) ^2.1.1
- [@peculiar/x509](https://npm.io/package/@peculiar/x509.md) ^1.9.2
- [@peculiar/webcrypto](https://npm.io/package/@peculiar/webcrypto.md) ^1.4.1
- [@minhducsun2002/leb128](https://npm.io/package/@minhducsun2002/leb128.md) ^1.0.0
- [@shinyoshiaki/ebml-builder](https://npm.io/package/@shinyoshiaki/ebml-builder.md) ^0.0.1

## Recent versions

- 0.17.14 (latest) — 2023-05-18
- 0.17.13 — 2023-05-18
- 0.18.3 — 2023-05-17
- 0.18.1 — 2023-04-05
- 0.17.11 — 2023-01-20
- 0.17.10 — 2023-01-20
- 0.17.9 — 2023-01-20
- 0.17.8 — 2023-01-20
- 0.14.5-beta9 — 2022-04-10
- 0.14.5-beta7 — 2022-02-17
- 0.14.5-beta5 — 2022-02-10
- 0.14.5-beta4 — 2022-02-05
- 0.14.5 — 2022-02-05
- 0.14.5-beta3 — 2022-02-02
- 0.14.5-beta2 — 2022-02-02
- … 2 more at https://npm.io/package/@koush/werift/versions

## README

# werift

werift (**We**b**r**tc **I**mplementation **f**or **T**ypeScript)

werift is a WebRTC Implementation for TypeScript (Node.js)

# install

`npm install werift`

# Documentation (WIP)

- [Website](https://shinyoshiaki.github.io/werift-webrtc/website/build/)
- [API Reference](https://shinyoshiaki.github.io/werift-webrtc/website/build/docs/api)

# examples

https://github.com/shinyoshiaki/werift-webrtc/tree/master/examples

### SFU

https://github.com/shinyoshiaki/node-sfu

# demo

## MediaChannel

```sh
yarn media
```

open
https://shinyoshiaki.github.io/werift-webrtc/examples/mediachannel/pubsub/answer

see console & chrome://webrtc-internals/

## DataChannel

run

```sh
yarn datachannel
```

open
https://shinyoshiaki.github.io/werift-webrtc/examples/datachannel/answer

see console & chrome://webrtc-internals/

# RoadMap

## Work in Progress Towards 1.0

- [x] STUN
- [x] TURN
  - [x] UDP
- [x] ICE
  - [x] Vanilla ICE
  - [x] Trickle ICE
- [x] DTLS
  - [x] DTLS-SRTP
  - [x] Curve25519
  - [x] P-256
- [x] DataChannel
- [x] MediaChannel
  - [x] sendonly
  - [x] recvonly
  - [x] sendrecv
  - [x] multi track
- [x] RTP
- [x] RTCP
  - [x] SR/RR
  - [x] Picture Loss Indication
  - [x] ReceiverEstimatedMaxBitrate
  - [x] GenericNack
  - [x] TransportWideCC
- [x] SRTP
- [x] SRTCP
- [x] SDP
- [x] PeerConnection
- [x] Simulcast
  - [x] recv
- [x] BWE
  - [x] sender side BWE
- [ ] Documentation
- [x] Compatibility
  - [x] Chrome
  - [x] FireFox
  - [x] Pion
  - [x] aiortc
  - [x] sipsorcery
- [x] Interop E2E test
  - [x] Chrome
  - ↓↓↓ https://github.com/sipsorcery/webrtc-echoes
  - [x] Pion
  - [x] aiortc
  - [x] sipsorcery
- [ ] Unit Tests
  - [ ] follow [Web Platform Tests](https://github.com/web-platform-tests/wpt)

## Road Map Towards 2.0

- [ ] API compatible with browser RTCPeerConnection
- [ ] ICE
  - [ ] ICE restart
- [ ] SDP
  - [ ] reuse inactive m-line
- [ ] Simulcast
  - [ ] send
- [ ] support more cipher suites

# reference

- aiortc https://github.com/aiortc/aiortc
- pion/webrtc https://github.com/pion/webrtc
- etc ....

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