node-datachannel 0.26.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CMakeLists.txt +29 -10
  2. package/dist/cjs/lib/index.cjs +1 -3
  3. package/dist/cjs/lib/index.cjs.map +1 -1
  4. package/dist/cjs/polyfill/Events.cjs.map +1 -1
  5. package/dist/cjs/polyfill/RTCDataChannel.cjs.map +1 -1
  6. package/dist/cjs/polyfill/RTCDtlsTransport.cjs.map +1 -1
  7. package/dist/cjs/polyfill/RTCError.cjs.map +1 -1
  8. package/dist/cjs/polyfill/RTCIceTransport.cjs.map +1 -1
  9. package/dist/cjs/polyfill/RTCPeerConnection.cjs +1 -1
  10. package/dist/cjs/polyfill/RTCPeerConnection.cjs.map +1 -1
  11. package/dist/cjs/polyfill/RTCSctpTransport.cjs.map +1 -1
  12. package/dist/esm/lib/index.mjs +1 -3
  13. package/dist/esm/lib/index.mjs.map +1 -1
  14. package/dist/esm/polyfill/Events.mjs.map +1 -1
  15. package/dist/esm/polyfill/RTCDataChannel.mjs.map +1 -1
  16. package/dist/esm/polyfill/RTCDtlsTransport.mjs.map +1 -1
  17. package/dist/esm/polyfill/RTCError.mjs.map +1 -1
  18. package/dist/esm/polyfill/RTCIceTransport.mjs.map +1 -1
  19. package/dist/esm/polyfill/RTCPeerConnection.mjs +1 -1
  20. package/dist/esm/polyfill/RTCPeerConnection.mjs.map +1 -1
  21. package/dist/esm/polyfill/RTCSctpTransport.mjs.map +1 -1
  22. package/dist/types/lib/index.d.ts +5 -2
  23. package/dist/types/polyfill/Events.d.ts +3 -6
  24. package/dist/types/polyfill/RTCDataChannel.d.ts +6 -6
  25. package/dist/types/polyfill/RTCDtlsTransport.d.ts +5 -8
  26. package/dist/types/polyfill/RTCIceTransport.d.ts +6 -9
  27. package/dist/types/polyfill/RTCPeerConnection.d.ts +18 -22
  28. package/dist/types/polyfill/RTCSctpTransport.d.ts +3 -6
  29. package/package.json +112 -112
  30. package/src/cpp/main.cpp +14 -0
  31. package/src/cpp/peer-connection-wrapper.cpp +9 -1
  32. package/src/cpp/peer-connection-wrapper.h +5 -1
  33. package/src/cpp/rtc-wrapper.cpp +18 -0
  34. package/src/lib/index.ts +5 -2
  35. package/src/polyfill/Events.ts +6 -10
  36. package/src/polyfill/RTCDataChannel.ts +7 -7
  37. package/src/polyfill/RTCDtlsTransport.ts +6 -7
  38. package/src/polyfill/RTCError.ts +1 -1
  39. package/src/polyfill/RTCIceTransport.ts +7 -8
  40. package/src/polyfill/RTCPeerConnection.ts +30 -30
  41. package/src/polyfill/RTCSctpTransport.ts +5 -6
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.26.0)
5
+ project(node_datachannel VERSION 0.27.0)
6
6
 
7
7
  # -Dnapi_build_version=8
8
8
  add_definitions(-DNAPI_VERSION=8)
@@ -20,6 +20,11 @@ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Android")
20
20
  set(CMAKE_C_FLAGS "-Wno-error=unused-but-set-variable -Wno-error=strict-prototypes")
21
21
  endif()
22
22
 
