@messenger-box/platform-server 10.0.3-alpha.7 → 10.0.3-alpha.72
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/lib/containers/containers.js +4 -1
- package/lib/containers/containers.js.map +1 -1
- package/lib/containers/context-services-from-container.d.ts +1 -1
- package/lib/containers/context-services-from-container.js +1 -1
- package/lib/containers/context-services-from-container.js.map +1 -1
- package/lib/graphql/resolvers/channel-member.d.ts +3 -2
- package/lib/graphql/resolvers/channel-member.js +30 -5
- package/lib/graphql/resolvers/channel-member.js.map +1 -1
- package/lib/graphql/resolvers/channel.d.ts +3 -2
- package/lib/graphql/resolvers/channel.js +279 -53
- package/lib/graphql/resolvers/channel.js.map +1 -1
- package/lib/graphql/resolvers/extended-token-account.d.ts +3 -2
- package/lib/graphql/resolvers/extended-token-account.js +90 -23
- package/lib/graphql/resolvers/extended-token-account.js.map +1 -1
- package/lib/graphql/resolvers/index.d.ts +1 -1
- package/lib/graphql/resolvers/post-thread.d.ts +1 -1
- package/lib/graphql/resolvers/post-thread.js +294 -132
- package/lib/graphql/resolvers/post-thread.js.map +1 -1
- package/lib/graphql/resolvers/post.d.ts +2 -3
- package/lib/graphql/resolvers/post.js +696 -234
- package/lib/graphql/resolvers/post.js.map +1 -1
- package/lib/graphql/resolvers/reaction.d.ts +3 -2
- package/lib/graphql/resolvers/reaction.js +96 -14
- package/lib/graphql/resolvers/reaction.js.map +1 -1
- package/lib/graphql/schema/channel-member.graphql +110 -21
- package/lib/graphql/schema/channel-member.graphql.js +1 -1
- package/lib/graphql/schema/channel.graphql +337 -38
- package/lib/graphql/schema/channel.graphql.js +1 -1
- package/lib/graphql/schema/post-thread.graphql +167 -21
- package/lib/graphql/schema/post-thread.graphql.js +1 -1
- package/lib/graphql/schema/post.graphql +284 -40
- package/lib/graphql/schema/post.graphql.js +1 -1
- package/lib/graphql/schema/reaction.graphql +71 -13
- package/lib/graphql/schema/reaction.graphql.js +1 -1
- package/lib/graphql/schema/services.graphql +2 -0
- package/lib/graphql/schema/users.graphql +76 -13
- package/lib/graphql/schema/users.graphql.js +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/interfaces/index.d.ts +0 -1
- package/lib/interfaces/services.d.ts +1 -1
- package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.d.ts +17 -0
- package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.js +44 -0
- package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.js.map +1 -0
- package/lib/migrations/dbMigrations/index.d.ts +1 -0
- package/lib/migrations/index.d.ts +1 -0
- package/lib/migrations/mail-template-migration.js +1 -1
- package/lib/migrations/message-notification-template-migration.d.ts +1 -1
- package/lib/migrations/message-notification-template-migration.js +1 -1
- package/lib/plugins/channel-moleculer-service.d.ts +21 -1
- package/lib/plugins/channel-moleculer-service.js +417 -115
- package/lib/plugins/channel-moleculer-service.js.map +1 -1
- package/lib/plugins/extended-token-account-moleculer-service.d.ts +25 -1
- package/lib/plugins/extended-token-account-moleculer-service.js +348 -22
- package/lib/plugins/extended-token-account-moleculer-service.js.map +1 -1
- package/lib/plugins/messenger-notification-moleculer-service.d.ts +27 -3
- package/lib/plugins/messenger-notification-moleculer-service.js +404 -58
- package/lib/plugins/messenger-notification-moleculer-service.js.map +1 -1
- package/lib/plugins/post-moleculer-service.d.ts +85 -21
- package/lib/plugins/post-moleculer-service.js +986 -256
- package/lib/plugins/post-moleculer-service.js.map +1 -1
- package/lib/plugins/post-thread-moleculer-service.d.ts +33 -1
- package/lib/plugins/post-thread-moleculer-service.js +326 -8
- package/lib/plugins/post-thread-moleculer-service.js.map +1 -1
- package/lib/plugins/reaction-moleculer-service.js +1 -1
- package/lib/plugins/reaction-moleculer-service.js.map +1 -1
- package/lib/preferences/settings/post-settings.d.ts +2 -0
- package/lib/preferences/settings/post-settings.js +47 -9
- package/lib/preferences/settings/post-settings.js.map +1 -1
- package/lib/services/channel-service.d.ts +179 -33
- package/lib/services/channel-service.js +821 -274
- package/lib/services/channel-service.js.map +1 -1
- package/lib/services/extended-token-account-service.d.ts +130 -14
- package/lib/services/extended-token-account-service.js +462 -52
- package/lib/services/extended-token-account-service.js.map +1 -1
- package/lib/services/index.d.ts +1 -0
- package/lib/services/messenger-notification-service.d.ts +106 -13
- package/lib/services/messenger-notification-service.js +824 -442
- package/lib/services/messenger-notification-service.js.map +1 -1
- package/lib/services/post-service.d.ts +182 -16
- package/lib/services/post-service.js +731 -115
- package/lib/services/post-service.js.map +1 -1
- package/lib/services/post-thread-service.d.ts +114 -5
- package/lib/services/post-thread-service.js +400 -13
- package/lib/services/post-thread-service.js.map +1 -1
- package/lib/services/proxy-services/channel-microservice.d.ts +5 -3
- package/lib/services/proxy-services/channel-microservice.js +19 -10
- package/lib/services/proxy-services/channel-microservice.js.map +1 -1
- package/lib/services/proxy-services/messenger-notification-microservice.d.ts +128 -8
- package/lib/services/proxy-services/messenger-notification-microservice.js +324 -29
- package/lib/services/proxy-services/messenger-notification-microservice.js.map +1 -1
- package/lib/services/proxy-services/post-microservice.d.ts +186 -12
- package/lib/services/proxy-services/post-microservice.js +543 -54
- package/lib/services/proxy-services/post-microservice.js.map +1 -1
- package/lib/services/proxy-services/post-thread-microservice.d.ts +134 -3
- package/lib/services/proxy-services/post-thread-microservice.js +388 -6
- package/lib/services/proxy-services/post-thread-microservice.js.map +1 -1
- package/lib/services/proxy-services/reaction-microservice.d.ts +161 -3
- package/lib/services/proxy-services/reaction-microservice.js +474 -2
- package/lib/services/proxy-services/reaction-microservice.js.map +1 -1
- package/lib/services/reaction-service.d.ts +124 -4
- package/lib/services/reaction-service.js +415 -3
- package/lib/services/reaction-service.js.map +1 -1
- package/lib/services/redis-cache-manager.d.ts +18 -0
- package/lib/services/redis-cache-manager.js +83 -0
- package/lib/services/redis-cache-manager.js.map +1 -0
- package/lib/store/models/account-token-store.d.ts +1 -1
- package/lib/store/models/account-token-store.js.map +1 -1
- package/lib/store/models/channel.d.ts +2 -3
- package/lib/store/models/channel.js +181 -72
- package/lib/store/models/channel.js.map +1 -1
- package/lib/store/models/post-thread.d.ts +3 -3
- package/lib/store/models/post-thread.js +96 -14
- package/lib/store/models/post-thread.js.map +1 -1
- package/lib/store/models/post.d.ts +2 -3
- package/lib/store/models/post.js +143 -23
- package/lib/store/models/post.js.map +1 -1
- package/lib/store/models/reaction.d.ts +2 -3
- package/lib/store/models/reaction.js +67 -8
- package/lib/store/models/reaction.js.map +1 -1
- package/lib/store/repositories/__tests__/__fixtures__/team-repository.d.ts +3 -3
- package/lib/store/repositories/channel-repository.d.ts +6 -6
- package/lib/store/repositories/channel-repository.js +5 -2
- package/lib/store/repositories/channel-repository.js.map +1 -1
- package/lib/store/repositories/post-repository.d.ts +6 -6
- package/lib/store/repositories/post-repository.js +5 -2
- package/lib/store/repositories/post-repository.js.map +1 -1
- package/lib/store/repositories/post-thread-repository.d.ts +6 -6
- package/lib/store/repositories/post-thread-repository.js +5 -2
- package/lib/store/repositories/post-thread-repository.js.map +1 -1
- package/lib/store/repositories/reaction-repository.d.ts +6 -6
- package/lib/store/repositories/reaction-repository.js +5 -2
- package/lib/store/repositories/reaction-repository.js.map +1 -1
- package/lib/templates/constants/SERVER_TYPES.ts.template +0 -3
- package/lib/templates/repositories/ChannelRepository.ts.template +3 -3
- package/lib/templates/repositories/PostRepository.ts.template +3 -3
- package/lib/templates/repositories/PostThreadRepository.ts.template +3 -3
- package/lib/templates/repositories/ReactionRepository.ts.template +3 -4
- package/lib/templates/services/ChannelService.ts.template +280 -39
- package/lib/templates/services/ExtendedTokenAccountService.ts.template +104 -9
- package/lib/templates/services/MessengerNotificationService.ts.template +94 -19
- package/lib/templates/services/PostService.ts.template +184 -20
- package/lib/templates/services/PostThreadService.ts.template +151 -6
- package/lib/templates/services/ReactionService.ts.template +129 -3
- package/lib/templates/services/RedisCacheManager.ts.template +22 -0
- package/package.json +6 -5
- package/lib/interfaces/context.d.ts +0 -14
- package/lib/store/models/common-options.js +0 -20
- 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,
|
|
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
|
-
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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:
|
|
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
|
}
|