@baasix/sdk 0.1.8 → 0.1.9

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/dist/index.d.cts CHANGED
@@ -1076,6 +1076,7 @@ interface RoomUserEvent {
1076
1076
  room: string;
1077
1077
  userId: string | number;
1078
1078
  socketId: string;
1079
+ metadata: Record<string, any>;
1079
1080
  timestamp: string;
1080
1081
  }
1081
1082
  interface RoomKickEvent {
@@ -1093,6 +1094,7 @@ interface RoomMember {
1093
1094
  socketId: string;
1094
1095
  userId: string | number;
1095
1096
  isCreator: boolean;
1097
+ metadata: Record<string, any>;
1096
1098
  }
1097
1099
  interface SubscriptionCallback<T = any> {
1098
1100
  (payload: SubscriptionPayload<T>): void;
@@ -1267,20 +1269,31 @@ declare class RealtimeModule {
1267
1269
  subscribeToExecution(executionId: string | number, callback: (data: WorkflowExecutionUpdate) => void): () => void;
1268
1270
  private handleWorkflowUpdate;
1269
1271
  /**
1270
- * Join a custom room for real-time communication
1272
+ * Join a custom room for real-time communication.
1273
+ *
1274
+ * You can optionally attach metadata (e.g. display name, avatar, team) that
1275
+ * will be visible to all other members via {@link getRoomMembers} and in
1276
+ * `room:user:joined` events.
1277
+ *
1278
+ * @param roomName - The room to join.
1279
+ * @param metadata - Optional key/value pairs stored alongside this member.
1271
1280
  *
1272
1281
  * @example
1273
1282
  * ```typescript
1274
- * // Join a room
1275
- * await baasix.realtime.joinRoom('game:lobby');
1283
+ * // Join a room with metadata
1284
+ * await baasix.realtime.joinRoom('game:lobby', {
1285
+ * username: 'Alice',
1286
+ * avatar: 'https://example.com/alice.png',
1287
+ * team: 'blue',
1288
+ * });
1276
1289
  *
1277
- * // Listen for messages
1278
- * baasix.realtime.onRoomMessage('game:lobby', 'chat', (data) => {
1279
- * console.log(`${data.sender.userId}: ${data.payload.text}`);
1290
+ * // Listen for other users joining (includes their metadata)
1291
+ * baasix.realtime.onUserJoined('game:lobby', (data) => {
1292
+ * console.log(data.metadata.username, 'joined');
1280
1293
  * });
1281
1294
  * ```
1282
1295
  */
1283
- joinRoom(roomName: string): Promise<void>;
1296
+ joinRoom(roomName: string, metadata?: Record<string, any>): Promise<void>;
1284
1297
  /**
1285
1298
  * Leave a custom room
1286
1299
  *
@@ -1294,11 +1307,14 @@ declare class RealtimeModule {
1294
1307
  * Get the list of users currently in a room.
1295
1308
  * You must already be a member of the room to call this.
1296
1309
  *
1310
+ * Each entry includes `userId`, `socketId`, `isCreator`, and `metadata`
1311
+ * (the custom object the member passed to {@link joinRoom}).
1312
+ *
1297
1313
  * @example
1298
1314
  * ```typescript
1299
1315
  * const members = await baasix.realtime.getRoomMembers('game:lobby');
1300
1316
  * members.forEach(m => {
1301
- * console.log(m.userId, m.isCreator ? '(owner)' : '');
1317
+ * console.log(m.metadata.username, m.isCreator ? '(owner)' : '');
1302
1318
  * });
1303
1319
  * ```
1304
1320
  */
package/dist/index.d.ts CHANGED
@@ -1076,6 +1076,7 @@ interface RoomUserEvent {
1076
1076
  room: string;
1077
1077
  userId: string | number;
1078
1078
  socketId: string;
1079
+ metadata: Record<string, any>;
1079
1080
  timestamp: string;
1080
1081
  }
1081
1082
  interface RoomKickEvent {
@@ -1093,6 +1094,7 @@ interface RoomMember {
1093
1094
  socketId: string;
1094
1095
  userId: string | number;
1095
1096
  isCreator: boolean;
1097
+ metadata: Record<string, any>;
1096
1098
  }
1097
1099
  interface SubscriptionCallback<T = any> {
1098
1100
  (payload: SubscriptionPayload<T>): void;
@@ -1267,20 +1269,31 @@ declare class RealtimeModule {
1267
1269
  subscribeToExecution(executionId: string | number, callback: (data: WorkflowExecutionUpdate) => void): () => void;
1268
1270
  private handleWorkflowUpdate;
1269
1271
  /**
1270
- * Join a custom room for real-time communication
1272
+ * Join a custom room for real-time communication.
1273
+ *
1274
+ * You can optionally attach metadata (e.g. display name, avatar, team) that
1275
+ * will be visible to all other members via {@link getRoomMembers} and in
1276
+ * `room:user:joined` events.
1277
+ *
1278
+ * @param roomName - The room to join.
1279
+ * @param metadata - Optional key/value pairs stored alongside this member.
1271
1280
  *
1272
1281
  * @example
1273
1282
  * ```typescript
1274
- * // Join a room
1275
- * await baasix.realtime.joinRoom('game:lobby');
1283
+ * // Join a room with metadata
1284
+ * await baasix.realtime.joinRoom('game:lobby', {
1285
+ * username: 'Alice',
1286
+ * avatar: 'https://example.com/alice.png',
1287
+ * team: 'blue',
1288
+ * });
1276
1289
  *
1277
- * // Listen for messages
1278
- * baasix.realtime.onRoomMessage('game:lobby', 'chat', (data) => {
1279
- * console.log(`${data.sender.userId}: ${data.payload.text}`);
1290
+ * // Listen for other users joining (includes their metadata)
1291
+ * baasix.realtime.onUserJoined('game:lobby', (data) => {
1292
+ * console.log(data.metadata.username, 'joined');
1280
1293
  * });
1281
1294
  * ```
1282
1295
  */
1283
- joinRoom(roomName: string): Promise<void>;
1296
+ joinRoom(roomName: string, metadata?: Record<string, any>): Promise<void>;
1284
1297
  /**
1285
1298
  * Leave a custom room
1286
1299
  *
@@ -1294,11 +1307,14 @@ declare class RealtimeModule {
1294
1307
  * Get the list of users currently in a room.
1295
1308
  * You must already be a member of the room to call this.
1296
1309
  *
1310
+ * Each entry includes `userId`, `socketId`, `isCreator`, and `metadata`
1311
+ * (the custom object the member passed to {@link joinRoom}).
1312
+ *
1297
1313
  * @example
1298
1314
  * ```typescript
1299
1315
  * const members = await baasix.realtime.getRoomMembers('game:lobby');
1300
1316
  * members.forEach(m => {
1301
- * console.log(m.userId, m.isCreator ? '(owner)' : '');
1317
+ * console.log(m.metadata.username, m.isCreator ? '(owner)' : '');
1302
1318
  * });
1303
1319
  * ```
1304
1320
  */
package/dist/index.js CHANGED
@@ -3693,25 +3693,36 @@ var RealtimeModule = class {
3693
3693
  // Custom Rooms API
3694
3694
  // ===================
3695
3695
  /**
3696
- * Join a custom room for real-time communication
3697
- *
3696
+ * Join a custom room for real-time communication.
3697
+ *
3698
+ * You can optionally attach metadata (e.g. display name, avatar, team) that
3699
+ * will be visible to all other members via {@link getRoomMembers} and in
3700
+ * `room:user:joined` events.
3701
+ *
3702
+ * @param roomName - The room to join.
3703
+ * @param metadata - Optional key/value pairs stored alongside this member.
3704
+ *
3698
3705
  * @example
3699
3706
  * ```typescript
3700
- * // Join a room
3701
- * await baasix.realtime.joinRoom('game:lobby');
3702
- *
3703
- * // Listen for messages
3704
- * baasix.realtime.onRoomMessage('game:lobby', 'chat', (data) => {
3705
- * console.log(`${data.sender.userId}: ${data.payload.text}`);
3707
+ * // Join a room with metadata
3708
+ * await baasix.realtime.joinRoom('game:lobby', {
3709
+ * username: 'Alice',
3710
+ * avatar: 'https://example.com/alice.png',
3711
+ * team: 'blue',
3712
+ * });
3713
+ *
3714
+ * // Listen for other users joining (includes their metadata)
3715
+ * baasix.realtime.onUserJoined('game:lobby', (data) => {
3716
+ * console.log(data.metadata.username, 'joined');
3706
3717
  * });
3707
3718
  * ```
3708
3719
  */
3709
- async joinRoom(roomName) {
3720
+ async joinRoom(roomName, metadata = {}) {
3710
3721
  if (!this.socket?.connected) {
3711
3722
  throw new Error("Not connected. Call connect() first.");
3712
3723
  }
3713
3724
  return new Promise((resolve, reject) => {
3714
- this.socket.emit("room:join", { room: roomName }, (response) => {
3725
+ this.socket.emit("room:join", { room: roomName, metadata }, (response) => {
3715
3726
  if (response.status === "success") {
3716
3727
  this.setupRoomListeners(roomName);
3717
3728
  resolve();
@@ -3748,11 +3759,14 @@ var RealtimeModule = class {
3748
3759
  * Get the list of users currently in a room.
3749
3760
  * You must already be a member of the room to call this.
3750
3761
  *
3762
+ * Each entry includes `userId`, `socketId`, `isCreator`, and `metadata`
3763
+ * (the custom object the member passed to {@link joinRoom}).
3764
+ *
3751
3765
  * @example
3752
3766
  * ```typescript
3753
3767
  * const members = await baasix.realtime.getRoomMembers('game:lobby');
3754
3768
  * members.forEach(m => {
3755
- * console.log(m.userId, m.isCreator ? '(owner)' : '');
3769
+ * console.log(m.metadata.username, m.isCreator ? '(owner)' : '');
3756
3770
  * });
3757
3771
  * ```
3758
3772
  */