23
+ # Add -frtti only for Linux and macOS
24
+ if (NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
25
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -frtti")
26
+ endif()
27
+
23
28
  set(OPENSSL_USE_STATIC_LIBS TRUE)
24
29
  find_package(OpenSSL REQUIRED)
25
30
 
@@ -35,6 +40,7 @@ FetchContent_Declare(
35
40
  option(NO_MEDIA "Disable media transport support in libdatachannel" OFF)
36
41
  option(NO_WEBSOCKET "Disable WebSocket support in libdatachannel" OFF)
37
42
 
43
+ set(FETCHCONTENT_QUIET OFF)
38
44
  FetchContent_GetProperties(libdatachannel)
39
45
 
40
46
  if(NOT libdatachannel)
@@ -42,22 +48,35 @@ if(NOT libdatachannel)
42
48
  add_subdirectory(${libdatachannel_SOURCE_DIR} ${libdatachannel_BINARY_DIR} EXCLUDE_FROM_ALL)
43
49
  endif()
44
50
 
45
- add_library(${PROJECT_NAME} SHARED
46
- src/cpp/rtc-wrapper.cpp
47
- src/cpp/media-direction.cpp
48
- src/cpp/media-rtcpreceivingsession-wrapper.cpp
49
- src/cpp/media-track-wrapper.cpp
50
- src/cpp/media-audio-wrapper.cpp
51
- src/cpp/media-video-wrapper.cpp
51
+ # Create Source File List
52
+ set(SRC_FILES
53
+ src/cpp/rtc-wrapper.cpp
52
54
  src/cpp/data-channel-wrapper.cpp
53
55
  src/cpp/peer-connection-wrapper.cpp
54
56
  src/cpp/thread-safe-callback.cpp
55
- src/cpp/web-socket-wrapper.cpp
56
- src/cpp/web-socket-server-wrapper.cpp
57
57
  src/cpp/main.cpp
58
58
  ${CMAKE_JS_SRC}
59
59
  )
60
60
 
61
+ if(NOT NO_MEDIA)
62
+ list(APPEND SRC_FILES
63
+ src/cpp/media-direction.cpp
64
+ src/cpp/media-rtcpreceivingsession-wrapper.cpp
65
+ src/cpp/media-track-wrapper.cpp
66
+ src/cpp/media-audio-wrapper.cpp
67
+ src/cpp/media-video-wrapper.cpp
68
+ )
69
+ endif()
70
+
71
+ if(NOT NO_WEBSOCKET)
72
+ list(APPEND SRC_FILES
73
+ src/cpp/web-socket-wrapper.cpp
74
+ src/cpp/web-socket-server-wrapper.cpp
75
+ )
76
+ endif()
77
+
78
+ add_library(${PROJECT_NAME} SHARED ${SRC_FILES})
79
+
61
80
  set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 17)
62
81
  set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node")
63
82
 
@@ -27,9 +27,7 @@ const Video = nodeDatachannel.default.Video;
27
27
  const Track = nodeDatachannel.default.Track;
28
28
  const DataChannel = nodeDatachannel.default.DataChannel;
29
29
  const PeerConnection = nodeDatachannel.default.PeerConnection;
30
- class RtcpReceivingSession {
31
- //
32
- }
30
+ const RtcpReceivingSession = nodeDatachannel.default.RtcpReceivingSession;
33
31
  const DataChannelStream = datachannelStream.default;
34
32
  var n = {
35
33
  initLogger,
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/lib/index.ts"],"sourcesContent":["import nodeDataChannel from './node-datachannel';\nimport _DataChannelStream from './datachannel-stream';\nimport { WebSocketServer } from './websocket-server';\nimport { Channel, DataChannelInitConfig, DescriptionType, Direction, LogLevel, RtcConfig, RTCIceConnectionState, RTCIceGatheringState, RTCPeerConnectionState, RTCSignalingState, SctpSettings, SelectedCandidateInfo } from './types';\nimport { WebSocket } from './websocket';\n\nexport function preload(): void { nodeDataChannel.preload(); }\nexport function initLogger(level: LogLevel): void { nodeDataChannel.initLogger(level); }\nexport function cleanup(): void { nodeDataChannel.cleanup(); }\nexport function setSctpSettings(settings: SctpSettings): void { nodeDataChannel.setSctpSettings(settings); }\nexport function getLibraryVersion(): string { return nodeDataChannel.getLibraryVersion(); }\n\nexport interface Audio {\n addAudioCodec(payloadType: number, codec: string, profile?: string): void;\n addOpusCodec(payloadType: number, profile?: string): string;\n direction(): Direction;\n generateSdp(eol: string, addr: string, port: number): string;\n mid(): string;\n setDirection(dir: Direction): void;\n description(): string;\n removeFormat(fmt: string): void;\n addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;\n removeSSRC(ssrc: number): void;\n replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;\n hasSSRC(ssrc: number): boolean;\n getSSRCs(): number[];\n getCNameForSsrc(ssrc: number): string;\n setBitrate(bitRate: number): void;\n getBitrate(): number;\n hasPayloadType(payloadType: number): boolean;\n addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;\n addRTPMap(): void;\n parseSdpLine(line: string): void;\n}\nexport const Audio: {\n new(mid: string, dir: Direction): Audio\n} = nodeDataChannel.Audio\n\n\nexport interface Video {\n addVideoCodec(payloadType: number, codec: string, profile?: string): void;\n addH264Codec(payloadType: number, profile?: string): void;\n addVP8Codec(payloadType: number): void;\n addVP9Codec(payloadType: number): void;\n direction(): Direction;\n generateSdp(eol: string, addr: string, port: number): string;\n mid(): string;\n setDirection(dir: Direction): void;\n description(): string;\n removeFormat(fmt: string): void;\n addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;\n removeSSRC(ssrc: number): void;\n replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;\n hasSSRC(ssrc: number): boolean;\n getSSRCs(): number[];\n getCNameForSsrc(ssrc: number): string;\n setBitrate(bitRate: number): void;\n getBitrate(): number;\n hasPayloadType(payloadType: number): boolean;\n addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;\n addRTPMap(): void;\n parseSdpLine(line: string): void;\n}\nexport const Video: {\n new(mid: string, dir: Direction): Video\n} = nodeDataChannel.Video\n\nexport interface Track {\n direction(): Direction;\n mid(): string;\n type(): string;\n close(): void;\n sendMessage(msg: string): boolean;\n sendMessageBinary(buffer: Buffer): boolean;\n isOpen(): boolean;\n isClosed(): boolean;\n bufferedAmount(): number;\n maxMessageSize(): number;\n requestBitrate(bitRate: number): boolean;\n setBufferedAmountLowThreshold(newSize: number): void;\n requestKeyframe(): boolean;\n setMediaHandler(handler: RtcpReceivingSession): void;\n onOpen(cb: () => void): void;\n onClosed(cb: () => void): void;\n onError(cb: (err: string) => void): void;\n onMessage(cb: (msg: Buffer) => void): void;\n}\nexport const Track: {\n new(): Track\n} = nodeDataChannel.Track\n\nexport interface DataChannel extends Channel {\n getLabel(): string;\n getId(): number;\n getProtocol(): string;\n\n // Channel implementation\n close(): void;\n sendMessage(msg: string): boolean;\n sendMessageBinary(buffer: Buffer | Uint8Array): boolean;\n isOpen(): boolean;\n bufferedAmount(): number;\n maxMessageSize(): number;\n setBufferedAmountLowThreshold(newSize: number): void;\n onOpen(cb: () => void): void;\n onClosed(cb: () => void): void;\n onError(cb: (err: string) => void): void;\n onBufferedAmountLow(cb: () => void): void;\n onMessage(cb: (msg: string | Buffer | ArrayBuffer) => void): void;\n}\nexport const DataChannel: {\n // DataChannel implementation\n} = nodeDataChannel.DataChannel\n\nexport interface PeerConnection {\n close(): void;\n setLocalDescription(type?: DescriptionType): void;\n setRemoteDescription(sdp: string, type: DescriptionType): void;\n localDescription(): { type: DescriptionType; sdp: string } | null;\n remoteDescription(): { type: DescriptionType; sdp: string } | null;\n addRemoteCandidate(candidate: string, mid: string): void;\n createDataChannel(label: string, config?: DataChannelInitConfig): DataChannel;\n addTrack(media: Video | Audio): Track;\n hasMedia(): boolean;\n state(): RTCPeerConnectionState;\n iceState(): RTCIceConnectionState;\n signalingState(): RTCSignalingState;\n gatheringState(): RTCIceGatheringState;\n onLocalDescription(cb: (sdp: string, type: DescriptionType) => void): void;\n onLocalCandidate(cb: (candidate: string, mid: string) => void): void;\n onStateChange(cb: (state: string) => void): void;\n onIceStateChange(cb: (state: string) => void): void;\n onSignalingStateChange(cb: (state: string) => void): void;\n onGatheringStateChange(cb: (state: string) => void): void;\n onDataChannel(cb: (dc: DataChannel) => void): void;\n onTrack(cb: (track: Track) => void): void;\n bytesSent(): number;\n bytesReceived(): number;\n rtt(): number;\n getSelectedCandidatePair(): { local: SelectedCandidateInfo; remote: SelectedCandidateInfo } | null;\n maxDataChannelId(): number;\n maxMessageSize(): number;\n}\nexport const PeerConnection: {\n new(peerName: string, config: RtcConfig): PeerConnection\n} = nodeDataChannel.PeerConnection\n\nexport class RtcpReceivingSession {\n //\n}\n\nexport { WebSocketServer } from './websocket-server';\nexport { WebSocket } from './websocket';\n\nexport const DataChannelStream = _DataChannelStream;\n\nexport default {\n initLogger,\n cleanup,\n preload,\n setSctpSettings,\n getLibraryVersion,\n RtcpReceivingSession,\n Track,\n Video,\n Audio,\n DataChannel,\n PeerConnection,\n WebSocket,\n WebSocketServer,\n DataChannelStream\n};\n\n\n// Types\n// https://github.com/murat-dogan/node-datachannel/issues/300\nexport * from './types';\n"],"names":["nodeDataChannel","_DataChannelStream","WebSocket","WebSocketServer"],"mappings":";;;;;;;;;AAMO,SAAS,OAAgB,GAAA;AAAE,EAAAA,uBAAA,CAAgB,OAAQ,EAAA,CAAA;AAAG,CAAA;AACtD,SAAS,WAAW,KAAuB,EAAA;AAAE,EAAAA,uBAAA,CAAgB,WAAW,KAAK,CAAA,CAAA;AAAG,CAAA;AAChF,SAAS,OAAgB,GAAA;AAAE,EAAAA,uBAAA,CAAgB,OAAQ,EAAA,CAAA;AAAG,CAAA;AACtD,SAAS,gBAAgB,QAA8B,EAAA;AAAE,EAAAA,uBAAA,CAAgB,gBAAgB,QAAQ,CAAA,CAAA;AAAG,CAAA;AACpG,SAAS,iBAA4B,GAAA;AAAE,EAAA,OAAOA,wBAAgB,iBAAkB,EAAA,CAAA;AAAG,CAAA;AAwBnF,MAAM,QAETA,uBAAgB,CAAA,MAAA;AA2Bb,MAAM,QAETA,uBAAgB,CAAA,MAAA;AAsBb,MAAM,QAETA,uBAAgB,CAAA,MAAA;AAqBb,MAAM,cAETA,uBAAgB,CAAA,YAAA;AA+Bb,MAAM,iBAETA,uBAAgB,CAAA,eAAA;AAEb,MAAM,oBAAqB,CAAA;AAAA;AAElC,CAAA;AAKO,MAAM,iBAAoB,GAAAC,0BAAA;AAEjC,QAAe;AAAA,EACX,UAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,aACAC,mBAAA;AAAA,mBACAC,+BAAA;AAAA,EACA,iBAAA;AACJ,CAAA;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/lib/index.ts"],"sourcesContent":["import nodeDataChannel from './node-datachannel';\nimport _DataChannelStream from './datachannel-stream';\nimport { WebSocketServer } from './websocket-server';\nimport { Channel, DataChannelInitConfig, DescriptionType, Direction, LogLevel, RtcConfig, RTCIceConnectionState, RTCIceGatheringState, RTCPeerConnectionState, RTCSignalingState, SctpSettings, SelectedCandidateInfo } from './types';\nimport { WebSocket } from './websocket';\n\nexport function preload(): void { nodeDataChannel.preload(); }\nexport function initLogger(level: LogLevel): void { nodeDataChannel.initLogger(level); }\nexport function cleanup(): void { nodeDataChannel.cleanup(); }\nexport function setSctpSettings(settings: SctpSettings): void { nodeDataChannel.setSctpSettings(settings); }\nexport function getLibraryVersion(): string { return nodeDataChannel.getLibraryVersion(); }\n\nexport interface Audio {\n addAudioCodec(payloadType: number, codec: string, profile?: string): void;\n addOpusCodec(payloadType: number, profile?: string): string;\n direction(): Direction;\n generateSdp(eol: string, addr: string, port: number): string;\n mid(): string;\n setDirection(dir: Direction): void;\n description(): string;\n removeFormat(fmt: string): void;\n addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;\n removeSSRC(ssrc: number): void;\n replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;\n hasSSRC(ssrc: number): boolean;\n getSSRCs(): number[];\n getCNameForSsrc(ssrc: number): string;\n setBitrate(bitRate: number): void;\n getBitrate(): number;\n hasPayloadType(payloadType: number): boolean;\n addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;\n addRTPMap(): void;\n parseSdpLine(line: string): void;\n}\nexport const Audio: {\n new(mid: string, dir: Direction): Audio\n} = nodeDataChannel.Audio\n\n\nexport interface Video {\n addVideoCodec(payloadType: number, codec: string, profile?: string): void;\n addH264Codec(payloadType: number, profile?: string): void;\n addVP8Codec(payloadType: number): void;\n addVP9Codec(payloadType: number): void;\n direction(): Direction;\n generateSdp(eol: string, addr: string, port: number): string;\n mid(): string;\n setDirection(dir: Direction): void;\n description(): string;\n removeFormat(fmt: string): void;\n addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;\n removeSSRC(ssrc: number): void;\n replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;\n hasSSRC(ssrc: number): boolean;\n getSSRCs(): number[];\n getCNameForSsrc(ssrc: number): string;\n setBitrate(bitRate: number): void;\n getBitrate(): number;\n hasPayloadType(payloadType: number): boolean;\n addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;\n addRTPMap(): void;\n parseSdpLine(line: string): void;\n}\nexport const Video: {\n new(mid: string, dir: Direction): Video\n} = nodeDataChannel.Video\n\nexport interface Track {\n direction(): Direction;\n mid(): string;\n type(): string;\n close(): void;\n sendMessage(msg: string): boolean;\n sendMessageBinary(buffer: Buffer): boolean;\n isOpen(): boolean;\n isClosed(): boolean;\n bufferedAmount(): number;\n maxMessageSize(): number;\n requestBitrate(bitRate: number): boolean;\n setBufferedAmountLowThreshold(newSize: number): void;\n requestKeyframe(): boolean;\n setMediaHandler(handler: RtcpReceivingSession): void;\n onOpen(cb: () => void): void;\n onClosed(cb: () => void): void;\n onError(cb: (err: string) => void): void;\n onMessage(cb: (msg: Buffer) => void): void;\n}\nexport const Track: {\n new(): Track\n} = nodeDataChannel.Track\n\nexport interface DataChannel extends Channel {\n getLabel(): string;\n getId(): number;\n getProtocol(): string;\n\n // Channel implementation\n close(): void;\n sendMessage(msg: string): boolean;\n sendMessageBinary(buffer: Buffer | Uint8Array): boolean;\n isOpen(): boolean;\n bufferedAmount(): number;\n maxMessageSize(): number;\n setBufferedAmountLowThreshold(newSize: number): void;\n onOpen(cb: () => void): void;\n onClosed(cb: () => void): void;\n onError(cb: (err: string) => void): void;\n onBufferedAmountLow(cb: () => void): void;\n onMessage(cb: (msg: string | Buffer | ArrayBuffer) => void): void;\n}\nexport const DataChannel: {\n // DataChannel implementation\n} = nodeDataChannel.DataChannel\n\nexport interface PeerConnection {\n close(): void;\n setLocalDescription(type?: DescriptionType): void;\n setRemoteDescription(sdp: string, type: DescriptionType): void;\n localDescription(): { type: DescriptionType; sdp: string } | null;\n remoteDescription(): { type: DescriptionType; sdp: string } | null;\n addRemoteCandidate(candidate: string, mid: string): void;\n createDataChannel(label: string, config?: DataChannelInitConfig): DataChannel;\n addTrack(media: Video | Audio): Track;\n hasMedia(): boolean;\n state(): RTCPeerConnectionState;\n iceState(): RTCIceConnectionState;\n signalingState(): RTCSignalingState;\n gatheringState(): RTCIceGatheringState;\n onLocalDescription(cb: (sdp: string, type: DescriptionType) => void): void;\n onLocalCandidate(cb: (candidate: string, mid: string) => void): void;\n onStateChange(cb: (state: string) => void): void;\n onIceStateChange(cb: (state: string) => void): void;\n onSignalingStateChange(cb: (state: string) => void): void;\n onGatheringStateChange(cb: (state: string) => void): void;\n onDataChannel(cb: (dc: DataChannel) => void): void;\n onTrack(cb: (track: Track) => void): void;\n bytesSent(): number;\n bytesReceived(): number;\n rtt(): number;\n getSelectedCandidatePair(): { local: SelectedCandidateInfo; remote: SelectedCandidateInfo } | null;\n maxDataChannelId(): number;\n maxMessageSize(): number;\n}\nexport const PeerConnection: {\n new(peerName: string, config: RtcConfig): PeerConnection\n} = nodeDataChannel.PeerConnection\n\nexport interface RtcpReceivingSession {\n}\n\nexport const RtcpReceivingSession: {\n new(): RtcpReceivingSession\n} = nodeDataChannel.RtcpReceivingSession\n\nexport { WebSocketServer } from './websocket-server';\nexport { WebSocket } from './websocket';\n\nexport const DataChannelStream = _DataChannelStream;\n\nexport default {\n initLogger,\n cleanup,\n preload,\n setSctpSettings,\n getLibraryVersion,\n RtcpReceivingSession,\n Track,\n Video,\n Audio,\n DataChannel,\n PeerConnection,\n WebSocket,\n WebSocketServer,\n DataChannelStream\n};\n\n\n// Types\n// https://github.com/murat-dogan/node-datachannel/issues/300\nexport * from './types';\n"],"names":["nodeDataChannel","_DataChannelStream","WebSocket","WebSocketServer"],"mappings":";;;;;;;;;AAMO,SAAS,OAAgB,GAAA;AAAE,EAAAA,uBAAA,CAAgB,OAAQ,EAAA,CAAA;AAAG,CAAA;AACtD,SAAS,WAAW,KAAuB,EAAA;AAAE,EAAAA,uBAAA,CAAgB,WAAW,KAAK,CAAA,CAAA;AAAG,CAAA;AAChF,SAAS,OAAgB,GAAA;AAAE,EAAAA,uBAAA,CAAgB,OAAQ,EAAA,CAAA;AAAG,CAAA;AACtD,SAAS,gBAAgB,QAA8B,EAAA;AAAE,EAAAA,uBAAA,CAAgB,gBAAgB,QAAQ,CAAA,CAAA;AAAG,CAAA;AACpG,SAAS,iBAA4B,GAAA;AAAE,EAAA,OAAOA,wBAAgB,iBAAkB,EAAA,CAAA;AAAG,CAAA;AAwBnF,MAAM,QAETA,uBAAgB,CAAA,MAAA;AA2Bb,MAAM,QAETA,uBAAgB,CAAA,MAAA;AAsBb,MAAM,QAETA,uBAAgB,CAAA,MAAA;AAqBb,MAAM,cAETA,uBAAgB,CAAA,YAAA;AA+Bb,MAAM,iBAETA,uBAAgB,CAAA,eAAA;AAKb,MAAM,uBAETA,uBAAgB,CAAA,qBAAA;AAKb,MAAM,iBAAoB,GAAAC,0BAAA;AAEjC,QAAe;AAAA,EACX,UAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,aACAC,mBAAA;AAAA,mBACAC,+BAAA;AAAA,EACA,iBAAA;AACJ,CAAA;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Events.cjs","sources":["../../../src/polyfill/Events.ts"],"sourcesContent":["import RTCDataChannel from './RTCDataChannel';\nimport RTCIceCandidate from './RTCIceCandidate';\n\n\nexport class RTCPeerConnectionIceEvent extends Event implements globalThis.RTCPeerConnectionIceEvent {\n #candidate: RTCIceCandidate;\n\n constructor(candidate: RTCIceCandidate) {\n super('icecandidate');\n\n this.#candidate = candidate;\n }\n\n get candidate(): RTCIceCandidate {\n return this.#candidate;\n }\n}\n\nexport class RTCDataChannelEvent extends Event implements globalThis.RTCDataChannelEvent {\n #channel: RTCDataChannel;\n\n constructor(type: string, eventInitDict: globalThis.RTCDataChannelEventInit) {\n super(type);\n\n if (type && !eventInitDict.channel) throw new TypeError('channel member is required');\n\n this.#channel = eventInitDict?.channel as RTCDataChannel;\n }\n\n get channel(): RTCDataChannel {\n return this.#channel;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;AAAA,IAAA,UAAA,EAAA,QAAA,CAAA;AAIO,MAAM,kCAAkC,KAAsD,CAAA;AAAA,EAGjG,YAAY,SAA4B,EAAA;AACpC,IAAA,KAAA,CAAM,cAAc,CAAA,CAAA;AAHxB,IAAA,YAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAKI,IAAA,YAAA,CAAA,IAAA,EAAK,UAAa,EAAA,SAAA,CAAA,CAAA;AAAA,GACtB;AAAA,EAEA,IAAI,SAA6B,GAAA;AAC7B,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAAA,GAChB;AACJ,CAAA;AAXI,UAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAaG,MAAM,4BAA4B,KAAgD,CAAA;AAAA,EAGrF,WAAA,CAAY,MAAc,aAAmD,EAAA;AACzE,IAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAHd,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAKI,IAAA,IAAI,QAAQ,CAAC,aAAA,CAAc,SAAe,MAAA,IAAI,UAAU,4BAA4B,CAAA,CAAA;AAEpF,IAAA,YAAA,CAAA,IAAA,EAAK,UAAW,aAAe,EAAA,OAAA,CAAA,CAAA;AAAA,GACnC;AAAA,EAEA,IAAI,OAA0B,GAAA;AAC1B,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAAA,GAChB;AACJ,CAAA;AAbI,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;"}
1
+ {"version":3,"file":"Events.cjs","sources":["../../../src/polyfill/Events.ts"],"sourcesContent":["export class RTCPeerConnectionIceEvent extends Event implements globalThis.RTCPeerConnectionIceEvent {\n #candidate: globalThis.RTCIceCandidate;\n\n constructor(candidate: globalThis.RTCIceCandidate) {\n super('icecandidate');\n\n this.#candidate = candidate;\n }\n\n get candidate(): globalThis.RTCIceCandidate {\n return this.#candidate;\n }\n}\n\nexport class RTCDataChannelEvent extends Event implements globalThis.RTCDataChannelEvent {\n #channel: globalThis.RTCDataChannel;\n\n constructor(type: string, eventInitDict: globalThis.RTCDataChannelEventInit) {\n super(type);\n\n if (type && !eventInitDict.channel) throw new TypeError('channel member is required');\n\n this.#channel = eventInitDict?.channel as globalThis.RTCDataChannel;\n }\n\n get channel(): globalThis.RTCDataChannel {\n return this.#channel;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;AAAA,IAAA,UAAA,EAAA,QAAA,CAAA;AAAO,MAAM,kCAAkC,KAAsD,CAAA;AAAA,EAGjG,YAAY,SAAuC,EAAA;AAC/C,IAAA,KAAA,CAAM,cAAc,CAAA,CAAA;AAHxB,IAAA,YAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAKI,IAAA,YAAA,CAAA,IAAA,EAAK,UAAa,EAAA,SAAA,CAAA,CAAA;AAAA,GACtB;AAAA,EAEA,IAAI,SAAwC,GAAA;AACxC,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAAA,GAChB;AACJ,CAAA;AAXI,UAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAaG,MAAM,4BAA4B,KAAgD,CAAA;AAAA,EAGrF,WAAA,CAAY,MAAc,aAAmD,EAAA;AACzE,IAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAHd,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAKI,IAAA,IAAI,QAAQ,CAAC,aAAA,CAAc,SAAe,MAAA,IAAI,UAAU,4BAA4B,CAAA,CAAA;AAEpF,IAAA,YAAA,CAAA,IAAA,EAAK,UAAW,aAAe,EAAA,OAAA,CAAA,CAAA;AAAA,GACnC;AAAA,EAEA,IAAI,OAAqC,GAAA;AACrC,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAAA,GAChB;AACJ,CAAA;AAbI,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"RTCDataChannel.cjs","sources":["../../../src/polyfill/RTCDataChannel.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as exceptions from './Exception';\nimport { DataChannel } from '../lib/index';\n\nexport default class RTCDataChannel extends EventTarget implements globalThis.RTCDataChannel {\n #dataChannel: DataChannel;\n #readyState: RTCDataChannelState;\n #bufferedAmountLowThreshold: number;\n #binaryType: BinaryType;\n #maxPacketLifeTime: number | null;\n #maxRetransmits: number | null;\n #negotiated: boolean;\n #ordered: boolean;\n\n #closeRequested = false;\n\n // events\n onbufferedamountlow: ((this: RTCDataChannel, ev: Event) => any) | null;\n onclose: ((this: RTCDataChannel, ev: Event) => any) | null;\n onclosing: ((this: RTCDataChannel, ev: Event) => any) | null;\n onerror: ((this: RTCDataChannel, ev: Event) => any) | null;\n onmessage: ((this: RTCDataChannel, ev: MessageEvent) => any) | null;\n onopen: ((this: RTCDataChannel, ev: Event) => any) | null;\n\n constructor(dataChannel: DataChannel, opts: globalThis.RTCDataChannelInit = {}) {\n super();\n\n this.#dataChannel = dataChannel;\n this.#binaryType = 'blob';\n this.#readyState = this.#dataChannel.isOpen() ? 'open' : 'connecting';\n this.#bufferedAmountLowThreshold = 0;\n this.#maxPacketLifeTime = opts.maxPacketLifeTime || null;\n this.#maxRetransmits = opts.maxRetransmits || null;\n this.#negotiated = opts.negotiated || false;\n this.#ordered = opts.ordered || true;\n\n // forward dataChannel events\n this.#dataChannel.onOpen(() => {\n this.#readyState = 'open';\n this.dispatchEvent(new Event('open', {}));\n });\n\n this.#dataChannel.onClosed(() => {\n // Simulate closing event\n if (!this.#closeRequested) {\n this.#readyState = 'closing';\n this.dispatchEvent(new Event('closing'));\n }\n\n setImmediate(() => {\n this.#readyState = 'closed';\n this.dispatchEvent(new Event('close'));\n });\n });\n\n this.#dataChannel.onError((msg) => {\n this.dispatchEvent(\n new globalThis.RTCErrorEvent('error', {\n error: new RTCError(\n {\n errorDetail: 'data-channel-failure',\n },\n msg,\n ),\n }),\n );\n });\n\n this.#dataChannel.onBufferedAmountLow(() => {\n this.dispatchEvent(new Event('bufferedamountlow'));\n });\n\n this.#dataChannel.onMessage((data) => {\n if (ArrayBuffer.isView(data)) {\n if (this.binaryType == 'arraybuffer')\n data = data.buffer;\n else\n data = Buffer.from(data.buffer);\n }\n\n this.dispatchEvent(new MessageEvent('message', { data }));\n });\n\n // forward events to properties\n this.addEventListener('message', (e) => {\n if (this.onmessage) this.onmessage(e as MessageEvent);\n });\n this.addEventListener('bufferedamountlow', (e) => {\n if (this.onbufferedamountlow) this.onbufferedamountlow(e);\n });\n this.addEventListener('error', (e) => {\n if (this.onerror) this.onerror(e);\n });\n this.addEventListener('close', (e) => {\n if (this.onclose) this.onclose(e);\n });\n this.addEventListener('closing', (e) => {\n if (this.onclosing) this.onclosing(e);\n });\n this.addEventListener('open', (e) => {\n if (this.onopen) this.onopen(e);\n });\n }\n\n set binaryType(type) {\n if (type !== 'blob' && type !== 'arraybuffer') {\n throw new DOMException(\n \"Failed to set the 'binaryType' property on 'RTCDataChannel': Unknown binary type : \" + type,\n 'TypeMismatchError',\n );\n }\n this.#binaryType = type;\n }\n\n get binaryType(): BinaryType {\n return this.#binaryType;\n }\n\n get bufferedAmount(): number {\n return this.#dataChannel.bufferedAmount();\n }\n\n get bufferedAmountLowThreshold(): number {\n return this.#bufferedAmountLowThreshold;\n }\n\n set bufferedAmountLowThreshold(value) {\n const number = Number(value) || 0;\n this.#bufferedAmountLowThreshold = number;\n this.#dataChannel.setBufferedAmountLowThreshold(number);\n }\n\n get id(): number | null {\n return this.#dataChannel.getId();\n }\n\n get label(): string {\n return this.#dataChannel.getLabel();\n }\n\n get maxPacketLifeTime(): number | null {\n return this.#maxPacketLifeTime;\n }\n\n get maxRetransmits(): number | null {\n return this.#maxRetransmits;\n }\n\n get negotiated(): boolean {\n return this.#negotiated;\n }\n\n get ordered(): boolean {\n return this.#ordered;\n }\n\n get protocol(): string {\n return this.#dataChannel.getProtocol();\n }\n\n get readyState(): globalThis.RTCDataChannelState {\n return this.#readyState;\n }\n\n send(data): void {\n if (this.#readyState !== 'open') {\n throw new exceptions.InvalidStateError(\n \"Failed to execute 'send' on 'RTCDataChannel': RTCDataChannel.readyState is not 'open'\",\n );\n }\n\n // Needs network error, type error implemented\n if (typeof data === 'string') {\n this.#dataChannel.sendMessage(data);\n } else if (data instanceof Blob) {\n data.arrayBuffer().then((ab) => {\n if (process?.versions?.bun) {\n this.#dataChannel.sendMessageBinary(Buffer.from(ab));\n } else {\n this.#dataChannel.sendMessageBinary(new Uint8Array(ab));\n }\n });\n } else if (data instanceof Uint8Array) {\n this.#dataChannel.sendMessageBinary(data);\n } else {\n if (process?.versions?.bun) {\n this.#dataChannel.sendMessageBinary(Buffer.from(data));\n } else {\n this.#dataChannel.sendMessageBinary(new Uint8Array(data));\n }\n }\n }\n\n close(): void {\n this.#closeRequested = true;\n setImmediate(() => {\n this.#dataChannel.close();\n });\n }\n}\n"],"names":["exceptions.InvalidStateError"],"mappings":"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"}
1
+ {"version":3,"file":"RTCDataChannel.cjs","sources":["../../../src/polyfill/RTCDataChannel.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as exceptions from './Exception';\nimport { DataChannel } from '../lib/index';\n\nexport default class RTCDataChannel extends EventTarget implements globalThis.RTCDataChannel {\n #dataChannel: DataChannel;\n #readyState: globalThis.RTCDataChannelState;\n #bufferedAmountLowThreshold: number;\n #binaryType: BinaryType;\n #maxPacketLifeTime: number | null;\n #maxRetransmits: number | null;\n #negotiated: boolean;\n #ordered: boolean;\n\n #closeRequested = false;\n\n // events\n onbufferedamountlow: ((this: globalThis.RTCDataChannel, ev: Event) => any) | null;\n onclose: ((this: globalThis.RTCDataChannel, ev: Event) => any) | null;\n onclosing: ((this: globalThis.RTCDataChannel, ev: Event) => any) | null;\n onerror: ((this: globalThis.RTCDataChannel, ev: Event) => any) | null;\n onmessage: ((this: globalThis.RTCDataChannel, ev: MessageEvent) => any) | null;\n onopen: ((this: globalThis.RTCDataChannel, ev: Event) => any) | null;\n\n constructor(dataChannel: DataChannel, opts: globalThis.RTCDataChannelInit = {}) {\n super();\n\n this.#dataChannel = dataChannel;\n this.#binaryType = 'blob';\n this.#readyState = this.#dataChannel.isOpen() ? 'open' : 'connecting';\n this.#bufferedAmountLowThreshold = 0;\n this.#maxPacketLifeTime = opts.maxPacketLifeTime || null;\n this.#maxRetransmits = opts.maxRetransmits || null;\n this.#negotiated = opts.negotiated || false;\n this.#ordered = opts.ordered || true;\n\n // forward dataChannel events\n this.#dataChannel.onOpen(() => {\n this.#readyState = 'open';\n this.dispatchEvent(new Event('open', {}));\n });\n\n this.#dataChannel.onClosed(() => {\n // Simulate closing event\n if (!this.#closeRequested) {\n this.#readyState = 'closing';\n this.dispatchEvent(new Event('closing'));\n }\n\n setImmediate(() => {\n this.#readyState = 'closed';\n this.dispatchEvent(new Event('close'));\n });\n });\n\n this.#dataChannel.onError((msg) => {\n this.dispatchEvent(\n new globalThis.RTCErrorEvent('error', {\n error: new RTCError(\n {\n errorDetail: 'data-channel-failure',\n },\n msg,\n ),\n }),\n );\n });\n\n this.#dataChannel.onBufferedAmountLow(() => {\n this.dispatchEvent(new Event('bufferedamountlow'));\n });\n\n this.#dataChannel.onMessage((data) => {\n if (ArrayBuffer.isView(data)) {\n if (this.binaryType == 'arraybuffer')\n data = data.buffer;\n else\n data = Buffer.from(data.buffer);\n }\n\n this.dispatchEvent(new MessageEvent('message', { data }));\n });\n\n // forward events to properties\n this.addEventListener('message', (e) => {\n if (this.onmessage) this.onmessage(e as MessageEvent);\n });\n this.addEventListener('bufferedamountlow', (e) => {\n if (this.onbufferedamountlow) this.onbufferedamountlow(e);\n });\n this.addEventListener('error', (e) => {\n if (this.onerror) this.onerror(e);\n });\n this.addEventListener('close', (e) => {\n if (this.onclose) this.onclose(e);\n });\n this.addEventListener('closing', (e) => {\n if (this.onclosing) this.onclosing(e);\n });\n this.addEventListener('open', (e) => {\n if (this.onopen) this.onopen(e);\n });\n }\n\n set binaryType(type) {\n if (type !== 'blob' && type !== 'arraybuffer') {\n throw new DOMException(\n \"Failed to set the 'binaryType' property on 'RTCDataChannel': Unknown binary type : \" + type,\n 'TypeMismatchError',\n );\n }\n this.#binaryType = type;\n }\n\n get binaryType(): BinaryType {\n return this.#binaryType;\n }\n\n get bufferedAmount(): number {\n return this.#dataChannel.bufferedAmount();\n }\n\n get bufferedAmountLowThreshold(): number {\n return this.#bufferedAmountLowThreshold;\n }\n\n set bufferedAmountLowThreshold(value) {\n const number = Number(value) || 0;\n this.#bufferedAmountLowThreshold = number;\n this.#dataChannel.setBufferedAmountLowThreshold(number);\n }\n\n get id(): number | null {\n return this.#dataChannel.getId();\n }\n\n get label(): string {\n return this.#dataChannel.getLabel();\n }\n\n get maxPacketLifeTime(): number | null {\n return this.#maxPacketLifeTime;\n }\n\n get maxRetransmits(): number | null {\n return this.#maxRetransmits;\n }\n\n get negotiated(): boolean {\n return this.#negotiated;\n }\n\n get ordered(): boolean {\n return this.#ordered;\n }\n\n get protocol(): string {\n return this.#dataChannel.getProtocol();\n }\n\n get readyState(): globalThis.RTCDataChannelState {\n return this.#readyState;\n }\n\n send(data): void {\n if (this.#readyState !== 'open') {\n throw new exceptions.InvalidStateError(\n \"Failed to execute 'send' on 'RTCDataChannel': RTCDataChannel.readyState is not 'open'\",\n );\n }\n\n // Needs network error, type error implemented\n if (typeof data === 'string') {\n this.#dataChannel.sendMessage(data);\n } else if (data instanceof Blob) {\n data.arrayBuffer().then((ab) => {\n if (process?.versions?.bun) {\n this.#dataChannel.sendMessageBinary(Buffer.from(ab));\n } else {\n this.#dataChannel.sendMessageBinary(new Uint8Array(ab));\n }\n });\n } else if (data instanceof Uint8Array) {\n this.#dataChannel.sendMessageBinary(data);\n } else {\n if (process?.versions?.bun) {\n this.#dataChannel.sendMessageBinary(Buffer.from(data));\n } else {\n this.#dataChannel.sendMessageBinary(new Uint8Array(data));\n }\n }\n }\n\n close(): void {\n this.#closeRequested = true;\n setImmediate(() => {\n this.#dataChannel.close();\n });\n }\n}\n"],"names":["exceptions.InvalidStateError"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RTCDtlsTransport.cjs","sources":["../../../src/polyfill/RTCDtlsTransport.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport RTCIceTransport from './RTCIceTransport';\nimport RTCPeerConnection from './RTCPeerConnection';\n\nexport default class RTCDtlsTransport extends EventTarget implements globalThis.RTCDtlsTransport {\n #pc: RTCPeerConnection = null;\n #iceTransport = null;\n\n onstatechange: ((this: RTCDtlsTransport, ev: Event) => any) | null = null;\n onerror: ((this: RTCDtlsTransport, ev: Event) => any) | null = null;\n\n constructor(init: { pc: RTCPeerConnection, extraFunctions }) {\n super();\n this.#pc = init.pc;\n\n this.#iceTransport = new RTCIceTransport({ pc: init.pc, extraFunctions: init.extraFunctions });\n\n // forward peerConnection events\n this.#pc.addEventListener('connectionstatechange', () => {\n this.dispatchEvent(new Event('statechange'));\n });\n\n // forward events to properties\n this.addEventListener('statechange', (e) => {\n if (this.onstatechange) this.onstatechange(e);\n });\n }\n\n get iceTransport(): RTCIceTransport {\n return this.#iceTransport;\n }\n\n get state(): RTCDtlsTransportState {\n // reduce state from new, connecting, connected, disconnected, failed, closed, unknown\n // to RTCDtlsTRansport states new, connecting, connected, closed, failed\n let state = this.#pc ? this.#pc.connectionState : 'new';\n if (state === 'disconnected') {\n state = 'closed';\n }\n return state;\n }\n\n getRemoteCertificates(): ArrayBuffer[] {\n // TODO: implement\n return [new ArrayBuffer(0)];\n }\n}\n"],"names":["RTCIceTransport"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAA,GAAA,EAAA,aAAA,CAAA;AAIA,MAAqB,yBAAyB,WAAmD,CAAA;AAAA,EAO7F,YAAY,IAAiD,EAAA;AACzD,IAAM,KAAA,EAAA,CAAA;AAPV,IAAyB,YAAA,CAAA,IAAA,EAAA,GAAA,EAAA,IAAA,CAAA,CAAA;AACzB,IAAgB,YAAA,CAAA,IAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AAEhB,IAAqE,aAAA,CAAA,IAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AACrE,IAA+D,aAAA,CAAA,IAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAI3D,IAAA,YAAA,CAAA,IAAA,EAAK,KAAM,IAAK,CAAA,EAAA,CAAA,CAAA;AAEhB,IAAK,YAAA,CAAA,IAAA,EAAA,aAAA,EAAgB,IAAIA,uBAAA,CAAgB,EAAE,EAAA,EAAI,KAAK,EAAI,EAAA,cAAA,EAAgB,IAAK,CAAA,cAAA,EAAgB,CAAA,CAAA,CAAA;AAG7F,IAAK,YAAA,CAAA,IAAA,EAAA,GAAA,CAAA,CAAI,gBAAiB,CAAA,uBAAA,EAAyB,MAAM;AACrD,MAAA,IAAA,CAAK,aAAc,CAAA,IAAI,KAAM,CAAA,aAAa,CAAC,CAAA,CAAA;AAAA,KAC9C,CAAA,CAAA;AAGD,IAAK,IAAA,CAAA,gBAAA,CAAiB,aAAe,EAAA,CAAC,CAAM,KAAA;AACxC,MAAA,IAAI,IAAK,CAAA,aAAA,EAAoB,IAAA,CAAA,aAAA,CAAc,CAAC,CAAA,CAAA;AAAA,KAC/C,CAAA,CAAA;AAAA,GACL;AAAA,EAEA,IAAI,YAAgC,GAAA;AAChC,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,IAAI,KAA+B,GAAA;AAG/B,IAAA,IAAI,KAAQ,GAAA,YAAA,CAAA,IAAA,EAAK,GAAM,CAAA,GAAA,YAAA,CAAA,IAAA,EAAK,KAAI,eAAkB,GAAA,KAAA,CAAA;AAClD,IAAA,IAAI,UAAU,cAAgB,EAAA;AAC1B,MAAQ,KAAA,GAAA,QAAA,CAAA;AAAA,KACZ;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACX;AAAA,EAEA,qBAAuC,GAAA;AAEnC,IAAA,OAAO,CAAC,IAAI,WAAY,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,GAC9B;AACJ,CAAA;AAzCI,GAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,aAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
1
+ {"version":3,"file":"RTCDtlsTransport.cjs","sources":["../../../src/polyfill/RTCDtlsTransport.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport RTCIceTransport from './RTCIceTransport';\n\nexport default class RTCDtlsTransport extends EventTarget implements globalThis.RTCDtlsTransport {\n #pc: globalThis.RTCPeerConnection = null;\n #iceTransport = null;\n\n onstatechange: ((this: globalThis.RTCDtlsTransport, ev: Event) => any) | null = null;\n onerror: ((this: globalThis.RTCDtlsTransport, ev: Event) => any) | null = null;\n\n constructor(init: { pc: globalThis.RTCPeerConnection, extraFunctions }) {\n super();\n this.#pc = init.pc;\n\n this.#iceTransport = new RTCIceTransport({ pc: init.pc, extraFunctions: init.extraFunctions });\n\n // forward peerConnection events\n this.#pc.addEventListener('connectionstatechange', () => {\n this.dispatchEvent(new Event('statechange'));\n });\n\n // forward events to properties\n this.addEventListener('statechange', (e) => {\n if (this.onstatechange) this.onstatechange(e);\n });\n }\n\n get iceTransport(): globalThis.RTCIceTransport {\n return this.#iceTransport;\n }\n\n get state(): globalThis.RTCDtlsTransportState {\n // reduce state from new, connecting, connected, disconnected, failed, closed, unknown\n // to RTCDtlsTRansport states new, connecting, connected, closed, failed\n let state = this.#pc ? this.#pc.connectionState : 'new';\n if (state === 'disconnected') {\n state = 'closed';\n }\n return state;\n }\n\n getRemoteCertificates(): ArrayBuffer[] {\n // TODO: implement\n return [new ArrayBuffer(0)];\n }\n}\n"],"names":["RTCIceTransport"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAA,GAAA,EAAA,aAAA,CAAA;AAGA,MAAqB,yBAAyB,WAAmD,CAAA;AAAA,EAO7F,YAAY,IAA4D,EAAA;AACpE,IAAM,KAAA,EAAA,CAAA;AAPV,IAAoC,YAAA,CAAA,IAAA,EAAA,GAAA,EAAA,IAAA,CAAA,CAAA;AACpC,IAAgB,YAAA,CAAA,IAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AAEhB,IAAgF,aAAA,CAAA,IAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAChF,IAA0E,aAAA,CAAA,IAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAItE,IAAA,YAAA,CAAA,IAAA,EAAK,KAAM,IAAK,CAAA,EAAA,CAAA,CAAA;AAEhB,IAAK,YAAA,CAAA,IAAA,EAAA,aAAA,EAAgB,IAAIA,uBAAA,CAAgB,EAAE,EAAA,EAAI,KAAK,EAAI,EAAA,cAAA,EAAgB,IAAK,CAAA,cAAA,EAAgB,CAAA,CAAA,CAAA;AAG7F,IAAK,YAAA,CAAA,IAAA,EAAA,GAAA,CAAA,CAAI,gBAAiB,CAAA,uBAAA,EAAyB,MAAM;AACrD,MAAA,IAAA,CAAK,aAAc,CAAA,IAAI,KAAM,CAAA,aAAa,CAAC,CAAA,CAAA;AAAA,KAC9C,CAAA,CAAA;AAGD,IAAK,IAAA,CAAA,gBAAA,CAAiB,aAAe,EAAA,CAAC,CAAM,KAAA;AACxC,MAAA,IAAI,IAAK,CAAA,aAAA,EAAoB,IAAA,CAAA,aAAA,CAAc,CAAC,CAAA,CAAA;AAAA,KAC/C,CAAA,CAAA;AAAA,GACL;AAAA,EAEA,IAAI,YAA2C,GAAA;AAC3C,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,IAAI,KAA0C,GAAA;AAG1C,IAAA,IAAI,KAAQ,GAAA,YAAA,CAAA,IAAA,EAAK,GAAM,CAAA,GAAA,YAAA,CAAA,IAAA,EAAK,KAAI,eAAkB,GAAA,KAAA,CAAA;AAClD,IAAA,IAAI,UAAU,cAAgB,EAAA;AAC1B,MAAQ,KAAA,GAAA,QAAA,CAAA;AAAA,KACZ;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACX;AAAA,EAEA,qBAAuC,GAAA;AAEnC,IAAA,OAAO,CAAC,IAAI,WAAY,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,GAC9B;AACJ,CAAA;AAzCI,GAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,aAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"RTCError.cjs","sources":["../../../src/polyfill/RTCError.ts"],"sourcesContent":["export default class RTCError extends DOMException implements globalThis.RTCError {\n #errorDetail: RTCErrorDetailType;\n #receivedAlert: number | null;\n #sctpCauseCode: number | null;\n #sdpLineNumber: number | null;\n #sentAlert: number | null;\n\n constructor(init: globalThis.RTCErrorInit, message?: string) {\n super(message, 'OperationError');\n\n if (!init || !init.errorDetail) throw new TypeError('Cannot construct RTCError, errorDetail is required');\n if (\n [\n 'data-channel-failure',\n 'dtls-failure',\n 'fingerprint-failure',\n 'hardware-encoder-error',\n 'hardware-encoder-not-available',\n 'sctp-failure',\n 'sdp-syntax-error',\n ].indexOf(init.errorDetail) === -1\n )\n throw new TypeError('Cannot construct RTCError, errorDetail is invalid');\n\n this.#errorDetail = init.errorDetail;\n this.#receivedAlert = init.receivedAlert ?? null;\n this.#sctpCauseCode = init.sctpCauseCode ?? null;\n this.#sdpLineNumber = init.sdpLineNumber ?? null;\n this.#sentAlert = init.sentAlert ?? null;\n }\n\n get errorDetail(): globalThis.RTCErrorDetailType {\n return this.#errorDetail;\n }\n\n set errorDetail(_value) {\n throw new TypeError('Cannot set errorDetail, it is read-only');\n }\n\n get receivedAlert(): number | null {\n return this.#receivedAlert;\n }\n\n set receivedAlert(_value) {\n throw new TypeError('Cannot set receivedAlert, it is read-only');\n }\n\n get sctpCauseCode(): number | null {\n return this.#sctpCauseCode;\n }\n\n set sctpCauseCode(_value) {\n throw new TypeError('Cannot set sctpCauseCode, it is read-only');\n }\n\n get sdpLineNumber(): number | null {\n return this.#sdpLineNumber;\n }\n\n set sdpLineNumber(_value) {\n throw new TypeError('Cannot set sdpLineNumber, it is read-only');\n }\n\n get sentAlert(): number | null {\n return this.#sentAlert;\n }\n\n set sentAlert(_value) {\n throw new TypeError('Cannot set sentAlert, it is read-only');\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RTCError.cjs","sources":["../../../src/polyfill/RTCError.ts"],"sourcesContent":["export default class RTCError extends DOMException implements globalThis.RTCError {\n #errorDetail: globalThis.RTCErrorDetailType;\n #receivedAlert: number | null;\n #sctpCauseCode: number | null;\n #sdpLineNumber: number | null;\n #sentAlert: number | null;\n\n constructor(init: globalThis.RTCErrorInit, message?: string) {\n super(message, 'OperationError');\n\n if (!init || !init.errorDetail) throw new TypeError('Cannot construct RTCError, errorDetail is required');\n if (\n [\n 'data-channel-failure',\n 'dtls-failure',\n 'fingerprint-failure',\n 'hardware-encoder-error',\n 'hardware-encoder-not-available',\n 'sctp-failure',\n 'sdp-syntax-error',\n ].indexOf(init.errorDetail) === -1\n )\n throw new TypeError('Cannot construct RTCError, errorDetail is invalid');\n\n this.#errorDetail = init.errorDetail;\n this.#receivedAlert = init.receivedAlert ?? null;\n this.#sctpCauseCode = init.sctpCauseCode ?? null;\n this.#sdpLineNumber = init.sdpLineNumber ?? null;\n this.#sentAlert = init.sentAlert ?? null;\n }\n\n get errorDetail(): globalThis.RTCErrorDetailType {\n return this.#errorDetail;\n }\n\n set errorDetail(_value) {\n throw new TypeError('Cannot set errorDetail, it is read-only');\n }\n\n get receivedAlert(): number | null {\n return this.#receivedAlert;\n }\n\n set receivedAlert(_value) {\n throw new TypeError('Cannot set receivedAlert, it is read-only');\n }\n\n get sctpCauseCode(): number | null {\n return this.#sctpCauseCode;\n }\n\n set sctpCauseCode(_value) {\n throw new TypeError('Cannot set sctpCauseCode, it is read-only');\n }\n\n get sdpLineNumber(): number | null {\n return this.#sdpLineNumber;\n }\n\n set sdpLineNumber(_value) {\n throw new TypeError('Cannot set sdpLineNumber, it is read-only');\n }\n\n get sentAlert(): number | null {\n return this.#sentAlert;\n }\n\n set sentAlert(_value) {\n throw new TypeError('Cannot set sentAlert, it is read-only');\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RTCIceTransport.cjs","sources":["../../../src/polyfill/RTCIceTransport.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport RTCIceCandidate from './RTCIceCandidate';\nimport RTCPeerConnection from './RTCPeerConnection';\n\nexport default class RTCIceTransport extends EventTarget implements globalThis.RTCIceTransport {\n #pc: RTCPeerConnection = null;\n #extraFunctions = null;\n\n ongatheringstatechange: ((this: RTCIceTransport, ev: Event) => any) | null = null;\n onselectedcandidatepairchange: ((this: RTCIceTransport, ev: Event) => any) | null = null;\n onstatechange: ((this: RTCIceTransport, ev: Event) => any) | null = null;\n\n constructor(init: { pc: RTCPeerConnection, extraFunctions }) {\n super();\n this.#pc = init.pc;\n this.#extraFunctions = init.extraFunctions;\n\n // forward peerConnection events\n this.#pc.addEventListener('icegatheringstatechange', () => {\n this.dispatchEvent(new Event('gatheringstatechange'));\n });\n this.#pc.addEventListener('iceconnectionstatechange', () => {\n this.dispatchEvent(new Event('statechange'));\n });\n\n // forward events to properties\n this.addEventListener('gatheringstatechange', (e) => {\n if (this.ongatheringstatechange) this.ongatheringstatechange(e);\n });\n this.addEventListener('statechange', (e) => {\n if (this.onstatechange) this.onstatechange(e);\n });\n }\n\n get component(): globalThis.RTCIceComponent {\n const cp = this.getSelectedCandidatePair();\n if (!cp) return null;\n return cp.local.component;\n }\n\n get gatheringState(): globalThis.RTCIceGatheringState {\n return this.#pc ? this.#pc.iceGatheringState : 'new';\n }\n\n get role(): string {\n return this.#pc.localDescription.type == 'offer' ? 'controlling' : 'controlled';\n }\n\n get state(): globalThis.RTCIceTransportState {\n return this.#pc ? this.#pc.iceConnectionState : 'new';\n }\n\n getLocalCandidates(): RTCIceCandidate[] {\n return this.#pc ? this.#extraFunctions.localCandidates() : [];\n }\n\n getLocalParameters(): any {\n /** */\n }\n\n getRemoteCandidates(): RTCIceCandidate[] {\n return this.#pc ? this.#extraFunctions.remoteCandidates() : [];\n }\n\n getRemoteParameters(): any {\n /** */\n }\n\n getSelectedCandidatePair(): globalThis.RTCIceCandidatePair | null {\n const cp = this.#extraFunctions.selectedCandidatePair();\n if (!cp) return null;\n return {\n local: new RTCIceCandidate({\n candidate: cp.local.candidate,\n sdpMid: cp.local.mid,\n }),\n remote: new RTCIceCandidate({\n candidate: cp.remote.candidate,\n sdpMid: cp.remote.mid,\n }),\n };\n }\n}\n"],"names":["RTCIceCandidate"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAA,GAAA,EAAA,eAAA,CAAA;AAIA,MAAqB,wBAAwB,WAAkD,CAAA;AAAA,EAQ3F,YAAY,IAAiD,EAAA;AACzD,IAAM,KAAA,EAAA,CAAA;AARV,IAAyB,YAAA,CAAA,IAAA,EAAA,GAAA,EAAA,IAAA,CAAA,CAAA;AACzB,IAAkB,YAAA,CAAA,IAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAElB,IAA6E,aAAA,CAAA,IAAA,EAAA,wBAAA,EAAA,IAAA,CAAA,CAAA;AAC7E,IAAoF,aAAA,CAAA,IAAA,EAAA,+BAAA,EAAA,IAAA,CAAA,CAAA;AACpF,IAAoE,aAAA,CAAA,IAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAIhE,IAAA,YAAA,CAAA,IAAA,EAAK,KAAM,IAAK,CAAA,EAAA,CAAA,CAAA;AAChB,IAAA,YAAA,CAAA,IAAA,EAAK,iBAAkB,IAAK,CAAA,cAAA,CAAA,CAAA;AAG5B,IAAK,YAAA,CAAA,IAAA,EAAA,GAAA,CAAA,CAAI,gBAAiB,CAAA,yBAAA,EAA2B,MAAM;AACvD,MAAA,IAAA,CAAK,aAAc,CAAA,IAAI,KAAM,CAAA,sBAAsB,CAAC,CAAA,CAAA;AAAA,KACvD,CAAA,CAAA;AACD,IAAK,YAAA,CAAA,IAAA,EAAA,GAAA,CAAA,CAAI,gBAAiB,CAAA,0BAAA,EAA4B,MAAM;AACxD,MAAA,IAAA,CAAK,aAAc,CAAA,IAAI,KAAM,CAAA,aAAa,CAAC,CAAA,CAAA;AAAA,KAC9C,CAAA,CAAA;AAGD,IAAK,IAAA,CAAA,gBAAA,CAAiB,sBAAwB,EAAA,CAAC,CAAM,KAAA;AACjD,MAAA,IAAI,IAAK,CAAA,sBAAA,EAA6B,IAAA,CAAA,sBAAA,CAAuB,CAAC,CAAA,CAAA;AAAA,KACjE,CAAA,CAAA;AACD,IAAK,IAAA,CAAA,gBAAA,CAAiB,aAAe,EAAA,CAAC,CAAM,KAAA;AACxC,MAAA,IAAI,IAAK,CAAA,aAAA,EAAoB,IAAA,CAAA,aAAA,CAAc,CAAC,CAAA,CAAA;AAAA,KAC/C,CAAA,CAAA;AAAA,GACL;AAAA,EAEA,IAAI,SAAwC,GAAA;AACxC,IAAM,MAAA,EAAA,GAAK,KAAK,wBAAyB,EAAA,CAAA;AACzC,IAAI,IAAA,CAAC,IAAW,OAAA,IAAA,CAAA;AAChB,IAAA,OAAO,GAAG,KAAM,CAAA,SAAA,CAAA;AAAA,GACpB;AAAA,EAEA,IAAI,cAAkD,GAAA;AAClD,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,GAAM,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,CAAI,iBAAoB,GAAA,KAAA,CAAA;AAAA,GACnD;AAAA,EAEA,IAAI,IAAe,GAAA;AACf,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,CAAI,gBAAiB,CAAA,IAAA,IAAQ,UAAU,aAAgB,GAAA,YAAA,CAAA;AAAA,GACvE;AAAA,EAEA,IAAI,KAAyC,GAAA;AACzC,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,GAAM,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,CAAI,kBAAqB,GAAA,KAAA,CAAA;AAAA,GACpD;AAAA,EAEA,kBAAwC,GAAA;AACpC,IAAA,OAAO,mBAAK,GAAM,CAAA,GAAA,YAAA,CAAA,IAAA,EAAK,eAAgB,CAAA,CAAA,eAAA,KAAoB,EAAC,CAAA;AAAA,GAChE;AAAA,EAEA,kBAA0B,GAAA;AAAA,GAE1B;AAAA,EAEA,mBAAyC,GAAA;AACrC,IAAA,OAAO,mBAAK,GAAM,CAAA,GAAA,YAAA,CAAA,IAAA,EAAK,eAAgB,CAAA,CAAA,gBAAA,KAAqB,EAAC,CAAA;AAAA,GACjE;AAAA,EAEA,mBAA2B,GAAA;AAAA,GAE3B;AAAA,EAEA,wBAAkE,GAAA;AAC9D,IAAM,MAAA,EAAA,GAAK,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,qBAAsB,EAAA,CAAA;AACtD,IAAI,IAAA,CAAC,IAAW,OAAA,IAAA,CAAA;AAChB,IAAO,OAAA;AAAA,MACH,KAAA,EAAO,IAAIA,uBAAgB,CAAA;AAAA,QACvB,SAAA,EAAW,GAAG,KAAM,CAAA,SAAA;AAAA,QACpB,MAAA,EAAQ,GAAG,KAAM,CAAA,GAAA;AAAA,OACpB,CAAA;AAAA,MACD,MAAA,EAAQ,IAAIA,uBAAgB,CAAA;AAAA,QACxB,SAAA,EAAW,GAAG,MAAO,CAAA,SAAA;AAAA,QACrB,MAAA,EAAQ,GAAG,MAAO,CAAA,GAAA;AAAA,OACrB,CAAA;AAAA,KACL,CAAA;AAAA,GACJ;AACJ,CAAA;AA7EI,GAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,eAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
1
+ {"version":3,"file":"RTCIceTransport.cjs","sources":["../../../src/polyfill/RTCIceTransport.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport RTCIceCandidate from './RTCIceCandidate';\n\nexport default class RTCIceTransport extends EventTarget implements globalThis.RTCIceTransport {\n #pc: globalThis.RTCPeerConnection = null;\n #extraFunctions = null;\n\n ongatheringstatechange: ((this: globalThis.RTCIceTransport, ev: Event) => any) | null = null;\n onselectedcandidatepairchange: ((this: globalThis.RTCIceTransport, ev: Event) => any) | null = null;\n onstatechange: ((this: globalThis.RTCIceTransport, ev: Event) => any) | null = null;\n\n constructor(init: { pc: globalThis.RTCPeerConnection, extraFunctions }) {\n super();\n this.#pc = init.pc;\n this.#extraFunctions = init.extraFunctions;\n\n // forward peerConnection events\n this.#pc.addEventListener('icegatheringstatechange', () => {\n this.dispatchEvent(new Event('gatheringstatechange'));\n });\n this.#pc.addEventListener('iceconnectionstatechange', () => {\n this.dispatchEvent(new Event('statechange'));\n });\n\n // forward events to properties\n this.addEventListener('gatheringstatechange', (e) => {\n if (this.ongatheringstatechange) this.ongatheringstatechange(e);\n });\n this.addEventListener('statechange', (e) => {\n if (this.onstatechange) this.onstatechange(e);\n });\n }\n\n get component(): globalThis.RTCIceComponent {\n const cp = this.getSelectedCandidatePair();\n if (!cp) return null;\n return cp.local.component;\n }\n\n get gatheringState(): globalThis.RTCIceGatheringState {\n return this.#pc ? this.#pc.iceGatheringState : 'new';\n }\n\n get role(): string {\n return this.#pc.localDescription.type == 'offer' ? 'controlling' : 'controlled';\n }\n\n get state(): globalThis.RTCIceTransportState {\n return this.#pc ? this.#pc.iceConnectionState : 'new';\n }\n\n getLocalCandidates(): globalThis.RTCIceCandidate[] {\n return this.#pc ? this.#extraFunctions.localCandidates() : [];\n }\n\n getLocalParameters(): any {\n /** */\n }\n\n getRemoteCandidates(): globalThis.RTCIceCandidate[] {\n return this.#pc ? this.#extraFunctions.remoteCandidates() : [];\n }\n\n getRemoteParameters(): any {\n /** */\n }\n\n getSelectedCandidatePair(): globalThis.RTCIceCandidatePair | null {\n const cp = this.#extraFunctions.selectedCandidatePair();\n if (!cp) return null;\n return {\n local: new RTCIceCandidate({\n candidate: cp.local.candidate,\n sdpMid: cp.local.mid,\n }),\n remote: new RTCIceCandidate({\n candidate: cp.remote.candidate,\n sdpMid: cp.remote.mid,\n }),\n };\n }\n}\n"],"names":["RTCIceCandidate"],"mappings":"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"}
@@ -60,7 +60,7 @@ class RTCPeerConnection extends EventTarget {
60
60
  __privateSet(this, _canTrickleIceCandidates, null);
61
61
  try {
62
62
  const peerIdentity = config?.peerIdentity ?? `peer-${getRandomString(7)}`;
63
- __privateSet(this, _peerConnection, config.peerConnection ?? new index.PeerConnection(
63
+ __privateSet(this, _peerConnection, config?.peerConnection ?? new index.PeerConnection(
64
64
  peerIdentity,
65
65
  {
66
66
  ...config,
@@ -1 +1 @@
1
- {"version":3,"file":"RTCPeerConnection.cjs","sources":["../../../src/polyfill/RTCPeerConnection.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { SelectedCandidateInfo } from '../lib/types';\nimport { PeerConnection } from '../lib/index';\nimport RTCSessionDescription from './RTCSessionDescription';\nimport RTCDataChannel from './RTCDataChannel';\nimport RTCIceCandidate from './RTCIceCandidate';\nimport { RTCDataChannelEvent, RTCPeerConnectionIceEvent } from './Events';\nimport RTCSctpTransport from './RTCSctpTransport';\nimport * as exceptions from './Exception';\nimport RTCCertificate from './RTCCertificate';\n\n// extend RTCConfiguration with peerIdentity\ninterface RTCConfiguration extends globalThis.RTCConfiguration {\n peerIdentity?: string;\n peerConnection?: PeerConnection;\n}\n\nexport default class RTCPeerConnection extends EventTarget implements globalThis.RTCPeerConnection {\n static async generateCertificate(): Promise<RTCCertificate> {\n throw new DOMException('Not implemented');\n }\n\n #peerConnection: PeerConnection;\n #localOffer: any;\n #localAnswer: any;\n #dataChannels: Set<RTCDataChannel>;\n #dataChannelsClosed = 0;\n #config: RTCConfiguration;\n #canTrickleIceCandidates: boolean | null;\n #sctp: RTCSctpTransport;\n\n #localCandidates: RTCIceCandidate[] = [];\n #remoteCandidates: RTCIceCandidate[] = [];\n\n // events\n onconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;\n ondatachannel: ((this: RTCPeerConnection, ev: RTCDataChannelEvent) => any) | null;\n onicecandidate: ((this: RTCPeerConnection, ev: RTCPeerConnectionIceEvent) => any) | null;\n onicecandidateerror: ((this: RTCPeerConnection, ev: Event) => any) | null;\n oniceconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;\n onicegatheringstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;\n onnegotiationneeded: ((this: RTCPeerConnection, ev: Event) => any) | null;\n onsignalingstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;\n ontrack: ((this: RTCPeerConnection, ev: globalThis.RTCTrackEvent) => any) | null;\n\n private _checkConfiguration(config: RTCConfiguration): void {\n if (config && config.iceServers === undefined) config.iceServers = [];\n if (config && config.iceTransportPolicy === undefined) config.iceTransportPolicy = 'all';\n\n if (config?.iceServers === null) throw new TypeError('IceServers cannot be null');\n\n // Check for all the properties of iceServers\n if (Array.isArray(config?.iceServers)) {\n for (let i = 0; i < config.iceServers.length; i++) {\n if (config.iceServers[i] === null) throw new TypeError('IceServers cannot be null');\n if (config.iceServers[i] === undefined) throw new TypeError('IceServers cannot be undefined');\n if (Object.keys(config.iceServers[i]).length === 0) throw new TypeError('IceServers cannot be empty');\n\n // If iceServers is string convert to array\n if (typeof config.iceServers[i].urls === 'string')\n config.iceServers[i].urls = [config.iceServers[i].urls as string];\n\n // urls can not be empty\n if ((config.iceServers[i].urls as string[])?.some((url) => url == ''))\n throw new exceptions.SyntaxError('IceServers urls cannot be empty');\n\n // urls should be valid URLs and match the protocols \"stun:|turn:|turns:\"\n if (\n (config.iceServers[i].urls as string[])?.some(\n (url) => {\n try {\n const parsedURL = new URL(url)\n\n return !/^(stun:|turn:|turns:)$/.test(parsedURL.protocol)\n } catch (error) {\n return true\n }\n },\n )\n )\n throw new exceptions.SyntaxError('IceServers urls wrong format');\n\n // If this is a turn server check for username and credential\n if ((config.iceServers[i].urls as string[])?.some((url) => url.startsWith('turn'))) {\n if (!config.iceServers[i].username)\n throw new exceptions.InvalidAccessError('IceServers username cannot be null');\n if (!config.iceServers[i].credential)\n throw new exceptions.InvalidAccessError('IceServers username cannot be undefined');\n }\n\n // length of urls can not be 0\n if (config.iceServers[i].urls?.length === 0)\n throw new exceptions.SyntaxError('IceServers urls cannot be empty');\n }\n }\n\n if (\n config &&\n config.iceTransportPolicy &&\n config.iceTransportPolicy !== 'all' &&\n config.iceTransportPolicy !== 'relay'\n )\n throw new TypeError('IceTransportPolicy must be either \"all\" or \"relay\"');\n }\n\n setConfiguration(config: RTCConfiguration): void {\n this._checkConfiguration(config);\n this.#config = config;\n }\n\n\n\n constructor(config: RTCConfiguration = { iceServers: [], iceTransportPolicy: 'all' }) {\n super();\n\n this._checkConfiguration(config);\n this.#config = config;\n this.#localOffer = createDeferredPromise();\n this.#localAnswer = createDeferredPromise();\n this.#dataChannels = new Set();\n this.#canTrickleIceCandidates = null;\n\n try {\n const peerIdentity = (config as any)?.peerIdentity ?? `peer-${getRandomString(7)}`;\n this.#peerConnection = config.peerConnection ?? new PeerConnection(peerIdentity,\n {\n ...config,\n iceServers:\n config?.iceServers\n ?.map((server) => {\n const urls = Array.isArray(server.urls) ? server.urls : [server.urls];\n\n return urls.map((url) => {\n if (server.username && server.credential) {\n const [protocol, rest] = url.split(/:(.*)/);\n return `${protocol}:${server.username}:${server.credential}@${rest}`;\n }\n return url;\n });\n })\n .flat() ?? [],\n },\n );\n } catch (error) {\n if (!error || !error.message) throw new exceptions.NotFoundError('Unknown error');\n throw new exceptions.SyntaxError(error.message);\n }\n\n // forward peerConnection events\n this.#peerConnection.onStateChange(() => {\n this.dispatchEvent(new Event('connectionstatechange'));\n });\n\n this.#peerConnection.onIceStateChange(() => {\n this.dispatchEvent(new Event('iceconnectionstatechange'));\n });\n\n this.#peerConnection.onSignalingStateChange(() => {\n this.dispatchEvent(new Event('signalingstatechange'));\n });\n\n this.#peerConnection.onGatheringStateChange(() => {\n this.dispatchEvent(new Event('icegatheringstatechange'));\n });\n\n this.#peerConnection.onDataChannel((channel) => {\n const dc = new RTCDataChannel(channel);\n this.#dataChannels.add(dc);\n this.dispatchEvent(new RTCDataChannelEvent('datachannel', { channel: dc }));\n });\n\n this.#peerConnection.onLocalDescription((sdp, type) => {\n if (type === 'offer') {\n this.#localOffer.resolve({ sdp, type });\n }\n\n if (type === 'answer') {\n this.#localAnswer.resolve({ sdp, type });\n }\n });\n\n this.#peerConnection.onLocalCandidate((candidate, sdpMid) => {\n if (sdpMid === 'unspec') {\n this.#localAnswer.reject(new Error(`Invalid description type ${sdpMid}`));\n return;\n }\n\n this.#localCandidates.push(new RTCIceCandidate({ candidate, sdpMid }));\n this.dispatchEvent(new RTCPeerConnectionIceEvent(new RTCIceCandidate({ candidate, sdpMid })));\n });\n\n // forward events to properties\n this.addEventListener('connectionstatechange', (e) => {\n if (this.onconnectionstatechange) this.onconnectionstatechange(e);\n });\n this.addEventListener('signalingstatechange', (e) => {\n if (this.onsignalingstatechange) this.onsignalingstatechange(e);\n });\n this.addEventListener('iceconnectionstatechange', (e) => {\n if (this.oniceconnectionstatechange) this.oniceconnectionstatechange(e);\n });\n this.addEventListener('icegatheringstatechange', (e) => {\n if (this.onicegatheringstatechange) this.onicegatheringstatechange(e);\n });\n this.addEventListener('datachannel', (e) => {\n if (this.ondatachannel) this.ondatachannel(e as RTCDataChannelEvent);\n });\n this.addEventListener('icecandidate', (e) => {\n if (this.onicecandidate) this.onicecandidate(e as RTCPeerConnectionIceEvent);\n });\n\n this.#sctp = new RTCSctpTransport({\n pc: this,\n extraFunctions: {\n maxDataChannelId: (): number => {\n return this.#peerConnection.maxDataChannelId();\n },\n maxMessageSize: (): number => {\n return this.#peerConnection.maxMessageSize();\n },\n localCandidates: (): RTCIceCandidate[] => {\n return this.#localCandidates;\n },\n remoteCandidates: (): RTCIceCandidate[] => {\n return this.#remoteCandidates;\n },\n selectedCandidatePair: (): { local: SelectedCandidateInfo; remote: SelectedCandidateInfo } | null => {\n return this.#peerConnection.getSelectedCandidatePair();\n },\n },\n });\n }\n\n get canTrickleIceCandidates(): boolean | null {\n return this.#canTrickleIceCandidates;\n }\n\n get connectionState(): globalThis.RTCPeerConnectionState {\n return this.#peerConnection.state();\n }\n\n get iceConnectionState(): globalThis.RTCIceConnectionState {\n let state = this.#peerConnection.iceState();\n // libdatachannel uses 'completed' instead of 'connected'\n // see /webrtc/getstats.html\n if (state == 'completed') state = 'connected';\n return state;\n }\n\n get iceGatheringState(): globalThis.RTCIceGatheringState {\n return this.#peerConnection.gatheringState();\n }\n\n get currentLocalDescription(): RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.localDescription() as any);\n }\n\n get currentRemoteDescription(): RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.remoteDescription() as any);\n }\n\n get localDescription(): RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.localDescription() as any);\n }\n\n get pendingLocalDescription(): RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.localDescription() as any);\n }\n\n get pendingRemoteDescription(): RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.remoteDescription() as any);\n }\n\n get remoteDescription(): RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.remoteDescription() as any);\n }\n\n get sctp(): RTCSctpTransport {\n return this.#sctp;\n }\n\n get signalingState(): globalThis.RTCSignalingState {\n return this.#peerConnection.signalingState();\n }\n\n async addIceCandidate(candidate?: globalThis.RTCIceCandidateInit | null): Promise<void> {\n if (!candidate || !candidate.candidate) {\n return;\n }\n\n if (candidate.sdpMid === null && candidate.sdpMLineIndex === null) {\n throw new TypeError('sdpMid must be set');\n }\n\n if (candidate.sdpMid === undefined && candidate.sdpMLineIndex == undefined) {\n throw new TypeError('sdpMid must be set');\n }\n\n // Reject if sdpMid format is not valid\n // ??\n if (candidate.sdpMid && candidate.sdpMid.length > 3) {\n // console.log(candidate.sdpMid);\n throw new exceptions.OperationError('Invalid sdpMid format');\n }\n\n // We don't care about sdpMLineIndex, just for test\n if (!candidate.sdpMid && candidate.sdpMLineIndex > 1) {\n throw new exceptions.OperationError('This is only for test case.');\n }\n\n try {\n this.#peerConnection.addRemoteCandidate(candidate.candidate, candidate.sdpMid || '0');\n this.#remoteCandidates.push(\n new RTCIceCandidate({ candidate: candidate.candidate, sdpMid: candidate.sdpMid || '0' }),\n );\n } catch (error) {\n if (!error || !error.message) throw new exceptions.NotFoundError('Unknown error');\n\n // Check error Message if contains specific message\n if (error.message.includes('remote candidate without remote description'))\n throw new exceptions.InvalidStateError(error.message);\n if (error.message.includes('Invalid candidate format')) throw new exceptions.OperationError(error.message);\n\n throw new exceptions.NotFoundError(error.message);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n addTrack(_track, ..._streams): globalThis.RTCRtpSender {\n throw new DOMException('Not implemented');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n addTransceiver(_trackOrKind, _init): globalThis.RTCRtpTransceiver {\n throw new DOMException('Not implemented');\n }\n\n close(): void {\n // close all channels before shutting down\n this.#dataChannels.forEach((channel) => {\n channel.close();\n this.#dataChannelsClosed++;\n });\n\n this.#peerConnection.close();\n }\n\n createAnswer(): Promise<globalThis.RTCSessionDescriptionInit | any> {\n return this.#localAnswer;\n }\n\n\n createDataChannel(label, opts = {}): RTCDataChannel {\n const channel = this.#peerConnection.createDataChannel(label, opts);\n const dataChannel = new RTCDataChannel(channel, opts);\n\n // ensure we can close all channels when shutting down\n this.#dataChannels.add(dataChannel);\n dataChannel.addEventListener('close', () => {\n this.#dataChannels.delete(dataChannel);\n this.#dataChannelsClosed++;\n });\n\n return dataChannel;\n }\n\n createOffer(): Promise<globalThis.RTCSessionDescriptionInit | any> {\n return this.#localOffer;\n }\n\n getConfiguration(): globalThis.RTCConfiguration {\n return this.#config;\n }\n\n getReceivers(): globalThis.RTCRtpReceiver[] {\n throw new DOMException('Not implemented');\n }\n\n getSenders(): globalThis.RTCRtpSender[] {\n throw new DOMException('Not implemented');\n }\n\n getStats(): Promise<globalThis.RTCStatsReport> {\n return new Promise((resolve) => {\n const report = new Map();\n const cp = this.#peerConnection?.getSelectedCandidatePair();\n const bytesSent = this.#peerConnection?.bytesSent();\n const bytesReceived = this.#peerConnection?.bytesReceived();\n const rtt = this.#peerConnection?.rtt();\n\n if(!cp) {\n return resolve(report);\n }\n\n const localIdRs = getRandomString(8);\n const localId = 'RTCIceCandidate_' + localIdRs;\n report.set(localId, {\n id: localId,\n type: 'local-candidate',\n timestamp: Date.now(),\n candidateType: cp.local.type,\n ip: cp.local.address,\n port: cp.local.port,\n });\n\n const remoteIdRs = getRandomString(8);\n const remoteId = 'RTCIceCandidate_' + remoteIdRs;\n report.set(remoteId, {\n id: remoteId,\n type: 'remote-candidate',\n timestamp: Date.now(),\n candidateType: cp.remote.type,\n ip: cp.remote.address,\n port: cp.remote.port,\n });\n\n const candidateId = 'RTCIceCandidatePair_' + localIdRs + '_' + remoteIdRs;\n report.set(candidateId, {\n id: candidateId,\n type: 'candidate-pair',\n timestamp: Date.now(),\n localCandidateId: localId,\n remoteCandidateId: remoteId,\n state: 'succeeded',\n nominated: true,\n writable: true,\n bytesSent: bytesSent,\n bytesReceived: bytesReceived,\n totalRoundTripTime: rtt,\n currentRoundTripTime: rtt,\n });\n\n const transportId = 'RTCTransport_0_1';\n report.set(transportId, {\n id: transportId,\n timestamp: Date.now(),\n type: 'transport',\n bytesSent: bytesSent,\n bytesReceived: bytesReceived,\n dtlsState: 'connected',\n selectedCandidatePairId: candidateId,\n selectedCandidatePairChanges: 1,\n });\n\n // peer-connection'\n report.set('P', {\n id: 'P',\n type: 'peer-connection',\n timestamp: Date.now(),\n dataChannelsOpened: this.#dataChannels.size,\n dataChannelsClosed: this.#dataChannelsClosed,\n });\n\n return resolve(report);\n });\n }\n\n getTransceivers(): globalThis.RTCRtpTransceiver[] {\n return []; // throw new DOMException('Not implemented');\n }\n\n removeTrack(): void {\n throw new DOMException('Not implemented');\n }\n\n restartIce(): Promise<void> {\n throw new DOMException('Not implemented');\n }\n\n async setLocalDescription(description: globalThis.RTCSessionDescriptionInit): Promise<void> {\n if (description?.type !== 'offer') {\n // any other type causes libdatachannel to throw\n return;\n }\n\n this.#peerConnection.setLocalDescription(description?.type as any);\n }\n\n async setRemoteDescription(description: globalThis.RTCSessionDescriptionInit): Promise<void> {\n if (description.sdp == null) {\n throw new DOMException('Remote SDP must be set');\n }\n\n this.#peerConnection.setRemoteDescription(description.sdp, description.type as any);\n }\n}\n\nfunction createDeferredPromise(): any {\n let resolve: any, reject: any;\n\n const promise = new Promise(function (_resolve, _reject) {\n resolve = _resolve;\n reject = _reject;\n });\n\n (promise as any).resolve = resolve;\n (promise as any).reject = reject;\n return promise;\n}\n\nfunction getRandomString(length): string {\n return Math.random()\n .toString(36)\n .substring(2, 2 + length);\n}\n"],"names":["PeerConnection","exceptions.NotFoundError","exceptions.SyntaxError","RTCDataChannel","RTCDataChannelEvent","RTCIceCandidate","RTCPeerConnectionIceEvent","RTCSctpTransport","exceptions.InvalidAccessError","RTCSessionDescription","exceptions.OperationError","exceptions.InvalidStateError"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,eAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA;AAiBA,MAAqB,0BAA0B,WAAoD,CAAA;AAAA,EA+F/F,WAAA,CAAY,SAA2B,EAAE,UAAA,EAAY,EAAI,EAAA,kBAAA,EAAoB,OAAS,EAAA;AAClF,IAAM,KAAA,EAAA,CAAA;AA3FV,IAAA,YAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;AACA,IAAsB,YAAA,CAAA,IAAA,EAAA,mBAAA,EAAA,CAAA,CAAA,CAAA;AACtB,IAAA,YAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,wBAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAEA,IAAA,YAAA,CAAA,IAAA,EAAA,gBAAA,EAAsC,EAAC,CAAA,CAAA;AACvC,IAAA,YAAA,CAAA,IAAA,EAAA,iBAAA,EAAuC,EAAC,CAAA,CAAA;AAGxC;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,yBAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,gBAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,qBAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,4BAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,2BAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,qBAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,wBAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AAwEI,IAAA,IAAA,CAAK,oBAAoB,MAAM,CAAA,CAAA;AAC/B,IAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,MAAA,CAAA,CAAA;AACf,IAAA,YAAA,CAAA,IAAA,EAAK,aAAc,qBAAsB,EAAA,CAAA,CAAA;AACzC,IAAA,YAAA,CAAA,IAAA,EAAK,cAAe,qBAAsB,EAAA,CAAA,CAAA;AAC1C,IAAK,YAAA,CAAA,IAAA,EAAA,aAAA,sBAAoB,GAAI,EAAA,CAAA,CAAA;AAC7B,IAAA,YAAA,CAAA,IAAA,EAAK,wBAA2B,EAAA,IAAA,CAAA,CAAA;AAEhC,IAAI,IAAA;AACA,MAAA,MAAM,eAAgB,MAAgB,EAAA,YAAA,IAAgB,CAAQ,KAAA,EAAA,eAAA,CAAgB,CAAC,CAAC,CAAA,CAAA,CAAA;AAChF,MAAK,YAAA,CAAA,IAAA,EAAA,eAAA,EAAkB,MAAO,CAAA,cAAA,IAAkB,IAAIA,oBAAA;AAAA,QAAe,YAAA;AAAA,QAC/D;AAAA,UACI,GAAG,MAAA;AAAA,UACH,UACI,EAAA,MAAA,EAAQ,UACF,EAAA,GAAA,CAAI,CAAC,MAAW,KAAA;AACd,YAAM,MAAA,IAAA,GAAO,KAAM,CAAA,OAAA,CAAQ,MAAO,CAAA,IAAI,IAAI,MAAO,CAAA,IAAA,GAAO,CAAC,MAAA,CAAO,IAAI,CAAA,CAAA;AAEpE,YAAO,OAAA,IAAA,CAAK,GAAI,CAAA,CAAC,GAAQ,KAAA;AACrB,cAAI,IAAA,MAAA,CAAO,QAAY,IAAA,MAAA,CAAO,UAAY,EAAA;AACtC,gBAAA,MAAM,CAAC,QAAU,EAAA,IAAI,CAAI,GAAA,GAAA,CAAI,MAAM,OAAO,CAAA,CAAA;AAC1C,gBAAO,OAAA,CAAA,EAAG,QAAQ,CAAI,CAAA,EAAA,MAAA,CAAO,QAAQ,CAAI,CAAA,EAAA,MAAA,CAAO,UAAU,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA;AAAA,eACtE;AACA,cAAO,OAAA,GAAA,CAAA;AAAA,aACV,CAAA,CAAA;AAAA,WACJ,CAAA,CACA,IAAK,EAAA,IAAK,EAAC;AAAA,SACxB;AAAA,OACJ,CAAA,CAAA;AAAA,aACK,KAAO,EAAA;AACZ,MAAI,IAAA,CAAC,SAAS,CAAC,KAAA,CAAM,SAAe,MAAA,IAAIC,uBAAW,CAAc,eAAe,CAAA,CAAA;AAChF,MAAA,MAAM,IAAIC,qBAAuB,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAAA,KAClD;AAGA,IAAK,YAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,cAAc,MAAM;AACrC,MAAA,IAAA,CAAK,aAAc,CAAA,IAAI,KAAM,CAAA,uBAAuB,CAAC,CAAA,CAAA;AAAA,KACxD,CAAA,CAAA;AAED,IAAK,YAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,iBAAiB,MAAM;AACxC,MAAA,IAAA,CAAK,aAAc,CAAA,IAAI,KAAM,CAAA,0BAA0B,CAAC,CAAA,CAAA;AAAA,KAC3D,CAAA,CAAA;AAED,IAAK,YAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,uBAAuB,MAAM;AAC9C,MAAA,IAAA,CAAK,aAAc,CAAA,IAAI,KAAM,CAAA,sBAAsB,CAAC,CAAA,CAAA;AAAA,KACvD,CAAA,CAAA;AAED,IAAK,YAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,uBAAuB,MAAM;AAC9C,MAAA,IAAA,CAAK,aAAc,CAAA,IAAI,KAAM,CAAA,yBAAyB,CAAC,CAAA,CAAA;AAAA,KAC1D,CAAA,CAAA;AAED,IAAK,YAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,aAAc,CAAA,CAAC,OAAY,KAAA;AAC5C,MAAM,MAAA,EAAA,GAAK,IAAIC,sBAAA,CAAe,OAAO,CAAA,CAAA;AACrC,MAAK,YAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAc,IAAI,EAAE,CAAA,CAAA;AACzB,MAAK,IAAA,CAAA,aAAA,CAAc,IAAIC,0BAAoB,CAAA,aAAA,EAAe,EAAE,OAAS,EAAA,EAAA,EAAI,CAAC,CAAA,CAAA;AAAA,KAC7E,CAAA,CAAA;AAED,IAAA,YAAA,CAAA,IAAA,EAAK,eAAgB,CAAA,CAAA,kBAAA,CAAmB,CAAC,GAAA,EAAK,IAAS,KAAA;AACnD,MAAA,IAAI,SAAS,OAAS,EAAA;AAClB,QAAA,YAAA,CAAA,IAAA,EAAK,WAAY,CAAA,CAAA,OAAA,CAAQ,EAAE,GAAA,EAAK,MAAM,CAAA,CAAA;AAAA,OAC1C;AAEA,MAAA,IAAI,SAAS,QAAU,EAAA;AACnB,QAAA,YAAA,CAAA,IAAA,EAAK,YAAa,CAAA,CAAA,OAAA,CAAQ,EAAE,GAAA,EAAK,MAAM,CAAA,CAAA;AAAA,OAC3C;AAAA,KACH,CAAA,CAAA;AAED,IAAA,YAAA,CAAA,IAAA,EAAK,eAAgB,CAAA,CAAA,gBAAA,CAAiB,CAAC,SAAA,EAAW,MAAW,KAAA;AACzD,MAAA,IAAI,WAAW,QAAU,EAAA;AACrB,QAAA,YAAA,CAAA,IAAA,EAAK,cAAa,MAAO,CAAA,IAAI,MAAM,CAA4B,yBAAA,EAAA,MAAM,EAAE,CAAC,CAAA,CAAA;AACxE,QAAA,OAAA;AAAA,OACJ;AAEA,MAAK,YAAA,CAAA,IAAA,EAAA,gBAAA,CAAA,CAAiB,KAAK,IAAIC,uBAAA,CAAgB,EAAE,SAAW,EAAA,MAAA,EAAQ,CAAC,CAAA,CAAA;AACrE,MAAK,IAAA,CAAA,aAAA,CAAc,IAAIC,gCAAA,CAA0B,IAAID,uBAAA,CAAgB,EAAE,SAAW,EAAA,MAAA,EAAQ,CAAC,CAAC,CAAA,CAAA;AAAA,KAC/F,CAAA,CAAA;AAGD,IAAK,IAAA,CAAA,gBAAA,CAAiB,uBAAyB,EAAA,CAAC,CAAM,KAAA;AAClD,MAAA,IAAI,IAAK,CAAA,uBAAA,EAA8B,IAAA,CAAA,uBAAA,CAAwB,CAAC,CAAA,CAAA;AAAA,KACnE,CAAA,CAAA;AACD,IAAK,IAAA,CAAA,gBAAA,CAAiB,sBAAwB,EAAA,CAAC,CAAM,KAAA;AACjD,MAAA,IAAI,IAAK,CAAA,sBAAA,EAA6B,IAAA,CAAA,sBAAA,CAAuB,CAAC,CAAA,CAAA;AAAA,KACjE,CAAA,CAAA;AACD,IAAK,IAAA,CAAA,gBAAA,CAAiB,0BAA4B,EAAA,CAAC,CAAM,KAAA;AACrD,MAAA,IAAI,IAAK,CAAA,0BAAA,EAAiC,IAAA,CAAA,0BAAA,CAA2B,CAAC,CAAA,CAAA;AAAA,KACzE,CAAA,CAAA;AACD,IAAK,IAAA,CAAA,gBAAA,CAAiB,yBAA2B,EAAA,CAAC,CAAM,KAAA;AACpD,MAAA,IAAI,IAAK,CAAA,yBAAA,EAAgC,IAAA,CAAA,yBAAA,CAA0B,CAAC,CAAA,CAAA;AAAA,KACvE,CAAA,CAAA;AACD,IAAK,IAAA,CAAA,gBAAA,CAAiB,aAAe,EAAA,CAAC,CAAM,KAAA;AACxC,MAAA,IAAI,IAAK,CAAA,aAAA,EAAoB,IAAA,CAAA,aAAA,CAAc,CAAwB,CAAA,CAAA;AAAA,KACtE,CAAA,CAAA;AACD,IAAK,IAAA,CAAA,gBAAA,CAAiB,cAAgB,EAAA,CAAC,CAAM,KAAA;AACzC,MAAA,IAAI,IAAK,CAAA,cAAA,EAAqB,IAAA,CAAA,cAAA,CAAe,CAA8B,CAAA,CAAA;AAAA,KAC9E,CAAA,CAAA;AAED,IAAK,YAAA,CAAA,IAAA,EAAA,KAAA,EAAQ,IAAIE,wBAAiB,CAAA;AAAA,MAC9B,EAAI,EAAA,IAAA;AAAA,MACJ,cAAgB,EAAA;AAAA,QACZ,kBAAkB,MAAc;AAC5B,UAAO,OAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,gBAAiB,EAAA,CAAA;AAAA,SACjD;AAAA,QACA,gBAAgB,MAAc;AAC1B,UAAO,OAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,cAAe,EAAA,CAAA;AAAA,SAC/C;AAAA,QACA,iBAAiB,MAAyB;AACtC,UAAA,OAAO,YAAK,CAAA,IAAA,EAAA,gBAAA,CAAA,CAAA;AAAA,SAChB;AAAA,QACA,kBAAkB,MAAyB;AACvC,UAAA,OAAO,YAAK,CAAA,IAAA,EAAA,iBAAA,CAAA,CAAA;AAAA,SAChB;AAAA,QACA,uBAAuB,MAA8E;AACjG,UAAO,OAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,wBAAyB,EAAA,CAAA;AAAA,SACzD;AAAA,OACJ;AAAA,KACH,CAAA,CAAA,CAAA;AAAA,GACL;AAAA,EArNA,aAAa,mBAA+C,GAAA;AACxD,IAAM,MAAA,IAAI,aAAa,iBAAiB,CAAA,CAAA;AAAA,GAC5C;AAAA,EAyBQ,oBAAoB,MAAgC,EAAA;AACxD,IAAA,IAAI,UAAU,MAAO,CAAA,UAAA,KAAe,KAAW,CAAA,EAAA,MAAA,CAAO,aAAa,EAAC,CAAA;AACpE,IAAA,IAAI,MAAU,IAAA,MAAA,CAAO,kBAAuB,KAAA,KAAA,CAAA,SAAkB,kBAAqB,GAAA,KAAA,CAAA;AAEnF,IAAA,IAAI,QAAQ,UAAe,KAAA,IAAA,EAAY,MAAA,IAAI,UAAU,2BAA2B,CAAA,CAAA;AAGhF,IAAA,IAAI,KAAM,CAAA,OAAA,CAAQ,MAAQ,EAAA,UAAU,CAAG,EAAA;AACnC,MAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,MAAO,CAAA,UAAA,CAAW,QAAQ,CAAK,EAAA,EAAA;AAC/C,QAAI,IAAA,MAAA,CAAO,WAAW,CAAC,CAAA,KAAM,MAAY,MAAA,IAAI,UAAU,2BAA2B,CAAA,CAAA;AAClF,QAAI,IAAA,MAAA,CAAO,WAAW,CAAC,CAAA,KAAM,QAAiB,MAAA,IAAI,UAAU,gCAAgC,CAAA,CAAA;AAC5F,QAAA,IAAI,MAAO,CAAA,IAAA,CAAK,MAAO,CAAA,UAAA,CAAW,CAAC,CAAC,CAAE,CAAA,MAAA,KAAW,CAAG,EAAA,MAAM,IAAI,SAAA,CAAU,4BAA4B,CAAA,CAAA;AAGpG,QAAA,IAAI,OAAO,MAAA,CAAO,UAAW,CAAA,CAAC,EAAE,IAAS,KAAA,QAAA;AACrC,UAAO,MAAA,CAAA,UAAA,CAAW,CAAC,CAAE,CAAA,IAAA,GAAO,CAAC,MAAO,CAAA,UAAA,CAAW,CAAC,CAAA,CAAE,IAAc,CAAA,CAAA;AAGpE,QAAK,IAAA,MAAA,CAAO,WAAW,CAAC,CAAA,CAAE,MAAmB,IAAK,CAAA,CAAC,GAAQ,KAAA,GAAA,IAAO,EAAE,CAAA;AAChE,UAAM,MAAA,IAAIL,qBAAW,CAAY,iCAAiC,CAAA,CAAA;AAGtE,QAAA,IACK,MAAO,CAAA,UAAA,CAAW,CAAC,CAAA,CAAE,IAAmB,EAAA,IAAA;AAAA,UACrC,CAAC,GAAQ,KAAA;AACL,YAAI,IAAA;AACA,cAAM,MAAA,SAAA,GAAY,IAAI,GAAA,CAAI,GAAG,CAAA,CAAA;AAE7B,cAAA,OAAO,CAAC,wBAAA,CAAyB,IAAK,CAAA,SAAA,CAAU,QAAQ,CAAA,CAAA;AAAA,qBACnD,KAAO,EAAA;AACZ,cAAO,OAAA,IAAA,CAAA;AAAA,aACX;AAAA,WACJ;AAAA,SACJ;AAEA,UAAM,MAAA,IAAIA,qBAAW,CAAY,8BAA8B,CAAA,CAAA;AAGnE,QAAA,IAAK,MAAO,CAAA,UAAA,CAAW,CAAC,CAAA,CAAE,IAAmB,EAAA,IAAA,CAAK,CAAC,GAAA,KAAQ,GAAI,CAAA,UAAA,CAAW,MAAM,CAAC,CAAG,EAAA;AAChF,UAAA,IAAI,CAAC,MAAA,CAAO,UAAW,CAAA,CAAC,CAAE,CAAA,QAAA;AACtB,YAAM,MAAA,IAAIM,4BAAW,CAAmB,oCAAoC,CAAA,CAAA;AAChF,UAAA,IAAI,CAAC,MAAA,CAAO,UAAW,CAAA,CAAC,CAAE,CAAA,UAAA;AACtB,YAAM,MAAA,IAAIA,4BAAW,CAAmB,yCAAyC,CAAA,CAAA;AAAA,SACzF;AAGA,QAAA,IAAI,MAAO,CAAA,UAAA,CAAW,CAAC,CAAA,CAAE,MAAM,MAAW,KAAA,CAAA;AACtC,UAAM,MAAA,IAAIN,qBAAW,CAAY,iCAAiC,CAAA,CAAA;AAAA,OAC1E;AAAA,KACJ;AAEA,IAAA,IACI,UACA,MAAO,CAAA,kBAAA,IACP,OAAO,kBAAuB,KAAA,KAAA,IAC9B,OAAO,kBAAuB,KAAA,OAAA;AAE9B,MAAM,MAAA,IAAI,UAAU,oDAAoD,CAAA,CAAA;AAAA,GAChF;AAAA,EAEA,iBAAiB,MAAgC,EAAA;AAC7C,IAAA,IAAA,CAAK,oBAAoB,MAAM,CAAA,CAAA;AAC/B,IAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,MAAA,CAAA,CAAA;AAAA,GACnB;AAAA,EA6HA,IAAI,uBAA0C,GAAA;AAC1C,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,wBAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,IAAI,eAAqD,GAAA;AACrD,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,KAAM,EAAA,CAAA;AAAA,GACtC;AAAA,EAEA,IAAI,kBAAuD,GAAA;AACvD,IAAI,IAAA,KAAA,GAAQ,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,QAAS,EAAA,CAAA;AAG1C,IAAI,IAAA,KAAA,IAAS,aAAqB,KAAA,GAAA,WAAA,CAAA;AAClC,IAAO,OAAA,KAAA,CAAA;AAAA,GACX;AAAA,EAEA,IAAI,iBAAqD,GAAA;AACrD,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,cAAe,EAAA,CAAA;AAAA,GAC/C;AAAA,EAEA,IAAI,uBAAiD,GAAA;AACjD,IAAA,OAAO,IAAIO,6BAAA,CAAsB,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,kBAAyB,CAAA,CAAA;AAAA,GACnF;AAAA,EAEA,IAAI,wBAAkD,GAAA;AAClD,IAAA,OAAO,IAAIA,6BAAA,CAAsB,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,mBAA0B,CAAA,CAAA;AAAA,GACpF;AAAA,EAEA,IAAI,gBAA0C,GAAA;AAC1C,IAAA,OAAO,IAAIA,6BAAA,CAAsB,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,kBAAyB,CAAA,CAAA;AAAA,GACnF;AAAA,EAEA,IAAI,uBAAiD,GAAA;AACjD,IAAA,OAAO,IAAIA,6BAAA,CAAsB,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,kBAAyB,CAAA,CAAA;AAAA,GACnF;AAAA,EAEA,IAAI,wBAAkD,GAAA;AAClD,IAAA,OAAO,IAAIA,6BAAA,CAAsB,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,mBAA0B,CAAA,CAAA;AAAA,GACpF;AAAA,EAEA,IAAI,iBAA2C,GAAA;AAC3C,IAAA,OAAO,IAAIA,6BAAA,CAAsB,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,mBAA0B,CAAA,CAAA;AAAA,GACpF;AAAA,EAEA,IAAI,IAAyB,GAAA;AACzB,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,IAAI,cAA+C,GAAA;AAC/C,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,cAAe,EAAA,CAAA;AAAA,GAC/C;AAAA,EAEA,MAAM,gBAAgB,SAAkE,EAAA;AACpF,IAAA,IAAI,CAAC,SAAA,IAAa,CAAC,SAAA,CAAU,SAAW,EAAA;AACpC,MAAA,OAAA;AAAA,KACJ;AAEA,IAAA,IAAI,SAAU,CAAA,MAAA,KAAW,IAAQ,IAAA,SAAA,CAAU,kBAAkB,IAAM,EAAA;AAC/D,MAAM,MAAA,IAAI,UAAU,oBAAoB,CAAA,CAAA;AAAA,KAC5C;AAEA,IAAA,IAAI,SAAU,CAAA,MAAA,KAAW,KAAa,CAAA,IAAA,SAAA,CAAU,iBAAiB,KAAW,CAAA,EAAA;AACxE,MAAM,MAAA,IAAI,UAAU,oBAAoB,CAAA,CAAA;AAAA,KAC5C;AAIA,IAAA,IAAI,SAAU,CAAA,MAAA,IAAU,SAAU,CAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AAEjD,MAAM,MAAA,IAAIC,wBAAW,CAAe,uBAAuB,CAAA,CAAA;AAAA,KAC/D;AAGA,IAAA,IAAI,CAAC,SAAA,CAAU,MAAU,IAAA,SAAA,CAAU,gBAAgB,CAAG,EAAA;AAClD,MAAM,MAAA,IAAIA,wBAAW,CAAe,6BAA6B,CAAA,CAAA;AAAA,KACrE;AAEA,IAAI,IAAA;AACA,MAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,kBAAmB,CAAA,SAAA,CAAU,SAAW,EAAA,SAAA,CAAU,UAAU,GAAG,CAAA,CAAA;AACpF,MAAA,YAAA,CAAA,IAAA,EAAK,iBAAkB,CAAA,CAAA,IAAA;AAAA,QACnB,IAAIL,uBAAgB,CAAA,EAAE,SAAW,EAAA,SAAA,CAAU,WAAW,MAAQ,EAAA,SAAA,CAAU,MAAU,IAAA,GAAA,EAAK,CAAA;AAAA,OAC3F,CAAA;AAAA,aACK,KAAO,EAAA;AACZ,MAAI,IAAA,CAAC,SAAS,CAAC,KAAA,CAAM,SAAe,MAAA,IAAIJ,uBAAW,CAAc,eAAe,CAAA,CAAA;AAGhF,MAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,QAAA,CAAS,6CAA6C,CAAA;AACpE,QAAA,MAAM,IAAIU,2BAA6B,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AACxD,MAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,QAAA,CAAS,0BAA0B,CAAA,QAAS,IAAID,wBAA0B,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAEzG,MAAA,MAAM,IAAIT,uBAAyB,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAAA,KACpD;AAAA,GACJ;AAAA;AAAA,EAGA,QAAA,CAAS,WAAW,QAAmC,EAAA;AACnD,IAAM,MAAA,IAAI,aAAa,iBAAiB,CAAA,CAAA;AAAA,GAC5C;AAAA;AAAA,EAGA,cAAA,CAAe,cAAc,KAAqC,EAAA;AAC9D,IAAM,MAAA,IAAI,aAAa,iBAAiB,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,KAAc,GAAA;AAEV,IAAK,YAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAc,OAAQ,CAAA,CAAC,OAAY,KAAA;AACpC,MAAA,OAAA,CAAQ,KAAM,EAAA,CAAA;AACd,MAAA,gBAAA,CAAA,IAAA,EAAK,mBAAL,CAAA,CAAA,CAAA,EAAA,CAAA;AAAA,KACH,CAAA,CAAA;AAED,IAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,KAAM,EAAA,CAAA;AAAA,GAC/B;AAAA,EAEA,YAAoE,GAAA;AAChE,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAGA,iBAAkB,CAAA,KAAA,EAAO,IAAO,GAAA,EAAoB,EAAA;AAChD,IAAA,MAAM,OAAU,GAAA,YAAA,CAAA,IAAA,EAAK,eAAgB,CAAA,CAAA,iBAAA,CAAkB,OAAO,IAAI,CAAA,CAAA;AAClE,IAAA,MAAM,WAAc,GAAA,IAAIE,sBAAe,CAAA,OAAA,EAAS,IAAI,CAAA,CAAA;AAGpD,IAAK,YAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAc,IAAI,WAAW,CAAA,CAAA;AAClC,IAAY,WAAA,CAAA,gBAAA,CAAiB,SAAS,MAAM;AACxC,MAAK,YAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAc,OAAO,WAAW,CAAA,CAAA;AACrC,MAAA,gBAAA,CAAA,IAAA,EAAK,mBAAL,CAAA,CAAA,CAAA,EAAA,CAAA;AAAA,KACH,CAAA,CAAA;AAED,IAAO,OAAA,WAAA,CAAA;AAAA,GACX;AAAA,EAEA,WAAmE,GAAA;AAC/D,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,gBAAgD,GAAA;AAC5C,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,YAA4C,GAAA;AACxC,IAAM,MAAA,IAAI,aAAa,iBAAiB,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,UAAwC,GAAA;AACpC,IAAM,MAAA,IAAI,aAAa,iBAAiB,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,QAA+C,GAAA;AAC3C,IAAO,OAAA,IAAI,OAAQ,CAAA,CAAC,OAAY,KAAA;AAC5B,MAAM,MAAA,MAAA,uBAAa,GAAI,EAAA,CAAA;AACvB,MAAM,MAAA,EAAA,GAAK,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,EAAiB,wBAAyB,EAAA,CAAA;AAC1D,MAAM,MAAA,SAAA,GAAY,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,EAAiB,SAAU,EAAA,CAAA;AAClD,MAAM,MAAA,aAAA,GAAgB,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,EAAiB,aAAc,EAAA,CAAA;AAC1D,MAAM,MAAA,GAAA,GAAM,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,EAAiB,GAAI,EAAA,CAAA;AAEtC,MAAA,IAAG,CAAC,EAAI,EAAA;AACJ,QAAA,OAAO,QAAQ,MAAM,CAAA,CAAA;AAAA,OACzB;AAEA,MAAM,MAAA,SAAA,GAAY,gBAAgB,CAAC,CAAA,CAAA;AACnC,MAAA,MAAM,UAAU,kBAAqB,GAAA,SAAA,CAAA;AACrC,MAAA,MAAA,CAAO,IAAI,OAAS,EAAA;AAAA,QAChB,EAAI,EAAA,OAAA;AAAA,QACJ,IAAM,EAAA,iBAAA;AAAA,QACN,SAAA,EAAW,KAAK,GAAI,EAAA;AAAA,QACpB,aAAA,EAAe,GAAG,KAAM,CAAA,IAAA;AAAA,QACxB,EAAA,EAAI,GAAG,KAAM,CAAA,OAAA;AAAA,QACb,IAAA,EAAM,GAAG,KAAM,CAAA,IAAA;AAAA,OAClB,CAAA,CAAA;AAED,MAAM,MAAA,UAAA,GAAa,gBAAgB,CAAC,CAAA,CAAA;AACpC,MAAA,MAAM,WAAW,kBAAqB,GAAA,UAAA,CAAA;AACtC,MAAA,MAAA,CAAO,IAAI,QAAU,EAAA;AAAA,QACjB,EAAI,EAAA,QAAA;AAAA,QACJ,IAAM,EAAA,kBAAA;AAAA,QACN,SAAA,EAAW,KAAK,GAAI,EAAA;AAAA,QACpB,aAAA,EAAe,GAAG,MAAO,CAAA,IAAA;AAAA,QACzB,EAAA,EAAI,GAAG,MAAO,CAAA,OAAA;AAAA,QACd,IAAA,EAAM,GAAG,MAAO,CAAA,IAAA;AAAA,OACnB,CAAA,CAAA;AAED,MAAM,MAAA,WAAA,GAAc,sBAAyB,GAAA,SAAA,GAAY,GAAM,GAAA,UAAA,CAAA;AAC/D,MAAA,MAAA,CAAO,IAAI,WAAa,EAAA;AAAA,QACpB,EAAI,EAAA,WAAA;AAAA,QACJ,IAAM,EAAA,gBAAA;AAAA,QACN,SAAA,EAAW,KAAK,GAAI,EAAA;AAAA,QACpB,gBAAkB,EAAA,OAAA;AAAA,QAClB,iBAAmB,EAAA,QAAA;AAAA,QACnB,KAAO,EAAA,WAAA;AAAA,QACP,SAAW,EAAA,IAAA;AAAA,QACX,QAAU,EAAA,IAAA;AAAA,QACV,SAAA;AAAA,QACA,aAAA;AAAA,QACA,kBAAoB,EAAA,GAAA;AAAA,QACpB,oBAAsB,EAAA,GAAA;AAAA,OACzB,CAAA,CAAA;AAED,MAAA,MAAM,WAAc,GAAA,kBAAA,CAAA;AACpB,MAAA,MAAA,CAAO,IAAI,WAAa,EAAA;AAAA,QACpB,EAAI,EAAA,WAAA;AAAA,QACJ,SAAA,EAAW,KAAK,GAAI,EAAA;AAAA,QACpB,IAAM,EAAA,WAAA;AAAA,QACN,SAAA;AAAA,QACA,aAAA;AAAA,QACA,SAAW,EAAA,WAAA;AAAA,QACX,uBAAyB,EAAA,WAAA;AAAA,QACzB,4BAA8B,EAAA,CAAA;AAAA,OACjC,CAAA,CAAA;AAGD,MAAA,MAAA,CAAO,IAAI,GAAK,EAAA;AAAA,QACZ,EAAI,EAAA,GAAA;AAAA,QACJ,IAAM,EAAA,iBAAA;AAAA,QACN,SAAA,EAAW,KAAK,GAAI,EAAA;AAAA,QACpB,kBAAA,EAAoB,mBAAK,aAAc,CAAA,CAAA,IAAA;AAAA,QACvC,oBAAoB,YAAK,CAAA,IAAA,EAAA,mBAAA,CAAA;AAAA,OAC5B,CAAA,CAAA;AAED,MAAA,OAAO,QAAQ,MAAM,CAAA,CAAA;AAAA,KACxB,CAAA,CAAA;AAAA,GACL;AAAA,EAEA,eAAkD,GAAA;AAC9C,IAAA,OAAO,EAAC,CAAA;AAAA,GACZ;AAAA,EAEA,WAAoB,GAAA;AAChB,IAAM,MAAA,IAAI,aAAa,iBAAiB,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,UAA4B,GAAA;AACxB,IAAM,MAAA,IAAI,aAAa,iBAAiB,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,MAAM,oBAAoB,WAAkE,EAAA;AACxF,IAAI,IAAA,WAAA,EAAa,SAAS,OAAS,EAAA;AAE/B,MAAA,OAAA;AAAA,KACJ;AAEA,IAAK,YAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,mBAAoB,CAAA,WAAA,EAAa,IAAW,CAAA,CAAA;AAAA,GACrE;AAAA,EAEA,MAAM,qBAAqB,WAAkE,EAAA;AACzF,IAAI,IAAA,WAAA,CAAY,OAAO,IAAM,EAAA;AACzB,MAAM,MAAA,IAAI,aAAa,wBAAwB,CAAA,CAAA;AAAA,KACnD;AAEA,IAAA,YAAA,CAAA,IAAA,EAAK,eAAgB,CAAA,CAAA,oBAAA,CAAqB,WAAY,CAAA,GAAA,EAAK,YAAY,IAAW,CAAA,CAAA;AAAA,GACtF;AACJ,CAAA;AA/cI,eAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,WAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,YAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,aAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,mBAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,OAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,wBAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,KAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAEA,gBAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,iBAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAucJ,SAAS,qBAA6B,GAAA;AAClC,EAAA,IAAI,OAAc,EAAA,MAAA,CAAA;AAElB,EAAA,MAAM,OAAU,GAAA,IAAI,OAAQ,CAAA,SAAU,UAAU,OAAS,EAAA;AACrD,IAAU,OAAA,GAAA,QAAA,CAAA;AACV,IAAS,MAAA,GAAA,OAAA,CAAA;AAAA,GACZ,CAAA,CAAA;AAED,EAAC,QAAgB,OAAU,GAAA,OAAA,CAAA;AAC3B,EAAC,QAAgB,MAAS,GAAA,MAAA,CAAA;AAC1B,EAAO,OAAA,OAAA,CAAA;AACX,CAAA;AAEA,SAAS,gBAAgB,MAAgB,EAAA;AACrC,EAAO,OAAA,IAAA,CAAK,QACP,CAAA,QAAA,CAAS,EAAE,CACX,CAAA,SAAA,CAAU,CAAG,EAAA,CAAA,GAAI,MAAM,CAAA,CAAA;AAChC;;;;"}
1
+ {"version":3,"file":"RTCPeerConnection.cjs","sources":["../../../src/polyfill/RTCPeerConnection.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { SelectedCandidateInfo } from '../lib/types';\nimport { PeerConnection } from '../lib/index';\nimport RTCSessionDescription from './RTCSessionDescription';\nimport RTCDataChannel from './RTCDataChannel';\nimport RTCIceCandidate from './RTCIceCandidate';\nimport { RTCDataChannelEvent, RTCPeerConnectionIceEvent } from './Events';\nimport RTCSctpTransport from './RTCSctpTransport';\nimport * as exceptions from './Exception';\nimport RTCCertificate from './RTCCertificate';\n\n// extend RTCConfiguration with peerIdentity\ninterface RTCConfiguration extends globalThis.RTCConfiguration {\n peerIdentity?: string;\n peerConnection?: PeerConnection;\n}\n\nexport default class RTCPeerConnection extends EventTarget implements globalThis.RTCPeerConnection {\n static async generateCertificate(): Promise<RTCCertificate> {\n throw new DOMException('Not implemented');\n }\n\n #peerConnection: PeerConnection;\n #localOffer: any;\n #localAnswer: any;\n #dataChannels: Set<globalThis.RTCDataChannel>;\n #dataChannelsClosed = 0;\n #config: globalThis.RTCConfiguration;\n #canTrickleIceCandidates: boolean | null;\n #sctp: globalThis.RTCSctpTransport;\n\n #localCandidates: globalThis.RTCIceCandidate[] = [];\n #remoteCandidates: globalThis.RTCIceCandidate[] = [];\n\n // events\n onconnectionstatechange: ((this: globalThis.RTCPeerConnection, ev: Event) => any) | null;\n ondatachannel: ((this: globalThis.RTCPeerConnection, ev: globalThis.RTCDataChannelEvent) => any) | null;\n onicecandidate: ((this: globalThis.RTCPeerConnection, ev: globalThis.RTCPeerConnectionIceEvent) => any) | null;\n onicecandidateerror: ((this: globalThis.RTCPeerConnection, ev: Event) => any) | null;\n oniceconnectionstatechange: ((this: globalThis.RTCPeerConnection, ev: Event) => any) | null;\n onicegatheringstatechange: ((this: globalThis.RTCPeerConnection, ev: Event) => any) | null;\n onnegotiationneeded: ((this: globalThis.RTCPeerConnection, ev: Event) => any) | null;\n onsignalingstatechange: ((this: globalThis.RTCPeerConnection, ev: Event) => any) | null;\n ontrack: ((this: globalThis.RTCPeerConnection, ev: globalThis.RTCTrackEvent) => any) | null;\n\n private _checkConfiguration(config: globalThis.RTCConfiguration): void {\n if (config && config.iceServers === undefined) config.iceServers = [];\n if (config && config.iceTransportPolicy === undefined) config.iceTransportPolicy = 'all';\n\n if (config?.iceServers === null) throw new TypeError('IceServers cannot be null');\n\n // Check for all the properties of iceServers\n if (Array.isArray(config?.iceServers)) {\n for (let i = 0; i < config.iceServers.length; i++) {\n if (config.iceServers[i] === null) throw new TypeError('IceServers cannot be null');\n if (config.iceServers[i] === undefined) throw new TypeError('IceServers cannot be undefined');\n if (Object.keys(config.iceServers[i]).length === 0) throw new TypeError('IceServers cannot be empty');\n\n // If iceServers is string convert to array\n if (typeof config.iceServers[i].urls === 'string')\n config.iceServers[i].urls = [config.iceServers[i].urls as string];\n\n // urls can not be empty\n if ((config.iceServers[i].urls as string[])?.some((url) => url == ''))\n throw new exceptions.SyntaxError('IceServers urls cannot be empty');\n\n // urls should be valid URLs and match the protocols \"stun:|turn:|turns:\"\n if (\n (config.iceServers[i].urls as string[])?.some(\n (url) => {\n try {\n const parsedURL = new URL(url)\n\n return !/^(stun:|turn:|turns:)$/.test(parsedURL.protocol)\n } catch (error) {\n return true\n }\n },\n )\n )\n throw new exceptions.SyntaxError('IceServers urls wrong format');\n\n // If this is a turn server check for username and credential\n if ((config.iceServers[i].urls as string[])?.some((url) => url.startsWith('turn'))) {\n if (!config.iceServers[i].username)\n throw new exceptions.InvalidAccessError('IceServers username cannot be null');\n if (!config.iceServers[i].credential)\n throw new exceptions.InvalidAccessError('IceServers username cannot be undefined');\n }\n\n // length of urls can not be 0\n if (config.iceServers[i].urls?.length === 0)\n throw new exceptions.SyntaxError('IceServers urls cannot be empty');\n }\n }\n\n if (\n config &&\n config.iceTransportPolicy &&\n config.iceTransportPolicy !== 'all' &&\n config.iceTransportPolicy !== 'relay'\n )\n throw new TypeError('IceTransportPolicy must be either \"all\" or \"relay\"');\n }\n\n setConfiguration(config: globalThis.RTCConfiguration): void {\n this._checkConfiguration(config);\n this.#config = config;\n }\n\n\n\n constructor(config: RTCConfiguration = { iceServers: [], iceTransportPolicy: 'all' }) {\n super();\n\n this._checkConfiguration(config);\n this.#config = config;\n this.#localOffer = createDeferredPromise();\n this.#localAnswer = createDeferredPromise();\n this.#dataChannels = new Set();\n this.#canTrickleIceCandidates = null;\n\n try {\n const peerIdentity = (config as any)?.peerIdentity ?? `peer-${getRandomString(7)}`;\n this.#peerConnection = config?.peerConnection ?? new PeerConnection(peerIdentity,\n {\n ...config,\n iceServers:\n config?.iceServers\n ?.map((server) => {\n const urls = Array.isArray(server.urls) ? server.urls : [server.urls];\n\n return urls.map((url) => {\n if (server.username && server.credential) {\n const [protocol, rest] = url.split(/:(.*)/);\n return `${protocol}:${server.username}:${server.credential}@${rest}`;\n }\n return url;\n });\n })\n .flat() ?? [],\n },\n );\n } catch (error) {\n if (!error || !error.message) throw new exceptions.NotFoundError('Unknown error');\n throw new exceptions.SyntaxError(error.message);\n }\n\n // forward peerConnection events\n this.#peerConnection.onStateChange(() => {\n this.dispatchEvent(new Event('connectionstatechange'));\n });\n\n this.#peerConnection.onIceStateChange(() => {\n this.dispatchEvent(new Event('iceconnectionstatechange'));\n });\n\n this.#peerConnection.onSignalingStateChange(() => {\n this.dispatchEvent(new Event('signalingstatechange'));\n });\n\n this.#peerConnection.onGatheringStateChange(() => {\n this.dispatchEvent(new Event('icegatheringstatechange'));\n });\n\n this.#peerConnection.onDataChannel((channel) => {\n const dc = new RTCDataChannel(channel);\n this.#dataChannels.add(dc);\n this.dispatchEvent(new RTCDataChannelEvent('datachannel', { channel: dc }));\n });\n\n this.#peerConnection.onLocalDescription((sdp, type) => {\n if (type === 'offer') {\n this.#localOffer.resolve({ sdp, type });\n }\n\n if (type === 'answer') {\n this.#localAnswer.resolve({ sdp, type });\n }\n });\n\n this.#peerConnection.onLocalCandidate((candidate, sdpMid) => {\n if (sdpMid === 'unspec') {\n this.#localAnswer.reject(new Error(`Invalid description type ${sdpMid}`));\n return;\n }\n\n this.#localCandidates.push(new RTCIceCandidate({ candidate, sdpMid }));\n this.dispatchEvent(new RTCPeerConnectionIceEvent(new RTCIceCandidate({ candidate, sdpMid })));\n });\n\n // forward events to properties\n this.addEventListener('connectionstatechange', (e) => {\n if (this.onconnectionstatechange) this.onconnectionstatechange(e);\n });\n this.addEventListener('signalingstatechange', (e) => {\n if (this.onsignalingstatechange) this.onsignalingstatechange(e);\n });\n this.addEventListener('iceconnectionstatechange', (e) => {\n if (this.oniceconnectionstatechange) this.oniceconnectionstatechange(e);\n });\n this.addEventListener('icegatheringstatechange', (e) => {\n if (this.onicegatheringstatechange) this.onicegatheringstatechange(e);\n });\n this.addEventListener('datachannel', (e) => {\n if (this.ondatachannel) this.ondatachannel(e as globalThis.RTCDataChannelEvent);\n });\n this.addEventListener('icecandidate', (e) => {\n if (this.onicecandidate) this.onicecandidate(e as globalThis.RTCPeerConnectionIceEvent);\n });\n\n this.#sctp = new RTCSctpTransport({\n pc: this,\n extraFunctions: {\n maxDataChannelId: (): number => {\n return this.#peerConnection.maxDataChannelId();\n },\n maxMessageSize: (): number => {\n return this.#peerConnection.maxMessageSize();\n },\n localCandidates: (): globalThis.RTCIceCandidate[] => {\n return this.#localCandidates;\n },\n remoteCandidates: (): globalThis.RTCIceCandidate[] => {\n return this.#remoteCandidates;\n },\n selectedCandidatePair: (): { local: SelectedCandidateInfo; remote: SelectedCandidateInfo } | null => {\n return this.#peerConnection.getSelectedCandidatePair();\n },\n },\n });\n }\n\n get canTrickleIceCandidates(): boolean | null {\n return this.#canTrickleIceCandidates;\n }\n\n get connectionState(): globalThis.RTCPeerConnectionState {\n return this.#peerConnection.state();\n }\n\n get iceConnectionState(): globalThis.RTCIceConnectionState {\n let state = this.#peerConnection.iceState();\n // libdatachannel uses 'completed' instead of 'connected'\n // see /webrtc/getstats.html\n if (state == 'completed') state = 'connected';\n return state;\n }\n\n get iceGatheringState(): globalThis.RTCIceGatheringState {\n return this.#peerConnection.gatheringState();\n }\n\n get currentLocalDescription(): globalThis.RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.localDescription() as any);\n }\n\n get currentRemoteDescription(): globalThis.RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.remoteDescription() as any);\n }\n\n get localDescription(): globalThis.RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.localDescription() as any);\n }\n\n get pendingLocalDescription(): globalThis.RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.localDescription() as any);\n }\n\n get pendingRemoteDescription():globalThis.RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.remoteDescription() as any);\n }\n\n get remoteDescription(): globalThis.RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.remoteDescription() as any);\n }\n\n get sctp(): globalThis.RTCSctpTransport {\n return this.#sctp;\n }\n\n get signalingState(): globalThis.RTCSignalingState {\n return this.#peerConnection.signalingState();\n }\n\n async addIceCandidate(candidate?: globalThis.RTCIceCandidateInit | null): Promise<void> {\n if (!candidate || !candidate.candidate) {\n return;\n }\n\n if (candidate.sdpMid === null && candidate.sdpMLineIndex === null) {\n throw new TypeError('sdpMid must be set');\n }\n\n if (candidate.sdpMid === undefined && candidate.sdpMLineIndex == undefined) {\n throw new TypeError('sdpMid must be set');\n }\n\n // Reject if sdpMid format is not valid\n // ??\n if (candidate.sdpMid && candidate.sdpMid.length > 3) {\n // console.log(candidate.sdpMid);\n throw new exceptions.OperationError('Invalid sdpMid format');\n }\n\n // We don't care about sdpMLineIndex, just for test\n if (!candidate.sdpMid && candidate.sdpMLineIndex > 1) {\n throw new exceptions.OperationError('This is only for test case.');\n }\n\n try {\n this.#peerConnection.addRemoteCandidate(candidate.candidate, candidate.sdpMid || '0');\n this.#remoteCandidates.push(\n new RTCIceCandidate({ candidate: candidate.candidate, sdpMid: candidate.sdpMid || '0' }),\n );\n } catch (error) {\n if (!error || !error.message) throw new exceptions.NotFoundError('Unknown error');\n\n // Check error Message if contains specific message\n if (error.message.includes('remote candidate without remote description'))\n throw new exceptions.InvalidStateError(error.message);\n if (error.message.includes('Invalid candidate format')) throw new exceptions.OperationError(error.message);\n\n throw new exceptions.NotFoundError(error.message);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n addTrack(_track, ..._streams): globalThis.RTCRtpSender {\n throw new DOMException('Not implemented');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n addTransceiver(_trackOrKind, _init): globalThis.RTCRtpTransceiver {\n throw new DOMException('Not implemented');\n }\n\n close(): void {\n // close all channels before shutting down\n this.#dataChannels.forEach((channel) => {\n channel.close();\n this.#dataChannelsClosed++;\n });\n\n this.#peerConnection.close();\n }\n\n createAnswer(): Promise<globalThis.RTCSessionDescriptionInit | any> {\n return this.#localAnswer;\n }\n\n\n createDataChannel(label, opts = {}): globalThis.RTCDataChannel {\n const channel = this.#peerConnection.createDataChannel(label, opts);\n const dataChannel = new RTCDataChannel(channel, opts);\n\n // ensure we can close all channels when shutting down\n this.#dataChannels.add(dataChannel);\n dataChannel.addEventListener('close', () => {\n this.#dataChannels.delete(dataChannel);\n this.#dataChannelsClosed++;\n });\n\n return dataChannel;\n }\n\n createOffer(): Promise<globalThis.RTCSessionDescriptionInit | any> {\n return this.#localOffer;\n }\n\n getConfiguration(): globalThis.RTCConfiguration {\n return this.#config;\n }\n\n getReceivers(): globalThis.RTCRtpReceiver[] {\n throw new DOMException('Not implemented');\n }\n\n getSenders(): globalThis.RTCRtpSender[] {\n throw new DOMException('Not implemented');\n }\n\n getStats(): Promise<globalThis.RTCStatsReport> {\n return new Promise((resolve) => {\n const report = new Map();\n const cp = this.#peerConnection?.getSelectedCandidatePair();\n const bytesSent = this.#peerConnection?.bytesSent();\n const bytesReceived = this.#peerConnection?.bytesReceived();\n const rtt = this.#peerConnection?.rtt();\n\n if(!cp) {\n return resolve(report);\n }\n\n const localIdRs = getRandomString(8);\n const localId = 'RTCIceCandidate_' + localIdRs;\n report.set(localId, {\n id: localId,\n type: 'local-candidate',\n timestamp: Date.now(),\n candidateType: cp.local.type,\n ip: cp.local.address,\n port: cp.local.port,\n });\n\n const remoteIdRs = getRandomString(8);\n const remoteId = 'RTCIceCandidate_' + remoteIdRs;\n report.set(remoteId, {\n id: remoteId,\n type: 'remote-candidate',\n timestamp: Date.now(),\n candidateType: cp.remote.type,\n ip: cp.remote.address,\n port: cp.remote.port,\n });\n\n const candidateId = 'RTCIceCandidatePair_' + localIdRs + '_' + remoteIdRs;\n report.set(candidateId, {\n id: candidateId,\n type: 'candidate-pair',\n timestamp: Date.now(),\n localCandidateId: localId,\n remoteCandidateId: remoteId,\n state: 'succeeded',\n nominated: true,\n writable: true,\n bytesSent: bytesSent,\n bytesReceived: bytesReceived,\n totalRoundTripTime: rtt,\n currentRoundTripTime: rtt,\n });\n\n const transportId = 'RTCTransport_0_1';\n report.set(transportId, {\n id: transportId,\n timestamp: Date.now(),\n type: 'transport',\n bytesSent: bytesSent,\n bytesReceived: bytesReceived,\n dtlsState: 'connected',\n selectedCandidatePairId: candidateId,\n selectedCandidatePairChanges: 1,\n });\n\n // peer-connection'\n report.set('P', {\n id: 'P',\n type: 'peer-connection',\n timestamp: Date.now(),\n dataChannelsOpened: this.#dataChannels.size,\n dataChannelsClosed: this.#dataChannelsClosed,\n });\n\n return resolve(report);\n });\n }\n\n getTransceivers(): globalThis.RTCRtpTransceiver[] {\n return []; // throw new DOMException('Not implemented');\n }\n\n removeTrack(): void {\n throw new DOMException('Not implemented');\n }\n\n restartIce(): Promise<void> {\n throw new DOMException('Not implemented');\n }\n\n async setLocalDescription(description: globalThis.RTCSessionDescriptionInit): Promise<void> {\n if (description?.type !== 'offer') {\n // any other type causes libdatachannel to throw\n return;\n }\n\n this.#peerConnection.setLocalDescription(description?.type as any);\n }\n\n async setRemoteDescription(description: globalThis.RTCSessionDescriptionInit): Promise<void> {\n if (description.sdp == null) {\n throw new DOMException('Remote SDP must be set');\n }\n\n this.#peerConnection.setRemoteDescription(description.sdp, description.type as any);\n }\n}\n\nfunction createDeferredPromise(): any {\n let resolve: any, reject: any;\n\n const promise = new Promise(function (_resolve, _reject) {\n resolve = _resolve;\n reject = _reject;\n });\n\n (promise as any).resolve = resolve;\n (promise as any).reject = reject;\n return promise;\n}\n\nfunction getRandomString(length): string {\n return Math.random()\n .toString(36)\n .substring(2, 2 + length);\n}\n"],"names":["PeerConnection","exceptions.NotFoundError","exceptions.SyntaxError","RTCDataChannel","RTCDataChannelEvent","RTCIceCandidate","RTCPeerConnectionIceEvent","RTCSctpTransport","exceptions.InvalidAccessError","RTCSessionDescription","exceptions.OperationError","exceptions.InvalidStateError"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RTCSctpTransport.cjs","sources":["../../../src/polyfill/RTCSctpTransport.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport RTCDtlsTransport from './RTCDtlsTransport';\nimport RTCPeerConnection from './RTCPeerConnection';\n\nexport default class RTCSctpTransport extends EventTarget implements globalThis.RTCSctpTransport {\n #pc: RTCPeerConnection = null;\n #extraFunctions = null;\n #transport: RTCDtlsTransport = null;\n\n onstatechange: ((this: RTCSctpTransport, ev: Event) => any) | null = null;\n\n constructor(initial: { pc: RTCPeerConnection, extraFunctions }) {\n super();\n this.#pc = initial.pc;\n this.#extraFunctions = initial.extraFunctions;\n\n this.#transport = new RTCDtlsTransport({ pc: initial.pc, extraFunctions: initial.extraFunctions });\n\n // forward peerConnection events\n this.#pc.addEventListener('connectionstatechange', () => {\n this.dispatchEvent(new Event('statechange'));\n });\n\n // forward events to properties\n this.addEventListener('statechange', (e) => {\n if (this.onstatechange) this.onstatechange(e);\n });\n }\n\n get maxChannels(): number | null {\n if (this.state !== 'connected') return null;\n return this.#pc ? this.#extraFunctions.maxDataChannelId() : 0;\n }\n\n get maxMessageSize(): number {\n if (this.state !== 'connected') return null;\n return this.#pc ? this.#extraFunctions.maxMessageSize() : 0;\n }\n\n get state(): globalThis.RTCSctpTransportState {\n // reduce state from new, connecting, connected, disconnected, failed, closed, unknown\n // to RTCSctpTransport states connecting, connected, closed\n let state = this.#pc.connectionState;\n if (state === 'new' || state === 'connecting') {\n state = 'connecting';\n } else if (state === 'disconnected' || state === 'failed' || state === 'closed') {\n state = 'closed';\n }\n return state;\n }\n\n get transport(): RTCDtlsTransport {\n return this.#transport;\n }\n}\n"],"names":["RTCDtlsTransport"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAA,GAAA,EAAA,eAAA,EAAA,UAAA,CAAA;AAIA,MAAqB,yBAAyB,WAAmD,CAAA;AAAA,EAO7F,YAAY,OAAoD,EAAA;AAC5D,IAAM,KAAA,EAAA,CAAA;AAPV,IAAyB,YAAA,CAAA,IAAA,EAAA,GAAA,EAAA,IAAA,CAAA,CAAA;AACzB,IAAkB,YAAA,CAAA,IAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAClB,IAA+B,YAAA,CAAA,IAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;AAE/B,IAAqE,aAAA,CAAA,IAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAIjE,IAAA,YAAA,CAAA,IAAA,EAAK,KAAM,OAAQ,CAAA,EAAA,CAAA,CAAA;AACnB,IAAA,YAAA,CAAA,IAAA,EAAK,iBAAkB,OAAQ,CAAA,cAAA,CAAA,CAAA;AAE/B,IAAK,YAAA,CAAA,IAAA,EAAA,UAAA,EAAa,IAAIA,wBAAA,CAAiB,EAAE,EAAA,EAAI,QAAQ,EAAI,EAAA,cAAA,EAAgB,OAAQ,CAAA,cAAA,EAAgB,CAAA,CAAA,CAAA;AAGjG,IAAK,YAAA,CAAA,IAAA,EAAA,GAAA,CAAA,CAAI,gBAAiB,CAAA,uBAAA,EAAyB,MAAM;AACrD,MAAA,IAAA,CAAK,aAAc,CAAA,IAAI,KAAM,CAAA,aAAa,CAAC,CAAA,CAAA;AAAA,KAC9C,CAAA,CAAA;AAGD,IAAK,IAAA,CAAA,gBAAA,CAAiB,aAAe,EAAA,CAAC,CAAM,KAAA;AACxC,MAAA,IAAI,IAAK,CAAA,aAAA,EAAoB,IAAA,CAAA,aAAA,CAAc,CAAC,CAAA,CAAA;AAAA,KAC/C,CAAA,CAAA;AAAA,GACL;AAAA,EAEA,IAAI,WAA6B,GAAA;AAC7B,IAAI,IAAA,IAAA,CAAK,KAAU,KAAA,WAAA,EAAoB,OAAA,IAAA,CAAA;AACvC,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,GAAM,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,kBAAqB,GAAA,CAAA,CAAA;AAAA,GAChE;AAAA,EAEA,IAAI,cAAyB,GAAA;AACzB,IAAI,IAAA,IAAA,CAAK,KAAU,KAAA,WAAA,EAAoB,OAAA,IAAA,CAAA;AACvC,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,GAAM,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,gBAAmB,GAAA,CAAA,CAAA;AAAA,GAC9D;AAAA,EAEA,IAAI,KAA0C,GAAA;AAG1C,IAAI,IAAA,KAAA,GAAQ,mBAAK,GAAI,CAAA,CAAA,eAAA,CAAA;AACrB,IAAI,IAAA,KAAA,KAAU,KAAS,IAAA,KAAA,KAAU,YAAc,EAAA;AAC3C,MAAQ,KAAA,GAAA,YAAA,CAAA;AAAA,eACD,KAAU,KAAA,cAAA,IAAkB,KAAU,KAAA,QAAA,IAAY,UAAU,QAAU,EAAA;AAC7E,MAAQ,KAAA,GAAA,QAAA,CAAA;AAAA,KACZ;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACX;AAAA,EAEA,IAAI,SAA8B,GAAA;AAC9B,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAAA,GAChB;AACJ,CAAA;AAjDI,GAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,eAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,UAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
1
+ {"version":3,"file":"RTCSctpTransport.cjs","sources":["../../../src/polyfill/RTCSctpTransport.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport RTCDtlsTransport from './RTCDtlsTransport';\n\nexport default class RTCSctpTransport extends EventTarget implements globalThis.RTCSctpTransport {\n #pc: globalThis.RTCPeerConnection = null;\n #extraFunctions = null;\n #transport: globalThis.RTCDtlsTransport = null;\n\n onstatechange: ((this: globalThis.RTCSctpTransport, ev: Event) => any) | null = null;\n\n constructor(initial: { pc: globalThis.RTCPeerConnection, extraFunctions }) {\n super();\n this.#pc = initial.pc;\n this.#extraFunctions = initial.extraFunctions;\n\n this.#transport = new RTCDtlsTransport({ pc: initial.pc, extraFunctions: initial.extraFunctions });\n\n // forward peerConnection events\n this.#pc.addEventListener('connectionstatechange', () => {\n this.dispatchEvent(new Event('statechange'));\n });\n\n // forward events to properties\n this.addEventListener('statechange', (e) => {\n if (this.onstatechange) this.onstatechange(e);\n });\n }\n\n get maxChannels(): number | null {\n if (this.state !== 'connected') return null;\n return this.#pc ? this.#extraFunctions.maxDataChannelId() : 0;\n }\n\n get maxMessageSize(): number {\n if (this.state !== 'connected') return null;\n return this.#pc ? this.#extraFunctions.maxMessageSize() : 0;\n }\n\n get state(): globalThis.RTCSctpTransportState {\n // reduce state from new, connecting, connected, disconnected, failed, closed, unknown\n // to RTCSctpTransport states connecting, connected, closed\n let state = this.#pc.connectionState;\n if (state === 'new' || state === 'connecting') {\n state = 'connecting';\n } else if (state === 'disconnected' || state === 'failed' || state === 'closed') {\n state = 'closed';\n }\n return state;\n }\n\n get transport(): globalThis.RTCDtlsTransport {\n return this.#transport;\n }\n}\n"],"names":["RTCDtlsTransport"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAA,GAAA,EAAA,eAAA,EAAA,UAAA,CAAA;AAGA,MAAqB,yBAAyB,WAAmD,CAAA;AAAA,EAO7F,YAAY,OAA+D,EAAA;AACvE,IAAM,KAAA,EAAA,CAAA;AAPV,IAAoC,YAAA,CAAA,IAAA,EAAA,GAAA,EAAA,IAAA,CAAA,CAAA;AACpC,IAAkB,YAAA,CAAA,IAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAClB,IAA0C,YAAA,CAAA,IAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;AAE1C,IAAgF,aAAA,CAAA,IAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAI5E,IAAA,YAAA,CAAA,IAAA,EAAK,KAAM,OAAQ,CAAA,EAAA,CAAA,CAAA;AACnB,IAAA,YAAA,CAAA,IAAA,EAAK,iBAAkB,OAAQ,CAAA,cAAA,CAAA,CAAA;AAE/B,IAAK,YAAA,CAAA,IAAA,EAAA,UAAA,EAAa,IAAIA,wBAAA,CAAiB,EAAE,EAAA,EAAI,QAAQ,EAAI,EAAA,cAAA,EAAgB,OAAQ,CAAA,cAAA,EAAgB,CAAA,CAAA,CAAA;AAGjG,IAAK,YAAA,CAAA,IAAA,EAAA,GAAA,CAAA,CAAI,gBAAiB,CAAA,uBAAA,EAAyB,MAAM;AACrD,MAAA,IAAA,CAAK,aAAc,CAAA,IAAI,KAAM,CAAA,aAAa,CAAC,CAAA,CAAA;AAAA,KAC9C,CAAA,CAAA;AAGD,IAAK,IAAA,CAAA,gBAAA,CAAiB,aAAe,EAAA,CAAC,CAAM,KAAA;AACxC,MAAA,IAAI,IAAK,CAAA,aAAA,EAAoB,IAAA,CAAA,aAAA,CAAc,CAAC,CAAA,CAAA;AAAA,KAC/C,CAAA,CAAA;AAAA,GACL;AAAA,EAEA,IAAI,WAA6B,GAAA;AAC7B,IAAI,IAAA,IAAA,CAAK,KAAU,KAAA,WAAA,EAAoB,OAAA,IAAA,CAAA;AACvC,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,GAAM,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,kBAAqB,GAAA,CAAA,CAAA;AAAA,GAChE;AAAA,EAEA,IAAI,cAAyB,GAAA;AACzB,IAAI,IAAA,IAAA,CAAK,KAAU,KAAA,WAAA,EAAoB,OAAA,IAAA,CAAA;AACvC,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,GAAM,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,gBAAmB,GAAA,CAAA,CAAA;AAAA,GAC9D;AAAA,EAEA,IAAI,KAA0C,GAAA;AAG1C,IAAI,IAAA,KAAA,GAAQ,mBAAK,GAAI,CAAA,CAAA,eAAA,CAAA;AACrB,IAAI,IAAA,KAAA,KAAU,KAAS,IAAA,KAAA,KAAU,YAAc,EAAA;AAC3C,MAAQ,KAAA,GAAA,YAAA,CAAA;AAAA,eACD,KAAU,KAAA,cAAA,IAAkB,KAAU,KAAA,QAAA,IAAY,UAAU,QAAU,EAAA;AAC7E,MAAQ,KAAA,GAAA,QAAA,CAAA;AAAA,KACZ;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACX;AAAA,EAEA,IAAI,SAAyC,GAAA;AACzC,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAAA,GAChB;AACJ,CAAA;AAjDI,GAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,eAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,UAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
@@ -23,9 +23,7 @@ const Video = nodeDataChannel.Video;
23
23
  const Track = nodeDataChannel.Track;
24
24
  const DataChannel = nodeDataChannel.DataChannel;
25
25
  const PeerConnection = nodeDataChannel.PeerConnection;
26
- class RtcpReceivingSession {
27
- //
28
- }
26
+ const RtcpReceivingSession = nodeDataChannel.RtcpReceivingSession;
29
27
  const DataChannelStream = DataChannelStream$1;
30
28
  var n = {
31
29
  initLogger,
@@ -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 { Channel, DataChannelInitConfig, DescriptionType, Direction, LogLevel, RtcConfig, RTCIceConnectionState, RTCIceGatheringState, RTCPeerConnectionState, RTCSignalingState, SctpSettings, SelectedCandidateInfo } from './types';\nimport { WebSocket } from './websocket';\n\nexport function preload(): void { nodeDataChannel.preload(); }\nexport function initLogger(level: LogLevel): void { nodeDataChannel.initLogger(level); }\nexport function cleanup(): void { nodeDataChannel.cleanup(); }\nexport function setSctpSettings(settings: SctpSettings): void { nodeDataChannel.setSctpSettings(settings); }\nexport function getLibraryVersion(): string { return nodeDataChannel.getLibraryVersion(); }\n\nexport interface Audio {\n addAudioCodec(payloadType: number, codec: string, profile?: string): void;\n addOpusCodec(payloadType: number, profile?: string): string;\n direction(): Direction;\n generateSdp(eol: string, addr: string, port: number): string;\n mid(): string;\n setDirection(dir: Direction): void;\n description(): string;\n removeFormat(fmt: string): void;\n addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;\n removeSSRC(ssrc: number): void;\n replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;\n hasSSRC(ssrc: number): boolean;\n getSSRCs(): number[];\n getCNameForSsrc(ssrc: number): string;\n setBitrate(bitRate: number): void;\n getBitrate(): number;\n hasPayloadType(payloadType: number): boolean;\n addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;\n addRTPMap(): void;\n parseSdpLine(line: string): void;\n}\nexport const Audio: {\n new(mid: string, dir: Direction): Audio\n} = nodeDataChannel.Audio\n\n\nexport interface Video {\n addVideoCodec(payloadType: number, codec: string, profile?: string): void;\n addH264Codec(payloadType: number, profile?: string): void;\n addVP8Codec(payloadType: number): void;\n addVP9Codec(payloadType: number): void;\n direction(): Direction;\n generateSdp(eol: string, addr: string, port: number): string;\n mid(): string;\n setDirection(dir: Direction): void;\n description(): string;\n removeFormat(fmt: string): void;\n addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;\n removeSSRC(ssrc: number): void;\n replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;\n hasSSRC(ssrc: number): boolean;\n getSSRCs(): number[];\n getCNameForSsrc(ssrc: number): string;\n setBitrate(bitRate: number): void;\n getBitrate(): number;\n hasPayloadType(payloadType: number): boolean;\n addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;\n addRTPMap(): void;\n parseSdpLine(line: string): void;\n}\nexport const Video: {\n new(mid: string, dir: Direction): Video\n} = nodeDataChannel.Video\n\nexport interface Track {\n direction(): Direction;\n mid(): string;\n type(): string;\n close(): void;\n sendMessage(msg: string): boolean;\n sendMessageBinary(buffer: Buffer): boolean;\n isOpen(): boolean;\n isClosed(): boolean;\n bufferedAmount(): number;\n maxMessageSize(): number;\n requestBitrate(bitRate: number): boolean;\n setBufferedAmountLowThreshold(newSize: number): void;\n requestKeyframe(): boolean;\n setMediaHandler(handler: RtcpReceivingSession): void;\n onOpen(cb: () => void): void;\n onClosed(cb: () => void): void;\n onError(cb: (err: string) => void): void;\n onMessage(cb: (msg: Buffer) => void): void;\n}\nexport const Track: {\n new(): Track\n} = nodeDataChannel.Track\n\nexport interface DataChannel extends Channel {\n getLabel(): string;\n getId(): number;\n getProtocol(): string;\n\n // Channel implementation\n close(): void;\n sendMessage(msg: string): boolean;\n sendMessageBinary(buffer: Buffer | Uint8Array): boolean;\n isOpen(): boolean;\n bufferedAmount(): number;\n maxMessageSize(): number;\n setBufferedAmountLowThreshold(newSize: number): void;\n onOpen(cb: () => void): void;\n onClosed(cb: () => void): void;\n onError(cb: (err: string) => void): void;\n onBufferedAmountLow(cb: () => void): void;\n onMessage(cb: (msg: string | Buffer | ArrayBuffer) => void): void;\n}\nexport const DataChannel: {\n // DataChannel implementation\n} = nodeDataChannel.DataChannel\n\nexport interface PeerConnection {\n close(): void;\n setLocalDescription(type?: DescriptionType): void;\n setRemoteDescription(sdp: string, type: DescriptionType): void;\n localDescription(): { type: DescriptionType; sdp: string } | null;\n remoteDescription(): { type: DescriptionType; sdp: string } | null;\n addRemoteCandidate(candidate: string, mid: string): void;\n createDataChannel(label: string, config?: DataChannelInitConfig): DataChannel;\n addTrack(media: Video | Audio): Track;\n hasMedia(): boolean;\n state(): RTCPeerConnectionState;\n iceState(): RTCIceConnectionState;\n signalingState(): RTCSignalingState;\n gatheringState(): RTCIceGatheringState;\n onLocalDescription(cb: (sdp: string, type: DescriptionType) => void): void;\n onLocalCandidate(cb: (candidate: string, mid: string) => void): void;\n onStateChange(cb: (state: string) => void): void;\n onIceStateChange(cb: (state: string) => void): void;\n onSignalingStateChange(cb: (state: string) => void): void;\n onGatheringStateChange(cb: (state: string) => void): void;\n onDataChannel(cb: (dc: DataChannel) => void): void;\n onTrack(cb: (track: Track) => void): void;\n bytesSent(): number;\n bytesReceived(): number;\n rtt(): number;\n getSelectedCandidatePair(): { local: SelectedCandidateInfo; remote: SelectedCandidateInfo } | null;\n maxDataChannelId(): number;\n maxMessageSize(): number;\n}\nexport const PeerConnection: {\n new(peerName: string, config: RtcConfig): PeerConnection\n} = nodeDataChannel.PeerConnection\n\nexport class RtcpReceivingSession {\n //\n}\n\nexport { WebSocketServer } from './websocket-server';\nexport { WebSocket } from './websocket';\n\nexport const DataChannelStream = _DataChannelStream;\n\nexport default {\n initLogger,\n cleanup,\n preload,\n setSctpSettings,\n getLibraryVersion,\n RtcpReceivingSession,\n Track,\n Video,\n Audio,\n DataChannel,\n PeerConnection,\n WebSocket,\n WebSocketServer,\n DataChannelStream\n};\n\n\n// Types\n// https://github.com/murat-dogan/node-datachannel/issues/300\nexport * from './types';\n"],"names":["_DataChannelStream"],"mappings":";;;;;AAMO,SAAS,OAAgB,GAAA;AAAE,EAAA,eAAA,CAAgB,OAAQ,EAAA,CAAA;AAAG,CAAA;AACtD,SAAS,WAAW,KAAuB,EAAA;AAAE,EAAA,eAAA,CAAgB,WAAW,KAAK,CAAA,CAAA;AAAG,CAAA;AAChF,SAAS,OAAgB,GAAA;AAAE,EAAA,eAAA,CAAgB,OAAQ,EAAA,CAAA;AAAG,CAAA;AACtD,SAAS,gBAAgB,QAA8B,EAAA;AAAE,EAAA,eAAA,CAAgB,gBAAgB,QAAQ,CAAA,CAAA;AAAG,CAAA;AACpG,SAAS,iBAA4B,GAAA;AAAE,EAAA,OAAO,gBAAgB,iBAAkB,EAAA,CAAA;AAAG,CAAA;AAwBnF,MAAM,QAET,eAAgB,CAAA,MAAA;AA2Bb,MAAM,QAET,eAAgB,CAAA,MAAA;AAsBb,MAAM,QAET,eAAgB,CAAA,MAAA;AAqBb,MAAM,cAET,eAAgB,CAAA,YAAA;AA+Bb,MAAM,iBAET,eAAgB,CAAA,eAAA;AAEb,MAAM,oBAAqB,CAAA;AAAA;AAElC,CAAA;AAKO,MAAM,iBAAoB,GAAAA,oBAAA;AAEjC,QAAe;AAAA,EACX,UAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AACJ,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 { Channel, DataChannelInitConfig, DescriptionType, Direction, LogLevel, RtcConfig, RTCIceConnectionState, RTCIceGatheringState, RTCPeerConnectionState, RTCSignalingState, SctpSettings, SelectedCandidateInfo } from './types';\nimport { WebSocket } from './websocket';\n\nexport function preload(): void { nodeDataChannel.preload(); }\nexport function initLogger(level: LogLevel): void { nodeDataChannel.initLogger(level); }\nexport function cleanup(): void { nodeDataChannel.cleanup(); }\nexport function setSctpSettings(settings: SctpSettings): void { nodeDataChannel.setSctpSettings(settings); }\nexport function getLibraryVersion(): string { return nodeDataChannel.getLibraryVersion(); }\n\nexport interface Audio {\n addAudioCodec(payloadType: number, codec: string, profile?: string): void;\n addOpusCodec(payloadType: number, profile?: string): string;\n direction(): Direction;\n generateSdp(eol: string, addr: string, port: number): string;\n mid(): string;\n setDirection(dir: Direction): void;\n description(): string;\n removeFormat(fmt: string): void;\n addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;\n removeSSRC(ssrc: number): void;\n replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;\n hasSSRC(ssrc: number): boolean;\n getSSRCs(): number[];\n getCNameForSsrc(ssrc: number): string;\n setBitrate(bitRate: number): void;\n getBitrate(): number;\n hasPayloadType(payloadType: number): boolean;\n addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;\n addRTPMap(): void;\n parseSdpLine(line: string): void;\n}\nexport const Audio: {\n new(mid: string, dir: Direction): Audio\n} = nodeDataChannel.Audio\n\n\nexport interface Video {\n addVideoCodec(payloadType: number, codec: string, profile?: string): void;\n addH264Codec(payloadType: number, profile?: string): void;\n addVP8Codec(payloadType: number): void;\n addVP9Codec(payloadType: number): void;\n direction(): Direction;\n generateSdp(eol: string, addr: string, port: number): string;\n mid(): string;\n setDirection(dir: Direction): void;\n description(): string;\n removeFormat(fmt: string): void;\n addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;\n removeSSRC(ssrc: number): void;\n replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;\n hasSSRC(ssrc: number): boolean;\n getSSRCs(): number[];\n getCNameForSsrc(ssrc: number): string;\n setBitrate(bitRate: number): void;\n getBitrate(): number;\n hasPayloadType(payloadType: number): boolean;\n addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;\n addRTPMap(): void;\n parseSdpLine(line: string): void;\n}\nexport const Video: {\n new(mid: string, dir: Direction): Video\n} = nodeDataChannel.Video\n\nexport interface Track {\n direction(): Direction;\n mid(): string;\n type(): string;\n close(): void;\n sendMessage(msg: string): boolean;\n sendMessageBinary(buffer: Buffer): boolean;\n isOpen(): boolean;\n isClosed(): boolean;\n bufferedAmount(): number;\n maxMessageSize(): number;\n requestBitrate(bitRate: number): boolean;\n setBufferedAmountLowThreshold(newSize: number): void;\n requestKeyframe(): boolean;\n setMediaHandler(handler: RtcpReceivingSession): void;\n onOpen(cb: () => void): void;\n onClosed(cb: () => void): void;\n onError(cb: (err: string) => void): void;\n onMessage(cb: (msg: Buffer) => void): void;\n}\nexport const Track: {\n new(): Track\n} = nodeDataChannel.Track\n\nexport interface DataChannel extends Channel {\n getLabel(): string;\n getId(): number;\n getProtocol(): string;\n\n // Channel implementation\n close(): void;\n sendMessage(msg: string): boolean;\n sendMessageBinary(buffer: Buffer | Uint8Array): boolean;\n isOpen(): boolean;\n bufferedAmount(): number;\n maxMessageSize(): number;\n setBufferedAmountLowThreshold(newSize: number): void;\n onOpen(cb: () => void): void;\n onClosed(cb: () => void): void;\n onError(cb: (err: string) => void): void;\n onBufferedAmountLow(cb: () => void): void;\n onMessage(cb: (msg: string | Buffer | ArrayBuffer) => void): void;\n}\nexport const DataChannel: {\n // DataChannel implementation\n} = nodeDataChannel.DataChannel\n\nexport interface PeerConnection {\n close(): void;\n setLocalDescription(type?: DescriptionType): void;\n setRemoteDescription(sdp: string, type: DescriptionType): void;\n localDescription(): { type: DescriptionType; sdp: string } | null;\n remoteDescription(): { type: DescriptionType; sdp: string } | null;\n addRemoteCandidate(candidate: string, mid: string): void;\n createDataChannel(label: string, config?: DataChannelInitConfig): DataChannel;\n addTrack(media: Video | Audio): Track;\n hasMedia(): boolean;\n state(): RTCPeerConnectionState;\n iceState(): RTCIceConnectionState;\n signalingState(): RTCSignalingState;\n gatheringState(): RTCIceGatheringState;\n onLocalDescription(cb: (sdp: string, type: DescriptionType) => void): void;\n onLocalCandidate(cb: (candidate: string, mid: string) => void): void;\n onStateChange(cb: (state: string) => void): void;\n onIceStateChange(cb: (state: string) => void): void;\n onSignalingStateChange(cb: (state: string) => void): void;\n onGatheringStateChange(cb: (state: string) => void): void;\n onDataChannel(cb: (dc: DataChannel) => void): void;\n onTrack(cb: (track: Track) => void): void;\n bytesSent(): number;\n bytesReceived(): number;\n rtt(): number;\n getSelectedCandidatePair(): { local: SelectedCandidateInfo; remote: SelectedCandidateInfo } | null;\n maxDataChannelId(): number;\n maxMessageSize(): number;\n}\nexport const PeerConnection: {\n new(peerName: string, config: RtcConfig): PeerConnection\n} = nodeDataChannel.PeerConnection\n\nexport interface RtcpReceivingSession {\n}\n\nexport const RtcpReceivingSession: {\n new(): RtcpReceivingSession\n} = nodeDataChannel.RtcpReceivingSession\n\nexport { WebSocketServer } from './websocket-server';\nexport { WebSocket } from './websocket';\n\nexport const DataChannelStream = _DataChannelStream;\n\nexport default {\n initLogger,\n cleanup,\n preload,\n setSctpSettings,\n getLibraryVersion,\n RtcpReceivingSession,\n Track,\n Video,\n Audio,\n DataChannel,\n PeerConnection,\n WebSocket,\n WebSocketServer,\n DataChannelStream\n};\n\n\n// Types\n// https://github.com/murat-dogan/node-datachannel/issues/300\nexport * from './types';\n"],"names":["_DataChannelStream"],"mappings":";;;;;AAMO,SAAS,OAAgB,GAAA;AAAE,EAAA,eAAA,CAAgB,OAAQ,EAAA,CAAA;AAAG,CAAA;AACtD,SAAS,WAAW,KAAuB,EAAA;AAAE,EAAA,eAAA,CAAgB,WAAW,KAAK,CAAA,CAAA;AAAG,CAAA;AAChF,SAAS,OAAgB,GAAA;AAAE,EAAA,eAAA,CAAgB,OAAQ,EAAA,CAAA;AAAG,CAAA;AACtD,SAAS,gBAAgB,QAA8B,EAAA;AAAE,EAAA,eAAA,CAAgB,gBAAgB,QAAQ,CAAA,CAAA;AAAG,CAAA;AACpG,SAAS,iBAA4B,GAAA;AAAE,EAAA,OAAO,gBAAgB,iBAAkB,EAAA,CAAA;AAAG,CAAA;AAwBnF,MAAM,QAET,eAAgB,CAAA,MAAA;AA2Bb,MAAM,QAET,eAAgB,CAAA,MAAA;AAsBb,MAAM,QAET,eAAgB,CAAA,MAAA;AAqBb,MAAM,cAET,eAAgB,CAAA,YAAA;AA+Bb,MAAM,iBAET,eAAgB,CAAA,eAAA;AAKb,MAAM,uBAET,eAAgB,CAAA,qBAAA;AAKb,MAAM,iBAAoB,GAAAA,oBAAA;AAEjC,QAAe;AAAA,EACX,UAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AACJ,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Events.mjs","sources":["../../../src/polyfill/Events.ts"],"sourcesContent":["import RTCDataChannel from './RTCDataChannel';\nimport RTCIceCandidate from './RTCIceCandidate';\n\n\nexport class RTCPeerConnectionIceEvent extends Event implements globalThis.RTCPeerConnectionIceEvent {\n #candidate: RTCIceCandidate;\n\n constructor(candidate: RTCIceCandidate) {\n super('icecandidate');\n\n this.#candidate = candidate;\n }\n\n get candidate(): RTCIceCandidate {\n return this.#candidate;\n }\n}\n\nexport class RTCDataChannelEvent extends Event implements globalThis.RTCDataChannelEvent {\n #channel: RTCDataChannel;\n\n constructor(type: string, eventInitDict: globalThis.RTCDataChannelEventInit) {\n super(type);\n\n if (type && !eventInitDict.channel) throw new TypeError('channel member is required');\n\n this.#channel = eventInitDict?.channel as RTCDataChannel;\n }\n\n get channel(): RTCDataChannel {\n return this.#channel;\n }\n}\n"],"names":[],"mappings":";;;;;;;AAAA,IAAA,UAAA,EAAA,QAAA,CAAA;AAIO,MAAM,kCAAkC,KAAsD,CAAA;AAAA,EAGjG,YAAY,SAA4B,EAAA;AACpC,IAAA,KAAA,CAAM,cAAc,CAAA,CAAA;AAHxB,IAAA,YAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAKI,IAAA,YAAA,CAAA,IAAA,EAAK,UAAa,EAAA,SAAA,CAAA,CAAA;AAAA,GACtB;AAAA,EAEA,IAAI,SAA6B,GAAA;AAC7B,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAAA,GAChB;AACJ,CAAA;AAXI,UAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAaG,MAAM,4BAA4B,KAAgD,CAAA;AAAA,EAGrF,WAAA,CAAY,MAAc,aAAmD,EAAA;AACzE,IAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAHd,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAKI,IAAA,IAAI,QAAQ,CAAC,aAAA,CAAc,SAAe,MAAA,IAAI,UAAU,4BAA4B,CAAA,CAAA;AAEpF,IAAA,YAAA,CAAA,IAAA,EAAK,UAAW,aAAe,EAAA,OAAA,CAAA,CAAA;AAAA,GACnC;AAAA,EAEA,IAAI,OAA0B,GAAA;AAC1B,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAAA,GAChB;AACJ,CAAA;AAbI,QAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
1
+ {"version":3,"file":"Events.mjs","sources":["../../../src/polyfill/Events.ts"],"sourcesContent":["export class RTCPeerConnectionIceEvent extends Event implements globalThis.RTCPeerConnectionIceEvent {\n #candidate: globalThis.RTCIceCandidate;\n\n constructor(candidate: globalThis.RTCIceCandidate) {\n super('icecandidate');\n\n this.#candidate = candidate;\n }\n\n get candidate(): globalThis.RTCIceCandidate {\n return this.#candidate;\n }\n}\n\nexport class RTCDataChannelEvent extends Event implements globalThis.RTCDataChannelEvent {\n #channel: globalThis.RTCDataChannel;\n\n constructor(type: string, eventInitDict: globalThis.RTCDataChannelEventInit) {\n super(type);\n\n if (type && !eventInitDict.channel) throw new TypeError('channel member is required');\n\n this.#channel = eventInitDict?.channel as globalThis.RTCDataChannel;\n }\n\n get channel(): globalThis.RTCDataChannel {\n return this.#channel;\n }\n}\n"],"names":[],"mappings":";;;;;;;AAAA,IAAA,UAAA,EAAA,QAAA,CAAA;AAAO,MAAM,kCAAkC,KAAsD,CAAA;AAAA,EAGjG,YAAY,SAAuC,EAAA;AAC/C,IAAA,KAAA,CAAM,cAAc,CAAA,CAAA;AAHxB,IAAA,YAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAKI,IAAA,YAAA,CAAA,IAAA,EAAK,UAAa,EAAA,SAAA,CAAA,CAAA;AAAA,GACtB;AAAA,EAEA,IAAI,SAAwC,GAAA;AACxC,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAAA,GAChB;AACJ,CAAA;AAXI,UAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAaG,MAAM,4BAA4B,KAAgD,CAAA;AAAA,EAGrF,WAAA,CAAY,MAAc,aAAmD,EAAA;AACzE,IAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAHd,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAKI,IAAA,IAAI,QAAQ,CAAC,aAAA,CAAc,SAAe,MAAA,IAAI,UAAU,4BAA4B,CAAA,CAAA;AAEpF,IAAA,YAAA,CAAA,IAAA,EAAK,UAAW,aAAe,EAAA,OAAA,CAAA,CAAA;AAAA,GACnC;AAAA,EAEA,IAAI,OAAqC,GAAA;AACrC,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAAA,GAChB;AACJ,CAAA;AAbI,QAAA,GAAA,IAAA,OAAA,EAAA;;;;"}