@messenger-box/platform-server 10.0.3-alpha.6 → 10.0.3-alpha.62

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.
Files changed (144) hide show
  1. package/lib/containers/containers.js +3 -1
  2. package/lib/containers/containers.js.map +1 -1
  3. package/lib/containers/context-services-from-container.d.ts +2 -2
  4. package/lib/containers/context-services-from-container.js +2 -1
  5. package/lib/containers/context-services-from-container.js.map +1 -1
  6. package/lib/graphql/resolvers/channel-member.d.ts +3 -3
  7. package/lib/graphql/resolvers/channel-member.js +30 -5
  8. package/lib/graphql/resolvers/channel-member.js.map +1 -1
  9. package/lib/graphql/resolvers/channel.d.ts +3 -3
  10. package/lib/graphql/resolvers/channel.js +275 -53
  11. package/lib/graphql/resolvers/channel.js.map +1 -1
  12. package/lib/graphql/resolvers/extended-token-account.d.ts +3 -32
  13. package/lib/graphql/resolvers/extended-token-account.js +90 -23
  14. package/lib/graphql/resolvers/extended-token-account.js.map +1 -1
  15. package/lib/graphql/resolvers/index.d.ts +1 -31
  16. package/lib/graphql/resolvers/post-thread.d.ts +2 -3
  17. package/lib/graphql/resolvers/post-thread.js +294 -132
  18. package/lib/graphql/resolvers/post-thread.js.map +1 -1
  19. package/lib/graphql/resolvers/post.d.ts +2 -3
  20. package/lib/graphql/resolvers/post.js +697 -234
  21. package/lib/graphql/resolvers/post.js.map +1 -1
  22. package/lib/graphql/resolvers/reaction.d.ts +3 -3
  23. package/lib/graphql/resolvers/reaction.js +96 -14
  24. package/lib/graphql/resolvers/reaction.js.map +1 -1
  25. package/lib/graphql/schema/channel-member.graphql +110 -21
  26. package/lib/graphql/schema/channel-member.graphql.js +1 -1
  27. package/lib/graphql/schema/channel.graphql +331 -38
  28. package/lib/graphql/schema/channel.graphql.js +1 -1
  29. package/lib/graphql/schema/post-thread.graphql +166 -21
  30. package/lib/graphql/schema/post-thread.graphql.js +1 -1
  31. package/lib/graphql/schema/post.graphql +280 -40
  32. package/lib/graphql/schema/post.graphql.js +1 -1
  33. package/lib/graphql/schema/reaction.graphql +71 -13
  34. package/lib/graphql/schema/reaction.graphql.js +1 -1
  35. package/lib/graphql/schema/services.graphql +2 -0
  36. package/lib/graphql/schema/users.graphql +76 -13
  37. package/lib/graphql/schema/users.graphql.js +1 -1
  38. package/lib/index.js +1 -1
  39. package/lib/index.js.map +1 -1
  40. package/lib/interfaces/index.d.ts +0 -1
  41. package/lib/interfaces/services.d.ts +1 -2
  42. package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.d.ts +17 -0
  43. package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.js +44 -0
  44. package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.js.map +1 -0
  45. package/lib/migrations/dbMigrations/index.d.ts +1 -0
  46. package/lib/migrations/index.d.ts +1 -0
  47. package/lib/migrations/mail-template-migration.js +1 -1
  48. package/lib/migrations/message-notification-template-migration.d.ts +1 -1
  49. package/lib/migrations/message-notification-template-migration.js +1 -1
  50. package/lib/plugins/channel-moleculer-service.d.ts +21 -1
  51. package/lib/plugins/channel-moleculer-service.js +417 -115
  52. package/lib/plugins/channel-moleculer-service.js.map +1 -1
  53. package/lib/plugins/extended-token-account-moleculer-service.d.ts +25 -1
  54. package/lib/plugins/extended-token-account-moleculer-service.js +348 -22
  55. package/lib/plugins/extended-token-account-moleculer-service.js.map +1 -1
  56. package/lib/plugins/messenger-notification-moleculer-service.d.ts +27 -3
  57. package/lib/plugins/messenger-notification-moleculer-service.js +404 -58
  58. package/lib/plugins/messenger-notification-moleculer-service.js.map +1 -1
  59. package/lib/plugins/post-moleculer-service.d.ts +85 -21
  60. package/lib/plugins/post-moleculer-service.js +986 -256
  61. package/lib/plugins/post-moleculer-service.js.map +1 -1
  62. package/lib/plugins/post-thread-moleculer-service.d.ts +33 -1
  63. package/lib/plugins/post-thread-moleculer-service.js +326 -8
  64. package/lib/plugins/post-thread-moleculer-service.js.map +1 -1
  65. package/lib/plugins/reaction-moleculer-service.js +1 -1
  66. package/lib/plugins/reaction-moleculer-service.js.map +1 -1
  67. package/lib/preferences/settings/post-settings.d.ts +2 -0
  68. package/lib/preferences/settings/post-settings.js +47 -9
  69. package/lib/preferences/settings/post-settings.js.map +1 -1
  70. package/lib/services/channel-service.d.ts +178 -33
  71. package/lib/services/channel-service.js +735 -276
  72. package/lib/services/channel-service.js.map +1 -1
  73. package/lib/services/extended-token-account-service.d.ts +130 -14
  74. package/lib/services/extended-token-account-service.js +462 -52
  75. package/lib/services/extended-token-account-service.js.map +1 -1
  76. package/lib/services/messenger-notification-service.d.ts +106 -13
  77. package/lib/services/messenger-notification-service.js +824 -442
  78. package/lib/services/messenger-notification-service.js.map +1 -1
  79. package/lib/services/post-service.d.ts +172 -16
  80. package/lib/services/post-service.js +580 -113
  81. package/lib/services/post-service.js.map +1 -1
  82. package/lib/services/post-thread-service.d.ts +114 -5
  83. package/lib/services/post-thread-service.js +400 -13
  84. package/lib/services/post-thread-service.js.map +1 -1
  85. package/lib/services/proxy-services/channel-microservice.d.ts +5 -3
  86. package/lib/services/proxy-services/channel-microservice.js +19 -10
  87. package/lib/services/proxy-services/channel-microservice.js.map +1 -1
  88. package/lib/services/proxy-services/messenger-notification-microservice.d.ts +128 -8
  89. package/lib/services/proxy-services/messenger-notification-microservice.js +324 -29
  90. package/lib/services/proxy-services/messenger-notification-microservice.js.map +1 -1
  91. package/lib/services/proxy-services/post-microservice.d.ts +186 -12
  92. package/lib/services/proxy-services/post-microservice.js +543 -54
  93. package/lib/services/proxy-services/post-microservice.js.map +1 -1
  94. package/lib/services/proxy-services/post-thread-microservice.d.ts +134 -3
  95. package/lib/services/proxy-services/post-thread-microservice.js +388 -6
  96. package/lib/services/proxy-services/post-thread-microservice.js.map +1 -1
  97. package/lib/services/proxy-services/reaction-microservice.d.ts +161 -3
  98. package/lib/services/proxy-services/reaction-microservice.js +474 -2
  99. package/lib/services/proxy-services/reaction-microservice.js.map +1 -1
  100. package/lib/services/reaction-service.d.ts +124 -4
  101. package/lib/services/reaction-service.js +415 -3
  102. package/lib/services/reaction-service.js.map +1 -1
  103. package/lib/store/models/account-token-store.d.ts +1 -1
  104. package/lib/store/models/account-token-store.js.map +1 -1
  105. package/lib/store/models/channel.d.ts +2 -3
  106. package/lib/store/models/channel.js +180 -71
  107. package/lib/store/models/channel.js.map +1 -1
  108. package/lib/store/models/post-thread.d.ts +3 -3
  109. package/lib/store/models/post-thread.js +96 -14
  110. package/lib/store/models/post-thread.js.map +1 -1
  111. package/lib/store/models/post.d.ts +2 -3
  112. package/lib/store/models/post.js +143 -23
  113. package/lib/store/models/post.js.map +1 -1
  114. package/lib/store/models/reaction.d.ts +2 -3
  115. package/lib/store/models/reaction.js +67 -8
  116. package/lib/store/models/reaction.js.map +1 -1
  117. package/lib/store/repositories/__tests__/__fixtures__/team-repository.d.ts +3 -3
  118. package/lib/store/repositories/channel-repository.d.ts +6 -6
  119. package/lib/store/repositories/channel-repository.js +5 -2
  120. package/lib/store/repositories/channel-repository.js.map +1 -1
  121. package/lib/store/repositories/post-repository.d.ts +6 -6
  122. package/lib/store/repositories/post-repository.js +5 -2
  123. package/lib/store/repositories/post-repository.js.map +1 -1
  124. package/lib/store/repositories/post-thread-repository.d.ts +6 -6
  125. package/lib/store/repositories/post-thread-repository.js +5 -2
  126. package/lib/store/repositories/post-thread-repository.js.map +1 -1
  127. package/lib/store/repositories/reaction-repository.d.ts +6 -6
  128. package/lib/store/repositories/reaction-repository.js +5 -2
  129. package/lib/store/repositories/reaction-repository.js.map +1 -1
  130. package/lib/templates/constants/SERVER_TYPES.ts.template +0 -3
  131. package/lib/templates/repositories/ChannelRepository.ts.template +3 -3
  132. package/lib/templates/repositories/PostRepository.ts.template +3 -3
  133. package/lib/templates/repositories/PostThreadRepository.ts.template +3 -3
  134. package/lib/templates/repositories/ReactionRepository.ts.template +3 -4
  135. package/lib/templates/services/ChannelService.ts.template +278 -39
  136. package/lib/templates/services/ExtendedTokenAccountService.ts.template +107 -3
  137. package/lib/templates/services/MessengerNotificationService.ts.template +94 -19
  138. package/lib/templates/services/PostService.ts.template +184 -20
  139. package/lib/templates/services/PostThreadService.ts.template +151 -6
  140. package/lib/templates/services/ReactionService.ts.template +129 -3
  141. package/package.json +4 -4
  142. package/lib/interfaces/context.d.ts +0 -14
  143. package/lib/store/models/common-options.js +0 -20
  144. package/lib/store/models/common-options.js.map +0 -1
