node-datachannel 0.27.0 → 0.28.0

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 (96) hide show
  1. package/.eslintrc.json +25 -25
  2. package/.prettierignore +4 -0
  3. package/.prettierrc +1 -0
  4. package/API.md +4 -4
  5. package/BULDING.md +11 -2
  6. package/CMakeLists.txt +9 -4
  7. package/README.md +22 -18
  8. package/dist/cjs/index.cjs.map +1 -1
  9. package/dist/cjs/lib/datachannel-stream.cjs +13 -13
  10. package/dist/cjs/lib/datachannel-stream.cjs.map +1 -1
  11. package/dist/cjs/lib/index.cjs.map +1 -1
  12. package/dist/cjs/lib/websocket-server.cjs.map +1 -1
  13. package/dist/cjs/lib/websocket.cjs.map +1 -1
  14. package/dist/cjs/polyfill/Events.cjs +52 -3
  15. package/dist/cjs/polyfill/Events.cjs.map +1 -1
  16. package/dist/cjs/polyfill/Exception.cjs.map +1 -1
  17. package/dist/cjs/polyfill/RTCCertificate.cjs +5 -2
  18. package/dist/cjs/polyfill/RTCCertificate.cjs.map +1 -1
  19. package/dist/cjs/polyfill/RTCDataChannel.cjs +27 -19
  20. package/dist/cjs/polyfill/RTCDataChannel.cjs.map +1 -1
  21. package/dist/cjs/polyfill/RTCDtlsTransport.cjs +6 -5
  22. package/dist/cjs/polyfill/RTCDtlsTransport.cjs.map +1 -1
  23. package/dist/cjs/polyfill/RTCError.cjs +9 -2
  24. package/dist/cjs/polyfill/RTCError.cjs.map +1 -1
  25. package/dist/cjs/polyfill/RTCIceCandidate.cjs +13 -8
  26. package/dist/cjs/polyfill/RTCIceCandidate.cjs.map +1 -1
  27. package/dist/cjs/polyfill/RTCIceTransport.cjs +26 -16
  28. package/dist/cjs/polyfill/RTCIceTransport.cjs.map +1 -1
  29. package/dist/cjs/polyfill/RTCPeerConnection.cjs +80 -70
  30. package/dist/cjs/polyfill/RTCPeerConnection.cjs.map +1 -1
  31. package/dist/cjs/polyfill/RTCSctpTransport.cjs +9 -11
  32. package/dist/cjs/polyfill/RTCSctpTransport.cjs.map +1 -1
  33. package/dist/cjs/polyfill/RTCSessionDescription.cjs +10 -2
  34. package/dist/cjs/polyfill/RTCSessionDescription.cjs.map +1 -1
  35. package/dist/cjs/polyfill/index.cjs.map +1 -1
  36. package/dist/esm/index.mjs.map +1 -1
  37. package/dist/esm/lib/datachannel-stream.mjs.map +1 -1
  38. package/dist/esm/lib/index.mjs.map +1 -1
  39. package/dist/esm/lib/websocket-server.mjs.map +1 -1
  40. package/dist/esm/lib/websocket.mjs.map +1 -1
  41. package/dist/esm/polyfill/Events.mjs +52 -4
  42. package/dist/esm/polyfill/Events.mjs.map +1 -1
  43. package/dist/esm/polyfill/Exception.mjs.map +1 -1
  44. package/dist/esm/polyfill/RTCCertificate.mjs +5 -2
  45. package/dist/esm/polyfill/RTCCertificate.mjs.map +1 -1
  46. package/dist/esm/polyfill/RTCDataChannel.mjs +27 -19
  47. package/dist/esm/polyfill/RTCDataChannel.mjs.map +1 -1
  48. package/dist/esm/polyfill/RTCDtlsTransport.mjs +6 -5
  49. package/dist/esm/polyfill/RTCDtlsTransport.mjs.map +1 -1
  50. package/dist/esm/polyfill/RTCError.mjs +9 -2
  51. package/dist/esm/polyfill/RTCError.mjs.map +1 -1
  52. package/dist/esm/polyfill/RTCIceCandidate.mjs +13 -8
  53. package/dist/esm/polyfill/RTCIceCandidate.mjs.map +1 -1
  54. package/dist/esm/polyfill/RTCIceTransport.mjs +26 -17
  55. package/dist/esm/polyfill/RTCIceTransport.mjs.map +1 -1
  56. package/dist/esm/polyfill/RTCPeerConnection.mjs +80 -70
  57. package/dist/esm/polyfill/RTCPeerConnection.mjs.map +1 -1
  58. package/dist/esm/polyfill/RTCSctpTransport.mjs +9 -11
  59. package/dist/esm/polyfill/RTCSctpTransport.mjs.map +1 -1
  60. package/dist/esm/polyfill/RTCSessionDescription.mjs +10 -2
  61. package/dist/esm/polyfill/RTCSessionDescription.mjs.map +1 -1
  62. package/dist/esm/polyfill/index.mjs.map +1 -1
  63. package/dist/types/lib/types.d.ts +6 -6
  64. package/dist/types/polyfill/Events.d.ts +4 -1
  65. package/dist/types/polyfill/RTCCertificate.d.ts +1 -0
  66. package/dist/types/polyfill/RTCDataChannel.d.ts +6 -6
  67. package/dist/types/polyfill/RTCDtlsTransport.d.ts +5 -4
  68. package/dist/types/polyfill/RTCError.d.ts +1 -0
  69. package/dist/types/polyfill/RTCIceCandidate.d.ts +1 -1
  70. package/dist/types/polyfill/RTCIceTransport.d.ts +17 -8
  71. package/dist/types/polyfill/RTCPeerConnection.d.ts +22 -11
  72. package/dist/types/polyfill/RTCSctpTransport.d.ts +4 -3
  73. package/dist/types/polyfill/RTCSessionDescription.d.ts +1 -0
  74. package/jest.config.ts +8 -8
  75. package/package.json +4 -2
  76. package/rollup.config.mjs +1 -1
  77. package/src/cpp/data-channel-wrapper.cpp +11 -0
  78. package/src/index.ts +0 -1
  79. package/src/lib/datachannel-stream.ts +83 -84
  80. package/src/lib/index.ts +163 -140
  81. package/src/lib/types.ts +97 -72
  82. package/src/lib/websocket-server.ts +25 -25
  83. package/src/lib/websocket.ts +19 -19
  84. package/src/polyfill/Events.ts +67 -17
  85. package/src/polyfill/Exception.ts +24 -24
  86. package/src/polyfill/README.md +8 -8
  87. package/src/polyfill/RTCCertificate.ts +16 -12
  88. package/src/polyfill/RTCDataChannel.ts +198 -192
  89. package/src/polyfill/RTCDtlsTransport.ts +39 -39
  90. package/src/polyfill/RTCError.ts +63 -56
  91. package/src/polyfill/RTCIceCandidate.ts +120 -116
  92. package/src/polyfill/RTCIceTransport.ts +72 -64
  93. package/src/polyfill/RTCPeerConnection.ts +436 -420
  94. package/src/polyfill/RTCSctpTransport.ts +44 -47
  95. package/src/polyfill/RTCSessionDescription.ts +26 -17
  96. package/src/polyfill/index.ts +22 -22
