@sawport/peers-caller 0.0.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 (62) hide show
  1. package/README.md +782 -0
  2. package/dist/core/BaseStore.d.ts +13 -0
  3. package/dist/core/BaseStore.d.ts.map +1 -0
  4. package/dist/core/CallMediaStream.d.ts +101 -0
  5. package/dist/core/CallMediaStream.d.ts.map +1 -0
  6. package/dist/core/CallParticipant.d.ts +122 -0
  7. package/dist/core/CallParticipant.d.ts.map +1 -0
  8. package/dist/core/CallPeerConnection.d.ts +92 -0
  9. package/dist/core/CallPeerConnection.d.ts.map +1 -0
  10. package/dist/core/CallRecorder.d.ts +72 -0
  11. package/dist/core/CallRecorder.d.ts.map +1 -0
  12. package/dist/core/CallSocket.d.ts +131 -0
  13. package/dist/core/CallSocket.d.ts.map +1 -0
  14. package/dist/core/PeersCaller.d.ts +155 -0
  15. package/dist/core/PeersCaller.d.ts.map +1 -0
  16. package/dist/events/CallEventEmitter.d.ts +2 -0
  17. package/dist/events/CallEventEmitter.d.ts.map +1 -0
  18. package/dist/events/index.d.ts +2 -0
  19. package/dist/events/index.d.ts.map +1 -0
  20. package/dist/events/types.d.ts +2 -0
  21. package/dist/events/types.d.ts.map +1 -0
  22. package/dist/hooks/index.d.ts +90 -0
  23. package/dist/hooks/index.d.ts.map +1 -0
  24. package/dist/index.d.ts +19 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/peers-caller.es.js +7983 -0
  27. package/dist/peers-caller.es.js.map +1 -0
  28. package/dist/peers-caller.umd.js +22 -0
  29. package/dist/peers-caller.umd.js.map +1 -0
  30. package/dist/polyfills.d.ts +5 -0
  31. package/dist/polyfills.d.ts.map +1 -0
  32. package/dist/store/index.d.ts +57 -0
  33. package/dist/store/index.d.ts.map +1 -0
  34. package/dist/test-polyfills.d.ts +2 -0
  35. package/dist/test-polyfills.d.ts.map +1 -0
  36. package/dist/test-setup.d.ts +2 -0
  37. package/dist/test-setup.d.ts.map +1 -0
  38. package/dist/test-utils.d.ts +2 -0
  39. package/dist/test-utils.d.ts.map +1 -0
  40. package/dist/tester/App.d.ts +3 -0
  41. package/dist/tester/App.d.ts.map +1 -0
  42. package/dist/tester/components/ConfigPanel.d.ts +17 -0
  43. package/dist/tester/components/ConfigPanel.d.ts.map +1 -0
  44. package/dist/tester/components/ConnectionStatus.d.ts +21 -0
  45. package/dist/tester/components/ConnectionStatus.d.ts.map +1 -0
  46. package/dist/tester/components/ControlPanel.d.ts +23 -0
  47. package/dist/tester/components/ControlPanel.d.ts.map +1 -0
  48. package/dist/tester/components/DebugConsole.d.ts +27 -0
  49. package/dist/tester/components/DebugConsole.d.ts.map +1 -0
  50. package/dist/tester/components/ParticipantList.d.ts +10 -0
  51. package/dist/tester/components/ParticipantList.d.ts.map +1 -0
  52. package/dist/tester/components/VideoGrid.d.ts +10 -0
  53. package/dist/tester/components/VideoGrid.d.ts.map +1 -0
  54. package/dist/tester/hooks/useTester.d.ts +54 -0
  55. package/dist/tester/hooks/useTester.d.ts.map +1 -0
  56. package/dist/tester/main.d.ts +3 -0
  57. package/dist/tester/main.d.ts.map +1 -0
  58. package/dist/types/index.d.ts +262 -0
  59. package/dist/types/index.d.ts.map +1 -0
  60. package/dist/utils/index.d.ts +50 -0
  61. package/dist/utils/index.d.ts.map +1 -0
  62. package/package.json +78 -0