@@ -1,21 +1,195 @@
1
1
  import { ServiceBroker } from 'moleculer';
2
- import { IFileInfo, IMessageIdentifier, MoleculerTopics as MoleculerTopics, IPost, IPostThread, IUploadedFileInput, IPostService, IPostServiceInput, CreatePostThreadOptions } from 'common';
2
+ import { IFileInfo, IMessageIdentifier, MoleculerTopics as MoleculerTopics, IPostModel, IPostThread, IUploadedFileInput, IPostService, IPostServiceInput, CreatePostThreadOptions, AsDomainType } from 'common/server';
3
3
  import { BaseProxyService } from '@common-stack/store-mongo';
4
4
  import { CdmLogger } from '@cdm-logger/core';
5
- export declare class PostProxyService extends BaseProxyService<IPost, IPostServiceInput, Partial<IPost>> implements IPostService {
5
+ import { Disposable, DisposableCollection } from '@adminide-stack/core';
6
+ /**
7
+ * Post Microservice Implementation
8
+ *
9
+ * This microservice handles comprehensive post management within the messenger platform,
10
+ * providing operations for creating, updating, managing posts and their associated
11
+ * content including file attachments, notifications, threading, and real-time
12
+ * message delivery across channels and organizations through service broker delegation.
13
+ *
14
+ * Key capabilities:
15
+ * - Post lifecycle management (creation, updates, deletion)
16
+ * - File attachment handling and upload management
17
+ * - Real-time message delivery and notifications
18
+ * - Post threading and conversation management
19
+ * - Message status tracking (read, delivered)
20
+ * - Channel integration and message counting
21
+ * - Expo push notification integration
22
+ * - File upload link generation and management
23
+ */
24
+ export declare class PostProxyService extends BaseProxyService<IPostModel, IPostServiceInput, Partial<IPostModel>> implements IPostService, Disposable {
6
25
  protected readonly logger: CdmLogger.ILogger;
26
+ protected readonly toDispose: DisposableCollection;
7
27
  topic: MoleculerTopics;
8
28
  constructor(broker: ServiceBroker, logger: CdmLogger.ILogger);
9
- attachUploadedFile(postId: string, file: IUploadedFileInput, createdBy: string): Promise<IFileInfo>;
10
- createFileUploadLink(postId: string, filename: string, userId: string): Promise<string>;
11
- attachUploadedFiles(postId: string, files: IUploadedFileInput[], createdBy: string): Promise<IFileInfo[]>;
12
- createFilesUploadLink(postId: string, filenames: string[], userId: string): Promise<string[]>;
13
- deleteFile(url: string): Promise<boolean>;
14
- readMessage(messageId: IMessageIdentifier, user: string): Promise<boolean>;
15
- deliverMessage(messageId: IMessageIdentifier, user: string): Promise<boolean>;
16
- createWithoutSubscription(data: IPostServiceInput): Promise<IPost>;
29
+ /**
30
+ * Disposes of resources used by the service
31
+ */
32
+ dispose(): void;
33
+ /**
34
+ * Creates a file upload link for a post
35
+ *
36
+ * @description Generates a secure upload URL for attaching files to posts
37
+ *
38
+ * @param {string} postId - The post identifier
39
+ * @param {string} filename - The name of the file to upload
40
+ * @param {string} userId - The user performing the upload
41
+ * @returns {Promise<string | Error>} - Upload URL or error
42
+ */
43
+ createFileUploadLink(postId: string, filename: string, userId: string): Promise<string | Error>;
44
+ /**
45
+ * Attaches an uploaded file to a post
46
+ *
47
+ * @description Processes and attaches a completed file upload to a post
48
+ *
49
+ * @param {string} postId - The post identifier
50
+ * @param {IUploadedFileInput} file - The uploaded file information
51
+ * @param {string} createdBy - The user who uploaded the file
52
+ * @returns {Promise<IFileInfo | Error>} - File information or error
53
+ */
54
+ attachUploadedFile(postId: string, file: IUploadedFileInput, createdBy: string): Promise<IFileInfo | Error>;
55
+ /**
56
+ * Creates upload links for multiple files
57
+ *
58
+ * @description Generates secure upload URLs for multiple files to be attached to a post
59
+ *
60
+ * @param {string} postId - The post identifier
61
+ * @param {string[]} filenames - Array of file names
62
+ * @param {string} userId - The user performing the uploads
63
+ * @returns {Promise<string[] | Error>} - Array of upload URLs or error
64
+ */
65
+ createFilesUploadLink(postId: string, filenames: string[], userId: string): Promise<string[] | Error>;
66
+ /**
67
+ * Attaches multiple uploaded files to a post
68
+ *
69
+ * @description Processes and attaches multiple completed file uploads to a post
70
+ *
71
+ * @param {string} postId - The post identifier
72
+ * @param {IUploadedFileInput[]} files - Array of uploaded file information
73
+ * @param {string} createdBy - The user who uploaded the files
74
+ * @returns {Promise<IFileInfo[] | Error>} - Array of file information or error
75
+ */
76
+ attachUploadedFiles(postId: string, files: IUploadedFileInput[], createdBy: string): Promise<IFileInfo[] | Error>;
77
+ /**
78
+ * Creates a new post with full integration
79
+ *
80
+ * @description Creates a post with channel updates, notifications, and real-time publishing
81
+ *
82
+ * @param {IPostServiceInput} data - Post creation data
83
+ * @returns {Promise<AsDomainType<IPostModel> | Error>} - Created post or error
84
+ */
85
+ create(data: IPostServiceInput): Promise<AsDomainType<IPostModel> | Error>;
86
+ /**
87
+ * Creates a post without real-time subscription
88
+ *
89
+ * @description Creates a post with channel updates but without real-time publishing
90
+ *
91
+ * @param {IPostServiceInput} data - Post creation data
92
+ * @returns {Promise<AsDomainType<IPostModel> | Error>} - Created post or error
93
+ */
94
+ createWithoutSubscription(data: IPostServiceInput): Promise<AsDomainType<IPostModel> | Error>;
95
+ /**
96
+ * Deletes a file by URL
97
+ *
98
+ * @description Removes a file from storage using its URL
99
+ *
100
+ * @param {string} url - The file URL to delete
101
+ * @returns {Promise<boolean | Error>} - Success status or error
102
+ */
103
+ deleteFile(url: string): Promise<boolean | Error>;
104
+ /**
105
+ * Marks a message as read by a user
106
+ *
107
+ * @description Updates message status to indicate it has been read by a specific user
108
+ *
109
+ * @param {IMessageIdentifier} messageId - Message identifier
110
+ * @param {string} user - User ID who read the message
111
+ * @returns {Promise<boolean | Error>} - Success status or error
112
+ */
113
+ readMessage(messageId: IMessageIdentifier, user: string): Promise<boolean | Error>;
114
+ /**
115
+ * Marks a message as delivered to a user
116
+ *
117
+ * @description Updates message status to indicate it has been delivered to a specific user
118
+ *
119
+ * @param {IMessageIdentifier} messageId - Message identifier
120
+ * @param {string} user - User ID who received the message
121
+ * @returns {Promise<boolean | Error>} - Success status or error
122
+ */
123
+ deliverMessage(messageId: IMessageIdentifier, user: string): Promise<boolean | Error>;
124
+ /**
125
+ * Creates a post with associated post thread
126
+ *
127
+ * @description Creates both a post and its associated thread for threaded conversations
128
+ *
129
+ * @param {CreatePostThreadOptions} data - Post and thread creation options
130
+ * @returns {Promise<{post: AsDomainType<IPostModel>; postThread: IPostThread} | Error>} - Created post and thread or error
131
+ */
17
132
  createPostWithPostThread(data: CreatePostThreadOptions): Promise<{
18
- post: IPost;
133
+ post: AsDomainType<IPostModel>;
19
134
  postThread: IPostThread;
20
- }>;
135
+ } | Error>;
136
+ /**
137
+ * Retrieves the last message in a channel
138
+ *
139
+ * @description Gets the most recent post/message from a specific channel
140
+ *
141
+ * @param {string} channelId - The channel identifier
142
+ * @returns {Promise<AsDomainType<IPostModel> | Error>} - Last message or error
143
+ */
144
+ getLastMessage(channelId: string): Promise<AsDomainType<IPostModel> | Error>;
145
+ /**
146
+ * Gets posts by channel with pagination
147
+ *
148
+ * @description Retrieves posts from a channel with pagination support
149
+ *
150
+ * @param {string} channelId - The channel identifier
151
+ * @param {number} limit - Maximum number of posts to return
152
+ * @param {number} offset - Number of posts to skip
153
+ * @returns {Promise<Array<AsDomainType<IPostModel>> | Error>} - Array of posts or error
154
+ */
155
+ getPostsByChannel(channelId: string, limit?: number, offset?: number): Promise<Array<AsDomainType<IPostModel>> | Error>;
156
+ /**
157
+ * Updates a post
158
+ *
159
+ * @description Updates post content and metadata
160
+ *
161
+ * @param {string} postId - The post identifier
162
+ * @param {Partial<IPostServiceInput>} updates - Update data
163
+ * @returns {Promise<AsDomainType<IPostModel> | Error>} - Updated post or error
164
+ */
165
+ updatePost(postId: string, updates: Partial<IPostServiceInput>): Promise<AsDomainType<IPostModel> | Error>;
166
+ /**
167
+ * Deletes a post
168
+ *
169
+ * @description Soft deletes a post and its associated data
170
+ *
171
+ * @param {string} postId - The post identifier
172
+ * @returns {Promise<boolean | Error>} - Success status or error
173
+ */
174
+ deletePost(postId: string): Promise<boolean | Error>;
175
+ /**
176
+ * Validates post data for creation or updates
177
+ *
178
+ * @description Helper method to validate post data before processing
179
+ *
180
+ * @param {IPostServiceInput} data - Data to validate
181
+ * @returns {Promise<boolean | Error>} - Validation result or error
182
+ */
183
+ validatePostData(data: IPostServiceInput): Promise<boolean | Error>;
184
+ /**
185
+ * Gets posts by author with pagination
186
+ *
187
+ * @description Convenience method to get posts created by a specific author
188
+ *
189
+ * @param {string} authorId - The author identifier
190
+ * @param {number} limit - Maximum number of posts to return
191
+ * @param {number} offset - Number of posts to skip
192
+ * @returns {Promise<Array<AsDomainType<IPostModel>> | Error>} - Array of posts or error
193
+ */
194
+ getPostsByAuthor(authorId: string, limit?: number, offset?: number): Promise<Array<AsDomainType<IPostModel>> | Error>;
21
195
  }