node-datachannel 0.12.0 → 0.20.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +5 -1
- package/.eslintrc.json +27 -0
- package/.prettierrc +12 -0
- package/CMakeLists.txt +13 -13
- package/dist/cjs/index.cjs +11 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/lib/datachannel-stream.cjs +101 -0
- package/dist/cjs/lib/datachannel-stream.cjs.map +1 -0
- package/dist/cjs/lib/index.cjs +61 -0
- package/dist/cjs/lib/index.cjs.map +1 -0
- package/dist/cjs/lib/node-datachannel.cjs +14 -0
- package/dist/cjs/lib/node-datachannel.cjs.map +1 -0
- package/dist/cjs/lib/websocket-server.cjs +44 -0
- package/dist/cjs/lib/websocket-server.cjs.map +1 -0
- package/dist/cjs/lib/websocket.cjs +8 -0
- package/dist/cjs/lib/websocket.cjs.map +1 -0
- package/dist/cjs/polyfill/Events.cjs +37 -0
- package/dist/cjs/polyfill/Events.cjs.map +1 -0
- package/dist/cjs/polyfill/Exception.cjs +34 -0
- package/dist/cjs/polyfill/Exception.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCCertificate.cjs +31 -0
- package/dist/cjs/polyfill/RTCCertificate.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCDataChannel.cjs +179 -0
- package/dist/cjs/polyfill/RTCDataChannel.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCDtlsTransport.cjs +52 -0
- package/dist/cjs/polyfill/RTCDtlsTransport.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCError.cjs +76 -0
- package/dist/cjs/polyfill/RTCError.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCIceCandidate.cjs +129 -0
- package/dist/cjs/polyfill/RTCIceCandidate.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCIceTransport.cjs +84 -0
- package/dist/cjs/polyfill/RTCIceTransport.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCPeerConnection.cjs +417 -0
- package/dist/cjs/polyfill/RTCPeerConnection.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCSctpTransport.cjs +61 -0
- package/dist/cjs/polyfill/RTCSctpTransport.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCSessionDescription.cjs +37 -0
- package/dist/cjs/polyfill/RTCSessionDescription.cjs.map +1 -0
- package/dist/cjs/polyfill/index.cjs +42 -0
- package/dist/cjs/polyfill/index.cjs.map +1 -0
- package/dist/esm/index.mjs +8 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/lib/datachannel-stream.mjs +78 -0
- package/dist/esm/lib/datachannel-stream.mjs.map +1 -0
- package/dist/esm/lib/index.mjs +44 -0
- package/dist/esm/lib/index.mjs.map +1 -0
- package/dist/esm/lib/node-datachannel.mjs +18 -0
- package/dist/esm/lib/node-datachannel.mjs.map +1 -0
- package/dist/esm/lib/websocket-server.mjs +42 -0
- package/dist/esm/lib/websocket-server.mjs.map +1 -0
- package/dist/esm/lib/websocket.mjs +6 -0
- package/dist/esm/lib/websocket.mjs.map +1 -0
- package/dist/esm/polyfill/Events.mjs +34 -0
- package/dist/esm/polyfill/Events.mjs.map +1 -0
- package/dist/esm/polyfill/Exception.mjs +28 -0
- package/dist/esm/polyfill/Exception.mjs.map +1 -0
- package/dist/esm/polyfill/RTCCertificate.mjs +27 -0
- package/dist/esm/polyfill/RTCCertificate.mjs.map +1 -0
- package/dist/esm/polyfill/RTCDataChannel.mjs +175 -0
- package/dist/esm/polyfill/RTCDataChannel.mjs.map +1 -0
- package/dist/esm/polyfill/RTCDtlsTransport.mjs +48 -0
- package/dist/esm/polyfill/RTCDtlsTransport.mjs.map +1 -0
- package/dist/esm/polyfill/RTCError.mjs +72 -0
- package/dist/esm/polyfill/RTCError.mjs.map +1 -0
- package/dist/esm/polyfill/RTCIceCandidate.mjs +125 -0
- package/dist/esm/polyfill/RTCIceCandidate.mjs.map +1 -0
- package/dist/esm/polyfill/RTCIceTransport.mjs +80 -0
- package/dist/esm/polyfill/RTCIceTransport.mjs.map +1 -0
- package/dist/esm/polyfill/RTCPeerConnection.mjs +413 -0
- package/dist/esm/polyfill/RTCPeerConnection.mjs.map +1 -0
- package/dist/esm/polyfill/RTCSctpTransport.mjs +57 -0
- package/dist/esm/polyfill/RTCSctpTransport.mjs.map +1 -0
- package/dist/esm/polyfill/RTCSessionDescription.mjs +33 -0
- package/dist/esm/polyfill/RTCSessionDescription.mjs.map +1 -0
- package/dist/esm/polyfill/index.mjs +27 -0
- package/dist/esm/polyfill/index.mjs.map +1 -0
- package/dist/types/lib/datachannel-stream.d.ts +24 -0
- package/dist/types/lib/index.d.ts +164 -0
- package/dist/types/lib/types.d.ts +106 -0
- package/dist/types/lib/websocket-server.d.ts +13 -0
- package/dist/types/lib/websocket.d.ts +25 -0
- package/dist/types/polyfill/Events.d.ts +15 -0
- package/dist/types/polyfill/RTCCertificate.d.ts +8 -0
- package/dist/types/polyfill/RTCDataChannel.d.ts +29 -0
- package/dist/types/polyfill/RTCDtlsTransport.d.ts +17 -0
- package/dist/types/polyfill/RTCError.d.ts +16 -0
- package/dist/types/polyfill/RTCIceCandidate.d.ts +21 -0
- package/dist/types/polyfill/RTCIceTransport.d.ts +24 -0
- package/dist/types/polyfill/RTCPeerConnection.d.ts +56 -0
- package/dist/types/polyfill/RTCSctpTransport.d.ts +17 -0
- package/dist/types/polyfill/RTCSessionDescription.d.ts +9 -0
- package/{polyfill → dist/types/polyfill}/index.d.ts +3 -14
- package/jest.config.ts +14 -0
- package/package.json +47 -43
- package/rollup.config.mjs +63 -0
- package/src/index.ts +10 -0
- package/{lib/datachannel-stream.js → src/lib/datachannel-stream.ts} +16 -11
- package/src/lib/index.ts +180 -0
- package/src/lib/node-datachannel.ts +13 -0
- package/src/lib/types.ts +126 -0
- package/{lib/websocket-server.js → src/lib/websocket-server.ts} +10 -8
- package/src/lib/websocket.ts +26 -0
- package/src/polyfill/Events.ts +33 -0
- package/src/polyfill/Exception.ts +37 -0
- package/src/polyfill/RTCCertificate.ts +17 -0
- package/{polyfill/RTCDataChannel.js → src/polyfill/RTCDataChannel.ts} +43 -40
- package/src/polyfill/RTCDtlsTransport.ts +47 -0
- package/src/polyfill/RTCError.ts +71 -0
- package/{polyfill/RTCIceCandidate.js → src/polyfill/RTCIceCandidate.ts} +35 -35
- package/{polyfill/RTCIceTransport.js → src/polyfill/RTCIceTransport.ts} +22 -20
- package/{polyfill/RTCPeerConnection.js → src/polyfill/RTCPeerConnection.ts} +128 -114
- package/{polyfill/RTCSctpTransport.js → src/polyfill/RTCSctpTransport.ts} +16 -14
- package/{polyfill/RTCSessionDescription.js → src/polyfill/RTCSessionDescription.ts} +7 -12
- package/{polyfill/index.js → src/polyfill/index.ts} +10 -10
- package/tsconfig.json +20 -13
- package/.eslintrc.cjs +0 -8
- package/.github/FUNDING.yml +0 -2
- package/.github/workflows/build-linux.yml +0 -109
- package/.github/workflows/build-mac-m1.yml +0 -38
- package/.github/workflows/build-mac-x64.yml +0 -40
- package/.github/workflows/build-win.yml +0 -74
- package/.github/workflows/lint.yml +0 -20
- package/.github/workflows/npm-publish-manual.yml +0 -23
- package/.prettierrc.cjs +0 -8
- package/build-containers/Dockerfile.alpine +0 -6
- package/build-containers/Dockerfile.debian +0 -7
- package/cmake/toolchain/ci.cmake +0 -23
- package/examples/client-server/README.md +0 -22
- package/examples/client-server/client-benchmark.js +0 -230
- package/examples/client-server/client-periodic.js +0 -189
- package/examples/client-server/client.js +0 -111
- package/examples/client-server/package-lock.json +0 -289
- package/examples/client-server/package.json +0 -16
- package/examples/client-server/signaling-server.js +0 -39
- package/examples/electron-demo/README.md +0 -58
- package/examples/electron-demo/forge.config.js +0 -49
- package/examples/electron-demo/package-lock.json +0 -15877
- package/examples/electron-demo/package.json +0 -44
- package/examples/electron-demo/src/index.css +0 -7
- package/examples/electron-demo/src/index.html +0 -29
- package/examples/electron-demo/src/main.js +0 -53
- package/examples/electron-demo/src/node-datachannel.js +0 -123
- package/examples/electron-demo/src/preload.js +0 -28
- package/examples/electron-demo/src/renderer.js +0 -58
- package/examples/electron-demo/webpack.main.config.js +0 -21
- package/examples/electron-demo/webpack.renderer.config.js +0 -13
- package/examples/electron-demo/webpack.rules.js +0 -35
- package/examples/media/README.md +0 -34
- package/examples/media/main.html +0 -45
- package/examples/media/media.js +0 -54
- package/examples/simple-peer-usage/main.js +0 -28
- package/examples/simple-peer-usage/package-lock.json +0 -317
- package/examples/simple-peer-usage/package.json +0 -16
- package/examples/websocket/websocket-client.js +0 -20
- package/examples/websocket/websocket-server.js +0 -22
- package/jest.config.cjs +0 -7
- package/lib/index.cjs +0 -194
- package/lib/index.d.cts +0 -300
- package/lib/index.d.ts +0 -300
- package/lib/index.js +0 -58
- package/lib/node-datachannel.js +0 -7
- package/polyfill/Events.d.ts +0 -9
- package/polyfill/Events.js +0 -29
- package/polyfill/Exception.js +0 -23
- package/polyfill/RTCCertificate.d.ts +0 -7
- package/polyfill/RTCCertificate.js +0 -17
- package/polyfill/RTCDataChannel.d.ts +0 -35
- package/polyfill/RTCDtlsTransport.d.ts +0 -10
- package/polyfill/RTCDtlsTransport.js +0 -47
- package/polyfill/RTCError.d.ts +0 -11
- package/polyfill/RTCError.js +0 -65
- package/polyfill/RTCIceCandidate.d.ts +0 -20
- package/polyfill/RTCIceTransport.d.ts +0 -18
- package/polyfill/RTCPeerConnection.d.ts +0 -62
- package/polyfill/RTCSctpTransport.d.ts +0 -10
- package/polyfill/RTCSessionDescription.d.ts +0 -8
- package/polyfill/index.cjs +0 -1333
- package/polyfill/index.d.cts +0 -37
- package/test/connectivity.js +0 -86
- package/test/jest-tests/basic.test.js +0 -37
- package/test/jest-tests/multiple-run.test.js +0 -73
- package/test/jest-tests/p2p.test.js +0 -99
- package/test/jest-tests/polyfill.test.js +0 -10
- package/test/jest-tests/streams.test.js +0 -48
- package/test/jest-tests/websocket.test.js +0 -69
- package/test/polyfill-connectivity.js +0 -89
- package/test/websockets.js +0 -50
- package/test/wpt-tests/README.md +0 -46
- package/test/wpt-tests/chrome-failed-tests.js +0 -42
- package/test/wpt-tests/index.js +0 -96
- package/test/wpt-tests/last-test-results.md +0 -301
- package/test/wpt-tests/package-lock.json +0 -1712
- package/test/wpt-tests/package.json +0 -19
- package/test/wpt-tests/wpt-test-list.js +0 -139
- package/test/wpt-tests/wpt.js +0 -131
- /package/src/{data-channel-wrapper.cpp → cpp/data-channel-wrapper.cpp} +0 -0
- /package/src/{data-channel-wrapper.h → cpp/data-channel-wrapper.h} +0 -0
- /package/src/{main.cpp → cpp/main.cpp} +0 -0
- /package/src/{media-audio-wrapper.cpp → cpp/media-audio-wrapper.cpp} +0 -0
- /package/src/{media-audio-wrapper.h → cpp/media-audio-wrapper.h} +0 -0
- /package/src/{media-direction.cpp → cpp/media-direction.cpp} +0 -0
- /package/src/{media-direction.h → cpp/media-direction.h} +0 -0
- /package/src/{media-rtcpreceivingsession-wrapper.cpp → cpp/media-rtcpreceivingsession-wrapper.cpp} +0 -0
- /package/src/{media-rtcpreceivingsession-wrapper.h → cpp/media-rtcpreceivingsession-wrapper.h} +0 -0
- /package/src/{media-track-wrapper.cpp → cpp/media-track-wrapper.cpp} +0 -0
- /package/src/{media-track-wrapper.h → cpp/media-track-wrapper.h} +0 -0
- /package/src/{media-video-wrapper.cpp → cpp/media-video-wrapper.cpp} +0 -0
- /package/src/{media-video-wrapper.h → cpp/media-video-wrapper.h} +0 -0
- /package/src/{peer-connection-wrapper.cpp → cpp/peer-connection-wrapper.cpp} +0 -0
- /package/src/{peer-connection-wrapper.h → cpp/peer-connection-wrapper.h} +0 -0
- /package/src/{rtc-wrapper.cpp → cpp/rtc-wrapper.cpp} +0 -0
- /package/src/{rtc-wrapper.h → cpp/rtc-wrapper.h} +0 -0
- /package/src/{thread-safe-callback.cpp → cpp/thread-safe-callback.cpp} +0 -0
- /package/src/{thread-safe-callback.h → cpp/thread-safe-callback.h} +0 -0
- /package/src/{web-socket-server-wrapper.cpp → cpp/web-socket-server-wrapper.cpp} +0 -0
- /package/src/{web-socket-server-wrapper.h → cpp/web-socket-server-wrapper.h} +0 -0
- /package/src/{web-socket-wrapper.cpp → cpp/web-socket-wrapper.cpp} +0 -0
- /package/src/{web-socket-wrapper.h → cpp/web-socket-wrapper.h} +0 -0
- /package/{polyfill → src/polyfill}/README.md +0 -0
package/.eslintignore
CHANGED
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
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.
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWqB,MAAA,iBAAA,SAA0BA,kBAAO,MAAO,CAAA;AAAA,EAKzD,WAAA,CAAY,YAAiB,aAA0D,EAAA;AACnF,IAAM,KAAA,CAAA;AAAA,MACF,aAAe,EAAA,KAAA;AAAA;AAAA,MACf,GAAG,aAAA;AAAA,MACH,UAAY,EAAA,IAAA;AAAA;AAAA,KACf,CAAA,CAAA;AATL,IAAQ,aAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;AACR,IAAQ,aAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;AAUJ,IAAA,IAAA,CAAK,WAAc,GAAA,UAAA,CAAA;AACnB,IAAA,IAAA,CAAK,WAAc,GAAA,IAAA,CAAA;AAEnB,IAAW,UAAA,CAAA,SAAA,CAAU,CAAC,GAAa,KAAA;AAC/B,MAAI,IAAA,CAAC,KAAK,WAAa,EAAA,OAAA;AAGvB,MAAK,IAAA,CAAA,WAAA,GAAc,IAAK,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAAA,KACnC,CAAA,CAAA;AAGD,IAAA,UAAA,CAAW,SAAS,MAAM;AACtB,MAAA,IAAA,CAAK,KAAK,IAAI,CAAA,CAAA;AACd,MAAA,IAAA,CAAK,OAAQ,EAAA,CAAA;AAAA,KAChB,CAAA,CAAA;AAED,IAAW,UAAA,CAAA,OAAA,CAAQ,CAAC,MAAmB,KAAA;AACnC,MAAA,IAAA,CAAK,QAAQ,IAAI,KAAA,CAAM,CAAsB,mBAAA,EAAA,MAAM,EAAE,CAAC,CAAA,CAAA;AAAA,KACzD,CAAA,CAAA;AAGD,IAAI,IAAA,CAAC,UAAW,CAAA,MAAA,EAAU,EAAA;AACtB,MAAA,IAAA,CAAK,IAAK,EAAA,CAAA;AACV,MAAA,UAAA,CAAW,MAAO,CAAA,MAAM,IAAK,CAAA,MAAA,EAAQ,CAAA,CAAA;AAAA,KACzC;AAAA,GACJ;AAAA,EAEA,KAAc,GAAA;AAEV,IAAA,IAAA,CAAK,WAAc,GAAA,IAAA,CAAA;AAAA,GACvB;AAAA,EAEA,MAAA,CAAO,KAAO,EAAA,SAAA,EAAW,QAAgB,EAAA;AACrC,IAAI,IAAA,MAAA,CAAA;AAEJ,IAAI,IAAA;AACA,MAAI,IAAA,MAAA,CAAO,QAAS,CAAA,KAAK,CAAG,EAAA;AACxB,QAAS,MAAA,GAAA,IAAA,CAAK,WAAY,CAAA,iBAAA,CAAkB,KAAK,CAAA,CAAA;AAAA,OACrD,MAAA,IAAW,OAAO,KAAA,KAAU,QAAU,EAAA;AAClC,QAAS,MAAA,GAAA,IAAA,CAAK,WAAY,CAAA,WAAA,CAAY,KAAK,CAAA,CAAA;AAAA,OACxC,MAAA;AACH,QAAA,MAAM,QAAW,GAAA,KAAA,CAAM,WAAY,CAAA,IAAA,IAAQ,OAAO,KAAA,CAAA;AAClD,QAAA,MAAM,IAAI,KAAA,CAAM,CAAgB,aAAA,EAAA,QAAQ,CAAwB,sBAAA,CAAA,CAAA,CAAA;AAAA,OACpE;AAAA,aACK,GAAK,EAAA;AACV,MAAA,OAAO,SAAS,GAAG,CAAA,CAAA;AAAA,KACvB;AAEA,IAAA,IAAI,MAAQ,EAAA;AACR,MAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAAA,KACV,MAAA;AACH,MAAS,QAAA,CAAA,IAAI,KAAM,CAAA,gCAAgC,CAAC,CAAA,CAAA;AAAA,KACxD;AAAA,GACJ;AAAA,EAEA,OAAO,QAAgB,EAAA;AACnB,IAAA,IAAI,CAAC,IAAA,CAAK,aAAe,EAAA,IAAA,CAAK,OAAQ,EAAA,CAAA;AACtC,IAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAAA,GACjB;AAAA,EAEA,QAAA,CAAS,UAAU,QAAgB,EAAA;AAE/B,IAAA,IAAA,CAAK,YAAY,KAAM,EAAA,CAAA;AACvB,IAAA,QAAA,CAAS,QAAQ,CAAA,CAAA;AAAA,GACrB;AAAA,EAEA,IAAI,KAAgB,GAAA;AAChB,IAAO,OAAA,IAAA,CAAK,YAAY,QAAS,EAAA,CAAA;AAAA,GACrC;AAAA,EAEA,IAAI,EAAa,GAAA;AACb,IAAO,OAAA,IAAA,CAAK,YAAY,KAAM,EAAA,CAAA;AAAA,GAClC;AAAA,EAEA,IAAI,QAAmB,GAAA;AACnB,IAAO,OAAA,IAAA,CAAK,YAAY,WAAY,EAAA,CAAA;AAAA,GACxC;AACJ;;;;"}
|
|
@@ -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 @@
|
|
|
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;;;;"}
|