@aether-stack-dev/client-sdk 1.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 +257 -0
  2. package/dist/AStackCSRClient.d.ts +60 -0
  3. package/dist/AStackCSRClient.d.ts.map +1 -0
  4. package/dist/AStackClient.d.ts +90 -0
  5. package/dist/AStackClient.d.ts.map +1 -0
  6. package/dist/AStackEventSetup.d.ts +35 -0
  7. package/dist/AStackEventSetup.d.ts.map +1 -0
  8. package/dist/AStackMediaController.d.ts +34 -0
  9. package/dist/AStackMediaController.d.ts.map +1 -0
  10. package/dist/AnalyticsCollector.d.ts +63 -0
  11. package/dist/AnalyticsCollector.d.ts.map +1 -0
  12. package/dist/BillingMonitor.d.ts +35 -0
  13. package/dist/BillingMonitor.d.ts.map +1 -0
  14. package/dist/ConnectionStateManager.d.ts +48 -0
  15. package/dist/ConnectionStateManager.d.ts.map +1 -0
  16. package/dist/PerformanceMonitor.d.ts +34 -0
  17. package/dist/PerformanceMonitor.d.ts.map +1 -0
  18. package/dist/SecurityLogger.d.ts +30 -0
  19. package/dist/SecurityLogger.d.ts.map +1 -0
  20. package/dist/SessionManager.d.ts +20 -0
  21. package/dist/SessionManager.d.ts.map +1 -0
  22. package/dist/SupabaseSignalingClient.d.ts +35 -0
  23. package/dist/SupabaseSignalingClient.d.ts.map +1 -0
  24. package/dist/UsageTracker.d.ts +22 -0
  25. package/dist/UsageTracker.d.ts.map +1 -0
  26. package/dist/WebRTCManager.d.ts +26 -0
  27. package/dist/WebRTCManager.d.ts.map +1 -0
  28. package/dist/__tests__/setup.d.ts +32 -0
  29. package/dist/__tests__/setup.d.ts.map +1 -0
  30. package/dist/audio/AudioPlayer.d.ts +27 -0
  31. package/dist/audio/AudioPlayer.d.ts.map +1 -0
  32. package/dist/audio/index.d.ts +3 -0
  33. package/dist/audio/index.d.ts.map +1 -0
  34. package/dist/avatar/TalkingHeadAvatar.d.ts +9 -0
  35. package/dist/avatar/TalkingHeadAvatar.d.ts.map +1 -0
  36. package/dist/avatar/VRMAvatar.d.ts +10 -0
  37. package/dist/avatar/VRMAvatar.d.ts.map +1 -0
  38. package/dist/avatar/constants.d.ts +4 -0
  39. package/dist/avatar/constants.d.ts.map +1 -0
  40. package/dist/avatar/index.d.ts +7 -0
  41. package/dist/avatar/index.d.ts.map +1 -0
  42. package/dist/core.d.ts +14 -0
  43. package/dist/core.d.ts.map +1 -0
  44. package/dist/index.d.ts +22 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.esm.js +2245 -0
  47. package/dist/index.esm.js.map +1 -0
  48. package/dist/index.js +2258 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/react/index.d.ts +9 -0
  51. package/dist/react/index.d.ts.map +1 -0
  52. package/dist/react/useAStack.d.ts +34 -0
  53. package/dist/react/useAStack.d.ts.map +1 -0
  54. package/dist/react/useAStackCSR.d.ts +20 -0
  55. package/dist/react/useAStackCSR.d.ts.map +1 -0
  56. package/dist/react.esm.js +2871 -0
  57. package/dist/react.esm.js.map +1 -0
  58. package/dist/react.js +2895 -0
  59. package/dist/react.js.map +1 -0
  60. package/dist/types.d.ts +221 -0
  61. package/dist/types.d.ts.map +1 -0
  62. package/package.json +88 -0
