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
package/.eslintignore CHANGED
@@ -1,2 +1,6 @@
1
1
  node_modules
2
- build
2
+ build
3
+ /**/*.js
4
+ jest.config.ts
5
+ rollup.config.mjs
6
+ test/wpt-tests/wpt
package/.eslintrc.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "env": {
3
+ "browser": false,
4
+ "es6": true,
5
+ "node": true
6
+ },
7
+ "parser": "@typescript-eslint/parser",
8
+ "parserOptions": {
9
+ "project": "tsconfig.json",
10
+ "sourceType": "module",
11
+ "ecmaVersion": 2020
12
+ },
13
+ "plugins": ["@typescript-eslint", "jest"],
14
+ "extends": [
15
+ "eslint:recommended",
16
+ "plugin:@typescript-eslint/recommended",
17
+ "plugin:jest/recommended",
18
+ "prettier"
19
+ ],
20
+ "rules": {
21
+ // The following rule is enabled only to supplement the inline suppression
22
+ // examples, and because it is not a recommended rule, you should either
23
+ // disable it, or understand what it enforces.
24
+ // https://typescript-eslint.io/rules/explicit-function-return-type/
25
+ "@typescript-eslint/explicit-function-return-type": "warn"
26
+ }
27
+ }
package/.prettierrc ADDED
@@ -0,0 +1,12 @@
1
+ {
2
+ "singleQuote": true,
3
+ "trailingComma": "all",
4
+ "overrides": [
5
+ {
6
+ "files": ["*.ts", "*.mts"],
7
+ "options": {
8
+ "parser": "typescript"
9
+ }
10
+ }
11
+ ]
12
+ }
package/CMakeLists.txt CHANGED
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.15)
2
2
  cmake_policy(SET CMP0091 NEW)
3
3
  cmake_policy(SET CMP0042 NEW)
4
4
 
5
- project(node_datachannel VERSION 0.12.0)
5
+ project(node_datachannel VERSION 0.20.0)
6
6
 
7
7
  # -Dnapi_build_version=8
8
8
  add_definitions(-DNAPI_VERSION=8)
@@ -43,18 +43,18 @@ if(NOT libdatachannel)
43
43
  endif()
44
44
 
45
45
  add_library(${PROJECT_NAME} SHARED
46
- src/rtc-wrapper.cpp
47
- src/media-direction.cpp
48
- src/media-rtcpreceivingsession-wrapper.cpp
49
- src/media-track-wrapper.cpp
50
- src/media-audio-wrapper.cpp
51
- src/media-video-wrapper.cpp
52
- src/data-channel-wrapper.cpp
53
- src/peer-connection-wrapper.cpp
54
- src/thread-safe-callback.cpp
55
- src/web-socket-wrapper.cpp
56
- src/web-socket-server-wrapper.cpp
57
- src/main.cpp
46
+ src/cpp/rtc-wrapper.cpp
47
+ src/cpp/media-direction.cpp
48
+ src/cpp/media-rtcpreceivingsession-wrapper.cpp
49
+ src/cpp/media-track-wrapper.cpp
50
+ src/cpp/media-audio-wrapper.cpp
51
+ src/cpp/media-video-wrapper.cpp
52
+ src/cpp/data-channel-wrapper.cpp
53
+ src/cpp/peer-connection-wrapper.cpp
54
+ src/cpp/thread-safe-callback.cpp
55
+ src/cpp/web-socket-wrapper.cpp
56
+ src/cpp/web-socket-server-wrapper.cpp
57
+ src/cpp/main.cpp
58
58
  ${CMAKE_JS_SRC}
59
59
  )
