node-datachannel 0.12.0 → 0.20.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +5 -1
- package/.eslintrc.json +27 -0
- package/.prettierrc +12 -0
- package/CMakeLists.txt +13 -13
- package/dist/cjs/index.cjs +11 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/lib/datachannel-stream.cjs +101 -0
- package/dist/cjs/lib/datachannel-stream.cjs.map +1 -0
- package/dist/cjs/lib/index.cjs +61 -0
- package/dist/cjs/lib/index.cjs.map +1 -0
- package/dist/cjs/lib/node-datachannel.cjs +14 -0
- package/dist/cjs/lib/node-datachannel.cjs.map +1 -0
- package/dist/cjs/lib/websocket-server.cjs +44 -0
- package/dist/cjs/lib/websocket-server.cjs.map +1 -0
- package/dist/cjs/lib/websocket.cjs +8 -0
- package/dist/cjs/lib/websocket.cjs.map +1 -0
- package/dist/cjs/polyfill/Events.cjs +37 -0
- package/dist/cjs/polyfill/Events.cjs.map +1 -0
- package/dist/cjs/polyfill/Exception.cjs +34 -0
- package/dist/cjs/polyfill/Exception.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCCertificate.cjs +31 -0
- package/dist/cjs/polyfill/RTCCertificate.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCDataChannel.cjs +179 -0
- package/dist/cjs/polyfill/RTCDataChannel.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCDtlsTransport.cjs +52 -0
- package/dist/cjs/polyfill/RTCDtlsTransport.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCError.cjs +76 -0
- package/dist/cjs/polyfill/RTCError.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCIceCandidate.cjs +129 -0
- package/dist/cjs/polyfill/RTCIceCandidate.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCIceTransport.cjs +84 -0
- package/dist/cjs/polyfill/RTCIceTransport.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCPeerConnection.cjs +417 -0
- package/dist/cjs/polyfill/RTCPeerConnection.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCSctpTransport.cjs +61 -0
- package/dist/cjs/polyfill/RTCSctpTransport.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCSessionDescription.cjs +37 -0
- package/dist/cjs/polyfill/RTCSessionDescription.cjs.map +1 -0
- package/dist/cjs/polyfill/index.cjs +42 -0
- package/dist/cjs/polyfill/index.cjs.map +1 -0
- package/dist/esm/index.mjs +8 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/lib/datachannel-stream.mjs +78 -0
- package/dist/esm/lib/datachannel-stream.mjs.map +1 -0
- package/dist/esm/lib/index.mjs +44 -0
- package/dist/esm/lib/index.mjs.map +1 -0
- package/dist/esm/lib/node-datachannel.mjs +18 -0
- package/dist/esm/lib/node-datachannel.mjs.map +1 -0
- package/dist/esm/lib/websocket-server.mjs +42 -0
- package/dist/esm/lib/websocket-server.mjs.map +1 -0
- package/dist/esm/lib/websocket.mjs +6 -0
- package/dist/esm/lib/websocket.mjs.map +1 -0
- package/dist/esm/polyfill/Events.mjs +34 -0
- package/dist/esm/polyfill/Events.mjs.map +1 -0
- package/dist/esm/polyfill/Exception.mjs +28 -0
- package/dist/esm/polyfill/Exception.mjs.map +1 -0
- package/dist/esm/polyfill/RTCCertificate.mjs +27 -0
- package/dist/esm/polyfill/RTCCertificate.mjs.map +1 -0
- package/dist/esm/polyfill/RTCDataChannel.mjs +175 -0
- package/dist/esm/polyfill/RTCDataChannel.mjs.map +1 -0
- package/dist/esm/polyfill/RTCDtlsTransport.mjs +48 -0
- package/dist/esm/polyfill/RTCDtlsTransport.mjs.map +1 -0
- package/dist/esm/polyfill/RTCError.mjs +72 -0
- package/dist/esm/polyfill/RTCError.mjs.map +1 -0
- package/dist/esm/polyfill/RTCIceCandidate.mjs +125 -0
- package/dist/esm/polyfill/RTCIceCandidate.mjs.map +1 -0
- package/dist/esm/polyfill/RTCIceTransport.mjs +80 -0
- package/dist/esm/polyfill/RTCIceTransport.mjs.map +1 -0
- package/dist/esm/polyfill/RTCPeerConnection.mjs +413 -0
- package/dist/esm/polyfill/RTCPeerConnection.mjs.map +1 -0
- package/dist/esm/polyfill/RTCSctpTransport.mjs +57 -0
- package/dist/esm/polyfill/RTCSctpTransport.mjs.map +1 -0
- package/dist/esm/polyfill/RTCSessionDescription.mjs +33 -0
- package/dist/esm/polyfill/RTCSessionDescription.mjs.map +1 -0
- package/dist/esm/polyfill/index.mjs +27 -0
- package/dist/esm/polyfill/index.mjs.map +1 -0
- package/dist/types/lib/datachannel-stream.d.ts +24 -0
- package/dist/types/lib/index.d.ts +164 -0
- package/dist/types/lib/types.d.ts +106 -0
- package/dist/types/lib/websocket-server.d.ts +13 -0
- package/dist/types/lib/websocket.d.ts +25 -0
- package/dist/types/polyfill/Events.d.ts +15 -0
- package/dist/types/polyfill/RTCCertificate.d.ts +8 -0
- package/dist/types/polyfill/RTCDataChannel.d.ts +29 -0
- package/dist/types/polyfill/RTCDtlsTransport.d.ts +17 -0
- package/dist/types/polyfill/RTCError.d.ts +16 -0
- package/dist/types/polyfill/RTCIceCandidate.d.ts +21 -0
- package/dist/types/polyfill/RTCIceTransport.d.ts +24 -0
- package/dist/types/polyfill/RTCPeerConnection.d.ts +56 -0
- package/dist/types/polyfill/RTCSctpTransport.d.ts +17 -0
- package/dist/types/polyfill/RTCSessionDescription.d.ts +9 -0
- package/{polyfill → dist/types/polyfill}/index.d.ts +3 -14
- package/jest.config.ts +14 -0
- package/package.json +47 -43
- package/rollup.config.mjs +63 -0
- package/src/index.ts +10 -0
- package/{lib/datachannel-stream.js → src/lib/datachannel-stream.ts} +16 -11
- package/src/lib/index.ts +180 -0
- package/src/lib/node-datachannel.ts +13 -0
- package/src/lib/types.ts +126 -0
- package/{lib/websocket-server.js → src/lib/websocket-server.ts} +10 -8
- package/src/lib/websocket.ts +26 -0
- package/src/polyfill/Events.ts +33 -0
- package/src/polyfill/Exception.ts +37 -0
- package/src/polyfill/RTCCertificate.ts +17 -0
- package/{polyfill/RTCDataChannel.js → src/polyfill/RTCDataChannel.ts} +43 -40
- package/src/polyfill/RTCDtlsTransport.ts +47 -0
- package/src/polyfill/RTCError.ts +71 -0
- package/{polyfill/RTCIceCandidate.js → src/polyfill/RTCIceCandidate.ts} +35 -35
- package/{polyfill/RTCIceTransport.js → src/polyfill/RTCIceTransport.ts} +22 -20
- package/{polyfill/RTCPeerConnection.js → src/polyfill/RTCPeerConnection.ts} +128 -114
- package/{polyfill/RTCSctpTransport.js → src/polyfill/RTCSctpTransport.ts} +16 -14
- package/{polyfill/RTCSessionDescription.js → src/polyfill/RTCSessionDescription.ts} +7 -12
- package/{polyfill/index.js → src/polyfill/index.ts} +10 -10
- package/tsconfig.json +20 -13
- package/.eslintrc.cjs +0 -8
- package/.github/FUNDING.yml +0 -2
- package/.github/workflows/build-linux.yml +0 -109
- package/.github/workflows/build-mac-m1.yml +0 -38
- package/.github/workflows/build-mac-x64.yml +0 -40
- package/.github/workflows/build-win.yml +0 -74
- package/.github/workflows/lint.yml +0 -20
- package/.github/workflows/npm-publish-manual.yml +0 -23
- package/.prettierrc.cjs +0 -8
- package/build-containers/Dockerfile.alpine +0 -6
- package/build-containers/Dockerfile.debian +0 -7
- package/cmake/toolchain/ci.cmake +0 -23
- package/examples/client-server/README.md +0 -22
- package/examples/client-server/client-benchmark.js +0 -230
- package/examples/client-server/client-periodic.js +0 -189
- package/examples/client-server/client.js +0 -111
- package/examples/client-server/package-lock.json +0 -289
- package/examples/client-server/package.json +0 -16
- package/examples/client-server/signaling-server.js +0 -39
- package/examples/electron-demo/README.md +0 -58
- package/examples/electron-demo/forge.config.js +0 -49
- package/examples/electron-demo/package-lock.json +0 -15877
- package/examples/electron-demo/package.json +0 -44
- package/examples/electron-demo/src/index.css +0 -7
- package/examples/electron-demo/src/index.html +0 -29
- package/examples/electron-demo/src/main.js +0 -53
- package/examples/electron-demo/src/node-datachannel.js +0 -123
- package/examples/electron-demo/src/preload.js +0 -28
- package/examples/electron-demo/src/renderer.js +0 -58
- package/examples/electron-demo/webpack.main.config.js +0 -21
- package/examples/electron-demo/webpack.renderer.config.js +0 -13
- package/examples/electron-demo/webpack.rules.js +0 -35
- package/examples/media/README.md +0 -34
- package/examples/media/main.html +0 -45
- package/examples/media/media.js +0 -54
- package/examples/simple-peer-usage/main.js +0 -28
- package/examples/simple-peer-usage/package-lock.json +0 -317
- package/examples/simple-peer-usage/package.json +0 -16
- package/examples/websocket/websocket-client.js +0 -20
- package/examples/websocket/websocket-server.js +0 -22
- package/jest.config.cjs +0 -7
- package/lib/index.cjs +0 -194
- package/lib/index.d.cts +0 -300
- package/lib/index.d.ts +0 -300
- package/lib/index.js +0 -58
- package/lib/node-datachannel.js +0 -7
- package/polyfill/Events.d.ts +0 -9
- package/polyfill/Events.js +0 -29
- package/polyfill/Exception.js +0 -23
- package/polyfill/RTCCertificate.d.ts +0 -7
- package/polyfill/RTCCertificate.js +0 -17
- package/polyfill/RTCDataChannel.d.ts +0 -35
- package/polyfill/RTCDtlsTransport.d.ts +0 -10
- package/polyfill/RTCDtlsTransport.js +0 -47
- package/polyfill/RTCError.d.ts +0 -11
- package/polyfill/RTCError.js +0 -65
- package/polyfill/RTCIceCandidate.d.ts +0 -20
- package/polyfill/RTCIceTransport.d.ts +0 -18
- package/polyfill/RTCPeerConnection.d.ts +0 -62
- package/polyfill/RTCSctpTransport.d.ts +0 -10
- package/polyfill/RTCSessionDescription.d.ts +0 -8
- package/polyfill/index.cjs +0 -1333
- package/polyfill/index.d.cts +0 -37
- package/test/connectivity.js +0 -86
- package/test/jest-tests/basic.test.js +0 -37
- package/test/jest-tests/multiple-run.test.js +0 -73
- package/test/jest-tests/p2p.test.js +0 -99
- package/test/jest-tests/polyfill.test.js +0 -10
- package/test/jest-tests/streams.test.js +0 -48
- package/test/jest-tests/websocket.test.js +0 -69
- package/test/polyfill-connectivity.js +0 -89
- package/test/websockets.js +0 -50
- package/test/wpt-tests/README.md +0 -46
- package/test/wpt-tests/chrome-failed-tests.js +0 -42
- package/test/wpt-tests/index.js +0 -96
- package/test/wpt-tests/last-test-results.md +0 -301
- package/test/wpt-tests/package-lock.json +0 -1712
- package/test/wpt-tests/package.json +0 -19
- package/test/wpt-tests/wpt-test-list.js +0 -139
- package/test/wpt-tests/wpt.js +0 -131
- /package/src/{data-channel-wrapper.cpp → cpp/data-channel-wrapper.cpp} +0 -0
- /package/src/{data-channel-wrapper.h → cpp/data-channel-wrapper.h} +0 -0
- /package/src/{main.cpp → cpp/main.cpp} +0 -0
- /package/src/{media-audio-wrapper.cpp → cpp/media-audio-wrapper.cpp} +0 -0
- /package/src/{media-audio-wrapper.h → cpp/media-audio-wrapper.h} +0 -0
- /package/src/{media-direction.cpp → cpp/media-direction.cpp} +0 -0
- /package/src/{media-direction.h → cpp/media-direction.h} +0 -0
- /package/src/{media-rtcpreceivingsession-wrapper.cpp → cpp/media-rtcpreceivingsession-wrapper.cpp} +0 -0
- /package/src/{media-rtcpreceivingsession-wrapper.h → cpp/media-rtcpreceivingsession-wrapper.h} +0 -0
- /package/src/{media-track-wrapper.cpp → cpp/media-track-wrapper.cpp} +0 -0
- /package/src/{media-track-wrapper.h → cpp/media-track-wrapper.h} +0 -0
- /package/src/{media-video-wrapper.cpp → cpp/media-video-wrapper.cpp} +0 -0
- /package/src/{media-video-wrapper.h → cpp/media-video-wrapper.h} +0 -0
- /package/src/{peer-connection-wrapper.cpp → cpp/peer-connection-wrapper.cpp} +0 -0
- /package/src/{peer-connection-wrapper.h → cpp/peer-connection-wrapper.h} +0 -0
- /package/src/{rtc-wrapper.cpp → cpp/rtc-wrapper.cpp} +0 -0
- /package/src/{rtc-wrapper.h → cpp/rtc-wrapper.h} +0 -0
- /package/src/{thread-safe-callback.cpp → cpp/thread-safe-callback.cpp} +0 -0
- /package/src/{thread-safe-callback.h → cpp/thread-safe-callback.h} +0 -0
- /package/src/{web-socket-server-wrapper.cpp → cpp/web-socket-server-wrapper.cpp} +0 -0
- /package/src/{web-socket-server-wrapper.h → cpp/web-socket-server-wrapper.h} +0 -0
- /package/src/{web-socket-wrapper.cpp → cpp/web-socket-wrapper.cpp} +0 -0
- /package/src/{web-socket-wrapper.h → cpp/web-socket-wrapper.h} +0 -0
- /package/{polyfill → src/polyfill}/README.md +0 -0
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
name: Build - Linux
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
workflow_dispatch:
|
|
5
|
-
# push:
|
|
6
|
-
# tags:
|
|
7
|
-
# - v*
|
|
8
|
-
|
|
9
|
-
env:
|
|
10
|
-
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
|
|
11
|
-
|
|
12
|
-
jobs:
|
|
13
|
-
build-linux:
|
|
14
|
-
runs-on: ubuntu-20.04
|
|
15
|
-
strategy:
|
|
16
|
-
matrix:
|
|
17
|
-
node-version: [16]
|
|
18
|
-
arch: [amd64, arm64, arm]
|
|
19
|
-
platform: [debian, alpine]
|
|
20
|
-
include:
|
|
21
|
-
# Set baselines per platform
|
|
22
|
-
- triple: "alpine-linux-musl"
|
|
23
|
-
platform: alpine
|
|
24
|
-
version: 3.16
|
|
25
|
-
libc: musl
|
|
26
|
-
gcc_install: clang lld
|
|
27
|
-
gcc: clang
|
|
28
|
-
gxx: clang++
|
|
29
|
-
# libc is intentionally not set here, as prebuild-install requires libc to not be set for glibc builds
|
|
30
|
-
- triple: "linux-gnu"
|
|
31
|
-
platform: debian
|
|
32
|
-
version: bullseye
|
|
33
|
-
# Set baselines per architecture
|
|
34
|
-
- triple_arch: x86_64
|
|
35
|
-
node_arch: x64
|
|
36
|
-
arch: amd64
|
|
37
|
-
- triple_arch: armv7
|
|
38
|
-
node_arch: arm
|
|
39
|
-
triple_postfix: eabihf
|
|
40
|
-
arch: arm
|
|
41
|
-
flags: -march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard -fPIC
|
|
42
|
-
- triple_arch: aarch64
|
|
43
|
-
node_arch: arm64
|
|
44
|
-
arch: arm64
|
|
45
|
-
flags: -march=armv8-a -fPIC
|
|
46
|
-
# Set edge case overrides for specific platform + architecture
|
|
47
|
-
# also define gcc commands for each architecture
|
|
48
|
-
- arch: amd64
|
|
49
|
-
platform: debian
|
|
50
|
-
gcc_install: gcc g++
|
|
51
|
-
gcc: gcc
|
|
52
|
-
gxx: g++
|
|
53
|
-
- arch: arm64
|
|
54
|
-
platform: debian
|
|
55
|
-
gcc_install: gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
|
|
56
|
-
gcc: aarch64-linux-gnu-gcc
|
|
57
|
-
gxx: aarch64-linux-gnu-g++
|
|
58
|
-
# debian uses the triple `arm-linux-gnueabihf` instead of alpine's `armv7-alpine-linux-musleabihf`
|
|
59
|
-
# because of this, we explicitly override triple_arch for debian arm
|
|
60
|
-
- triple_arch: arm
|
|
61
|
-
arch: arm
|
|
62
|
-
platform: debian
|
|
63
|
-
gcc_install: gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
|
|
64
|
-
gcc: arm-linux-gnueabihf-gcc
|
|
65
|
-
gxx: arm-linux-gnueabihf-g++
|
|
66
|
-
|
|
67
|
-
steps:
|
|
68
|
-
- uses: actions/checkout@v4
|
|
69
|
-
- name: Use Node.js ${{ matrix.node-version }}
|
|
70
|
-
uses: actions/setup-node@v4
|
|
71
|
-
with:
|
|
72
|
-
node-version: ${{ matrix.node-version }}
|
|
73
|
-
- name: Install node dependencies
|
|
74
|
-
run: npm install --ignore-scripts
|
|
75
|
-
env:
|
|
76
|
-
CI: true
|
|
77
|
-
- if: matrix.arch != 'amd64'
|
|
78
|
-
name: Set up QEMU
|
|
79
|
-
uses: docker/setup-qemu-action@v3
|
|
80
|
-
with:
|
|
81
|
-
platforms: ${{ matrix.arch }}
|
|
82
|
-
- name: Install system dependencies
|
|
83
|
-
run: |
|
|
84
|
-
sudo apt update
|
|
85
|
-
sudo apt install -y podman ninja-build ${{ matrix.gcc_install }}
|
|
86
|
-
- name: List installed libc
|
|
87
|
-
run: apt list --installed | grep libc6-dev
|
|
88
|
-
- name: Build sysroot
|
|
89
|
-
run: sudo podman build --isolation=chroot -t ndc-buildroot:${{ matrix.platform }}-${{ matrix.arch }} ./build-containers --file Dockerfile.${{ matrix.platform }} --platform linux/${{ matrix.arch }} --build-arg="version=${{ matrix.version }}" --build-arg="node_version=${{ matrix.node-version }}"
|
|
90
|
-
- name: Mount sysroot
|
|
91
|
-
id: sysroot
|
|
92
|
-
run: echo "sysroot=$(sudo podman image mount ndc-buildroot:${{ matrix.platform }}-${{ matrix.arch }})" >> $GITHUB_OUTPUT
|
|
93
|
-
- name: Build
|
|
94
|
-
run: sudo --preserve-env=SYSROOT,TRIPLE,COMPILER_FLAGS,LIBC,GCC,GXX,CI,PATH node_modules/.bin/prebuild --arch ${{ matrix.node_arch }} -r napi --backend cmake-js -- --CDCMAKE_TOOLCHAIN_FILE:FILEPATH=./cmake/toolchain/ci.cmake
|
|
95
|
-
env:
|
|
96
|
-
SYSROOT: ${{ steps.sysroot.outputs.sysroot }}
|
|
97
|
-
TRIPLE: ${{ matrix.triple_arch }}-${{ matrix.triple }}${{ matrix.triple_postfix }}
|
|
98
|
-
COMPILER_FLAGS: ${{ matrix.flags }}
|
|
99
|
-
LIBC: ${{ matrix.libc }}
|
|
100
|
-
GCC: ${{ matrix.gcc }}
|
|
101
|
-
GXX: ${{ matrix.gxx }}
|
|
102
|
-
CI: true
|
|
103
|
-
- name: Test
|
|
104
|
-
run: sudo podman run --rm -v $(pwd):/usr/app/ -e CI=true --platform linux/${{ matrix.arch }} -t ndc-buildroot:${{ matrix.platform }}-${{ matrix.arch }} npm run test
|
|
105
|
-
- name: Upload
|
|
106
|
-
run: sudo --preserve-env=CI,LIBC node_modules/.bin/prebuild --arch ${{ matrix.node_arch }} -r napi --upload -u ${{ secrets.GITHUB_TOKEN }}
|
|
107
|
-
env:
|
|
108
|
-
LIBC: ${{ matrix.libc }}
|
|
109
|
-
CI: true
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
name: Build - Mac M1
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
workflow_dispatch:
|
|
5
|
-
# push:
|
|
6
|
-
# tags:
|
|
7
|
-
# - v*
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
env:
|
|
11
|
-
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
|
|
12
|
-
|
|
13
|
-
jobs:
|
|
14
|
-
build-macos:
|
|
15
|
-
runs-on: macos-13
|
|
16
|
-
strategy:
|
|
17
|
-
matrix:
|
|
18
|
-
node-version: [16.x]
|
|
19
|
-
|
|
20
|
-
steps:
|
|
21
|
-
- uses: actions/checkout@v4
|
|
22
|
-
- name: Install OpenSSL
|
|
23
|
-
run: |
|
|
24
|
-
wget https://mac.r-project.org/bin/darwin20/arm64/openssl-1.1.1t-darwin.20-arm64.tar.xz
|
|
25
|
-
tar -xf openssl-1.1.1t-darwin.20-arm64.tar.xz -C /tmp
|
|
26
|
-
rm -rf openssl-1.1.1t-darwin.20-arm64.tar.xz
|
|
27
|
-
- name: Use Node.js ${{ matrix.node-version }}
|
|
28
|
-
uses: actions/setup-node@v4
|
|
29
|
-
with:
|
|
30
|
-
node-version: ${{ matrix.node-version }}
|
|
31
|
-
- name: Build
|
|
32
|
-
run: |
|
|
33
|
-
npm install --ignore-scripts
|
|
34
|
-
node_modules/.bin/prebuild -r napi --backend cmake-js --arch arm64 --upload -u ${{ secrets.GITHUB_TOKEN }} -- --CDCMAKE_OSX_ARCHITECTURES="arm64"
|
|
35
|
-
env:
|
|
36
|
-
CI: true
|
|
37
|
-
OPENSSL_ROOT_DIR: /tmp/opt/R/arm64
|
|
38
|
-
OPENSSL_LIBRARIES: /tmp/opt/R/arm64/lib
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
name: Build - Mac x64
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
workflow_dispatch:
|
|
5
|
-
# push:
|
|
6
|
-
# tags:
|
|
7
|
-
# - v*
|
|
8
|
-
|
|
9
|
-
env:
|
|
10
|
-
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
|
|
11
|
-
|
|
12
|
-
jobs:
|
|
13
|
-
build-macos:
|
|
14
|
-
runs-on: macos-13
|
|
15
|
-
strategy:
|
|
16
|
-
matrix:
|
|
17
|
-
node-version: [16.x]
|
|
18
|
-
|
|
19
|
-
steps:
|
|
20
|
-
- uses: actions/checkout@v4
|
|
21
|
-
- name: Install OpenSSL
|
|
22
|
-
run: HOMEBREW_NO_INSTALL_CLEANUP=1 brew reinstall openssl@1.1
|
|
23
|
-
- name: Use Node.js ${{ matrix.node-version }}
|
|
24
|
-
uses: actions/setup-node@v4
|
|
25
|
-
with:
|
|
26
|
-
node-version: ${{ matrix.node-version }}
|
|
27
|
-
- name: Build
|
|
28
|
-
run: npm install --build-from-source
|
|
29
|
-
env:
|
|
30
|
-
CI: true
|
|
31
|
-
OPENSSL_ROOT_DIR: /usr/local/opt/openssl@1.1
|
|
32
|
-
OPENSSL_LIBRARIES: /usr/local/opt/openssl@1.1/lib
|
|
33
|
-
- name: Test
|
|
34
|
-
run: npm run test
|
|
35
|
-
env:
|
|
36
|
-
CI: true
|
|
37
|
-
- name: Upload
|
|
38
|
-
run: node_modules/.bin/prebuild -r napi --upload -u ${{ secrets.GITHUB_TOKEN }}
|
|
39
|
-
env:
|
|
40
|
-
CI: true
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
name: Build - Win
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
workflow_dispatch:
|
|
5
|
-
# push:
|
|
6
|
-
# tags:
|
|
7
|
-
# - v*
|
|
8
|
-
|
|
9
|
-
env:
|
|
10
|
-
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
|
|
11
|
-
|
|
12
|
-
jobs:
|
|
13
|
-
build-windows-x64:
|
|
14
|
-
runs-on: windows-2019
|
|
15
|
-
strategy:
|
|
16
|
-
matrix:
|
|
17
|
-
node-version: [16.x]
|
|
18
|
-
|
|
19
|
-
steps:
|
|
20
|
-
- uses: actions/checkout@v4
|
|
21
|
-
- uses: ilammy/msvc-dev-cmd@v1
|
|
22
|
-
- name: Install OpenSSL
|
|
23
|
-
run: choco install openssl
|
|
24
|
-
- name: Use Node.js ${{ matrix.node-version }}
|
|
25
|
-
uses: actions/setup-node@v4
|
|
26
|
-
with:
|
|
27
|
-
node-version: ${{ matrix.node-version }}
|
|
28
|
-
- name: Build
|
|
29
|
-
run: set npm_config_cache= && set NPM_CONFIG_CACHE= && npm install --build-from-source
|
|
30
|
-
env:
|
|
31
|
-
CI: true
|
|
32
|
-
# - name: Test
|
|
33
|
-
# run: npm run test
|
|
34
|
-
# env:
|
|
35
|
-
# CI: true
|
|
36
|
-
- name: Upload
|
|
37
|
-
run: node_modules/.bin/prebuild -r napi --upload -u ${{ secrets.GITHUB_TOKEN }}
|
|
38
|
-
env:
|
|
39
|
-
CI: true
|
|
40
|
-
|
|
41
|
-
build-windows-x86:
|
|
42
|
-
runs-on: windows-2019
|
|
43
|
-
strategy:
|
|
44
|
-
matrix:
|
|
45
|
-
node_version: [16.x]
|
|
46
|
-
node_arch:
|
|
47
|
-
- x86
|
|
48
|
-
steps:
|
|
49
|
-
- uses: actions/checkout@v4
|
|
50
|
-
- uses: ilammy/msvc-dev-cmd@v1
|
|
51
|
-
with:
|
|
52
|
-
arch: x86
|
|
53
|
-
- name: Install OpenSSL
|
|
54
|
-
# openssl v3.1.1 [Approved]
|
|
55
|
-
# openssl package files install completed. Performing other installation steps.
|
|
56
|
-
# ERROR: 32-bit installation is not supported for openssl
|
|
57
|
-
run: choco install openssl --x86=true --version=1.1.1.2100
|
|
58
|
-
- name: Use Node.js ${{ matrix.node_version }}
|
|
59
|
-
uses: aminya/setup-node@x86
|
|
60
|
-
with:
|
|
61
|
-
node-version: ${{ matrix.node_version }}
|
|
62
|
-
node-arch: ${{ matrix.node_arch }}
|
|
63
|
-
- name: Build
|
|
64
|
-
run: set npm_config_cache= && set NPM_CONFIG_CACHE= && npm install --build-from-source
|
|
65
|
-
env:
|
|
66
|
-
CI: true
|
|
67
|
-
# - name: Test
|
|
68
|
-
# run: npm run test
|
|
69
|
-
# env:
|
|
70
|
-
# CI: true
|
|
71
|
-
- name: Upload
|
|
72
|
-
run: node_modules/.bin/prebuild -r napi --upload -u ${{ secrets.GITHUB_TOKEN }}
|
|
73
|
-
env:
|
|
74
|
-
CI: true
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
name: Lint
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
pull_request:
|
|
5
|
-
workflow_dispatch:
|
|
6
|
-
|
|
7
|
-
jobs:
|
|
8
|
-
build:
|
|
9
|
-
|
|
10
|
-
runs-on: ubuntu-latest
|
|
11
|
-
|
|
12
|
-
steps:
|
|
13
|
-
- uses: actions/checkout@v3
|
|
14
|
-
- name: Use Node.js
|
|
15
|
-
uses: actions/setup-node@v3
|
|
16
|
-
with:
|
|
17
|
-
node-version: '16.x'
|
|
18
|
-
- run: npm ci
|
|
19
|
-
- run: npm run lint
|
|
20
|
-
- run: npm run test-types
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
name: npm Publish
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
workflow_dispatch:
|
|
5
|
-
|
|
6
|
-
jobs:
|
|
7
|
-
npm-publish:
|
|
8
|
-
name: npm-publish
|
|
9
|
-
runs-on: ubuntu-latest
|
|
10
|
-
steps:
|
|
11
|
-
- name: Checkout repository
|
|
12
|
-
uses: actions/checkout@v2
|
|
13
|
-
- name: Set up Node.js
|
|
14
|
-
uses: actions/setup-node@v1
|
|
15
|
-
with:
|
|
16
|
-
node-version: 20.x
|
|
17
|
-
registry-url: "https://registry.npmjs.org"
|
|
18
|
-
- name: Publish
|
|
19
|
-
run: |
|
|
20
|
-
npm install
|
|
21
|
-
npm publish
|
|
22
|
-
env:
|
|
23
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
|
package/.prettierrc.cjs
DELETED
package/cmake/toolchain/ci.cmake
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
set(CMAKE_SYSTEM_NAME Linux)
|
|
2
|
-
set(triple $ENV{TRIPLE})
|
|
3
|
-
|
|
4
|
-
# use clang and lld
|
|
5
|
-
set(CMAKE_C_COMPILER $ENV{GCC})
|
|
6
|
-
set(CMAKE_CXX_COMPILER $ENV{GXX})
|
|
7
|
-
if (CMAKE_C_COMPILER MATCHES clang)
|
|
8
|
-
add_link_options("-fuse-ld=lld")
|
|
9
|
-
endif()
|
|
10
|
-
|
|
11
|
-
set(CMAKE_SYSROOT "$ENV{SYSROOT}")
|
|
12
|
-
message(STATUS "Using sysroot: ${CMAKE_SYSROOT}")
|
|
13
|
-
|
|
14
|
-
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
15
|
-
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
16
|
-
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
17
|
-
|
|
18
|
-
set(CMAKE_C_COMPILER_TARGET ${triple})
|
|
19
|
-
set(CMAKE_CXX_COMPILER_TARGET ${triple})
|
|
20
|
-
message(STATUS "Compiling for: ${triple}")
|
|
21
|
-
|
|
22
|
-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} $ENV{COMPILER_FLAGS}")
|
|
23
|
-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} $ENV{COMPILER_FLAGS}")
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# client-server Example
|
|
2
|
-
|
|
3
|
-
- You can use client-server example project to test WebRTC Data Channels with WebSocket signaling.
|
|
4
|
-
- It uses same logic of [libdatachannel/examples/client](https://github.com/paullouisageneau/libdatachannel/tree/master/examples) project.
|
|
5
|
-
- Contains an equivalent implementation for a node.js signaling server
|
|
6
|
-
|
|
7
|
-
## How to Use?
|
|
8
|
-
|
|
9
|
-
- Prepare Project
|
|
10
|
-
- cd examples/client-server
|
|
11
|
-
- npm i
|
|
12
|
-
- Start ws signaling server;
|
|
13
|
-
- node signaling-server.js
|
|
14
|
-
- Start answerer (On a new Console);
|
|
15
|
-
- node client.js
|
|
16
|
-
- Note local ID
|
|
17
|
-
- Start Offerer (On a new Console);
|
|
18
|
-
|
|
19
|
-
- node client.js
|
|
20
|
-
- Enter answerer ID
|
|
21
|
-
|
|
22
|
-
> You can also use [libdatachannel/examples/client](https://github.com/paullouisageneau/libdatachannel/tree/master/examples) project's client & signaling server
|
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
// createRequire is native in node version >= 12
|
|
2
|
-
import { createRequire } from 'module';
|
|
3
|
-
const require = createRequire(import.meta.url);
|
|
4
|
-
|
|
5
|
-
// yargs down not supports ES Modules
|
|
6
|
-
const yargs = require('yargs/yargs');
|
|
7
|
-
const { hideBin } = require('yargs/helpers');
|
|
8
|
-
|
|
9
|
-
import readline from 'readline';
|
|
10
|
-
import nodeDataChannel from '../../lib/index.js';
|
|
11
|
-
|
|
12
|
-
// Init Logger
|
|
13
|
-
nodeDataChannel.initLogger('Info');
|
|
14
|
-
|
|
15
|
-
// PeerConnection Map
|
|
16
|
-
const pcMap = {};
|
|
17
|
-
|
|
18
|
-
const dcArr = [];
|
|
19
|
-
|
|
20
|
-
// Local ID
|
|
21
|
-
const id = randomId(4);
|
|
22
|
-
|
|
23
|
-
// Message Size
|
|
24
|
-
const MESSAGE_SIZE = 65535;
|
|
25
|
-
|
|
26
|
-
// Buffer Size
|
|
27
|
-
const BUFFER_SIZE = MESSAGE_SIZE * 0;
|
|
28
|
-
|
|
29
|
-
// Args
|
|
30
|
-
const argv = yargs(hideBin(process.argv))
|
|
31
|
-
.option('disableSend', {
|
|
32
|
-
type: 'boolean',
|
|
33
|
-
description: 'Disable Send',
|
|
34
|
-
default: false,
|
|
35
|
-
})
|
|
36
|
-
.option('wsUrl', {
|
|
37
|
-
type: 'string',
|
|
38
|
-
description: 'Web Socket URL',
|
|
39
|
-
default: 'ws://localhost:8000',
|
|
40
|
-
})
|
|
41
|
-
.option('dataChannelCount', {
|
|
42
|
-
type: 'number',
|
|
43
|
-
description: 'Data Channel Count To Create',
|
|
44
|
-
default: 1,
|
|
45
|
-
}).argv;
|
|
46
|
-
|
|
47
|
-
// Disable Send
|
|
48
|
-
const disableSend = argv.disableSend;
|
|
49
|
-
if (disableSend) console.log('Send Disabled!');
|
|
50
|
-
|
|
51
|
-
// Signaling Server
|
|
52
|
-
const wsUrl = process.env.WS_URL || argv.wsUrl;
|
|
53
|
-
console.log(wsUrl);
|
|
54
|
-
const dataChannelCount = argv.dataChannelCount;
|
|
55
|
-
|
|
56
|
-
// Read Line Interface
|
|
57
|
-
const rl = readline.createInterface({
|
|
58
|
-
input: process.stdin,
|
|
59
|
-
output: process.stdout,
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
const ws = new nodeDataChannel.WebSocket();
|
|
63
|
-
ws.open(wsUrl + '/' + id);
|
|
64
|
-
|
|
65
|
-
console.log(`The local ID is: ${id}`);
|
|
66
|
-
console.log(`Waiting for signaling to be connected...`);
|
|
67
|
-
|
|
68
|
-
ws.onOpen(() => {
|
|
69
|
-
console.log('WebSocket connected, signaling ready');
|
|
70
|
-
readUserInput();
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
ws.onError((err) => {
|
|
74
|
-
console.log('WebSocket Error: ', err);
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
ws.onMessage((msgStr) => {
|
|
78
|
-
let msg = JSON.parse(msgStr);
|
|
79
|
-
switch (msg.type) {
|
|
80
|
-
case 'offer':
|
|
81
|
-
createPeerConnection(msg.id);
|
|
82
|
-
pcMap[msg.id].setRemoteDescription(msg.description, msg.type);
|
|
83
|
-
break;
|
|
84
|
-
case 'answer':
|
|
85
|
-
pcMap[msg.id].setRemoteDescription(msg.description, msg.type);
|
|
86
|
-
break;
|
|
87
|
-
case 'candidate':
|
|
88
|
-
pcMap[msg.id].addRemoteCandidate(msg.candidate, msg.mid);
|
|
89
|
-
break;
|
|
90
|
-
|
|
91
|
-
default:
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
function readUserInput() {
|
|
97
|
-
rl.question('Enter a remote ID to send an offer: ', (peerId) => {
|
|
98
|
-
if (peerId && peerId.length > 2) {
|
|
99
|
-
rl.close();
|
|
100
|
-
console.log('Offering to ', peerId);
|
|
101
|
-
createPeerConnection(peerId);
|
|
102
|
-
|
|
103
|
-
let msgToSend = randomId(MESSAGE_SIZE);
|
|
104
|
-
|
|
105
|
-
for (let i = 1; i <= dataChannelCount; i++) {
|
|
106
|
-
let dcArrItem = {
|
|
107
|
-
dc: null,
|
|
108
|
-
bytesSent: 0,
|
|
109
|
-
bytesReceived: 0,
|
|
110
|
-
};
|
|
111
|
-
console.log('Creating DataChannel with label "test-' + i + '"');
|
|
112
|
-
dcArrItem.dc = pcMap[peerId].createDataChannel('test-' + i);
|
|
113
|
-
|
|
114
|
-
dcArrItem.dc.setBufferedAmountLowThreshold(BUFFER_SIZE);
|
|
115
|
-
dcArrItem.dc.onOpen(() => {
|
|
116
|
-
while (!disableSend && dcArrItem.dc.bufferedAmount() <= BUFFER_SIZE) {
|
|
117
|
-
dcArrItem.dc.sendMessage(msgToSend);
|
|
118
|
-
dcArrItem.bytesSent += msgToSend.length;
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
dcArrItem.dc.onBufferedAmountLow(() => {
|
|
123
|
-
while (!disableSend && dcArrItem.dc.bufferedAmount() <= BUFFER_SIZE) {
|
|
124
|
-
dcArrItem.dc.sendMessage(msgToSend);
|
|
125
|
-
dcArrItem.bytesSent += msgToSend.length;
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
dcArrItem.dc.onMessage((msg) => {
|
|
130
|
-
dcArrItem.bytesReceived += msg.length;
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
dcArr.push(dcArrItem);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// Report
|
|
137
|
-
let i = 0;
|
|
138
|
-
setInterval(() => {
|
|
139
|
-
let totalBytesSent = 0;
|
|
140
|
-
let totalBytesReceived = 0;
|
|
141
|
-
for (let j = 0; j < dcArr.length; j++) {
|
|
142
|
-
console.log(
|
|
143
|
-
`${j == 0 ? i + '#' : ''} DC-${j + 1} Sent: ${byte2KB(
|
|
144
|
-
dcArr[j].bytesSent,
|
|
145
|
-
)} KB/s / Received: ${byte2KB(dcArr[j].bytesReceived)} KB/s / SendBufferAmount: ${dcArr[
|
|
146
|
-
j
|
|
147
|
-
].dc.bufferedAmount()} / DataChannelOpen: ${dcArr[j].dc.isOpen()}`,
|
|
148
|
-
);
|
|
149
|
-
totalBytesSent += dcArr[j].bytesSent;
|
|
150
|
-
totalBytesReceived += dcArr[j].bytesReceived;
|
|
151
|
-
dcArr[j].bytesSent = 0;
|
|
152
|
-
dcArr[j].bytesReceived = 0;
|
|
153
|
-
}
|
|
154
|
-
console.log(
|
|
155
|
-
`Total Sent: ${byte2KB(totalBytesSent)} KB/s / Total Received: ${byte2KB(
|
|
156
|
-
totalBytesReceived,
|
|
157
|
-
)} KB/s`,
|
|
158
|
-
);
|
|
159
|
-
|
|
160
|
-
if (i % 5 == 0) {
|
|
161
|
-
console.log(
|
|
162
|
-
`Stats# Sent: ${byte2MB(pcMap[peerId].bytesSent())} MB / Received: ${byte2MB(
|
|
163
|
-
pcMap[peerId].bytesReceived(),
|
|
164
|
-
)} MB / rtt: ${pcMap[peerId].rtt()} ms`,
|
|
165
|
-
);
|
|
166
|
-
console.log(`Selected Candidates# ${JSON.stringify(pcMap[peerId].getSelectedCandidatePair())}`);
|
|
167
|
-
console.log(``);
|
|
168
|
-
}
|
|
169
|
-
i++;
|
|
170
|
-
}, 1000);
|
|
171
|
-
}
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
function createPeerConnection(peerId) {
|
|
176
|
-
// Create PeerConnection
|
|
177
|
-
let peerConnection = new nodeDataChannel.PeerConnection('pc', { iceServers: ['stun:stun.l.google.com:19302'] });
|
|
178
|
-
peerConnection.onStateChange((state) => {
|
|
179
|
-
console.log('State: ', state);
|
|
180
|
-
});
|
|
181
|
-
peerConnection.onGatheringStateChange((state) => {
|
|
182
|
-
console.log('GatheringState: ', state);
|
|
183
|
-
});
|
|
184
|
-
peerConnection.onLocalDescription((description, type) => {
|
|
185
|
-
ws.sendMessage(JSON.stringify({ id: peerId, type, description }));
|
|
186
|
-
});
|
|
187
|
-
peerConnection.onLocalCandidate((candidate, mid) => {
|
|
188
|
-
ws.sendMessage(JSON.stringify({ id: peerId, type: 'candidate', candidate, mid }));
|
|
189
|
-
});
|
|
190
|
-
peerConnection.onDataChannel((dc) => {
|
|
191
|
-
rl.close();
|
|
192
|
-
console.log('DataChannel from ' + peerId + ' received with label "', dc.getLabel() + '"');
|
|
193
|
-
|
|
194
|
-
let msgToSend = randomId(MESSAGE_SIZE);
|
|
195
|
-
|
|
196
|
-
while (!disableSend && dc.bufferedAmount() <= BUFFER_SIZE) {
|
|
197
|
-
dc.sendMessage(msgToSend);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
dc.onBufferedAmountLow(() => {
|
|
201
|
-
while (!disableSend && dc.bufferedAmount() <= BUFFER_SIZE) {
|
|
202
|
-
dc.sendMessage(msgToSend);
|
|
203
|
-
}
|
|
204
|
-
});
|
|
205
|
-
|
|
206
|
-
dc.onMessage((msg) => {
|
|
207
|
-
// bytesReceived += msg.length;
|
|
208
|
-
});
|
|
209
|
-
});
|
|
210
|
-
|
|
211
|
-
pcMap[peerId] = peerConnection;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
function randomId(length) {
|
|
215
|
-
var result = '';
|
|
216
|
-
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
217
|
-
var charactersLength = characters.length;
|
|
218
|
-
for (var i = 0; i < length; i++) {
|
|
219
|
-
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
220
|
-
}
|
|
221
|
-
return result;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
function byte2KB(bytes) {
|
|
225
|
-
return `${Math.round(bytes / 1000)}`;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
function byte2MB(bytes) {
|
|
229
|
-
return `${Math.round(bytes / (1000 * 1000))}`;
|
|
230
|
-
}
|