package/.eslintrc.json CHANGED
@@ -1,27 +1,27 @@
1
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
- }
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"
27
26
  }
27
+ }
@@ -0,0 +1,4 @@
1
+ test/wpt-tests/wpt
2
+ vcpkg
3
+ out
4
+ .webpack
package/.prettierrc CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "singleQuote": true,
3
3
  "trailingComma": "all",
4
+ "printWidth": 100,
4
5
  "overrides": [
5
6
  {
6
7
  "files": ["*.ts", "*.mts"],
package/API.md CHANGED
@@ -6,8 +6,8 @@
6
6
 
7
7
  let pc = new PeerConnection(peerName[,options])
8
8
 
9
- - peerName `<string>` Peer name to use for logs etc..
10
- - options `<Object>` WebRTC Config Options
9
+ - peerName `<string>` Peer name to use for logs etc..
10
+ - options `<Object>` WebRTC Config Options
11
11
 
12
12
  ```
13
13
  export interface RtcConfig {
@@ -77,8 +77,8 @@ Add remote candidate info
77
77
 
78
78
  Create new data-channel
79
79
 
80
- - label `<string>` Data channel name
81
- - config `<Object>` Data channel options
80
+ - label `<string>` Data channel name
81
+ - config `<Object>` Data channel options
82
82
 
83
83
  ```
84
84
  export interface DataChannelInitConfig {
package/BULDING.md CHANGED
@@ -1,8 +1,9 @@
1
1
  # Build
2
2
 
3
3
  ## Requirements
4
- * cmake >= V3.14
5
- * [libdatachannel dependencies](https://github.com/paullouisageneau/libdatachannel/blob/master/README.md#dependencies)
4
+
5
+ - cmake >= V3.14
6
+ - [libdatachannel dependencies](https://github.com/paullouisageneau/libdatachannel/blob/master/README.md#dependencies)
6
7
 
7
8
  ## Building from source
8
9
 
@@ -13,6 +14,7 @@
13
14
  ```
14
15
 
15
16
  Other Options
17
+
16
18
  ```sh
17
19
  # Use GnuTLS instead of OpenSSL (Default False)
18
20
  > npm run install-gnu-tls
@@ -21,3 +23,10 @@ Other Options
21
23
  # libnice-dev packet should be installed. (eg. sudo apt install libnice-dev)
22
24
  > npm run install-nice
23
25
  ```
26
+
27
+ Compile without Media and Websocket
28
+ ```sh
29
+ npx cmake-js clean
30
+ npx cmake-js configure --CDNO_MEDIA=ON --CDNO_WEBSOCKET=ON
31
+ npx cmake-js build
32
+ ```
package/CMakeLists.txt CHANGED
@@ -2,15 +2,13 @@ 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.27.0)
5
+ project(node_datachannel VERSION 0.28.0)
6
6
 
7
7
  # -Dnapi_build_version=8
8
8
  add_definitions(-DNAPI_VERSION=8)
9
9
 
10
10
  include_directories(${CMAKE_JS_INC})
11
11
 
12
- set(CMAKE_BUILD_TYPE Release)
13
-
14
12
  if(WIN32)
15
13
  set(OPENSSL_MSVC_STATIC_RT TRUE)
16
14
  set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
@@ -34,7 +32,7 @@ include(FetchContent)
34
32
  FetchContent_Declare(
35
33
  libdatachannel
36
34
  GIT_REPOSITORY https://github.com/paullouisageneau/libdatachannel.git
37
- GIT_TAG "v0.22.2"
35
+ GIT_TAG "aa57f4285936a878fb96f4f84085ee84d20c3397" # v0.22.2+
38
36
  )
39
37
 
40
38
  option(NO_MEDIA "Disable media transport support in libdatachannel" OFF)
@@ -80,6 +78,13 @@ add_library(${PROJECT_NAME} SHARED ${SRC_FILES})
80
78
  set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 17)
81
79
  set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node")
82
80
 
81
+ # Set the output directory for all build types
82
+ # set_target_properties(${PROJECT_NAME} PROPERTIES
83
+ # RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/binary
84
+ # LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/binary
85
+ # ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/binary
86
+ # )
87
+
83
88
  target_include_directories(${PROJECT_NAME} PRIVATE
84
89
  ${CMAKE_SOURCE_DIR}/node_modules/node-addon-api
85
90
  ${CMAKE_BINARY_DIR}/_deps/libdatachannel-src/include
package/README.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  ![Linux CI Build](https://github.com/murat-dogan/node-datachannel/workflows/Build%20-%20Linux/badge.svg) ![Windows CI Build](https://github.com/murat-dogan/node-datachannel/workflows/Build%20-%20Win/badge.svg) ![Mac x64 CI Build](https://github.com/murat-dogan/node-datachannel/workflows/Build%20-%20Mac%20x64/badge.svg) ![Mac M1 CI Build](https://github.com/murat-dogan/node-datachannel/workflows/Build%20-%20Mac%20M1/badge.svg)
4
4
 
5
- - Lightweight
6
- - No need to deal with WebRTC stack!
7
- - Small binary sizes (~8MB for Linux x64)
8
- - Type infos for Typescript
9
- - Integrated WebSocket Client & Server Implementation
5
+ - Lightweight
6
+ - No need to deal with WebRTC stack!
7
+ - Small binary sizes (~8MB for Linux x64)
8
+ - Type infos for Typescript
9
+ - Integrated WebSocket Client & Server Implementation
10
10
 
11
11
  This project is Node.js bindings for [libdatachannel](https://github.com/paullouisageneau/libdatachannel) library.
12
12
 
@@ -62,39 +62,43 @@ nodeDataChannel.initLogger('Debug');
62
62
  let dc1 = null;
63
63
  let dc2 = null;
64
64
 
65
- let peer1 = new nodeDataChannel.PeerConnection('Peer1', { iceServers: ['stun:stun.l.google.com:19302'] });
65
+ let peer1 = new nodeDataChannel.PeerConnection('Peer1', {
66
+ iceServers: ['stun:stun.l.google.com:19302'],
67
+ });
66
68
 
67
69
  peer1.onLocalDescription((sdp, type) => {
68
- peer2.setRemoteDescription(sdp, type);
70
+ peer2.setRemoteDescription(sdp, type);
69
71
  });
70
72
  peer1.onLocalCandidate((candidate, mid) => {
71
- peer2.addRemoteCandidate(candidate, mid);
73
+ peer2.addRemoteCandidate(candidate, mid);
72
74
  });
73
75
 
74
- let peer2 = new nodeDataChannel.PeerConnection('Peer2', { iceServers: ['stun:stun.l.google.com:19302'] });
76
+ let peer2 = new nodeDataChannel.PeerConnection('Peer2', {
77
+ iceServers: ['stun:stun.l.google.com:19302'],
78
+ });
75
79
 
76
80
  peer2.onLocalDescription((sdp, type) => {
77
- peer1.setRemoteDescription(sdp, type);
81
+ peer1.setRemoteDescription(sdp, type);
78
82
  });
79
83
  peer2.onLocalCandidate((candidate, mid) => {
80
- peer1.addRemoteCandidate(candidate, mid);
84
+ peer1.addRemoteCandidate(candidate, mid);
81
85
  });
82
86
  peer2.onDataChannel((dc) => {
83
- dc2 = dc;
84
- dc2.onMessage((msg) => {
85
- console.log('Peer2 Received Msg:', msg);
86
- });
87
- dc2.sendMessage('Hello From Peer2');
87
+ dc2 = dc;
88
+ dc2.onMessage((msg) => {
89
+ console.log('Peer2 Received Msg:', msg);
90
+ });
91
+ dc2.sendMessage('Hello From Peer2');
88
92
  });
89
93
 
90
94
  dc1 = peer1.createDataChannel('test');
91
95
 
92
96
  dc1.onOpen(() => {
93
- dc1.sendMessage('Hello from Peer1');
97
+ dc1.sendMessage('Hello from Peer1');
94
98
  });
95
99
 
96
100
  dc1.onMessage((msg) => {
97
- console.log('Peer1 Received Msg:', msg);
101
+ console.log('Peer1 Received Msg:', msg);
98
102
  });
99
103
  ```
100
104
 
@@ -1 +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;;;;;"}
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\nexport const nodeDataChannel = n;\nexport const polyfill = p;\n"],"names":["n","p"],"mappings":";;;;;AAOO,MAAM,eAAkB,GAAAA,cAAA;AACxB,MAAM,QAAW,GAAAC;;;;;"}
@@ -5,20 +5,20 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var stream = require('stream');
6
6
 
7
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
- }
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]; }
18
16
  });