@@ -0,0 +1,34 @@
1
+ import { EventEmitter } from 'eventemitter3';
2
+ import { PerformanceMetrics, PerformanceBenchmark } from './types';
3
+ export interface PerformanceMonitorConfig {
4
+ collectionInterval?: number;
5
+ apiEndpoint: string;
6
+ sessionId?: string;
7
+ enableAutoReport?: boolean;
8
+ reportingInterval?: number;
9
+ }
10
+ export declare class PerformanceMonitor extends EventEmitter {
11
+ private config;
12
+ private metrics;
13
+ private collectionTimer?;
14
+ private reportingTimer?;
15
+ private startTime;
16
+ private benchmarks;
17
+ private isCollecting;
18
+ constructor(config: PerformanceMonitorConfig);
19
+ private initializeMetrics;
20
+ startCollection(sessionId?: string): void;
21
+ stopCollection(): void;
22
+ recordLatency(type: 'signaling' | 'websocket' | 'audio' | 'webrtc' | 'video', latency: number): void;
23
+ updateThroughput(type: 'audio' | 'video' | 'data', direction: 'inbound' | 'outbound', bytesPerSecond: number): void;
24
+ updateQuality(quality: Partial<PerformanceMetrics['quality']>): void;
25
+ updateResources(resources: Partial<PerformanceMetrics['resources']>): void;
26
+ recordBenchmark(benchmark: Omit<PerformanceBenchmark, 'timestamp'>): void;
27
+ getMetrics(): PerformanceMetrics;
28
+ getBenchmarks(): PerformanceBenchmark[];
29
+ getLatencyStats(type?: 'signaling' | 'websocket' | 'audio' | 'webrtc' | 'video'): any;
30
+ reportMetrics(): Promise<void>;
31
+ private collectMetrics;
32
+ destroy(): void;
33
+ }
34
+ //# sourceMappingURL=PerformanceMonitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PerformanceMonitor.d.ts","sourceRoot":"","sources":["../src/PerformanceMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEnE,MAAM,WAAW,wBAAwB;IACvC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE,wBAAwB;IAc5C,OAAO,CAAC,iBAAiB;IAuBlB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAqBzC,cAAc,IAAI,IAAI;IAsBtB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAepG,gBAAgB,CACrB,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,EAChC,SAAS,EAAE,SAAS,GAAG,UAAU,EACjC,cAAc,EAAE,MAAM,GACrB,IAAI;IAOA,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI;IAIpE,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI;IAI1E,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,GAAG,IAAI;IAezE,UAAU,IAAI,kBAAkB;IAIhC,aAAa,IAAI,oBAAoB,EAAE;IAIvC,eAAe,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO;IAQzE,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B3C,OAAO,CAAC,cAAc;IAOf,OAAO,IAAI,IAAI;CAKvB"}
@@ -0,0 +1,30 @@
1
+ import { SecurityEvent } from './types';
2
+ export interface SecurityLoggerConfig {
3
+ apiEndpoint: string;
4
+ apiKey: string;
5
+ sessionId?: string;
6
+ organizationId?: string;
7
+ enableLocalLogging?: boolean;
8
+ batchSize?: number;
9
+ flushInterval?: number;
10
+ }
11
+ export declare class SecurityLogger {
12
+ private eventQueue;
13
+ private flushInterval?;
14
+ private config;
15
+ constructor(config: SecurityLoggerConfig);
16
+ setSessionId(sessionId: string): void;
17
+ logEvent(eventType: SecurityEvent['eventType'], severity: SecurityEvent['severity'], details: Record<string, any>): void;
18
+ logAuthFailure(reason: string, details?: Record<string, any>): void;
19
+ logRateLimit(limit: number, current: number, endpoint?: string): void;
20
+ logInvalidRequest(reason: string, request?: any): void;
21
+ logSessionHijackAttempt(details: Record<string, any>): void;
22
+ private sanitizeRequest;
23
+ private logToConsole;
24
+ private getConsoleLogLevel;
25
+ flush(): Promise<void>;
26
+ private startAutoFlush;
27
+ private stopAutoFlush;
28
+ destroy(): Promise<void>;
29
+ }
30
+ //# sourceMappingURL=SecurityLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecurityLogger.d.ts","sourceRoot":"","sources":["../src/SecurityLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,aAAa,CAAC,CAAiB;IACvC,OAAO,CAAC,MAAM,CAAiC;gBAEnC,MAAM,EAAE,oBAAoB;IAexC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC,QAAQ,CACN,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,EACrC,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,EACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,IAAI;IAyBP,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAOnE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IASrE,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAOtD,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAI3D,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,YAAY;IAGpB,OAAO,CAAC,kBAAkB;IAcpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB5B,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,aAAa;IAOf,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B"}
@@ -0,0 +1,20 @@
1
+ import { SessionCredentials, SessionCreateRequest, WorkerInfo } from './types';
2
+ export declare class SessionManager {
3
+ private apiEndpoint;
4
+ private sessionCredentials;
5
+ private workerInfo;
6
+ private expirationTimer;
7
+ private onSessionExpiring?;
8
+ private sessionExpirationWarning;
9
+ constructor(apiEndpoint: string, sessionExpirationWarning?: number, onSessionExpiring?: (minutesRemaining: number) => void);
10
+ createSession(request: SessionCreateRequest): Promise<SessionCredentials>;
11
+ renewSession(apiKey: string): Promise<SessionCredentials>;
12
+ private scheduleExpirationWarning;
13
+ getCredentials(): SessionCredentials | null;
14
+ isSessionValid(): boolean;
15
+ getTimeUntilExpiration(): number;
16
+ clearSession(): void;
17
+ getWorkerInfo(): WorkerInfo | null;
18
+ destroy(): void;
19
+ }
20
+ //# sourceMappingURL=SessionManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../src/SessionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAkD,UAAU,EAAE,MAAM,SAAS,CAAC;AAE/H,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,iBAAiB,CAAC,CAAqC;IAC/D,OAAO,CAAC,wBAAwB,CAAS;gBAGvC,WAAW,EAAE,MAAM,EACnB,wBAAwB,GAAE,MAAU,EACpC,iBAAiB,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI;IAOlD,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6DzE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAe/D,OAAO,CAAC,yBAAyB;IAuBjC,cAAc,IAAI,kBAAkB,GAAG,IAAI;IAI3C,cAAc,IAAI,OAAO;IAOzB,sBAAsB,IAAI,MAAM;IAQhC,YAAY,IAAI,IAAI;IASpB,aAAa,IAAI,UAAU,GAAG,IAAI;IAIlC,OAAO,IAAI,IAAI;CAGhB"}
@@ -0,0 +1,35 @@
1
+ import { EventEmitter } from 'eventemitter3';
2
+ import { AStackConfig } from './types';
3
+ export declare class SupabaseSignalingClient extends EventEmitter {
4
+ private supabase;
5
+ private channel;
6
+ private config;
7
+ private sessionId;
8
+ private channelName;
9
+ private wsToken;
10
+ private channelId;
11
+ private connected;
12
+ private reconnectAttempts;
13
+ private maxReconnectAttempts;
14
+ private reconnectDelay;
15
+ private heartbeatInterval;
16
+ constructor(config: AStackConfig);
17
+ connect(sessionId: string, channelName: string, wsToken: string): Promise<void>;
18
+ private handleSignalingMessage;
19
+ private handlePresenceSync;
20
+ private updateChannelStatus;
21
+ sendText(text: string): Promise<void>;
22
+ sendAudio(audioData: string, metadata?: Record<string, any>): Promise<void>;
23
+ sendControl(action: string, data?: Record<string, any>): Promise<void>;
24
+ private sendSignalingMessage;
25
+ sendTextMessage(text: string): void;
26
+ sendAudioData(audioBlob: Blob): void;
27
+ private startHeartbeat;
28
+ private stopHeartbeat;
29
+ private attemptReconnect;
30
+ leaveSession(): Promise<void>;
31
+ isConnected(): boolean;
32
+ getSessionId(): string | null;
33
+ disconnect(): Promise<void>;
34
+ }
35
+ //# sourceMappingURL=SupabaseSignalingClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SupabaseSignalingClient.d.ts","sourceRoot":"","sources":["../src/SupabaseSignalingClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,YAAY,EAA6C,MAAM,SAAS,CAAC;AAWlF,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,iBAAiB,CAAuB;gBAEpC,MAAM,EAAE,YAAY;IAmBnB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAsF9E,sBAAsB;IA+BpC,OAAO,CAAC,kBAAkB;YAeZ,mBAAmB;IAWpB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAIrE,oBAAoB;IA6B3B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAInC,aAAa,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI;IAS3C,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,aAAa;YAOP,gBAAgB;IA0BjB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IASnC,WAAW,IAAI,OAAO;IAItB,YAAY,IAAI,MAAM,GAAG,IAAI;IAIvB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAYzC"}
@@ -0,0 +1,22 @@
1
+ import { UsageMetrics } from './types';
2
+ export declare class UsageTracker {
3
+ private sessionId;
4
+ private startTime;
5
+ private endTime?;
6
+ private inputTokens;
7
+ private outputTokens;
8
+ private errorCount;
9
+ private qualityScores;
10
+ constructor(sessionId: string);
11
+ start(): void;
12
+ stop(): void;
13
+ trackInputTokens(tokens: number): void;
14
+ trackOutputTokens(tokens: number): void;
15
+ trackError(): void;
16
+ trackQualityScore(score: number): void;
17
+ getDuration(): number;
18
+ getAverageQualityScore(): number | undefined;
19
+ getMetrics(): UsageMetrics;
20
+ reset(): void;
21
+ }
22
+ //# sourceMappingURL=UsageTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UsageTracker.d.ts","sourceRoot":"","sources":["../src/UsageTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,OAAO,CAAC,CAAO;IACvB,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,aAAa,CAAgB;gBAEzB,SAAS,EAAE,MAAM;IAK7B,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAIZ,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAItC,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIvC,UAAU,IAAI,IAAI;IAIlB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMtC,WAAW,IAAI,MAAM;IAKrB,sBAAsB,IAAI,MAAM,GAAG,SAAS;IAM5C,UAAU,IAAI,YAAY;IAW1B,KAAK,IAAI,IAAI;CAQd"}
@@ -0,0 +1,26 @@
1
+ import { EventEmitter } from 'eventemitter3';
2
+ import { AStackConfig, MediaStreamInfo } from './types';
3
+ export declare class WebRTCManager extends EventEmitter {
4
+ private config;
5
+ private localStream;
6
+ constructor(config: AStackConfig);
7
+ initialize(): Promise<void>;
8
+ getStats(): Promise<any>;
9
+ getUserMedia(): Promise<MediaStream>;
10
+ addLocalStream(stream: MediaStream): Promise<void>;
11
+ removeLocalStream(streamId: string): void;
12
+ getLocalStreams(): MediaStreamInfo[];
13
+ getRemoteStreams(): MediaStreamInfo[];
14
+ getMediaDevices(): Promise<MediaDeviceInfo[]>;
15
+ switchAudioInput(deviceId: string): Promise<void>;
16
+ muteAudio(): void;
17
+ unmuteAudio(): void;
18
+ muteVideo(): void;
19
+ unmuteVideo(): void;
20
+ createOffer(): Promise<RTCSessionDescriptionInit>;
21
+ createAnswer(remoteSdp: string): Promise<RTCSessionDescriptionInit>;
22
+ handleAnswer(answer: RTCSessionDescriptionInit): Promise<void>;
23
+ addIceCandidate(candidate: RTCIceCandidateInit): Promise<void>;
24
+ close(): Promise<void>;
25
+ }
26
+ //# sourceMappingURL=WebRTCManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebRTCManager.d.ts","sourceRoot":"","sources":["../src/WebRTCManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAExD,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,WAAW,CAA4B;gBAEnC,MAAM,EAAE,YAAY;IAKnB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC;IAIxB,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC;IAWpC,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxD,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQzC,eAAe,IAAI,eAAe,EAAE;IAUpC,gBAAgB,IAAI,eAAe,EAAE;IAI/B,eAAe,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAI7C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWvD,SAAS,IAAI,IAAI;IAMjB,WAAW,IAAI,IAAI;IAMnB,SAAS,IAAI,IAAI;IAMjB,WAAW,IAAI,IAAI;IAMb,WAAW,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAKjD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAKnE,YAAY,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,eAAe,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAOpC"}
@@ -0,0 +1,32 @@
1
+ declare const createMockAudioTrack: () => {
2
+ kind: string;
3
+ id: string;
4
+ label: string;
5
+ enabled: boolean;
6
+ muted: boolean;
7
+ readyState: string;
8
+ stop: jest.Mock<any, any, any>;
9
+ clone: jest.Mock<any, any, any>;
10
+ addEventListener: jest.Mock<any, any, any>;
11
+ removeEventListener: jest.Mock<any, any, any>;
12
+ };
13
+ declare class MockMediaStream {
14
+ id: string;
15
+ active: boolean;
16
+ audioTracks: any[];
17
+ videoTracks: any[];
18
+ constructor(constraints?: {});
19
+ }
20
+ declare const mockMediaStreamTrack: {
21
+ kind: string;
22
+ id: string;
23
+ label: string;
24
+ enabled: boolean;
25
+ muted: boolean;
26
+ readyState: string;
27
+ stop: jest.Mock<any, any, any>;
28
+ clone: jest.Mock<any, any, any>;
29
+ addEventListener: jest.Mock<any, any, any>;
30
+ removeEventListener: jest.Mock<any, any, any>;
31
+ };
32
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AAgCA,QAAA,MAAM,oBAAoB;;;;;;;;;;;CAWxB,CAAC;AAEH,cAAM,eAAe;IACnB,EAAE,SAAoB;IACtB,MAAM,UAAQ;IACd,WAAW,QAAM;IACjB,WAAW,QAAM;gBAEL,WAAW,KAAK;CAkC7B;AAID,QAAA,MAAM,oBAAoB;;;;;;;;;;;CAWzB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { EventEmitter } from 'eventemitter3';
2
+ export interface AudioChunk {
3
+ audio: ArrayBuffer;
4
+ blendshapes?: number[][];
5
+ }
6
+ export interface AudioPlayerEvents {
7
+ blendshapeUpdate: (blendshapes: number[]) => void;
8
+ playbackStarted: () => void;
9
+ playbackEnded: () => void;
10
+ queueEmpty: () => void;
11
+ error: (error: Error) => void;
12
+ }
13
+ export declare class AudioPlayer extends EventEmitter<AudioPlayerEvents> {
14
+ private audioContext;
15
+ private audioQueue;
16
+ private isPlaying;
17
+ private sampleRate;
18
+ constructor(sampleRate?: number);
19
+ private ensureAudioContext;
20
+ enqueue(chunk: AudioChunk): void;
21
+ clearQueue(): void;
22
+ private playNext;
23
+ private generateAmplitudeBlendshapes;
24
+ private playChunk;
25
+ destroy(): Promise<void>;
26
+ }
27
+ //# sourceMappingURL=AudioPlayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioPlayer.d.ts","sourceRoot":"","sources":["../../src/audio/AudioPlayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAClD,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC/B;AAED,qBAAa,WAAY,SAAQ,YAAY,CAAC,iBAAiB,CAAC;IAC9D,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,SAAQ;YAKhB,kBAAkB;IAUzB,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAShC,UAAU,IAAI,IAAI;YAMX,QAAQ;IAWtB,OAAO,CAAC,4BAA4B;YA8BtB,SAAS;IAyEV,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAQtC"}
@@ -0,0 +1,3 @@
1
+ export { AudioPlayer } from './AudioPlayer';
2
+ export type { AudioChunk, AudioPlayerEvents } from './AudioPlayer';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/audio/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,9 @@
1
+ export interface TalkingHeadAvatarProps {
2
+ blendshapes: number[];
3
+ width?: number;
4
+ height?: number;
5
+ avatarUrl?: string;
6
+ }
7
+ export declare function TalkingHeadAvatar({ blendshapes, width, height, avatarUrl }: TalkingHeadAvatarProps): import("react/jsx-runtime").JSX.Element;
8
+ export default TalkingHeadAvatar;
9
+ //# sourceMappingURL=TalkingHeadAvatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TalkingHeadAvatar.d.ts","sourceRoot":"","sources":["../../src/avatar/TalkingHeadAvatar.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,WAAW,EACX,KAAW,EACX,MAAY,EACZ,SAA0M,EAC3M,EAAE,sBAAsB,2CAuKxB;AAED,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface VRMAvatarProps {
2
+ blendshapes: number[];
3
+ width?: number;
4
+ height?: number;
5
+ modelUrl?: string;
6
+ backgroundColor?: number;
7
+ }
8
+ export declare function VRMAvatar({ blendshapes, width, height, modelUrl, backgroundColor }: VRMAvatarProps): import("react/jsx-runtime").JSX.Element;
9
+ export default VRMAvatar;
10
+ //# sourceMappingURL=VRMAvatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VRMAvatar.d.ts","sourceRoot":"","sources":["../../src/avatar/VRMAvatar.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,SAAS,CAAC,EACxB,WAAW,EACX,KAAW,EACX,MAAY,EACZ,QAA+B,EAC/B,eAA0B,EAC3B,EAAE,cAAc,2CAyNhB;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const ARKIT_BLENDSHAPES: readonly ["jawOpen", "jawForward", "jawLeft", "jawRight", "mouthClose", "mouthFunnel", "mouthPucker", "mouthLeft", "mouthRight", "mouthSmileLeft", "mouthSmileRight", "mouthFrownLeft", "mouthFrownRight", "mouthDimpleLeft", "mouthDimpleRight", "mouthStretchLeft", "mouthStretchRight", "mouthRollLower", "mouthRollUpper", "mouthShrugLower", "mouthShrugUpper", "mouthPressLeft", "mouthPressRight", "mouthLowerDownLeft", "mouthLowerDownRight", "mouthUpperUpLeft", "mouthUpperUpRight", "tongueOut", "cheekPuff", "cheekSquintLeft", "cheekSquintRight", "noseSneerLeft", "noseSneerRight", "eyeBlinkLeft", "eyeBlinkRight", "eyeLookDownLeft", "eyeLookDownRight", "eyeLookInLeft", "eyeLookInRight", "eyeLookOutLeft", "eyeLookOutRight", "eyeLookUpLeft", "eyeLookUpRight", "eyeSquintLeft", "eyeSquintRight", "eyeWideLeft", "eyeWideRight", "browDownLeft", "browDownRight", "browInnerUp", "browOuterUpLeft", "browOuterUpRight"];
2
+ export type ARKitBlendshapeName = typeof ARKIT_BLENDSHAPES[number];
3
+ export declare const BLENDSHAPE_COUNT = 52;
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/avatar/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,i5BAgBpB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAEnE,eAAO,MAAM,gBAAgB,KAAK,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { VRMAvatar } from './VRMAvatar';
2
+ export type { VRMAvatarProps } from './VRMAvatar';
3
+ export { TalkingHeadAvatar } from './TalkingHeadAvatar';
4
+ export type { TalkingHeadAvatarProps } from './TalkingHeadAvatar';
5
+ export { ARKIT_BLENDSHAPES, BLENDSHAPE_COUNT } from './constants';
6
+ export type { ARKitBlendshapeName } from './constants';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/avatar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
package/dist/core.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ import { AStackClient } from './AStackClient';
2
+ import { WebRTCManager } from './WebRTCManager';
3
+ import { SupabaseSignalingClient } from './SupabaseSignalingClient';
4
+ export { AStackClient, WebRTCManager, SupabaseSignalingClient };
5
+ export { AStackCSRClient } from './AStackCSRClient';
6
+ export type { AStackCSRConfig, AStackCSREvents, CallStatus } from './AStackCSRClient';
7
+ export { AudioPlayer } from './audio/AudioPlayer';
8
+ export type { AudioChunk, AudioPlayerEvents } from './audio/AudioPlayer';
9
+ export { ARKIT_BLENDSHAPES, BLENDSHAPE_COUNT } from './avatar/constants';
10
+ export type { ARKitBlendshapeName } from './avatar/constants';
11
+ export type { AStackConfig, SessionStatus, MediaStreamInfo, MediaDeviceInfo, AIResponse, SignalingMessage, ConnectionStats, AStackEvents, AStackEventName, AStackEventHandler } from './types';
12
+ export { AStackError, ErrorCodes } from './types';
13
+ export default AStackClient;
14
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEtF,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,YAAY,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EACf,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAElD,eAAe,YAAY,CAAC"}
@@ -0,0 +1,22 @@
1
+ export { AStackClient } from './AStackClient';
2
+ export { SupabaseSignalingClient } from './SupabaseSignalingClient';
3
+ export { SessionManager } from './SessionManager';
4
+ export { UsageTracker } from './UsageTracker';
5
+ export { BillingMonitor } from './BillingMonitor';
6
+ export { SecurityLogger } from './SecurityLogger';
7
+ export { ConnectionStateManager } from './ConnectionStateManager';
8
+ export type { ConnectionState, ConnectionQuality } from './ConnectionStateManager';
9
+ export { PerformanceMonitor } from './PerformanceMonitor';
10
+ export { AnalyticsCollector } from './AnalyticsCollector';
11
+ export type { AnalyticsEvent, SessionAnalytics } from './AnalyticsCollector';
12
+ export { AStackCSRClient } from './AStackCSRClient';
13
+ export type { AStackCSRConfig, AStackCSREvents, CallStatus } from './AStackCSRClient';
14
+ export { AudioPlayer } from './audio/AudioPlayer';
15
+ export type { AudioChunk, AudioPlayerEvents } from './audio/AudioPlayer';
16
+ export { ARKIT_BLENDSHAPES, BLENDSHAPE_COUNT } from './avatar/constants';
17
+ export type { ARKitBlendshapeName } from './avatar/constants';
18
+ export type { AStackConfig, SessionStatus, SessionCredentials, SessionCreateRequest, SessionCreateResponse, UsageMetrics, BillingInfo, SecurityEvent, MediaStreamInfo, MediaDeviceInfo, AIResponse, SignalingMessage, ConnectionStats, AStackEvents, AStackEventName, AStackEventHandler, PerformanceMetrics, PerformanceBenchmark, LatencyMetric, WorkerPreferences, WorkerInfo } from './types';
19
+ export { AStackError, ErrorCodes } from './types';
20
+ import { AStackClient as DefaultAStackClient } from './AStackClient';
21
+ export default DefaultAStackClient;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEtF,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,YAAY,EACV,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,eAAe,EACf,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,UAAU,EACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAElD,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrE,eAAe,mBAAmB,CAAC"}