@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/README.md +10 -5
- package/dist/index.cjs +25 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +24 -8
- package/dist/index.d.ts +24 -8
- package/dist/index.js +25 -11
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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
|
|
1278
|
-
* baasix.realtime.
|
|
1279
|
-
* console.log(
|
|
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.
|
|
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
|
|
1278
|
-
* baasix.realtime.
|
|
1279
|
-
* console.log(
|
|
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.
|
|
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
|
-
*
|
|
3704
|
-
*
|
|
3705
|
-
*
|
|
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.
|
|
3769
|
+
* console.log(m.metadata.username, m.isCreator ? '(owner)' : '');
|
|
3756
3770
|
* });
|
|
3757
3771
|
* ```
|
|
3758
3772
|
*/
|