19
- }
20
- n.default = e;
21
- return Object.freeze(n);
17
+ }
18
+ });
19
+ }
20
+ n.default = e;
21
+ return Object.freeze(n);
22
22
  }
23
23
 
24
24
  var stream__namespace = /*#__PURE__*/_interopNamespaceDefault(stream);
@@ -1 +1 @@
1
- {"version":3,"file":"datachannel-stream.cjs","sources":["../../../src/lib/datachannel-stream.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as stream from 'stream';\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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"}
1
+ {"version":3,"file":"datachannel-stream.cjs","sources":["../../../src/lib/datachannel-stream.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as stream from 'stream';\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 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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"}
@@ -1 +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, 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); }\nexport function getLibraryVersion(): string { return nodeDataChannel.getLibraryVersion(); }\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: 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 | ArrayBuffer) => 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: string } | 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 interface RtcpReceivingSession {\n}\n\nexport const RtcpReceivingSession: {\n new(): RtcpReceivingSession\n} = nodeDataChannel.RtcpReceivingSession\n\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 getLibraryVersion,\n RtcpReceivingSession,\n Track,\n Video,\n Audio,\n DataChannel,\n PeerConnection,\n WebSocket,\n WebSocketServer,\n DataChannelStream\n};\n\n\n// Types\n// https://github.com/murat-dogan/node-datachannel/issues/300\nexport * from './types';\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;AACpG,SAAS,iBAA4B,GAAA;AAAE,EAAA,OAAOA,wBAAgB,iBAAkB,EAAA,CAAA;AAAG,CAAA;AAwBnF,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;AAKb,MAAM,uBAETA,uBAAgB,CAAA,qBAAA;AAKb,MAAM,iBAAoB,GAAAC,0BAAA;AAEjC,QAAe;AAAA,EACX,UAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;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;;;;;;;;;;;;;;;;;;"}
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 {\n Channel,\n DataChannelInitConfig,\n DescriptionType,\n Direction,\n LogLevel,\n RtcConfig,\n RTCIceConnectionState,\n RTCIceGatheringState,\n RTCPeerConnectionState,\n RTCSignalingState,\n SctpSettings,\n SelectedCandidateInfo,\n} from './types';\nimport { WebSocket } from './websocket';\n\nexport function preload(): void {\n nodeDataChannel.preload();\n}\nexport function initLogger(level: LogLevel): void {\n nodeDataChannel.initLogger(level);\n}\nexport function cleanup(): void {\n nodeDataChannel.cleanup();\n}\nexport function setSctpSettings(settings: SctpSettings): void {\n nodeDataChannel.setSctpSettings(settings);\n}\nexport function getLibraryVersion(): string {\n return nodeDataChannel.getLibraryVersion();\n}\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\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: 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 | ArrayBuffer) => 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: string } | 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(): {\n local: SelectedCandidateInfo;\n remote: SelectedCandidateInfo;\n } | null;\n maxDataChannelId(): number;\n maxMessageSize(): number;\n}\nexport const PeerConnection: {\n new (peerName: string, config: RtcConfig): PeerConnection;\n} = nodeDataChannel.PeerConnection;\n\nexport interface RtcpReceivingSession {}\n\nexport const RtcpReceivingSession: {\n new (): RtcpReceivingSession;\n} = nodeDataChannel.RtcpReceivingSession;\n\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 getLibraryVersion,\n RtcpReceivingSession,\n Track,\n Video,\n Audio,\n DataChannel,\n PeerConnection,\n WebSocket,\n WebSocketServer,\n DataChannelStream,\n};\n\n// Types\n// https://github.com/murat-dogan/node-datachannel/issues/300\nexport * from './types';\n"],"names":["nodeDataChannel","_DataChannelStream","WebSocket","WebSocketServer"],"mappings":";;;;;;;;;AAmBO,SAAS,OAAgB,GAAA;AAC9B,EAAAA,uBAAA,CAAgB,OAAQ,EAAA,CAAA;AAC1B,CAAA;AACO,SAAS,WAAW,KAAuB,EAAA;AAChD,EAAAA,uBAAA,CAAgB,WAAW,KAAK,CAAA,CAAA;AAClC,CAAA;AACO,SAAS,OAAgB,GAAA;AAC9B,EAAAA,uBAAA,CAAgB,OAAQ,EAAA,CAAA;AAC1B,CAAA;AACO,SAAS,gBAAgB,QAA8B,EAAA;AAC5D,EAAAA,uBAAA,CAAgB,gBAAgB,QAAQ,CAAA,CAAA;AAC1C,CAAA;AACO,SAAS,iBAA4B,GAAA;AAC1C,EAAA,OAAOA,wBAAgB,iBAAkB,EAAA,CAAA;AAC3C,CAAA;AAwBO,MAAM,QAETA,uBAAgB,CAAA,MAAA;AA0Bb,MAAM,QAETA,uBAAgB,CAAA,MAAA;AAsBb,MAAM,QAETA,uBAAgB,CAAA,MAAA;AAqBb,MAAM,cAETA,uBAAgB,CAAA,YAAA;AAkCb,MAAM,iBAETA,uBAAgB,CAAA,eAAA;AAIb,MAAM,uBAETA,uBAAgB,CAAA,qBAAA;AAKb,MAAM,iBAAoB,GAAAC,0BAAA;AAEjC,QAAe;AAAA,EACb,UAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;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;AACF,CAAA;;;;;;;;;;;;;;;;;;"}
@@ -1 +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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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,EAK9C,YAAY,OAAuC,EAAA;AAC/C,IAAM,KAAA,EAAA,CAAA;AAJV;AAAA,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;;;;"}
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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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,EAKhD,YAAY,OAAuC,EAAA;AACjD,IAAM,KAAA,EAAA,CAAA;AAJR;AAAA,IAAA,YAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,EAAwB,EAAC,CAAA,CAAA;AAIvB,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;AAChC,MAAK,IAAA,CAAA,IAAA,CAAK,UAAU,MAAM,CAAA,CAAA;AAC1B,MAAK,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,KAAK,MAAM,CAAA,CAAA;AAAA,KAC1B,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,IAAe,GAAA;AACb,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,OAAS,CAAA,EAAA,IAAA,EAAU,IAAA,CAAA,CAAA;AAAA,GACjC;AAAA,EAEA,IAAa,GAAA;AACX,IAAK,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,OAAQ,CAAA,CAAC,MAAW,KAAA;AAChC,MAAA,MAAA,EAAQ,KAAM,EAAA,CAAA;AAAA,KACf,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,GAC1B;AAAA,EAEA,SAAS,EAA6C,EAAA;AACpD,IAAA,IAAI,YAAK,CAAA,IAAA,EAAA,OAAA,CAAA,EAAc,IAAA,CAAA,EAAA,CAAG,UAAU,EAAE,CAAA,CAAA;AAAA,GACxC;AACF,CAAA;AA7BE,OAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,QAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
@@ -1 +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;;;;"}
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;;;;"}
@@ -1,5 +1,8 @@
1
1
  'use strict';
