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.
Files changed (219) hide show
  1. package/.eslintignore +5 -1
  2. package/.eslintrc.json +27 -0
  3. package/.prettierrc +12 -0
  4. package/CMakeLists.txt +13 -13
  5. package/dist/cjs/index.cjs +11 -0
  6. package/dist/cjs/index.cjs.map +1 -0
  7. package/dist/cjs/lib/datachannel-stream.cjs +101 -0
  8. package/dist/cjs/lib/datachannel-stream.cjs.map +1 -0
  9. package/dist/cjs/lib/index.cjs +61 -0
  10. package/dist/cjs/lib/index.cjs.map +1 -0
  11. package/dist/cjs/lib/node-datachannel.cjs +14 -0
  12. package/dist/cjs/lib/node-datachannel.cjs.map +1 -0
  13. package/dist/cjs/lib/websocket-server.cjs +44 -0
  14. package/dist/cjs/lib/websocket-server.cjs.map +1 -0
  15. package/dist/cjs/lib/websocket.cjs +8 -0
  16. package/dist/cjs/lib/websocket.cjs.map +1 -0
  17. package/dist/cjs/polyfill/Events.cjs +37 -0
  18. package/dist/cjs/polyfill/Events.cjs.map +1 -0
  19. package/dist/cjs/polyfill/Exception.cjs +34 -0
  20. package/dist/cjs/polyfill/Exception.cjs.map +1 -0
  21. package/dist/cjs/polyfill/RTCCertificate.cjs +31 -0
  22. package/dist/cjs/polyfill/RTCCertificate.cjs.map +1 -0
  23. package/dist/cjs/polyfill/RTCDataChannel.cjs +179 -0
  24. package/dist/cjs/polyfill/RTCDataChannel.cjs.map +1 -0
  25. package/dist/cjs/polyfill/RTCDtlsTransport.cjs +52 -0
  26. package/dist/cjs/polyfill/RTCDtlsTransport.cjs.map +1 -0
  27. package/dist/cjs/polyfill/RTCError.cjs +76 -0
  28. package/dist/cjs/polyfill/RTCError.cjs.map +1 -0
  29. package/dist/cjs/polyfill/RTCIceCandidate.cjs +129 -0
  30. package/dist/cjs/polyfill/RTCIceCandidate.cjs.map +1 -0
  31. package/dist/cjs/polyfill/RTCIceTransport.cjs +84 -0
  32. package/dist/cjs/polyfill/RTCIceTransport.cjs.map +1 -0
  33. package/dist/cjs/polyfill/RTCPeerConnection.cjs +417 -0
  34. package/dist/cjs/polyfill/RTCPeerConnection.cjs.map +1 -0
  35. package/dist/cjs/polyfill/RTCSctpTransport.cjs +61 -0
  36. package/dist/cjs/polyfill/RTCSctpTransport.cjs.map +1 -0
  37. package/dist/cjs/polyfill/RTCSessionDescription.cjs +37 -0
  38. package/dist/cjs/polyfill/RTCSessionDescription.cjs.map +1 -0
  39. package/dist/cjs/polyfill/index.cjs +42 -0
  40. package/dist/cjs/polyfill/index.cjs.map +1 -0
  41. package/dist/esm/index.mjs +8 -0
  42. package/dist/esm/index.mjs.map +1 -0
  43. package/dist/esm/lib/datachannel-stream.mjs +78 -0
  44. package/dist/esm/lib/datachannel-stream.mjs.map +1 -0
  45. package/dist/esm/lib/index.mjs +44 -0
  46. package/dist/esm/lib/index.mjs.map +1 -0
  47. package/dist/esm/lib/node-datachannel.mjs +18 -0
  48. package/dist/esm/lib/node-datachannel.mjs.map +1 -0
  49. package/dist/esm/lib/websocket-server.mjs +42 -0
  50. package/dist/esm/lib/websocket-server.mjs.map +1 -0
  51. package/dist/esm/lib/websocket.mjs +6 -0
  52. package/dist/esm/lib/websocket.mjs.map +1 -0
  53. package/dist/esm/polyfill/Events.mjs +34 -0
  54. package/dist/esm/polyfill/Events.mjs.map +1 -0
  55. package/dist/esm/polyfill/Exception.mjs +28 -0
  56. package/dist/esm/polyfill/Exception.mjs.map +1 -0
  57. package/dist/esm/polyfill/RTCCertificate.mjs +27 -0
  58. package/dist/esm/polyfill/RTCCertificate.mjs.map +1 -0
  59. package/dist/esm/polyfill/RTCDataChannel.mjs +175 -0
  60. package/dist/esm/polyfill/RTCDataChannel.mjs.map +1 -0
  61. package/dist/esm/polyfill/RTCDtlsTransport.mjs +48 -0
  62. package/dist/esm/polyfill/RTCDtlsTransport.mjs.map +1 -0
  63. package/dist/esm/polyfill/RTCError.mjs +72 -0
  64. package/dist/esm/polyfill/RTCError.mjs.map +1 -0
  65. package/dist/esm/polyfill/RTCIceCandidate.mjs +125 -0
  66. package/dist/esm/polyfill/RTCIceCandidate.mjs.map +1 -0
  67. package/dist/esm/polyfill/RTCIceTransport.mjs +80 -0
  68. package/dist/esm/polyfill/RTCIceTransport.mjs.map +1 -0
  69. package/dist/esm/polyfill/RTCPeerConnection.mjs +413 -0
  70. package/dist/esm/polyfill/RTCPeerConnection.mjs.map +1 -0
  71. package/dist/esm/polyfill/RTCSctpTransport.mjs +57 -0
  72. package/dist/esm/polyfill/RTCSctpTransport.mjs.map +1 -0
  73. package/dist/esm/polyfill/RTCSessionDescription.mjs +33 -0
  74. package/dist/esm/polyfill/RTCSessionDescription.mjs.map +1 -0
  75. package/dist/esm/polyfill/index.mjs +27 -0
  76. package/dist/esm/polyfill/index.mjs.map +1 -0
  77. package/dist/types/lib/datachannel-stream.d.ts +24 -0
  78. package/dist/types/lib/index.d.ts +164 -0
  79. package/dist/types/lib/types.d.ts +106 -0
  80. package/dist/types/lib/websocket-server.d.ts +13 -0
  81. package/dist/types/lib/websocket.d.ts +25 -0
  82. package/dist/types/polyfill/Events.d.ts +15 -0
  83. package/dist/types/polyfill/RTCCertificate.d.ts +8 -0
  84. package/dist/types/polyfill/RTCDataChannel.d.ts +29 -0
  85. package/dist/types/polyfill/RTCDtlsTransport.d.ts +17 -0
  86. package/dist/types/polyfill/RTCError.d.ts +16 -0
  87. package/dist/types/polyfill/RTCIceCandidate.d.ts +21 -0
  88. package/dist/types/polyfill/RTCIceTransport.d.ts +24 -0
  89. package/dist/types/polyfill/RTCPeerConnection.d.ts +56 -0
  90. package/dist/types/polyfill/RTCSctpTransport.d.ts +17 -0
  91. package/dist/types/polyfill/RTCSessionDescription.d.ts +9 -0
  92. package/{polyfill → dist/types/polyfill}/index.d.ts +3 -14
  93. package/jest.config.ts +14 -0
  94. package/package.json +47 -43
  95. package/rollup.config.mjs +63 -0
  96. package/src/index.ts +10 -0
  97. package/{lib/datachannel-stream.js → src/lib/datachannel-stream.ts} +16 -11
  98. package/src/lib/index.ts +180 -0
  99. package/src/lib/node-datachannel.ts +13 -0
  100. package/src/lib/types.ts +126 -0
  101. package/{lib/websocket-server.js → src/lib/websocket-server.ts} +10 -8
  102. package/src/lib/websocket.ts +26 -0
  103. package/src/polyfill/Events.ts +33 -0
  104. package/src/polyfill/Exception.ts +37 -0
  105. package/src/polyfill/RTCCertificate.ts +17 -0
  106. package/{polyfill/RTCDataChannel.js → src/polyfill/RTCDataChannel.ts} +43 -40
  107. package/src/polyfill/RTCDtlsTransport.ts +47 -0
  108. package/src/polyfill/RTCError.ts +71 -0
  109. package/{polyfill/RTCIceCandidate.js → src/polyfill/RTCIceCandidate.ts} +35 -35
  110. package/{polyfill/RTCIceTransport.js → src/polyfill/RTCIceTransport.ts} +22 -20
  111. package/{polyfill/RTCPeerConnection.js → src/polyfill/RTCPeerConnection.ts} +128 -114
  112. package/{polyfill/RTCSctpTransport.js → src/polyfill/RTCSctpTransport.ts} +16 -14
  113. package/{polyfill/RTCSessionDescription.js → src/polyfill/RTCSessionDescription.ts} +7 -12
  114. package/{polyfill/index.js → src/polyfill/index.ts} +10 -10
  115. package/tsconfig.json +20 -13
  116. package/.eslintrc.cjs +0 -8
  117. package/.github/FUNDING.yml +0 -2
  118. package/.github/workflows/build-linux.yml +0 -109
  119. package/.github/workflows/build-mac-m1.yml +0 -38
  120. package/.github/workflows/build-mac-x64.yml +0 -40
  121. package/.github/workflows/build-win.yml +0 -74
  122. package/.github/workflows/lint.yml +0 -20
  123. package/.github/workflows/npm-publish-manual.yml +0 -23
  124. package/.prettierrc.cjs +0 -8
  125. package/build-containers/Dockerfile.alpine +0 -6
  126. package/build-containers/Dockerfile.debian +0 -7
  127. package/cmake/toolchain/ci.cmake +0 -23
  128. package/examples/client-server/README.md +0 -22
  129. package/examples/client-server/client-benchmark.js +0 -230
  130. package/examples/client-server/client-periodic.js +0 -189
  131. package/examples/client-server/client.js +0 -111
  132. package/examples/client-server/package-lock.json +0 -289
  133. package/examples/client-server/package.json +0 -16
  134. package/examples/client-server/signaling-server.js +0 -39
  135. package/examples/electron-demo/README.md +0 -58
  136. package/examples/electron-demo/forge.config.js +0 -49
  137. package/examples/electron-demo/package-lock.json +0 -15877
  138. package/examples/electron-demo/package.json +0 -44
  139. package/examples/electron-demo/src/index.css +0 -7
  140. package/examples/electron-demo/src/index.html +0 -29
  141. package/examples/electron-demo/src/main.js +0 -53
  142. package/examples/electron-demo/src/node-datachannel.js +0 -123
  143. package/examples/electron-demo/src/preload.js +0 -28
  144. package/examples/electron-demo/src/renderer.js +0 -58
  145. package/examples/electron-demo/webpack.main.config.js +0 -21
  146. package/examples/electron-demo/webpack.renderer.config.js +0 -13
  147. package/examples/electron-demo/webpack.rules.js +0 -35
  148. package/examples/media/README.md +0 -34
  149. package/examples/media/main.html +0 -45
  150. package/examples/media/media.js +0 -54
  151. package/examples/simple-peer-usage/main.js +0 -28
  152. package/examples/simple-peer-usage/package-lock.json +0 -317
  153. package/examples/simple-peer-usage/package.json +0 -16
  154. package/examples/websocket/websocket-client.js +0 -20
  155. package/examples/websocket/websocket-server.js +0 -22
  156. package/jest.config.cjs +0 -7
  157. package/lib/index.cjs +0 -194
  158. package/lib/index.d.cts +0 -300
  159. package/lib/index.d.ts +0 -300
  160. package/lib/index.js +0 -58
  161. package/lib/node-datachannel.js +0 -7
  162. package/polyfill/Events.d.ts +0 -9
  163. package/polyfill/Events.js +0 -29
  164. package/polyfill/Exception.js +0 -23
  165. package/polyfill/RTCCertificate.d.ts +0 -7
  166. package/polyfill/RTCCertificate.js +0 -17
  167. package/polyfill/RTCDataChannel.d.ts +0 -35
  168. package/polyfill/RTCDtlsTransport.d.ts +0 -10
  169. package/polyfill/RTCDtlsTransport.js +0 -47
  170. package/polyfill/RTCError.d.ts +0 -11
  171. package/polyfill/RTCError.js +0 -65
  172. package/polyfill/RTCIceCandidate.d.ts +0 -20
  173. package/polyfill/RTCIceTransport.d.ts +0 -18
  174. package/polyfill/RTCPeerConnection.d.ts +0 -62
  175. package/polyfill/RTCSctpTransport.d.ts +0 -10
  176. package/polyfill/RTCSessionDescription.d.ts +0 -8
  177. package/polyfill/index.cjs +0 -1333
  178. package/polyfill/index.d.cts +0 -37
  179. package/test/connectivity.js +0 -86
  180. package/test/jest-tests/basic.test.js +0 -37
  181. package/test/jest-tests/multiple-run.test.js +0 -73
  182. package/test/jest-tests/p2p.test.js +0 -99
  183. package/test/jest-tests/polyfill.test.js +0 -10
  184. package/test/jest-tests/streams.test.js +0 -48
  185. package/test/jest-tests/websocket.test.js +0 -69
  186. package/test/polyfill-connectivity.js +0 -89
  187. package/test/websockets.js +0 -50
  188. package/test/wpt-tests/README.md +0 -46
  189. package/test/wpt-tests/chrome-failed-tests.js +0 -42
  190. package/test/wpt-tests/index.js +0 -96
  191. package/test/wpt-tests/last-test-results.md +0 -301
  192. package/test/wpt-tests/package-lock.json +0 -1712
  193. package/test/wpt-tests/package.json +0 -19
  194. package/test/wpt-tests/wpt-test-list.js +0 -139
  195. package/test/wpt-tests/wpt.js +0 -131
  196. /package/src/{data-channel-wrapper.cpp → cpp/data-channel-wrapper.cpp} +0 -0
  197. /package/src/{data-channel-wrapper.h → cpp/data-channel-wrapper.h} +0 -0
  198. /package/src/{main.cpp → cpp/main.cpp} +0 -0
  199. /package/src/{media-audio-wrapper.cpp → cpp/media-audio-wrapper.cpp} +0 -0
  200. /package/src/{media-audio-wrapper.h → cpp/media-audio-wrapper.h} +0 -0
  201. /package/src/{media-direction.cpp → cpp/media-direction.cpp} +0 -0
  202. /package/src/{media-direction.h → cpp/media-direction.h} +0 -0
  203. /package/src/{media-rtcpreceivingsession-wrapper.cpp → cpp/media-rtcpreceivingsession-wrapper.cpp} +0 -0
  204. /package/src/{media-rtcpreceivingsession-wrapper.h → cpp/media-rtcpreceivingsession-wrapper.h} +0 -0
  205. /package/src/{media-track-wrapper.cpp → cpp/media-track-wrapper.cpp} +0 -0
  206. /package/src/{media-track-wrapper.h → cpp/media-track-wrapper.h} +0 -0
  207. /package/src/{media-video-wrapper.cpp → cpp/media-video-wrapper.cpp} +0 -0
  208. /package/src/{media-video-wrapper.h → cpp/media-video-wrapper.h} +0 -0
  209. /package/src/{peer-connection-wrapper.cpp → cpp/peer-connection-wrapper.cpp} +0 -0
  210. /package/src/{peer-connection-wrapper.h → cpp/peer-connection-wrapper.h} +0 -0
  211. /package/src/{rtc-wrapper.cpp → cpp/rtc-wrapper.cpp} +0 -0
  212. /package/src/{rtc-wrapper.h → cpp/rtc-wrapper.h} +0 -0
  213. /package/src/{thread-safe-callback.cpp → cpp/thread-safe-callback.cpp} +0 -0
  214. /package/src/{thread-safe-callback.h → cpp/thread-safe-callback.h} +0 -0
  215. /package/src/{web-socket-server-wrapper.cpp → cpp/web-socket-server-wrapper.cpp} +0 -0
  216. /package/src/{web-socket-server-wrapper.h → cpp/web-socket-server-wrapper.h} +0 -0
  217. /package/src/{web-socket-wrapper.cpp → cpp/web-socket-wrapper.cpp} +0 -0
  218. /package/src/{web-socket-wrapper.h → cpp/web-socket-wrapper.h} +0 -0
  219. /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
@@ -1,8 +0,0 @@
1
- module.exports = {
2
- semi: true,
3
- trailingComma: 'all',
4
- singleQuote: true,
5
- printWidth: 120,
6
- tabWidth: 4,
7
- endOfLine: 'auto'
8
- };
@@ -1,6 +0,0 @@
1
- ARG version=3.16
2
- ARG node_version=16
3
- FROM node:${node_version}-alpine${version}
4
- RUN apk add build-base openssl-libs-static openssl-dev
5
-
6
- WORKDIR /usr/app/
@@ -1,7 +0,0 @@
1
- ARG version=bullseye
2
- ARG node_version=16
3
- FROM node:${node_version}-${version}
4
- RUN apt update
5
- RUN apt install -y build-essential libssl-dev
6
-
7
- WORKDIR /usr/app/
@@ -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
- }