livekit-client 2.22.2 → 2.22.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -0
- package/dist/livekit-client.e2ee.worker.js +1 -1
- package/dist/livekit-client.e2ee.worker.js.map +1 -1
- package/dist/livekit-client.e2ee.worker.mjs +488 -438
- package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
- package/dist/livekit-client.esm.mjs +954 -301
- package/dist/livekit-client.esm.mjs.map +1 -1
- package/dist/livekit-client.fm.worker.js +1 -1
- package/dist/livekit-client.fm.worker.js.map +1 -1
- package/dist/livekit-client.fm.worker.mjs +10 -2
- package/dist/livekit-client.fm.worker.mjs.map +1 -1
- package/dist/livekit-client.umd.js +1 -1
- package/dist/livekit-client.umd.js.map +1 -1
- package/dist/src/api/SignalClient.d.ts +4 -2
- package/dist/src/api/SignalClient.d.ts.map +1 -1
- package/dist/src/api/WebSocketStream.d.ts.map +1 -1
- package/dist/src/api/utils.d.ts +1 -0
- package/dist/src/api/utils.d.ts.map +1 -1
- package/dist/src/e2ee/E2eeManager.d.ts +26 -0
- package/dist/src/e2ee/E2eeManager.d.ts.map +1 -1
- package/dist/src/e2ee/types.d.ts +15 -1
- package/dist/src/e2ee/types.d.ts.map +1 -1
- package/dist/src/e2ee/worker/DataCryptor.d.ts.map +1 -1
- package/dist/src/e2ee/worker/ErrorRateLimiter.d.ts +21 -0
- package/dist/src/e2ee/worker/ErrorRateLimiter.d.ts.map +1 -0
- package/dist/src/e2ee/worker/FrameCryptor.d.ts +1 -18
- package/dist/src/e2ee/worker/FrameCryptor.d.ts.map +1 -1
- package/dist/src/logger.d.ts +4 -0
- package/dist/src/logger.d.ts.map +1 -1
- package/dist/src/options.d.ts +14 -0
- package/dist/src/options.d.ts.map +1 -1
- package/dist/src/room/PCTransport.d.ts +78 -7
- package/dist/src/room/PCTransport.d.ts.map +1 -1
- package/dist/src/room/PCTransportManager.d.ts.map +1 -1
- package/dist/src/room/RTCEngine.d.ts +9 -0
- package/dist/src/room/RTCEngine.d.ts.map +1 -1
- package/dist/src/room/Room.d.ts +1 -1
- package/dist/src/room/Room.d.ts.map +1 -1
- package/dist/src/room/defaults.d.ts.map +1 -1
- package/dist/src/room/errors.d.ts +18 -0
- package/dist/src/room/errors.d.ts.map +1 -1
- package/dist/src/room/events.d.ts +3 -2
- package/dist/src/room/events.d.ts.map +1 -1
- package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
- package/dist/src/room/participant/publishUtils.d.ts +16 -0
- package/dist/src/room/participant/publishUtils.d.ts.map +1 -1
- package/dist/src/room/rpc/client/RpcClientManager.d.ts.map +1 -1
- package/dist/src/room/track/LocalTrack.d.ts.map +1 -1
- package/dist/src/room/track/LocalVideoTrack.d.ts +9 -0
- package/dist/src/room/track/LocalVideoTrack.d.ts.map +1 -1
- package/dist/src/room/track/options.d.ts +1 -1
- package/dist/src/room/track/utils.d.ts +13 -0
- package/dist/src/room/track/utils.d.ts.map +1 -1
- package/dist/src/room/utils.d.ts +66 -0
- package/dist/src/room/utils.d.ts.map +1 -1
- package/dist/src/test/compressionStreamStubs.d.ts +12 -0
- package/dist/src/test/compressionStreamStubs.d.ts.map +1 -0
- package/dist/ts4.2/api/SignalClient.d.ts +187 -185
- package/dist/ts4.2/api/SignalClientStateMachine.d.ts +85 -85
- package/dist/ts4.2/api/WebSocketStream.d.ts +33 -33
- package/dist/ts4.2/api/utils.d.ts +9 -8
- package/dist/ts4.2/connectionHelper/ConnectionCheck.d.ts +30 -30
- package/dist/ts4.2/connectionHelper/checks/Checker.d.ts +62 -62
- package/dist/ts4.2/connectionHelper/checks/cloudRegion.d.ts +18 -18
- package/dist/ts4.2/connectionHelper/checks/connectionProtocol.d.ts +20 -20
- package/dist/ts4.2/connectionHelper/checks/publishAudio.d.ts +6 -6
- package/dist/ts4.2/connectionHelper/checks/publishVideo.d.ts +7 -7
- package/dist/ts4.2/connectionHelper/checks/reconnect.d.ts +6 -6
- package/dist/ts4.2/connectionHelper/checks/turn.d.ts +6 -6
- package/dist/ts4.2/connectionHelper/checks/webrtc.d.ts +6 -6
- package/dist/ts4.2/connectionHelper/checks/websocket.d.ts +6 -6
- package/dist/ts4.2/e2ee/E2eeManager.d.ts +111 -85
- package/dist/ts4.2/e2ee/KeyProvider.d.ts +54 -54
- package/dist/ts4.2/e2ee/constants.d.ts +21 -21
- package/dist/ts4.2/e2ee/errors.d.ts +12 -12
- package/dist/ts4.2/e2ee/events.d.ts +39 -39
- package/dist/ts4.2/e2ee/index.d.ts +6 -6
- package/dist/ts4.2/e2ee/types.d.ts +231 -217
- package/dist/ts4.2/e2ee/utils.d.ts +32 -32
- package/dist/ts4.2/e2ee/worker/DataCryptor.d.ts +16 -16
- package/dist/ts4.2/e2ee/worker/ErrorRateLimiter.d.ts +21 -0
- package/dist/ts4.2/e2ee/worker/FrameCryptor.d.ts +209 -226
- package/dist/ts4.2/e2ee/worker/ParticipantKeyHandler.d.ts +81 -84
- package/dist/ts4.2/e2ee/worker/e2ee.worker.d.ts +2 -2
- package/dist/ts4.2/e2ee/worker/naluUtils.d.ts +28 -28
- package/dist/ts4.2/e2ee/worker/sifPayload.d.ts +23 -23
- package/dist/ts4.2/frameMetadata/FrameMetadataManager.d.ts +53 -53
- package/dist/ts4.2/frameMetadata/frameMetadata.d.ts +33 -33
- package/dist/ts4.2/frameMetadata/types.d.ts +62 -62
- package/dist/ts4.2/frameMetadata/utils.d.ts +9 -9
- package/dist/ts4.2/frameMetadata/worker/frameMetadata.worker.d.ts +2 -2
- package/dist/ts4.2/index.d.ts +76 -76
- package/dist/ts4.2/logger.d.ts +66 -62
- package/dist/ts4.2/options.d.ts +163 -149
- package/dist/ts4.2/room/BackOffStrategy.d.ts +27 -27
- package/dist/ts4.2/room/DefaultReconnectPolicy.d.ts +8 -8
- package/dist/ts4.2/room/DeviceManager.d.ts +12 -12
- package/dist/ts4.2/room/PCTransport.d.ts +246 -175
- package/dist/ts4.2/room/PCTransportManager.d.ts +77 -77
- package/dist/ts4.2/room/RTCEngine.d.ts +269 -261
- package/dist/ts4.2/room/ReconnectPolicy.d.ts +24 -24
- package/dist/ts4.2/room/RegionUrlProvider.d.ts +36 -36
- package/dist/ts4.2/room/Room.d.ts +354 -365
- package/dist/ts4.2/room/attribute-typings.d.ts +35 -35
- package/dist/ts4.2/room/data-channel/DataChannelManager.d.ts +62 -62
- package/dist/ts4.2/room/data-channel/FlowControlledDataChannel.d.ts +94 -95
- package/dist/ts4.2/room/data-channel/LossyDataChannel.d.ts +41 -41
- package/dist/ts4.2/room/data-channel/ReliableDataChannel.d.ts +57 -57
- package/dist/ts4.2/room/data-channel/types.d.ts +12 -12
- package/dist/ts4.2/room/data-stream/compression.d.ts +49 -49
- package/dist/ts4.2/room/data-stream/constants.d.ts +18 -18
- package/dist/ts4.2/room/data-stream/incoming/IncomingDataStreamManager.d.ts +29 -29
- package/dist/ts4.2/room/data-stream/incoming/StreamReader.d.ts +80 -80
- package/dist/ts4.2/room/data-stream/outgoing/OutgoingDataStreamManager.d.ts +73 -73
- package/dist/ts4.2/room/data-stream/outgoing/StreamWriter.d.ts +16 -16
- package/dist/ts4.2/room/data-stream/outgoing/header-utils.d.ts +18 -18
- package/dist/ts4.2/room/data-track/LocalDataTrack.d.ts +79 -80
- package/dist/ts4.2/room/data-track/RemoteDataTrack.d.ts +50 -50
- package/dist/ts4.2/room/data-track/depacketizer.d.ts +59 -59
- package/dist/ts4.2/room/data-track/frame.d.ts +22 -22
- package/dist/ts4.2/room/data-track/handle.d.ts +27 -27
- package/dist/ts4.2/room/data-track/incoming/IncomingDataTrackManager.d.ts +124 -124
- package/dist/ts4.2/room/data-track/incoming/errors.d.ts +24 -24
- package/dist/ts4.2/room/data-track/incoming/pipeline.d.ts +41 -41
- package/dist/ts4.2/room/data-track/incoming/types.d.ts +20 -20
- package/dist/ts4.2/room/data-track/outgoing/OutgoingDataTrackManager.d.ts +126 -126
- package/dist/ts4.2/room/data-track/outgoing/errors.d.ts +74 -74
- package/dist/ts4.2/room/data-track/outgoing/pipeline.d.ts +23 -23
- package/dist/ts4.2/room/data-track/outgoing/types.d.ts +48 -48
- package/dist/ts4.2/room/data-track/packet/constants.d.ts +20 -20
- package/dist/ts4.2/room/data-track/packet/errors.d.ts +40 -40
- package/dist/ts4.2/room/data-track/packet/extensions.d.ts +69 -69
- package/dist/ts4.2/room/data-track/packet/index.d.ts +98 -98
- package/dist/ts4.2/room/data-track/packet/serializable.d.ts +13 -13
- package/dist/ts4.2/room/data-track/packetizer.d.ts +43 -43
- package/dist/ts4.2/room/data-track/track-interfaces.d.ts +23 -23
- package/dist/ts4.2/room/data-track/types.d.ts +22 -22
- package/dist/ts4.2/room/data-track/utils.d.ts +60 -60
- package/dist/ts4.2/room/debounce.d.ts +11 -11
- package/dist/ts4.2/room/defaults.d.ts +9 -9
- package/dist/ts4.2/room/errors.d.ts +180 -162
- package/dist/ts4.2/room/events.d.ts +638 -637
- package/dist/ts4.2/room/participant/LocalParticipant.d.ts +287 -287
- package/dist/ts4.2/room/participant/Participant.d.ts +142 -144
- package/dist/ts4.2/room/participant/ParticipantTrackPermission.d.ts +26 -26
- package/dist/ts4.2/room/participant/RemoteParticipant.d.ts +85 -86
- package/dist/ts4.2/room/participant/publishUtils.d.ts +53 -37
- package/dist/ts4.2/room/rpc/client/RpcClientManager.d.ts +43 -43
- package/dist/ts4.2/room/rpc/client/events.d.ts +8 -8
- package/dist/ts4.2/room/rpc/index.d.ts +7 -7
- package/dist/ts4.2/room/rpc/server/RpcServerManager.d.ts +44 -44
- package/dist/ts4.2/room/rpc/server/events.d.ts +8 -8
- package/dist/ts4.2/room/rpc/utils.d.ts +131 -131
- package/dist/ts4.2/room/stats.d.ts +71 -71
- package/dist/ts4.2/room/statsSummary.d.ts +13 -13
- package/dist/ts4.2/room/timers.d.ts +12 -12
- package/dist/ts4.2/room/token-source/TokenSource.d.ts +82 -82
- package/dist/ts4.2/room/token-source/types.d.ts +70 -70
- package/dist/ts4.2/room/token-source/utils.d.ts +8 -8
- package/dist/ts4.2/room/track/FrameMetadataExtractor.d.ts +19 -19
- package/dist/ts4.2/room/track/LocalAudioTrack.d.ts +39 -42
- package/dist/ts4.2/room/track/LocalTrack.d.ts +125 -125
- package/dist/ts4.2/room/track/LocalTrackPublication.d.ts +42 -42
- package/dist/ts4.2/room/track/LocalVideoTrack.d.ts +102 -93
- package/dist/ts4.2/room/track/RemoteAudioTrack.d.ts +55 -55
- package/dist/ts4.2/room/track/RemoteTrack.d.ts +38 -38
- package/dist/ts4.2/room/track/RemoteTrackPublication.d.ts +72 -75
- package/dist/ts4.2/room/track/RemoteVideoTrack.d.ts +73 -76
- package/dist/ts4.2/room/track/Track.d.ts +156 -166
- package/dist/ts4.2/room/track/TrackPublication.d.ts +75 -81
- package/dist/ts4.2/room/track/create.d.ts +25 -25
- package/dist/ts4.2/room/track/facingMode.d.ts +41 -41
- package/dist/ts4.2/room/track/options.d.ts +403 -403
- package/dist/ts4.2/room/track/processor/types.d.ts +31 -31
- package/dist/ts4.2/room/track/record.d.ts +13 -13
- package/dist/ts4.2/room/track/types.d.ts +28 -28
- package/dist/ts4.2/room/track/utils.d.ts +60 -47
- package/dist/ts4.2/room/types.d.ts +127 -127
- package/dist/ts4.2/room/utils.d.ts +246 -180
- package/dist/ts4.2/test/MockMediaStreamTrack.d.ts +26 -26
- package/dist/ts4.2/test/compressionStreamStubs.d.ts +12 -0
- package/dist/ts4.2/test/mocks.d.ts +12 -12
- package/dist/ts4.2/test/promiseState.d.ts +12 -12
- package/dist/ts4.2/test/signalToken.d.ts +26 -26
- package/dist/ts4.2/type-polyfills/non-shared-typed-arrays.d.ts +2 -2
- package/dist/ts4.2/utils/AsyncQueue.d.ts +23 -23
- package/dist/ts4.2/utils/TypedPromise.d.ts +17 -17
- package/dist/ts4.2/utils/abort-signal-polyfill.d.ts +13 -13
- package/dist/ts4.2/utils/browserParser.d.ts +13 -13
- package/dist/ts4.2/utils/camelToSnakeCase.d.ts +8 -8
- package/dist/ts4.2/utils/cloneDeep.d.ts +2 -2
- package/dist/ts4.2/utils/dataPacketBuffer.d.ts +34 -34
- package/dist/ts4.2/utils/deferrable-map.d.ts +32 -32
- package/dist/ts4.2/utils/machineInspector.d.ts +54 -54
- package/dist/ts4.2/utils/serializer.d.ts +48 -48
- package/dist/ts4.2/utils/subscribeToEvents.d.ts +15 -15
- package/dist/ts4.2/utils/ttlmap.d.ts +20 -20
- package/dist/ts4.2/version.d.ts +15 -15
- package/package.json +5 -4
- package/src/api/SignalClient.e2e.test.ts +1 -3
- package/src/api/SignalClient.test.ts +160 -10
- package/src/api/SignalClient.ts +75 -54
- package/src/api/WebSocketStream.ts +3 -8
- package/src/api/utils.ts +10 -0
- package/src/e2ee/E2eeManager.test.ts +196 -0
- package/src/e2ee/E2eeManager.ts +114 -19
- package/src/e2ee/types.ts +19 -1
- package/src/e2ee/worker/DataCryptor.ts +2 -1
- package/src/e2ee/worker/ErrorRateLimiter.test.ts +53 -0
- package/src/e2ee/worker/ErrorRateLimiter.ts +52 -0
- package/src/e2ee/worker/FrameCryptor.ts +20 -70
- package/src/e2ee/worker/e2ee.worker.ts +34 -11
- package/src/logger.ts +22 -0
- package/src/options.ts +16 -0
- package/src/room/PCTransport.test.ts +183 -7
- package/src/room/PCTransport.ts +197 -36
- package/src/room/PCTransportManager.ts +3 -1
- package/src/room/RTCEngine.test.ts +84 -0
- package/src/room/RTCEngine.ts +52 -12
- package/src/room/Room.test.ts +32 -6
- package/src/room/Room.ts +27 -7
- package/src/room/data-stream/incoming/IncomingDataStreamManager.test.ts +16 -20
- package/src/room/data-stream/incoming/IncomingDataStreamManager.ts +5 -5
- package/src/room/data-stream/outgoing/OutgoingDataStreamManager.test.ts +60 -39
- package/src/room/data-stream/outgoing/OutgoingDataStreamManager.ts +4 -4
- package/src/room/defaults.ts +1 -0
- package/src/room/errors.test.ts +36 -0
- package/src/room/errors.ts +27 -0
- package/src/room/events.ts +2 -1
- package/src/room/participant/LocalParticipant.ts +30 -14
- package/src/room/participant/publishUtils.test.ts +133 -0
- package/src/room/participant/publishUtils.ts +54 -38
- package/src/room/rpc/client/RpcClientManager.test.ts +51 -0
- package/src/room/rpc/client/RpcClientManager.ts +32 -15
- package/src/room/track/LocalTrack.ts +18 -7
- package/src/room/track/LocalVideoTrack.ts +25 -8
- package/src/room/track/RemoteAudioTrack.ts +3 -3
- package/src/room/track/RemoteVideoTrack.test.ts +210 -0
- package/src/room/track/RemoteVideoTrack.ts +29 -3
- package/src/room/track/options.ts +1 -1
- package/src/room/track/utils.test.ts +201 -2
- package/src/room/track/utils.ts +88 -0
- package/src/room/utils.test.ts +211 -0
- package/src/room/utils.ts +129 -0
- package/src/test/compressionStreamStubs.ts +53 -0
|
@@ -1,185 +1,187 @@
|
|
|
1
|
-
import { AddTrackRequest, AudioTrackFeature, ClientInfo_Capability, ConnectionQualityUpdate, DataTrackSubscriberHandles, JoinResponse, LeaveRequest, MediaSectionsRequirement, ParticipantInfo, PublishDataTrackResponse, ReconnectReason, ReconnectResponse, RequestResponse, Room, RoomMovedResponse, SessionDescription,
|
|
2
|
-
import type { DataTrackHandle } from '../room/data-track/handle';
|
|
3
|
-
import type { DataTrackSid } from '../room/data-track/types';
|
|
4
|
-
import type { LoggerOptions } from '../room/types';
|
|
5
|
-
import { AsyncQueue } from '../utils/AsyncQueue';
|
|
6
|
-
import { WebSocketStream } from './WebSocketStream';
|
|
7
|
-
interface ConnectOpts extends SignalOptions {
|
|
8
|
-
/** internal */
|
|
9
|
-
reconnect?: boolean;
|
|
10
|
-
/** internal */
|
|
11
|
-
reconnectReason?: number;
|
|
12
|
-
/** internal */
|
|
13
|
-
sid?: string;
|
|
14
|
-
}
|
|
15
|
-
export interface SignalOptions {
|
|
16
|
-
autoSubscribe: boolean;
|
|
17
|
-
adaptiveStream?: boolean;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
private get
|
|
77
|
-
/**
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
*
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
private
|
|
89
|
-
private
|
|
90
|
-
private
|
|
91
|
-
private
|
|
92
|
-
private
|
|
93
|
-
private
|
|
94
|
-
private
|
|
95
|
-
private
|
|
96
|
-
private
|
|
97
|
-
private
|
|
98
|
-
private
|
|
99
|
-
private
|
|
100
|
-
private
|
|
101
|
-
private
|
|
102
|
-
|
|
103
|
-
private
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
*
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
private
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
*
|
|
162
|
-
* @param
|
|
163
|
-
* @
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
*
|
|
170
|
-
* @
|
|
171
|
-
* @
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
*
|
|
178
|
-
* @
|
|
179
|
-
* @
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
1
|
+
import { AddTrackRequest, AudioTrackFeature, ClientInfo_Capability, ConnectionQualityUpdate, DataTrackSubscriberHandles, JoinResponse, LeaveRequest, MediaSectionsRequirement, ParticipantInfo, PublishDataTrackResponse, ReconnectReason, ReconnectResponse, RequestResponse, Room, RoomMovedResponse, SessionDescription, SignalTarget, SimulateScenario, SpeakerInfo, StreamStateUpdate, SubscribedQualityUpdate, SubscriptionPermissionUpdate, SubscriptionResponse, SyncState, TrackPermission, TrackPublishedResponse, TrackUnpublishedResponse, UnpublishDataTrackResponse, UpdateSubscription, UpdateTrackSettings, VideoLayer } from '@livekit/protocol';
|
|
2
|
+
import type { DataTrackHandle } from '../room/data-track/handle';
|
|
3
|
+
import type { DataTrackSid } from '../room/data-track/types';
|
|
4
|
+
import type { LoggerOptions } from '../room/types';
|
|
5
|
+
import { AsyncQueue } from '../utils/AsyncQueue';
|
|
6
|
+
import { WebSocketStream } from './WebSocketStream';
|
|
7
|
+
interface ConnectOpts extends SignalOptions {
|
|
8
|
+
/** internal */
|
|
9
|
+
reconnect?: boolean;
|
|
10
|
+
/** internal */
|
|
11
|
+
reconnectReason?: number;
|
|
12
|
+
/** internal */
|
|
13
|
+
sid?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface SignalOptions {
|
|
16
|
+
autoSubscribe: boolean;
|
|
17
|
+
adaptiveStream?: boolean;
|
|
18
|
+
disableIceLite?: boolean;
|
|
19
|
+
subscriberAllowPause?: boolean;
|
|
20
|
+
clientInfoCapabilities?: ClientInfo_Capability[];
|
|
21
|
+
maxRetries: number;
|
|
22
|
+
e2eeEnabled: boolean;
|
|
23
|
+
websocketTimeout: number;
|
|
24
|
+
}
|
|
25
|
+
export declare enum SignalConnectionState {
|
|
26
|
+
CONNECTING = 0,
|
|
27
|
+
CONNECTED = 1,
|
|
28
|
+
RECONNECTING = 2,
|
|
29
|
+
DISCONNECTING = 3,
|
|
30
|
+
DISCONNECTED = 4
|
|
31
|
+
}
|
|
32
|
+
/** @internal */
|
|
33
|
+
export declare class SignalClient {
|
|
34
|
+
requestQueue: AsyncQueue;
|
|
35
|
+
queuedRequests: Array<() => Promise<void>>;
|
|
36
|
+
useJSON: boolean;
|
|
37
|
+
/** signal rtt in milliseconds */
|
|
38
|
+
rtt: number;
|
|
39
|
+
/** simulate signaling latency by delaying messages */
|
|
40
|
+
signalLatency?: number;
|
|
41
|
+
onClose?: (reason: string) => void;
|
|
42
|
+
onAnswer?: (sd: RTCSessionDescriptionInit, offerId: number, midToTrackId: {
|
|
43
|
+
[key: string]: string;
|
|
44
|
+
}) => void;
|
|
45
|
+
onOffer?: (sd: RTCSessionDescriptionInit, offerId: number, midToTrackId: {
|
|
46
|
+
[key: string]: string;
|
|
47
|
+
}) => void;
|
|
48
|
+
onTrickle?: (sd: RTCIceCandidateInit, target: SignalTarget) => void;
|
|
49
|
+
onParticipantUpdate?: (updates: ParticipantInfo[]) => void;
|
|
50
|
+
onLocalTrackPublished?: (res: TrackPublishedResponse) => void;
|
|
51
|
+
onNegotiateRequested?: () => void;
|
|
52
|
+
onSpeakersChanged?: (res: SpeakerInfo[]) => void;
|
|
53
|
+
onRemoteMuteChanged?: (trackSid: string, muted: boolean) => void;
|
|
54
|
+
onRoomUpdate?: (room: Room) => void;
|
|
55
|
+
onConnectionQuality?: (update: ConnectionQualityUpdate) => void;
|
|
56
|
+
onStreamStateUpdate?: (update: StreamStateUpdate) => void;
|
|
57
|
+
onSubscribedQualityUpdate?: (update: SubscribedQualityUpdate) => void;
|
|
58
|
+
onSubscriptionPermissionUpdate?: (update: SubscriptionPermissionUpdate) => void;
|
|
59
|
+
onSubscriptionError?: (update: SubscriptionResponse) => void;
|
|
60
|
+
onLocalTrackUnpublished?: (res: TrackUnpublishedResponse) => void;
|
|
61
|
+
onTokenRefresh?: (token: string) => void;
|
|
62
|
+
onLeave?: (leave: LeaveRequest) => void;
|
|
63
|
+
onRequestResponse?: (response: RequestResponse) => void;
|
|
64
|
+
onLocalTrackSubscribed?: (trackSid: string) => void;
|
|
65
|
+
onRoomMoved?: (res: RoomMovedResponse) => void;
|
|
66
|
+
onMediaSectionsRequirement?: (requirement: MediaSectionsRequirement) => void;
|
|
67
|
+
onPublishDataTrackResponse?: (event: PublishDataTrackResponse) => void;
|
|
68
|
+
onUnPublishDataTrackResponse?: (event: UnpublishDataTrackResponse) => void;
|
|
69
|
+
onDataTrackSubscriberHandles?: (event: DataTrackSubscriberHandles) => void;
|
|
70
|
+
onJoined?: (event: JoinResponse) => void;
|
|
71
|
+
connectOptions?: ConnectOpts;
|
|
72
|
+
ws?: WebSocketStream;
|
|
73
|
+
get currentState(): SignalConnectionState;
|
|
74
|
+
get isDisconnected(): boolean;
|
|
75
|
+
/** Runtime lifecycle state, finer grained than the public {@link currentState} projection. */
|
|
76
|
+
private get lifecycleState();
|
|
77
|
+
/** Id of the current connection attempt and of the transport it owns. */
|
|
78
|
+
private get attemptId();
|
|
79
|
+
/**
|
|
80
|
+
* Applies a lifecycle input and reports whether it moved the machine
|
|
81
|
+
*/
|
|
82
|
+
private sendLifecycleInput;
|
|
83
|
+
/**
|
|
84
|
+
* Waits out a close that is already in flight. Establishing a session while one is tearing down
|
|
85
|
+
* would race it for the transport — the teardown can close the socket the new attempt just
|
|
86
|
+
* opened.
|
|
87
|
+
*/
|
|
88
|
+
private settleInFlightClose;
|
|
89
|
+
private get isEstablishingConnection();
|
|
90
|
+
private getNextRequestId;
|
|
91
|
+
private options?;
|
|
92
|
+
private pingTimeout;
|
|
93
|
+
private pingTimeoutDuration;
|
|
94
|
+
private pingIntervalDuration;
|
|
95
|
+
private pingInterval;
|
|
96
|
+
private closingLock;
|
|
97
|
+
private machine;
|
|
98
|
+
private connectionLock;
|
|
99
|
+
private log;
|
|
100
|
+
private loggerContextCb?;
|
|
101
|
+
private _requestId;
|
|
102
|
+
private streamWriter;
|
|
103
|
+
private useV0SignalPath;
|
|
104
|
+
constructor(useJSON?: boolean, loggerOptions?: LoggerOptions);
|
|
105
|
+
private get logContext();
|
|
106
|
+
join(url: string, token: string, opts: SignalOptions, abortSignal?: AbortSignal, useV0Path?: boolean, publisherOffer?: SessionDescription): Promise<JoinResponse>;
|
|
107
|
+
reconnect(url: string, token: string, sid?: string, reason?: ReconnectReason): Promise<ReconnectResponse | undefined>;
|
|
108
|
+
private connect;
|
|
109
|
+
startReadingLoop(signalReader: ReadableStreamDefaultReader<string | ArrayBuffer>): Promise<void>;
|
|
110
|
+
/** @internal */
|
|
111
|
+
resetCallbacks: () => void;
|
|
112
|
+
close(updateState?: boolean, reason?: string): Promise<void>;
|
|
113
|
+
/**
|
|
114
|
+
* Releases the transport and everything tied to it, without touching the lifecycle state. Used
|
|
115
|
+
* both by {@link close} and by paths that replace the transport under a live lifecycle (a new
|
|
116
|
+
* attempt, or an unexpected close that leaves the client in `offline`).
|
|
117
|
+
*/
|
|
118
|
+
private teardownTransport;
|
|
119
|
+
sendOffer(offer: RTCSessionDescriptionInit, offerId: number): void;
|
|
120
|
+
sendAnswer(answer: RTCSessionDescriptionInit, offerId: number): Promise<void>;
|
|
121
|
+
sendIceCandidate(candidate: RTCIceCandidateInit, target: SignalTarget): Promise<void>;
|
|
122
|
+
sendMuteTrack(trackSid: string, muted: boolean): Promise<void>;
|
|
123
|
+
sendAddTrack(req: AddTrackRequest): Promise<void>;
|
|
124
|
+
sendUpdateLocalMetadata(metadata: string, name: string, attributes?: Record<string, string>): Promise<number>;
|
|
125
|
+
sendUpdateTrackSettings(settings: UpdateTrackSettings): void;
|
|
126
|
+
sendUpdateSubscription(sub: UpdateSubscription): Promise<void>;
|
|
127
|
+
sendSyncState(sync: SyncState): Promise<void>;
|
|
128
|
+
sendUpdateVideoLayers(trackSid: string, layers: VideoLayer[]): Promise<void>;
|
|
129
|
+
sendUpdateSubscriptionPermissions(allParticipants: boolean, trackPermissions: TrackPermission[]): Promise<void>;
|
|
130
|
+
sendSimulateScenario(scenario: SimulateScenario): Promise<void>;
|
|
131
|
+
sendPing(): Promise<[
|
|
132
|
+
void,
|
|
133
|
+
void
|
|
134
|
+
]>;
|
|
135
|
+
sendUpdateLocalAudioTrack(trackSid: string, features: AudioTrackFeature[]): Promise<void>;
|
|
136
|
+
sendLeave(): Promise<void>;
|
|
137
|
+
sendPublishDataTrackRequest(handle: DataTrackHandle, name: string, usesE2ee: boolean): Promise<void>;
|
|
138
|
+
sendUnPublishDataTrackRequest(handle: DataTrackHandle): Promise<void>;
|
|
139
|
+
sendUpdateDataSubscription(sid: DataTrackSid, subscribe: boolean): Promise<void>;
|
|
140
|
+
private sendRequest;
|
|
141
|
+
private handleSignalResponse;
|
|
142
|
+
setReconnected(): void;
|
|
143
|
+
/**
|
|
144
|
+
* Handles a transport we lost without asking to. The client goes to `offline` rather than
|
|
145
|
+
* `closed`: whether this session gets resumed, restarted or given up on is the engine's call.
|
|
146
|
+
*/
|
|
147
|
+
private handleOnClose;
|
|
148
|
+
private handleWSError;
|
|
149
|
+
/**
|
|
150
|
+
* Resets the ping timeout and starts a new timeout.
|
|
151
|
+
* Call this after receiving a pong message
|
|
152
|
+
*/
|
|
153
|
+
private resetPingTimeout;
|
|
154
|
+
/**
|
|
155
|
+
* Clears ping timeout (does not start a new timeout)
|
|
156
|
+
*/
|
|
157
|
+
private clearPingTimeout;
|
|
158
|
+
private startPingInterval;
|
|
159
|
+
private clearPingInterval;
|
|
160
|
+
/**
|
|
161
|
+
* Handles the successful connection to the signal server
|
|
162
|
+
* @param connection The WebSocket connection
|
|
163
|
+
* @param timeoutHandle The timeout handle to clear
|
|
164
|
+
* @param firstMessage Optional first message to process
|
|
165
|
+
* @internal
|
|
166
|
+
*/
|
|
167
|
+
private handleSignalConnected;
|
|
168
|
+
/**
|
|
169
|
+
* Validates the first message received from the signal server
|
|
170
|
+
* @param firstSignalResponse The first signal response received
|
|
171
|
+
* @param isReconnect Whether this is a reconnection attempt
|
|
172
|
+
* @returns Validation result with response or error
|
|
173
|
+
* @internal
|
|
174
|
+
*/
|
|
175
|
+
private validateFirstMessage;
|
|
176
|
+
/**
|
|
177
|
+
* Handles WebSocket connection errors by validating with the server
|
|
178
|
+
* @param reason The error that occurred
|
|
179
|
+
* @param validateUrl The URL to validate the connection with
|
|
180
|
+
* @returns A ConnectionError with appropriate reason and status
|
|
181
|
+
* @internal
|
|
182
|
+
*/
|
|
183
|
+
private handleConnectionError;
|
|
184
|
+
}
|
|
185
|
+
export declare function toProtoSessionDescription(rsd: RTCSessionDescription | RTCSessionDescriptionInit, id?: number): SessionDescription;
|
|
186
|
+
export {};
|
|
187
|
+
//# sourceMappingURL=SignalClient.d.ts.map
|
|
@@ -1,85 +1,85 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Runtime lifecycle states of the signal connection.
|
|
3
|
-
*
|
|
4
|
-
* `offline` is the resting state after the transport was lost without an explicit close: no
|
|
5
|
-
* attempt is in flight, but a resume is still legal. It is what makes retrying a failed resume
|
|
6
|
-
* expressible — `closed` is only reached by an explicit close or by a terminal attempt failure.
|
|
7
|
-
*/
|
|
8
|
-
export type SignalLifecycleState = 'new' | 'connecting' | 'connected' | 'offline' | 'reconnecting' | 'disconnecting' | 'closed';
|
|
9
|
-
export interface SignalMachineContext {
|
|
10
|
-
/** Monotonic id of the current (re)connection attempt and of the transport it owns */
|
|
11
|
-
attemptId: number;
|
|
12
|
-
/** Error or reason that ended the last attempt, kept for diagnostics. */
|
|
13
|
-
lastError?: unknown;
|
|
14
|
-
/** Reason passed to the last close request. */
|
|
15
|
-
closeReason?: string;
|
|
16
|
-
}
|
|
17
|
-
export type SignalMachineInput =
|
|
18
|
-
/**
|
|
19
|
-
* Start an initial session, or restart from scratch (full reconnect).
|
|
20
|
-
*
|
|
21
|
-
* Establishing is legal exactly where no transport and no attempt are in play: `new`, `offline`
|
|
22
|
-
* and `closed`. `closed` is included because it means "no transport", not "session over" — a
|
|
23
|
-
* deliberate close and an unexpected loss leave the session equally resumable, and the engine
|
|
24
|
-
* recovers from both. Establishing over a live session, or over an attempt already in flight, is
|
|
25
|
-
* a caller error; `disconnecting` is waited out rather than refused.
|
|
26
|
-
*/
|
|
27
|
-
{
|
|
28
|
-
type: 'connect';
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Resume the existing session: legal wherever establishing is, minus `new` (nothing to resume
|
|
32
|
-
* yet), plus `connected` — the peer connection can be severed while signalling stays up.
|
|
33
|
-
*/
|
|
34
|
-
| {
|
|
35
|
-
type: 'reconnect';
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* An attempt established its transport. Carries the attempt it belongs to: an attempt that a
|
|
39
|
-
* newer one has already superseded must not declare the session live.
|
|
40
|
-
*/
|
|
41
|
-
| {
|
|
42
|
-
type: 'connectComplete';
|
|
43
|
-
attemptId: number;
|
|
44
|
-
} | {
|
|
45
|
-
type: 'connectFailed';
|
|
46
|
-
error?: unknown;
|
|
47
|
-
} | {
|
|
48
|
-
type: 'reconnectComplete';
|
|
49
|
-
attemptId: number;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* A resume attempt ended. `recoverable` distinguishes "another resume may follow" (→ `offline`)
|
|
53
|
-
* from a terminal outcome such as a server leave or an expired token (→ `closed`).
|
|
54
|
-
*/
|
|
55
|
-
| {
|
|
56
|
-
type: 'reconnectFailed';
|
|
57
|
-
error?: unknown;
|
|
58
|
-
recoverable: boolean;
|
|
59
|
-
}
|
|
60
|
-
/** The transport identified by `attemptId` was lost (unexpected ws close, ping timeout). */
|
|
61
|
-
| {
|
|
62
|
-
type: 'transportFailed';
|
|
63
|
-
attemptId: number;
|
|
64
|
-
reason: string;
|
|
65
|
-
} | {
|
|
66
|
-
type: 'close';
|
|
67
|
-
reason: string;
|
|
68
|
-
} | {
|
|
69
|
-
type: 'closeComplete';
|
|
70
|
-
};
|
|
71
|
-
/**
|
|
72
|
-
* Lifecycle model of the signal connection.
|
|
73
|
-
*
|
|
74
|
-
* The machine deliberately does not own connection attempts: `SignalClient` performs the
|
|
75
|
-
* asynchronous work and reports the outcome. It also does not decide *whether* to reconnect —
|
|
76
|
-
* that policy (backoff, resume vs. full reconnect, region failover, giving up) belongs to
|
|
77
|
-
* `RTCEngine`, so transport loss lands in `offline` rather than starting a reconnect on its own.
|
|
78
|
-
*
|
|
79
|
-
* Each client gets its own instance: the context is mutable and per-connection.
|
|
80
|
-
*/
|
|
81
|
-
export declare function createSignalMachine(initialState?: SignalLifecycleState): import("machina").Fsm<SignalMachineContext, "new" | "connecting" | "connected" | "offline" | "reconnecting" | "disconnecting" | "closed", "connect" | "reconnect" | "connectComplete" | "connectFailed" | "reconnectComplete" | "reconnectFailed" | "transportFailed" | "close" | "closeComplete", never>;
|
|
82
|
-
export type SignalMachine = ReturnType<typeof createSignalMachine>;
|
|
83
|
-
/** All lifecycle states, derived from the machine itself so the two cannot drift. */
|
|
84
|
-
export declare const signalLifecycleStates: Array<SignalLifecycleState>;
|
|
85
|
-
//# sourceMappingURL=SignalClientStateMachine.d.ts.map
|
|
1
|
+
/**
|
|
2
|
+
* Runtime lifecycle states of the signal connection.
|
|
3
|
+
*
|
|
4
|
+
* `offline` is the resting state after the transport was lost without an explicit close: no
|
|
5
|
+
* attempt is in flight, but a resume is still legal. It is what makes retrying a failed resume
|
|
6
|
+
* expressible — `closed` is only reached by an explicit close or by a terminal attempt failure.
|
|
7
|
+
*/
|
|
8
|
+
export type SignalLifecycleState = 'new' | 'connecting' | 'connected' | 'offline' | 'reconnecting' | 'disconnecting' | 'closed';
|
|
9
|
+
export interface SignalMachineContext {
|
|
10
|
+
/** Monotonic id of the current (re)connection attempt and of the transport it owns */
|
|
11
|
+
attemptId: number;
|
|
12
|
+
/** Error or reason that ended the last attempt, kept for diagnostics. */
|
|
13
|
+
lastError?: unknown;
|
|
14
|
+
/** Reason passed to the last close request. */
|
|
15
|
+
closeReason?: string;
|
|
16
|
+
}
|
|
17
|
+
export type SignalMachineInput =
|
|
18
|
+
/**
|
|
19
|
+
* Start an initial session, or restart from scratch (full reconnect).
|
|
20
|
+
*
|
|
21
|
+
* Establishing is legal exactly where no transport and no attempt are in play: `new`, `offline`
|
|
22
|
+
* and `closed`. `closed` is included because it means "no transport", not "session over" — a
|
|
23
|
+
* deliberate close and an unexpected loss leave the session equally resumable, and the engine
|
|
24
|
+
* recovers from both. Establishing over a live session, or over an attempt already in flight, is
|
|
25
|
+
* a caller error; `disconnecting` is waited out rather than refused.
|
|
26
|
+
*/
|
|
27
|
+
{
|
|
28
|
+
type: 'connect';
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Resume the existing session: legal wherever establishing is, minus `new` (nothing to resume
|
|
32
|
+
* yet), plus `connected` — the peer connection can be severed while signalling stays up.
|
|
33
|
+
*/
|
|
34
|
+
| {
|
|
35
|
+
type: 'reconnect';
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* An attempt established its transport. Carries the attempt it belongs to: an attempt that a
|
|
39
|
+
* newer one has already superseded must not declare the session live.
|
|
40
|
+
*/
|
|
41
|
+
| {
|
|
42
|
+
type: 'connectComplete';
|
|
43
|
+
attemptId: number;
|
|
44
|
+
} | {
|
|
45
|
+
type: 'connectFailed';
|
|
46
|
+
error?: unknown;
|
|
47
|
+
} | {
|
|
48
|
+
type: 'reconnectComplete';
|
|
49
|
+
attemptId: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* A resume attempt ended. `recoverable` distinguishes "another resume may follow" (→ `offline`)
|
|
53
|
+
* from a terminal outcome such as a server leave or an expired token (→ `closed`).
|
|
54
|
+
*/
|
|
55
|
+
| {
|
|
56
|
+
type: 'reconnectFailed';
|
|
57
|
+
error?: unknown;
|
|
58
|
+
recoverable: boolean;
|
|
59
|
+
}
|
|
60
|
+
/** The transport identified by `attemptId` was lost (unexpected ws close, ping timeout). */
|
|
61
|
+
| {
|
|
62
|
+
type: 'transportFailed';
|
|
63
|
+
attemptId: number;
|
|
64
|
+
reason: string;
|
|
65
|
+
} | {
|
|
66
|
+
type: 'close';
|
|
67
|
+
reason: string;
|
|
68
|
+
} | {
|
|
69
|
+
type: 'closeComplete';
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Lifecycle model of the signal connection.
|
|
73
|
+
*
|
|
74
|
+
* The machine deliberately does not own connection attempts: `SignalClient` performs the
|
|
75
|
+
* asynchronous work and reports the outcome. It also does not decide *whether* to reconnect —
|
|
76
|
+
* that policy (backoff, resume vs. full reconnect, region failover, giving up) belongs to
|
|
77
|
+
* `RTCEngine`, so transport loss lands in `offline` rather than starting a reconnect on its own.
|
|
78
|
+
*
|
|
79
|
+
* Each client gets its own instance: the context is mutable and per-connection.
|
|
80
|
+
*/
|
|
81
|
+
export declare function createSignalMachine(initialState?: SignalLifecycleState): import("machina").Fsm<SignalMachineContext, "new" | "connecting" | "connected" | "offline" | "reconnecting" | "disconnecting" | "closed", "connect" | "reconnect" | "connectComplete" | "connectFailed" | "reconnectComplete" | "reconnectFailed" | "transportFailed" | "close" | "closeComplete", never>;
|
|
82
|
+
export type SignalMachine = ReturnType<typeof createSignalMachine>;
|
|
83
|
+
/** All lifecycle states, derived from the machine itself so the two cannot drift. */
|
|
84
|
+
export declare const signalLifecycleStates: Array<SignalLifecycleState>;
|
|
85
|
+
//# sourceMappingURL=SignalClientStateMachine.d.ts.map
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import { ConnectionError } from '../room/errors';
|
|
2
|
-
import TypedPromise from '../utils/TypedPromise';
|
|
3
|
-
export interface WebSocketConnection<T extends ArrayBuffer | string = ArrayBuffer | string> {
|
|
4
|
-
readable: ReadableStream<T>;
|
|
5
|
-
writable: WritableStream<T>;
|
|
6
|
-
protocol: string;
|
|
7
|
-
extensions: string;
|
|
8
|
-
}
|
|
9
|
-
export interface WebSocketCloseInfo {
|
|
10
|
-
closeCode?: number;
|
|
11
|
-
reason?: string;
|
|
12
|
-
}
|
|
13
|
-
export interface WebSocketStreamOptions {
|
|
14
|
-
protocols?: string[];
|
|
15
|
-
signal?: AbortSignal;
|
|
16
|
-
}
|
|
17
|
-
type WebsocketError = ReturnType<typeof ConnectionError.websocket>;
|
|
18
|
-
/**
|
|
19
|
-
* [WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) with [Streams API](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API)
|
|
20
|
-
*
|
|
21
|
-
* @see https://web.dev/websocketstream/
|
|
22
|
-
*/
|
|
23
|
-
export declare class WebSocketStream<T extends ArrayBuffer | string = ArrayBuffer | string> {
|
|
24
|
-
readonly url: string;
|
|
25
|
-
readonly opened: TypedPromise<WebSocketConnection<T>, WebsocketError>;
|
|
26
|
-
readonly closed: TypedPromise<WebSocketCloseInfo, WebsocketError>;
|
|
27
|
-
readonly close: (closeInfo?: WebSocketCloseInfo) => void;
|
|
28
|
-
get readyState(): number;
|
|
29
|
-
private ws;
|
|
30
|
-
constructor(url: string, options?: WebSocketStreamOptions);
|
|
31
|
-
}
|
|
32
|
-
export {};
|
|
33
|
-
//# sourceMappingURL=WebSocketStream.d.ts.map
|
|
1
|
+
import { ConnectionError } from '../room/errors';
|
|
2
|
+
import TypedPromise from '../utils/TypedPromise';
|
|
3
|
+
export interface WebSocketConnection<T extends ArrayBuffer | string = ArrayBuffer | string> {
|
|
4
|
+
readable: ReadableStream<T>;
|
|
5
|
+
writable: WritableStream<T>;
|
|
6
|
+
protocol: string;
|
|
7
|
+
extensions: string;
|
|
8
|
+
}
|
|
9
|
+
export interface WebSocketCloseInfo {
|
|
10
|
+
closeCode?: number;
|
|
11
|
+
reason?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface WebSocketStreamOptions {
|
|
14
|
+
protocols?: string[];
|
|
15
|
+
signal?: AbortSignal;
|
|
16
|
+
}
|
|
17
|
+
type WebsocketError = ReturnType<typeof ConnectionError.websocket>;
|
|
18
|
+
/**
|
|
19
|
+
* [WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) with [Streams API](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API)
|
|
20
|
+
*
|
|
21
|
+
* @see https://web.dev/websocketstream/
|
|
22
|
+
*/
|
|
23
|
+
export declare class WebSocketStream<T extends ArrayBuffer | string = ArrayBuffer | string> {
|
|
24
|
+
readonly url: string;
|
|
25
|
+
readonly opened: TypedPromise<WebSocketConnection<T>, WebsocketError>;
|
|
26
|
+
readonly closed: TypedPromise<WebSocketCloseInfo, WebsocketError>;
|
|
27
|
+
readonly close: (closeInfo?: WebSocketCloseInfo) => void;
|
|
28
|
+
get readyState(): number;
|
|
29
|
+
private ws;
|
|
30
|
+
constructor(url: string, options?: WebSocketStreamOptions);
|
|
31
|
+
}
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=WebSocketStream.d.ts.map
|