@waitaya.buc/client-js 0.1.0-alpha.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 +179 -0
- package/dist/adapters/livekit/api/recording.api.d.ts +15 -0
- package/dist/adapters/livekit/api/recording.api.d.ts.map +1 -0
- package/dist/adapters/livekit/api/recording.api.js +61 -0
- package/dist/adapters/livekit/api/recording.api.js.map +1 -0
- package/dist/adapters/livekit/index.d.ts +18 -0
- package/dist/adapters/livekit/index.d.ts.map +1 -0
- package/dist/adapters/livekit/index.js +26 -0
- package/dist/adapters/livekit/index.js.map +1 -0
- package/dist/adapters/livekit/livekit.adapter.d.ts +85 -0
- package/dist/adapters/livekit/livekit.adapter.d.ts.map +1 -0
- package/dist/adapters/livekit/livekit.adapter.js +531 -0
- package/dist/adapters/livekit/livekit.adapter.js.map +1 -0
- package/dist/adapters/livekit/livekit.mapper.d.ts +36 -0
- package/dist/adapters/livekit/livekit.mapper.d.ts.map +1 -0
- package/dist/adapters/livekit/livekit.mapper.js +108 -0
- package/dist/adapters/livekit/livekit.mapper.js.map +1 -0
- package/dist/adapters/livekit/livekit.types.d.ts +22 -0
- package/dist/adapters/livekit/livekit.types.d.ts.map +1 -0
- package/dist/adapters/livekit/livekit.types.js +10 -0
- package/dist/adapters/livekit/livekit.types.js.map +1 -0
- package/dist/adapters/livekit/service-adapters/index.d.ts +4 -0
- package/dist/adapters/livekit/service-adapters/index.d.ts.map +1 -0
- package/dist/adapters/livekit/service-adapters/index.js +4 -0
- package/dist/adapters/livekit/service-adapters/index.js.map +1 -0
- package/dist/adapters/livekit/service-adapters/recording.adapter.d.ts +19 -0
- package/dist/adapters/livekit/service-adapters/recording.adapter.d.ts.map +1 -0
- package/dist/adapters/livekit/service-adapters/recording.adapter.js +30 -0
- package/dist/adapters/livekit/service-adapters/recording.adapter.js.map +1 -0
- package/dist/adapters/livekit/service-adapters/stats.adapter.d.ts +21 -0
- package/dist/adapters/livekit/service-adapters/stats.adapter.d.ts.map +1 -0
- package/dist/adapters/livekit/service-adapters/stats.adapter.js +54 -0
- package/dist/adapters/livekit/service-adapters/stats.adapter.js.map +1 -0
- package/dist/adapters/livekit/service-adapters/track-attachment.adapter.d.ts +79 -0
- package/dist/adapters/livekit/service-adapters/track-attachment.adapter.d.ts.map +1 -0
- package/dist/adapters/livekit/service-adapters/track-attachment.adapter.js +348 -0
- package/dist/adapters/livekit/service-adapters/track-attachment.adapter.js.map +1 -0
- package/dist/adapters/livekit/services/index.d.ts +3 -0
- package/dist/adapters/livekit/services/index.d.ts.map +1 -0
- package/dist/adapters/livekit/services/index.js +3 -0
- package/dist/adapters/livekit/services/index.js.map +1 -0
- package/dist/adapters/livekit/services/recording.service.d.ts +29 -0
- package/dist/adapters/livekit/services/recording.service.d.ts.map +1 -0
- package/dist/adapters/livekit/services/recording.service.js +34 -0
- package/dist/adapters/livekit/services/recording.service.js.map +1 -0
- package/dist/adapters/livekit/services/stats.service.d.ts +24 -0
- package/dist/adapters/livekit/services/stats.service.d.ts.map +1 -0
- package/dist/adapters/livekit/services/stats.service.js +56 -0
- package/dist/adapters/livekit/services/stats.service.js.map +1 -0
- package/dist/core/api/auth.api.d.ts +52 -0
- package/dist/core/api/auth.api.d.ts.map +1 -0
- package/dist/core/api/auth.api.js +59 -0
- package/dist/core/api/auth.api.js.map +1 -0
- package/dist/core/api/http.d.ts +86 -0
- package/dist/core/api/http.d.ts.map +1 -0
- package/dist/core/api/http.js +146 -0
- package/dist/core/api/http.js.map +1 -0
- package/dist/core/errors/error-codes.d.ts +43 -0
- package/dist/core/errors/error-codes.d.ts.map +1 -0
- package/dist/core/errors/error-codes.js +42 -0
- package/dist/core/errors/error-codes.js.map +1 -0
- package/dist/core/errors/vroom.error.d.ts +99 -0
- package/dist/core/errors/vroom.error.d.ts.map +1 -0
- package/dist/core/errors/vroom.error.js +141 -0
- package/dist/core/errors/vroom.error.js.map +1 -0
- package/dist/core/ports/outbound/provider-adapter-factory.port.d.ts +41 -0
- package/dist/core/ports/outbound/provider-adapter-factory.port.d.ts.map +1 -0
- package/dist/core/ports/outbound/provider-adapter-factory.port.js +2 -0
- package/dist/core/ports/outbound/provider-adapter-factory.port.js.map +1 -0
- package/dist/core/ports/outbound/provider-adapter.port.d.ts +130 -0
- package/dist/core/ports/outbound/provider-adapter.port.d.ts.map +1 -0
- package/dist/core/ports/outbound/provider-adapter.port.js +2 -0
- package/dist/core/ports/outbound/provider-adapter.port.js.map +1 -0
- package/dist/core/ports/outbound/recording-adapter.port.d.ts +40 -0
- package/dist/core/ports/outbound/recording-adapter.port.d.ts.map +1 -0
- package/dist/core/ports/outbound/recording-adapter.port.js +2 -0
- package/dist/core/ports/outbound/recording-adapter.port.js.map +1 -0
- package/dist/core/ports/outbound/stats-adapter.port.d.ts +31 -0
- package/dist/core/ports/outbound/stats-adapter.port.d.ts.map +1 -0
- package/dist/core/ports/outbound/stats-adapter.port.js +2 -0
- package/dist/core/ports/outbound/stats-adapter.port.js.map +1 -0
- package/dist/core/ports/outbound/track-attachment-adapter.port.d.ts +86 -0
- package/dist/core/ports/outbound/track-attachment-adapter.port.d.ts.map +1 -0
- package/dist/core/ports/outbound/track-attachment-adapter.port.js +2 -0
- package/dist/core/ports/outbound/track-attachment-adapter.port.js.map +1 -0
- package/dist/core/provider-registry.d.ts +29 -0
- package/dist/core/provider-registry.d.ts.map +1 -0
- package/dist/core/provider-registry.js +45 -0
- package/dist/core/provider-registry.js.map +1 -0
- package/dist/core/services/base.service.d.ts +15 -0
- package/dist/core/services/base.service.d.ts.map +1 -0
- package/dist/core/services/base.service.js +10 -0
- package/dist/core/services/base.service.js.map +1 -0
- package/dist/core/services/recording.service.d.ts +50 -0
- package/dist/core/services/recording.service.d.ts.map +1 -0
- package/dist/core/services/recording.service.js +89 -0
- package/dist/core/services/recording.service.js.map +1 -0
- package/dist/core/services/stats.service.d.ts +32 -0
- package/dist/core/services/stats.service.d.ts.map +1 -0
- package/dist/core/services/stats.service.js +69 -0
- package/dist/core/services/stats.service.js.map +1 -0
- package/dist/core/session.d.ts +142 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +248 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/types/events.types.d.ts +263 -0
- package/dist/core/types/events.types.d.ts.map +1 -0
- package/dist/core/types/events.types.js +76 -0
- package/dist/core/types/events.types.js.map +1 -0
- package/dist/core/types/media.types.d.ts +81 -0
- package/dist/core/types/media.types.d.ts.map +1 -0
- package/dist/core/types/media.types.js +12 -0
- package/dist/core/types/media.types.js.map +1 -0
- package/dist/core/types/participant.types.d.ts +11 -0
- package/dist/core/types/participant.types.d.ts.map +1 -0
- package/dist/core/types/participant.types.js +2 -0
- package/dist/core/types/participant.types.js.map +1 -0
- package/dist/core/types/recording.types.d.ts +60 -0
- package/dist/core/types/recording.types.d.ts.map +1 -0
- package/dist/core/types/recording.types.js +7 -0
- package/dist/core/types/recording.types.js.map +1 -0
- package/dist/core/types/service-adapters.types.d.ts +46 -0
- package/dist/core/types/service-adapters.types.d.ts.map +1 -0
- package/dist/core/types/service-adapters.types.js +2 -0
- package/dist/core/types/service-adapters.types.js.map +1 -0
- package/dist/core/types/session.types.d.ts +57 -0
- package/dist/core/types/session.types.d.ts.map +1 -0
- package/dist/core/types/session.types.js +2 -0
- package/dist/core/types/session.types.js.map +1 -0
- package/dist/core/types/stats.types.d.ts +20 -0
- package/dist/core/types/stats.types.d.ts.map +1 -0
- package/dist/core/types/stats.types.js +7 -0
- package/dist/core/types/stats.types.js.map +1 -0
- package/dist/core/types/token.types.d.ts +82 -0
- package/dist/core/types/token.types.d.ts.map +1 -0
- package/dist/core/types/token.types.js +27 -0
- package/dist/core/types/token.types.js.map +1 -0
- package/dist/core/types/track.types.d.ts +39 -0
- package/dist/core/types/track.types.d.ts.map +1 -0
- package/dist/core/types/track.types.js +9 -0
- package/dist/core/types/track.types.js.map +1 -0
- package/dist/core/types/user.types.d.ts +23 -0
- package/dist/core/types/user.types.d.ts.map +1 -0
- package/dist/core/types/user.types.js +2 -0
- package/dist/core/types/user.types.js.map +1 -0
- package/dist/core/types/vroom.types.d.ts +86 -0
- package/dist/core/types/vroom.types.d.ts.map +1 -0
- package/dist/core/types/vroom.types.js +12 -0
- package/dist/core/types/vroom.types.js.map +1 -0
- package/dist/core/utils/token.d.ts +77 -0
- package/dist/core/utils/token.d.ts.map +1 -0
- package/dist/core/utils/token.js +127 -0
- package/dist/core/utils/token.js.map +1 -0
- package/dist/core/vroom.d.ts +90 -0
- package/dist/core/vroom.d.ts.map +1 -0
- package/dist/core/vroom.js +219 -0
- package/dist/core/vroom.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/react-native.d.ts +21 -0
- package/dist/react-native.d.ts.map +1 -0
- package/dist/react-native.js +32 -0
- package/dist/react-native.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { type VroomInitConfig } from './types/vroom.types';
|
|
2
|
+
import type { ConnectParams } from './types/session.types';
|
|
3
|
+
import { Session } from './session';
|
|
4
|
+
/**
|
|
5
|
+
* Vroom SDK main entry point.
|
|
6
|
+
*
|
|
7
|
+
* Static class for SDK initialization and session management.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* // Initialize SDK
|
|
12
|
+
* await Vroom.init({ apiKey: 'your-api-key' })
|
|
13
|
+
*
|
|
14
|
+
* // Connect to a room
|
|
15
|
+
* const session = await Vroom.connect({
|
|
16
|
+
* roomName: 'meeting-123',
|
|
17
|
+
* user: { id: 'user-1', displayName: 'Alice', role: 'host' },
|
|
18
|
+
* type: 'group',
|
|
19
|
+
* media: { audio: true, video: true }
|
|
20
|
+
* })
|
|
21
|
+
*
|
|
22
|
+
* // Disconnect
|
|
23
|
+
* await session.disconnect()
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare class Vroom {
|
|
27
|
+
private static config;
|
|
28
|
+
private static apiClient;
|
|
29
|
+
private static authToken;
|
|
30
|
+
private static platform;
|
|
31
|
+
private static mobileGlobalsReady;
|
|
32
|
+
private static initialized;
|
|
33
|
+
private static connecting;
|
|
34
|
+
/**
|
|
35
|
+
* Initialize SDK with configuration.
|
|
36
|
+
*
|
|
37
|
+
* Must be called before `connect()`. Validates API key with backend.
|
|
38
|
+
*
|
|
39
|
+
* For React Native (iOS/Android), this also initializes WebRTC globals
|
|
40
|
+
* automatically, so you don't need to initialize them manually.
|
|
41
|
+
*
|
|
42
|
+
* @throws {BadRequestError} If API key is missing
|
|
43
|
+
* @throws {InvalidApiKeyError} If API key validation fails
|
|
44
|
+
* @throws {NetworkError} If backend is unreachable
|
|
45
|
+
*/
|
|
46
|
+
static init(config: VroomInitConfig): Promise<typeof Vroom>;
|
|
47
|
+
/**
|
|
48
|
+
* Connect to a room and create a session.
|
|
49
|
+
*
|
|
50
|
+
* @throws {BadRequestError} If SDK is not initialized or connection already in progress
|
|
51
|
+
* @throws {NetworkError} If connection fails
|
|
52
|
+
*/
|
|
53
|
+
static connect(params: ConnectParams): Promise<Session>;
|
|
54
|
+
/**
|
|
55
|
+
* Get SDK instance (if initialized)
|
|
56
|
+
*/
|
|
57
|
+
static getInstance(): typeof Vroom | null;
|
|
58
|
+
/**
|
|
59
|
+
* Get current configuration
|
|
60
|
+
*/
|
|
61
|
+
static getConfig(): VroomInitConfig | null;
|
|
62
|
+
/**
|
|
63
|
+
* Reset SDK to initial state
|
|
64
|
+
*/
|
|
65
|
+
static reset(): void;
|
|
66
|
+
/**
|
|
67
|
+
* Create adapter based on provider name using registered factory.
|
|
68
|
+
*/
|
|
69
|
+
private static createAdapter;
|
|
70
|
+
/**
|
|
71
|
+
* Detect platform information.
|
|
72
|
+
* Uses provided override or auto-detects from environment.
|
|
73
|
+
*
|
|
74
|
+
* @param override - Explicit platform info (required for iOS/Android)
|
|
75
|
+
* @returns Platform info for API key validation
|
|
76
|
+
* @throws {BadRequestError} If platform cannot be detected in non-browser environment
|
|
77
|
+
*/
|
|
78
|
+
private static detectPlatform;
|
|
79
|
+
/**
|
|
80
|
+
* Setup required globals for React Native runtimes.
|
|
81
|
+
*
|
|
82
|
+
* Ensures WebRTC + TextEncoder/TextDecoder are ready before adapters/components use them.
|
|
83
|
+
*/
|
|
84
|
+
private static setupReactNativePolyfills;
|
|
85
|
+
/**
|
|
86
|
+
* Log message based on config
|
|
87
|
+
*/
|
|
88
|
+
private static log;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=vroom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vroom.d.ts","sourceRoot":"","sources":["../../src/core/vroom.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EAKrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAG1D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAC,MAAM,CAA+B;IACpD,OAAO,CAAC,MAAM,CAAC,SAAS,CAA8B;IACtD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAsB;IAC9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAwB;IAC/C,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAQ;IACzC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAQ;IAClC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAQ;IAEjC;;;;;;;;;;;OAWG;WACU,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,KAAK,CAAC;IAmCjE;;;;;OAKG;WACU,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IA8C7D;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,OAAO,KAAK,GAAG,IAAI;IAIzC;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI,eAAe,GAAG,IAAI;IAI1C;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAapB;;OAEG;mBACkB,aAAa;IAqBlC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAuB7B;;;;OAIG;mBACkB,yBAAyB;IAgB9C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,GAAG;CAkBnB"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { DEFAULT_VROOM_ENDPOINT, } from './types/vroom.types';
|
|
2
|
+
import { Session } from './session';
|
|
3
|
+
import { BadRequestError, VroomError } from './errors/vroom.error';
|
|
4
|
+
import { ErrorCodes } from './errors/error-codes';
|
|
5
|
+
import { VroomApiClient } from './api/auth.api';
|
|
6
|
+
import { getProviderFactory } from './provider-registry';
|
|
7
|
+
/**
|
|
8
|
+
* Vroom SDK main entry point.
|
|
9
|
+
*
|
|
10
|
+
* Static class for SDK initialization and session management.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // Initialize SDK
|
|
15
|
+
* await Vroom.init({ apiKey: 'your-api-key' })
|
|
16
|
+
*
|
|
17
|
+
* // Connect to a room
|
|
18
|
+
* const session = await Vroom.connect({
|
|
19
|
+
* roomName: 'meeting-123',
|
|
20
|
+
* user: { id: 'user-1', displayName: 'Alice', role: 'host' },
|
|
21
|
+
* type: 'group',
|
|
22
|
+
* media: { audio: true, video: true }
|
|
23
|
+
* })
|
|
24
|
+
*
|
|
25
|
+
* // Disconnect
|
|
26
|
+
* await session.disconnect()
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export class Vroom {
|
|
30
|
+
/**
|
|
31
|
+
* Initialize SDK with configuration.
|
|
32
|
+
*
|
|
33
|
+
* Must be called before `connect()`. Validates API key with backend.
|
|
34
|
+
*
|
|
35
|
+
* For React Native (iOS/Android), this also initializes WebRTC globals
|
|
36
|
+
* automatically, so you don't need to initialize them manually.
|
|
37
|
+
*
|
|
38
|
+
* @throws {BadRequestError} If API key is missing
|
|
39
|
+
* @throws {InvalidApiKeyError} If API key validation fails
|
|
40
|
+
* @throws {NetworkError} If backend is unreachable
|
|
41
|
+
*/
|
|
42
|
+
static async init(config) {
|
|
43
|
+
// Validate config
|
|
44
|
+
if (!config.apiKey) {
|
|
45
|
+
throw new BadRequestError('API key is required');
|
|
46
|
+
}
|
|
47
|
+
// Use provided platform info or auto-detect
|
|
48
|
+
const platformInfo = this.detectPlatform(config.platformInfo);
|
|
49
|
+
// For React Native (iOS/Android), initialize WebRTC globals early
|
|
50
|
+
// This must happen before any component that uses WebRTC renders
|
|
51
|
+
if (platformInfo.platform === 'ios' || platformInfo.platform === 'android') {
|
|
52
|
+
await this.setupReactNativePolyfills();
|
|
53
|
+
}
|
|
54
|
+
// Create internal config with platform info
|
|
55
|
+
const internalConfig = {
|
|
56
|
+
...config,
|
|
57
|
+
platformInfo,
|
|
58
|
+
};
|
|
59
|
+
// Store config, platform, and create API client
|
|
60
|
+
this.config = config;
|
|
61
|
+
this.platform = platformInfo.platform;
|
|
62
|
+
this.apiClient = new VroomApiClient(config);
|
|
63
|
+
// POST /v1/auth/init - Validate API key and get authToken
|
|
64
|
+
const response = await this.apiClient.authInit(internalConfig);
|
|
65
|
+
this.authToken = response.authToken;
|
|
66
|
+
this.initialized = true;
|
|
67
|
+
this.log('info', 'Vroom SDK initialized');
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Connect to a room and create a session.
|
|
72
|
+
*
|
|
73
|
+
* @throws {BadRequestError} If SDK is not initialized or connection already in progress
|
|
74
|
+
* @throws {NetworkError} If connection fails
|
|
75
|
+
*/
|
|
76
|
+
static async connect(params) {
|
|
77
|
+
if (!this.initialized || !this.config || !this.apiClient || !this.authToken) {
|
|
78
|
+
throw new BadRequestError('Vroom SDK not initialized. Call Vroom.init() first.');
|
|
79
|
+
}
|
|
80
|
+
if (this.connecting) {
|
|
81
|
+
throw new BadRequestError('Connection already in progress. Await the current connect() before starting another.');
|
|
82
|
+
}
|
|
83
|
+
this.connecting = true;
|
|
84
|
+
try {
|
|
85
|
+
this.log('info', `Connecting to room: ${params.roomName}`);
|
|
86
|
+
// POST /v1/rtc/token - Get provider-specific token for room
|
|
87
|
+
const tokenResponse = await this.apiClient.getRtcToken({
|
|
88
|
+
authToken: this.authToken,
|
|
89
|
+
userId: params.user.id,
|
|
90
|
+
roomName: params.roomName,
|
|
91
|
+
role: params.user.role,
|
|
92
|
+
});
|
|
93
|
+
// Create service context for backend API calls
|
|
94
|
+
const serviceContext = {
|
|
95
|
+
sessionToken: tokenResponse.sessionToken,
|
|
96
|
+
apiEndpoint: this.config.endpoint ?? DEFAULT_VROOM_ENDPOINT,
|
|
97
|
+
};
|
|
98
|
+
// Create adapter based on provider (async to allow platform-specific setup)
|
|
99
|
+
const adapter = await this.createAdapter(tokenResponse.provider, serviceContext);
|
|
100
|
+
// Create session with sessionToken for permission checking
|
|
101
|
+
const session = new Session(adapter, params, tokenResponse.sessionToken);
|
|
102
|
+
// Connect
|
|
103
|
+
await session._connect(tokenResponse.token, tokenResponse.endpoint);
|
|
104
|
+
this.log('info', `Connected to room: ${params.roomName}`);
|
|
105
|
+
return session;
|
|
106
|
+
}
|
|
107
|
+
finally {
|
|
108
|
+
this.connecting = false;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get SDK instance (if initialized)
|
|
113
|
+
*/
|
|
114
|
+
static getInstance() {
|
|
115
|
+
return this.initialized ? this : null;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Get current configuration
|
|
119
|
+
*/
|
|
120
|
+
static getConfig() {
|
|
121
|
+
return this.config;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Reset SDK to initial state
|
|
125
|
+
*/
|
|
126
|
+
static reset() {
|
|
127
|
+
this.config = null;
|
|
128
|
+
this.apiClient = null;
|
|
129
|
+
this.authToken = null;
|
|
130
|
+
this.platform = null;
|
|
131
|
+
this.mobileGlobalsReady = false;
|
|
132
|
+
this.initialized = false;
|
|
133
|
+
this.connecting = false;
|
|
134
|
+
this.log('info', 'Vroom SDK reset');
|
|
135
|
+
}
|
|
136
|
+
// ============ Private Methods ============
|
|
137
|
+
/**
|
|
138
|
+
* Create adapter based on provider name using registered factory.
|
|
139
|
+
*/
|
|
140
|
+
static async createAdapter(provider, serviceContext) {
|
|
141
|
+
const factory = getProviderFactory(provider);
|
|
142
|
+
if (!factory) {
|
|
143
|
+
throw new VroomError(ErrorCodes.E_UNSUPPORTED_PROVIDER, `Provider "${provider}" is not registered. ` +
|
|
144
|
+
`Call registerProvider() before Vroom.connect(), or import the provider adapter.`);
|
|
145
|
+
}
|
|
146
|
+
// Platform is required at this point (set during init)
|
|
147
|
+
if (!this.platform) {
|
|
148
|
+
throw new BadRequestError('Platform not detected. Call Vroom.init() first.');
|
|
149
|
+
}
|
|
150
|
+
return await factory.create(serviceContext, this.platform);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Detect platform information.
|
|
154
|
+
* Uses provided override or auto-detects from environment.
|
|
155
|
+
*
|
|
156
|
+
* @param override - Explicit platform info (required for iOS/Android)
|
|
157
|
+
* @returns Platform info for API key validation
|
|
158
|
+
* @throws {BadRequestError} If platform cannot be detected in non-browser environment
|
|
159
|
+
*/
|
|
160
|
+
static detectPlatform(override) {
|
|
161
|
+
// Use explicit override if provided (required for iOS/Android)
|
|
162
|
+
if (override) {
|
|
163
|
+
return override;
|
|
164
|
+
}
|
|
165
|
+
// Web platform - auto-detect domain from window.location
|
|
166
|
+
if (typeof window !== 'undefined' && window.location) {
|
|
167
|
+
return {
|
|
168
|
+
platform: 'web',
|
|
169
|
+
domain: window.location.hostname,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
// Non-browser environment without override
|
|
173
|
+
throw new BadRequestError('Cannot auto-detect platform in non-browser environment. ' +
|
|
174
|
+
'Please provide platformInfo in Vroom.init() config:\n' +
|
|
175
|
+
' - iOS: { platform: "ios", bundleId: "com.example.app" }\n' +
|
|
176
|
+
' - Android: { platform: "android", packageName: "com.example.app" }');
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Setup required globals for React Native runtimes.
|
|
180
|
+
*
|
|
181
|
+
* Ensures WebRTC + TextEncoder/TextDecoder are ready before adapters/components use them.
|
|
182
|
+
*/
|
|
183
|
+
static async setupReactNativePolyfills() {
|
|
184
|
+
if (this.mobileGlobalsReady)
|
|
185
|
+
return;
|
|
186
|
+
try {
|
|
187
|
+
const { registerWebRTCGlobals } = await import('../react-native');
|
|
188
|
+
await registerWebRTCGlobals();
|
|
189
|
+
this.mobileGlobalsReady = true;
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
throw new VroomError(ErrorCodes.E_PLATFORM_MISMATCH, 'Failed to initialize React Native WebRTC globals. Ensure WebRTC polyfills are installed.', error);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Log message based on config
|
|
197
|
+
*/
|
|
198
|
+
static log(level, message, context) {
|
|
199
|
+
const logger = this.config?.logger;
|
|
200
|
+
if (logger?.handler) {
|
|
201
|
+
logger.handler(level, message, context);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
// Default console logging
|
|
205
|
+
const logLevel = logger?.level ?? 'info';
|
|
206
|
+
const levels = ['debug', 'info', 'warn', 'error'];
|
|
207
|
+
if (levels.indexOf(level) >= levels.indexOf(logLevel)) {
|
|
208
|
+
console[level](`[Vroom] ${message}`, context ?? '');
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
Vroom.config = null;
|
|
213
|
+
Vroom.apiClient = null;
|
|
214
|
+
Vroom.authToken = null;
|
|
215
|
+
Vroom.platform = null;
|
|
216
|
+
Vroom.mobileGlobalsReady = false;
|
|
217
|
+
Vroom.initialized = false;
|
|
218
|
+
Vroom.connecting = false;
|
|
219
|
+
//# sourceMappingURL=vroom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vroom.js","sourceRoot":"","sources":["../../src/core/vroom.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export { Vroom } from './core/vroom';
|
|
2
|
+
export { Session } from './core/session';
|
|
3
|
+
export { registerProvider } from './core/provider-registry';
|
|
4
|
+
import './adapters/livekit';
|
|
5
|
+
export type { User } from './core/types/user.types';
|
|
6
|
+
export type { UserRole } from './core/types/user.types';
|
|
7
|
+
export type { ConnectParams, SessionType, SessionState, SessionOptions, ReconnectPolicy, } from './core/types/session.types';
|
|
8
|
+
export type { Participant } from './core/types/participant.types';
|
|
9
|
+
export type { Track } from './core/types/track.types';
|
|
10
|
+
export { TrackKind } from './core/types/track.types';
|
|
11
|
+
export type { MediaOptions, AudioConstraints, VideoConstraints, SwitchDeviceOptions, ScreenShareOptions, } from './core/types/media.types';
|
|
12
|
+
export { DeviceKind } from './core/types/media.types';
|
|
13
|
+
export type { NetworkQuality, DisconnectReason, ParticipantEvent, TrackEvent, TrackEnabledEvent, ActiveSpeakerEvent, NetworkQualityEvent, ConnectedEvent, DisconnectedEvent, ReconnectingEvent, ReconnectedEvent, ErrorEvent, ScreenShareStartedEvent, ScreenShareStoppedEvent, ActiveDeviceChangedEvent, SessionEventName, EventHandlers, } from './core/types/events.types';
|
|
14
|
+
export { SessionEvent } from './core/types/events.types';
|
|
15
|
+
export type { VroomInitConfig, LoggerConfig, LogLevel, ProviderType, } from './core/types/vroom.types';
|
|
16
|
+
export { Provider } from './core/types/vroom.types';
|
|
17
|
+
export { StatsEvent } from './core/types/stats.types';
|
|
18
|
+
export { RecordingEvent } from './core/types/recording.types';
|
|
19
|
+
export type { RecordingLayout, RecordingStartOptions, RecordingStatus, RecordingStatusEvent, RecordingState, } from './core/types/recording.types';
|
|
20
|
+
export type { TrackAttachmentAdapter } from './core/ports/outbound/track-attachment-adapter.port';
|
|
21
|
+
export type { ProviderAdapterFactory } from './core/ports/outbound/provider-adapter-factory.port';
|
|
22
|
+
export { VroomError, BadRequestError, InvalidApiKeyError, UnauthorizedError, PlatformMismatchError, NetworkError, TimeoutError, ServiceError, PermissionDeniedError, UnsupportedFeatureError, RecordingStartError, NotFoundError, ConflictError, } from './core/errors/vroom.error';
|
|
23
|
+
export { ErrorCodes } from './core/errors/error-codes';
|
|
24
|
+
export type { ErrorCode } from './core/errors/error-codes';
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAI3D,OAAO,oBAAoB,CAAA;AAG3B,YAAY,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AACnD,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,YAAY,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,cAAc,EACd,eAAe,GAChB,MAAM,4BAA4B,CAAA;AACnC,YAAY,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AACjE,YAAY,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,EAChB,aAAa,GACd,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,YAAY,EACV,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,YAAY,GACb,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,cAAc,GACf,MAAM,8BAA8B,CAAA;AACrC,YAAY,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAA;AACjG,YAAY,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAA;AAGjG,OAAO,EACL,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,aAAa,GACd,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// ============ Core ============
|
|
2
|
+
export { Vroom } from './core/vroom';
|
|
3
|
+
export { Session } from './core/session';
|
|
4
|
+
export { registerProvider } from './core/provider-registry';
|
|
5
|
+
// ============ Adapters ============
|
|
6
|
+
// Import to auto-register LiveKit provider
|
|
7
|
+
import './adapters/livekit';
|
|
8
|
+
export { TrackKind } from './core/types/track.types';
|
|
9
|
+
export { DeviceKind } from './core/types/media.types';
|
|
10
|
+
export { SessionEvent } from './core/types/events.types';
|
|
11
|
+
export { Provider } from './core/types/vroom.types';
|
|
12
|
+
export { StatsEvent } from './core/types/stats.types';
|
|
13
|
+
export { RecordingEvent } from './core/types/recording.types';
|
|
14
|
+
// ============ Errors ============
|
|
15
|
+
export { VroomError, BadRequestError, InvalidApiKeyError, UnauthorizedError, PlatformMismatchError, NetworkError, TimeoutError, ServiceError, PermissionDeniedError, UnsupportedFeatureError, RecordingStartError, NotFoundError, ConflictError, } from './core/errors/vroom.error';
|
|
16
|
+
export { ErrorCodes } from './core/errors/error-codes';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3D,qCAAqC;AACrC,2CAA2C;AAC3C,OAAO,oBAAoB,CAAA;AAc3B,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAQpD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAoBrD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAOxD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAW7D,mCAAmC;AACnC,OAAO,EACL,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,aAAa,GACd,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React Native-only exports for @waitaya.buc/client-js.
|
|
3
|
+
*
|
|
4
|
+
* IMPORTANT: This subpath is intended for mobile runtimes only.
|
|
5
|
+
*/
|
|
6
|
+
import { MediaStream, RTCView } from '@livekit/react-native-webrtc';
|
|
7
|
+
export { RTCView, MediaStream };
|
|
8
|
+
export interface RTCViewProps {
|
|
9
|
+
streamURL: string | null;
|
|
10
|
+
objectFit?: 'cover' | 'contain';
|
|
11
|
+
mirror?: boolean;
|
|
12
|
+
zOrder?: number;
|
|
13
|
+
style?: unknown;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Registers all globals required by LiveKit on React Native.
|
|
17
|
+
*
|
|
18
|
+
* Safe to call multiple times.
|
|
19
|
+
*/
|
|
20
|
+
export declare function registerWebRTCGlobals(): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=react-native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-native.d.ts","sourceRoot":"","sources":["../src/react-native.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA;AAE/B,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAID;;;;GAIG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAwB3D"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React Native-only exports for @waitaya.buc/client-js.
|
|
3
|
+
*
|
|
4
|
+
* IMPORTANT: This subpath is intended for mobile runtimes only.
|
|
5
|
+
*/
|
|
6
|
+
import { registerGlobals as registerLiveKitGlobals } from '@livekit/react-native';
|
|
7
|
+
import { MediaStream, RTCView } from '@livekit/react-native-webrtc';
|
|
8
|
+
export { RTCView, MediaStream };
|
|
9
|
+
let globalsRegistered = false;
|
|
10
|
+
/**
|
|
11
|
+
* Registers all globals required by LiveKit on React Native.
|
|
12
|
+
*
|
|
13
|
+
* Safe to call multiple times.
|
|
14
|
+
*/
|
|
15
|
+
export async function registerWebRTCGlobals() {
|
|
16
|
+
if (globalsRegistered)
|
|
17
|
+
return;
|
|
18
|
+
registerLiveKitGlobals();
|
|
19
|
+
if (typeof globalThis.TextDecoder === 'undefined' ||
|
|
20
|
+
typeof globalThis.TextEncoder === 'undefined') {
|
|
21
|
+
throw new Error('Failed to polyfill TextEncoder/TextDecoder for React Native runtime.');
|
|
22
|
+
}
|
|
23
|
+
if (typeof globalThis.DOMException === 'undefined') {
|
|
24
|
+
throw new Error('Failed to polyfill DOMException for React Native runtime.');
|
|
25
|
+
}
|
|
26
|
+
if (typeof globalThis.ReadableStream === 'undefined' ||
|
|
27
|
+
typeof globalThis.WritableStream === 'undefined') {
|
|
28
|
+
throw new Error('Failed to polyfill Web Streams for React Native runtime.');
|
|
29
|
+
}
|
|
30
|
+
globalsRegistered = true;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=react-native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-native.js","sourceRoot":"","sources":["../src/react-native.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AACjF,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA;AAU/B,IAAI,iBAAiB,GAAG,KAAK,CAAA;AAE7B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,IAAI,iBAAiB;QAAE,OAAM;IAE7B,sBAAsB,EAAE,CAAA;IAExB,IACE,OAAO,UAAU,CAAC,WAAW,KAAK,WAAW;QAC7C,OAAO,UAAU,CAAC,WAAW,KAAK,WAAW,EAC7C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;IACzF,CAAC;IAED,IAAI,OAAO,UAAU,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAA;IAC9E,CAAC;IAED,IACE,OAAO,UAAU,CAAC,cAAc,KAAK,WAAW;QAChD,OAAO,UAAU,CAAC,cAAc,KAAK,WAAW,EAChD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;IAC7E,CAAC;IAED,iBAAiB,GAAG,IAAI,CAAA;AAC1B,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@waitaya.buc/client-js",
|
|
3
|
+
"version": "0.1.0-alpha.0",
|
|
4
|
+
"description": "Vroom Core SDK - Platform-agnostic RTC abstraction layer",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./react-native": {
|
|
16
|
+
"types": "./dist/react-native.d.ts",
|
|
17
|
+
"import": "./dist/react-native.js",
|
|
18
|
+
"default": "./dist/react-native.js"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "tsc -p tsconfig.json",
|
|
26
|
+
"typecheck": "tsc --noEmit",
|
|
27
|
+
"clean": "rm -rf dist"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"fast-text-encoding": "^1.0.6",
|
|
31
|
+
"livekit-client": "^2.18.6"
|
|
32
|
+
},
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"@livekit/react-native": "^2.10.1",
|
|
35
|
+
"@livekit/react-native-webrtc": "^144.0.0"
|
|
36
|
+
},
|
|
37
|
+
"peerDependenciesMeta": {
|
|
38
|
+
"@livekit/react-native": {
|
|
39
|
+
"optional": true
|
|
40
|
+
},
|
|
41
|
+
"@livekit/react-native-webrtc": {
|
|
42
|
+
"optional": true
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@livekit/react-native": "^2.10.1",
|
|
47
|
+
"@livekit/react-native-webrtc": "^144.0.0",
|
|
48
|
+
"typescript": "^5.9.3"
|
|
49
|
+
}
|
|
50
|
+
}
|