@@ -0,0 +1,155 @@
1
+ /**
2
+ * PeersCaller - Main orchestrator class for multi-peer video calls
3
+ * Coordinates all components to provide a simple API for WebRTC calls
4
+ */
5
+ import { CallParticipant } from "./CallParticipant";
6
+ import { type CallStore } from "../store";
7
+ import { BaseStore } from "./BaseStore";
8
+ import type { PeersCallerConfig, PeersCallerCallbacks, RecordingConfig, RecordingData, CallStatusResponse } from "../types";
9
+ export declare class PeersCaller extends BaseStore<CallStore> {
10
+ private config;
11
+ private callbacks;
12
+ private socket;
13
+ private localParticipant;
14
+ private participants;
15
+ private recorder;
16
+ private iceServers;
17
+ private isInitialized;
18
+ private listenersSetup;
19
+ private eventListeners;
20
+ constructor(config: PeersCallerConfig, callbacks?: PeersCallerCallbacks);
21
+ /**
22
+ * Initialize the PeersCaller and establish WebSocket connection
23
+ */
24
+ initialize(): Promise<void>;
25
+ /**
26
+ * Start a new call
27
+ */
28
+ startCall(mediaConfig?: import("..").MediaStreamConfig | undefined): Promise<void>;
29
+ /**
30
+ * Join an existing call
31
+ */
32
+ joinCall(mediaConfig?: import("..").MediaStreamConfig | undefined): Promise<void>;
33
+ /**
34
+ * End the call and cleanup all resources
35
+ * This sends a request to the server to end the call for all participants
36
+ */
37
+ endCall(): Promise<void>;
38
+ /**
39
+ * Leave the call gracefully (with server acknowledgement)
40
+ */
41
+ leaveCall(): Promise<void>;
42
+ /**
43
+ * Toggle audio for local participant
44
+ */
45
+ toggleAudio(enabled: boolean): void;
46
+ /**
47
+ * Toggle video for local participant
48
+ */
49
+ toggleVideo(enabled: boolean): void;
50
+ /**
51
+ * Start screen sharing
52
+ */
53
+ startScreenShare(): Promise<void>;
54
+ /**
55
+ * Stop screen sharing
56
+ */
57
+ stopScreenShare(): Promise<void>;
58
+ /**
59
+ * Start recording the call
60
+ */
61
+ startRecording(recordingData: RecordingData, config?: RecordingConfig): Promise<void>;
62
+ /**
63
+ * Stop recording
64
+ */
65
+ stopRecording(): Promise<void>;
66
+ /**
67
+ * Get current call state
68
+ */
69
+ getCallState(): any;
70
+ /**
71
+ * Get local participant
72
+ */
73
+ getLocalParticipant(): CallParticipant | null;
74
+ /**
75
+ * Get all participants
76
+ */
77
+ getParticipants(): Map<string, CallParticipant>;
78
+ /**
79
+ * Get participant by user ID
80
+ */
81
+ getParticipant(userId: string): CallParticipant | undefined;
82
+ /**
83
+ * Get debug information about the current call state
84
+ */
85
+ getDebugInfo(): any;
86
+ /**
87
+ * Cleanup and disconnect
88
+ */
89
+ cleanup(): void;
90
+ /**
91
+ * Initialize local participant
92
+ */
93
+ private initializeLocalParticipant;
94
+ /**
95
+ * Setup WebSocket event listeners
96
+ */
97
+ private setupSocketListeners;
98
+ /**
99
+ * Clean up socket event listeners
100
+ */
101
+ private cleanupSocketListeners;
102
+ /**
103
+ * Handle participant joined
104
+ */
105
+ private handleParticipantJoined;
106
+ /**
107
+ * Check call status for the conversation
108
+ */
109
+ checkCallStatus(): Promise<CallStatusResponse>;
110
+ /**
111
+ * Handle WebRTC offer
112
+ */
113
+ private handleOffer;
114
+ /**
115
+ * Handle WebRTC answer
116
+ */
117
+ private handleAnswer;
118
+ /**
119
+ * Handle ICE candidate
120
+ */
121
+ private handleCandidate;
122
+ /**
123
+ * Handle participant state update
124
+ */
125
+ private handleParticipantStateUpdate;
126
+ /**
127
+ * Handle participant left
128
+ */
129
+ private handleParticipantLeft;
130
+ /**
131
+ * Handle call ended notification from server
132
+ */
133
+ private handleCallEnded;
134
+ /**
135
+ * Broadcast state update to all participants
136
+ */
137
+ private broadcastStateUpdate;
138
+ /**
139
+ * Handle call status change
140
+ */
141
+ private handleCallStatusChanged;
142
+ /**
143
+ * Cleanup all participants
144
+ */
145
+ private cleanupAllParticipants;
146
+ /**
147
+ * Handle errors with proper categorization
148
+ */
149
+ private handleError;
150
+ /**
151
+ * Forward WebRTC signaling data to the server
152
+ */
153
+ private forwardSignalToServer;
154
+ }
155
+ //# sourceMappingURL=PeersCaller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PeersCaller.d.ts","sourceRoot":"","sources":["../../src/core/PeersCaller.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EAGpB,eAAe,EACf,aAAa,EACb,kBAAkB,EAGnB,MAAM,UAAU,CAAC;AAElB,qBAAa,WAAY,SAAQ,SAAS,CAAC,SAAS,CAAC;IACnD,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAS;IAK/B,OAAO,CAAC,cAAc,CAA+C;gBAEzD,MAAM,EAAE,iBAAiB,EAAE,SAAS,GAAE,oBAAyB;IAoC3E;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BjC;;OAEG;IACG,SAAS,CAAC,WAAW,6CAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IAqErE;;OAEG;IACG,QAAQ,CAAC,WAAW,6CAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IA8EpE;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmC9B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA6ChC;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAWnC;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAWnC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBvC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBtC;;OAEG;IACG,cAAc,CAClB,aAAa,EAAE,aAAa,EAC5B,MAAM,CAAC,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC;IAgFhB;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBpC;;OAEG;IACH,YAAY,IAAI,GAAG;IAInB;;OAEG;IACH,mBAAmB,IAAI,eAAe,GAAG,IAAI;IAI7C;;OAEG;IACH,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC;IAI/C;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI3D;;OAEG;IACH,YAAY,IAAI,GAAG;IA6BnB;;OAEG;IACH,OAAO,IAAI,IAAI;IAyBf;;OAEG;YACW,0BAA0B;IAyBxC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgI5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAmB9B;;OAEG;YACW,uBAAuB;IA6ErC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAoCpD;;OAEG;YACW,WAAW;IAgCzB;;OAEG;YACW,YAAY;IAgC1B;;OAEG;YACW,eAAe;IAmC7B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAQpC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAgCvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAU/B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;OAEG;IACH,OAAO,CAAC,WAAW;IAMnB;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAgD9B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=CallEventEmitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallEventEmitter.d.ts","sourceRoot":"","sources":["../../src/events/CallEventEmitter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * React hooks for PeersCaller integration
3
+ * Provides easy-to-use React hooks for video call functionality
4
+ */
5
+ import { PeersCaller } from "../core/PeersCaller";
6
+ import { useCallStore } from "../store";
7
+ import type { PeersCallerConfig, PeersCallerCallbacks, CallParticipant, MediaStreamConfig, RecordingData } from "../types";
8
+ export interface UseVideoCallOptions extends PeersCallerConfig {
9
+ callbacks?: PeersCallerCallbacks;
10
+ autoInitialize?: boolean;
11
+ }
12
+ export interface UseVideoCallReturn {
13
+ initialize: () => Promise<void>;
14
+ startCall: (mediaConfig?: MediaStreamConfig) => Promise<void>;
15
+ joinCall: (mediaConfig?: MediaStreamConfig) => Promise<void>;
16
+ endCall: () => void;
17
+ toggleAudio: (enabled: boolean) => void;
18
+ toggleVideo: (enabled: boolean) => void;
19
+ startScreenShare: () => Promise<void>;
20
+ stopScreenShare: () => Promise<void>;
21
+ startRecording: (recordingData: RecordingData) => Promise<void>;
22
+ stopRecording: () => Promise<void>;
23
+ callState: ReturnType<typeof useCallStore.getState>;
24
+ participants: CallParticipant[];
25
+ localParticipant: CallParticipant | null;
26
+ isConnected: boolean;
27
+ isRecording: boolean;
28
+ error: string | null;
29
+ cleanup: () => void;
30
+ peersCaller: PeersCaller | null;
31
+ }
32
+ /**
33
+ * Main hook for video call functionality
34
+ */
35
+ export declare function useVideoCall(options: UseVideoCallOptions): UseVideoCallReturn;
36
+ /**
37
+ * Hook for accessing participant video streams
38
+ */
39
+ export declare function useParticipantVideo(userId: string): {
40
+ videoElement: HTMLVideoElement | null;
41
+ stream: MediaStream | null;
42
+ participant: CallParticipant;
43
+ };
44
+ /**
45
+ * Hook for call state management
46
+ */
47
+ export declare function useCallState(): {
48
+ conversationId: string;
49
+ participants: Record<string, CallParticipant>;
50
+ localParticipant: CallParticipant | null;
51
+ isCalling: boolean;
52
+ isRecording: boolean;
53
+ recordLoading: boolean;
54
+ callStatus: "idle" | "connecting" | "connected" | "disconnecting" | "failed";
55
+ error: string | null;
56
+ participantCount: number;
57
+ isConnected: boolean;
58
+ hasError: boolean;
59
+ };
60
+ /**
61
+ * Hook for media device management
62
+ */
63
+ export declare function useMediaDevices(): {
64
+ devices: {
65
+ videoDevices: MediaDeviceInfo[];
66
+ audioDevices: MediaDeviceInfo[];
67
+ };
68
+ permissions: {
69
+ camera: PermissionState | null;
70
+ microphone: PermissionState | null;
71
+ };
72
+ getDevices: () => Promise<void>;
73
+ checkPermissions: () => Promise<void>;
74
+ requestPermissions: () => Promise<boolean>;
75
+ };
76
+ /**
77
+ * Hook for browser compatibility checking
78
+ */
79
+ export declare function useBrowserSupport(): {
80
+ support: {
81
+ webRTC: boolean;
82
+ getUserMedia: boolean;
83
+ getDisplayMedia: boolean;
84
+ mediaRecorder: boolean;
85
+ speechRecognition: boolean;
86
+ };
87
+ isSupported: boolean;
88
+ unsupportedFeatures: string[];
89
+ };
90
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACd,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IAEjC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,OAAO,EAAE,MAAM,IAAI,CAAC;IAGpB,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAGrC,cAAc,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAGnC,SAAS,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpD,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,gBAAgB,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAGrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;CACjC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CAyJ7E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM;;;;EA2CjD;AAED;;GAEG;AACH,wBAAgB,YAAY;;;;;;;;;;;;EAkB3B;AAED;;GAEG;AACH,wBAAgB,eAAe;;sBAEb,eAAe,EAAE;sBACjB,eAAe,EAAE;;;gBAIvB,eAAe,GAAG,IAAI;oBAClB,eAAe,GAAG,IAAI;;;;;EAsFrC;AAED;;GAEG;AACH,wBAAgB,iBAAiB;;;;;;;;;;EAgChC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * PeersCaller - WebRTC multi-peer video call library
3
+ *
4
+ * A TypeScript-first, Vite-powered WebRTC library designed for multi-peer
5
+ * mesh video calls supporting up to 4 participants.
6
+ */
7
+ import "./polyfills";
8
+ export { PeersCaller } from "./core/PeersCaller";
9
+ export { CallSocket } from "./core/CallSocket";
10
+ export { CallMediaStream } from "./core/CallMediaStream";
11
+ export { CallPeerConnection } from "./core/CallPeerConnection";
12
+ export { CallParticipant } from "./core/CallParticipant";
13
+ export { CallRecorder } from "./core/CallRecorder";
14
+ export { useCallStore } from "./store";
15
+ export * from "./hooks";
16
+ export * from "./types";
17
+ export * from "./utils";
18
+ export * from "./store";
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,aAAa,CAAC;AAGrB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AASxB,cAAc,SAAS,CAAC"}