@lng2004/node-datachannel 0.32.0-20260202 → 0.32.3-20260815
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/CMakeLists.txt +29 -7
- package/README.md +12 -0
- package/binding-options.js +7 -0
- package/cmake/toolchain/ci.cmake +23 -0
- package/dist/cjs/lib/index.cjs +4 -2
- package/dist/cjs/lib/index.cjs.map +1 -1
- package/dist/cjs/lib/node-datachannel.cjs +4 -1
- package/dist/cjs/lib/node-datachannel.cjs.map +1 -1
- package/dist/esm/lib/index.mjs +4 -2
- package/dist/esm/lib/index.mjs.map +1 -1
- package/dist/esm/lib/node-datachannel.mjs +4 -1
- package/dist/esm/lib/node-datachannel.mjs.map +1 -1
- package/dist/types/lib/index.d.ts +17 -3
- package/dist/types/lib/types.d.ts +1 -0
- package/package.json +17 -8
- package/scripts/build-mbedtls.js +28 -0
- package/scripts/build-mbedtls.ps1 +84 -0
- package/scripts/build-mbedtls.sh +50 -0
- package/src/cpp/ice-udp-mux-listener-wrapper.cpp +1 -0
- package/src/cpp/main.cpp +4 -0
- package/src/cpp/media-mediahandler-helper.cpp +6 -0
- package/src/cpp/media-pacinghandler-wrapper.cpp +18 -0
- package/src/cpp/media-pacinghandler-wrapper.h +1 -0
- package/src/cpp/media-vp8rtppacketizer-wrapper.cpp +110 -0
- package/src/cpp/media-vp8rtppacketizer-wrapper.h +30 -0
- package/src/cpp/media-vp9rtppacketizer-wrapper.cpp +110 -0
- package/src/cpp/media-vp9rtppacketizer-wrapper.h +30 -0
- package/.clang-format +0 -17
- package/.editorconfig +0 -12
- package/.eslintignore +0 -8
- package/.eslintrc.json +0 -27
- package/.gitmodules +0 -3
- package/.prettierignore +0 -7
- package/.prettierrc +0 -13
- package/API.md +0 -247
- package/BULDING.md +0 -33
- package/jest.config.ts +0 -14
- package/rollup.config.mjs +0 -72
- package/src/index.ts +0 -9
- package/src/lib/datachannel-stream.ts +0 -100
- package/src/lib/index.ts +0 -290
- package/src/lib/node-datachannel.ts +0 -3
- package/src/lib/types.ts +0 -168
- package/src/lib/websocket-server.ts +0 -37
- package/src/lib/websocket.ts +0 -26
- package/src/polyfill/Events.ts +0 -82
- package/src/polyfill/Exception.ts +0 -37
- package/src/polyfill/README.md +0 -41
- package/src/polyfill/RTCCertificate.ts +0 -21
- package/src/polyfill/RTCDataChannel.ts +0 -225
- package/src/polyfill/RTCDtlsTransport.ts +0 -46
- package/src/polyfill/RTCError.ts +0 -78
- package/src/polyfill/RTCIceCandidate.ts +0 -128
- package/src/polyfill/RTCIceTransport.ts +0 -90
- package/src/polyfill/RTCPeerConnection.ts +0 -527
- package/src/polyfill/RTCSctpTransport.ts +0 -51
- package/src/polyfill/RTCSessionDescription.ts +0 -41
- package/src/polyfill/index.ts +0 -38
- package/tsconfig.json +0 -21
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.32.
|
|
5
|
+
project(node_datachannel VERSION 0.32.3)
|
|
6
6
|
|
|
7
7
|
# compile_commands.json
|
|
8
8
|
# -----------------------------------
|
|
@@ -14,8 +14,7 @@ add_definitions(-DNAPI_VERSION=8)
|
|
|
14
14
|
include_directories(${CMAKE_JS_INC})
|
|
15
15
|
|
|
16
16
|
if(WIN32)
|
|
17
|
-
set(
|
|
18
|
-
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
|
17
|
+
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
|
|
19
18
|
endif()
|
|
20
19
|
|
|
21
20
|
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Android")
|
|
@@ -27,8 +26,30 @@ if (NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
|
|
27
26
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -frtti")
|
|
28
27
|
endif()
|
|
29
28
|
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
option(USE_MBEDTLS "Use Mbed TLS instead of OpenSSL" ON)
|
|
30
|
+
option(USE_GNUTLS "Use GnuTLS instead of OpenSSL" OFF)
|
|
31
|
+
|
|
32
|
+
if(USE_MBEDTLS AND USE_GNUTLS)
|
|
33
|
+
message(FATAL_ERROR "Both USE_MBEDTLS and USE_GNUTLS cannot be enabled at the same time")
|
|
34
|
+
endif()
|
|
35
|
+
|
|
36
|
+
set(NDC_MBEDTLS_INSTALL_DIR "${CMAKE_SOURCE_DIR}/deps/mbedtls/install" CACHE PATH "Path to manually built MbedTLS install prefix")
|
|
37
|
+
|
|
38
|
+
if(DEFINED ENV{NDC_MBEDTLS_INSTALL_DIR} AND NOT "$ENV{NDC_MBEDTLS_INSTALL_DIR}" STREQUAL "")
|
|
39
|
+
set(NDC_MBEDTLS_INSTALL_DIR "$ENV{NDC_MBEDTLS_INSTALL_DIR}" CACHE PATH "Path to manually built MbedTLS install prefix" FORCE)
|
|
40
|
+
endif()
|
|
41
|
+
|
|
42
|
+
if(USE_MBEDTLS)
|
|
43
|
+
if(EXISTS "${NDC_MBEDTLS_INSTALL_DIR}")
|
|
44
|
+
list(PREPEND CMAKE_PREFIX_PATH "${NDC_MBEDTLS_INSTALL_DIR}")
|
|
45
|
+
else()
|
|
46
|
+
message(WARNING "MbedTLS install directory not found at ${NDC_MBEDTLS_INSTALL_DIR}. Run scripts/build-mbedtls.sh or scripts/build-mbedtls.ps1 first.")
|
|
47
|
+
endif()
|
|
48
|
+
endif()
|
|
49
|
+
|
|
50
|
+
# Forward crypto backend selection to libdatachannel.
|
|
51
|
+
set(USE_MBEDTLS ${USE_MBEDTLS} CACHE BOOL "Use Mbed TLS instead of OpenSSL" FORCE)
|
|
52
|
+
set(USE_GNUTLS ${USE_GNUTLS} CACHE BOOL "Use GnuTLS instead of OpenSSL" FORCE)
|
|
32
53
|
|
|
33
54
|
include(FetchContent)
|
|
34
55
|
|
|
@@ -36,7 +57,7 @@ include(FetchContent)
|
|
|
36
57
|
FetchContent_Declare(
|
|
37
58
|
libdatachannel
|
|
38
59
|
GIT_REPOSITORY https://github.com/paullouisageneau/libdatachannel.git
|
|
39
|
-
GIT_TAG
|
|
60
|
+
GIT_TAG a2627fb96c85c75064676ec2b1131d3779c1fc2a
|
|
40
61
|
)
|
|
41
62
|
|
|
42
63
|
option(NO_MEDIA "Disable media transport support in libdatachannel" OFF)
|
|
@@ -69,6 +90,8 @@ if(NOT NO_MEDIA)
|
|
|
69
90
|
src/cpp/media-h26xseparator.cpp
|
|
70
91
|
src/cpp/media-h264rtppacketizer-wrapper.cpp
|
|
71
92
|
src/cpp/media-h265rtppacketizer-wrapper.cpp
|
|
93
|
+
src/cpp/media-vp8rtppacketizer-wrapper.cpp
|
|
94
|
+
src/cpp/media-vp9rtppacketizer-wrapper.cpp
|
|
72
95
|
src/cpp/media-mediahandler-helper.cpp
|
|
73
96
|
src/cpp/media-pacinghandler-wrapper.cpp
|
|
74
97
|
src/cpp/media-rtcpnackresponder-wrapper.cpp
|
|
@@ -122,7 +145,6 @@ elseif(UNIX)
|
|
|
122
145
|
endif()
|
|
123
146
|
|
|
124
147
|
if(WIN32)
|
|
125
|
-
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MT")
|
|
126
148
|
list(APPEND LINK_LIBRARIES crypt32.lib)
|
|
127
149
|
endif()
|
|
128
150
|
|
package/README.md
CHANGED
|
@@ -16,6 +16,18 @@ This project is Node.js bindings for [libdatachannel](https://github.com/paullou
|
|
|
16
16
|
npm install node-datachannel
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
+
On install, the package first checks for a prebuilt binary matching your
|
|
20
|
+
platform/architecture (shipped inside the package under `prebuilds/`). If no
|
|
21
|
+
matching prebuild is found, it falls back to building from source using
|
|
22
|
+
`cmake-js`, which requires the build dependencies listed in
|
|
23
|
+
[BULDING.md](./BULDING.md).
|
|
24
|
+
|
|
25
|
+
To force a build from source, set `npm_config_build_from_source=true`:
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
npm install node-datachannel --build-from-source
|
|
29
|
+
```
|
|
30
|
+
|
|
19
31
|
## Supported Platforms
|
|
20
32
|
|
|
21
33
|
`node-datachannel` targets N-API version 8 and supports Node.js v18.20 and above. It is tested on Linux, Windows and MacOS. For N-API compatibility please check [here](https://nodejs.org/api/n-api.html#n_api_n_api_version_matrix).
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
set(CMAKE_SYSTEM_NAME Linux)
|
|
2
|
+
set(triple $ENV{TRIPLE})
|
|
3
|
+
|
|
4
|
+
# use clang and lld
|
|
5
|
+
set(CMAKE_C_COMPILER $ENV{GCC})
|
|
6
|
+
set(CMAKE_CXX_COMPILER $ENV{GXX})
|
|
7
|
+
if (CMAKE_C_COMPILER MATCHES clang)
|
|
8
|
+
add_link_options("-fuse-ld=lld")
|
|
9
|
+
endif()
|
|
10
|
+
|
|
11
|
+
set(CMAKE_SYSROOT "$ENV{SYSROOT}")
|
|
12
|
+
message(STATUS "Using sysroot: ${CMAKE_SYSROOT}")
|
|
13
|
+
|
|
14
|
+
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
15
|
+
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
16
|
+
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
17
|
+
|
|
18
|
+
set(CMAKE_C_COMPILER_TARGET ${triple})
|
|
19
|
+
set(CMAKE_CXX_COMPILER_TARGET ${triple})
|
|
20
|
+
message(STATUS "Compiling for: ${triple}")
|
|
21
|
+
|
|
22
|
+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} $ENV{COMPILER_FLAGS}")
|
|
23
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} $ENV{COMPILER_FLAGS}")
|
package/dist/cjs/lib/index.cjs
CHANGED
|
@@ -10,8 +10,8 @@ var websocket = require('./websocket.cjs');
|
|
|
10
10
|
function preload() {
|
|
11
11
|
nodeDatachannel.default.preload();
|
|
12
12
|
}
|
|
13
|
-
function initLogger(level) {
|
|
14
|
-
nodeDatachannel.default.initLogger(level);
|
|
13
|
+
function initLogger(level, cb) {
|
|
14
|
+
nodeDatachannel.default.initLogger(level, cb);
|
|
15
15
|
}
|
|
16
16
|
function cleanup() {
|
|
17
17
|
nodeDatachannel.default.cleanup();
|
|
@@ -36,6 +36,8 @@ const RtcpSrReporter = nodeDatachannel.default.RtcpSrReporter;
|
|
|
36
36
|
const RtpPacketizer = nodeDatachannel.default.RtpPacketizer;
|
|
37
37
|
const H264RtpPacketizer = nodeDatachannel.default.H264RtpPacketizer;
|
|
38
38
|
const H265RtpPacketizer = nodeDatachannel.default.H265RtpPacketizer;
|
|
39
|
+
nodeDatachannel.default.VP8RtpPacketizer;
|
|
40
|
+
nodeDatachannel.default.VP9RtpPacketizer;
|
|
39
41
|
const AV1RtpPacketizer = nodeDatachannel.default.AV1RtpPacketizer;
|
|
40
42
|
const DataChannelStream = datachannelStream.default;
|
|
41
43
|
var n = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/lib/index.ts"],"sourcesContent":["import nodeDataChannel from './node-datachannel';\nimport _DataChannelStream from './datachannel-stream';\nimport { WebSocketServer } from './websocket-server';\nimport {\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 PacingHandler extends MediaHandler {}\n\nexport const PacingHandler: {\n new (bitsPerSecond: number, sendInterval: number): PacingHandler;\n} = nodeDataChannel.PacingHandler;\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 PacingHandler,\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":["nodeDataChannel","_DataChannelStream","WebSocket","WebSocketServer"],"mappings":";;;;;;;;;AAsBO,SAAS,OAAgB,GAAA;AAC9B,EAAAA,uBAAA,CAAgB,OAAQ,EAAA,CAAA;AAC1B,CAAA;AACO,SAAS,WAAW,KAAuB,EAAA;AAChD,EAAAA,uBAAA,CAAgB,WAAW,KAAK,CAAA,CAAA;AAClC,CAAA;AACO,SAAS,OAAgB,GAAA;AAC9B,EAAAA,uBAAA,CAAgB,OAAQ,EAAA,CAAA;AAC1B,CAAA;AACO,SAAS,gBAAgB,QAA8B,EAAA;AAC5D,EAAAA,uBAAA,CAAgB,gBAAgB,QAAQ,CAAA,CAAA;AAC1C,CAAA;AACO,SAAS,iBAA4B,GAAA;AAC1C,EAAA,OAAOA,wBAAgB,iBAAkB,EAAA,CAAA;AAC3C,CAAA;AAwBO,MAAM,QAETA,uBAAgB,CAAA,MAAA;AA4Bb,MAAM,QAETA,uBAAgB,CAAA,MAAA;AAsBb,MAAM,QAETA,uBAAgB,CAAA,MAAA;AAqBb,MAAM,cAETA,uBAAgB,CAAA,YAAA;AAmCb,MAAM,iBAETA,uBAAgB,CAAA,eAAA;AAQb,MAAM,oBAETA,uBAAgB,CAAA,kBAAA;AAUb,MAAM,yBAETA,uBAAgB,CAAA,uBAAA;AAQb,MAAM,gBAETA,uBAAgB,CAAA,cAAA;AAIb,MAAM,uBAETA,uBAAgB,CAAA,qBAAA;AAIb,MAAM,oBAETA,uBAAgB,CAAA,kBAAA;AAMb,MAAM,iBAETA,uBAAgB,CAAA,eAAA;AAMb,MAAM,gBAETA,uBAAgB,CAAA,cAAA;AAIb,MAAM,oBAETA,uBAAgB,CAAA,kBAAA;AAIb,MAAM,oBAETA,uBAAgB,CAAA,kBAAA;AAIb,MAAM,mBAETA,uBAAgB,CAAA,iBAAA;AAKb,MAAM,iBAAoB,GAAAC,0BAAA;AAEjC,QAAe;AAAA,EACb,UAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,aAAA;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,aACAC,mBAAA;AAAA,mBACAC,+BAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/lib/index.ts"],"sourcesContent":["import nodeDataChannel from './node-datachannel';\nimport _DataChannelStream from './datachannel-stream';\nimport { WebSocketServer } from './websocket-server';\nimport {\n Channel,\n DataChannelInitConfig,\n DescriptionType,\n Direction,\n LogLevel,\n 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, cb?: (level: LogLevel, message: string) => void): void {\n nodeDataChannel.initLogger(level, cb);\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 PacingHandler extends MediaHandler {}\n\nexport const PacingHandler: {\n new (bitsPerSecond: number, sendInterval: number): PacingHandler;\n setBitrate(bitsPerSecond: number): void;\n} = nodeDataChannel.PacingHandler;\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 VP8RtpPacketizer extends RtpPacketizer {}\n\nexport const VP8RtpPacketizer: {\n new (rtpConfig: RtpPacketizationConfig, maxFragmentSize?: number): VP8RtpPacketizer\n} = nodeDataChannel.VP8RtpPacketizer\n\nexport interface VP9RtpPacketizer extends RtpPacketizer {}\n\nexport const VP9RtpPacketizer: {\n new (rtpConfig: RtpPacketizationConfig, maxFragmentSize?: number): VP9RtpPacketizer\n} = nodeDataChannel.VP9RtpPacketizer\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 PacingHandler,\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":["nodeDataChannel","_DataChannelStream","WebSocket","WebSocketServer"],"mappings":";;;;;;;;;AAsBO,SAAS,OAAgB,GAAA;AAC9B,EAAAA,uBAAA,CAAgB,OAAQ,EAAA,CAAA;AAC1B,CAAA;AACgB,SAAA,UAAA,CAAW,OAAiB,EAAuD,EAAA;AACjG,EAAgBA,uBAAA,CAAA,UAAA,CAAW,OAAO,EAAE,CAAA,CAAA;AACtC,CAAA;AACO,SAAS,OAAgB,GAAA;AAC9B,EAAAA,uBAAA,CAAgB,OAAQ,EAAA,CAAA;AAC1B,CAAA;AACO,SAAS,gBAAgB,QAA8B,EAAA;AAC5D,EAAAA,uBAAA,CAAgB,gBAAgB,QAAQ,CAAA,CAAA;AAC1C,CAAA;AACO,SAAS,iBAA4B,GAAA;AAC1C,EAAA,OAAOA,wBAAgB,iBAAkB,EAAA,CAAA;AAC3C,CAAA;AAwBO,MAAM,QAETA,uBAAgB,CAAA,MAAA;AA4Bb,MAAM,QAETA,uBAAgB,CAAA,MAAA;AAsBb,MAAM,QAETA,uBAAgB,CAAA,MAAA;AAqBb,MAAM,cAETA,uBAAgB,CAAA,YAAA;AAmCb,MAAM,iBAETA,uBAAgB,CAAA,eAAA;AAQb,MAAM,oBAETA,uBAAgB,CAAA,kBAAA;AAUb,MAAM,yBAETA,uBAAgB,CAAA,uBAAA;AAQb,MAAM,gBAGTA,uBAAgB,CAAA,cAAA;AAIb,MAAM,uBAETA,uBAAgB,CAAA,qBAAA;AAIb,MAAM,oBAETA,uBAAgB,CAAA,kBAAA;AAMb,MAAM,iBAETA,uBAAgB,CAAA,eAAA;AAMb,MAAM,gBAETA,uBAAgB,CAAA,cAAA;AAIb,MAAM,oBAETA,uBAAgB,CAAA,kBAAA;AAIb,MAAM,oBAETA,uBAAgB,CAAA,kBAAA;AAMhBA,uBAAgB,CAAA,iBAAA;AAMhBA,uBAAgB,CAAA,iBAAA;AAIb,MAAM,mBAETA,uBAAgB,CAAA,iBAAA;AAKb,MAAM,iBAAoB,GAAAC,0BAAA;AAEjC,QAAe;AAAA,EACb,UAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,aAAA;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,aACAC,mBAAA;AAAA,mBACAC,+BAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const
|
|
5
|
+
const loadBinding = require("pkg-prebuilds");
|
|
6
|
+
const bindingOptions = require("../../binding-options");
|
|
7
|
+
const packageRoot = __dirname + "/../../../" || __dirname + "/../../";
|
|
8
|
+
const nodeDataChannel = loadBinding(packageRoot, bindingOptions);
|
|
6
9
|
|
|
7
10
|
exports.default = nodeDataChannel;
|
|
8
11
|
//# sourceMappingURL=node-datachannel.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-datachannel.cjs","sources":["../../../src/lib/node-datachannel.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"node-datachannel.cjs","sources":["../../../src/lib/node-datachannel.ts"],"sourcesContent":["import loadBinding = require('pkg-prebuilds');\nimport bindingOptions = require('../../binding-options');\n\n// `process.env.PACKAGE_ROOT` is injected at build time by the rollup\n// `replace` plugin (see rollup.config.mjs) so that the path is correct both\n// when running from `src/lib/` and from the bundled `dist/<format>/lib/`.\nconst packageRoot = process.env.PACKAGE_ROOT || __dirname + '/../../';\n\n// Load the native binding from the prebuilds folder, falling back to a\n// locally built binary in build/Release or build/Debug.\nconst nodeDataChannel = loadBinding(packageRoot, bindingOptions);\nexport default nodeDataChannel;\n"],"names":[],"mappings":";;;;AAAA,MAAO,cAAc,OAAQ,CAAA,eAAA,CAAA,CAAA;AAC7B,MAAO,iBAAiB,OAAQ,CAAA,uBAAA,CAAA,CAAA;AAKhC,MAAM,WAAA,GAAc,4BAA4B,SAAY,GAAA,SAAA,CAAA;AAItD,MAAA,eAAA,GAAkB,WAAY,CAAA,WAAA,EAAa,cAAc;;;;"}
|
package/dist/esm/lib/index.mjs
CHANGED
|
@@ -6,8 +6,8 @@ import { WebSocket } from './websocket.mjs';
|
|
|
6
6
|
function preload() {
|
|
7
7
|
nodeDataChannel.preload();
|
|
8
8
|
}
|
|
9
|
-
function initLogger(level) {
|
|
10
|
-
nodeDataChannel.initLogger(level);
|
|
9
|
+
function initLogger(level, cb) {
|
|
10
|
+
nodeDataChannel.initLogger(level, cb);
|
|
11
11
|
}
|
|
12
12
|
function cleanup() {
|
|
13
13
|
nodeDataChannel.cleanup();
|
|
@@ -32,6 +32,8 @@ const RtcpSrReporter = nodeDataChannel.RtcpSrReporter;
|
|
|
32
32
|
const RtpPacketizer = nodeDataChannel.RtpPacketizer;
|
|
33
33
|
const H264RtpPacketizer = nodeDataChannel.H264RtpPacketizer;
|
|
34
34
|
const H265RtpPacketizer = nodeDataChannel.H265RtpPacketizer;
|
|
35
|
+
nodeDataChannel.VP8RtpPacketizer;
|
|
36
|
+
nodeDataChannel.VP9RtpPacketizer;
|
|
35
37
|
const AV1RtpPacketizer = nodeDataChannel.AV1RtpPacketizer;
|
|
36
38
|
const DataChannelStream = DataChannelStream$1;
|
|
37
39
|
var n = {
|
|
@@ -1 +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 PacingHandler extends MediaHandler {}\n\nexport const PacingHandler: {\n new (bitsPerSecond: number, sendInterval: number): PacingHandler;\n} = nodeDataChannel.PacingHandler;\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 PacingHandler,\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,gBAET,eAAgB,CAAA,cAAA;AAIb,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,aAAA;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;;;;"}
|
|
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, cb?: (level: LogLevel, message: string) => void): void {\n nodeDataChannel.initLogger(level, cb);\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 PacingHandler extends MediaHandler {}\n\nexport const PacingHandler: {\n new (bitsPerSecond: number, sendInterval: number): PacingHandler;\n setBitrate(bitsPerSecond: number): void;\n} = nodeDataChannel.PacingHandler;\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 VP8RtpPacketizer extends RtpPacketizer {}\n\nexport const VP8RtpPacketizer: {\n new (rtpConfig: RtpPacketizationConfig, maxFragmentSize?: number): VP8RtpPacketizer\n} = nodeDataChannel.VP8RtpPacketizer\n\nexport interface VP9RtpPacketizer extends RtpPacketizer {}\n\nexport const VP9RtpPacketizer: {\n new (rtpConfig: RtpPacketizationConfig, maxFragmentSize?: number): VP9RtpPacketizer\n} = nodeDataChannel.VP9RtpPacketizer\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 PacingHandler,\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;AACgB,SAAA,UAAA,CAAW,OAAiB,EAAuD,EAAA;AACjG,EAAgB,eAAA,CAAA,UAAA,CAAW,OAAO,EAAE,CAAA,CAAA;AACtC,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,gBAGT,eAAgB,CAAA,cAAA;AAIb,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;AAMhB,eAAgB,CAAA,iBAAA;AAMhB,eAAgB,CAAA,iBAAA;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,aAAA;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;;;;"}
|
|
@@ -6,7 +6,10 @@ import cjsModule from 'node:module';
|
|
|
6
6
|
const __filename = cjsUrl.fileURLToPath(import.meta.url);
|
|
7
7
|
const __dirname = cjsPath.dirname(__filename);
|
|
8
8
|
const require = cjsModule.createRequire(import.meta.url);
|
|
9
|
-
const
|
|
9
|
+
const loadBinding = require("pkg-prebuilds");
|
|
10
|
+
const bindingOptions = require("../../binding-options");
|
|
11
|
+
const packageRoot = __dirname + "/../../../" || __dirname + "/../../";
|
|
12
|
+
const nodeDataChannel = loadBinding(packageRoot, bindingOptions);
|
|
10
13
|
|
|
11
14
|
export { nodeDataChannel as default };
|
|
12
15
|
//# sourceMappingURL=node-datachannel.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-datachannel.mjs","sources":["../../../src/lib/node-datachannel.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"node-datachannel.mjs","sources":["../../../src/lib/node-datachannel.ts"],"sourcesContent":["import loadBinding = require('pkg-prebuilds');\nimport bindingOptions = require('../../binding-options');\n\n// `process.env.PACKAGE_ROOT` is injected at build time by the rollup\n// `replace` plugin (see rollup.config.mjs) so that the path is correct both\n// when running from `src/lib/` and from the bundled `dist/<format>/lib/`.\nconst packageRoot = process.env.PACKAGE_ROOT || __dirname + '/../../';\n\n// Load the native binding from the prebuilds folder, falling back to a\n// locally built binary in build/Release or build/Debug.\nconst nodeDataChannel = loadBinding(packageRoot, bindingOptions);\nexport default nodeDataChannel;\n"],"names":[],"mappings":";;;;;;;;AAAA;AACA;AAKA;AAIM;;"}
|
|
@@ -5,7 +5,7 @@ import { WebSocketServer } from './websocket-server.js';
|
|
|
5
5
|
import { WebSocket } from './websocket.js';
|
|
6
6
|
|
|
7
7
|
declare function preload(): void;
|
|
8
|
-
declare function initLogger(level: LogLevel): void;
|
|
8
|
+
declare function initLogger(level: LogLevel, cb?: (level: LogLevel, message: string) => void): void;
|
|
9
9
|
declare function cleanup(): void;
|
|
10
10
|
declare function setSctpSettings(settings: SctpSettings): void;
|
|
11
11
|
declare function getLibraryVersion(): string;
|
|
@@ -172,6 +172,7 @@ interface PacingHandler extends MediaHandler {
|
|
|
172
172
|
}
|
|
173
173
|
declare const PacingHandler: {
|
|
174
174
|
new (bitsPerSecond: number, sendInterval: number): PacingHandler;
|
|
175
|
+
setBitrate(bitsPerSecond: number): void;
|
|
175
176
|
};
|
|
176
177
|
interface RtcpReceivingSession extends MediaHandler {
|
|
177
178
|
}
|
|
@@ -205,6 +206,16 @@ interface H265RtpPacketizer extends RtpPacketizer {
|
|
|
205
206
|
declare const H265RtpPacketizer: {
|
|
206
207
|
new (separator: NalUnitSeparator, rtpConfig: RtpPacketizationConfig, maxFragmentSize?: number): H265RtpPacketizer;
|
|
207
208
|
};
|
|
209
|
+
interface VP8RtpPacketizer extends RtpPacketizer {
|
|
210
|
+
}
|
|
211
|
+
declare const VP8RtpPacketizer: {
|
|
212
|
+
new (rtpConfig: RtpPacketizationConfig, maxFragmentSize?: number): VP8RtpPacketizer;
|
|
213
|
+
};
|
|
214
|
+
interface VP9RtpPacketizer extends RtpPacketizer {
|
|
215
|
+
}
|
|
216
|
+
declare const VP9RtpPacketizer: {
|
|
217
|
+
new (rtpConfig: RtpPacketizationConfig, maxFragmentSize?: number): VP9RtpPacketizer;
|
|
218
|
+
};
|
|
208
219
|
interface AV1RtpPacketizer extends RtpPacketizer {
|
|
209
220
|
}
|
|
210
221
|
declare const AV1RtpPacketizer: {
|
|
@@ -218,7 +229,10 @@ declare const _default: {
|
|
|
218
229
|
preload: typeof preload;
|
|
219
230
|
setSctpSettings: typeof setSctpSettings;
|
|
220
231
|
getLibraryVersion: typeof getLibraryVersion;
|
|
221
|
-
PacingHandler:
|
|
232
|
+
PacingHandler: {
|
|
233
|
+
new (bitsPerSecond: number, sendInterval: number): PacingHandler;
|
|
234
|
+
setBitrate(bitsPerSecond: number): void;
|
|
235
|
+
};
|
|
222
236
|
RtcpReceivingSession: new () => RtcpReceivingSession;
|
|
223
237
|
RtcpNackResponder: new (maxSize?: number) => RtcpNackResponder;
|
|
224
238
|
RtcpSrReporter: new (rtpConfig: RtpPacketizationConfig) => RtcpSrReporter;
|
|
@@ -238,4 +252,4 @@ declare const _default: {
|
|
|
238
252
|
IceUdpMuxListener: new (port: number, address?: string) => IceUdpMuxListener;
|
|
239
253
|
};
|
|
240
254
|
|
|
241
|
-
export { AV1RtpPacketizer, Audio, CertificateFingerprint, Channel, DataChannel, DataChannelInitConfig, DataChannelStream, DescriptionType, Direction, H264RtpPacketizer, H265RtpPacketizer, IceUdpMuxListener, IceUdpMuxRequest, LocalDescriptionInit, LogLevel, type MediaHandler, NalUnitSeparator, ObuPacketization, PacingHandler, PeerConnection, RTCIceConnectionState, RTCIceGatheringState, RTCPeerConnectionState, RTCSignalingState, RtcConfig, RtcpNackResponder, RtcpReceivingSession, RtcpSrReporter, RtpPacketizationConfig, RtpPacketizer, SctpSettings, SelectedCandidateInfo, Track, Video, WebSocket, WebSocketServer, WebSocketServerConfiguration, cleanup, _default as default, getLibraryVersion, initLogger, preload, setSctpSettings };
|
|
255
|
+
export { AV1RtpPacketizer, Audio, CertificateFingerprint, Channel, DataChannel, DataChannelInitConfig, DataChannelStream, DescriptionType, Direction, H264RtpPacketizer, H265RtpPacketizer, IceUdpMuxListener, IceUdpMuxRequest, LocalDescriptionInit, LogLevel, type MediaHandler, NalUnitSeparator, ObuPacketization, PacingHandler, PeerConnection, RTCIceConnectionState, RTCIceGatheringState, RTCPeerConnectionState, RTCSignalingState, RtcConfig, RtcpNackResponder, RtcpReceivingSession, RtcpSrReporter, RtpPacketizationConfig, RtpPacketizer, SctpSettings, SelectedCandidateInfo, Track, VP8RtpPacketizer, VP9RtpPacketizer, Video, WebSocket, WebSocketServer, WebSocketServerConfiguration, cleanup, _default as default, getLibraryVersion, initLogger, preload, setSctpSettings };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lng2004/node-datachannel",
|
|
3
|
-
"version": "0.32.
|
|
3
|
+
"version": "0.32.3-20260815",
|
|
4
4
|
"description": "WebRTC For Node.js and Electron. libdatachannel node bindings.",
|
|
5
5
|
"main": "./dist/cjs/lib/index.cjs",
|
|
6
6
|
"module": "./dist/esm/lib/index.mjs",
|
|
@@ -33,13 +33,15 @@
|
|
|
33
33
|
"node": ">=18.20.0"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
36
|
-
"install": "
|
|
37
|
-
"
|
|
36
|
+
"install": "pkg-prebuilds-verify ./binding-options.js || (npm install --ignore-scripts --production=false && npm run compile)",
|
|
37
|
+
"rebuild": "pkg-prebuilds-verify ./binding-options.js || (npm run build:mbedtls && cmake-js rebuild)",
|
|
38
|
+
"install:nice": "npm run clean && npm install --ignore-scripts --production=false && npm run build:mbedtls && cmake-js configure --CDUSE_NICE=1 && cmake-js build",
|
|
38
39
|
"install:gnu": "npm run clean && npm install --ignore-scripts --production=false && cmake-js configure --CDUSE_GNUTLS=1 && cmake-js build",
|
|
40
|
+
"build:mbedtls": "node ./scripts/build-mbedtls.js",
|
|
39
41
|
"build": "npm run compile && npm run build:tsc",
|
|
40
|
-
"compile": "cmake-js build",
|
|
42
|
+
"compile": "npm run build:mbedtls && cmake-js build",
|
|
41
43
|
"build:debug": "npm run compile:debug && npm run build:tsc",
|
|
42
|
-
"compile:debug": "cmake-js configure -D && cmake-js build -D",
|
|
44
|
+
"compile:debug": "npm run build:mbedtls && cmake-js configure -D && cmake-js build -D",
|
|
43
45
|
"build:tsc": "rimraf dist && rollup -c",
|
|
44
46
|
"build:tsc:watch": "rollup -c -w",
|
|
45
47
|
"clean": "rimraf dist build",
|
|
@@ -49,11 +51,19 @@
|
|
|
49
51
|
"test:wpt": "npm run run:wpt:server & (sleep 8 && (npm run run:wpt:test | tee test/wpt-tests/last-test-results.md) )",
|
|
50
52
|
"wpt:server": "cd test/wpt-tests/wpt && ./wpt serve",
|
|
51
53
|
"wpt:test": "ts-node test/wpt-tests/index.ts",
|
|
52
|
-
"_prebuild": "prebuild -r napi --backend cmake-js",
|
|
53
54
|
"prepack": "npm run build:tsc",
|
|
54
55
|
"prettier": "prettier --write .",
|
|
55
56
|
"format-cpp": "find src/cpp \\( -name \"*.h\" -o -name \"*.cpp\" \\) -exec clang-format -i \"{}\" \\; "
|
|
56
57
|
},
|
|
58
|
+
"files": [
|
|
59
|
+
"dist",
|
|
60
|
+
"prebuilds",
|
|
61
|
+
"scripts",
|
|
62
|
+
"binding-options.js",
|
|
63
|
+
"src/cpp",
|
|
64
|
+
"CMakeLists.txt",
|
|
65
|
+
"cmake"
|
|
66
|
+
],
|
|
57
67
|
"binary": {
|
|
58
68
|
"napi_versions": [
|
|
59
69
|
8
|
|
@@ -103,7 +113,6 @@
|
|
|
103
113
|
"jest": "^29.7.0",
|
|
104
114
|
"jsdom": "^24.1.1",
|
|
105
115
|
"node-addon-api": "^7.0.0",
|
|
106
|
-
"prebuild": "^13.0.1",
|
|
107
116
|
"prettier": "^3.3.3",
|
|
108
117
|
"puppeteer": "^22.14.0",
|
|
109
118
|
"rimraf": "^5.0.9",
|
|
@@ -116,6 +125,6 @@
|
|
|
116
125
|
"typescript": "5.4"
|
|
117
126
|
},
|
|
118
127
|
"dependencies": {
|
|
119
|
-
"
|
|
128
|
+
"pkg-prebuilds": "^1.0.0"
|
|
120
129
|
}
|
|
121
130
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const { spawnSync } = require('node:child_process');
|
|
2
|
+
const path = require('node:path');
|
|
3
|
+
|
|
4
|
+
const rootDir = path.resolve(__dirname, '..');
|
|
5
|
+
const shellScript = path.join(rootDir, 'scripts', 'build-mbedtls.sh');
|
|
6
|
+
const psScript = path.join(rootDir, 'scripts', 'build-mbedtls.ps1');
|
|
7
|
+
|
|
8
|
+
function run(command, args) {
|
|
9
|
+
const result = spawnSync(command, args, {
|
|
10
|
+
cwd: rootDir,
|
|
11
|
+
env: process.env,
|
|
12
|
+
stdio: 'inherit',
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
if (result.error) {
|
|
16
|
+
throw result.error;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (typeof result.status === 'number' && result.status !== 0) {
|
|
20
|
+
process.exit(result.status);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (process.platform === 'win32') {
|
|
25
|
+
run('powershell', ['-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', psScript]);
|
|
26
|
+
} else {
|
|
27
|
+
run('sh', [shellScript]);
|
|
28
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
$ErrorActionPreference = "Stop"
|
|
2
|
+
|
|
3
|
+
$RootDir = Resolve-Path (Join-Path $PSScriptRoot "..")
|
|
4
|
+
$MbedTlsVersion = if ($env:MBEDTLS_VERSION) { $env:MBEDTLS_VERSION } else { "3.6.1" }
|
|
5
|
+
$MbedTlsTag = "v$MbedTlsVersion"
|
|
6
|
+
$MbedTlsRepo = "https://github.com/Mbed-TLS/mbedtls.git"
|
|
7
|
+
|
|
8
|
+
$MbedTlsRoot = Join-Path $RootDir "deps/mbedtls"
|
|
9
|
+
$MbedTlsSrc = Join-Path $MbedTlsRoot "src"
|
|
10
|
+
$MbedTlsBuild = Join-Path $MbedTlsRoot "build"
|
|
11
|
+
$MbedTlsInstall = if ($env:NDC_MBEDTLS_INSTALL_DIR) { $env:NDC_MBEDTLS_INSTALL_DIR } else { Join-Path $MbedTlsRoot "install" }
|
|
12
|
+
$MbedTlsConfig = Join-Path $MbedTlsSrc "include/mbedtls/mbedtls_config.h"
|
|
13
|
+
|
|
14
|
+
if (-not (Get-Command cmake -ErrorAction SilentlyContinue)) {
|
|
15
|
+
throw "cmake is required to build mbedtls"
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
if (-not (Get-Command git -ErrorAction SilentlyContinue)) {
|
|
19
|
+
throw "git is required to build mbedtls"
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
New-Item -ItemType Directory -Force -Path $MbedTlsRoot | Out-Null
|
|
23
|
+
|
|
24
|
+
if (-not (Test-Path (Join-Path $MbedTlsSrc ".git"))) {
|
|
25
|
+
if (Test-Path $MbedTlsSrc) {
|
|
26
|
+
Remove-Item -Recurse -Force $MbedTlsSrc
|
|
27
|
+
}
|
|
28
|
+
git clone --recursive --depth 1 --branch $MbedTlsTag $MbedTlsRepo $MbedTlsSrc
|
|
29
|
+
} else {
|
|
30
|
+
git -C $MbedTlsSrc fetch --depth 1 origin $MbedTlsTag
|
|
31
|
+
git -C $MbedTlsSrc checkout --force $MbedTlsTag
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (Test-Path $MbedTlsConfig) {
|
|
35
|
+
$configText = Get-Content -Path $MbedTlsConfig -Raw
|
|
36
|
+
$updated = $configText -replace '(?m)^//\s*#define MBEDTLS_SSL_DTLS_SRTP', '#define MBEDTLS_SSL_DTLS_SRTP'
|
|
37
|
+
if ($updated -ne $configText) {
|
|
38
|
+
Set-Content -Path $MbedTlsConfig -Value $updated -NoNewline
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (Test-Path $MbedTlsBuild) {
|
|
43
|
+
Remove-Item -Recurse -Force $MbedTlsBuild
|
|
44
|
+
}
|
|
45
|
+
if (Test-Path $MbedTlsInstall) {
|
|
46
|
+
Remove-Item -Recurse -Force $MbedTlsInstall
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
$cmakeArgs = @(
|
|
50
|
+
"-S", $MbedTlsSrc,
|
|
51
|
+
"-B", $MbedTlsBuild,
|
|
52
|
+
"-DCMAKE_BUILD_TYPE=Release",
|
|
53
|
+
"-DCMAKE_POSITION_INDEPENDENT_CODE=ON",
|
|
54
|
+
"-DENABLE_PROGRAMS=OFF",
|
|
55
|
+
"-DENABLE_TESTING=OFF",
|
|
56
|
+
"-DUSE_STATIC_MBEDTLS_LIBRARY=ON",
|
|
57
|
+
"-DUSE_SHARED_MBEDTLS_LIBRARY=OFF",
|
|
58
|
+
"-DCMAKE_INSTALL_PREFIX=$MbedTlsInstall"
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
$cmakePlatform = $null
|
|
62
|
+
if ($env:VSCMD_ARG_TGT_ARCH) {
|
|
63
|
+
switch ($env:VSCMD_ARG_TGT_ARCH.ToLowerInvariant()) {
|
|
64
|
+
"x86" { $cmakePlatform = "Win32" }
|
|
65
|
+
"x64" { $cmakePlatform = "x64" }
|
|
66
|
+
"arm" { $cmakePlatform = "ARM" }
|
|
67
|
+
"arm64" { $cmakePlatform = "ARM64" }
|
|
68
|
+
default { Write-Warning "Unknown VSCMD_ARG_TGT_ARCH '$($env:VSCMD_ARG_TGT_ARCH)'; not setting CMake platform." }
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if ($cmakePlatform) {
|
|
73
|
+
$cmakeArgs += "-A"
|
|
74
|
+
$cmakeArgs += $cmakePlatform
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if ($env:NDC_MBEDTLS_CMAKE_ARGS) {
|
|
78
|
+
$cmakeArgs += $env:NDC_MBEDTLS_CMAKE_ARGS.Split(' ', [System.StringSplitOptions]::RemoveEmptyEntries)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
& cmake @cmakeArgs
|
|
82
|
+
& cmake --build $MbedTlsBuild --config Release --target install --parallel
|
|
83
|
+
|
|
84
|
+
Write-Host "Built mbedtls $MbedTlsVersion into $MbedTlsInstall"
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/usr/bin/env sh
|
|
2
|
+
set -eu
|
|
3
|
+
|
|
4
|
+
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
5
|
+
MBEDTLS_VERSION="${MBEDTLS_VERSION:-3.6.1}"
|
|
6
|
+
MBEDTLS_GIT_TAG="v${MBEDTLS_VERSION}"
|
|
7
|
+
MBEDTLS_REPO_URL="https://github.com/Mbed-TLS/mbedtls.git"
|
|
8
|
+
|
|
9
|
+
MBEDTLS_ROOT_DIR="${ROOT_DIR}/deps/mbedtls"
|
|
10
|
+
MBEDTLS_SRC_DIR="${MBEDTLS_ROOT_DIR}/src"
|
|
11
|
+
MBEDTLS_BUILD_DIR="${MBEDTLS_ROOT_DIR}/build"
|
|
12
|
+
MBEDTLS_INSTALL_DIR="${NDC_MBEDTLS_INSTALL_DIR:-${MBEDTLS_ROOT_DIR}/install}"
|
|
13
|
+
MBEDTLS_CONFIG_FILE="${MBEDTLS_SRC_DIR}/include/mbedtls/mbedtls_config.h"
|
|
14
|
+
|
|
15
|
+
if ! command -v cmake >/dev/null 2>&1; then
|
|
16
|
+
echo "cmake is required to build mbedtls" >&2
|
|
17
|
+
exit 1
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
if ! command -v git >/dev/null 2>&1; then
|
|
21
|
+
echo "git is required to build mbedtls" >&2
|
|
22
|
+
exit 1
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
mkdir -p "${MBEDTLS_ROOT_DIR}"
|
|
26
|
+
|
|
27
|
+
if [ ! -d "${MBEDTLS_SRC_DIR}/.git" ]; then
|
|
28
|
+
rm -rf "${MBEDTLS_SRC_DIR}"
|
|
29
|
+
git clone --recursive --depth 1 --branch "${MBEDTLS_GIT_TAG}" "${MBEDTLS_REPO_URL}" "${MBEDTLS_SRC_DIR}"
|
|
30
|
+
else
|
|
31
|
+
git -C "${MBEDTLS_SRC_DIR}" fetch --depth 1 origin "${MBEDTLS_GIT_TAG}"
|
|
32
|
+
git -C "${MBEDTLS_SRC_DIR}" checkout --force "${MBEDTLS_GIT_TAG}"
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
if [ -f "${MBEDTLS_CONFIG_FILE}" ] && grep -q '^//[[:space:]]*#define MBEDTLS_SSL_DTLS_SRTP' "${MBEDTLS_CONFIG_FILE}"; then
|
|
36
|
+
sed -i.bak 's|^//[[:space:]]*#define MBEDTLS_SSL_DTLS_SRTP|#define MBEDTLS_SSL_DTLS_SRTP|' "${MBEDTLS_CONFIG_FILE}"
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
rm -rf "${MBEDTLS_BUILD_DIR}" "${MBEDTLS_INSTALL_DIR}"
|
|
40
|
+
|
|
41
|
+
CMAKE_ARGS="-S ${MBEDTLS_SRC_DIR} -B ${MBEDTLS_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DENABLE_PROGRAMS=OFF -DENABLE_TESTING=OFF -DUSE_STATIC_MBEDTLS_LIBRARY=ON -DUSE_SHARED_MBEDTLS_LIBRARY=OFF -DCMAKE_INSTALL_PREFIX=${MBEDTLS_INSTALL_DIR}"
|
|
42
|
+
|
|
43
|
+
if [ -n "${NDC_MBEDTLS_CMAKE_ARGS:-}" ]; then
|
|
44
|
+
CMAKE_ARGS="${CMAKE_ARGS} ${NDC_MBEDTLS_CMAKE_ARGS}"
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
cmake ${CMAKE_ARGS}
|
|
48
|
+
cmake --build "${MBEDTLS_BUILD_DIR}" --config Release --target install --parallel
|
|
49
|
+
|
|
50
|
+
echo "Built mbedtls ${MBEDTLS_VERSION} into ${MBEDTLS_INSTALL_DIR}"
|
|
@@ -145,6 +145,7 @@ void IceUdpMuxListenerWrapper::onUnhandledStunRequest(const Napi::CallbackInfo &
|
|
|
145
145
|
{
|
|
146
146
|
Napi::Object reqObj = Napi::Object::New(env);
|
|
147
147
|
reqObj.Set("ufrag", request.remoteUfrag.c_str());
|
|
148
|
+
reqObj.Set("localUfrag", request.localUfrag.c_str());
|
|
148
149
|
reqObj.Set("host", request.remoteAddress.c_str());
|
|
149
150
|
reqObj.Set("port", request.remotePort);
|
|
150
151
|
|
package/src/cpp/main.cpp
CHANGED
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
#include "media-av1rtppacketizer-wrapper.h"
|
|
9
9
|
#include "media-h264rtppacketizer-wrapper.h"
|
|
10
10
|
#include "media-h265rtppacketizer-wrapper.h"
|
|
11
|
+
#include "media-vp8rtppacketizer-wrapper.h"
|
|
12
|
+
#include "media-vp9rtppacketizer-wrapper.h"
|
|
11
13
|
#include "media-pacinghandler-wrapper.h"
|
|
12
14
|
#include "media-rtcpnackresponder-wrapper.h"
|
|
13
15
|
#include "media-rtcpreceivingsession-wrapper.h"
|
|
@@ -32,6 +34,8 @@ Napi::Object InitAll(Napi::Env env, Napi::Object exports)
|
|
|
32
34
|
AV1RtpPacketizerWrapper::Init(env, exports);
|
|
33
35
|
H264RtpPacketizerWrapper::Init(env, exports);
|
|
34
36
|
H265RtpPacketizerWrapper::Init(env, exports);
|
|
37
|
+
VP8RtpPacketizerWrapper::Init(env, exports);
|
|
38
|
+
VP9RtpPacketizerWrapper::Init(env, exports);
|
|
35
39
|
PacingHandlerWrapper::Init(env, exports);
|
|
36
40
|
RtcpNackResponderWrapper::Init(env, exports);
|
|
37
41
|
RtcpReceivingSessionWrapper::Init(env, exports);
|