@noatgnu/cupcake-mint-chocolate 1.0.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/README.md ADDED
@@ -0,0 +1,63 @@
1
+ # CupcakeMintChocolate
2
+
3
+ This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.1.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
8
+
9
+ ```bash
10
+ ng generate component component-name
11
+ ```
12
+
13
+ For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
14
+
15
+ ```bash
16
+ ng generate --help
17
+ ```
18
+
19
+ ## Building
20
+
21
+ To build the library, run:
22
+
23
+ ```bash
24
+ ng build cupcake-mint-chocolate
25
+ ```
26
+
27
+ This command will compile your project, and the build artifacts will be placed in the `dist/` directory.
28
+
29
+ ### Publishing the Library
30
+
31
+ Once the project is built, you can publish your library by following these steps:
32
+
33
+ 1. Navigate to the `dist` directory:
34
+ ```bash
35
+ cd dist/cupcake-mint-chocolate
36
+ ```
37
+
38
+ 2. Run the `npm publish` command to publish your library to the npm registry:
39
+ ```bash
40
+ npm publish
41
+ ```
42
+
43
+ ## Running unit tests
44
+
45
+ To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:
46
+
47
+ ```bash
48
+ ng test
49
+ ```
50
+
51
+ ## Running end-to-end tests
52
+
53
+ For end-to-end (e2e) testing, run:
54
+
55
+ ```bash
56
+ ng e2e
57
+ ```
58
+
59
+ Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
60
+
61
+ ## Additional Resources
62
+
63
+ For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
@@ -0,0 +1,534 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, Injectable, inject } from '@angular/core';
3
+ import { BaseApiService } from '@cupcake/core';
4
+ import { HttpClient, HttpParams } from '@angular/common/http';
5
+
6
+ class CupcakeMintChocolate {
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CupcakeMintChocolate, deps: [], target: i0.ɵɵFactoryTarget.Component });
8
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.7", type: CupcakeMintChocolate, isStandalone: true, selector: "ccmc-cupcake-mint-chocolate", ngImport: i0, template: `
9
+ <p>
10
+ cupcake-mint-chocolate works!
11
+ </p>
12
+ `, isInline: true, styles: [""] });
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CupcakeMintChocolate, decorators: [{
15
+ type: Component,
16
+ args: [{ selector: 'ccmc-cupcake-mint-chocolate', imports: [], template: `
17
+ <p>
18
+ cupcake-mint-chocolate works!
19
+ </p>
20
+ ` }]
21
+ }] });
22
+
23
+ var NotificationType;
24
+ (function (NotificationType) {
25
+ NotificationType["SYSTEM"] = "system";
26
+ NotificationType["MAINTENANCE"] = "maintenance";
27
+ NotificationType["INVENTORY"] = "inventory";
28
+ NotificationType["BILLING"] = "billing";
29
+ NotificationType["PROJECT"] = "project";
30
+ NotificationType["PROTOCOL"] = "protocol";
31
+ NotificationType["DOCUMENT"] = "document";
32
+ NotificationType["USER"] = "user";
33
+ })(NotificationType || (NotificationType = {}));
34
+ const NotificationTypeLabels = {
35
+ [NotificationType.SYSTEM]: 'System',
36
+ [NotificationType.MAINTENANCE]: 'Maintenance',
37
+ [NotificationType.INVENTORY]: 'Inventory',
38
+ [NotificationType.BILLING]: 'Billing',
39
+ [NotificationType.PROJECT]: 'Project',
40
+ [NotificationType.PROTOCOL]: 'Protocol',
41
+ [NotificationType.DOCUMENT]: 'Document',
42
+ [NotificationType.USER]: 'User'
43
+ };
44
+ var NotificationPriority;
45
+ (function (NotificationPriority) {
46
+ NotificationPriority["LOW"] = "low";
47
+ NotificationPriority["NORMAL"] = "normal";
48
+ NotificationPriority["HIGH"] = "high";
49
+ NotificationPriority["URGENT"] = "urgent";
50
+ })(NotificationPriority || (NotificationPriority = {}));
51
+ const NotificationPriorityLabels = {
52
+ [NotificationPriority.LOW]: 'Low',
53
+ [NotificationPriority.NORMAL]: 'Normal',
54
+ [NotificationPriority.HIGH]: 'High',
55
+ [NotificationPriority.URGENT]: 'Urgent'
56
+ };
57
+ var DeliveryStatus;
58
+ (function (DeliveryStatus) {
59
+ DeliveryStatus["PENDING"] = "pending";
60
+ DeliveryStatus["SENT"] = "sent";
61
+ DeliveryStatus["DELIVERED"] = "delivered";
62
+ DeliveryStatus["FAILED"] = "failed";
63
+ DeliveryStatus["READ"] = "read";
64
+ })(DeliveryStatus || (DeliveryStatus = {}));
65
+ const DeliveryStatusLabels = {
66
+ [DeliveryStatus.PENDING]: 'Pending',
67
+ [DeliveryStatus.SENT]: 'Sent',
68
+ [DeliveryStatus.DELIVERED]: 'Delivered',
69
+ [DeliveryStatus.FAILED]: 'Failed',
70
+ [DeliveryStatus.READ]: 'Read'
71
+ };
72
+ var MessageType;
73
+ (function (MessageType) {
74
+ MessageType["DIRECT"] = "direct";
75
+ MessageType["THREAD"] = "thread";
76
+ MessageType["BROADCAST"] = "broadcast";
77
+ MessageType["SYSTEM"] = "system";
78
+ })(MessageType || (MessageType = {}));
79
+ const MessageTypeLabels = {
80
+ [MessageType.DIRECT]: 'Direct Message',
81
+ [MessageType.THREAD]: 'Thread Reply',
82
+ [MessageType.BROADCAST]: 'Broadcast',
83
+ [MessageType.SYSTEM]: 'System Message'
84
+ };
85
+
86
+ class NotificationService extends BaseApiService {
87
+ /**
88
+ * Get all notifications with optional filtering
89
+ */
90
+ getNotifications(params) {
91
+ const httpParams = this.buildHttpParams(params);
92
+ return this.get(`${this.apiUrl}/notifications/`, { params: httpParams });
93
+ }
94
+ /**
95
+ * Get a single notification by ID
96
+ */
97
+ getNotification(id) {
98
+ return this.get(`${this.apiUrl}/notifications/${id}/`);
99
+ }
100
+ /**
101
+ * Create a new notification
102
+ */
103
+ createNotification(notification) {
104
+ return this.post(`${this.apiUrl}/notifications/`, notification);
105
+ }
106
+ /**
107
+ * Update an existing notification
108
+ */
109
+ updateNotification(id, notification) {
110
+ return this.put(`${this.apiUrl}/notifications/${id}/`, notification);
111
+ }
112
+ /**
113
+ * Partially update a notification
114
+ */
115
+ patchNotification(id, notification) {
116
+ return this.patch(`${this.apiUrl}/notifications/${id}/`, notification);
117
+ }
118
+ /**
119
+ * Delete a notification
120
+ */
121
+ deleteNotification(id) {
122
+ return this.delete(`${this.apiUrl}/notifications/${id}/`);
123
+ }
124
+ /**
125
+ * Mark a notification as read/unread
126
+ */
127
+ markNotificationRead(id, request) {
128
+ return this.post(`${this.apiUrl}/notifications/${id}/mark_read/`, request);
129
+ }
130
+ /**
131
+ * Get unread notifications for current user
132
+ */
133
+ getUnreadNotifications() {
134
+ return this.get(`${this.apiUrl}/notifications/unread/`);
135
+ }
136
+ /**
137
+ * Get notification statistics for current user
138
+ */
139
+ getNotificationStats() {
140
+ return this.get(`${this.apiUrl}/notifications/stats/`);
141
+ }
142
+ /**
143
+ * Mark all notifications as read for current user
144
+ */
145
+ markAllNotificationsRead() {
146
+ return this.post(`${this.apiUrl}/notifications/mark_all_read/`, {});
147
+ }
148
+ /**
149
+ * Search notifications by title or message
150
+ */
151
+ searchNotifications(query) {
152
+ return this.getNotifications({ search: query });
153
+ }
154
+ /**
155
+ * Get notifications by type
156
+ */
157
+ getNotificationsByType(type) {
158
+ return this.getNotifications({ notificationType: type });
159
+ }
160
+ /**
161
+ * Get notifications by priority
162
+ */
163
+ getNotificationsByPriority(priority) {
164
+ return this.getNotifications({ priority });
165
+ }
166
+ /**
167
+ * Get notifications by sender
168
+ */
169
+ getNotificationsBySender(senderId) {
170
+ return this.getNotifications({ sender: senderId });
171
+ }
172
+ /**
173
+ * Get notifications by delivery status
174
+ */
175
+ getNotificationsByStatus(status) {
176
+ return this.getNotifications({ deliveryStatus: status });
177
+ }
178
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: NotificationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
179
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: NotificationService, providedIn: 'root' });
180
+ }
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: NotificationService, decorators: [{
182
+ type: Injectable,
183
+ args: [{
184
+ providedIn: 'root'
185
+ }]
186
+ }] });
187
+
188
+ class MessageThreadService extends BaseApiService {
189
+ /**
190
+ * Get all message threads with optional filtering
191
+ */
192
+ getMessageThreads(params) {
193
+ const httpParams = this.buildHttpParams(params);
194
+ return this.get(`${this.apiUrl}/threads/`, { params: httpParams });
195
+ }
196
+ /**
197
+ * Get a single message thread by ID
198
+ */
199
+ getMessageThread(id) {
200
+ return this.get(`${this.apiUrl}/threads/${id}/`);
201
+ }
202
+ /**
203
+ * Create a new message thread
204
+ */
205
+ createMessageThread(thread) {
206
+ return this.post(`${this.apiUrl}/threads/`, thread);
207
+ }
208
+ /**
209
+ * Update an existing message thread
210
+ */
211
+ updateMessageThread(id, thread) {
212
+ return this.put(`${this.apiUrl}/threads/${id}/`, thread);
213
+ }
214
+ /**
215
+ * Partially update a message thread
216
+ */
217
+ patchMessageThread(id, thread) {
218
+ return this.patch(`${this.apiUrl}/threads/${id}/`, thread);
219
+ }
220
+ /**
221
+ * Delete a message thread
222
+ */
223
+ deleteMessageThread(id) {
224
+ return this.delete(`${this.apiUrl}/threads/${id}/`);
225
+ }
226
+ /**
227
+ * Add participant to a thread
228
+ */
229
+ addParticipant(id, request) {
230
+ return this.post(`${this.apiUrl}/threads/${id}/add_participant/`, request);
231
+ }
232
+ /**
233
+ * Remove participant from a thread
234
+ */
235
+ removeParticipant(id, request) {
236
+ return this.post(`${this.apiUrl}/threads/${id}/remove_participant/`, request);
237
+ }
238
+ /**
239
+ * Get thread participants
240
+ */
241
+ getParticipants(id) {
242
+ return this.get(`${this.apiUrl}/threads/${id}/participants/`);
243
+ }
244
+ /**
245
+ * Archive/unarchive a thread (toggles state)
246
+ */
247
+ toggleArchiveThread(id) {
248
+ return this.post(`${this.apiUrl}/threads/${id}/archive/`, {});
249
+ }
250
+ /**
251
+ * Mark thread as read for current user
252
+ */
253
+ markThreadAsRead(id) {
254
+ return this.post(`${this.apiUrl}/threads/${id}/mark_read/`, {});
255
+ }
256
+ /**
257
+ * Search message threads by title or description
258
+ */
259
+ searchMessageThreads(query) {
260
+ return this.getMessageThreads({ search: query });
261
+ }
262
+ /**
263
+ * Get private threads only
264
+ */
265
+ getPrivateThreads() {
266
+ return this.getMessageThreads({ isPrivate: true });
267
+ }
268
+ /**
269
+ * Get public threads only
270
+ */
271
+ getPublicThreads() {
272
+ return this.getMessageThreads({ isPrivate: false });
273
+ }
274
+ /**
275
+ * Get archived threads
276
+ */
277
+ getArchivedThreads() {
278
+ return this.getMessageThreads({ isArchived: true });
279
+ }
280
+ /**
281
+ * Get active threads (non-archived)
282
+ */
283
+ getActiveThreads() {
284
+ return this.getMessageThreads({ isArchived: false });
285
+ }
286
+ /**
287
+ * Get threads created by a specific user
288
+ */
289
+ getThreadsByCreator(creatorId) {
290
+ return this.getMessageThreads({ creator: creatorId });
291
+ }
292
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MessageThreadService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
293
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MessageThreadService, providedIn: 'root' });
294
+ }
295
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MessageThreadService, decorators: [{
296
+ type: Injectable,
297
+ args: [{
298
+ providedIn: 'root'
299
+ }]
300
+ }] });
301
+
302
+ class MessageService extends BaseApiService {
303
+ /**
304
+ * Get all messages with optional filtering
305
+ */
306
+ getMessages(params) {
307
+ const httpParams = this.buildHttpParams(params);
308
+ return this.get(`${this.apiUrl}/messages/`, { params: httpParams });
309
+ }
310
+ /**
311
+ * Get a single message by ID
312
+ */
313
+ getMessage(id) {
314
+ return this.get(`${this.apiUrl}/messages/${id}/`);
315
+ }
316
+ /**
317
+ * Create a new message
318
+ */
319
+ createMessage(message) {
320
+ return this.post(`${this.apiUrl}/messages/`, message);
321
+ }
322
+ /**
323
+ * Update an existing message
324
+ */
325
+ updateMessage(id, message) {
326
+ return this.put(`${this.apiUrl}/messages/${id}/`, message);
327
+ }
328
+ /**
329
+ * Partially update a message
330
+ */
331
+ patchMessage(id, message) {
332
+ return this.patch(`${this.apiUrl}/messages/${id}/`, message);
333
+ }
334
+ /**
335
+ * Delete a message (soft delete)
336
+ */
337
+ deleteMessage(id) {
338
+ return this.delete(`${this.apiUrl}/messages/${id}/`);
339
+ }
340
+ /**
341
+ * Get messages in a specific thread
342
+ */
343
+ getThreadMessages(threadId, params) {
344
+ const queryParams = { ...params, thread: threadId };
345
+ return this.getMessages(queryParams);
346
+ }
347
+ /**
348
+ * Search messages by content
349
+ */
350
+ searchMessages(query, threadId) {
351
+ const params = { search: query };
352
+ if (threadId) {
353
+ params.thread = threadId;
354
+ }
355
+ return this.getMessages(params);
356
+ }
357
+ /**
358
+ * Get messages by sender
359
+ */
360
+ getMessagesBySender(senderId, threadId) {
361
+ const params = { sender: senderId };
362
+ if (threadId) {
363
+ params.thread = threadId;
364
+ }
365
+ return this.getMessages(params);
366
+ }
367
+ /**
368
+ * Get messages by type
369
+ */
370
+ getMessagesByType(messageType, threadId) {
371
+ const params = { messageType };
372
+ if (threadId) {
373
+ params.thread = threadId;
374
+ }
375
+ return this.getMessages(params);
376
+ }
377
+ /**
378
+ * Get deleted messages (for moderation)
379
+ */
380
+ getDeletedMessages(threadId) {
381
+ const params = { isDeleted: true };
382
+ if (threadId) {
383
+ params.thread = threadId;
384
+ }
385
+ return this.getMessages(params);
386
+ }
387
+ /**
388
+ * Get active messages (non-deleted)
389
+ */
390
+ getActiveMessages(threadId) {
391
+ const params = { isDeleted: false };
392
+ if (threadId) {
393
+ params.thread = threadId;
394
+ }
395
+ return this.getMessages(params);
396
+ }
397
+ /**
398
+ * Reply to a message
399
+ */
400
+ replyToMessage(parentMessageId, content, threadId) {
401
+ const message = {
402
+ thread: threadId,
403
+ content,
404
+ replyTo: parentMessageId
405
+ };
406
+ return this.createMessage(message);
407
+ }
408
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MessageService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
409
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MessageService, providedIn: 'root' });
410
+ }
411
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MessageService, decorators: [{
412
+ type: Injectable,
413
+ args: [{
414
+ providedIn: 'root'
415
+ }]
416
+ }] });
417
+
418
+ class ThreadParticipantService {
419
+ http = inject(HttpClient);
420
+ apiUrl = '/api'; // This should be configurable
421
+ /**
422
+ * Get all thread participants with optional filtering
423
+ */
424
+ getThreadParticipants(params) {
425
+ let httpParams = new HttpParams();
426
+ if (params) {
427
+ Object.entries(params).forEach(([key, value]) => {
428
+ if (value !== undefined && value !== null) {
429
+ httpParams = httpParams.set(key, value.toString());
430
+ }
431
+ });
432
+ }
433
+ return this.http.get(`${this.apiUrl}/thread-participants/`, { params: httpParams });
434
+ }
435
+ /**
436
+ * Get a single thread participant by ID
437
+ */
438
+ getThreadParticipant(id) {
439
+ return this.http.get(`${this.apiUrl}/thread-participants/${id}/`);
440
+ }
441
+ /**
442
+ * Update thread participant settings
443
+ */
444
+ updateThreadParticipant(id, updates) {
445
+ return this.http.patch(`${this.apiUrl}/thread-participants/${id}/`, updates);
446
+ }
447
+ /**
448
+ * Update participant's last read timestamp
449
+ */
450
+ updateLastRead(id) {
451
+ return this.http.post(`${this.apiUrl}/thread-participants/${id}/update_last_read/`, {});
452
+ }
453
+ /**
454
+ * Get participants for a specific thread
455
+ */
456
+ getParticipantsForThread(threadId) {
457
+ return this.getThreadParticipants({ thread: threadId });
458
+ }
459
+ /**
460
+ * Get moderators for a specific thread
461
+ */
462
+ getModeratorsForThread(threadId) {
463
+ return this.getThreadParticipants({ thread: threadId, isModerator: true });
464
+ }
465
+ /**
466
+ * Get non-moderator participants for a specific thread
467
+ */
468
+ getRegularParticipantsForThread(threadId) {
469
+ return this.getThreadParticipants({ thread: threadId, isModerator: false });
470
+ }
471
+ /**
472
+ * Get participants with notifications enabled for a specific thread
473
+ */
474
+ getNotificationEnabledParticipants(threadId) {
475
+ return this.getThreadParticipants({ thread: threadId, notificationsEnabled: true });
476
+ }
477
+ /**
478
+ * Get participants with notifications disabled for a specific thread
479
+ */
480
+ getNotificationDisabledParticipants(threadId) {
481
+ return this.getThreadParticipants({ thread: threadId, notificationsEnabled: false });
482
+ }
483
+ /**
484
+ * Toggle moderator status for a participant
485
+ */
486
+ toggleModeratorStatus(id) {
487
+ return this.http.post(`${this.apiUrl}/thread-participants/${id}/toggle_moderator/`, {});
488
+ }
489
+ /**
490
+ * Toggle notifications for a participant
491
+ */
492
+ toggleNotifications(id) {
493
+ return this.http.post(`${this.apiUrl}/thread-participants/${id}/toggle_notifications/`, {});
494
+ }
495
+ /**
496
+ * Leave a thread (for current user)
497
+ */
498
+ leaveThread(threadId) {
499
+ return this.http.post(`${this.apiUrl}/thread-participants/leave_thread/`, { thread: threadId });
500
+ }
501
+ /**
502
+ * Get threads where current user is participant
503
+ */
504
+ getMyParticipations() {
505
+ return this.http.get(`${this.apiUrl}/thread-participants/my_participations/`);
506
+ }
507
+ /**
508
+ * Get threads where current user is moderator
509
+ */
510
+ getMyModerations() {
511
+ return this.http.get(`${this.apiUrl}/thread-participants/my_moderations/`);
512
+ }
513
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ThreadParticipantService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
514
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ThreadParticipantService, providedIn: 'root' });
515
+ }
516
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ThreadParticipantService, decorators: [{
517
+ type: Injectable,
518
+ args: [{
519
+ providedIn: 'root'
520
+ }]
521
+ }] });
522
+
523
+ // Communication and messaging services
524
+
525
+ /*
526
+ * Public API Surface of cupcake-mint-chocolate
527
+ */
528
+
529
+ /**
530
+ * Generated bundle index. Do not edit.
531
+ */
532
+
533
+ export { CupcakeMintChocolate, DeliveryStatus, DeliveryStatusLabels, MessageService, MessageThreadService, MessageType, MessageTypeLabels, NotificationPriority, NotificationPriorityLabels, NotificationService, NotificationType, NotificationTypeLabels, ThreadParticipantService };
534
+ //# sourceMappingURL=noatgnu-cupcake-mint-chocolate.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noatgnu-cupcake-mint-chocolate.mjs","sources":["../../../projects/cupcake-mint-chocolate/src/lib/cupcake-mint-chocolate.ts","../../../projects/cupcake-mint-chocolate/src/lib/models/enums.ts","../../../projects/cupcake-mint-chocolate/src/lib/services/notification.ts","../../../projects/cupcake-mint-chocolate/src/lib/services/message-thread.ts","../../../projects/cupcake-mint-chocolate/src/lib/services/message.ts","../../../projects/cupcake-mint-chocolate/src/lib/services/thread-participant.ts","../../../projects/cupcake-mint-chocolate/src/lib/services/index.ts","../../../projects/cupcake-mint-chocolate/src/public-api.ts","../../../projects/cupcake-mint-chocolate/src/noatgnu-cupcake-mint-chocolate.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'ccmc-cupcake-mint-chocolate',\n imports: [],\n template: `\n <p>\n cupcake-mint-chocolate works!\n </p>\n `,\n styles: ``\n})\nexport class CupcakeMintChocolate {\n\n}\n","export enum NotificationType {\r\n SYSTEM = 'system',\r\n MAINTENANCE = 'maintenance',\r\n INVENTORY = 'inventory',\r\n BILLING = 'billing',\r\n PROJECT = 'project',\r\n PROTOCOL = 'protocol',\r\n DOCUMENT = 'document',\r\n USER = 'user'\r\n}\r\n\r\nexport const NotificationTypeLabels: Record<NotificationType, string> = {\r\n [NotificationType.SYSTEM]: 'System',\r\n [NotificationType.MAINTENANCE]: 'Maintenance',\r\n [NotificationType.INVENTORY]: 'Inventory',\r\n [NotificationType.BILLING]: 'Billing',\r\n [NotificationType.PROJECT]: 'Project',\r\n [NotificationType.PROTOCOL]: 'Protocol',\r\n [NotificationType.DOCUMENT]: 'Document',\r\n [NotificationType.USER]: 'User'\r\n};\r\n\r\nexport enum NotificationPriority {\r\n LOW = 'low',\r\n NORMAL = 'normal',\r\n HIGH = 'high',\r\n URGENT = 'urgent'\r\n}\r\n\r\nexport const NotificationPriorityLabels: Record<NotificationPriority, string> = {\r\n [NotificationPriority.LOW]: 'Low',\r\n [NotificationPriority.NORMAL]: 'Normal',\r\n [NotificationPriority.HIGH]: 'High',\r\n [NotificationPriority.URGENT]: 'Urgent'\r\n};\r\n\r\nexport enum DeliveryStatus {\r\n PENDING = 'pending',\r\n SENT = 'sent',\r\n DELIVERED = 'delivered',\r\n FAILED = 'failed',\r\n READ = 'read'\r\n}\r\n\r\nexport const DeliveryStatusLabels: Record<DeliveryStatus, string> = {\r\n [DeliveryStatus.PENDING]: 'Pending',\r\n [DeliveryStatus.SENT]: 'Sent',\r\n [DeliveryStatus.DELIVERED]: 'Delivered',\r\n [DeliveryStatus.FAILED]: 'Failed',\r\n [DeliveryStatus.READ]: 'Read'\r\n};\r\n\r\nexport enum MessageType {\r\n DIRECT = 'direct',\r\n THREAD = 'thread',\r\n BROADCAST = 'broadcast',\r\n SYSTEM = 'system'\r\n}\r\n\r\nexport const MessageTypeLabels: Record<MessageType, string> = {\r\n [MessageType.DIRECT]: 'Direct Message',\r\n [MessageType.THREAD]: 'Thread Reply',\r\n [MessageType.BROADCAST]: 'Broadcast',\r\n [MessageType.SYSTEM]: 'System Message'\r\n};","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\nimport {\r\n Notification,\r\n NotificationCreateRequest,\r\n NotificationUpdateRequest,\r\n MarkNotificationReadRequest,\r\n BulkNotificationActionRequest,\r\n NotificationType,\r\n NotificationPriority,\r\n DeliveryStatus,\r\n PaginatedResponse,\r\n NotificationQueryParams\r\n} from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificationService extends BaseApiService {\r\n\r\n /**\r\n * Get all notifications with optional filtering\r\n */\r\n getNotifications(params?: NotificationQueryParams): Observable<PaginatedResponse<Notification>> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<PaginatedResponse<Notification>>(`${this.apiUrl}/notifications/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Get a single notification by ID\r\n */\r\n getNotification(id: string): Observable<Notification> {\r\n return this.get<Notification>(`${this.apiUrl}/notifications/${id}/`);\r\n }\r\n\r\n /**\r\n * Create a new notification\r\n */\r\n createNotification(notification: NotificationCreateRequest): Observable<Notification> {\r\n return this.post<Notification>(`${this.apiUrl}/notifications/`, notification);\r\n }\r\n\r\n /**\r\n * Update an existing notification\r\n */\r\n updateNotification(id: string, notification: NotificationUpdateRequest): Observable<Notification> {\r\n return this.put<Notification>(`${this.apiUrl}/notifications/${id}/`, notification);\r\n }\r\n\r\n /**\r\n * Partially update a notification\r\n */\r\n patchNotification(id: string, notification: Partial<NotificationUpdateRequest>): Observable<Notification> {\r\n return this.patch<Notification>(`${this.apiUrl}/notifications/${id}/`, notification);\r\n }\r\n\r\n /**\r\n * Delete a notification\r\n */\r\n deleteNotification(id: string): Observable<void> {\r\n return this.delete<void>(`${this.apiUrl}/notifications/${id}/`);\r\n }\r\n\r\n /**\r\n * Mark a notification as read/unread\r\n */\r\n markNotificationRead(id: string, request: MarkNotificationReadRequest): Observable<Notification> {\r\n return this.post<Notification>(`${this.apiUrl}/notifications/${id}/mark_read/`, request);\r\n }\r\n\r\n\r\n /**\r\n * Get unread notifications for current user\r\n */\r\n getUnreadNotifications(): Observable<PaginatedResponse<Notification>> {\r\n return this.get<PaginatedResponse<Notification>>(`${this.apiUrl}/notifications/unread/`);\r\n }\r\n\r\n /**\r\n * Get notification statistics for current user\r\n */\r\n getNotificationStats(): Observable<{\r\n total: number;\r\n unread: number;\r\n byType: { [key: string]: number };\r\n byPriority: { [key: string]: number };\r\n }> {\r\n return this.get<{\r\n total: number;\r\n unread: number;\r\n byType: { [key: string]: number };\r\n byPriority: { [key: string]: number };\r\n }>(`${this.apiUrl}/notifications/stats/`);\r\n }\r\n\r\n /**\r\n * Mark all notifications as read for current user\r\n */\r\n markAllNotificationsRead(): Observable<{ success: boolean; message: string }> {\r\n return this.post<{ success: boolean; message: string }>(`${this.apiUrl}/notifications/mark_all_read/`, {});\r\n }\r\n\r\n /**\r\n * Search notifications by title or message\r\n */\r\n searchNotifications(query: string): Observable<PaginatedResponse<Notification>> {\r\n return this.getNotifications({ search: query });\r\n }\r\n\r\n /**\r\n * Get notifications by type\r\n */\r\n getNotificationsByType(type: NotificationType): Observable<PaginatedResponse<Notification>> {\r\n return this.getNotifications({ notificationType: type });\r\n }\r\n\r\n /**\r\n * Get notifications by priority\r\n */\r\n getNotificationsByPriority(priority: NotificationPriority): Observable<PaginatedResponse<Notification>> {\r\n return this.getNotifications({ priority });\r\n }\r\n\r\n /**\r\n * Get notifications by sender\r\n */\r\n getNotificationsBySender(senderId: number): Observable<PaginatedResponse<Notification>> {\r\n return this.getNotifications({ sender: senderId });\r\n }\r\n\r\n /**\r\n * Get notifications by delivery status\r\n */\r\n getNotificationsByStatus(status: DeliveryStatus): Observable<PaginatedResponse<Notification>> {\r\n return this.getNotifications({ deliveryStatus: status });\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\nimport {\r\n MessageThread,\r\n MessageThreadCreateRequest,\r\n MessageThreadUpdateRequest,\r\n ThreadParticipantRequest,\r\n ThreadSearchRequest,\r\n ThreadParticipant,\r\n PaginatedResponse\r\n} from '../models';\r\n\r\nexport interface MessageThreadQueryParams {\r\n search?: string;\r\n isPrivate?: boolean;\r\n isArchived?: boolean;\r\n creator?: number;\r\n limit?: number;\r\n offset?: number;\r\n ordering?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MessageThreadService extends BaseApiService {\r\n\r\n /**\r\n * Get all message threads with optional filtering\r\n */\r\n getMessageThreads(params?: MessageThreadQueryParams): Observable<PaginatedResponse<MessageThread>> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<PaginatedResponse<MessageThread>>(`${this.apiUrl}/threads/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Get a single message thread by ID\r\n */\r\n getMessageThread(id: string): Observable<MessageThread> {\r\n return this.get<MessageThread>(`${this.apiUrl}/threads/${id}/`);\r\n }\r\n\r\n /**\r\n * Create a new message thread\r\n */\r\n createMessageThread(thread: MessageThreadCreateRequest): Observable<MessageThread> {\r\n return this.post<MessageThread>(`${this.apiUrl}/threads/`, thread);\r\n }\r\n\r\n /**\r\n * Update an existing message thread\r\n */\r\n updateMessageThread(id: string, thread: MessageThreadUpdateRequest): Observable<MessageThread> {\r\n return this.put<MessageThread>(`${this.apiUrl}/threads/${id}/`, thread);\r\n }\r\n\r\n /**\r\n * Partially update a message thread\r\n */\r\n patchMessageThread(id: string, thread: Partial<MessageThreadUpdateRequest>): Observable<MessageThread> {\r\n return this.patch<MessageThread>(`${this.apiUrl}/threads/${id}/`, thread);\r\n }\r\n\r\n /**\r\n * Delete a message thread\r\n */\r\n deleteMessageThread(id: string): Observable<void> {\r\n return this.delete<void>(`${this.apiUrl}/threads/${id}/`);\r\n }\r\n\r\n /**\r\n * Add participant to a thread\r\n */\r\n addParticipant(id: string, request: { username: string }): Observable<{ message: string; participant: ThreadParticipant }> {\r\n return this.post<{ message: string; participant: ThreadParticipant }>(`${this.apiUrl}/threads/${id}/add_participant/`, request);\r\n }\r\n\r\n /**\r\n * Remove participant from a thread\r\n */\r\n removeParticipant(id: string, request: { username: string }): Observable<{ message: string }> {\r\n return this.post<{ message: string }>(`${this.apiUrl}/threads/${id}/remove_participant/`, request);\r\n }\r\n\r\n /**\r\n * Get thread participants\r\n */\r\n getParticipants(id: string): Observable<PaginatedResponse<ThreadParticipant>> {\r\n return this.get<PaginatedResponse<ThreadParticipant>>(`${this.apiUrl}/threads/${id}/participants/`);\r\n }\r\n\r\n /**\r\n * Archive/unarchive a thread (toggles state)\r\n */\r\n toggleArchiveThread(id: string): Observable<{ message: string; isArchived: boolean }> {\r\n return this.post<{ message: string; isArchived: boolean }>(`${this.apiUrl}/threads/${id}/archive/`, {});\r\n }\r\n\r\n /**\r\n * Mark thread as read for current user\r\n */\r\n markThreadAsRead(id: string): Observable<{ success: boolean; message: string }> {\r\n return this.post<{ success: boolean; message: string }>(`${this.apiUrl}/threads/${id}/mark_read/`, {});\r\n }\r\n\r\n\r\n /**\r\n * Search message threads by title or description\r\n */\r\n searchMessageThreads(query: string): Observable<PaginatedResponse<MessageThread>> {\r\n return this.getMessageThreads({ search: query });\r\n }\r\n\r\n /**\r\n * Get private threads only\r\n */\r\n getPrivateThreads(): Observable<PaginatedResponse<MessageThread>> {\r\n return this.getMessageThreads({ isPrivate: true });\r\n }\r\n\r\n /**\r\n * Get public threads only\r\n */\r\n getPublicThreads(): Observable<PaginatedResponse<MessageThread>> {\r\n return this.getMessageThreads({ isPrivate: false });\r\n }\r\n\r\n /**\r\n * Get archived threads\r\n */\r\n getArchivedThreads(): Observable<PaginatedResponse<MessageThread>> {\r\n return this.getMessageThreads({ isArchived: true });\r\n }\r\n\r\n /**\r\n * Get active threads (non-archived)\r\n */\r\n getActiveThreads(): Observable<PaginatedResponse<MessageThread>> {\r\n return this.getMessageThreads({ isArchived: false });\r\n }\r\n\r\n /**\r\n * Get threads created by a specific user\r\n */\r\n getThreadsByCreator(creatorId: number): Observable<PaginatedResponse<MessageThread>> {\r\n return this.getMessageThreads({ creator: creatorId });\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\nimport {\r\n Message,\r\n MessageCreateRequest,\r\n MessageUpdateRequest,\r\n MessageSearchRequest,\r\n MessageType,\r\n PaginatedResponse\r\n} from '../models';\r\n\r\nexport interface MessageQueryParams {\r\n search?: string;\r\n thread?: string;\r\n messageType?: MessageType;\r\n sender?: number;\r\n isDeleted?: boolean;\r\n limit?: number;\r\n offset?: number;\r\n ordering?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MessageService extends BaseApiService {\r\n\r\n /**\r\n * Get all messages with optional filtering\r\n */\r\n getMessages(params?: MessageQueryParams): Observable<PaginatedResponse<Message>> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<PaginatedResponse<Message>>(`${this.apiUrl}/messages/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Get a single message by ID\r\n */\r\n getMessage(id: string): Observable<Message> {\r\n return this.get<Message>(`${this.apiUrl}/messages/${id}/`);\r\n }\r\n\r\n /**\r\n * Create a new message\r\n */\r\n createMessage(message: MessageCreateRequest): Observable<Message> {\r\n return this.post<Message>(`${this.apiUrl}/messages/`, message);\r\n }\r\n\r\n /**\r\n * Update an existing message\r\n */\r\n updateMessage(id: string, message: MessageUpdateRequest): Observable<Message> {\r\n return this.put<Message>(`${this.apiUrl}/messages/${id}/`, message);\r\n }\r\n\r\n /**\r\n * Partially update a message\r\n */\r\n patchMessage(id: string, message: Partial<MessageUpdateRequest>): Observable<Message> {\r\n return this.patch<Message>(`${this.apiUrl}/messages/${id}/`, message);\r\n }\r\n\r\n /**\r\n * Delete a message (soft delete)\r\n */\r\n deleteMessage(id: string): Observable<Message> {\r\n return this.delete<Message>(`${this.apiUrl}/messages/${id}/`);\r\n }\r\n\r\n\r\n /**\r\n * Get messages in a specific thread\r\n */\r\n getThreadMessages(threadId: string, params?: Omit<MessageQueryParams, 'thread'>): Observable<PaginatedResponse<Message>> {\r\n const queryParams = { ...params, thread: threadId };\r\n return this.getMessages(queryParams);\r\n }\r\n\r\n /**\r\n * Search messages by content\r\n */\r\n searchMessages(query: string, threadId?: string): Observable<PaginatedResponse<Message>> {\r\n const params: MessageQueryParams = { search: query };\r\n if (threadId) {\r\n params.thread = threadId;\r\n }\r\n return this.getMessages(params);\r\n }\r\n\r\n /**\r\n * Get messages by sender\r\n */\r\n getMessagesBySender(senderId: number, threadId?: string): Observable<PaginatedResponse<Message>> {\r\n const params: MessageQueryParams = { sender: senderId };\r\n if (threadId) {\r\n params.thread = threadId;\r\n }\r\n return this.getMessages(params);\r\n }\r\n\r\n /**\r\n * Get messages by type\r\n */\r\n getMessagesByType(messageType: MessageType, threadId?: string): Observable<PaginatedResponse<Message>> {\r\n const params: MessageQueryParams = { messageType };\r\n if (threadId) {\r\n params.thread = threadId;\r\n }\r\n return this.getMessages(params);\r\n }\r\n\r\n /**\r\n * Get deleted messages (for moderation)\r\n */\r\n getDeletedMessages(threadId?: string): Observable<PaginatedResponse<Message>> {\r\n const params: MessageQueryParams = { isDeleted: true };\r\n if (threadId) {\r\n params.thread = threadId;\r\n }\r\n return this.getMessages(params);\r\n }\r\n\r\n /**\r\n * Get active messages (non-deleted)\r\n */\r\n getActiveMessages(threadId?: string): Observable<PaginatedResponse<Message>> {\r\n const params: MessageQueryParams = { isDeleted: false };\r\n if (threadId) {\r\n params.thread = threadId;\r\n }\r\n return this.getMessages(params);\r\n }\r\n\r\n /**\r\n * Reply to a message\r\n */\r\n replyToMessage(parentMessageId: string, content: string, threadId: string): Observable<Message> {\r\n const message: MessageCreateRequest = {\r\n thread: threadId,\r\n content,\r\n replyTo: parentMessageId\r\n };\r\n return this.createMessage(message);\r\n }\r\n}","import { Injectable, inject } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport {\r\n ThreadParticipant,\r\n PaginatedResponse\r\n} from '../models';\r\n\r\nexport interface ThreadParticipantQueryParams {\r\n thread?: string;\r\n isModerator?: boolean;\r\n notificationsEnabled?: boolean;\r\n limit?: number;\r\n offset?: number;\r\n ordering?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ThreadParticipantService {\r\n private http = inject(HttpClient);\r\n private apiUrl = '/api'; // This should be configurable\r\n\r\n /**\r\n * Get all thread participants with optional filtering\r\n */\r\n getThreadParticipants(params?: ThreadParticipantQueryParams): Observable<PaginatedResponse<ThreadParticipant>> {\r\n let httpParams = new HttpParams();\r\n \r\n if (params) {\r\n Object.entries(params).forEach(([key, value]) => {\r\n if (value !== undefined && value !== null) {\r\n httpParams = httpParams.set(key, value.toString());\r\n }\r\n });\r\n }\r\n\r\n return this.http.get<PaginatedResponse<ThreadParticipant>>(`${this.apiUrl}/thread-participants/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Get a single thread participant by ID\r\n */\r\n getThreadParticipant(id: number): Observable<ThreadParticipant> {\r\n return this.http.get<ThreadParticipant>(`${this.apiUrl}/thread-participants/${id}/`);\r\n }\r\n\r\n /**\r\n * Update thread participant settings\r\n */\r\n updateThreadParticipant(id: number, updates: { isModerator?: boolean; notificationsEnabled?: boolean }): Observable<ThreadParticipant> {\r\n return this.http.patch<ThreadParticipant>(`${this.apiUrl}/thread-participants/${id}/`, updates);\r\n }\r\n\r\n /**\r\n * Update participant's last read timestamp\r\n */\r\n updateLastRead(id: number): Observable<ThreadParticipant> {\r\n return this.http.post<ThreadParticipant>(`${this.apiUrl}/thread-participants/${id}/update_last_read/`, {});\r\n }\r\n\r\n /**\r\n * Get participants for a specific thread\r\n */\r\n getParticipantsForThread(threadId: string): Observable<PaginatedResponse<ThreadParticipant>> {\r\n return this.getThreadParticipants({ thread: threadId });\r\n }\r\n\r\n /**\r\n * Get moderators for a specific thread\r\n */\r\n getModeratorsForThread(threadId: string): Observable<PaginatedResponse<ThreadParticipant>> {\r\n return this.getThreadParticipants({ thread: threadId, isModerator: true });\r\n }\r\n\r\n /**\r\n * Get non-moderator participants for a specific thread\r\n */\r\n getRegularParticipantsForThread(threadId: string): Observable<PaginatedResponse<ThreadParticipant>> {\r\n return this.getThreadParticipants({ thread: threadId, isModerator: false });\r\n }\r\n\r\n /**\r\n * Get participants with notifications enabled for a specific thread\r\n */\r\n getNotificationEnabledParticipants(threadId: string): Observable<PaginatedResponse<ThreadParticipant>> {\r\n return this.getThreadParticipants({ thread: threadId, notificationsEnabled: true });\r\n }\r\n\r\n /**\r\n * Get participants with notifications disabled for a specific thread\r\n */\r\n getNotificationDisabledParticipants(threadId: string): Observable<PaginatedResponse<ThreadParticipant>> {\r\n return this.getThreadParticipants({ thread: threadId, notificationsEnabled: false });\r\n }\r\n\r\n /**\r\n * Toggle moderator status for a participant\r\n */\r\n toggleModeratorStatus(id: number): Observable<ThreadParticipant> {\r\n return this.http.post<ThreadParticipant>(`${this.apiUrl}/thread-participants/${id}/toggle_moderator/`, {});\r\n }\r\n\r\n /**\r\n * Toggle notifications for a participant\r\n */\r\n toggleNotifications(id: number): Observable<ThreadParticipant> {\r\n return this.http.post<ThreadParticipant>(`${this.apiUrl}/thread-participants/${id}/toggle_notifications/`, {});\r\n }\r\n\r\n /**\r\n * Leave a thread (for current user)\r\n */\r\n leaveThread(threadId: string): Observable<{ success: boolean; message: string }> {\r\n return this.http.post<{ success: boolean; message: string }>(`${this.apiUrl}/thread-participants/leave_thread/`, { thread: threadId });\r\n }\r\n\r\n /**\r\n * Get threads where current user is participant\r\n */\r\n getMyParticipations(): Observable<PaginatedResponse<ThreadParticipant>> {\r\n return this.http.get<PaginatedResponse<ThreadParticipant>>(`${this.apiUrl}/thread-participants/my_participations/`);\r\n }\r\n\r\n /**\r\n * Get threads where current user is moderator\r\n */\r\n getMyModerations(): Observable<PaginatedResponse<ThreadParticipant>> {\r\n return this.http.get<PaginatedResponse<ThreadParticipant>>(`${this.apiUrl}/thread-participants/my_moderations/`);\r\n }\r\n}","// Communication and messaging services\r\nexport * from './notification';\r\nexport * from './message-thread';\r\nexport * from './message';\r\nexport * from './thread-participant';","/*\n * Public API Surface of cupcake-mint-chocolate\n */\n\nexport * from './lib/cupcake-mint-chocolate';\n\n// Models and interfaces\nexport * from './lib/models';\n\n// Services\nexport * from './lib/services';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,546 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { BaseApiService } from '@cupcake/core';
4
+
5
+ declare class CupcakeMintChocolate {
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<CupcakeMintChocolate, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<CupcakeMintChocolate, "ccmc-cupcake-mint-chocolate", never, {}, {}, never, never, true, never>;
8
+ }
9
+
10
+ interface BaseTimestampedModel {
11
+ createdAt: string;
12
+ updatedAt: string;
13
+ }
14
+ interface UserBasic {
15
+ id: number;
16
+ username: string;
17
+ firstName?: string;
18
+ lastName?: string;
19
+ email: string;
20
+ }
21
+ interface PaginatedResponse<T> {
22
+ count: number;
23
+ next?: string;
24
+ previous?: string;
25
+ results: T[];
26
+ }
27
+ interface ApiResponse<T = any> {
28
+ data?: T;
29
+ error?: any;
30
+ status: number;
31
+ success: boolean;
32
+ }
33
+ interface NotificationQueryParams {
34
+ page?: number;
35
+ pageSize?: number;
36
+ search?: string;
37
+ ordering?: string;
38
+ notificationType?: string;
39
+ priority?: string;
40
+ isRead?: boolean;
41
+ recipient?: number;
42
+ includeExpired?: boolean;
43
+ sender?: number;
44
+ deliveryStatus?: string;
45
+ limit?: number;
46
+ offset?: number;
47
+ }
48
+
49
+ declare enum NotificationType {
50
+ SYSTEM = "system",
51
+ MAINTENANCE = "maintenance",
52
+ INVENTORY = "inventory",
53
+ BILLING = "billing",
54
+ PROJECT = "project",
55
+ PROTOCOL = "protocol",
56
+ DOCUMENT = "document",
57
+ USER = "user"
58
+ }
59
+ declare const NotificationTypeLabels: Record<NotificationType, string>;
60
+ declare enum NotificationPriority {
61
+ LOW = "low",
62
+ NORMAL = "normal",
63
+ HIGH = "high",
64
+ URGENT = "urgent"
65
+ }
66
+ declare const NotificationPriorityLabels: Record<NotificationPriority, string>;
67
+ declare enum DeliveryStatus {
68
+ PENDING = "pending",
69
+ SENT = "sent",
70
+ DELIVERED = "delivered",
71
+ FAILED = "failed",
72
+ READ = "read"
73
+ }
74
+ declare const DeliveryStatusLabels: Record<DeliveryStatus, string>;
75
+ declare enum MessageType {
76
+ DIRECT = "direct",
77
+ THREAD = "thread",
78
+ BROADCAST = "broadcast",
79
+ SYSTEM = "system"
80
+ }
81
+ declare const MessageTypeLabels: Record<MessageType, string>;
82
+
83
+ interface Notification extends BaseTimestampedModel {
84
+ id: string;
85
+ title: string;
86
+ message: string;
87
+ notificationType: NotificationType;
88
+ priority: NotificationPriority;
89
+ recipient: number;
90
+ recipientUsername?: string;
91
+ recipientName?: string;
92
+ sender?: number;
93
+ senderUsername?: string;
94
+ senderName?: string;
95
+ deliveryStatus: DeliveryStatus;
96
+ sentAt?: string;
97
+ readAt?: string;
98
+ data?: any;
99
+ expiresAt?: string;
100
+ relatedObjectType?: string;
101
+ relatedObjectApp?: string;
102
+ objectId?: number;
103
+ isRead: boolean;
104
+ isExpired: boolean;
105
+ }
106
+ interface NotificationCreateRequest {
107
+ title: string;
108
+ message: string;
109
+ notificationType: NotificationType;
110
+ priority?: NotificationPriority;
111
+ recipient: number;
112
+ data?: any;
113
+ expiresAt?: string;
114
+ contentType?: number;
115
+ objectId?: number;
116
+ }
117
+ interface NotificationUpdateRequest {
118
+ title?: string;
119
+ message?: string;
120
+ priority?: NotificationPriority;
121
+ deliveryStatus?: DeliveryStatus;
122
+ data?: any;
123
+ expiresAt?: string;
124
+ }
125
+ interface MarkNotificationReadRequest {
126
+ isRead: boolean;
127
+ }
128
+ interface BulkNotificationActionRequest {
129
+ notificationIds: string[];
130
+ action: 'mark_read' | 'mark_unread' | 'delete';
131
+ }
132
+
133
+ interface ThreadParticipant extends BaseTimestampedModel {
134
+ id: number;
135
+ user: number;
136
+ username?: string;
137
+ userDetails?: UserBasic;
138
+ joinedAt: string;
139
+ lastReadAt?: string;
140
+ isModerator: boolean;
141
+ notificationsEnabled: boolean;
142
+ }
143
+ interface Message extends BaseTimestampedModel {
144
+ id: string;
145
+ thread: string;
146
+ content: string;
147
+ messageType: MessageType;
148
+ sender: number;
149
+ senderUsername?: string;
150
+ senderDetails?: UserBasic;
151
+ isEdited: boolean;
152
+ isDeleted: boolean;
153
+ replyTo?: string;
154
+ replyToContent?: string;
155
+ replyToSender?: string;
156
+ annotationsCount: number;
157
+ }
158
+ interface MessageThread extends BaseTimestampedModel {
159
+ id: string;
160
+ title: string;
161
+ description?: string;
162
+ creator: number;
163
+ creatorUsername?: string;
164
+ creatorDetails?: UserBasic;
165
+ participantsCount: number;
166
+ messagesCount: number;
167
+ participantsList?: ThreadParticipant[];
168
+ relatedObjectType?: string;
169
+ relatedObjectApp?: string;
170
+ objectId?: number;
171
+ isPrivate: boolean;
172
+ isArchived: boolean;
173
+ allowExternalParticipants: boolean;
174
+ lastMessageAt?: string;
175
+ latestMessage?: Message;
176
+ }
177
+ interface MessageThreadCreateRequest {
178
+ title: string;
179
+ description?: string;
180
+ isPrivate?: boolean;
181
+ allowExternalParticipants?: boolean;
182
+ contentType?: number;
183
+ objectId?: number;
184
+ participantUsernames?: string[];
185
+ }
186
+ interface MessageThreadUpdateRequest {
187
+ title?: string;
188
+ description?: string;
189
+ isPrivate?: boolean;
190
+ isArchived?: boolean;
191
+ allowExternalParticipants?: boolean;
192
+ }
193
+ interface MessageCreateRequest {
194
+ thread: string;
195
+ content: string;
196
+ messageType?: MessageType;
197
+ replyTo?: string;
198
+ }
199
+ interface MessageUpdateRequest {
200
+ content?: string;
201
+ }
202
+ interface ThreadParticipantRequest {
203
+ usernames: string[];
204
+ isModerator?: boolean;
205
+ notificationsEnabled?: boolean;
206
+ }
207
+ interface ThreadSearchRequest {
208
+ query?: string;
209
+ creator?: number;
210
+ participant?: number;
211
+ privateOnly?: boolean;
212
+ includeArchived?: boolean;
213
+ relatedObjectType?: string;
214
+ dateFrom?: string;
215
+ dateTo?: string;
216
+ }
217
+ interface MessageSearchRequest {
218
+ query?: string;
219
+ thread?: number;
220
+ sender?: number;
221
+ messageType?: MessageType;
222
+ dateFrom?: string;
223
+ dateTo?: string;
224
+ includeDeleted?: boolean;
225
+ }
226
+
227
+ declare class NotificationService extends BaseApiService {
228
+ /**
229
+ * Get all notifications with optional filtering
230
+ */
231
+ getNotifications(params?: NotificationQueryParams): Observable<PaginatedResponse<Notification>>;
232
+ /**
233
+ * Get a single notification by ID
234
+ */
235
+ getNotification(id: string): Observable<Notification>;
236
+ /**
237
+ * Create a new notification
238
+ */
239
+ createNotification(notification: NotificationCreateRequest): Observable<Notification>;
240
+ /**
241
+ * Update an existing notification
242
+ */
243
+ updateNotification(id: string, notification: NotificationUpdateRequest): Observable<Notification>;
244
+ /**
245
+ * Partially update a notification
246
+ */
247
+ patchNotification(id: string, notification: Partial<NotificationUpdateRequest>): Observable<Notification>;
248
+ /**
249
+ * Delete a notification
250
+ */
251
+ deleteNotification(id: string): Observable<void>;
252
+ /**
253
+ * Mark a notification as read/unread
254
+ */
255
+ markNotificationRead(id: string, request: MarkNotificationReadRequest): Observable<Notification>;
256
+ /**
257
+ * Get unread notifications for current user
258
+ */
259
+ getUnreadNotifications(): Observable<PaginatedResponse<Notification>>;
260
+ /**
261
+ * Get notification statistics for current user
262
+ */
263
+ getNotificationStats(): Observable<{
264
+ total: number;
265
+ unread: number;
266
+ byType: {
267
+ [key: string]: number;
268
+ };
269
+ byPriority: {
270
+ [key: string]: number;
271
+ };
272
+ }>;
273
+ /**
274
+ * Mark all notifications as read for current user
275
+ */
276
+ markAllNotificationsRead(): Observable<{
277
+ success: boolean;
278
+ message: string;
279
+ }>;
280
+ /**
281
+ * Search notifications by title or message
282
+ */
283
+ searchNotifications(query: string): Observable<PaginatedResponse<Notification>>;
284
+ /**
285
+ * Get notifications by type
286
+ */
287
+ getNotificationsByType(type: NotificationType): Observable<PaginatedResponse<Notification>>;
288
+ /**
289
+ * Get notifications by priority
290
+ */
291
+ getNotificationsByPriority(priority: NotificationPriority): Observable<PaginatedResponse<Notification>>;
292
+ /**
293
+ * Get notifications by sender
294
+ */
295
+ getNotificationsBySender(senderId: number): Observable<PaginatedResponse<Notification>>;
296
+ /**
297
+ * Get notifications by delivery status
298
+ */
299
+ getNotificationsByStatus(status: DeliveryStatus): Observable<PaginatedResponse<Notification>>;
300
+ static ɵfac: i0.ɵɵFactoryDeclaration<NotificationService, never>;
301
+ static ɵprov: i0.ɵɵInjectableDeclaration<NotificationService>;
302
+ }
303
+
304
+ interface MessageThreadQueryParams {
305
+ search?: string;
306
+ isPrivate?: boolean;
307
+ isArchived?: boolean;
308
+ creator?: number;
309
+ limit?: number;
310
+ offset?: number;
311
+ ordering?: string;
312
+ }
313
+ declare class MessageThreadService extends BaseApiService {
314
+ /**
315
+ * Get all message threads with optional filtering
316
+ */
317
+ getMessageThreads(params?: MessageThreadQueryParams): Observable<PaginatedResponse<MessageThread>>;
318
+ /**
319
+ * Get a single message thread by ID
320
+ */
321
+ getMessageThread(id: string): Observable<MessageThread>;
322
+ /**
323
+ * Create a new message thread
324
+ */
325
+ createMessageThread(thread: MessageThreadCreateRequest): Observable<MessageThread>;
326
+ /**
327
+ * Update an existing message thread
328
+ */
329
+ updateMessageThread(id: string, thread: MessageThreadUpdateRequest): Observable<MessageThread>;
330
+ /**
331
+ * Partially update a message thread
332
+ */
333
+ patchMessageThread(id: string, thread: Partial<MessageThreadUpdateRequest>): Observable<MessageThread>;
334
+ /**
335
+ * Delete a message thread
336
+ */
337
+ deleteMessageThread(id: string): Observable<void>;
338
+ /**
339
+ * Add participant to a thread
340
+ */
341
+ addParticipant(id: string, request: {
342
+ username: string;
343
+ }): Observable<{
344
+ message: string;
345
+ participant: ThreadParticipant;
346
+ }>;
347
+ /**
348
+ * Remove participant from a thread
349
+ */
350
+ removeParticipant(id: string, request: {
351
+ username: string;
352
+ }): Observable<{
353
+ message: string;
354
+ }>;
355
+ /**
356
+ * Get thread participants
357
+ */
358
+ getParticipants(id: string): Observable<PaginatedResponse<ThreadParticipant>>;
359
+ /**
360
+ * Archive/unarchive a thread (toggles state)
361
+ */
362
+ toggleArchiveThread(id: string): Observable<{
363
+ message: string;
364
+ isArchived: boolean;
365
+ }>;
366
+ /**
367
+ * Mark thread as read for current user
368
+ */
369
+ markThreadAsRead(id: string): Observable<{
370
+ success: boolean;
371
+ message: string;
372
+ }>;
373
+ /**
374
+ * Search message threads by title or description
375
+ */
376
+ searchMessageThreads(query: string): Observable<PaginatedResponse<MessageThread>>;
377
+ /**
378
+ * Get private threads only
379
+ */
380
+ getPrivateThreads(): Observable<PaginatedResponse<MessageThread>>;
381
+ /**
382
+ * Get public threads only
383
+ */
384
+ getPublicThreads(): Observable<PaginatedResponse<MessageThread>>;
385
+ /**
386
+ * Get archived threads
387
+ */
388
+ getArchivedThreads(): Observable<PaginatedResponse<MessageThread>>;
389
+ /**
390
+ * Get active threads (non-archived)
391
+ */
392
+ getActiveThreads(): Observable<PaginatedResponse<MessageThread>>;
393
+ /**
394
+ * Get threads created by a specific user
395
+ */
396
+ getThreadsByCreator(creatorId: number): Observable<PaginatedResponse<MessageThread>>;
397
+ static ɵfac: i0.ɵɵFactoryDeclaration<MessageThreadService, never>;
398
+ static ɵprov: i0.ɵɵInjectableDeclaration<MessageThreadService>;
399
+ }
400
+
401
+ interface MessageQueryParams {
402
+ search?: string;
403
+ thread?: string;
404
+ messageType?: MessageType;
405
+ sender?: number;
406
+ isDeleted?: boolean;
407
+ limit?: number;
408
+ offset?: number;
409
+ ordering?: string;
410
+ }
411
+ declare class MessageService extends BaseApiService {
412
+ /**
413
+ * Get all messages with optional filtering
414
+ */
415
+ getMessages(params?: MessageQueryParams): Observable<PaginatedResponse<Message>>;
416
+ /**
417
+ * Get a single message by ID
418
+ */
419
+ getMessage(id: string): Observable<Message>;
420
+ /**
421
+ * Create a new message
422
+ */
423
+ createMessage(message: MessageCreateRequest): Observable<Message>;
424
+ /**
425
+ * Update an existing message
426
+ */
427
+ updateMessage(id: string, message: MessageUpdateRequest): Observable<Message>;
428
+ /**
429
+ * Partially update a message
430
+ */
431
+ patchMessage(id: string, message: Partial<MessageUpdateRequest>): Observable<Message>;
432
+ /**
433
+ * Delete a message (soft delete)
434
+ */
435
+ deleteMessage(id: string): Observable<Message>;
436
+ /**
437
+ * Get messages in a specific thread
438
+ */
439
+ getThreadMessages(threadId: string, params?: Omit<MessageQueryParams, 'thread'>): Observable<PaginatedResponse<Message>>;
440
+ /**
441
+ * Search messages by content
442
+ */
443
+ searchMessages(query: string, threadId?: string): Observable<PaginatedResponse<Message>>;
444
+ /**
445
+ * Get messages by sender
446
+ */
447
+ getMessagesBySender(senderId: number, threadId?: string): Observable<PaginatedResponse<Message>>;
448
+ /**
449
+ * Get messages by type
450
+ */
451
+ getMessagesByType(messageType: MessageType, threadId?: string): Observable<PaginatedResponse<Message>>;
452
+ /**
453
+ * Get deleted messages (for moderation)
454
+ */
455
+ getDeletedMessages(threadId?: string): Observable<PaginatedResponse<Message>>;
456
+ /**
457
+ * Get active messages (non-deleted)
458
+ */
459
+ getActiveMessages(threadId?: string): Observable<PaginatedResponse<Message>>;
460
+ /**
461
+ * Reply to a message
462
+ */
463
+ replyToMessage(parentMessageId: string, content: string, threadId: string): Observable<Message>;
464
+ static ɵfac: i0.ɵɵFactoryDeclaration<MessageService, never>;
465
+ static ɵprov: i0.ɵɵInjectableDeclaration<MessageService>;
466
+ }
467
+
468
+ interface ThreadParticipantQueryParams {
469
+ thread?: string;
470
+ isModerator?: boolean;
471
+ notificationsEnabled?: boolean;
472
+ limit?: number;
473
+ offset?: number;
474
+ ordering?: string;
475
+ }
476
+ declare class ThreadParticipantService {
477
+ private http;
478
+ private apiUrl;
479
+ /**
480
+ * Get all thread participants with optional filtering
481
+ */
482
+ getThreadParticipants(params?: ThreadParticipantQueryParams): Observable<PaginatedResponse<ThreadParticipant>>;
483
+ /**
484
+ * Get a single thread participant by ID
485
+ */
486
+ getThreadParticipant(id: number): Observable<ThreadParticipant>;
487
+ /**
488
+ * Update thread participant settings
489
+ */
490
+ updateThreadParticipant(id: number, updates: {
491
+ isModerator?: boolean;
492
+ notificationsEnabled?: boolean;
493
+ }): Observable<ThreadParticipant>;
494
+ /**
495
+ * Update participant's last read timestamp
496
+ */
497
+ updateLastRead(id: number): Observable<ThreadParticipant>;
498
+ /**
499
+ * Get participants for a specific thread
500
+ */
501
+ getParticipantsForThread(threadId: string): Observable<PaginatedResponse<ThreadParticipant>>;
502
+ /**
503
+ * Get moderators for a specific thread
504
+ */
505
+ getModeratorsForThread(threadId: string): Observable<PaginatedResponse<ThreadParticipant>>;
506
+ /**
507
+ * Get non-moderator participants for a specific thread
508
+ */
509
+ getRegularParticipantsForThread(threadId: string): Observable<PaginatedResponse<ThreadParticipant>>;
510
+ /**
511
+ * Get participants with notifications enabled for a specific thread
512
+ */
513
+ getNotificationEnabledParticipants(threadId: string): Observable<PaginatedResponse<ThreadParticipant>>;
514
+ /**
515
+ * Get participants with notifications disabled for a specific thread
516
+ */
517
+ getNotificationDisabledParticipants(threadId: string): Observable<PaginatedResponse<ThreadParticipant>>;
518
+ /**
519
+ * Toggle moderator status for a participant
520
+ */
521
+ toggleModeratorStatus(id: number): Observable<ThreadParticipant>;
522
+ /**
523
+ * Toggle notifications for a participant
524
+ */
525
+ toggleNotifications(id: number): Observable<ThreadParticipant>;
526
+ /**
527
+ * Leave a thread (for current user)
528
+ */
529
+ leaveThread(threadId: string): Observable<{
530
+ success: boolean;
531
+ message: string;
532
+ }>;
533
+ /**
534
+ * Get threads where current user is participant
535
+ */
536
+ getMyParticipations(): Observable<PaginatedResponse<ThreadParticipant>>;
537
+ /**
538
+ * Get threads where current user is moderator
539
+ */
540
+ getMyModerations(): Observable<PaginatedResponse<ThreadParticipant>>;
541
+ static ɵfac: i0.ɵɵFactoryDeclaration<ThreadParticipantService, never>;
542
+ static ɵprov: i0.ɵɵInjectableDeclaration<ThreadParticipantService>;
543
+ }
544
+
545
+ export { CupcakeMintChocolate, DeliveryStatus, DeliveryStatusLabels, MessageService, MessageThreadService, MessageType, MessageTypeLabels, NotificationPriority, NotificationPriorityLabels, NotificationService, NotificationType, NotificationTypeLabels, ThreadParticipantService };
546
+ export type { ApiResponse, BaseTimestampedModel, BulkNotificationActionRequest, MarkNotificationReadRequest, Message, MessageCreateRequest, MessageQueryParams, MessageSearchRequest, MessageThread, MessageThreadCreateRequest, MessageThreadQueryParams, MessageThreadUpdateRequest, MessageUpdateRequest, Notification, NotificationCreateRequest, NotificationQueryParams, NotificationUpdateRequest, PaginatedResponse, ThreadParticipant, ThreadParticipantQueryParams, ThreadParticipantRequest, ThreadSearchRequest, UserBasic };
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@noatgnu/cupcake-mint-chocolate",
3
+ "version": "1.0.0",
4
+ "description": "An extension for cupcake-core that provides additional api and interfaces for managing notifications and messaging.",
5
+ "author": "Toan Phung",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/noatgnu/cupcake-vanilla-ng"
10
+ },
11
+ "homepage": "https://github.com/noatgnu/cupcake-vanilla-ng#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/noatgnu/cupcake-vanilla-ng/issues"
14
+ },
15
+ "peerDependencies": {
16
+ "@angular/common": "^20.1.0",
17
+ "@angular/core": "^20.1.0",
18
+ "rxjs": "~7.8.0"
19
+ },
20
+ "dependencies": {
21
+ "tslib": "^2.3.0"
22
+ },
23
+ "sideEffects": false,
24
+ "module": "fesm2022/noatgnu-cupcake-mint-chocolate.mjs",
25
+ "typings": "index.d.ts",
26
+ "exports": {
27
+ "./package.json": {
28
+ "default": "./package.json"
29
+ },
30
+ ".": {
31
+ "types": "./index.d.ts",
32
+ "default": "./fesm2022/noatgnu-cupcake-mint-chocolate.mjs"
33
+ }
34
+ }
35
+ }