@lng2004/node-datachannel 0.31.0-20251228
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/.clang-format +17 -0
- package/.editorconfig +12 -0
- package/.eslintignore +8 -0
- package/.eslintrc.json +27 -0
- package/.gitmodules +3 -0
- package/.prettierignore +7 -0
- package/.prettierrc +13 -0
- package/API.md +247 -0
- package/BULDING.md +33 -0
- package/CMakeLists.txt +134 -0
- package/LICENSE +373 -0
- package/README.md +130 -0
- 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 +88 -0
- package/dist/cjs/lib/index.cjs.map +1 -0
- package/dist/cjs/lib/node-datachannel.cjs +8 -0
- package/dist/cjs/lib/node-datachannel.cjs.map +1 -0
- package/dist/cjs/lib/websocket-server.cjs +45 -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 +86 -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 +34 -0
- package/dist/cjs/polyfill/RTCCertificate.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCDataChannel.cjs +214 -0
- package/dist/cjs/polyfill/RTCDataChannel.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCDtlsTransport.cjs +53 -0
- package/dist/cjs/polyfill/RTCDtlsTransport.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCError.cjs +83 -0
- package/dist/cjs/polyfill/RTCError.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCIceCandidate.cjs +132 -0
- package/dist/cjs/polyfill/RTCIceCandidate.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCIceTransport.cjs +94 -0
- package/dist/cjs/polyfill/RTCIceTransport.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCPeerConnection.cjs +434 -0
- package/dist/cjs/polyfill/RTCPeerConnection.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCSctpTransport.cjs +59 -0
- package/dist/cjs/polyfill/RTCSctpTransport.cjs.map +1 -0
- package/dist/cjs/polyfill/RTCSessionDescription.cjs +45 -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 +62 -0
- package/dist/esm/lib/index.mjs.map +1 -0
- package/dist/esm/lib/node-datachannel.mjs +12 -0
- package/dist/esm/lib/node-datachannel.mjs.map +1 -0
- package/dist/esm/lib/websocket-server.mjs +43 -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 +82 -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 +30 -0
- package/dist/esm/polyfill/RTCCertificate.mjs.map +1 -0
- package/dist/esm/polyfill/RTCDataChannel.mjs +210 -0
- package/dist/esm/polyfill/RTCDataChannel.mjs.map +1 -0
- package/dist/esm/polyfill/RTCDtlsTransport.mjs +49 -0
- package/dist/esm/polyfill/RTCDtlsTransport.mjs.map +1 -0
- package/dist/esm/polyfill/RTCError.mjs +79 -0
- package/dist/esm/polyfill/RTCError.mjs.map +1 -0
- package/dist/esm/polyfill/RTCIceCandidate.mjs +128 -0
- package/dist/esm/polyfill/RTCIceCandidate.mjs.map +1 -0
- package/dist/esm/polyfill/RTCIceTransport.mjs +89 -0
- package/dist/esm/polyfill/RTCIceTransport.mjs.map +1 -0
- package/dist/esm/polyfill/RTCPeerConnection.mjs +430 -0
- package/dist/esm/polyfill/RTCPeerConnection.mjs.map +1 -0
- package/dist/esm/polyfill/RTCSctpTransport.mjs +55 -0
- package/dist/esm/polyfill/RTCSctpTransport.mjs.map +1 -0
- package/dist/esm/polyfill/RTCSessionDescription.mjs +41 -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 +235 -0
- package/dist/types/lib/types.d.ts +118 -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 +9 -0
- package/dist/types/polyfill/RTCDataChannel.d.ts +29 -0
- package/dist/types/polyfill/RTCDtlsTransport.d.ts +15 -0
- package/dist/types/polyfill/RTCError.d.ts +17 -0
- package/dist/types/polyfill/RTCIceCandidate.d.ts +21 -0
- package/dist/types/polyfill/RTCIceTransport.d.ts +30 -0
- package/dist/types/polyfill/RTCPeerConnection.d.ts +64 -0
- package/dist/types/polyfill/RTCSctpTransport.d.ts +15 -0
- package/dist/types/polyfill/RTCSessionDescription.d.ts +10 -0
- package/dist/types/polyfill/index.d.ts +26 -0
- package/jest.config.ts +14 -0
- package/package.json +121 -0
- package/rollup.config.mjs +72 -0
- package/src/cpp/data-channel-wrapper.cpp +530 -0
- package/src/cpp/data-channel-wrapper.h +63 -0
- package/src/cpp/ice-udp-mux-listener-wrapper.cpp +157 -0
- package/src/cpp/ice-udp-mux-listener-wrapper.h +43 -0
- package/src/cpp/main.cpp +58 -0
- package/src/cpp/media-audio-wrapper.cpp +457 -0
- package/src/cpp/media-audio-wrapper.h +52 -0
- package/src/cpp/media-av1packetization.cpp +24 -0
- package/src/cpp/media-av1packetization.h +11 -0
- package/src/cpp/media-av1rtppacketizer-wrapper.cpp +126 -0
- package/src/cpp/media-av1rtppacketizer-wrapper.h +29 -0
- package/src/cpp/media-direction.cpp +43 -0
- package/src/cpp/media-direction.h +10 -0
- package/src/cpp/media-h264rtppacketizer-wrapper.cpp +126 -0
- package/src/cpp/media-h264rtppacketizer-wrapper.h +30 -0
- package/src/cpp/media-h265rtppacketizer-wrapper.cpp +126 -0
- package/src/cpp/media-h265rtppacketizer-wrapper.h +30 -0
- package/src/cpp/media-h26xseparator.cpp +32 -0
- package/src/cpp/media-h26xseparator.h +11 -0
- package/src/cpp/media-mediahandler-helper.cpp +31 -0
- package/src/cpp/media-mediahandler-helper.h +11 -0
- package/src/cpp/media-pacinghandler-wrapper.cpp +79 -0
- package/src/cpp/media-pacinghandler-wrapper.h +28 -0
- package/src/cpp/media-rtcpnackresponder-wrapper.cpp +68 -0
- package/src/cpp/media-rtcpnackresponder-wrapper.h +28 -0
- package/src/cpp/media-rtcpreceivingsession-wrapper.cpp +57 -0
- package/src/cpp/media-rtcpreceivingsession-wrapper.h +28 -0
- package/src/cpp/media-rtcpsrreporter-wrapper.cpp +93 -0
- package/src/cpp/media-rtcpsrreporter-wrapper.h +30 -0
- package/src/cpp/media-rtppacketizationconfig-wrapper.cpp +167 -0
- package/src/cpp/media-rtppacketizationconfig-wrapper.h +35 -0
- package/src/cpp/media-rtppacketizer-wrapper.cpp +95 -0
- package/src/cpp/media-rtppacketizer-wrapper.h +30 -0
- package/src/cpp/media-track-wrapper.cpp +458 -0
- package/src/cpp/media-track-wrapper.h +61 -0
- package/src/cpp/media-video-wrapper.cpp +526 -0
- package/src/cpp/media-video-wrapper.h +56 -0
- package/src/cpp/peer-connection-wrapper.cpp +1298 -0
- package/src/cpp/peer-connection-wrapper.h +89 -0
- package/src/cpp/rtc-wrapper.cpp +205 -0
- package/src/cpp/rtc-wrapper.h +24 -0
- package/src/cpp/thread-safe-callback.cpp +57 -0
- package/src/cpp/thread-safe-callback.h +47 -0
- package/src/cpp/web-socket-server-wrapper.cpp +275 -0
- package/src/cpp/web-socket-server-wrapper.h +41 -0
- package/src/cpp/web-socket-wrapper.cpp +796 -0
- package/src/cpp/web-socket-wrapper.h +63 -0
- package/src/index.ts +9 -0
- package/src/lib/datachannel-stream.ts +100 -0
- package/src/lib/index.ts +283 -0
- package/src/lib/node-datachannel.ts +3 -0
- package/src/lib/types.ts +168 -0
- package/src/lib/websocket-server.ts +37 -0
- package/src/lib/websocket.ts +26 -0
- package/src/polyfill/Events.ts +82 -0
- package/src/polyfill/Exception.ts +37 -0
- package/src/polyfill/README.md +41 -0
- package/src/polyfill/RTCCertificate.ts +21 -0
- package/src/polyfill/RTCDataChannel.ts +225 -0
- package/src/polyfill/RTCDtlsTransport.ts +46 -0
- package/src/polyfill/RTCError.ts +78 -0
- package/src/polyfill/RTCIceCandidate.ts +128 -0
- package/src/polyfill/RTCIceTransport.ts +90 -0
- package/src/polyfill/RTCPeerConnection.ts +527 -0
- package/src/polyfill/RTCSctpTransport.ts +51 -0
- package/src/polyfill/RTCSessionDescription.ts +41 -0
- package/src/polyfill/index.ts +38 -0
- package/tsconfig.json +21 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var RTCCertificate = require('./RTCCertificate.cjs');
|
|
6
|
+
var RTCDataChannel = require('./RTCDataChannel.cjs');
|
|
7
|
+
var RTCDtlsTransport = require('./RTCDtlsTransport.cjs');
|
|
8
|
+
var RTCIceCandidate = require('./RTCIceCandidate.cjs');
|
|
9
|
+
var RTCIceTransport = require('./RTCIceTransport.cjs');
|
|
10
|
+
var RTCPeerConnection = require('./RTCPeerConnection.cjs');
|
|
11
|
+
var RTCSctpTransport = require('./RTCSctpTransport.cjs');
|
|
12
|
+
var RTCSessionDescription = require('./RTCSessionDescription.cjs');
|
|
13
|
+
var Events = require('./Events.cjs');
|
|
14
|
+
var RTCError = require('./RTCError.cjs');
|
|
15
|
+
|
|
16
|
+
var p = {
|
|
17
|
+
RTCCertificate: RTCCertificate.default,
|
|
18
|
+
RTCDataChannel: RTCDataChannel.default,
|
|
19
|
+
RTCDtlsTransport: RTCDtlsTransport.default,
|
|
20
|
+
RTCIceCandidate: RTCIceCandidate.default,
|
|
21
|
+
RTCIceTransport: RTCIceTransport.default,
|
|
22
|
+
RTCPeerConnection: RTCPeerConnection.default,
|
|
23
|
+
RTCSctpTransport: RTCSctpTransport.default,
|
|
24
|
+
RTCSessionDescription: RTCSessionDescription.default,
|
|
25
|
+
RTCDataChannelEvent: Events.RTCDataChannelEvent,
|
|
26
|
+
RTCPeerConnectionIceEvent: Events.RTCPeerConnectionIceEvent,
|
|
27
|
+
RTCError: RTCError.default
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
exports.RTCCertificate = RTCCertificate.default;
|
|
31
|
+
exports.RTCDataChannel = RTCDataChannel.default;
|
|
32
|
+
exports.RTCDtlsTransport = RTCDtlsTransport.default;
|
|
33
|
+
exports.RTCIceCandidate = RTCIceCandidate.default;
|
|
34
|
+
exports.RTCIceTransport = RTCIceTransport.default;
|
|
35
|
+
exports.RTCPeerConnection = RTCPeerConnection.default;
|
|
36
|
+
exports.RTCSctpTransport = RTCSctpTransport.default;
|
|
37
|
+
exports.RTCSessionDescription = RTCSessionDescription.default;
|
|
38
|
+
exports.RTCDataChannelEvent = Events.RTCDataChannelEvent;
|
|
39
|
+
exports.RTCPeerConnectionIceEvent = Events.RTCPeerConnectionIceEvent;
|
|
40
|
+
exports.RTCError = RTCError.default;
|
|
41
|
+
exports.default = p;
|
|
42
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/polyfill/index.ts"],"sourcesContent":["import RTCCertificate from './RTCCertificate';\nimport RTCDataChannel from './RTCDataChannel';\nimport RTCDtlsTransport from './RTCDtlsTransport';\nimport RTCIceCandidate from './RTCIceCandidate';\nimport RTCIceTransport from './RTCIceTransport';\nimport RTCPeerConnection from './RTCPeerConnection';\nimport RTCSctpTransport from './RTCSctpTransport';\nimport RTCSessionDescription from './RTCSessionDescription';\nimport { RTCDataChannelEvent, RTCPeerConnectionIceEvent } from './Events';\nimport RTCError from './RTCError';\n\nexport {\n RTCCertificate,\n RTCDataChannel,\n RTCDtlsTransport,\n RTCIceCandidate,\n RTCIceTransport,\n RTCPeerConnection,\n RTCSctpTransport,\n RTCSessionDescription,\n RTCDataChannelEvent,\n RTCPeerConnectionIceEvent,\n RTCError,\n};\n\nexport default {\n RTCCertificate,\n RTCDataChannel,\n RTCDtlsTransport,\n RTCIceCandidate,\n RTCIceTransport,\n RTCPeerConnection,\n RTCSctpTransport,\n RTCSessionDescription,\n RTCDataChannelEvent,\n RTCPeerConnectionIceEvent,\n RTCError,\n};\n"],"names":["RTCCertificate","RTCDataChannel","RTCDtlsTransport","RTCIceCandidate","RTCIceTransport","RTCPeerConnection","RTCSctpTransport","RTCSessionDescription","RTCDataChannelEvent","RTCPeerConnectionIceEvent","RTCError"],"mappings":";;;;;;;;;;;;;;;AAyBA,QAAe;AAAA,kBACbA,sBAAA;AAAA,kBACAC,sBAAA;AAAA,oBACAC,wBAAA;AAAA,mBACAC,uBAAA;AAAA,mBACAC,uBAAA;AAAA,qBACAC,yBAAA;AAAA,oBACAC,wBAAA;AAAA,yBACAC,6BAAA;AAAA,uBACAC,0BAAA;AAAA,6BACAC,gCAAA;AAAA,YACAC,gBAAA;AACF,CAAA;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","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":[],"mappings":";;;AAOO,MAAM,eAAkB,GAAA,EAAA;AACxB,MAAM,QAAW,GAAA;;;;"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import * as stream from 'stream';
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
5
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
6
|
+
class DataChannelStream extends stream.Duplex {
|
|
7
|
+
constructor(rawChannel, streamOptions) {
|
|
8
|
+
super({
|
|
9
|
+
allowHalfOpen: false,
|
|
10
|
+
// Default to autoclose on end().
|
|
11
|
+
...streamOptions,
|
|
12
|
+
objectMode: true
|
|
13
|
+
// Preserve the string/buffer distinction (WebRTC treats them differently)
|
|
14
|
+
});
|
|
15
|
+
__publicField(this, "_rawChannel");
|
|
16
|
+
__publicField(this, "_readActive");
|
|
17
|
+
this._rawChannel = rawChannel;
|
|
18
|
+
this._readActive = true;
|
|
19
|
+
rawChannel.onMessage((msg) => {
|
|
20
|
+
if (!this._readActive) return;
|
|
21
|
+
this._readActive = this.push(msg);
|
|
22
|
+
});
|
|
23
|
+
rawChannel.onClosed(() => {
|
|
24
|
+
this.push(null);
|
|
25
|
+
this.destroy();
|
|
26
|
+
});
|
|
27
|
+
rawChannel.onError((errMsg) => {
|
|
28
|
+
this.destroy(new Error(`DataChannel error: ${errMsg}`));
|
|
29
|
+
});
|
|
30
|
+
if (!rawChannel.isOpen()) {
|
|
31
|
+
this.cork();
|
|
32
|
+
rawChannel.onOpen(() => this.uncork());
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
_read() {
|
|
36
|
+
this._readActive = true;
|
|
37
|
+
}
|
|
38
|
+
_write(chunk, _encoding, callback) {
|
|
39
|
+
let sentOk;
|
|
40
|
+
try {
|
|
41
|
+
if (Buffer.isBuffer(chunk)) {
|
|
42
|
+
sentOk = this._rawChannel.sendMessageBinary(chunk);
|
|
43
|
+
} else if (typeof chunk === "string") {
|
|
44
|
+
sentOk = this._rawChannel.sendMessage(chunk);
|
|
45
|
+
} else {
|
|
46
|
+
const typeName = chunk.constructor.name || typeof chunk;
|
|
47
|
+
throw new Error(`Cannot write ${typeName} to DataChannel stream`);
|
|
48
|
+
}
|
|
49
|
+
} catch (err) {
|
|
50
|
+
return callback(err);
|
|
51
|
+
}
|
|
52
|
+
if (sentOk) {
|
|
53
|
+
callback(null);
|
|
54
|
+
} else {
|
|
55
|
+
callback(new Error("Failed to write to DataChannel"));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
_final(callback) {
|
|
59
|
+
if (!this.allowHalfOpen) this.destroy();
|
|
60
|
+
callback(null);
|
|
61
|
+
}
|
|
62
|
+
_destroy(maybeErr, callback) {
|
|
63
|
+
this._rawChannel.close();
|
|
64
|
+
callback(maybeErr);
|
|
65
|
+
}
|
|
66
|
+
get label() {
|
|
67
|
+
return this._rawChannel.getLabel();
|
|
68
|
+
}
|
|
69
|
+
get id() {
|
|
70
|
+
return this._rawChannel.getId();
|
|
71
|
+
}
|
|
72
|
+
get protocol() {
|
|
73
|
+
return this._rawChannel.getProtocol();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export { DataChannelStream as default };
|
|
78
|
+
//# sourceMappingURL=datachannel-stream.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datachannel-stream.mjs","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":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import nodeDataChannel from './node-datachannel.mjs';
|
|
2
|
+
import DataChannelStream$1 from './datachannel-stream.mjs';
|
|
3
|
+
import { WebSocketServer } from './websocket-server.mjs';
|
|
4
|
+
import { WebSocket } from './websocket.mjs';
|
|
5
|
+
|
|
6
|
+
function preload() {
|
|
7
|
+
nodeDataChannel.preload();
|
|
8
|
+
}
|
|
9
|
+
function initLogger(level) {
|
|
10
|
+
nodeDataChannel.initLogger(level);
|
|
11
|
+
}
|
|
12
|
+
function cleanup() {
|
|
13
|
+
nodeDataChannel.cleanup();
|
|
14
|
+
}
|
|
15
|
+
function setSctpSettings(settings) {
|
|
16
|
+
nodeDataChannel.setSctpSettings(settings);
|
|
17
|
+
}
|
|
18
|
+
function getLibraryVersion() {
|
|
19
|
+
return nodeDataChannel.getLibraryVersion();
|
|
20
|
+
}
|
|
21
|
+
const Audio = nodeDataChannel.Audio;
|
|
22
|
+
const Video = nodeDataChannel.Video;
|
|
23
|
+
const Track = nodeDataChannel.Track;
|
|
24
|
+
const DataChannel = nodeDataChannel.DataChannel;
|
|
25
|
+
const PeerConnection = nodeDataChannel.PeerConnection;
|
|
26
|
+
const IceUdpMuxListener = nodeDataChannel.IceUdpMuxListener;
|
|
27
|
+
const RtpPacketizationConfig = nodeDataChannel.RtpPacketizationConfig;
|
|
28
|
+
const RtcpReceivingSession = nodeDataChannel.RtcpReceivingSession;
|
|
29
|
+
const RtcpNackResponder = nodeDataChannel.RtcpNackResponder;
|
|
30
|
+
const RtcpSrReporter = nodeDataChannel.RtcpSrReporter;
|
|
31
|
+
const RtpPacketizer = nodeDataChannel.RtpPacketizer;
|
|
32
|
+
const H264RtpPacketizer = nodeDataChannel.H264RtpPacketizer;
|
|
33
|
+
const H265RtpPacketizer = nodeDataChannel.H265RtpPacketizer;
|
|
34
|
+
const AV1RtpPacketizer = nodeDataChannel.AV1RtpPacketizer;
|
|
35
|
+
const DataChannelStream = DataChannelStream$1;
|
|
36
|
+
var n = {
|
|
37
|
+
initLogger,
|
|
38
|
+
cleanup,
|
|
39
|
+
preload,
|
|
40
|
+
setSctpSettings,
|
|
41
|
+
getLibraryVersion,
|
|
42
|
+
RtcpReceivingSession,
|
|
43
|
+
RtcpNackResponder,
|
|
44
|
+
RtcpSrReporter,
|
|
45
|
+
RtpPacketizationConfig,
|
|
46
|
+
RtpPacketizer,
|
|
47
|
+
H264RtpPacketizer,
|
|
48
|
+
H265RtpPacketizer,
|
|
49
|
+
AV1RtpPacketizer,
|
|
50
|
+
Track,
|
|
51
|
+
Video,
|
|
52
|
+
Audio,
|
|
53
|
+
DataChannel,
|
|
54
|
+
PeerConnection,
|
|
55
|
+
WebSocket,
|
|
56
|
+
WebSocketServer,
|
|
57
|
+
DataChannelStream,
|
|
58
|
+
IceUdpMuxListener
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export { AV1RtpPacketizer, Audio, DataChannel, DataChannelStream, H264RtpPacketizer, H265RtpPacketizer, IceUdpMuxListener, PeerConnection, RtcpNackResponder, RtcpReceivingSession, RtcpSrReporter, RtpPacketizationConfig, RtpPacketizer, Track, Video, WebSocket, WebSocketServer, cleanup, n as default, getLibraryVersion, initLogger, preload, setSctpSettings };
|
|
62
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","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 NalUnitSeparator,\n ObuPacketization,\n RtcConfig,\n RTCIceConnectionState,\n RTCIceGatheringState,\n RTCPeerConnectionState,\n RTCSignalingState,\n SctpSettings,\n SelectedCandidateInfo,\n} from './types';\nimport { WebSocket } from './websocket';\nimport type { CertificateFingerprint, IceUdpMuxRequest, LocalDescriptionInit } from './types';\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 addH265Codec(payloadType: number): void;\n addVP8Codec(payloadType: number): void;\n addVP9Codec(payloadType: number): void;\n addAV1Codec(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: MediaHandler): 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, init?: LocalDescriptionInit): void;\n setRemoteDescription(sdp: string, type: DescriptionType): void;\n localDescription(): { type: DescriptionType; sdp: string } | null;\n remoteDescription(): { type: DescriptionType; sdp: string } | null;\n remoteFingerprint(): CertificateFingerprint;\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 IceUdpMuxListener {\n address?: string;\n port: number;\n stop(): void;\n onUnhandledStunRequest(cb: (req: IceUdpMuxRequest) => void): void;\n}\nexport const IceUdpMuxListener: {\n new (port: number, address?: string): IceUdpMuxListener;\n} = nodeDataChannel.IceUdpMuxListener;\n\nexport interface RtpPacketizationConfig {\n playoutDelayId: number,\n playoutDelayMin: number,\n playoutDelayMax: number,\n timestamp: number,\n get clockRate(): number\n}\n\nexport const RtpPacketizationConfig: {\n new(ssrc: number, cname: string, payloadType: number, clockRate: number, videoOrientationId?: number): RtpPacketizationConfig\n} = nodeDataChannel.RtpPacketizationConfig\n\nexport interface MediaHandler {\n addToChain(handler: MediaHandler): void\n}\n\nexport interface RtcpReceivingSession extends MediaHandler {}\n\nexport const RtcpReceivingSession: {\n new (): RtcpReceivingSession;\n} = nodeDataChannel.RtcpReceivingSession;\n\nexport interface RtcpNackResponder extends MediaHandler {}\n\nexport const RtcpNackResponder: {\n new (maxSize?: number): RtcpNackResponder\n} = nodeDataChannel.RtcpNackResponder;\n\nexport interface RtcpSrReporter extends MediaHandler {\n get rtpConfig(): RtpPacketizationConfig\n}\n\nexport const RtcpSrReporter: {\n new (rtpConfig: RtpPacketizationConfig): RtcpSrReporter\n} = nodeDataChannel.RtcpSrReporter;\n\nexport interface RtpPacketizer extends MediaHandler {\n get rtpConfig(): RtpPacketizationConfig\n}\n\nexport const RtpPacketizer: {\n new (rtpConfig: RtpPacketizationConfig): RtpPacketizer\n} = nodeDataChannel.RtpPacketizer;\n\nexport interface H264RtpPacketizer extends RtpPacketizer {}\n\nexport const H264RtpPacketizer: {\n new (separator: NalUnitSeparator, rtpConfig: RtpPacketizationConfig, maxFragmentSize?: number): H264RtpPacketizer\n} = nodeDataChannel.H264RtpPacketizer\n\nexport interface H265RtpPacketizer extends RtpPacketizer {}\n\nexport const H265RtpPacketizer: {\n new (separator: NalUnitSeparator, rtpConfig: RtpPacketizationConfig, maxFragmentSize?: number): H265RtpPacketizer\n} = nodeDataChannel.H265RtpPacketizer\n\nexport interface AV1RtpPacketizer extends RtpPacketizer {}\n\nexport const AV1RtpPacketizer: {\n new (packetization: ObuPacketization, rtpConfig: RtpPacketizationConfig, maxFragmentSize?: number): AV1RtpPacketizer\n} = nodeDataChannel.AV1RtpPacketizer\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 RtcpNackResponder,\n RtcpSrReporter,\n RtpPacketizationConfig,\n RtpPacketizer,\n H264RtpPacketizer,\n H265RtpPacketizer,\n AV1RtpPacketizer,\n Track,\n Video,\n Audio,\n DataChannel,\n PeerConnection,\n WebSocket,\n WebSocketServer,\n DataChannelStream,\n IceUdpMuxListener,\n};\n\n// Types\n// https://github.com/murat-dogan/node-datachannel/issues/300\nexport * from './types';\n"],"names":["_DataChannelStream"],"mappings":";;;;;AAsBO,SAAS,OAAgB,GAAA;AAC9B,EAAA,eAAA,CAAgB,OAAQ,EAAA,CAAA;AAC1B,CAAA;AACO,SAAS,WAAW,KAAuB,EAAA;AAChD,EAAA,eAAA,CAAgB,WAAW,KAAK,CAAA,CAAA;AAClC,CAAA;AACO,SAAS,OAAgB,GAAA;AAC9B,EAAA,eAAA,CAAgB,OAAQ,EAAA,CAAA;AAC1B,CAAA;AACO,SAAS,gBAAgB,QAA8B,EAAA;AAC5D,EAAA,eAAA,CAAgB,gBAAgB,QAAQ,CAAA,CAAA;AAC1C,CAAA;AACO,SAAS,iBAA4B,GAAA;AAC1C,EAAA,OAAO,gBAAgB,iBAAkB,EAAA,CAAA;AAC3C,CAAA;AAwBO,MAAM,QAET,eAAgB,CAAA,MAAA;AA4Bb,MAAM,QAET,eAAgB,CAAA,MAAA;AAsBb,MAAM,QAET,eAAgB,CAAA,MAAA;AAqBb,MAAM,cAET,eAAgB,CAAA,YAAA;AAmCb,MAAM,iBAET,eAAgB,CAAA,eAAA;AAQb,MAAM,oBAET,eAAgB,CAAA,kBAAA;AAUb,MAAM,yBAET,eAAgB,CAAA,uBAAA;AAQb,MAAM,uBAET,eAAgB,CAAA,qBAAA;AAIb,MAAM,oBAET,eAAgB,CAAA,kBAAA;AAMb,MAAM,iBAET,eAAgB,CAAA,eAAA;AAMb,MAAM,gBAET,eAAgB,CAAA,cAAA;AAIb,MAAM,oBAET,eAAgB,CAAA,kBAAA;AAIb,MAAM,oBAET,eAAgB,CAAA,kBAAA;AAIb,MAAM,mBAET,eAAgB,CAAA,iBAAA;AAKb,MAAM,iBAAoB,GAAAA,oBAAA;AAEjC,QAAe;AAAA,EACb,UAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,sBAAA;AAAA,EACA,aAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AACF,CAAA;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
// -- Shims --
|
|
3
|
+
import cjsUrl from 'node:url';
|
|
4
|
+
import cjsPath from 'node:path';
|
|
5
|
+
import cjsModule from 'node:module';
|
|
6
|
+
const __filename = cjsUrl.fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = cjsPath.dirname(__filename);
|
|
8
|
+
const require = cjsModule.createRequire(import.meta.url);
|
|
9
|
+
const nodeDataChannel = require("../../../build/Release/node_datachannel.node");
|
|
10
|
+
|
|
11
|
+
export { nodeDataChannel as default };
|
|
12
|
+
//# sourceMappingURL=node-datachannel.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-datachannel.mjs","sources":["../../../src/lib/node-datachannel.ts"],"sourcesContent":["// @ts-expect-error no types\nimport nodeDataChannel = require('../../build/Release/node_datachannel.node');\nexport default nodeDataChannel;\n"],"names":[],"mappings":";;;;;;;;AACA;;"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import nodeDataChannel from './node-datachannel.mjs';
|
|
3
|
+
|
|
4
|
+
var __typeError = (msg) => {
|
|
5
|
+
throw TypeError(msg);
|
|
6
|
+
};
|
|
7
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
8
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
9
|
+
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);
|
|
10
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
11
|
+
var _server, _clients;
|
|
12
|
+
class WebSocketServer extends EventEmitter {
|
|
13
|
+
constructor(options) {
|
|
14
|
+
super();
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
|
+
__privateAdd(this, _server);
|
|
17
|
+
__privateAdd(this, _clients, []);
|
|
18
|
+
__privateSet(this, _server, new nodeDataChannel.WebSocketServer(options));
|
|
19
|
+
__privateGet(this, _server).onClient((client) => {
|
|
20
|
+
this.emit("client", client);
|
|
21
|
+
__privateGet(this, _clients).push(client);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
port() {
|
|
25
|
+
return __privateGet(this, _server)?.port() || 0;
|
|
26
|
+
}
|
|
27
|
+
stop() {
|
|
28
|
+
__privateGet(this, _clients).forEach((client) => {
|
|
29
|
+
client?.close();
|
|
30
|
+
});
|
|
31
|
+
__privateGet(this, _server)?.stop();
|
|
32
|
+
__privateSet(this, _server, null);
|
|
33
|
+
this.removeAllListeners();
|
|
34
|
+
}
|
|
35
|
+
onClient(cb) {
|
|
36
|
+
if (__privateGet(this, _server)) this.on("client", cb);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
_server = new WeakMap();
|
|
40
|
+
_clients = new WeakMap();
|
|
41
|
+
|
|
42
|
+
export { WebSocketServer };
|
|
43
|
+
//# sourceMappingURL=websocket-server.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-server.mjs","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":[],"mappings":";;;;;;;;;;AAAA,IAAA,OAAA,EAAA,QAAA,CAAA;AAKO,MAAM,wBAAwB,YAAa,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,IAAI,eAAgB,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;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.mjs","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":[],"mappings":";;AAuBO,MAAM,YAET,eAAgB,CAAA;;;;"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import RTCDataChannel from './RTCDataChannel.mjs';
|
|
2
|
+
import RTCError from './RTCError.mjs';
|
|
3
|
+
|
|
4
|
+
var __typeError = (msg) => {
|
|
5
|
+
throw TypeError(msg);
|
|
6
|
+
};
|
|
7
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
8
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
9
|
+
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);
|
|
10
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
11
|
+
var _candidate, _channel, _error;
|
|
12
|
+
class RTCPeerConnectionIceEvent extends Event {
|
|
13
|
+
constructor(candidate) {
|
|
14
|
+
super("icecandidate");
|
|
15
|
+
__privateAdd(this, _candidate);
|
|
16
|
+
__privateSet(this, _candidate, candidate);
|
|
17
|
+
}
|
|
18
|
+
get candidate() {
|
|
19
|
+
return __privateGet(this, _candidate);
|
|
20
|
+
}
|
|
21
|
+
get url() {
|
|
22
|
+
return "";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
_candidate = new WeakMap();
|
|
26
|
+
class RTCDataChannelEvent extends Event {
|
|
27
|
+
constructor(type = "datachannel", eventInitDict) {
|
|
28
|
+
super(type);
|
|
29
|
+
__privateAdd(this, _channel);
|
|
30
|
+
if (arguments.length === 0)
|
|
31
|
+
throw new TypeError(
|
|
32
|
+
`Failed to construct 'RTCDataChannelEvent': 2 arguments required, but only ${arguments.length} present.`
|
|
33
|
+
);
|
|
34
|
+
if (typeof eventInitDict !== "object")
|
|
35
|
+
throw new TypeError(
|
|
36
|
+
"Failed to construct 'RTCDataChannelEvent': The provided value is not of type 'RTCDataChannelEventInit'."
|
|
37
|
+
);
|
|
38
|
+
if (!eventInitDict.channel)
|
|
39
|
+
throw new TypeError(
|
|
40
|
+
"Failed to construct 'RTCDataChannelEvent': Failed to read the 'channel' property from 'RTCDataChannelEventInit': Required member is undefined."
|
|
41
|
+
);
|
|
42
|
+
if (eventInitDict.channel.constructor !== RTCDataChannel)
|
|
43
|
+
throw new TypeError(
|
|
44
|
+
"Failed to construct 'RTCDataChannelEvent': Failed to read the 'channel' property from 'RTCDataChannelEventInit': Failed to convert value to 'RTCDataChannel'."
|
|
45
|
+
);
|
|
46
|
+
__privateSet(this, _channel, eventInitDict?.channel);
|
|
47
|
+
}
|
|
48
|
+
get channel() {
|
|
49
|
+
return __privateGet(this, _channel);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
_channel = new WeakMap();
|
|
53
|
+
class RTCErrorEvent extends Event {
|
|
54
|
+
constructor(type, init) {
|
|
55
|
+
if (arguments.length < 2)
|
|
56
|
+
throw new TypeError(
|
|
57
|
+
`Failed to construct 'RTCErrorEvent': 2 arguments required, but only ${arguments.length} present.`
|
|
58
|
+
);
|
|
59
|
+
if (typeof init !== "object")
|
|
60
|
+
throw new TypeError(
|
|
61
|
+
"Failed to construct 'RTCErrorEvent': The provided value is not of type 'RTCErrorEventInit'."
|
|
62
|
+
);
|
|
63
|
+
if (!init.error)
|
|
64
|
+
throw new TypeError(
|
|
65
|
+
"Failed to construct 'RTCErrorEvent': Failed to read the 'error' property from 'RTCErrorEventInit': Required member is undefined."
|
|
66
|
+
);
|
|
67
|
+
if (init.error.constructor !== RTCError)
|
|
68
|
+
throw new TypeError(
|
|
69
|
+
"Failed to construct 'RTCErrorEvent': Failed to read the 'error' property from 'RTCErrorEventInit': Failed to convert value to 'RTCError'."
|
|
70
|
+
);
|
|
71
|
+
super(type || "error");
|
|
72
|
+
__privateAdd(this, _error);
|
|
73
|
+
__privateSet(this, _error, init.error);
|
|
74
|
+
}
|
|
75
|
+
get error() {
|
|
76
|
+
return __privateGet(this, _error);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
_error = new WeakMap();
|
|
80
|
+
|
|
81
|
+
export { RTCDataChannelEvent, RTCErrorEvent, RTCPeerConnectionIceEvent };
|
|
82
|
+
//# sourceMappingURL=Events.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Events.mjs","sources":["../../../src/polyfill/Events.ts"],"sourcesContent":["import RTCDataChannel from './RTCDataChannel';\nimport RTCError from './RTCError';\n\nexport class RTCPeerConnectionIceEvent\n extends Event\n implements globalThis.RTCPeerConnectionIceEvent\n{\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":[],"mappings":";;;;;;;;;;AAAA,IAAA,UAAA,EAAA,QAAA,EAAA,MAAA,CAAA;AAGO,MAAM,kCACH,KAEV,CAAA;AAAA,EAGE,YAAY,SAAuC,EAAA;AACjD,IAAA,KAAA,CAAM,cAAc,CAAA,CAAA;AAHtB,IAAA,YAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAKE,IAAA,YAAA,CAAA,IAAA,EAAK,UAAa,EAAA,SAAA,CAAA,CAAA;AAAA,GACpB;AAAA,EAEA,IAAI,SAAwC,GAAA;AAC1C,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAAA,GACd;AAAA,EAEA,IAAI,GAAc,GAAA;AAChB,IAAO,OAAA,EAAA,CAAA;AAAA,GACT;AACF,CAAA;AAfE,UAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAiBK,MAAM,4BAA4B,KAAgD,CAAA;AAAA,EAGvF,WAAA,CAAY,IAAe,GAAA,aAAA,EAAe,aAAmD,EAAA;AAC3F,IAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAHZ,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAKE,IAAA,IAAI,UAAU,MAAW,KAAA,CAAA;AACvB,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,CAAA,0EAAA,EAA6E,UAAU,MAAM,CAAA,SAAA,CAAA;AAAA,OAC/F,CAAA;AACF,IAAA,IAAI,OAAO,aAAkB,KAAA,QAAA;AAC3B,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,yGAAA;AAAA,OACF,CAAA;AACF,IAAA,IAAI,CAAC,aAAc,CAAA,OAAA;AACjB,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,gJAAA;AAAA,OACF,CAAA;AACF,IAAI,IAAA,aAAA,CAAc,QAAQ,WAAgB,KAAA,cAAA;AACxC,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,+JAAA;AAAA,OACF,CAAA;AAEF,IAAA,YAAA,CAAA,IAAA,EAAK,UAAW,aAAe,EAAA,OAAA,CAAA,CAAA;AAAA,GACjC;AAAA,EAEA,IAAI,OAA0B,GAAA;AAC5B,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAAA,GACd;AACF,CAAA;AA5BE,QAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AA8BK,MAAM,sBAAsB,KAA0C,CAAA;AAAA,EAE3E,WAAA,CAAY,MAAc,IAAoC,EAAA;AAC5D,IAAA,IAAI,UAAU,MAAS,GAAA,CAAA;AACrB,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,CAAA,oEAAA,EAAuE,UAAU,MAAM,CAAA,SAAA,CAAA;AAAA,OACzF,CAAA;AACF,IAAA,IAAI,OAAO,IAAS,KAAA,QAAA;AAClB,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,6FAAA;AAAA,OACF,CAAA;AACF,IAAA,IAAI,CAAC,IAAK,CAAA,KAAA;AACR,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,kIAAA;AAAA,OACF,CAAA;AACF,IAAI,IAAA,IAAA,CAAK,MAAM,WAAgB,KAAA,QAAA;AAC7B,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,2IAAA;AAAA,OACF,CAAA;AACF,IAAA,KAAA,CAAM,QAAQ,OAAO,CAAA,CAAA;AAlBvB,IAAA,YAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA;AAmBE,IAAA,YAAA,CAAA,IAAA,EAAK,QAAS,IAAK,CAAA,KAAA,CAAA,CAAA;AAAA,GACrB;AAAA,EAEA,IAAI,KAAkB,GAAA;AACpB,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA;AAAA,GACd;AACF,CAAA;AAzBE,MAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
class InvalidStateError extends DOMException {
|
|
2
|
+
constructor(msg) {
|
|
3
|
+
super(msg, "InvalidStateError");
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
class OperationError extends DOMException {
|
|
7
|
+
constructor(msg) {
|
|
8
|
+
super(msg, "OperationError");
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
class NotFoundError extends DOMException {
|
|
12
|
+
constructor(msg) {
|
|
13
|
+
super(msg, "NotFoundError");
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
class InvalidAccessError extends DOMException {
|
|
17
|
+
constructor(msg) {
|
|
18
|
+
super(msg, "InvalidAccessError");
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
class SyntaxError extends DOMException {
|
|
22
|
+
constructor(msg) {
|
|
23
|
+
super(msg, "SyntaxError");
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { InvalidAccessError, InvalidStateError, NotFoundError, OperationError, SyntaxError };
|
|
28
|
+
//# sourceMappingURL=Exception.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Exception.mjs","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;;;;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
var __typeError = (msg) => {
|
|
2
|
+
throw TypeError(msg);
|
|
3
|
+
};
|
|
4
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
5
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
6
|
+
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);
|
|
7
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
8
|
+
var _expires, _fingerprints;
|
|
9
|
+
class RTCCertificate {
|
|
10
|
+
constructor() {
|
|
11
|
+
__privateAdd(this, _expires, 0);
|
|
12
|
+
__privateAdd(this, _fingerprints, []);
|
|
13
|
+
__privateSet(this, _expires, null);
|
|
14
|
+
__privateSet(this, _fingerprints, []);
|
|
15
|
+
}
|
|
16
|
+
get expires() {
|
|
17
|
+
return __privateGet(this, _expires);
|
|
18
|
+
}
|
|
19
|
+
getFingerprints() {
|
|
20
|
+
return __privateGet(this, _fingerprints);
|
|
21
|
+
}
|
|
22
|
+
getAlgorithm() {
|
|
23
|
+
return "";
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
_expires = new WeakMap();
|
|
27
|
+
_fingerprints = new WeakMap();
|
|
28
|
+
|
|
29
|
+
export { RTCCertificate as default };
|
|
30
|
+
//# sourceMappingURL=RTCCertificate.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RTCCertificate.mjs","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;;;;"}
|