@23blocks/block-conversations 3.0.1 → 3.2.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
@@ -46,6 +46,15 @@ import { decodePageResult, decodeOne, decodeMany } from '@23blocks/jsonapi-codec
46
46
  }
47
47
  return undefined;
48
48
  }
49
+ /**
50
+ * Parse a number value
51
+ */ function parseNumber(value) {
52
+ if (value === null || value === undefined) {
53
+ return 0;
54
+ }
55
+ const num = Number(value);
56
+ return isNaN(num) ? 0 : num;
57
+ }
49
58
  /**
50
59
  * Parse an optional number value
51
60
  */ function parseOptionalNumber(value) {
@@ -480,6 +489,71 @@ function createGroupsService(transport, _config) {
480
489
  };
481
490
  }
482
491
 
492
+ const groupInviteMapper = {
493
+ type: 'GroupInvite',
494
+ map (resource, _included) {
495
+ var _resource_attributes;
496
+ const attrs = (_resource_attributes = resource.attributes) != null ? _resource_attributes : {};
497
+ var _parseString, _parseString1, _parseString2;
498
+ return {
499
+ id: resource.id,
500
+ uniqueId: (_parseString = parseString(attrs.unique_id)) != null ? _parseString : resource.id,
501
+ groupUniqueId: (_parseString1 = parseString(attrs.group_unique_id)) != null ? _parseString1 : '',
502
+ code: (_parseString2 = parseString(attrs.code)) != null ? _parseString2 : '',
503
+ inviterUniqueId: parseString(attrs.inviter_unique_id),
504
+ maxUses: attrs.max_uses != null ? parseNumber(attrs.max_uses) : undefined,
505
+ usesCount: attrs.uses_count != null ? parseNumber(attrs.uses_count) : undefined,
506
+ expiresAt: parseDate(attrs.expires_at),
507
+ status: parseStatus(attrs.status),
508
+ createdAt: parseDate(attrs.created_at),
509
+ updatedAt: parseDate(attrs.updated_at)
510
+ };
511
+ }
512
+ };
513
+
514
+ function createGroupInvitesService(transport, _config) {
515
+ return {
516
+ async list (groupUniqueId, params) {
517
+ const queryParams = {};
518
+ if (params == null ? void 0 : params.page) queryParams['page'] = String(params.page);
519
+ if (params == null ? void 0 : params.perPage) queryParams['records'] = String(params.perPage);
520
+ if (params == null ? void 0 : params.status) queryParams['status'] = params.status;
521
+ const response = await transport.get(`/groups/${groupUniqueId}/invites`, {
522
+ params: queryParams
523
+ });
524
+ return decodePageResult(response, groupInviteMapper);
525
+ },
526
+ async create (groupUniqueId, data) {
527
+ const response = await transport.post(`/groups/${groupUniqueId}/invites`, {
528
+ invite: {
529
+ max_uses: data == null ? void 0 : data.maxUses,
530
+ expires_at: data == null ? void 0 : data.expiresAt
531
+ }
532
+ });
533
+ return decodeOne(response, groupInviteMapper);
534
+ },
535
+ async revoke (groupUniqueId, code) {
536
+ await transport.delete(`/groups/${groupUniqueId}/invites/${code}`);
537
+ },
538
+ async getQRCode (groupUniqueId, code) {
539
+ const response = await transport.get(`/groups/${groupUniqueId}/invites/${code}/qr`);
540
+ // QR code endpoint typically returns the QR data directly
541
+ const data = response;
542
+ var _data_qr_code, _ref, _data_invite_url, _ref1;
543
+ return {
544
+ qrCode: (_ref = (_data_qr_code = data.qr_code) != null ? _data_qr_code : data.qrCode) != null ? _ref : '',
545
+ inviteUrl: (_ref1 = (_data_invite_url = data.invite_url) != null ? _data_invite_url : data.inviteUrl) != null ? _ref1 : ''
546
+ };
547
+ },
548
+ async join (code, data) {
549
+ const response = await transport.post(`/groups/join/${code}`, {
550
+ user_unique_id: data == null ? void 0 : data.userUniqueId
551
+ });
552
+ return decodeOne(response, groupMapper);
553
+ }
554
+ };
555
+ }
556
+
483
557
  const notificationMapper = {
484
558
  type: 'Notification',
485
559
  map: (resource)=>({
@@ -1033,6 +1107,7 @@ function createConversationsBlock(transport, config) {
1033
1107
  messages: createMessagesService(transport),
1034
1108
  draftMessages: createDraftMessagesService(transport),
1035
1109
  groups: createGroupsService(transport),
1110
+ groupInvites: createGroupInvitesService(transport),
1036
1111
  notifications: createNotificationsService(transport),
1037
1112
  conversations: createConversationsService(transport),
1038
1113
  websocketTokens: createWebSocketTokensService(transport),
@@ -1052,6 +1127,7 @@ const conversationsBlockMetadata = {
1052
1127
  'Message',
1053
1128
  'DraftMessage',
1054
1129
  'Group',
1130
+ 'GroupInvite',
1055
1131
  'Notification',
1056
1132
  'Conversation',
1057
1133
  'Context',
@@ -1,5 +1,5 @@
1
1
  import type { Transport, BlockConfig, BlockMetadata } from '@23blocks/contracts';
2
- import { type MessagesService, type DraftMessagesService, type GroupsService, 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 } from './services';
3
3
  export interface ConversationsBlockConfig extends BlockConfig {
4
4
  appId: string;
5
5
  tenantId?: string;
@@ -8,6 +8,7 @@ export interface ConversationsBlock {
8
8
  messages: MessagesService;
9
9
  draftMessages: DraftMessagesService;
10
10
  groups: GroupsService;
11
+ groupInvites: GroupInvitesService;
11
12
  notifications: NotificationsService;
12
13
  conversations: ConversationsService;
13
14
  websocketTokens: WebSocketTokensService;
@@ -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,EAaL,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,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,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,CAepB;AAED,eAAO,MAAM,0BAA0B,EAAE,aAexC,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,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"}
@@ -0,0 +1,4 @@
1
+ import type { ResourceMapper } from '@23blocks/jsonapi-codec';
2
+ import type { GroupInvite } from '../types/group-invite';
3
+ export declare const groupInviteMapper: ResourceMapper<GroupInvite>;
4
+ //# sourceMappingURL=group-invite.mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-invite.mapper.d.ts","sourceRoot":"","sources":["../../../../src/lib/mappers/group-invite.mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAgC,MAAM,yBAAyB,CAAC;AAC5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,WAAW,CAkBzD,CAAC"}
@@ -1,6 +1,7 @@
1
1
  export * from './message.mapper';
2
2
  export * from './draft-message.mapper';
3
3
  export * from './group.mapper';
4
+ export * from './group-invite.mapper';
4
5
  export * from './notification.mapper';
5
6
  export * from './context.mapper';
6
7
  export * from './message-file.mapper';
@@ -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,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,SAAS,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { Transport, PageResult } from '@23blocks/contracts';
2
+ import type { GroupInvite, CreateGroupInviteRequest, JoinGroupRequest, QRCodeResponse, ListGroupInvitesParams } from '../types/group-invite';
3
+ import type { Group } from '../types/group';
4
+ /**
5
+ * Group Invites Service - manages group invitation links
6
+ */
7
+ export interface GroupInvitesService {
8
+ /**
9
+ * List all invites for a group
10
+ */
11
+ list(groupUniqueId: string, params?: ListGroupInvitesParams): Promise<PageResult<GroupInvite>>;
12
+ /**
13
+ * Create a new invite for a group
14
+ */
15
+ create(groupUniqueId: string, data?: CreateGroupInviteRequest): Promise<GroupInvite>;
16
+ /**
17
+ * Revoke an invite
18
+ */
19
+ revoke(groupUniqueId: string, code: string): Promise<void>;
20
+ /**
21
+ * Get QR code for an invite
22
+ */
23
+ getQRCode(groupUniqueId: string, code: string): Promise<QRCodeResponse>;
24
+ /**
25
+ * Join a group using an invite code
26
+ */
27
+ join(code: string, data?: JoinGroupRequest): Promise<Group>;
28
+ }
29
+ export declare function createGroupInvitesService(transport: Transport, _config: {
30
+ appId: string;
31
+ }): GroupInvitesService;
32
+ //# sourceMappingURL=group-invites.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-invites.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/services/group-invites.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,KAAK,EACV,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAI5C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IAE/F;;OAEG;IACH,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAErF;;OAEG;IACH,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D;;OAEG;IACH,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAExE;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CAC7D;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,mBAAmB,CA8C/G"}
@@ -1,6 +1,7 @@
1
1
  export * from './messages.service';
2
2
  export * from './draft-messages.service';
3
3
  export * from './groups.service';
4
+ export * from './group-invites.service';
4
5
  export * from './notifications.service';
5
6
  export * from './conversations.service';
6
7
  export * from './websocket-tokens.service';
@@ -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,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"}
@@ -0,0 +1,42 @@
1
+ import type { IdentityCore, EntityStatus } from '@23blocks/contracts';
2
+ /**
3
+ * Group Invite - invitation to join a group
4
+ */
5
+ export interface GroupInvite extends IdentityCore {
6
+ groupUniqueId: string;
7
+ code: string;
8
+ inviterUniqueId?: string;
9
+ maxUses?: number;
10
+ usesCount?: number;
11
+ expiresAt?: Date;
12
+ status: EntityStatus;
13
+ }
14
+ /**
15
+ * Create group invite request
16
+ */
17
+ export interface CreateGroupInviteRequest {
18
+ maxUses?: number;
19
+ expiresAt?: string;
20
+ }
21
+ /**
22
+ * Join group request (using invite code)
23
+ */
24
+ export interface JoinGroupRequest {
25
+ userUniqueId?: string;
26
+ }
27
+ /**
28
+ * QR code response
29
+ */
30
+ export interface QRCodeResponse {
31
+ qrCode: string;
32
+ inviteUrl: string;
33
+ }
34
+ /**
35
+ * List group invites params
36
+ */
37
+ export interface ListGroupInvitesParams {
38
+ page?: number;
39
+ perPage?: number;
40
+ status?: EntityStatus;
41
+ }
42
+ //# sourceMappingURL=group-invite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-invite.d.ts","sourceRoot":"","sources":["../../../../src/lib/types/group-invite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB"}
@@ -1,6 +1,7 @@
1
1
  export * from './message';
2
2
  export * from './draft-message';
3
3
  export * from './group';
4
+ export * from './group-invite';
4
5
  export * from './notification';
5
6
  export * from './conversation';
6
7
  export * from './websocket-token';
@@ -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,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@23blocks/block-conversations",
3
- "version": "3.0.1",
3
+ "version": "3.2.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>",