@23blocks/block-conversations 3.2.0 → 3.3.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/dist/index.esm.js CHANGED
@@ -1102,6 +1102,228 @@ function createUsersService(transport, _config) {
1102
1102
  };
1103
1103
  }
1104
1104
 
1105
+ const meetingMapper = {
1106
+ type: 'Meeting',
1107
+ map: (resource)=>({
1108
+ id: resource.id,
1109
+ uniqueId: parseString(resource.attributes['unique_id']) || resource.id,
1110
+ createdAt: parseDate(resource.attributes['created_at']) || new Date(),
1111
+ updatedAt: parseDate(resource.attributes['updated_at']) || new Date(),
1112
+ title: parseString(resource.attributes['title']) || '',
1113
+ description: parseString(resource.attributes['description']),
1114
+ hostUniqueId: parseString(resource.attributes['host_unique_id']) || '',
1115
+ conversationUniqueId: parseString(resource.attributes['conversation_unique_id']),
1116
+ groupUniqueId: parseString(resource.attributes['group_unique_id']),
1117
+ scheduledAt: parseDate(resource.attributes['scheduled_at']),
1118
+ startedAt: parseDate(resource.attributes['started_at']),
1119
+ endedAt: parseDate(resource.attributes['ended_at']),
1120
+ duration: parseOptionalNumber(resource.attributes['duration']),
1121
+ meetingType: parseString(resource.attributes['meeting_type']) || 'video',
1122
+ meetingUrl: parseString(resource.attributes['meeting_url']),
1123
+ externalMeetingId: parseString(resource.attributes['external_meeting_id']),
1124
+ provider: parseString(resource.attributes['provider']),
1125
+ maxParticipants: parseOptionalNumber(resource.attributes['max_participants']),
1126
+ isRecording: parseBoolean(resource.attributes['is_recording']),
1127
+ recordingUrl: parseString(resource.attributes['recording_url']),
1128
+ status: parseStatus(resource.attributes['status']),
1129
+ enabled: parseBoolean(resource.attributes['enabled']),
1130
+ payload: resource.attributes['payload']
1131
+ })
1132
+ };
1133
+
1134
+ function createMeetingsService(transport, _config) {
1135
+ return {
1136
+ async list (params) {
1137
+ const queryParams = {};
1138
+ if (params == null ? void 0 : params.page) queryParams['page'] = String(params.page);
1139
+ if (params == null ? void 0 : params.perPage) queryParams['records'] = String(params.perPage);
1140
+ if (params == null ? void 0 : params.hostUniqueId) queryParams['host_unique_id'] = params.hostUniqueId;
1141
+ if (params == null ? void 0 : params.conversationUniqueId) queryParams['conversation_unique_id'] = params.conversationUniqueId;
1142
+ if (params == null ? void 0 : params.groupUniqueId) queryParams['group_unique_id'] = params.groupUniqueId;
1143
+ if (params == null ? void 0 : params.status) queryParams['status'] = params.status;
1144
+ if (params == null ? void 0 : params.scheduledAfter) queryParams['scheduled_after'] = params.scheduledAfter;
1145
+ if (params == null ? void 0 : params.scheduledBefore) queryParams['scheduled_before'] = params.scheduledBefore;
1146
+ if (params == null ? void 0 : params.sortBy) queryParams['sort'] = params.sortOrder === 'desc' ? `-${params.sortBy}` : params.sortBy;
1147
+ const response = await transport.get('/meetings', {
1148
+ params: queryParams
1149
+ });
1150
+ return decodePageResult(response, meetingMapper);
1151
+ },
1152
+ async get (uniqueId) {
1153
+ const response = await transport.get(`/meetings/${uniqueId}`);
1154
+ return decodeOne(response, meetingMapper);
1155
+ },
1156
+ async create (data) {
1157
+ const response = await transport.post('/meetings', {
1158
+ meeting: {
1159
+ title: data.title,
1160
+ description: data.description,
1161
+ conversation_unique_id: data.conversationUniqueId,
1162
+ group_unique_id: data.groupUniqueId,
1163
+ scheduled_at: data.scheduledAt,
1164
+ meeting_type: data.meetingType,
1165
+ max_participants: data.maxParticipants,
1166
+ is_recording: data.isRecording,
1167
+ provider: data.provider,
1168
+ payload: data.payload
1169
+ }
1170
+ });
1171
+ return decodeOne(response, meetingMapper);
1172
+ },
1173
+ async update (uniqueId, data) {
1174
+ const response = await transport.put(`/meetings/${uniqueId}`, {
1175
+ meeting: {
1176
+ title: data.title,
1177
+ description: data.description,
1178
+ scheduled_at: data.scheduledAt,
1179
+ max_participants: data.maxParticipants,
1180
+ is_recording: data.isRecording,
1181
+ enabled: data.enabled,
1182
+ status: data.status,
1183
+ payload: data.payload
1184
+ }
1185
+ });
1186
+ return decodeOne(response, meetingMapper);
1187
+ },
1188
+ async delete (uniqueId) {
1189
+ await transport.delete(`/meetings/${uniqueId}`);
1190
+ },
1191
+ async createSession (uniqueId) {
1192
+ const response = await transport.post(`/meetings/${uniqueId}/session`, {});
1193
+ var _response_session_id, _ref, _response_token, _response_join_url, _ref1, _response_expires_at;
1194
+ return {
1195
+ sessionId: String((_ref = (_response_session_id = response.session_id) != null ? _response_session_id : response.sessionId) != null ? _ref : ''),
1196
+ meetingUniqueId: uniqueId,
1197
+ token: String((_response_token = response.token) != null ? _response_token : ''),
1198
+ joinUrl: String((_ref1 = (_response_join_url = response.join_url) != null ? _response_join_url : response.joinUrl) != null ? _ref1 : ''),
1199
+ expiresAt: new Date((_response_expires_at = response.expires_at) != null ? _response_expires_at : response.expiresAt)
1200
+ };
1201
+ },
1202
+ async start (uniqueId) {
1203
+ const response = await transport.post(`/meetings/${uniqueId}/start`, {});
1204
+ return decodeOne(response, meetingMapper);
1205
+ },
1206
+ async end (uniqueId) {
1207
+ const response = await transport.post(`/meetings/${uniqueId}/end`, {});
1208
+ return decodeOne(response, meetingMapper);
1209
+ }
1210
+ };
1211
+ }
1212
+
1213
+ function parsePriority(value) {
1214
+ const priority = parseString(value);
1215
+ if (priority === 'low' || priority === 'normal' || priority === 'high' || priority === 'urgent') {
1216
+ return priority;
1217
+ }
1218
+ return 'normal';
1219
+ }
1220
+ const webNotificationMapper = {
1221
+ type: 'WebNotification',
1222
+ map: (resource)=>({
1223
+ id: resource.id,
1224
+ uniqueId: parseString(resource.attributes['unique_id']) || resource.id,
1225
+ createdAt: parseDate(resource.attributes['created_at']) || new Date(),
1226
+ updatedAt: parseDate(resource.attributes['updated_at']) || new Date(),
1227
+ recipientUniqueId: parseString(resource.attributes['recipient_unique_id']) || '',
1228
+ title: parseString(resource.attributes['title']) || '',
1229
+ body: parseString(resource.attributes['body']) || '',
1230
+ icon: parseString(resource.attributes['icon']),
1231
+ imageUrl: parseString(resource.attributes['image_url']),
1232
+ actionUrl: parseString(resource.attributes['action_url']),
1233
+ notificationType: parseString(resource.attributes['notification_type']) || 'general',
1234
+ priority: parsePriority(resource.attributes['priority']),
1235
+ sentAt: parseDate(resource.attributes['sent_at']),
1236
+ readAt: parseDate(resource.attributes['read_at']),
1237
+ clickedAt: parseDate(resource.attributes['clicked_at']),
1238
+ status: parseStatus(resource.attributes['status']),
1239
+ enabled: parseBoolean(resource.attributes['enabled']),
1240
+ payload: resource.attributes['payload'],
1241
+ tags: parseStringArray(resource.attributes['tags'])
1242
+ })
1243
+ };
1244
+
1245
+ function createWebNotificationsService(transport, _config) {
1246
+ return {
1247
+ async list (params) {
1248
+ const queryParams = {};
1249
+ if (params == null ? void 0 : params.page) queryParams['page'] = String(params.page);
1250
+ if (params == null ? void 0 : params.perPage) queryParams['records'] = String(params.perPage);
1251
+ if (params == null ? void 0 : params.recipientUniqueId) queryParams['recipient_unique_id'] = params.recipientUniqueId;
1252
+ if (params == null ? void 0 : params.notificationType) queryParams['notification_type'] = params.notificationType;
1253
+ if (params == null ? void 0 : params.priority) queryParams['priority'] = params.priority;
1254
+ if ((params == null ? void 0 : params.isRead) !== undefined) queryParams['is_read'] = String(params.isRead);
1255
+ if (params == null ? void 0 : params.status) queryParams['status'] = params.status;
1256
+ if (params == null ? void 0 : params.sortBy) queryParams['sort'] = params.sortOrder === 'desc' ? `-${params.sortBy}` : params.sortBy;
1257
+ const response = await transport.get('/web_notifications', {
1258
+ params: queryParams
1259
+ });
1260
+ return decodePageResult(response, webNotificationMapper);
1261
+ },
1262
+ async get (uniqueId) {
1263
+ const response = await transport.get(`/web_notifications/${uniqueId}`);
1264
+ return decodeOne(response, webNotificationMapper);
1265
+ },
1266
+ async send (data) {
1267
+ const response = await transport.post('/web_notifications', {
1268
+ web_notification: {
1269
+ recipient_unique_id: data.recipientUniqueId,
1270
+ title: data.title,
1271
+ body: data.body,
1272
+ icon: data.icon,
1273
+ image_url: data.imageUrl,
1274
+ action_url: data.actionUrl,
1275
+ notification_type: data.notificationType,
1276
+ priority: data.priority,
1277
+ payload: data.payload,
1278
+ tags: data.tags
1279
+ }
1280
+ });
1281
+ return decodeOne(response, webNotificationMapper);
1282
+ },
1283
+ async sendBulk (data) {
1284
+ const response = await transport.post('/web_notifications/bulk', {
1285
+ web_notification: {
1286
+ recipient_unique_ids: data.recipientUniqueIds,
1287
+ title: data.title,
1288
+ body: data.body,
1289
+ icon: data.icon,
1290
+ image_url: data.imageUrl,
1291
+ action_url: data.actionUrl,
1292
+ notification_type: data.notificationType,
1293
+ priority: data.priority,
1294
+ payload: data.payload,
1295
+ tags: data.tags
1296
+ }
1297
+ });
1298
+ var _response_sent, _response_failed;
1299
+ return {
1300
+ sent: Number((_response_sent = response.sent) != null ? _response_sent : 0),
1301
+ failed: Number((_response_failed = response.failed) != null ? _response_failed : 0)
1302
+ };
1303
+ },
1304
+ async markAsRead (uniqueId) {
1305
+ const response = await transport.put(`/web_notifications/${uniqueId}/read`, {});
1306
+ return decodeOne(response, webNotificationMapper);
1307
+ },
1308
+ async markAsClicked (uniqueId) {
1309
+ const response = await transport.put(`/web_notifications/${uniqueId}/click`, {});
1310
+ return decodeOne(response, webNotificationMapper);
1311
+ },
1312
+ async markAllAsRead (recipientUniqueId) {
1313
+ const response = await transport.put('/web_notifications/read_all', {
1314
+ recipient_unique_id: recipientUniqueId
1315
+ });
1316
+ var _response_updated;
1317
+ return {
1318
+ updated: Number((_response_updated = response.updated) != null ? _response_updated : 0)
1319
+ };
1320
+ },
1321
+ async delete (uniqueId) {
1322
+ await transport.delete(`/web_notifications/${uniqueId}`);
1323
+ }
1324
+ };
1325
+ }
1326
+
1105
1327
  function createConversationsBlock(transport, config) {
1106
1328
  return {
1107
1329
  messages: createMessagesService(transport),
@@ -1116,7 +1338,9 @@ function createConversationsBlock(transport, config) {
1116
1338
  availabilities: createAvailabilitiesService(transport),
1117
1339
  messageFiles: createMessageFilesService(transport),
1118
1340
  sources: createSourcesService(transport),
1119
- users: createUsersService(transport)
1341
+ users: createUsersService(transport),
1342
+ meetings: createMeetingsService(transport),
1343
+ webNotifications: createWebNotificationsService(transport)
1120
1344
  };
1121
1345
  }
1122
1346
  const conversationsBlockMetadata = {
@@ -1133,7 +1357,9 @@ const conversationsBlockMetadata = {
1133
1357
  'Context',
1134
1358
  'MessageFile',
1135
1359
  'Source',
1136
- 'User'
1360
+ 'User',
1361
+ 'Meeting',
1362
+ 'WebNotification'
1137
1363
  ]
1138
1364
  };
1139
1365
 
@@ -1,5 +1,5 @@
1
1
  import type { Transport, BlockConfig, BlockMetadata } from '@23blocks/contracts';
2
- import { type MessagesService, type DraftMessagesService, type GroupsService, type GroupInvitesService, type NotificationsService, type ConversationsService, type WebSocketTokensService, type ContextsService, type NotificationSettingsService, type AvailabilitiesService, type MessageFilesService, type SourcesService, type UsersService } from './services';
2
+ import { type MessagesService, type DraftMessagesService, type GroupsService, type GroupInvitesService, type NotificationsService, type ConversationsService, type WebSocketTokensService, type ContextsService, type NotificationSettingsService, type AvailabilitiesService, type MessageFilesService, type SourcesService, type UsersService, type MeetingsService, type WebNotificationsService } from './services';
3
3
  export interface ConversationsBlockConfig extends BlockConfig {
4
4
  appId: string;
5
5
  tenantId?: string;
@@ -18,6 +18,8 @@ export interface ConversationsBlock {
18
18
  messageFiles: MessageFilesService;
19
19
  sources: SourcesService;
20
20
  users: UsersService;
21
+ meetings: MeetingsService;
22
+ webNotifications: WebNotificationsService;
21
23
  }
22
24
  export declare function createConversationsBlock(transport: Transport, config: ConversationsBlockConfig): ConversationsBlock;
23
25
  export declare const conversationsBlockMetadata: BlockMetadata;
@@ -1 +1 @@
1
- {"version":3,"file":"conversations.block.d.ts","sourceRoot":"","sources":["../../../src/lib/conversations.block.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAcL,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,eAAe,CAAC;IAC1B,aAAa,EAAE,oBAAoB,CAAC;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,EAAE,mBAAmB,CAAC;IAClC,aAAa,EAAE,oBAAoB,CAAC;IACpC,aAAa,EAAE,oBAAoB,CAAC;IACpC,eAAe,EAAE,sBAAsB,CAAC;IACxC,QAAQ,EAAE,eAAe,CAAC;IAC1B,oBAAoB,EAAE,2BAA2B,CAAC;IAClD,cAAc,EAAE,qBAAqB,CAAC;IACtC,YAAY,EAAE,mBAAmB,CAAC;IAClC,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,wBAAwB,GAC/B,kBAAkB,CAgBpB;AAED,eAAO,MAAM,0BAA0B,EAAE,aAgBxC,CAAC"}
1
+ {"version":3,"file":"conversations.block.d.ts","sourceRoot":"","sources":["../../../src/lib/conversations.block.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAgBL,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC7B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,eAAe,CAAC;IAC1B,aAAa,EAAE,oBAAoB,CAAC;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,EAAE,mBAAmB,CAAC;IAClC,aAAa,EAAE,oBAAoB,CAAC;IACpC,aAAa,EAAE,oBAAoB,CAAC;IACpC,eAAe,EAAE,sBAAsB,CAAC;IACxC,QAAQ,EAAE,eAAe,CAAC;IAC1B,oBAAoB,EAAE,2BAA2B,CAAC;IAClD,cAAc,EAAE,qBAAqB,CAAC;IACtC,YAAY,EAAE,mBAAmB,CAAC;IAClC,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,gBAAgB,EAAE,uBAAuB,CAAC;CAC3C;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,wBAAwB,GAC/B,kBAAkB,CAkBpB;AAED,eAAO,MAAM,0BAA0B,EAAE,aAkBxC,CAAC"}
@@ -7,5 +7,7 @@ export * from './context.mapper';
7
7
  export * from './message-file.mapper';
8
8
  export * from './source.mapper';
9
9
  export * from './user.mapper';
10
+ export * from './meeting.mapper';
11
+ export * from './web-notification.mapper';
10
12
  export * from './utils';
11
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/mappers/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/mappers/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,SAAS,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ResourceMapper } from '@23blocks/jsonapi-codec';
2
+ import type { Meeting } from '../types/meeting';
3
+ export declare const meetingMapper: ResourceMapper<Meeting>;
4
+ //# sourceMappingURL=meeting.mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meeting.mapper.d.ts","sourceRoot":"","sources":["../../../../src/lib/mappers/meeting.mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGhD,eAAO,MAAM,aAAa,EAAE,cAAc,CAAC,OAAO,CA4BjD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ResourceMapper } from '@23blocks/jsonapi-codec';
2
+ import type { WebNotification } from '../types/web-notification';
3
+ export declare const webNotificationMapper: ResourceMapper<WebNotification>;
4
+ //# sourceMappingURL=web-notification.mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-notification.mapper.d.ts","sourceRoot":"","sources":["../../../../src/lib/mappers/web-notification.mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAWjE,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAAC,eAAe,CAwBjE,CAAC"}
@@ -11,4 +11,6 @@ export * from './availabilities.service';
11
11
  export * from './message-files.service';
12
12
  export * from './sources.service';
13
13
  export * from './users.service';
14
+ export * from './meetings.service';
15
+ export * from './web-notifications.service';
14
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { Transport, PageResult } from '@23blocks/contracts';
2
+ import type { Meeting, MeetingSession, CreateMeetingRequest, UpdateMeetingRequest, ListMeetingsParams } from '../types/meeting';
3
+ export interface MeetingsService {
4
+ list(params?: ListMeetingsParams): Promise<PageResult<Meeting>>;
5
+ get(uniqueId: string): Promise<Meeting>;
6
+ create(data: CreateMeetingRequest): Promise<Meeting>;
7
+ update(uniqueId: string, data: UpdateMeetingRequest): Promise<Meeting>;
8
+ delete(uniqueId: string): Promise<void>;
9
+ /**
10
+ * Create a session for joining a meeting
11
+ */
12
+ createSession(uniqueId: string): Promise<MeetingSession>;
13
+ /**
14
+ * Start a meeting
15
+ */
16
+ start(uniqueId: string): Promise<Meeting>;
17
+ /**
18
+ * End a meeting
19
+ */
20
+ end(uniqueId: string): Promise<Meeting>;
21
+ }
22
+ export declare function createMeetingsService(transport: Transport, _config: {
23
+ appId: string;
24
+ }): MeetingsService;
25
+ //# sourceMappingURL=meetings.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meetings.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/services/meetings.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAEzD;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1C;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzC;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,eAAe,CAkFvG"}
@@ -0,0 +1,21 @@
1
+ import type { Transport, PageResult } from '@23blocks/contracts';
2
+ import type { WebNotification, CreateWebNotificationRequest, BulkWebNotificationRequest, ListWebNotificationsParams } from '../types/web-notification';
3
+ export interface WebNotificationsService {
4
+ list(params?: ListWebNotificationsParams): Promise<PageResult<WebNotification>>;
5
+ get(uniqueId: string): Promise<WebNotification>;
6
+ send(data: CreateWebNotificationRequest): Promise<WebNotification>;
7
+ sendBulk(data: BulkWebNotificationRequest): Promise<{
8
+ sent: number;
9
+ failed: number;
10
+ }>;
11
+ markAsRead(uniqueId: string): Promise<WebNotification>;
12
+ markAsClicked(uniqueId: string): Promise<WebNotification>;
13
+ markAllAsRead(recipientUniqueId: string): Promise<{
14
+ updated: number;
15
+ }>;
16
+ delete(uniqueId: string): Promise<void>;
17
+ }
18
+ export declare function createWebNotificationsService(transport: Transport, _config: {
19
+ appId: string;
20
+ }): WebNotificationsService;
21
+ //# sourceMappingURL=web-notifications.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-notifications.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/services/web-notifications.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,KAAK,EACV,eAAe,EACf,4BAA4B,EAC5B,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,2BAA2B,CAAC;AAGnC,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,MAAM,CAAC,EAAE,0BAA0B,GAAG,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;IAChF,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAChD,IAAI,CAAC,IAAI,EAAE,4BAA4B,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACnE,QAAQ,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtF,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACvD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1D,aAAa,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,uBAAuB,CAoFvH"}
@@ -11,4 +11,6 @@ export * from './availability';
11
11
  export * from './message-file';
12
12
  export * from './source';
13
13
  export * from './user';
14
+ export * from './meeting';
15
+ export * from './web-notification';
14
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,64 @@
1
+ import type { IdentityCore, EntityStatus } from '@23blocks/contracts';
2
+ export interface Meeting extends IdentityCore {
3
+ title: string;
4
+ description?: string;
5
+ hostUniqueId: string;
6
+ conversationUniqueId?: string;
7
+ groupUniqueId?: string;
8
+ scheduledAt?: Date;
9
+ startedAt?: Date;
10
+ endedAt?: Date;
11
+ duration?: number;
12
+ meetingType: string;
13
+ meetingUrl?: string;
14
+ externalMeetingId?: string;
15
+ provider?: string;
16
+ maxParticipants?: number;
17
+ isRecording: boolean;
18
+ recordingUrl?: string;
19
+ status: EntityStatus;
20
+ enabled: boolean;
21
+ payload?: Record<string, unknown>;
22
+ }
23
+ export interface MeetingSession {
24
+ sessionId: string;
25
+ meetingUniqueId: string;
26
+ token: string;
27
+ joinUrl: string;
28
+ expiresAt: Date;
29
+ }
30
+ export interface CreateMeetingRequest {
31
+ title: string;
32
+ description?: string;
33
+ conversationUniqueId?: string;
34
+ groupUniqueId?: string;
35
+ scheduledAt?: string;
36
+ meetingType?: string;
37
+ maxParticipants?: number;
38
+ isRecording?: boolean;
39
+ provider?: string;
40
+ payload?: Record<string, unknown>;
41
+ }
42
+ export interface UpdateMeetingRequest {
43
+ title?: string;
44
+ description?: string;
45
+ scheduledAt?: string;
46
+ maxParticipants?: number;
47
+ isRecording?: boolean;
48
+ enabled?: boolean;
49
+ status?: EntityStatus;
50
+ payload?: Record<string, unknown>;
51
+ }
52
+ export interface ListMeetingsParams {
53
+ page?: number;
54
+ perPage?: number;
55
+ hostUniqueId?: string;
56
+ conversationUniqueId?: string;
57
+ groupUniqueId?: string;
58
+ status?: EntityStatus;
59
+ scheduledAfter?: string;
60
+ scheduledBefore?: string;
61
+ sortBy?: string;
62
+ sortOrder?: 'asc' | 'desc';
63
+ }
64
+ //# sourceMappingURL=meeting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meeting.d.ts","sourceRoot":"","sources":["../../../../src/lib/types/meeting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEtE,MAAM,WAAW,OAAQ,SAAQ,YAAY;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B"}
@@ -0,0 +1,54 @@
1
+ import type { IdentityCore, EntityStatus } from '@23blocks/contracts';
2
+ export interface WebNotification extends IdentityCore {
3
+ recipientUniqueId: string;
4
+ title: string;
5
+ body: string;
6
+ icon?: string;
7
+ imageUrl?: string;
8
+ actionUrl?: string;
9
+ notificationType: string;
10
+ priority: 'low' | 'normal' | 'high' | 'urgent';
11
+ sentAt?: Date;
12
+ readAt?: Date;
13
+ clickedAt?: Date;
14
+ status: EntityStatus;
15
+ enabled: boolean;
16
+ payload?: Record<string, unknown>;
17
+ tags?: string[];
18
+ }
19
+ export interface CreateWebNotificationRequest {
20
+ recipientUniqueId: string;
21
+ title: string;
22
+ body: string;
23
+ icon?: string;
24
+ imageUrl?: string;
25
+ actionUrl?: string;
26
+ notificationType?: string;
27
+ priority?: 'low' | 'normal' | 'high' | 'urgent';
28
+ payload?: Record<string, unknown>;
29
+ tags?: string[];
30
+ }
31
+ export interface BulkWebNotificationRequest {
32
+ recipientUniqueIds: string[];
33
+ title: string;
34
+ body: string;
35
+ icon?: string;
36
+ imageUrl?: string;
37
+ actionUrl?: string;
38
+ notificationType?: string;
39
+ priority?: 'low' | 'normal' | 'high' | 'urgent';
40
+ payload?: Record<string, unknown>;
41
+ tags?: string[];
42
+ }
43
+ export interface ListWebNotificationsParams {
44
+ page?: number;
45
+ perPage?: number;
46
+ recipientUniqueId?: string;
47
+ notificationType?: string;
48
+ priority?: 'low' | 'normal' | 'high' | 'urgent';
49
+ isRead?: boolean;
50
+ status?: EntityStatus;
51
+ sortBy?: string;
52
+ sortOrder?: 'asc' | 'desc';
53
+ }
54
+ //# sourceMappingURL=web-notification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-notification.d.ts","sourceRoot":"","sources":["../../../../src/lib/types/web-notification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEtE,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/C,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@23blocks/block-conversations",
3
- "version": "3.2.0",
3
+ "version": "3.3.0",
4
4
  "description": "Conversations block for 23blocks SDK - messaging, groups, notifications, and conversations management",
5
5
  "license": "MIT",
6
6
  "author": "23blocks <hello@23blocks.com>",