2
2
 
3
+ var RTCDataChannel = require('./RTCDataChannel.cjs');
4
+ var RTCError = require('./RTCError.cjs');
5
+
3
6
  var __typeError = (msg) => {
4
7
  throw TypeError(msg);
5
8
  };
@@ -7,7 +10,7 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
7
10
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
8
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);
9
12
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
10
- var _candidate, _channel;
13
+ var _candidate, _channel, _error;
11
14
  class RTCPeerConnectionIceEvent extends Event {
12
15
  constructor(candidate) {
13
16
  super("icecandidate");
@@ -17,13 +20,31 @@ class RTCPeerConnectionIceEvent extends Event {
17
20
  get candidate() {
18
21
  return __privateGet(this, _candidate);
19
22
  }
23
+ get url() {
24
+ return "";
25
+ }
20
26
  }
21
27
  _candidate = new WeakMap();
22
28
  class RTCDataChannelEvent extends Event {
23
- constructor(type, eventInitDict) {
29
+ constructor(type = "datachannel", eventInitDict) {
24
30
  super(type);
25
31
  __privateAdd(this, _channel);
26
- if (type && !eventInitDict.channel) throw new TypeError("channel member is required");
32
+ if (arguments.length === 0)
33
+ throw new TypeError(
34
+ `Failed to construct 'RTCDataChannelEvent': 2 arguments required, but only ${arguments.length} present.`
35
+ );
36
+ if (typeof eventInitDict !== "object")
37
+ throw new TypeError(
38
+ "Failed to construct 'RTCDataChannelEvent': The provided value is not of type 'RTCDataChannelEventInit'."
39
+ );
40
+ if (!eventInitDict.channel)
41
+ throw new TypeError(
42
+ "Failed to construct 'RTCDataChannelEvent': Failed to read the 'channel' property from 'RTCDataChannelEventInit': Required member is undefined."
43
+ );
44
+ if (eventInitDict.channel.constructor !== RTCDataChannel.default)
45
+ throw new TypeError(
46
+ "Failed to construct 'RTCDataChannelEvent': Failed to read the 'channel' property from 'RTCDataChannelEventInit': Failed to convert value to 'RTCDataChannel'."
47
+ );
27
48
  __privateSet(this, _channel, eventInitDict?.channel);
28
49
  }
29
50
  get channel() {
@@ -31,7 +52,35 @@ class RTCDataChannelEvent extends Event {
31
52
  }
32
53
  }
33
54
  _channel = new WeakMap();
55
+ class RTCErrorEvent extends Event {
56
+ constructor(type, init) {
57
+ if (arguments.length < 2)
58
+ throw new TypeError(
59
+ `Failed to construct 'RTCErrorEvent': 2 arguments required, but only ${arguments.length} present.`
60
+ );
61
+ if (typeof init !== "object")
62
+ throw new TypeError(
63
+ "Failed to construct 'RTCErrorEvent': The provided value is not of type 'RTCErrorEventInit'."
64
+ );
65
+ if (!init.error)
66
+ throw new TypeError(
67
+ "Failed to construct 'RTCErrorEvent': Failed to read the 'error' property from 'RTCErrorEventInit': Required member is undefined."
68
+ );
69
+ if (init.error.constructor !== RTCError.default)
70
+ throw new TypeError(
71
+ "Failed to construct 'RTCErrorEvent': Failed to read the 'error' property from 'RTCErrorEventInit': Failed to convert value to 'RTCError'."
72
+ );
73
+ super(type || "error");
74
+ __privateAdd(this, _error);
75
+ __privateSet(this, _error, init.error);
76
+ }
77
+ get error() {
78
+ return __privateGet(this, _error);
79
+ }
80
+ }
81
+ _error = new WeakMap();
34
82
 
35
83
  exports.RTCDataChannelEvent = RTCDataChannelEvent;
84
+ exports.RTCErrorEvent = RTCErrorEvent;
36
85
  exports.RTCPeerConnectionIceEvent = RTCPeerConnectionIceEvent;
37
86
  //# sourceMappingURL=Events.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Events.cjs","sources":["../../../src/polyfill/Events.ts"],"sourcesContent":["export class RTCPeerConnectionIceEvent extends Event implements globalThis.RTCPeerConnectionIceEvent {\n #candidate: globalThis.RTCIceCandidate;\n\n constructor(candidate: globalThis.RTCIceCandidate) {\n super('icecandidate');\n\n this.#candidate = candidate;\n }\n\n get candidate(): globalThis.RTCIceCandidate {\n return this.#candidate;\n }\n}\n\nexport class RTCDataChannelEvent extends Event implements globalThis.RTCDataChannelEvent {\n #channel: globalThis.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 globalThis.RTCDataChannel;\n }\n\n get channel(): globalThis.RTCDataChannel {\n return this.#channel;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;AAAA,IAAA,UAAA,EAAA,QAAA,CAAA;AAAO,MAAM,kCAAkC,KAAsD,CAAA;AAAA,EAGjG,YAAY,SAAuC,EAAA;AAC/C,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,SAAwC,GAAA;AACxC,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,OAAqC,GAAA;AACrC,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAAA,GAChB;AACJ,CAAA;AAbI,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;"}
1
+ {"version":3,"file":"Events.cjs","sources":["../../../src/polyfill/Events.ts"],"sourcesContent":["import RTCDataChannel from './RTCDataChannel';\nimport RTCError from './RTCError';\n\nexport class RTCPeerConnectionIceEvent extends Event implements globalThis.RTCPeerConnectionIceEvent {\n #candidate: globalThis.RTCIceCandidate;\n\n constructor(candidate: globalThis.RTCIceCandidate) {\n super('icecandidate');\n\n this.#candidate = candidate;\n }\n\n get candidate(): globalThis.RTCIceCandidate {\n return this.#candidate;\n }\n\n get url(): string {\n return '';\n }\n}\n\nexport class RTCDataChannelEvent extends Event implements globalThis.RTCDataChannelEvent {\n #channel: RTCDataChannel;\n\n constructor(type: string = 'datachannel', eventInitDict: globalThis.RTCDataChannelEventInit) {\n super(type);\n\n if (arguments.length === 0)\n throw new TypeError(\n `Failed to construct 'RTCDataChannelEvent': 2 arguments required, but only ${arguments.length} present.`,\n );\n if (typeof eventInitDict !== 'object')\n throw new TypeError(\n \"Failed to construct 'RTCDataChannelEvent': The provided value is not of type 'RTCDataChannelEventInit'.\",\n );\n if (!eventInitDict.channel)\n throw new TypeError(\n \"Failed to construct 'RTCDataChannelEvent': Failed to read the 'channel' property from 'RTCDataChannelEventInit': Required member is undefined.\",\n );\n if (eventInitDict.channel.constructor !== RTCDataChannel)\n throw new TypeError(\n \"Failed to construct 'RTCDataChannelEvent': Failed to read the 'channel' property from 'RTCDataChannelEventInit': Failed to convert value to 'RTCDataChannel'.\",\n );\n\n this.#channel = eventInitDict?.channel;\n }\n\n get channel(): RTCDataChannel {\n return this.#channel;\n }\n}\n\nexport class RTCErrorEvent extends Event implements globalThis.RTCErrorEvent {\n #error: RTCError;\n constructor(type: string, init: globalThis.RTCErrorEventInit) {\n if (arguments.length < 2)\n throw new TypeError(\n `Failed to construct 'RTCErrorEvent': 2 arguments required, but only ${arguments.length} present.`,\n );\n if (typeof init !== 'object')\n throw new TypeError(\n \"Failed to construct 'RTCErrorEvent': The provided value is not of type 'RTCErrorEventInit'.\",\n );\n if (!init.error)\n throw new TypeError(\n \"Failed to construct 'RTCErrorEvent': Failed to read the 'error' property from 'RTCErrorEventInit': Required member is undefined.\",\n );\n if (init.error.constructor !== RTCError)\n throw new TypeError(\n \"Failed to construct 'RTCErrorEvent': Failed to read the 'error' property from 'RTCErrorEventInit': Failed to convert value to 'RTCError'.\",\n );\n super(type || 'error');\n this.#error = init.error;\n }\n\n get error(): RTCError {\n return this.#error;\n }\n}\n"],"names":["RTCDataChannel","RTCError"],"mappings":"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"}
@@ -1 +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;;;;;;;;"}
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,EAClD,YAAY,GAAa,EAAA;AACvB,IAAA,KAAA,CAAM,KAAK,mBAAmB,CAAA,CAAA;AAAA,GAChC;AACF,CAAA;AAQO,MAAM,uBAAuB,YAAa,CAAA;AAAA,EAC/C,YAAY,GAAa,EAAA;AACvB,IAAA,KAAA,CAAM,KAAK,gBAAgB,CAAA,CAAA;AAAA,GAC7B;AACF,CAAA;AAEO,MAAM,sBAAsB,YAAa,CAAA;AAAA,EAC9C,YAAY,GAAa,EAAA;AACvB,IAAA,KAAA,CAAM,KAAK,eAAe,CAAA,CAAA;AAAA,GAC5B;AACF,CAAA;AAEO,MAAM,2BAA2B,YAAa,CAAA;AAAA,EACnD,YAAY,GAAa,EAAA;AACvB,IAAA,KAAA,CAAM,KAAK,oBAAoB,CAAA,CAAA;AAAA,GACjC;AACF,CAAA;AAEO,MAAM,oBAAoB,YAAa,CAAA;AAAA,EAC5C,YAAY,GAAa,EAAA;AACvB,IAAA,KAAA,CAAM,KAAK,aAAa,CAAA,CAAA;AAAA,GAC1B;AACF;;;;;;;;"}
@@ -12,8 +12,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
12
12
  var _expires, _fingerprints;
13
13
  class RTCCertificate {
14
14
  constructor() {
15
- __privateAdd(this, _expires);
16
- __privateAdd(this, _fingerprints);
15
+ __privateAdd(this, _expires, 0);
16
+ __privateAdd(this, _fingerprints, []);
17
17
  __privateSet(this, _expires, null);
18
18
  __privateSet(this, _fingerprints, []);
19
19
  }
@@ -23,6 +23,9 @@ class RTCCertificate {
23
23
  getFingerprints() {
24
24
  return __privateGet(this, _fingerprints);
25
25
  }
26
+ getAlgorithm() {
27
+ return "";
28
+ }
26
29
  }
27
30
  _expires = new WeakMap();
28
31
  _fingerprints = new WeakMap();
@@ -1 +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;;;;"}
1
+ {"version":3,"file":"RTCCertificate.cjs","sources":["../../../src/polyfill/RTCCertificate.ts"],"sourcesContent":["export default class RTCCertificate implements globalThis.RTCCertificate {\n #expires: number = 0;\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 getAlgorithm(): string {\n return '';\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAAA,IAAA,QAAA,EAAA,aAAA,CAAA;AAAA,MAAqB,cAAoD,CAAA;AAAA,EAIvE,WAAc,GAAA;AAHd,IAAmB,YAAA,CAAA,IAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AACnB,IAAA,YAAA,CAAA,IAAA,EAAA,aAAA,EAAiD,EAAC,CAAA,CAAA;AAGhD,IAAA,YAAA,CAAA,IAAA,EAAK,QAAW,EAAA,IAAA,CAAA,CAAA;AAChB,IAAA,YAAA,CAAA,IAAA,EAAK,eAAgB,EAAC,CAAA,CAAA;AAAA,GACxB;AAAA,EAEA,IAAI,OAAkB,GAAA;AACpB,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAAA,GACd;AAAA,EAEA,eAAmD,GAAA;AACjD,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;AAAA,GACd;AAAA,EAEA,YAAuB,GAAA;AACrB,IAAO,OAAA,EAAA,CAAA;AAAA,GACT;AACF,CAAA;AAnBE,QAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,aAAA,GAAA,IAAA,OAAA,EAAA;;;;"}