@bytepulse/pulsewave-shared 0.2.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.
- package/README.md +415 -0
- package/dist/__tests__/types.test.d.ts +2 -0
- package/dist/__tests__/types.test.d.ts.map +1 -0
- package/dist/__tests__/types.test.js +65 -0
- package/dist/__tests__/types.test.js.map +1 -0
- package/dist/constants/errors.d.ts +4 -0
- package/dist/constants/errors.d.ts.map +1 -0
- package/dist/constants/errors.js +23 -0
- package/dist/constants/errors.js.map +1 -0
- package/dist/constants/events.d.ts +35 -0
- package/dist/constants/events.d.ts.map +1 -0
- package/dist/constants/events.js +35 -0
- package/dist/constants/events.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/types/room.types.d.ts +89 -0
- package/dist/types/room.types.d.ts.map +1 -0
- package/dist/types/room.types.js +44 -0
- package/dist/types/room.types.js.map +1 -0
- package/dist/types/signal.types.d.ts +261 -0
- package/dist/types/signal.types.d.ts.map +1 -0
- package/dist/types/signal.types.js +2 -0
- package/dist/types/signal.types.js.map +1 -0
- package/dist/types/token.types.d.ts +27 -0
- package/dist/types/token.types.d.ts.map +1 -0
- package/dist/types/token.types.js +2 -0
- package/dist/types/token.types.js.map +1 -0
- package/package.json +58 -0
package/README.md
ADDED
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
# @bytepulse/pulsewave-shared
|
|
2
|
+
|
|
3
|
+
Shared types, constants, and utilities for PulseWave client and server packages.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @bytepulse/pulsewave-shared
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
This package contains:
|
|
14
|
+
|
|
15
|
+
- **Types**: TypeScript interfaces and types used across client and server
|
|
16
|
+
- **Constants**: Shared constants for events, errors, and configuration
|
|
17
|
+
- **Utilities**: Common utility functions
|
|
18
|
+
|
|
19
|
+
## Types
|
|
20
|
+
|
|
21
|
+
### Room Types
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
// Room information
|
|
25
|
+
interface Room {
|
|
26
|
+
sid: string;
|
|
27
|
+
name: string;
|
|
28
|
+
numParticipants: number;
|
|
29
|
+
maxParticipants: number;
|
|
30
|
+
creationTime: number;
|
|
31
|
+
metadata: Record<string, unknown>;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Participant information
|
|
35
|
+
interface Participant {
|
|
36
|
+
identity: string;
|
|
37
|
+
name: string;
|
|
38
|
+
sid: string;
|
|
39
|
+
state: 'joined' | 'connected' | 'disconnected';
|
|
40
|
+
tracks: TrackPublication[];
|
|
41
|
+
metadata: Record<string, unknown>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Local participant extends Participant
|
|
45
|
+
interface LocalParticipant extends Participant {
|
|
46
|
+
isLocal: true;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Remote participant extends Participant
|
|
50
|
+
interface RemoteParticipant extends Participant {
|
|
51
|
+
isLocal: false;
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Track Types
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
// Track kind
|
|
59
|
+
type TrackKind = 'video' | 'audio' | 'data';
|
|
60
|
+
|
|
61
|
+
// Track source
|
|
62
|
+
type TrackSource = 'camera' | 'microphone' | 'screen' | 'screen_audio' | 'unknown';
|
|
63
|
+
|
|
64
|
+
// Track publication
|
|
65
|
+
interface TrackPublication {
|
|
66
|
+
sid: string;
|
|
67
|
+
kind: TrackKind;
|
|
68
|
+
source: TrackSource;
|
|
69
|
+
mimeType: string;
|
|
70
|
+
simulcast: boolean;
|
|
71
|
+
muted: boolean;
|
|
72
|
+
width?: number;
|
|
73
|
+
height?: number;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Track
|
|
77
|
+
interface Track {
|
|
78
|
+
sid: string;
|
|
79
|
+
kind: TrackKind;
|
|
80
|
+
source: TrackSource;
|
|
81
|
+
muted: boolean;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Local track
|
|
85
|
+
interface LocalTrack extends Track {
|
|
86
|
+
mediaStreamTrack: MediaStreamTrack;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Remote track
|
|
90
|
+
interface RemoteTrack extends Track {
|
|
91
|
+
stream: MediaStream;
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Signal Types
|
|
96
|
+
|
|
97
|
+
```typescript
|
|
98
|
+
// Signaling message types
|
|
99
|
+
type SignalingMessageType =
|
|
100
|
+
| 'join'
|
|
101
|
+
| 'leave'
|
|
102
|
+
| 'joined'
|
|
103
|
+
| 'participant-joined'
|
|
104
|
+
| 'participant-left'
|
|
105
|
+
| 'track-published'
|
|
106
|
+
| 'track-unpublished'
|
|
107
|
+
| 'track-subscribed'
|
|
108
|
+
| 'track-unsubscribed'
|
|
109
|
+
| 'track-muted'
|
|
110
|
+
| 'track-unmuted'
|
|
111
|
+
| 'create-transport'
|
|
112
|
+
| 'connect-transport'
|
|
113
|
+
| 'publish'
|
|
114
|
+
| 'unpublish'
|
|
115
|
+
| 'subscribe'
|
|
116
|
+
| 'unsubscribe'
|
|
117
|
+
| 'resume-consumer'
|
|
118
|
+
| 'publish-data'
|
|
119
|
+
| 'data'
|
|
120
|
+
| 'error';
|
|
121
|
+
|
|
122
|
+
// Base signaling message
|
|
123
|
+
interface SignalingMessage {
|
|
124
|
+
type: SignalingMessageType;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Join message
|
|
128
|
+
interface JoinMessage extends SignalingMessage {
|
|
129
|
+
type: 'join';
|
|
130
|
+
room: string;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Leave message
|
|
134
|
+
interface LeaveMessage extends SignalingMessage {
|
|
135
|
+
type: 'leave';
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Joined message
|
|
139
|
+
interface JoinedMessage extends SignalingMessage {
|
|
140
|
+
type: 'joined';
|
|
141
|
+
room: Room;
|
|
142
|
+
participant: Participant;
|
|
143
|
+
otherParticipants: Participant[];
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Participant joined message
|
|
147
|
+
interface ParticipantJoinedMessage extends SignalingMessage {
|
|
148
|
+
type: 'participant-joined';
|
|
149
|
+
participant: Participant;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// Participant left message
|
|
153
|
+
interface ParticipantLeftMessage extends SignalingMessage {
|
|
154
|
+
type: 'participant-left';
|
|
155
|
+
participant: Participant;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Track published message
|
|
159
|
+
interface TrackPublishedMessage extends SignalingMessage {
|
|
160
|
+
type: 'track-published';
|
|
161
|
+
track: TrackPublication;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Track unpublished message
|
|
165
|
+
interface TrackUnpublishedMessage extends SignalingMessage {
|
|
166
|
+
type: 'track-unpublished';
|
|
167
|
+
producerId: string;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Track subscribed message
|
|
171
|
+
interface TrackSubscribedMessage extends SignalingMessage {
|
|
172
|
+
type: 'track-subscribed';
|
|
173
|
+
trackSid: string;
|
|
174
|
+
consumerId: string;
|
|
175
|
+
producerId: string;
|
|
176
|
+
rtpParameters: RtpParameters;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Track unsubscribed message
|
|
180
|
+
interface TrackUnsubscribedMessage extends SignalingMessage {
|
|
181
|
+
type: 'track-unsubscribed';
|
|
182
|
+
consumerId: string;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Track muted message
|
|
186
|
+
interface TrackMutedMessage extends SignalingMessage {
|
|
187
|
+
type: 'track-muted';
|
|
188
|
+
producerId: string;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// Track unmuted message
|
|
192
|
+
interface TrackUnmutedMessage extends SignalingMessage {
|
|
193
|
+
type: 'track-unmuted';
|
|
194
|
+
producerId: string;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// Create transport message
|
|
198
|
+
interface CreateTransportMessage extends SignalingMessage {
|
|
199
|
+
type: 'create-transport';
|
|
200
|
+
direction: 'send' | 'recv';
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// Connect transport message
|
|
204
|
+
interface ConnectTransportMessage extends SignalingMessage {
|
|
205
|
+
type: 'connect-transport';
|
|
206
|
+
transportId: string;
|
|
207
|
+
dtlsParameters: DtlsParameters;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Publish message
|
|
211
|
+
interface PublishMessage extends SignalingMessage {
|
|
212
|
+
type: 'publish';
|
|
213
|
+
kind: TrackKind;
|
|
214
|
+
source: TrackSource;
|
|
215
|
+
rtpParameters: RtpParameters;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// Unpublish message
|
|
219
|
+
interface UnpublishMessage extends SignalingMessage {
|
|
220
|
+
type: 'unpublish';
|
|
221
|
+
producerId: string;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// Subscribe message
|
|
225
|
+
interface SubscribeMessage extends SignalingMessage {
|
|
226
|
+
type: 'subscribe';
|
|
227
|
+
producerId: string;
|
|
228
|
+
rtpCapabilities: RtpCapabilities;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Unsubscribe message
|
|
232
|
+
interface UnsubscribeMessage extends SignalingMessage {
|
|
233
|
+
type: 'unsubscribe';
|
|
234
|
+
consumerId: string;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// Resume consumer message
|
|
238
|
+
interface ResumeConsumerMessage extends SignalingMessage {
|
|
239
|
+
type: 'resume-consumer';
|
|
240
|
+
consumerId: string;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// Publish data message
|
|
244
|
+
interface PublishDataMessage extends SignalingMessage {
|
|
245
|
+
type: 'publish-data';
|
|
246
|
+
kind: 'reliable' | 'lossy';
|
|
247
|
+
data: unknown;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// Data message
|
|
251
|
+
interface DataMessage extends SignalingMessage {
|
|
252
|
+
type: 'data';
|
|
253
|
+
participantIdentity: string;
|
|
254
|
+
kind: 'reliable' | 'lossy';
|
|
255
|
+
data: unknown;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// Error message
|
|
259
|
+
interface ErrorMessage extends SignalingMessage {
|
|
260
|
+
type: 'error';
|
|
261
|
+
code: number;
|
|
262
|
+
message: string;
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### Token Types
|
|
267
|
+
|
|
268
|
+
```typescript
|
|
269
|
+
// JWT grant
|
|
270
|
+
interface VideoGrant {
|
|
271
|
+
room: string;
|
|
272
|
+
roomJoin: boolean;
|
|
273
|
+
canPublish: boolean;
|
|
274
|
+
canSubscribe: boolean;
|
|
275
|
+
canPublishData: boolean;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// JWT payload
|
|
279
|
+
interface TokenPayload {
|
|
280
|
+
identity: string;
|
|
281
|
+
name: string;
|
|
282
|
+
metadata: Record<string, unknown>;
|
|
283
|
+
video: VideoGrant;
|
|
284
|
+
nbf: number;
|
|
285
|
+
exp: number;
|
|
286
|
+
iss: string;
|
|
287
|
+
sub: string;
|
|
288
|
+
jti: string;
|
|
289
|
+
iat: number;
|
|
290
|
+
}
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
## Constants
|
|
294
|
+
|
|
295
|
+
### Events
|
|
296
|
+
|
|
297
|
+
```typescript
|
|
298
|
+
// Connection events
|
|
299
|
+
const CONNECTION_EVENTS = {
|
|
300
|
+
CONNECTING: 'connecting',
|
|
301
|
+
CONNECTED: 'connected',
|
|
302
|
+
DISCONNECTED: 'disconnected',
|
|
303
|
+
RECONNECTING: 'reconnecting',
|
|
304
|
+
} as const;
|
|
305
|
+
|
|
306
|
+
// Participant events
|
|
307
|
+
const PARTICIPANT_EVENTS = {
|
|
308
|
+
JOINED: 'participant_joined',
|
|
309
|
+
LEFT: 'participant_left',
|
|
310
|
+
TRACK_PUBLISHED: 'track_published',
|
|
311
|
+
TRACK_UNPUBLISHED: 'track_unpublished',
|
|
312
|
+
TRACK_SUBSCRIBED: 'track_subscribed',
|
|
313
|
+
TRACK_UNSUBSCRIBED: 'track_unsubscribed',
|
|
314
|
+
} as const;
|
|
315
|
+
|
|
316
|
+
// Track events
|
|
317
|
+
const TRACK_EVENTS = {
|
|
318
|
+
MUTED: 'track_muted',
|
|
319
|
+
UNMUTED: 'track_unmuted',
|
|
320
|
+
STOPPED: 'track_stopped',
|
|
321
|
+
} as const;
|
|
322
|
+
|
|
323
|
+
// Data events
|
|
324
|
+
const DATA_EVENTS = {
|
|
325
|
+
MESSAGE: 'data_message',
|
|
326
|
+
} as const;
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### Errors
|
|
330
|
+
|
|
331
|
+
```typescript
|
|
332
|
+
// Error codes
|
|
333
|
+
const ERROR_CODES = {
|
|
334
|
+
// General errors (100-199)
|
|
335
|
+
UNKNOWN_ERROR: 100,
|
|
336
|
+
INVALID_REQUEST: 101,
|
|
337
|
+
UNAUTHORIZED: 102,
|
|
338
|
+
FORBIDDEN: 103,
|
|
339
|
+
NOT_FOUND: 104,
|
|
340
|
+
|
|
341
|
+
// Room errors (200-299)
|
|
342
|
+
ROOM_NOT_FOUND: 200,
|
|
343
|
+
ROOM_FULL: 201,
|
|
344
|
+
ROOM_CLOSED: 202,
|
|
345
|
+
|
|
346
|
+
// Participant errors (300-399)
|
|
347
|
+
PARTICIPANT_NOT_FOUND: 300,
|
|
348
|
+
PARTICIPANT_ALREADY_JOINED: 301,
|
|
349
|
+
|
|
350
|
+
// Track errors (400-499)
|
|
351
|
+
TRACK_NOT_FOUND: 400,
|
|
352
|
+
TRACK_ALREADY_PUBLISHED: 401,
|
|
353
|
+
TRACK_NOT_PUBLISHED: 402,
|
|
354
|
+
TRACK_ALREADY_SUBSCRIBED: 403,
|
|
355
|
+
TRACK_NOT_SUBSCRIBED: 404,
|
|
356
|
+
|
|
357
|
+
// Transport errors (500-599)
|
|
358
|
+
TRANSPORT_NOT_FOUND: 500,
|
|
359
|
+
TRANSPORT_ALREADY_CONNECTED: 501,
|
|
360
|
+
TRANSPORT_NOT_CONNECTED: 502,
|
|
361
|
+
} as const;
|
|
362
|
+
|
|
363
|
+
// Error messages
|
|
364
|
+
const ERROR_MESSAGES: Record<number, string> = {
|
|
365
|
+
[ERROR_CODES.UNKNOWN_ERROR]: 'Unknown error',
|
|
366
|
+
[ERROR_CODES.INVALID_REQUEST]: 'Invalid request',
|
|
367
|
+
[ERROR_CODES.UNAUTHORIZED]: 'Unauthorized',
|
|
368
|
+
[ERROR_CODES.FORBIDDEN]: 'Forbidden',
|
|
369
|
+
[ERROR_CODES.NOT_FOUND]: 'Not found',
|
|
370
|
+
[ERROR_CODES.ROOM_NOT_FOUND]: 'Room not found',
|
|
371
|
+
[ERROR_CODES.ROOM_FULL]: 'Room is full',
|
|
372
|
+
[ERROR_CODES.ROOM_CLOSED]: 'Room is closed',
|
|
373
|
+
[ERROR_CODES.PARTICIPANT_NOT_FOUND]: 'Participant not found',
|
|
374
|
+
[ERROR_CODES.PARTICIPANT_ALREADY_JOINED]: 'Participant already joined',
|
|
375
|
+
[ERROR_CODES.TRACK_NOT_FOUND]: 'Track not found',
|
|
376
|
+
[ERROR_CODES.TRACK_ALREADY_PUBLISHED]: 'Track already published',
|
|
377
|
+
[ERROR_CODES.TRACK_NOT_PUBLISHED]: 'Track not published',
|
|
378
|
+
[ERROR_CODES.TRACK_ALREADY_SUBSCRIBED]: 'Track already subscribed',
|
|
379
|
+
[ERROR_CODES.TRACK_NOT_SUBSCRIBED]: 'Track not subscribed',
|
|
380
|
+
[ERROR_CODES.TRANSPORT_NOT_FOUND]: 'Transport not found',
|
|
381
|
+
[ERROR_CODES.TRANSPORT_ALREADY_CONNECTED]: 'Transport already connected',
|
|
382
|
+
[ERROR_CODES.TRANSPORT_NOT_CONNECTED]: 'Transport not connected',
|
|
383
|
+
};
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
## Usage
|
|
387
|
+
|
|
388
|
+
```typescript
|
|
389
|
+
import {
|
|
390
|
+
Room,
|
|
391
|
+
Participant,
|
|
392
|
+
TrackPublication,
|
|
393
|
+
SignalingMessage,
|
|
394
|
+
ERROR_CODES,
|
|
395
|
+
ERROR_MESSAGES,
|
|
396
|
+
} from '@bytepulse/pulsewave-shared';
|
|
397
|
+
|
|
398
|
+
// Use types
|
|
399
|
+
const room: Room = {
|
|
400
|
+
sid: 'RM_123',
|
|
401
|
+
name: 'my-room',
|
|
402
|
+
numParticipants: 3,
|
|
403
|
+
maxParticipants: 10,
|
|
404
|
+
creationTime: Date.now(),
|
|
405
|
+
metadata: {},
|
|
406
|
+
};
|
|
407
|
+
|
|
408
|
+
// Use constants
|
|
409
|
+
const errorMessage = ERROR_MESSAGES[ERROR_CODES.ROOM_NOT_FOUND];
|
|
410
|
+
// "Room not found"
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
## License
|
|
414
|
+
|
|
415
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/types.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { ConnectionState, TrackKind, TrackSource } from '@bytepulse/pulsewave-shared';
|
|
2
|
+
describe('Shared Types', () => {
|
|
3
|
+
describe('RoomInfo', () => {
|
|
4
|
+
it('should create a valid RoomInfo object', () => {
|
|
5
|
+
const roomInfo = {
|
|
6
|
+
sid: 'RM_123',
|
|
7
|
+
name: 'test-room',
|
|
8
|
+
numParticipants: 0,
|
|
9
|
+
creationTime: Date.now(),
|
|
10
|
+
};
|
|
11
|
+
expect(roomInfo.sid).toBe('RM_123');
|
|
12
|
+
expect(roomInfo.name).toBe('test-room');
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
describe('ParticipantInfo', () => {
|
|
16
|
+
it('should create a valid ParticipantInfo object', () => {
|
|
17
|
+
const participantInfo = {
|
|
18
|
+
sid: 'PA_123',
|
|
19
|
+
identity: 'user-1',
|
|
20
|
+
name: 'Test User',
|
|
21
|
+
state: ConnectionState.Connected,
|
|
22
|
+
tracks: [],
|
|
23
|
+
};
|
|
24
|
+
expect(participantInfo.sid).toBe('PA_123');
|
|
25
|
+
expect(participantInfo.identity).toBe('user-1');
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe('TrackInfo', () => {
|
|
29
|
+
it('should create a valid TrackInfo object', () => {
|
|
30
|
+
const trackInfo = {
|
|
31
|
+
sid: 'TR_123',
|
|
32
|
+
kind: TrackKind.Video,
|
|
33
|
+
source: TrackSource.Camera,
|
|
34
|
+
muted: false,
|
|
35
|
+
};
|
|
36
|
+
expect(trackInfo.sid).toBe('TR_123');
|
|
37
|
+
expect(trackInfo.kind).toBe(TrackKind.Video);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
describe('ConnectionState', () => {
|
|
41
|
+
it('should have valid connection states', () => {
|
|
42
|
+
const states = [
|
|
43
|
+
ConnectionState.Connected,
|
|
44
|
+
ConnectionState.Disconnected,
|
|
45
|
+
ConnectionState.Reconnecting,
|
|
46
|
+
];
|
|
47
|
+
expect(states).toContain(ConnectionState.Connected);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe('TrackKind', () => {
|
|
51
|
+
it('should have valid track kinds', () => {
|
|
52
|
+
const kinds = [TrackKind.Audio, TrackKind.Video];
|
|
53
|
+
expect(kinds).toContain(TrackKind.Audio);
|
|
54
|
+
expect(kinds).toContain(TrackKind.Video);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
describe('TrackSource', () => {
|
|
58
|
+
it('should have valid track sources', () => {
|
|
59
|
+
const sources = [TrackSource.Camera, TrackSource.Microphone, TrackSource.ScreenShare];
|
|
60
|
+
expect(sources).toContain(TrackSource.Camera);
|
|
61
|
+
expect(sources).toContain(TrackSource.Microphone);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=types.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../src/__tests__/types.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/constants/errors.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAiBpD,CAAC;AAKF,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAEvD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ErrorCode } from '../types/room.types';
|
|
2
|
+
export const ERROR_MESSAGES = {
|
|
3
|
+
[ErrorCode.Unknown]: 'An unknown error occurred',
|
|
4
|
+
[ErrorCode.InvalidRequest]: 'Invalid request',
|
|
5
|
+
[ErrorCode.Unauthorized]: 'Unauthorized access',
|
|
6
|
+
[ErrorCode.NotFound]: 'Resource not found',
|
|
7
|
+
[ErrorCode.RoomNotFound]: 'Room not found',
|
|
8
|
+
[ErrorCode.RoomFull]: 'Room is full',
|
|
9
|
+
[ErrorCode.RoomClosed]: 'Room is closed',
|
|
10
|
+
[ErrorCode.ParticipantNotFound]: 'Participant not found',
|
|
11
|
+
[ErrorCode.ParticipantAlreadyJoined]: 'Participant already joined',
|
|
12
|
+
[ErrorCode.TrackNotFound]: 'Track not found',
|
|
13
|
+
[ErrorCode.TrackPublishError]: 'Failed to publish track',
|
|
14
|
+
[ErrorCode.TrackSubscribeError]: 'Failed to subscribe to track',
|
|
15
|
+
[ErrorCode.TransportError]: 'Transport error',
|
|
16
|
+
[ErrorCode.MediaError]: 'Media error',
|
|
17
|
+
[ErrorCode.DeviceNotFound]: 'Media device not found',
|
|
18
|
+
[ErrorCode.PermissionDenied]: 'Permission denied',
|
|
19
|
+
};
|
|
20
|
+
export function getErrorMessage(code) {
|
|
21
|
+
return ERROR_MESSAGES[code] || ERROR_MESSAGES[ErrorCode.Unknown];
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/constants/errors.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,CAAC,MAAM,cAAc,GAA8B;IACvD,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,2BAA2B;IAChD,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,iBAAiB;IAC7C,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,qBAAqB;IAC/C,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,oBAAoB;IAC1C,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,gBAAgB;IAC1C,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,cAAc;IACpC,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,gBAAgB;IACxC,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,uBAAuB;IACxD,CAAC,SAAS,CAAC,wBAAwB,CAAC,EAAE,4BAA4B;IAClE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,iBAAiB;IAC5C,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,yBAAyB;IACxD,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,8BAA8B;IAC/D,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,iBAAiB;IAC7C,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,aAAa;IACrC,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,wBAAwB;IACpD,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,mBAAmB;CAClD,CAAC;AAKF,MAAM,UAAU,eAAe,CAAC,IAAe;IAC7C,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export declare const CLIENT_EVENTS: {
|
|
2
|
+
readonly JOIN: "join";
|
|
3
|
+
readonly LEAVE: "leave";
|
|
4
|
+
readonly CREATE_WEBRTC_TRANSPORT: "create_webrtc_transport";
|
|
5
|
+
readonly CONNECT_TRANSPORT: "connect_transport";
|
|
6
|
+
readonly PUBLISH: "publish";
|
|
7
|
+
readonly UNPUBLISH: "unpublish";
|
|
8
|
+
readonly SUBSCRIBE: "subscribe";
|
|
9
|
+
readonly UNSUBSCRIBE: "unsubscribe";
|
|
10
|
+
readonly RESUME_CONSUMER: "resume_consumer";
|
|
11
|
+
readonly MUTE: "mute";
|
|
12
|
+
readonly DATA: "data";
|
|
13
|
+
};
|
|
14
|
+
export declare const SERVER_EVENTS: {
|
|
15
|
+
readonly JOINED: "joined";
|
|
16
|
+
readonly PARTICIPANT_JOINED: "participant_joined";
|
|
17
|
+
readonly PARTICIPANT_LEFT: "participant_left";
|
|
18
|
+
readonly TRACK_PUBLISHED: "track_published";
|
|
19
|
+
readonly TRACK_UNPUBLISHED: "track_unpublished";
|
|
20
|
+
readonly TRACK_SUBSCRIBED: "track_subscribed";
|
|
21
|
+
readonly TRACK_UNSUBSCRIBED: "track_unsubscribed";
|
|
22
|
+
readonly TRACK_MUTED: "track_muted";
|
|
23
|
+
readonly DATA: "data";
|
|
24
|
+
readonly ERROR: "error";
|
|
25
|
+
};
|
|
26
|
+
export declare const ROOM_EVENTS: {
|
|
27
|
+
readonly PARTICIPANT_CONNECTED: "participant:connected";
|
|
28
|
+
readonly PARTICIPANT_DISCONNECTED: "participant:disconnected";
|
|
29
|
+
readonly TRACK_ADDED: "track:added";
|
|
30
|
+
readonly TRACK_REMOVED: "track:removed";
|
|
31
|
+
readonly TRACK_MUTED: "track:muted";
|
|
32
|
+
readonly TRACK_UNMUTED: "track:unmuted";
|
|
33
|
+
readonly ROOM_CLOSED: "room:closed";
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/constants/events.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa;;;;;;;;;;;;CAYhB,CAAC;AAGX,eAAO,MAAM,aAAa;;;;;;;;;;;CAWhB,CAAC;AAGX,eAAO,MAAM,WAAW;;;;;;;;CAQd,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export const CLIENT_EVENTS = {
|
|
2
|
+
JOIN: 'join',
|
|
3
|
+
LEAVE: 'leave',
|
|
4
|
+
CREATE_WEBRTC_TRANSPORT: 'create_webrtc_transport',
|
|
5
|
+
CONNECT_TRANSPORT: 'connect_transport',
|
|
6
|
+
PUBLISH: 'publish',
|
|
7
|
+
UNPUBLISH: 'unpublish',
|
|
8
|
+
SUBSCRIBE: 'subscribe',
|
|
9
|
+
UNSUBSCRIBE: 'unsubscribe',
|
|
10
|
+
RESUME_CONSUMER: 'resume_consumer',
|
|
11
|
+
MUTE: 'mute',
|
|
12
|
+
DATA: 'data',
|
|
13
|
+
};
|
|
14
|
+
export const SERVER_EVENTS = {
|
|
15
|
+
JOINED: 'joined',
|
|
16
|
+
PARTICIPANT_JOINED: 'participant_joined',
|
|
17
|
+
PARTICIPANT_LEFT: 'participant_left',
|
|
18
|
+
TRACK_PUBLISHED: 'track_published',
|
|
19
|
+
TRACK_UNPUBLISHED: 'track_unpublished',
|
|
20
|
+
TRACK_SUBSCRIBED: 'track_subscribed',
|
|
21
|
+
TRACK_UNSUBSCRIBED: 'track_unsubscribed',
|
|
22
|
+
TRACK_MUTED: 'track_muted',
|
|
23
|
+
DATA: 'data',
|
|
24
|
+
ERROR: 'error',
|
|
25
|
+
};
|
|
26
|
+
export const ROOM_EVENTS = {
|
|
27
|
+
PARTICIPANT_CONNECTED: 'participant:connected',
|
|
28
|
+
PARTICIPANT_DISCONNECTED: 'participant:disconnected',
|
|
29
|
+
TRACK_ADDED: 'track:added',
|
|
30
|
+
TRACK_REMOVED: 'track:removed',
|
|
31
|
+
TRACK_MUTED: 'track:muted',
|
|
32
|
+
TRACK_UNMUTED: 'track:unmuted',
|
|
33
|
+
ROOM_CLOSED: 'room:closed',
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/constants/events.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,uBAAuB,EAAE,yBAAyB;IAClD,iBAAiB,EAAE,mBAAmB;IACtC,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,eAAe,EAAE,iBAAiB;IAClC,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;CACJ,CAAC;AAGX,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,MAAM,EAAE,QAAQ;IAChB,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,mBAAmB;IACtC,gBAAgB,EAAE,kBAAkB;IACpC,kBAAkB,EAAE,oBAAoB;IACxC,WAAW,EAAE,aAAa;IAC1B,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CACN,CAAC;AAGX,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,qBAAqB,EAAE,uBAAuB;IAC9C,wBAAwB,EAAE,0BAA0B;IACpD,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,eAAe;IAC9B,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,eAAe;IAC9B,WAAW,EAAE,aAAa;CAClB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export declare enum ConnectionState {
|
|
2
|
+
Connected = "connected",
|
|
3
|
+
Disconnected = "disconnected",
|
|
4
|
+
Reconnecting = "reconnecting"
|
|
5
|
+
}
|
|
6
|
+
export interface RoomInfo {
|
|
7
|
+
sid: string;
|
|
8
|
+
name: string;
|
|
9
|
+
numParticipants: number;
|
|
10
|
+
maxParticipants?: number;
|
|
11
|
+
creationTime: number;
|
|
12
|
+
metadata?: Record<string, unknown>;
|
|
13
|
+
}
|
|
14
|
+
export interface RoomState {
|
|
15
|
+
sid: string;
|
|
16
|
+
name: string;
|
|
17
|
+
participants: Map<string, ParticipantInfo>;
|
|
18
|
+
active: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface ParticipantInfo {
|
|
21
|
+
sid: string;
|
|
22
|
+
identity: string;
|
|
23
|
+
name?: string;
|
|
24
|
+
state: ConnectionState;
|
|
25
|
+
metadata?: Record<string, unknown>;
|
|
26
|
+
tracks: TrackInfo[];
|
|
27
|
+
permission?: ParticipantPermission;
|
|
28
|
+
}
|
|
29
|
+
export interface ParticipantPermission {
|
|
30
|
+
canPublish: boolean;
|
|
31
|
+
canSubscribe: boolean;
|
|
32
|
+
canPublishData: boolean;
|
|
33
|
+
hidden?: boolean;
|
|
34
|
+
recorder?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface TrackInfo {
|
|
37
|
+
sid: string;
|
|
38
|
+
kind: TrackKind;
|
|
39
|
+
source: TrackSource;
|
|
40
|
+
muted: boolean;
|
|
41
|
+
width?: number;
|
|
42
|
+
height?: number;
|
|
43
|
+
simulcast?: boolean;
|
|
44
|
+
}
|
|
45
|
+
export declare enum TrackKind {
|
|
46
|
+
Audio = "audio",
|
|
47
|
+
Video = "video"
|
|
48
|
+
}
|
|
49
|
+
export declare enum TrackSource {
|
|
50
|
+
Camera = "camera",
|
|
51
|
+
Microphone = "microphone",
|
|
52
|
+
ScreenShare = "screen_share",
|
|
53
|
+
ScreenShareAudio = "screen_share_audio",
|
|
54
|
+
Unknown = "unknown"
|
|
55
|
+
}
|
|
56
|
+
export declare enum DataPacketKind {
|
|
57
|
+
Reliable = "reliable",
|
|
58
|
+
Lossy = "lossy"
|
|
59
|
+
}
|
|
60
|
+
export interface DataPacket {
|
|
61
|
+
kind: DataPacketKind;
|
|
62
|
+
value: unknown;
|
|
63
|
+
participantSid?: string;
|
|
64
|
+
timestamp: number;
|
|
65
|
+
}
|
|
66
|
+
export declare enum ErrorCode {
|
|
67
|
+
Unknown = 0,
|
|
68
|
+
InvalidRequest = 1,
|
|
69
|
+
Unauthorized = 2,
|
|
70
|
+
NotFound = 3,
|
|
71
|
+
RoomNotFound = 100,
|
|
72
|
+
RoomFull = 101,
|
|
73
|
+
RoomClosed = 102,
|
|
74
|
+
ParticipantNotFound = 200,
|
|
75
|
+
ParticipantAlreadyJoined = 201,
|
|
76
|
+
TrackNotFound = 300,
|
|
77
|
+
TrackPublishError = 301,
|
|
78
|
+
TrackSubscribeError = 302,
|
|
79
|
+
TransportError = 400,
|
|
80
|
+
MediaError = 500,
|
|
81
|
+
DeviceNotFound = 501,
|
|
82
|
+
PermissionDenied = 502
|
|
83
|
+
}
|
|
84
|
+
export interface ErrorInfo {
|
|
85
|
+
code: ErrorCode;
|
|
86
|
+
message: string;
|
|
87
|
+
details?: Record<string, unknown>;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=room.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room.types.d.ts","sourceRoot":"","sources":["../../src/types/room.types.ts"],"names":[],"mappings":"AAOA,oBAAY,eAAe;IACzB,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;CAC9B;AAKD,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAKD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC3C,MAAM,EAAE,OAAO,CAAC;CACjB;AAKD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,qBAAqB,CAAC;CACpC;AAKD,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAKD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAKD,oBAAY,SAAS;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAKD,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,WAAW,iBAAiB;IAC5B,gBAAgB,uBAAuB;IACvC,OAAO,YAAY;CACpB;AAKD,oBAAY,cAAc;IACxB,QAAQ,aAAa;IACrB,KAAK,UAAU;CAChB;AAKD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD,oBAAY,SAAS;IAEnB,OAAO,IAAI;IACX,cAAc,IAAI;IAClB,YAAY,IAAI;IAChB,QAAQ,IAAI;IAEZ,YAAY,MAAM;IAClB,QAAQ,MAAM;IACd,UAAU,MAAM;IAEhB,mBAAmB,MAAM;IACzB,wBAAwB,MAAM;IAE9B,aAAa,MAAM;IACnB,iBAAiB,MAAM;IACvB,mBAAmB,MAAM;IAEzB,cAAc,MAAM;IAEpB,UAAU,MAAM;IAChB,cAAc,MAAM;IACpB,gBAAgB,MAAM;CACvB;AAKD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export var ConnectionState;
|
|
2
|
+
(function (ConnectionState) {
|
|
3
|
+
ConnectionState["Connected"] = "connected";
|
|
4
|
+
ConnectionState["Disconnected"] = "disconnected";
|
|
5
|
+
ConnectionState["Reconnecting"] = "reconnecting";
|
|
6
|
+
})(ConnectionState || (ConnectionState = {}));
|
|
7
|
+
export var TrackKind;
|
|
8
|
+
(function (TrackKind) {
|
|
9
|
+
TrackKind["Audio"] = "audio";
|
|
10
|
+
TrackKind["Video"] = "video";
|
|
11
|
+
})(TrackKind || (TrackKind = {}));
|
|
12
|
+
export var TrackSource;
|
|
13
|
+
(function (TrackSource) {
|
|
14
|
+
TrackSource["Camera"] = "camera";
|
|
15
|
+
TrackSource["Microphone"] = "microphone";
|
|
16
|
+
TrackSource["ScreenShare"] = "screen_share";
|
|
17
|
+
TrackSource["ScreenShareAudio"] = "screen_share_audio";
|
|
18
|
+
TrackSource["Unknown"] = "unknown";
|
|
19
|
+
})(TrackSource || (TrackSource = {}));
|
|
20
|
+
export var DataPacketKind;
|
|
21
|
+
(function (DataPacketKind) {
|
|
22
|
+
DataPacketKind["Reliable"] = "reliable";
|
|
23
|
+
DataPacketKind["Lossy"] = "lossy";
|
|
24
|
+
})(DataPacketKind || (DataPacketKind = {}));
|
|
25
|
+
export var ErrorCode;
|
|
26
|
+
(function (ErrorCode) {
|
|
27
|
+
ErrorCode[ErrorCode["Unknown"] = 0] = "Unknown";
|
|
28
|
+
ErrorCode[ErrorCode["InvalidRequest"] = 1] = "InvalidRequest";
|
|
29
|
+
ErrorCode[ErrorCode["Unauthorized"] = 2] = "Unauthorized";
|
|
30
|
+
ErrorCode[ErrorCode["NotFound"] = 3] = "NotFound";
|
|
31
|
+
ErrorCode[ErrorCode["RoomNotFound"] = 100] = "RoomNotFound";
|
|
32
|
+
ErrorCode[ErrorCode["RoomFull"] = 101] = "RoomFull";
|
|
33
|
+
ErrorCode[ErrorCode["RoomClosed"] = 102] = "RoomClosed";
|
|
34
|
+
ErrorCode[ErrorCode["ParticipantNotFound"] = 200] = "ParticipantNotFound";
|
|
35
|
+
ErrorCode[ErrorCode["ParticipantAlreadyJoined"] = 201] = "ParticipantAlreadyJoined";
|
|
36
|
+
ErrorCode[ErrorCode["TrackNotFound"] = 300] = "TrackNotFound";
|
|
37
|
+
ErrorCode[ErrorCode["TrackPublishError"] = 301] = "TrackPublishError";
|
|
38
|
+
ErrorCode[ErrorCode["TrackSubscribeError"] = 302] = "TrackSubscribeError";
|
|
39
|
+
ErrorCode[ErrorCode["TransportError"] = 400] = "TransportError";
|
|
40
|
+
ErrorCode[ErrorCode["MediaError"] = 500] = "MediaError";
|
|
41
|
+
ErrorCode[ErrorCode["DeviceNotFound"] = 501] = "DeviceNotFound";
|
|
42
|
+
ErrorCode[ErrorCode["PermissionDenied"] = 502] = "PermissionDenied";
|
|
43
|
+
})(ErrorCode || (ErrorCode = {}));
|
|
44
|
+
//# sourceMappingURL=room.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room.types.js","sourceRoot":"","sources":["../../src/types/room.types.ts"],"names":[],"mappings":"AAOA,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,0CAAuB,CAAA;IACvB,gDAA6B,CAAA;IAC7B,gDAA6B,CAAA;AAC/B,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAgED,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,4BAAe,CAAA;IACf,4BAAe,CAAA;AACjB,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAKD,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,wCAAyB,CAAA;IACzB,2CAA4B,CAAA;IAC5B,sDAAuC,CAAA;IACvC,kCAAmB,CAAA;AACrB,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;AAKD,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,iCAAe,CAAA;AACjB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAeD,MAAM,CAAN,IAAY,SAuBX;AAvBD,WAAY,SAAS;IAEnB,+CAAW,CAAA;IACX,6DAAkB,CAAA;IAClB,yDAAgB,CAAA;IAChB,iDAAY,CAAA;IAEZ,2DAAkB,CAAA;IAClB,mDAAc,CAAA;IACd,uDAAgB,CAAA;IAEhB,yEAAyB,CAAA;IACzB,mFAA8B,CAAA;IAE9B,6DAAmB,CAAA;IACnB,qEAAuB,CAAA;IACvB,yEAAyB,CAAA;IAEzB,+DAAoB,CAAA;IAEpB,uDAAgB,CAAA;IAChB,+DAAoB,CAAA;IACpB,mEAAsB,CAAA;AACxB,CAAC,EAvBW,SAAS,KAAT,SAAS,QAuBpB"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import type { RoomInfo, ParticipantInfo, TrackInfo, ErrorInfo, TrackKind } from './room.types';
|
|
2
|
+
export interface JoinMessage {
|
|
3
|
+
type: 'join';
|
|
4
|
+
room: string;
|
|
5
|
+
token: string;
|
|
6
|
+
metadata?: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
export interface LeaveMessage {
|
|
9
|
+
type: 'leave';
|
|
10
|
+
}
|
|
11
|
+
export interface CreateTransportMessage {
|
|
12
|
+
type: 'create_transport';
|
|
13
|
+
direction: 'send' | 'recv';
|
|
14
|
+
rtpCapabilities: RtpCapabilities;
|
|
15
|
+
}
|
|
16
|
+
export interface ConnectTransportMessage {
|
|
17
|
+
type: 'connect_transport';
|
|
18
|
+
transportId: string;
|
|
19
|
+
dtlsParameters: DtlsParameters;
|
|
20
|
+
}
|
|
21
|
+
export interface PublishMessage {
|
|
22
|
+
type: 'publish';
|
|
23
|
+
transportId: string;
|
|
24
|
+
kind: TrackKind;
|
|
25
|
+
rtpParameters: RtpParameters;
|
|
26
|
+
appData?: Record<string, unknown>;
|
|
27
|
+
}
|
|
28
|
+
export interface UnpublishMessage {
|
|
29
|
+
type: 'unpublish';
|
|
30
|
+
producerId: string;
|
|
31
|
+
trackSid: string;
|
|
32
|
+
}
|
|
33
|
+
export interface SubscribeMessage {
|
|
34
|
+
type: 'subscribe';
|
|
35
|
+
transportId: string;
|
|
36
|
+
producerId: string;
|
|
37
|
+
rtpCapabilities: RtpCapabilities;
|
|
38
|
+
}
|
|
39
|
+
export interface UnsubscribeMessage {
|
|
40
|
+
type: 'unsubscribe';
|
|
41
|
+
consumerId: string;
|
|
42
|
+
}
|
|
43
|
+
export interface ResumeConsumerMessage {
|
|
44
|
+
type: 'resume_consumer';
|
|
45
|
+
consumerId: string;
|
|
46
|
+
}
|
|
47
|
+
export interface MuteMessage {
|
|
48
|
+
type: 'mute';
|
|
49
|
+
trackSid: string;
|
|
50
|
+
muted: boolean;
|
|
51
|
+
}
|
|
52
|
+
export interface DataMessage {
|
|
53
|
+
type: 'data';
|
|
54
|
+
payload: unknown;
|
|
55
|
+
kind?: 'reliable' | 'lossy';
|
|
56
|
+
}
|
|
57
|
+
export interface CreateWebRtcTransportMessage {
|
|
58
|
+
type: 'create_webrtc_transport';
|
|
59
|
+
direction: 'send' | 'recv';
|
|
60
|
+
}
|
|
61
|
+
export interface ConnectWebRtcTransportMessage {
|
|
62
|
+
type: 'connect_webrtc_transport';
|
|
63
|
+
transportId: string;
|
|
64
|
+
dtlsParameters: DtlsParameters;
|
|
65
|
+
}
|
|
66
|
+
export interface TrackPublishedMessage {
|
|
67
|
+
type: 'track_published';
|
|
68
|
+
participantSid: string;
|
|
69
|
+
track: TrackInfo;
|
|
70
|
+
}
|
|
71
|
+
export interface TrackUnpublishedMessage {
|
|
72
|
+
type: 'track_unpublished';
|
|
73
|
+
participantSid: string;
|
|
74
|
+
trackSid: string;
|
|
75
|
+
}
|
|
76
|
+
export interface TrackSubscribedMessage {
|
|
77
|
+
type: 'track_subscribed';
|
|
78
|
+
id: string;
|
|
79
|
+
producerId: string;
|
|
80
|
+
kind: string;
|
|
81
|
+
rtpParameters: RtpParameters;
|
|
82
|
+
trackSid: string;
|
|
83
|
+
}
|
|
84
|
+
export interface TrackUnsubscribedMessage {
|
|
85
|
+
type: 'track_unsubscribed';
|
|
86
|
+
trackSid: string;
|
|
87
|
+
}
|
|
88
|
+
export interface TrackMutedMessage {
|
|
89
|
+
type: 'track_muted';
|
|
90
|
+
participantSid: string;
|
|
91
|
+
trackSid: string;
|
|
92
|
+
muted: boolean;
|
|
93
|
+
}
|
|
94
|
+
export interface TrackUnmutedMessage {
|
|
95
|
+
type: 'track_unmuted';
|
|
96
|
+
participantSid: string;
|
|
97
|
+
trackSid: string;
|
|
98
|
+
muted: boolean;
|
|
99
|
+
}
|
|
100
|
+
export type ClientMessage = JoinMessage | LeaveMessage | CreateTransportMessage | ConnectTransportMessage | PublishMessage | UnpublishMessage | SubscribeMessage | UnsubscribeMessage | ResumeConsumerMessage | MuteMessage | DataMessage;
|
|
101
|
+
export interface JoinedMessage {
|
|
102
|
+
type: 'joined';
|
|
103
|
+
room: RoomInfo;
|
|
104
|
+
participant: ParticipantInfo;
|
|
105
|
+
otherParticipants: ParticipantInfo[];
|
|
106
|
+
rtpCapabilities?: RtpCapabilities;
|
|
107
|
+
}
|
|
108
|
+
export interface ParticipantJoinedMessage {
|
|
109
|
+
type: 'participant_joined';
|
|
110
|
+
participant: ParticipantInfo;
|
|
111
|
+
}
|
|
112
|
+
export interface ParticipantLeftMessage {
|
|
113
|
+
type: 'participant_left';
|
|
114
|
+
participantSid: string;
|
|
115
|
+
}
|
|
116
|
+
export interface TransportCreatedMessage {
|
|
117
|
+
type: 'transport_created';
|
|
118
|
+
id: string;
|
|
119
|
+
iceParameters: IceParameters;
|
|
120
|
+
iceCandidates: IceCandidate[];
|
|
121
|
+
dtlsParameters: DtlsParameters;
|
|
122
|
+
direction: 'send' | 'recv';
|
|
123
|
+
}
|
|
124
|
+
export interface TransportConnectedMessage {
|
|
125
|
+
type: 'transport_connected';
|
|
126
|
+
transportId: string;
|
|
127
|
+
}
|
|
128
|
+
export interface TrackPublishedMessage {
|
|
129
|
+
type: 'track_published';
|
|
130
|
+
participantSid: string;
|
|
131
|
+
track: TrackInfo;
|
|
132
|
+
}
|
|
133
|
+
export interface TrackPublishResponse {
|
|
134
|
+
type: 'track_published';
|
|
135
|
+
id: string;
|
|
136
|
+
trackSid: string;
|
|
137
|
+
}
|
|
138
|
+
export interface TrackUnpublishedMessage {
|
|
139
|
+
type: 'track_unpublished';
|
|
140
|
+
participantSid: string;
|
|
141
|
+
trackSid: string;
|
|
142
|
+
}
|
|
143
|
+
export interface TrackSubscribedMessage {
|
|
144
|
+
type: 'track_subscribed';
|
|
145
|
+
id: string;
|
|
146
|
+
producerId: string;
|
|
147
|
+
kind: string;
|
|
148
|
+
rtpParameters: RtpParameters;
|
|
149
|
+
trackSid: string;
|
|
150
|
+
}
|
|
151
|
+
export interface TrackUnsubscribedMessage {
|
|
152
|
+
type: 'track_unsubscribed';
|
|
153
|
+
trackSid: string;
|
|
154
|
+
}
|
|
155
|
+
export interface TrackMutedMessage {
|
|
156
|
+
type: 'track_muted';
|
|
157
|
+
participantSid: string;
|
|
158
|
+
trackSid: string;
|
|
159
|
+
muted: boolean;
|
|
160
|
+
}
|
|
161
|
+
export interface TrackUnmutedMessage {
|
|
162
|
+
type: 'track_unmuted';
|
|
163
|
+
participantSid: string;
|
|
164
|
+
trackSid: string;
|
|
165
|
+
muted: boolean;
|
|
166
|
+
}
|
|
167
|
+
export interface DataReceivedMessage {
|
|
168
|
+
type: 'data';
|
|
169
|
+
participantSid: string;
|
|
170
|
+
payload: unknown;
|
|
171
|
+
}
|
|
172
|
+
export interface ErrorMessage {
|
|
173
|
+
type: 'error';
|
|
174
|
+
error: ErrorInfo;
|
|
175
|
+
}
|
|
176
|
+
export type ServerMessage = JoinedMessage | TransportCreatedMessage | TransportConnectedMessage | ParticipantJoinedMessage | ParticipantLeftMessage | TrackPublishedMessage | TrackPublishResponse | TrackUnpublishedMessage | TrackSubscribedMessage | TrackUnsubscribedMessage | TrackMutedMessage | TrackUnmutedMessage | DataReceivedMessage | ErrorMessage;
|
|
177
|
+
export interface RtpParameters {
|
|
178
|
+
codecs?: RtpCodecParameters[];
|
|
179
|
+
headerExtensions?: RtpHeaderExtensionParameters[];
|
|
180
|
+
encodings?: RtpEncodingParameters[];
|
|
181
|
+
rtcp?: RtcpParameters;
|
|
182
|
+
}
|
|
183
|
+
export interface RtpCodecParameters {
|
|
184
|
+
mimeType: string;
|
|
185
|
+
clockRate: number;
|
|
186
|
+
channels?: number;
|
|
187
|
+
parameters?: Record<string, unknown>;
|
|
188
|
+
}
|
|
189
|
+
export interface RtpHeaderExtensionParameters {
|
|
190
|
+
uri: string;
|
|
191
|
+
id: number;
|
|
192
|
+
encrypt?: boolean;
|
|
193
|
+
parameters?: Record<string, unknown>;
|
|
194
|
+
}
|
|
195
|
+
export interface RtpEncodingParameters {
|
|
196
|
+
ssrc?: number;
|
|
197
|
+
rid?: string;
|
|
198
|
+
codecPayloadType?: number;
|
|
199
|
+
rtx?: {
|
|
200
|
+
ssrc: number;
|
|
201
|
+
};
|
|
202
|
+
dtx?: boolean;
|
|
203
|
+
scalabilityMode?: string;
|
|
204
|
+
scaleResolutionDownBy?: number;
|
|
205
|
+
maxBitrate?: number;
|
|
206
|
+
maxFramerate?: number;
|
|
207
|
+
adaptivePtime?: boolean;
|
|
208
|
+
priority?: 'very-low' | 'low' | 'medium' | 'high';
|
|
209
|
+
networkPriority?: 'very-low' | 'low' | 'medium' | 'high';
|
|
210
|
+
}
|
|
211
|
+
export interface RtcpParameters {
|
|
212
|
+
cname?: string;
|
|
213
|
+
reducedSize?: boolean;
|
|
214
|
+
mux?: boolean;
|
|
215
|
+
}
|
|
216
|
+
export interface RtpCapabilities {
|
|
217
|
+
codecs: RtpCodecCapability[];
|
|
218
|
+
headerExtensions: RtpHeaderExtension[];
|
|
219
|
+
}
|
|
220
|
+
export interface RtpCodecCapability {
|
|
221
|
+
mimeType: string;
|
|
222
|
+
kind?: string;
|
|
223
|
+
preferredPayloadType?: number;
|
|
224
|
+
clockRate: number;
|
|
225
|
+
channels?: number;
|
|
226
|
+
parameters?: Record<string, unknown>;
|
|
227
|
+
rtcpFeedback?: RtcpFeedback[];
|
|
228
|
+
}
|
|
229
|
+
export interface RtpHeaderExtension {
|
|
230
|
+
uri: string;
|
|
231
|
+
preferredId: number;
|
|
232
|
+
preferredEncrypt?: boolean;
|
|
233
|
+
direction?: 'sendrecv' | 'send' | 'recv' | 'sendonly' | 'recvonly' | 'inactive';
|
|
234
|
+
}
|
|
235
|
+
export interface RtcpFeedback {
|
|
236
|
+
type: string;
|
|
237
|
+
parameter?: string;
|
|
238
|
+
}
|
|
239
|
+
export interface IceParameters {
|
|
240
|
+
usernameFragment: string;
|
|
241
|
+
password: string;
|
|
242
|
+
iceLite?: boolean;
|
|
243
|
+
}
|
|
244
|
+
export interface IceCandidate {
|
|
245
|
+
foundation: string;
|
|
246
|
+
priority: number;
|
|
247
|
+
ip: string;
|
|
248
|
+
protocol: 'udp' | 'tcp';
|
|
249
|
+
port: number;
|
|
250
|
+
type: 'host';
|
|
251
|
+
tcpType?: 'passive';
|
|
252
|
+
}
|
|
253
|
+
export interface DtlsParameters {
|
|
254
|
+
role?: 'auto' | 'client' | 'server';
|
|
255
|
+
fingerprints: DtlsFingerprint[];
|
|
256
|
+
}
|
|
257
|
+
export interface DtlsFingerprint {
|
|
258
|
+
algorithm: string;
|
|
259
|
+
value: string;
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=signal.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal.types.d.ts","sourceRoot":"","sources":["../../src/types/signal.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal.types.js","sourceRoot":"","sources":["../../src/types/signal.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface VideoGrants {
|
|
2
|
+
room?: string;
|
|
3
|
+
roomJoin?: boolean;
|
|
4
|
+
canPublish?: boolean;
|
|
5
|
+
canSubscribe?: boolean;
|
|
6
|
+
canPublishData?: boolean;
|
|
7
|
+
hidden?: boolean;
|
|
8
|
+
recorder?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface AccessTokenClaims {
|
|
11
|
+
identity: string;
|
|
12
|
+
name?: string;
|
|
13
|
+
metadata?: Record<string, unknown>;
|
|
14
|
+
video?: VideoGrants;
|
|
15
|
+
iat?: number;
|
|
16
|
+
nbf?: number;
|
|
17
|
+
exp?: number;
|
|
18
|
+
iss?: string;
|
|
19
|
+
sub?: string;
|
|
20
|
+
jti?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface TokenValidationResult {
|
|
23
|
+
valid: boolean;
|
|
24
|
+
claims?: AccessTokenClaims;
|
|
25
|
+
error?: string;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=token.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.types.d.ts","sourceRoot":"","sources":["../../src/types/token.types.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAKD,MAAM,WAAW,iBAAiB;IAEhC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGnC,KAAK,CAAC,EAAE,WAAW,CAAC;IAGpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAKD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.types.js","sourceRoot":"","sources":["../../src/types/token.types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@bytepulse/pulsewave-shared",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "PulseWave Shared - Types and constants shared between client and server",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"README.md"
|
|
18
|
+
],
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public"
|
|
21
|
+
},
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "https://github.com/bytepulseflow/pulsewave.git",
|
|
25
|
+
"directory": "packages/shared"
|
|
26
|
+
},
|
|
27
|
+
"homepage": "https://github.com/bytepulseflow/pulsewave#readme",
|
|
28
|
+
"bugs": {
|
|
29
|
+
"url": "https://github.com/bytepulseflow/pulsewave/issues"
|
|
30
|
+
},
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"tslib": "^2.6.2"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@types/jest": "^29.5.11",
|
|
37
|
+
"@typescript-eslint/eslint-plugin": "^6.19.0",
|
|
38
|
+
"@typescript-eslint/parser": "^6.19.0",
|
|
39
|
+
"eslint": "^8.56.0",
|
|
40
|
+
"import-local": "^3.1.0",
|
|
41
|
+
"jest": "^29.7.0",
|
|
42
|
+
"ts-jest": "^29.1.1",
|
|
43
|
+
"typescript": "^5.3.3"
|
|
44
|
+
},
|
|
45
|
+
"author": {
|
|
46
|
+
"name": "Kaushal Mehta",
|
|
47
|
+
"url": "https://github.com/kaushald4"
|
|
48
|
+
},
|
|
49
|
+
"scripts": {
|
|
50
|
+
"build": "tsc",
|
|
51
|
+
"dev": "tsc --watch",
|
|
52
|
+
"clean": "rm -rf dist",
|
|
53
|
+
"lint": "eslint src --ext .ts",
|
|
54
|
+
"type-check": "tsc --noEmit",
|
|
55
|
+
"test": "jest",
|
|
56
|
+
"test:watch": "jest --watch"
|
|
57
|
+
}
|
|
58
|
+
}
|