60
60
 
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var index = require('./lib/index.cjs');
4
+ var index$1 = require('./polyfill/index.cjs');
5
+
6
+ const nodeDataChannel = index.default;
7
+ const polyfill = index$1.default;
8
+
9
+ exports.nodeDataChannel = nodeDataChannel;
10
+ exports.polyfill = polyfill;
11
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/index.ts"],"sourcesContent":["// This file is created for builder process\n// So builder can find and compile all files and folders\n// Not intended to be imported directly\n\nimport n from './lib/index';\nimport p from './polyfill/index';\n\n\nexport const nodeDataChannel = n;\nexport const polyfill = p;\n"],"names":["n","p"],"mappings":";;;;;AAQO,MAAM,eAAkB,GAAAA,cAAA;AACxB,MAAM,QAAW,GAAAC;;;;;"}
@@ -0,0 +1,101 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var stream = require('stream');
6
+
7
+ function _interopNamespaceDefault(e) {
8
+ var n = Object.create(null);
9
+ if (e) {
10
+ Object.keys(e).forEach(function (k) {
11
+ if (k !== 'default') {
12
+ var d = Object.getOwnPropertyDescriptor(e, k);
13
+ Object.defineProperty(n, k, d.get ? d : {
14
+ enumerable: true,
15
+ get: function () { return e[k]; }
16
+ });
17
+ }
18
+ });
19
+ }
20
+ n.default = e;
21
+ return Object.freeze(n);
22
+ }
23
+
24
+ var stream__namespace = /*#__PURE__*/_interopNamespaceDefault(stream);
25
+
26
+ var __defProp = Object.defineProperty;
27
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
28
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
29
+ class DataChannelStream extends stream__namespace.Duplex {
30
+ constructor(rawChannel, streamOptions) {
31
+ super({
32
+ allowHalfOpen: false,
33
+ // Default to autoclose on end().
34
+ ...streamOptions,
35
+ objectMode: true
36
+ // Preserve the string/buffer distinction (WebRTC treats them differently)
37
+ });
38
+ __publicField(this, "_rawChannel");
39
+ __publicField(this, "_readActive");
40
+ this._rawChannel = rawChannel;
41
+ this._readActive = true;
42
+ rawChannel.onMessage((msg) => {
43
+ if (!this._readActive) return;
44
+ this._readActive = this.push(msg);
45
+ });
46
+ rawChannel.onClosed(() => {
47
+ this.push(null);
48
+ this.destroy();
49
+ });
50
+ rawChannel.onError((errMsg) => {
51
+ this.destroy(new Error(`DataChannel error: ${errMsg}`));
52
+ });
53
+ if (!rawChannel.isOpen()) {
54
+ this.cork();
55
+ rawChannel.onOpen(() => this.uncork());
56
+ }
57
+ }
58
+ _read() {
59
+ this._readActive = true;
60
+ }
61
+ _write(chunk, _encoding, callback) {
62
+ let sentOk;
63
+ try {
64
+ if (Buffer.isBuffer(chunk)) {
65
+ sentOk = this._rawChannel.sendMessageBinary(chunk);
66
+ } else if (typeof chunk === "string") {
67
+ sentOk = this._rawChannel.sendMessage(chunk);
68
+ } else {
69
+ const typeName = chunk.constructor.name || typeof chunk;
70
+ throw new Error(`Cannot write ${typeName} to DataChannel stream`);
71
+ }
72
+ } catch (err) {
73
+ return callback(err);
74
+ }
75
+ if (sentOk) {
76
+ callback(null);
77
+ } else {
78
+ callback(new Error("Failed to write to DataChannel"));
79
+ }
80
+ }
81
+ _final(callback) {
82
+ if (!this.allowHalfOpen) this.destroy();
83
+ callback(null);
84
+ }
85
+ _destroy(maybeErr, callback) {
86
+ this._rawChannel.close();
87
+ callback(maybeErr);
88
+ }
89
+ get label() {
90
+ return this._rawChannel.getLabel();
91
+ }
92
+ get id() {
93
+ return this._rawChannel.getId();
94
+ }
95
+ get protocol() {
96
+ return this._rawChannel.getProtocol();
97
+ }
98
+ }
99
+
100
+ exports.default = DataChannelStream;
101
+ //# sourceMappingURL=datachannel-stream.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datachannel-stream.cjs","sources":["../../../src/lib/datachannel-stream.ts"],"sourcesContent":["import * as stream from 'stream';\n// import { DataChannel } from './node-datachannel.js';\n\n/**\n * Turns a node-datachannel DataChannel into a real Node.js stream, complete with buffering,\n * backpressure (up to a point - if the buffer fills up, messages are dropped), and\n * support for piping data elsewhere.\n *\n * Read & written data may be either UTF-8 strings or Buffers - this difference exists at\n * the protocol level, and is preserved here throughout.\n */\nexport default class DataChannelStream extends stream.Duplex {\n private _rawChannel: any;\n private _readActive: boolean;\n\n\n constructor(rawChannel: any, streamOptions?: Omit<stream.DuplexOptions, 'objectMode'>) {\n super({\n allowHalfOpen: false, // Default to autoclose on end().\n ...streamOptions,\n objectMode: true, // Preserve the string/buffer distinction (WebRTC treats them differently)\n });\n\n this._rawChannel = rawChannel;\n this._readActive = true;\n\n rawChannel.onMessage((msg: any) => {\n if (!this._readActive) return; // If the buffer is full, drop messages.\n\n // If the push is rejected, we pause reading until the next call to _read().\n this._readActive = this.push(msg);\n });\n\n // When the DataChannel closes, the readable & writable ends close\n rawChannel.onClosed(() => {\n this.push(null);\n this.destroy();\n });\n\n rawChannel.onError((errMsg: string) => {\n this.destroy(new Error(`DataChannel error: ${errMsg}`));\n });\n\n // Buffer all writes until the DataChannel opens\n if (!rawChannel.isOpen()) {\n this.cork();\n rawChannel.onOpen(() => this.uncork());\n }\n }\n\n _read(): void {\n // Stop dropping messages, if the buffer filling up meant we were doing so before.\n this._readActive = true;\n }\n\n _write(chunk, _encoding, callback): void {\n let sentOk;\n\n try {\n if (Buffer.isBuffer(chunk)) {\n sentOk = this._rawChannel.sendMessageBinary(chunk);\n } else if (typeof chunk === 'string') {\n sentOk = this._rawChannel.sendMessage(chunk);\n } else {\n const typeName = chunk.constructor.name || typeof chunk;\n throw new Error(`Cannot write ${typeName} to DataChannel stream`);\n }\n } catch (err) {\n return callback(err);\n }\n\n if (sentOk) {\n callback(null);\n } else {\n callback(new Error('Failed to write to DataChannel'));\n }\n }\n\n _final(callback): void {\n if (!this.allowHalfOpen) this.destroy();\n callback(null);\n }\n\n _destroy(maybeErr, callback): void {\n // When the stream is destroyed, we close the DataChannel.\n this._rawChannel.close();\n callback(maybeErr);\n }\n\n get label(): string {\n return this._rawChannel.getLabel();\n }\n\n get id(): number {\n return this._rawChannel.getId();\n }\n\n get protocol(): string {\n return this._rawChannel.getProtocol();\n }\n}\n"],"names":["stream"],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var nodeDatachannel = require('./node-datachannel.cjs');
6
+ var datachannelStream = require('./datachannel-stream.cjs');
7
+ var websocketServer = require('./websocket-server.cjs');
8
+ var websocket = require('./websocket.cjs');
9
+
10
+ function preload() {
11
+ nodeDatachannel.default.preload();
12
+ }
13
+ function initLogger(level) {
14
+ nodeDatachannel.default.initLogger(level);
15
+ }
16
+ function cleanup() {
17
+ nodeDatachannel.default.cleanup();
18
+ }
19
+ function setSctpSettings(settings) {
20
+ nodeDatachannel.default.setSctpSettings(settings);
21
+ }
22
+ const Audio = nodeDatachannel.default.Audio;
23
+ const Video = nodeDatachannel.default.Video;
24
+ const Track = nodeDatachannel.default.Track;
25
+ const DataChannel = nodeDatachannel.default.DataChannel;
26
+ const PeerConnection = nodeDatachannel.default.PeerConnection;
27
+ class RtcpReceivingSession {
28
+ //
29
+ }
30
+ const DataChannelStream = datachannelStream.default;
31
+ var n = {
32
+ initLogger,
33
+ cleanup,
34
+ preload,
35
+ setSctpSettings,
36
+ RtcpReceivingSession,
37
+ Track,
38
+ Video,
39
+ Audio,
40
+ DataChannel,
41
+ PeerConnection,
42
+ WebSocket: websocket.WebSocket,
43
+ WebSocketServer: websocketServer.WebSocketServer,
44
+ DataChannelStream
45
+ };
46
+
47
+ exports.WebSocketServer = websocketServer.WebSocketServer;
48
+ exports.WebSocket = websocket.WebSocket;
49
+ exports.Audio = Audio;
50
+ exports.DataChannel = DataChannel;
51
+ exports.DataChannelStream = DataChannelStream;
52
+ exports.PeerConnection = PeerConnection;
53
+ exports.RtcpReceivingSession = RtcpReceivingSession;
54
+ exports.Track = Track;
55
+ exports.Video = Video;
56
+ exports.cleanup = cleanup;
57
+ exports.default = n;
58
+ exports.initLogger = initLogger;
59
+ exports.preload = preload;
60
+ exports.setSctpSettings = setSctpSettings;
61
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/lib/index.ts"],"sourcesContent":["import nodeDataChannel from './node-datachannel';\nimport _DataChannelStream from './datachannel-stream';\nimport { WebSocketServer } from './websocket-server';\nimport { Channel, DataChannelInitConfig, DescriptionType, Direction, LogLevel, RtcConfig, RTCIceConnectionState, RTCIceGatheringState, RTCPeerConnectionState, RTCSdpType, RTCSignalingState, SctpSettings, SelectedCandidateInfo } from './types';\nimport { WebSocket } from './websocket';\n\nexport function preload(): void { nodeDataChannel.preload(); }\nexport function initLogger(level: LogLevel): void { nodeDataChannel.initLogger(level); }\nexport function cleanup(): void { nodeDataChannel.cleanup(); }\nexport function setSctpSettings(settings: SctpSettings): void { nodeDataChannel.setSctpSettings(settings); }\n\nexport interface Audio {\n addAudioCodec(payloadType: number, codec: string, profile?: string): void;\n addOpusCodec(payloadType: number, profile?: string): string;\n direction(): Direction;\n generateSdp(eol: string, addr: string, port: number): string;\n mid(): string;\n setDirection(dir: Direction): void;\n description(): string;\n removeFormat(fmt: string): void;\n addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;\n removeSSRC(ssrc: number): void;\n replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;\n hasSSRC(ssrc: number): boolean;\n getSSRCs(): number[];\n getCNameForSsrc(ssrc: number): string;\n setBitrate(bitRate: number): void;\n getBitrate(): number;\n hasPayloadType(payloadType: number): boolean;\n addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;\n addRTPMap(): void;\n parseSdpLine(line: string): void;\n}\nexport const Audio: {\n new(mid: string, dir: Direction): Audio\n} = nodeDataChannel.Audio\n\n\nexport interface Video {\n addVideoCodec(payloadType: number, codec: string, profile?: string): void;\n addH264Codec(payloadType: number, profile?: string): void;\n addVP8Codec(payloadType: number): void;\n addVP9Codec(payloadType: number): void;\n direction(): Direction;\n generateSdp(eol: string, addr: string, port: number): string;\n mid(): string;\n setDirection(dir: Direction): void;\n description(): string;\n removeFormat(fmt: string): void;\n addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;\n removeSSRC(ssrc: number): void;\n replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;\n hasSSRC(ssrc: number): boolean;\n getSSRCs(): number[];\n getCNameForSsrc(ssrc: number): string;\n setBitrate(bitRate: number): void;\n getBitrate(): number;\n hasPayloadType(payloadType: number): boolean;\n addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;\n addRTPMap(): void;\n parseSdpLine(line: string): void;\n}\nexport const Video: {\n new(mid: string, dir: Direction): Video\n} = nodeDataChannel.Video\n\nexport interface Track {\n direction(): Direction;\n mid(): string;\n type(): string;\n close(): void;\n sendMessage(msg: string): boolean;\n sendMessageBinary(buffer: Buffer): boolean;\n isOpen(): boolean;\n isClosed(): boolean;\n bufferedAmount(): number;\n maxMessageSize(): number;\n requestBitrate(bitRate: number): boolean;\n setBufferedAmountLowThreshold(newSize: number): void;\n requestKeyframe(): boolean;\n setMediaHandler(handler: RtcpReceivingSession): void;\n onOpen(cb: () => void): void;\n onClosed(cb: () => void): void;\n onError(cb: (err: string) => void): void;\n onMessage(cb: (msg: Buffer) => void): void;\n}\nexport const Track: {\n new(): Track\n} = nodeDataChannel.Track\n\nexport interface DataChannel extends Channel {\n getLabel(): string;\n getId(): number;\n getProtocol(): string;\n\n // Channel implementation\n close(): void;\n sendMessage(msg: string): boolean;\n sendMessageBinary(buffer: Uint8Array): boolean;\n isOpen(): boolean;\n bufferedAmount(): number;\n maxMessageSize(): number;\n setBufferedAmountLowThreshold(newSize: number): void;\n onOpen(cb: () => void): void;\n onClosed(cb: () => void): void;\n onError(cb: (err: string) => void): void;\n onBufferedAmountLow(cb: () => void): void;\n onMessage(cb: (msg: string | Buffer) => void): void;\n}\nexport const DataChannel: {\n // DataChannel implementation\n} = nodeDataChannel.DataChannel\n\nexport interface PeerConnection {\n close(): void;\n setLocalDescription(type?: DescriptionType): void;\n setRemoteDescription(sdp: string, type: DescriptionType): void;\n localDescription(): { type: DescriptionType; sdp: RTCSdpType } | null;\n remoteDescription(): { type: DescriptionType; sdp: string } | null;\n addRemoteCandidate(candidate: string, mid: string): void;\n createDataChannel(label: string, config?: DataChannelInitConfig): DataChannel;\n addTrack(media: Video | Audio): Track;\n hasMedia(): boolean;\n state(): RTCPeerConnectionState;\n iceState(): RTCIceConnectionState;\n signalingState(): RTCSignalingState;\n gatheringState(): RTCIceGatheringState;\n onLocalDescription(cb: (sdp: string, type: DescriptionType) => void): void;\n onLocalCandidate(cb: (candidate: string, mid: string) => void): void;\n onStateChange(cb: (state: string) => void): void;\n onIceStateChange(cb: (state: string) => void): void;\n onSignalingStateChange(cb: (state: string) => void): void;\n onGatheringStateChange(cb: (state: string) => void): void;\n onDataChannel(cb: (dc: DataChannel) => void): void;\n onTrack(cb: (track: Track) => void): void;\n bytesSent(): number;\n bytesReceived(): number;\n rtt(): number;\n getSelectedCandidatePair(): { local: SelectedCandidateInfo; remote: SelectedCandidateInfo } | null;\n maxDataChannelId(): number;\n maxMessageSize(): number;\n}\nexport const PeerConnection: {\n new(peerName: string, config: RtcConfig): PeerConnection\n} = nodeDataChannel.PeerConnection\n\nexport class RtcpReceivingSession {\n //\n}\n\n/**export {\n Channel, DataChannelInitConfig, DescriptionType,\n Direction, LogLevel, RtcConfig, SctpSettings,\n SelectedCandidateInfo, RTCIceConnectionState,\n RTCIceGathererState, RTCIceGatheringState,\n RTCIceTransportState, RTCPeerConnectionState,\n RTCSdpType, RTCSignalingState, RelayType,\n ProxyServerType, TransportPolicy,\n WebSocketServerConfiguration, IceServer, ProxyServer\n} from './types';**/\nexport { WebSocketServer } from './websocket-server';\nexport { WebSocket } from './websocket';\n\nexport const DataChannelStream = _DataChannelStream;\n\nexport default {\n initLogger,\n cleanup,\n preload,\n setSctpSettings,\n RtcpReceivingSession,\n Track,\n Video,\n Audio,\n DataChannel,\n PeerConnection,\n WebSocket,\n WebSocketServer,\n DataChannelStream\n};\n"],"names":["nodeDataChannel","_DataChannelStream","WebSocket","WebSocketServer"],"mappings":";;;;;;;;;AAMO,SAAS,OAAgB,GAAA;AAAE,EAAAA,uBAAA,CAAgB,OAAQ,EAAA,CAAA;AAAG,CAAA;AACtD,SAAS,WAAW,KAAuB,EAAA;AAAE,EAAAA,uBAAA,CAAgB,WAAW,KAAK,CAAA,CAAA;AAAG,CAAA;AAChF,SAAS,OAAgB,GAAA;AAAE,EAAAA,uBAAA,CAAgB,OAAQ,EAAA,CAAA;AAAG,CAAA;AACtD,SAAS,gBAAgB,QAA8B,EAAA;AAAE,EAAAA,uBAAA,CAAgB,gBAAgB,QAAQ,CAAA,CAAA;AAAG,CAAA;AAwBpG,MAAM,QAETA,uBAAgB,CAAA,MAAA;AA2Bb,MAAM,QAETA,uBAAgB,CAAA,MAAA;AAsBb,MAAM,QAETA,uBAAgB,CAAA,MAAA;AAqBb,MAAM,cAETA,uBAAgB,CAAA,YAAA;AA+Bb,MAAM,iBAETA,uBAAgB,CAAA,eAAA;AAEb,MAAM,oBAAqB,CAAA;AAAA;AAElC,CAAA;AAeO,MAAM,iBAAoB,GAAAC,0BAAA;AAEjC,QAAe;AAAA,EACX,UAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,oBAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,aACAC,mBAAA;AAAA,mBACAC,+BAAA;AAAA,EACA,iBAAA;AACJ,CAAA;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ let nodeDataChannel;
6
+ try {
7
+ nodeDataChannel = require("../../../build/Release/node_datachannel.node");
8
+ } catch (e) {
9
+ nodeDataChannel = require("../../build/Release/node_datachannel.node");
10
+ }
11
+ var nodeDataChannel$1 = nodeDataChannel;
12
+
13
+ exports.default = nodeDataChannel$1;
14
+ //# sourceMappingURL=node-datachannel.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-datachannel.cjs","sources":["../../../src/lib/node-datachannel.ts"],"sourcesContent":["let nodeDataChannel;\n\ntry {\n // from dist\n nodeDataChannel = require('../../../build/Release/node_datachannel.node');\n}\ncatch (e) {\n // from src\n nodeDataChannel = require('../../build/Release/node_datachannel.node');\n}\n\nexport default nodeDataChannel;\n\n"],"names":[],"mappings":";;;;AAAA,IAAI,eAAA,CAAA;AAEJ,IAAI;AAEA,EAAA,eAAA,GAAkB,QAAQ,8CAA8C,CAAA,CAAA;AAC5E,CAAA,CAAA,OACO,CAAG,EAAA;AAEN,EAAA,eAAA,GAAkB,QAAQ,2CAA2C,CAAA,CAAA;AACzE,CAAA;AAEA,wBAAe,eAAA;;;;"}
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ var events = require('events');
4
+ var nodeDatachannel = require('./node-datachannel.cjs');
5
+
6
+ var __typeError = (msg) => {
7
+ throw TypeError(msg);
8
+ };
9
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
10
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
11
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
12
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
13
+ var _server, _clients;
14
+ class WebSocketServer extends events.EventEmitter {
15
+ constructor(options) {
16
+ super();
17
+ __privateAdd(this, _server);
18
+ __privateAdd(this, _clients, []);
19
+ __privateSet(this, _server, new nodeDatachannel.default.WebSocketServer(options));
20
+ __privateGet(this, _server).onClient((client) => {
21
+ this.emit("client", client);
22
+ __privateGet(this, _clients).push(client);
23
+ });
24
+ }
25
+ port() {
26
+ return __privateGet(this, _server)?.port() || 0;
27
+ }
28
+ stop() {
29
+ __privateGet(this, _clients).forEach((client) => {
30
+ client?.close();
31
+ });
32
+ __privateGet(this, _server)?.stop();
33
+ __privateSet(this, _server, null);
34
+ this.removeAllListeners();
35
+ }
36
+ onClient(cb) {
37
+ if (__privateGet(this, _server)) this.on("client", cb);
38
+ }
39
+ }
40
+ _server = new WeakMap();
41
+ _clients = new WeakMap();
42
+
43
+ exports.WebSocketServer = WebSocketServer;
44
+ //# sourceMappingURL=websocket-server.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-server.cjs","sources":["../../../src/lib/websocket-server.ts"],"sourcesContent":["import { EventEmitter } from 'events';\nimport nodeDataChannel from './node-datachannel';\nimport { WebSocketServerConfiguration } from './types';\nimport { WebSocket } from './websocket';\n\nexport class WebSocketServer extends EventEmitter {\n #server: any;\n #clients: WebSocket[] = [];\n\n constructor(options: WebSocketServerConfiguration) {\n super();\n this.#server = new nodeDataChannel.WebSocketServer(options);\n\n this.#server.onClient((client) => {\n this.emit('client', client);\n this.#clients.push(client);\n });\n }\n\n port(): number {\n return this.#server?.port() || 0;\n }\n\n stop(): void {\n this.#clients.forEach((client) => {\n client?.close();\n });\n this.#server?.stop();\n this.#server = null;\n this.removeAllListeners();\n }\n\n onClient(cb: (clientSocket: WebSocket) => void): void {\n if (this.#server) this.on('client', cb);\n }\n}\n"],"names":["EventEmitter","nodeDataChannel"],"mappings":";;;;;;;;;;;;AAAA,IAAA,OAAA,EAAA,QAAA,CAAA;AAKO,MAAM,wBAAwBA,mBAAa,CAAA;AAAA,EAI9C,YAAY,OAAuC,EAAA;AAC/C,IAAM,KAAA,EAAA,CAAA;AAJV,IAAA,YAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,EAAwB,EAAC,CAAA,CAAA;AAIrB,IAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,IAAIC,uBAAgB,CAAA,eAAA,CAAgB,OAAO,CAAA,CAAA,CAAA;AAE1D,IAAK,YAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAQ,QAAS,CAAA,CAAC,MAAW,KAAA;AAC9B,MAAK,IAAA,CAAA,IAAA,CAAK,UAAU,MAAM,CAAA,CAAA;AAC1B,MAAK,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,KAAK,MAAM,CAAA,CAAA;AAAA,KAC5B,CAAA,CAAA;AAAA,GACL;AAAA,EAEA,IAAe,GAAA;AACX,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,OAAS,CAAA,EAAA,IAAA,EAAU,IAAA,CAAA,CAAA;AAAA,GACnC;AAAA,EAEA,IAAa,GAAA;AACT,IAAK,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,OAAQ,CAAA,CAAC,MAAW,KAAA;AAC9B,MAAA,MAAA,EAAQ,KAAM,EAAA,CAAA;AAAA,KACjB,CAAA,CAAA;AACD,IAAA,YAAA,CAAA,IAAA,EAAK,UAAS,IAAK,EAAA,CAAA;AACnB,IAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,IAAA,CAAA,CAAA;AACf,IAAA,IAAA,CAAK,kBAAmB,EAAA,CAAA;AAAA,GAC5B;AAAA,EAEA,SAAS,EAA6C,EAAA;AAClD,IAAA,IAAI,YAAK,CAAA,IAAA,EAAA,OAAA,CAAA,EAAc,IAAA,CAAA,EAAA,CAAG,UAAU,EAAE,CAAA,CAAA;AAAA,GAC1C;AACJ,CAAA;AA7BI,OAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,QAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ var nodeDatachannel = require('./node-datachannel.cjs');
4
+
5
+ const WebSocket = nodeDatachannel.default.WebSocket;
6
+
7
+ exports.WebSocket = WebSocket;
8
+ //# sourceMappingURL=websocket.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.cjs","sources":["../../../src/lib/websocket.ts"],"sourcesContent":["import nodeDataChannel from './node-datachannel';\nimport { Channel, WebSocketServerConfiguration } from './types';\n\nexport interface WebSocket extends Channel {\n open(url: string): void;\n forceClose(): void;\n remoteAddress(): string | undefined;\n path(): string | undefined;\n\n // Channel implementation\n close(): void;\n sendMessage(msg: string): boolean;\n sendMessageBinary(buffer: Uint8Array): boolean;\n isOpen(): boolean;\n bufferedAmount(): number;\n maxMessageSize(): number;\n setBufferedAmountLowThreshold(newSize: number): void;\n onOpen(cb: () => void): void;\n onClosed(cb: () => void): void;\n onError(cb: (err: string) => void): void;\n onBufferedAmountLow(cb: () => void): void;\n onMessage(cb: (msg: string | Buffer) => void): void;\n}\nexport const WebSocket: {\n new(config?: WebSocketServerConfiguration): WebSocket\n} = nodeDataChannel.WebSocket\n"],"names":["nodeDataChannel"],"mappings":";;;;AAuBO,MAAM,YAETA,uBAAgB,CAAA;;;;"}
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ var __typeError = (msg) => {
4
+ throw TypeError(msg);
5
+ };
6
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
7
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
8
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
9
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
10
+ var _candidate, _channel;
11
+ class RTCPeerConnectionIceEvent extends Event {
12
+ constructor(candidate) {
13
+ super("icecandidate");
14
+ __privateAdd(this, _candidate);
15
+ __privateSet(this, _candidate, candidate);
16
+ }
17
+ get candidate() {
18
+ return __privateGet(this, _candidate);
19
+ }
20
+ }
21
+ _candidate = new WeakMap();
22
+ class RTCDataChannelEvent extends Event {
23
+ constructor(type, eventInitDict) {
24
+ super(type);
25
+ __privateAdd(this, _channel);
26
+ if (type && !eventInitDict.channel) throw new TypeError("channel member is required");
27
+ __privateSet(this, _channel, eventInitDict?.channel);
28
+ }
29
+ get channel() {
30
+ return __privateGet(this, _channel);
31
+ }
32
+ }
33
+ _channel = new WeakMap();
34
+
35
+ exports.RTCDataChannelEvent = RTCDataChannelEvent;
36
+ exports.RTCPeerConnectionIceEvent = RTCPeerConnectionIceEvent;
37
+ //# sourceMappingURL=Events.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Events.cjs","sources":["../../../src/polyfill/Events.ts"],"sourcesContent":["import RTCDataChannel from './RTCDataChannel';\nimport RTCIceCandidate from './RTCIceCandidate';\n\n\nexport class RTCPeerConnectionIceEvent extends Event implements globalThis.RTCPeerConnectionIceEvent {\n #candidate: RTCIceCandidate;\n\n constructor(candidate: RTCIceCandidate) {\n super('icecandidate');\n\n this.#candidate = candidate;\n }\n\n get candidate(): RTCIceCandidate {\n return this.#candidate;\n }\n}\n\nexport class RTCDataChannelEvent extends Event implements globalThis.RTCDataChannelEvent {\n #channel: RTCDataChannel;\n\n constructor(type: string, eventInitDict: globalThis.RTCDataChannelEventInit) {\n super(type);\n\n if (type && !eventInitDict.channel) throw new TypeError('channel member is required');\n\n this.#channel = eventInitDict?.channel as RTCDataChannel;\n }\n\n get channel(): RTCDataChannel {\n return this.#channel;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;AAAA,IAAA,UAAA,EAAA,QAAA,CAAA;AAIO,MAAM,kCAAkC,KAAsD,CAAA;AAAA,EAGjG,YAAY,SAA4B,EAAA;AACpC,IAAA,KAAA,CAAM,cAAc,CAAA,CAAA;AAHxB,IAAA,YAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAKI,IAAA,YAAA,CAAA,IAAA,EAAK,UAAa,EAAA,SAAA,CAAA,CAAA;AAAA,GACtB;AAAA,EAEA,IAAI,SAA6B,GAAA;AAC7B,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAAA,GAChB;AACJ,CAAA;AAXI,UAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAaG,MAAM,4BAA4B,KAAgD,CAAA;AAAA,EAGrF,WAAA,CAAY,MAAc,aAAmD,EAAA;AACzE,IAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAHd,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAKI,IAAA,IAAI,QAAQ,CAAC,aAAA,CAAc,SAAe,MAAA,IAAI,UAAU,4BAA4B,CAAA,CAAA;AAEpF,IAAA,YAAA,CAAA,IAAA,EAAK,UAAW,aAAe,EAAA,OAAA,CAAA,CAAA;AAAA,GACnC;AAAA,EAEA,IAAI,OAA0B,GAAA;AAC1B,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAAA,GAChB;AACJ,CAAA;AAbI,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;"}
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ class InvalidStateError extends DOMException {
4
+ constructor(msg) {
5
+ super(msg, "InvalidStateError");
6
+ }
7
+ }
8
+ class OperationError extends DOMException {
9
+ constructor(msg) {
10
+ super(msg, "OperationError");
11
+ }
12
+ }
13
+ class NotFoundError extends DOMException {
14
+ constructor(msg) {
15
+ super(msg, "NotFoundError");
16
+ }
17
+ }
18
+ class InvalidAccessError extends DOMException {
19
+ constructor(msg) {
20
+ super(msg, "InvalidAccessError");
21
+ }
22
+ }
23
+ class SyntaxError extends DOMException {
24
+ constructor(msg) {
25
+ super(msg, "SyntaxError");
26
+ }
27
+ }
28
+
29
+ exports.InvalidAccessError = InvalidAccessError;
30
+ exports.InvalidStateError = InvalidStateError;
31
+ exports.NotFoundError = NotFoundError;
32
+ exports.OperationError = OperationError;
33
+ exports.SyntaxError = SyntaxError;
34
+ //# sourceMappingURL=Exception.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Exception.cjs","sources":["../../../src/polyfill/Exception.ts"],"sourcesContent":["/// <reference lib=\"dom\" />\n\nexport class InvalidStateError extends DOMException {\n constructor(msg: string) {\n super(msg, 'InvalidStateError');\n }\n};\n\nexport class TypeError extends DOMException {\n constructor(msg: string) {\n super(msg, 'TypeError');\n }\n};\n\nexport class OperationError extends DOMException {\n constructor(msg: string) {\n super(msg, 'OperationError');\n }\n};\n\nexport class NotFoundError extends DOMException {\n constructor(msg: string) {\n super(msg, 'NotFoundError');\n }\n};\n\nexport class InvalidAccessError extends DOMException {\n constructor(msg: string) {\n super(msg, 'InvalidAccessError');\n }\n};\n\nexport class SyntaxError extends DOMException {\n constructor(msg: string) {\n super(msg, 'SyntaxError');\n }\n};\n"],"names":[],"mappings":";;AAEO,MAAM,0BAA0B,YAAa,CAAA;AAAA,EAChD,YAAY,GAAa,EAAA;AACrB,IAAA,KAAA,CAAM,KAAK,mBAAmB,CAAA,CAAA;AAAA,GAClC;AACJ,CAAA;AAQO,MAAM,uBAAuB,YAAa,CAAA;AAAA,EAC7C,YAAY,GAAa,EAAA;AACrB,IAAA,KAAA,CAAM,KAAK,gBAAgB,CAAA,CAAA;AAAA,GAC/B;AACJ,CAAA;AAEO,MAAM,sBAAsB,YAAa,CAAA;AAAA,EAC5C,YAAY,GAAa,EAAA;AACrB,IAAA,KAAA,CAAM,KAAK,eAAe,CAAA,CAAA;AAAA,GAC9B;AACJ,CAAA;AAEO,MAAM,2BAA2B,YAAa,CAAA;AAAA,EACjD,YAAY,GAAa,EAAA;AACrB,IAAA,KAAA,CAAM,KAAK,oBAAoB,CAAA,CAAA;AAAA,GACnC;AACJ,CAAA;AAEO,MAAM,oBAAoB,YAAa,CAAA;AAAA,EAC1C,YAAY,GAAa,EAAA;AACrB,IAAA,KAAA,CAAM,KAAK,aAAa,CAAA,CAAA;AAAA,GAC5B;AACJ;;;;;;;;"}
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var __typeError = (msg) => {
6
+ throw TypeError(msg);
7
+ };
8
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
9
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
10
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
11
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
12
+ var _expires, _fingerprints;
13
+ class RTCCertificate {
14
+ constructor() {
15
+ __privateAdd(this, _expires);
16
+ __privateAdd(this, _fingerprints);
17
+ __privateSet(this, _expires, null);
18
+ __privateSet(this, _fingerprints, []);
19
+ }
20
+ get expires() {
21
+ return __privateGet(this, _expires);
22
+ }
23
+ getFingerprints() {
24
+ return __privateGet(this, _fingerprints);
25
+ }
26
+ }
27
+ _expires = new WeakMap();
28
+ _fingerprints = new WeakMap();
29
+
30
+ exports.default = RTCCertificate;
31
+ //# sourceMappingURL=RTCCertificate.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RTCCertificate.cjs","sources":["../../../src/polyfill/RTCCertificate.ts"],"sourcesContent":["export default class RTCCertificate implements globalThis.RTCCertificate {\n #expires: number;\n #fingerprints: globalThis.RTCDtlsFingerprint[];\n\n constructor() {\n this.#expires = null;\n this.#fingerprints = [];\n }\n\n get expires(): number {\n return this.#expires;\n }\n\n getFingerprints(): globalThis.RTCDtlsFingerprint[] {\n return this.#fingerprints;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAAA,IAAA,QAAA,EAAA,aAAA,CAAA;AAAA,MAAqB,cAAoD,CAAA;AAAA,EAIrE,WAAc,GAAA;AAHd,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;AAGI,IAAA,YAAA,CAAA,IAAA,EAAK,QAAW,EAAA,IAAA,CAAA,CAAA;AAChB,IAAA,YAAA,CAAA,IAAA,EAAK,eAAgB,EAAC,CAAA,CAAA;AAAA,GAC1B;AAAA,EAEA,IAAI,OAAkB,GAAA;AAClB,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,eAAmD,GAAA;AAC/C,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;AAAA,GAChB;AACJ,CAAA;AAfI,QAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,aAAA,GAAA,IAAA,OAAA,EAAA;;;;"}