@ethora/sdk-backend 25.1.1

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.
@@ -0,0 +1,444 @@
1
+ "use strict";
2
+ /**
3
+ * Concrete implementation of the ChatRepository using the Ethora API
4
+ *
5
+ * This class handles chat operations in the Ethora chat service. It manages
6
+ * JWT authentication tokens for server-to-server communication and uses
7
+ * HTTP clients to make asynchronous API calls.
8
+ *
9
+ * @format
10
+ */
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.EthoraSDKService = void 0;
16
+ exports.getEthoraSDKService = getEthoraSDKService;
17
+ const crypto_1 = require("crypto");
18
+ const axios_1 = __importDefault(require("axios"));
19
+ const secrets_1 = require("../config/secrets");
20
+ const jwt_1 = require("../utils/jwt");
21
+ const logger_1 = require("../utils/logger");
22
+ const logger = (0, logger_1.getLogger)("EthoraSDKService");
23
+ /**
24
+ * EthoraSDKService - Concrete implementation of ChatRepository
25
+ */
26
+ class EthoraSDKService {
27
+ constructor() {
28
+ this.secrets = (0, secrets_1.getSecrets)();
29
+ this.baseEthoraUrl = this.secrets.chatApiUrl;
30
+ // Create axios instance with default configuration
31
+ this.httpClient = axios_1.default.create({
32
+ timeout: secrets_1.DEFAULT_TIMEOUT.total,
33
+ headers: {
34
+ "Content-Type": "application/json",
35
+ },
36
+ });
37
+ logger.debug("EthoraSDKService instance initialized");
38
+ }
39
+ /**
40
+ * Generates a fully-qualified chat room JID from a workspace ID
41
+ *
42
+ * The JID is constructed in the format `<appId>_<workspace_id>@conference.xmpp.ethoradev.com`.
43
+ * This method uses a static JID domain to provide a unique identifier for a chat room.
44
+ *
45
+ * @param workspaceId - The unique identifier of the workspace
46
+ * @param full - Whether to include the full JID domain
47
+ * @returns The fully-qualified JID string for the chat room
48
+ */
49
+ createChatName(workspaceId, full = true) {
50
+ logger.debug(`Creating chat room name (JID) for workspace ID: ${workspaceId}`);
51
+ const chatName = full
52
+ ? `${this.secrets.chatAppId}_${workspaceId}${secrets_1.ETHORA_JID_DOMAIN}`
53
+ : `${this.secrets.chatAppId}_${workspaceId}`;
54
+ logger.info(`Chat room name created: '${chatName}'`);
55
+ return chatName;
56
+ }
57
+ /**
58
+ * Creates a client-side JWT token for a specific user ID
59
+ *
60
+ * This method generates a JWT token for a user that can be used for client-side
61
+ * authentication with the chat service. The token payload includes the
62
+ * user's ID and the app ID.
63
+ *
64
+ * @param userId - The unique identifier of the user
65
+ * @returns The encoded JWT token for client-side authentication
66
+ */
67
+ createChatUserJwtToken(userId) {
68
+ logger.debug(`Creating a client-side JWT token for user ID: ${userId}`);
69
+ return (0, jwt_1.createClientToken)(userId);
70
+ }
71
+ /**
72
+ * Creates the necessary headers for an API call with a JWT token
73
+ *
74
+ * @returns The headers dictionary containing the `x-custom-token` field
75
+ */
76
+ getHeaders() {
77
+ logger.debug("Retrieving headers for a server-to-server API call");
78
+ return {
79
+ "x-custom-token": (0, jwt_1.createServerToken)(),
80
+ };
81
+ }
82
+ /**
83
+ * Makes an HTTP request with error handling
84
+ *
85
+ * @param config - Axios request configuration
86
+ * @returns The API response
87
+ */
88
+ async makeRequest(config) {
89
+ try {
90
+ const response = await this.httpClient.request({
91
+ ...config,
92
+ headers: {
93
+ ...this.getHeaders(),
94
+ ...config.headers,
95
+ },
96
+ timeout: secrets_1.DEFAULT_TIMEOUT.total,
97
+ });
98
+ return response.data;
99
+ }
100
+ catch (error) {
101
+ if (axios_1.default.isAxiosError(error)) {
102
+ const axiosError = error;
103
+ logger.error(`API call failed with status code: ${axiosError.response?.status}. ` +
104
+ `Response: ${axiosError.response?.data}`, error);
105
+ throw error;
106
+ }
107
+ logger.error("An unexpected error occurred during API call", error);
108
+ throw error;
109
+ }
110
+ }
111
+ /**
112
+ * Creates a user in the chat service
113
+ *
114
+ * Uses the batch API endpoint to create a single user. The API expects:
115
+ * - bypassEmailConfirmation: true
116
+ * - usersList: array with user objects containing email, firstName, lastName, password, uuid
117
+ *
118
+ * @param userId - The unique identifier of the user (used as uuid)
119
+ * @param userData - Additional user data (optional) - can include email, firstName, lastName, password, etc.
120
+ * @returns The API response
121
+ */
122
+ async createUser(userId, userData) {
123
+ logger.info(`Attempting to create user with ID: ${userId}`);
124
+ const createUrl = `${this.baseEthoraUrl}/v1/users/batch`;
125
+ // Extract user fields from userData or use defaults
126
+ // Generate unique email using UUID if not provided
127
+ const email = userData?.email || `${(0, crypto_1.randomUUID)()}@example.com`;
128
+ const password = userData?.password || `password_${userId}`;
129
+ // Handle firstName and lastName - split displayName if provided
130
+ // API requires lastName to be at least 2 characters and not empty
131
+ let firstName;
132
+ let lastName;
133
+ if (userData?.firstName) {
134
+ firstName = userData.firstName;
135
+ lastName = userData?.lastName || "";
136
+ }
137
+ else if (userData?.displayName) {
138
+ const displayName = userData.displayName;
139
+ const nameParts = displayName.trim().split(/\s+/);
140
+ firstName = nameParts[0] || "User";
141
+ lastName = nameParts.slice(1).join(" ") || "";
142
+ }
143
+ else {
144
+ firstName = "User";
145
+ lastName = "";
146
+ }
147
+ // Ensure lastName meets API requirements: at least 2 characters, not empty
148
+ if (!lastName || lastName.length < 2) {
149
+ // Use a default lastName if empty or too short
150
+ lastName = "User";
151
+ }
152
+ // Use plain userId without prefixing
153
+ const userIdStr = String(userId);
154
+ const payload = {
155
+ bypassEmailConfirmation: true,
156
+ usersList: [
157
+ {
158
+ uuid: userIdStr,
159
+ email: email,
160
+ firstName: firstName,
161
+ lastName: lastName,
162
+ password: password,
163
+ ...(userData &&
164
+ Object.fromEntries(Object.entries(userData).filter(([key]) => ![
165
+ "email",
166
+ "firstName",
167
+ "lastName",
168
+ "password",
169
+ "uuid",
170
+ "displayName",
171
+ "role", // Role is not allowed in user creation payload
172
+ ].includes(key)))),
173
+ },
174
+ ],
175
+ };
176
+ logger.debug(`Chat service API URL: ${createUrl}`);
177
+ logger.debug(`Request payload: ${JSON.stringify(payload)}`);
178
+ return this.makeRequest({
179
+ method: "POST",
180
+ url: createUrl,
181
+ data: payload,
182
+ });
183
+ }
184
+ /**
185
+ * Creates a chat room for a workspace
186
+ *
187
+ * @param workspaceId - The unique identifier of the workspace
188
+ * @param roomData - Additional room data (optional)
189
+ * @returns The API response
190
+ */
191
+ async createChatRoom(workspaceId, roomData) {
192
+ logger.info(`Attempting to create chat room for workspace ID: ${workspaceId}`);
193
+ const createUrl = `${this.baseEthoraUrl}/v1/chats`;
194
+ // Create chat room - API expects title, uuid, and type
195
+ const payload = {
196
+ title: roomData?.title || `Chat Room ${workspaceId}`,
197
+ uuid: String(workspaceId),
198
+ type: roomData?.type || "group",
199
+ ...roomData, // Allow roomData to override fields if provided
200
+ };
201
+ logger.debug(`Chat service API URL: ${createUrl}`);
202
+ logger.debug(`Request payload: ${JSON.stringify(payload)}`);
203
+ return this.makeRequest({
204
+ method: "POST",
205
+ url: createUrl,
206
+ data: payload,
207
+ });
208
+ }
209
+ /**
210
+ * Grants a user access to a chat room
211
+ *
212
+ * Uses plain userIds without prefixing (matching how users are created)
213
+ *
214
+ * @param workspaceId - The unique identifier of the workspace
215
+ * @param userId - The unique identifier of the user (or array of user IDs)
216
+ * @returns The API response
217
+ */
218
+ async grantUserAccessToChatRoom(workspaceId, userId) {
219
+ logger.info(`Granting user(s) access to chat room for workspace ${workspaceId}`);
220
+ const chatName = this.createChatName(workspaceId, false);
221
+ // Use /v1/chats/users-access endpoint with chatName and members array
222
+ const grantUrl = `${this.baseEthoraUrl}/v1/chats/users-access`;
223
+ // Convert single userId to array if needed
224
+ // Use plain userIds without prefixing
225
+ const members = Array.isArray(userId)
226
+ ? userId.map((id) => String(id))
227
+ : [String(userId)];
228
+ const payload = {
229
+ chatName: chatName,
230
+ members: members,
231
+ };
232
+ logger.debug(`Chat service API URL: ${grantUrl}`);
233
+ logger.debug(`Request payload: ${JSON.stringify(payload)}`);
234
+ logger.debug(`Using XMPP usernames for members: ${members.join(", ")}`);
235
+ try {
236
+ return await this.makeRequest({
237
+ method: "POST",
238
+ url: grantUrl,
239
+ data: payload,
240
+ });
241
+ }
242
+ catch (error) {
243
+ if (axios_1.default.isAxiosError(error)) {
244
+ const errorData = error.response?.data;
245
+ logger.error(`Failed to grant user access. Status: ${error.response?.status}, Response: ${JSON.stringify(errorData)}`, error);
246
+ // Log the XMPP usernames that were attempted for debugging
247
+ logger.debug(`Attempted XMPP usernames: ${members.join(", ")}`);
248
+ }
249
+ throw error;
250
+ }
251
+ }
252
+ /**
253
+ * Grants chatbot access to a chat room
254
+ *
255
+ * @param workspaceId - The unique identifier of the workspace
256
+ * @returns The API response
257
+ */
258
+ async grantChatbotAccessToChatRoom(workspaceId) {
259
+ logger.info(`Granting chatbot access to chat room for workspace ${workspaceId}`);
260
+ if (!this.secrets.chatBotJid) {
261
+ const error = new Error("Chatbot JID not configured. Set ETHORA_CHAT_BOT_JID environment variable.");
262
+ logger.error("Cannot grant chatbot access", error);
263
+ throw error;
264
+ }
265
+ // Extract username from JID (format: "username@domain" -> "username")
266
+ const chatbotUsername = this.secrets.chatBotJid.split("@")[0];
267
+ // Use the same grant access method with chatbot JID
268
+ return this.grantUserAccessToChatRoom(workspaceId, chatbotUsername);
269
+ }
270
+ /**
271
+ * Deletes users from the chat service
272
+ *
273
+ * @param userIds - Array of user IDs to delete
274
+ * @returns The API response
275
+ */
276
+ async deleteUsers(userIds) {
277
+ logger.info(`Attempting to delete users: ${userIds.join(", ")}`);
278
+ const deleteUrl = `${this.baseEthoraUrl}/v1/users/batch`;
279
+ const payload = {
280
+ usersIdList: userIds.map((id) => String(id)),
281
+ };
282
+ logger.debug(`Chat service API URL: ${deleteUrl}`);
283
+ logger.debug(`Request payload: ${JSON.stringify(payload)}`);
284
+ try {
285
+ return await this.makeRequest({
286
+ method: "DELETE",
287
+ url: deleteUrl,
288
+ data: payload,
289
+ });
290
+ }
291
+ catch (error) {
292
+ // Handle the case where users don't exist (422 with "not found")
293
+ if (axios_1.default.isAxiosError(error) &&
294
+ error.response?.status === 422 &&
295
+ typeof error.response.data === "string" &&
296
+ error.response.data.includes("not found")) {
297
+ logger.info("No users to delete from the chat service. The request contained non-existent users.");
298
+ return { ok: false };
299
+ }
300
+ throw error;
301
+ }
302
+ }
303
+ /**
304
+ * Deletes a chat room from the chat service by its workspace ID
305
+ *
306
+ * This method sends a DELETE request to the Ethora API using the workspace ID
307
+ * to construct the chat name. It gracefully handles the case where the chat room
308
+ * is already non-existent (422 Not Found).
309
+ *
310
+ * @param workspaceId - The unique identifier of the workspace associated with the chat room
311
+ * @returns The JSON response from the chat service upon successful deletion or a success status if not found
312
+ */
313
+ async deleteChatRoom(workspaceId) {
314
+ logger.info(`Attempting to delete chat room for workspace ID: ${workspaceId}`);
315
+ const deleteUrl = `${this.baseEthoraUrl}/v1/chats`;
316
+ // We must use the short name when deleting the chat room
317
+ const chatName = this.createChatName(workspaceId, false);
318
+ const payload = {
319
+ name: chatName,
320
+ };
321
+ logger.debug(`Chat service API URL: ${deleteUrl}`);
322
+ logger.debug(`Request payload: ${JSON.stringify(payload)}`);
323
+ try {
324
+ const response = await this.makeRequest({
325
+ method: "DELETE",
326
+ url: deleteUrl,
327
+ data: payload,
328
+ });
329
+ logger.info(`Chat room '${chatName}' successfully deleted`);
330
+ return response;
331
+ }
332
+ catch (error) {
333
+ if (axios_1.default.isAxiosError(error)) {
334
+ const axiosError = error;
335
+ const statusCode = axiosError.response?.status;
336
+ const responseText = axiosError.response?.data;
337
+ // Handle the case where the room does not exist (Ethora returns 422 with "not found" in body)
338
+ if (statusCode === 422 &&
339
+ typeof responseText === "string" &&
340
+ responseText.toLowerCase().includes("not found")) {
341
+ logger.warn(`Chat room '${chatName}' not found during deletion attempt (Ignored 422)`);
342
+ return { ok: false, reason: "Chat room not found" };
343
+ }
344
+ }
345
+ // Re-throw if it's not a "not found" case
346
+ throw error;
347
+ }
348
+ }
349
+ /**
350
+ * Updates multiple users in the chat service
351
+ *
352
+ * This method sends a PATCH request to update multiple users at once.
353
+ * The endpoint accepts an array of user objects with userId and optional
354
+ * fields. Only provided fields will be updated.
355
+ *
356
+ * Limits: 1-100 users per request
357
+ * Response contains results array with status for each user:
358
+ * - updated: user was successfully updated (includes updated user data)
359
+ * - not-found: user was not found
360
+ * - skipped: user update was skipped
361
+ *
362
+ * @param users - Array of user data to update (1-100 users)
363
+ * @returns The API response with results array containing status for each user
364
+ */
365
+ async updateUsers(users) {
366
+ // Validate user count limit
367
+ if (users.length === 0) {
368
+ throw new Error("At least 1 user is required for update");
369
+ }
370
+ if (users.length > 100) {
371
+ throw new Error("Maximum 100 users allowed per update request");
372
+ }
373
+ logger.info(`Attempting to update ${users.length} user(s)`);
374
+ const updateUrl = `${this.baseEthoraUrl}/v1/chats/users`;
375
+ // Remove userId from payload if present, as API doesn't accept it
376
+ // API expects xmppUsername or other identifier fields instead
377
+ const cleanedUsers = users.map((user) => {
378
+ const { userId, ...rest } = user;
379
+ return rest;
380
+ });
381
+ const payload = {
382
+ users: cleanedUsers,
383
+ };
384
+ logger.debug(`Chat service API URL: ${updateUrl}`);
385
+ logger.debug(`Request payload: ${JSON.stringify(payload)}`);
386
+ return this.makeRequest({
387
+ method: "PATCH",
388
+ url: updateUrl,
389
+ data: payload,
390
+ });
391
+ }
392
+ /**
393
+ * Gets users from the chat service
394
+ *
395
+ * This method supports multiple query modes:
396
+ * - No parameters: returns all users of the app
397
+ * - chatName parameter: returns all users of the chat
398
+ * - For group chats: use appId_uuId format
399
+ * - For 1-on-1 chats: use xmppUsernameA-xmppUsernameB format
400
+ * - xmppUsername parameter: returns a specific user by XMPP username
401
+ *
402
+ * @param params - Query parameters for filtering users (optional)
403
+ * @returns The API response
404
+ */
405
+ async getUsers(params) {
406
+ const getUrl = `${this.baseEthoraUrl}/v1/chats/users`;
407
+ // Build query parameters
408
+ const queryParams = [];
409
+ if (params?.chatName) {
410
+ queryParams.push(`chatName=${encodeURIComponent(params.chatName)}`);
411
+ }
412
+ if (params?.xmppUsername) {
413
+ queryParams.push(`xmppUsername=${encodeURIComponent(params.xmppUsername)}`);
414
+ }
415
+ const urlWithParams = queryParams.length > 0 ? `${getUrl}?${queryParams.join("&")}` : getUrl;
416
+ logger.info(params
417
+ ? `Getting users with params: ${JSON.stringify(params)}`
418
+ : "Getting all users of the app");
419
+ logger.debug(`Chat service API URL: ${urlWithParams}`);
420
+ return this.makeRequest({
421
+ method: "GET",
422
+ url: urlWithParams,
423
+ });
424
+ }
425
+ }
426
+ exports.EthoraSDKService = EthoraSDKService;
427
+ /**
428
+ * Provides a singleton instance of EthoraSDKService
429
+ *
430
+ * This dependency injection function is intended for use with a DI framework
431
+ * or as a simple factory function. It creates and returns a single instance
432
+ * of `EthoraSDKService`.
433
+ *
434
+ * @returns A singleton instance of the chat repository implementation
435
+ */
436
+ let repositoryInstance = null;
437
+ function getEthoraSDKService() {
438
+ if (!repositoryInstance) {
439
+ logger.debug("Creating new EthoraSDKService instance");
440
+ repositoryInstance = new EthoraSDKService();
441
+ }
442
+ return repositoryInstance;
443
+ }
444
+ //# sourceMappingURL=EthoraSDKService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EthoraSDKService.js","sourceRoot":"","sources":["../../src/repositories/EthoraSDKService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Type definitions for the Ethora SDK
3
+ */
4
+ /**
5
+ * UUID type - can be a string or UUID object
6
+ */
7
+ export type UUID = string;
8
+ /**
9
+ * Chat room name format options
10
+ */
11
+ export interface ChatNameOptions {
12
+ /** Whether to include the full JID domain */
13
+ full?: boolean;
14
+ }
15
+ /**
16
+ * JWT token payload for server authentication
17
+ */
18
+ export interface ServerTokenPayload {
19
+ data: {
20
+ appId: string;
21
+ type: "server";
22
+ };
23
+ }
24
+ /**
25
+ * JWT token payload for client authentication
26
+ */
27
+ export interface ClientTokenPayload {
28
+ data: {
29
+ type: "client";
30
+ userId: string;
31
+ appId: string;
32
+ };
33
+ }
34
+ /**
35
+ * API response structure
36
+ */
37
+ export interface ApiResponse {
38
+ ok?: boolean;
39
+ reason?: string;
40
+ [key: string]: unknown;
41
+ }
42
+ /**
43
+ * Chat room creation request payload
44
+ */
45
+ export interface CreateChatRoomRequest {
46
+ title: string;
47
+ uuid: string;
48
+ type: string;
49
+ [key: string]: unknown;
50
+ }
51
+ /**
52
+ * Delete chat room request payload
53
+ */
54
+ export interface DeleteChatRoomRequest {
55
+ name: string;
56
+ }
57
+ /**
58
+ * Grant access request payload
59
+ */
60
+ export interface GrantAccessRequest {
61
+ chatName: string;
62
+ members: string[];
63
+ [key: string]: unknown;
64
+ }
65
+ /**
66
+ * User data for batch update
67
+ */
68
+ export interface UpdateUserData {
69
+ userId?: string;
70
+ xmppUsername?: string;
71
+ firstName?: string;
72
+ lastName?: string;
73
+ username?: string;
74
+ profileImage?: string;
75
+ description?: string;
76
+ token?: string;
77
+ email?: string;
78
+ appId?: string;
79
+ homeScreen?: string;
80
+ registrationChannelType?: string;
81
+ updatedAt?: string;
82
+ authMethod?: string;
83
+ resetPasswordExpires?: string;
84
+ resetPasswordToken?: string;
85
+ roles?: string[];
86
+ tags?: string[];
87
+ __v?: number;
88
+ isProfileOpen?: boolean;
89
+ isAssetsOpen?: boolean;
90
+ isAgreeWithTerms?: boolean;
91
+ [key: string]: string | string[] | number | boolean | undefined;
92
+ }
93
+ /**
94
+ * Batch update users request payload
95
+ */
96
+ export interface UpdateUsersRequest {
97
+ users: UpdateUserData[];
98
+ }
99
+ /**
100
+ * Get users query parameters
101
+ */
102
+ export interface GetUsersQueryParams {
103
+ chatName?: string;
104
+ xmppUsername?: string;
105
+ }
106
+ /**
107
+ * Chat repository interface
108
+ */
109
+ export interface ChatRepository {
110
+ /**
111
+ * Creates a fully-qualified chat room JID from a workspace ID
112
+ */
113
+ createChatName(workspaceId: UUID, full?: boolean): string;
114
+ /**
115
+ * Creates a client-side JWT token for a specific user ID
116
+ */
117
+ createChatUserJwtToken(userId: UUID): string;
118
+ /**
119
+ * Creates a user in the chat service
120
+ */
121
+ createUser(userId: UUID, userData?: Record<string, unknown>): Promise<ApiResponse>;
122
+ /**
123
+ * Creates a chat room for a workspace
124
+ */
125
+ createChatRoom(workspaceId: UUID, roomData?: Record<string, unknown>): Promise<ApiResponse>;
126
+ /**
127
+ * Grants a user access to a chat room
128
+ */
129
+ grantUserAccessToChatRoom(workspaceId: UUID, userId: UUID | UUID[]): Promise<ApiResponse>;
130
+ /**
131
+ * Grants chatbot access to a chat room
132
+ */
133
+ grantChatbotAccessToChatRoom(workspaceId: UUID): Promise<ApiResponse>;
134
+ /**
135
+ * Deletes users from the chat service
136
+ */
137
+ deleteUsers(userIds: UUID[]): Promise<ApiResponse>;
138
+ /**
139
+ * Deletes a chat room by workspace ID
140
+ */
141
+ deleteChatRoom(workspaceId: UUID): Promise<ApiResponse>;
142
+ /**
143
+ * Updates multiple users in the chat service
144
+ *
145
+ * Sends PATCH request to /v1/chats/users with array of users.
146
+ * Only provided fields will be updated.
147
+ * Limits: 1-100 users per request.
148
+ *
149
+ * Response contains results array with status for each user:
150
+ * - updated: user was successfully updated (includes updated user data)
151
+ * - not-found: user was not found
152
+ * - skipped: user update was skipped
153
+ *
154
+ * @param users - Array of user data to update (1-100 users)
155
+ * @returns The API response with results array containing status for each user
156
+ */
157
+ updateUsers(users: UpdateUserData[]): Promise<ApiResponse>;
158
+ /**
159
+ * Gets users from the chat service
160
+ *
161
+ * Query parameters:
162
+ * - No params: returns all users of the app
163
+ * - chatName: returns all users of the chat (appId_uuId for group chats, xmppUsernameA-xmppUsernameB for 1-on-1)
164
+ * - xmppUsername: returns a specific user by XMPP username
165
+ *
166
+ * @param params - Query parameters for filtering users
167
+ * @returns The API response
168
+ */
169
+ getUsers(params?: GetUsersQueryParams): Promise<ApiResponse>;
170
+ }
171
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Type definitions for the Ethora SDK
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG"}