@wipperoz/wipperoz-core 1.1.9 → 1.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/billing/services/accountCreditManager.service.d.ts.map +1 -1
- package/dist/billing/services/accountCreditManager.service.js +43 -16
- package/dist/billing/services/accountCreditManager.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/sendWebSocketNotification.d.ts +28 -2
- package/dist/utils/sendWebSocketNotification.d.ts.map +1 -1
- package/dist/utils/sendWebSocketNotification.js +12 -4
- package/dist/utils/sendWebSocketNotification.js.map +1 -1
- package/package.json +2 -2
|
@@ -3,11 +3,32 @@ import { JSONObject } from '@wipperoz/common-utils/dist/lib/utils';
|
|
|
3
3
|
import { NotificationCategoryEnum, NotificationPriorityEnum, NotificationSeverityEnum } from '@wipperoz/common-entities/dist/src/enums';
|
|
4
4
|
type MetadataLeaf = string | number | boolean | null | Date;
|
|
5
5
|
type NotificationMetadata = Record<string, MetadataLeaf | JsonValue | JSONObject | MetadataLeaf[] | JsonValue[] | JSONObject[] | Record<string, MetadataLeaf | JsonValue | JSONObject>>;
|
|
6
|
+
/**
|
|
7
|
+
* SNS Message Types - Defines WHAT ACTION the UI should take
|
|
8
|
+
*
|
|
9
|
+
* - USER_NOTIFICATION: Show a bell notification to the user (user-facing alert)
|
|
10
|
+
* - USER_UPDATE: Silent UI update (refresh data without showing notification)
|
|
11
|
+
* - BROADCAST_MESSAGE: System-wide announcement to all users
|
|
12
|
+
* - SYSTEM_ALERT: Critical system notification
|
|
13
|
+
* - TYPING_INDICATOR: Real-time typing status in chat
|
|
14
|
+
* - STATUS_UPDATE: Status change (online/offline, etc.)
|
|
15
|
+
*
|
|
16
|
+
* Combined with NotificationCategoryEnum (CV, BILLING, ACCOUNT, etc.) to identify
|
|
17
|
+
* WHICH PART of the platform the notification belongs to.
|
|
18
|
+
*
|
|
19
|
+
* Examples:
|
|
20
|
+
* - CV Created: type=USER_NOTIFICATION, category=CV → Bell notification
|
|
21
|
+
* - CV Updated: type=USER_UPDATE, category=CV → Silent refresh of CV list
|
|
22
|
+
* - Balance Charged: type=USER_UPDATE, category=BILLING → Update balance display
|
|
23
|
+
* - Credits Added: type=USER_NOTIFICATION, category=BILLING → Bell + update balance
|
|
24
|
+
*/
|
|
25
|
+
export type SNSMessageType = 'USER_NOTIFICATION' | 'BROADCAST_MESSAGE' | 'SYSTEM_ALERT' | 'USER_UPDATE' | 'TYPING_INDICATOR' | 'STATUS_UPDATE';
|
|
6
26
|
export interface BellNotificationPayload {
|
|
7
27
|
userId: string;
|
|
8
28
|
id: string;
|
|
9
29
|
title: string;
|
|
10
30
|
message: string;
|
|
31
|
+
type?: SNSMessageType;
|
|
11
32
|
category?: NotificationCategoryEnum;
|
|
12
33
|
priority?: NotificationPriorityEnum;
|
|
13
34
|
severity?: NotificationSeverityEnum;
|
|
@@ -18,8 +39,13 @@ export interface BellNotificationPayload {
|
|
|
18
39
|
channels?: Partial<Record<'websocket' | 'email' | 'push', boolean>>;
|
|
19
40
|
}
|
|
20
41
|
/**
|
|
21
|
-
* Send a
|
|
22
|
-
*
|
|
42
|
+
* Send a WebSocket notification via SNS.
|
|
43
|
+
*
|
|
44
|
+
* Use `type` to control UI behavior:
|
|
45
|
+
* - USER_NOTIFICATION: Creates a bell notification (user-facing alert)
|
|
46
|
+
* - USER_UPDATE: Silent data refresh (no bell, just update UI state)
|
|
47
|
+
*
|
|
48
|
+
* Use `category` to identify the platform section (CV, BILLING, ACCOUNT, etc.)
|
|
23
49
|
*/
|
|
24
50
|
export declare function sendBellNotification(notification: BellNotificationPayload): Promise<void>;
|
|
25
51
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendWebSocketNotification.d.ts","sourceRoot":"","sources":["../../src/utils/sendWebSocketNotification.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAC,UAAU,EAAC,MAAM,uCAAuC,CAAC;AACjE,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,0CAA0C,CAAC;AAElD,KAAK,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5D,KAAK,oBAAoB,GAAG,MAAM,CAChC,MAAM,EACJ,YAAY,GACZ,SAAS,GACT,UAAU,GACV,YAAY,EAAE,GACd,SAAS,EAAE,GACX,UAAU,EAAE,GACZ,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC,CACxD,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACrE;AAED
|
|
1
|
+
{"version":3,"file":"sendWebSocketNotification.d.ts","sourceRoot":"","sources":["../../src/utils/sendWebSocketNotification.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAC,UAAU,EAAC,MAAM,uCAAuC,CAAC;AACjE,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,0CAA0C,CAAC;AAElD,KAAK,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5D,KAAK,oBAAoB,GAAG,MAAM,CAChC,MAAM,EACJ,YAAY,GACZ,SAAS,GACT,UAAU,GACV,YAAY,EAAE,GACd,SAAS,EAAE,GACX,UAAU,EAAE,GACZ,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC,CACxD,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,cAAc,GACtB,mBAAmB,GACnB,mBAAmB,GACnB,cAAc,GACd,aAAa,GACb,kBAAkB,GAClB,eAAe,CAAC;AAEpB,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACrE;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwE/F"}
|
|
@@ -4,8 +4,13 @@ exports.sendBellNotification = sendBellNotification;
|
|
|
4
4
|
const client_sns_1 = require("@aws-sdk/client-sns");
|
|
5
5
|
const enums_1 = require("@wipperoz/common-entities/dist/src/enums");
|
|
6
6
|
/**
|
|
7
|
-
* Send a
|
|
8
|
-
*
|
|
7
|
+
* Send a WebSocket notification via SNS.
|
|
8
|
+
*
|
|
9
|
+
* Use `type` to control UI behavior:
|
|
10
|
+
* - USER_NOTIFICATION: Creates a bell notification (user-facing alert)
|
|
11
|
+
* - USER_UPDATE: Silent data refresh (no bell, just update UI state)
|
|
12
|
+
*
|
|
13
|
+
* Use `category` to identify the platform section (CV, BILLING, ACCOUNT, etc.)
|
|
9
14
|
*/
|
|
10
15
|
async function sendBellNotification(notification) {
|
|
11
16
|
const snsTopicArn = process.env.WEBSOCKET_SNS_TOPIC_ARN;
|
|
@@ -25,8 +30,9 @@ async function sendBellNotification(notification) {
|
|
|
25
30
|
console.warn('[sendBellNotification] At least one channel must be enabled, skipping bell notification');
|
|
26
31
|
return;
|
|
27
32
|
}
|
|
33
|
+
const messageType = notification.type ?? 'USER_NOTIFICATION';
|
|
28
34
|
const bellNotification = {
|
|
29
|
-
type:
|
|
35
|
+
type: messageType,
|
|
30
36
|
userId: notification.userId,
|
|
31
37
|
timestamp: Date.now(),
|
|
32
38
|
channels,
|
|
@@ -45,6 +51,7 @@ async function sendBellNotification(notification) {
|
|
|
45
51
|
},
|
|
46
52
|
},
|
|
47
53
|
};
|
|
54
|
+
console.log('[sendBellNotification] Bell notification:', bellNotification);
|
|
48
55
|
try {
|
|
49
56
|
const command = new client_sns_1.PublishCommand({
|
|
50
57
|
TopicArn: snsTopicArn,
|
|
@@ -52,7 +59,7 @@ async function sendBellNotification(notification) {
|
|
|
52
59
|
MessageAttributes: {
|
|
53
60
|
messageType: {
|
|
54
61
|
DataType: 'String',
|
|
55
|
-
StringValue:
|
|
62
|
+
StringValue: messageType,
|
|
56
63
|
},
|
|
57
64
|
userId: {
|
|
58
65
|
DataType: 'String',
|
|
@@ -60,6 +67,7 @@ async function sendBellNotification(notification) {
|
|
|
60
67
|
},
|
|
61
68
|
},
|
|
62
69
|
});
|
|
70
|
+
console.log('[sendBellNotification] Bell notification command:', command);
|
|
63
71
|
await snsClient.send(command);
|
|
64
72
|
console.log('[sendBellNotification] Bell notification sent:', {
|
|
65
73
|
userId: notification.userId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendWebSocketNotification.js","sourceRoot":"","sources":["../../src/utils/sendWebSocketNotification.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"sendWebSocketNotification.js","sourceRoot":"","sources":["../../src/utils/sendWebSocketNotification.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wipperoz/wipperoz-core",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.10",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"bin": {
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
},
|
|
80
80
|
"dependencies": {
|
|
81
81
|
"@wipperoz/common-utils": "1.23.10",
|
|
82
|
-
"@wipperoz/common-entities": "1.8.
|
|
82
|
+
"@wipperoz/common-entities": "1.8.3",
|
|
83
83
|
"@wipperoz/common-entities-account": "1.4.4"
|
|
84
84
|
},
|
|
85
85
|
"config": {
|