imm-shared 1.0.3 → 1.0.5
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/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/managers/expo.manager.d.ts +7 -0
- package/dist/cjs/managers/expo.manager.d.ts.map +1 -0
- package/dist/cjs/managers/expo.manager.js +38 -0
- package/dist/cjs/managers/expo.manager.js.map +1 -0
- package/dist/cjs/managers/index.d.ts +3 -0
- package/dist/cjs/managers/index.d.ts.map +1 -0
- package/dist/cjs/managers/index.js +19 -0
- package/dist/cjs/managers/index.js.map +1 -0
- package/dist/cjs/managers/service-bus.manager.d.ts +11 -0
- package/dist/cjs/managers/service-bus.manager.d.ts.map +1 -0
- package/dist/cjs/managers/service-bus.manager.js +70 -0
- package/dist/cjs/managers/service-bus.manager.js.map +1 -0
- package/dist/cjs/models/notification.model.d.ts +13 -0
- package/dist/cjs/models/notification.model.d.ts.map +1 -1
- package/dist/cjs/models/notification.model.js +57 -1
- package/dist/cjs/models/notification.model.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/managers/expo.manager.d.ts +7 -0
- package/dist/esm/managers/expo.manager.d.ts.map +1 -0
- package/dist/esm/managers/expo.manager.js +34 -0
- package/dist/esm/managers/expo.manager.js.map +1 -0
- package/dist/esm/managers/index.d.ts +3 -0
- package/dist/esm/managers/index.d.ts.map +1 -0
- package/dist/esm/managers/index.js +3 -0
- package/dist/esm/managers/index.js.map +1 -0
- package/dist/esm/managers/service-bus.manager.d.ts +11 -0
- package/dist/esm/managers/service-bus.manager.d.ts.map +1 -0
- package/dist/esm/managers/service-bus.manager.js +66 -0
- package/dist/esm/managers/service-bus.manager.js.map +1 -0
- package/dist/esm/models/notification.model.d.ts +13 -0
- package/dist/esm/models/notification.model.d.ts.map +1 -1
- package/dist/esm/models/notification.model.js +54 -0
- package/dist/esm/models/notification.model.js.map +1 -1
- package/package.json +11 -2
package/dist/cjs/index.d.ts
CHANGED
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AAIzB,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,EAAE,CAAC;IAC5D,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AAIzB,cAAc,YAAY,CAAC;AAG3B,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,EAAE,CAAC;IAC5D,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -17,4 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
// Models and DTOs
|
|
18
18
|
__exportStar(require("./enums"), exports);
|
|
19
19
|
__exportStar(require("./models"), exports);
|
|
20
|
+
// export * from './schemas';
|
|
21
|
+
// Managers
|
|
22
|
+
__exportStar(require("./managers"), exports);
|
|
20
23
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kBAAkB;AAClB,0CAAwB;AACxB,2CAAyB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kBAAkB;AAClB,0CAAwB;AACxB,2CAAyB;AACzB,6BAA6B;AAE7B,WAAW;AACX,6CAA2B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expo.manager.d.ts","sourceRoot":"","sources":["../../../src/managers/expo.manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAExD,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAO;;IAMb,qBAAqB,CACzB,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,eAAe;CA8B3B"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExpoManager = void 0;
|
|
4
|
+
const expo_server_sdk_1 = require("expo-server-sdk");
|
|
5
|
+
class ExpoManager {
|
|
6
|
+
expo;
|
|
7
|
+
constructor() {
|
|
8
|
+
this.expo = new expo_server_sdk_1.Expo();
|
|
9
|
+
}
|
|
10
|
+
async sendPushNotifications(tokens, payload) {
|
|
11
|
+
try {
|
|
12
|
+
// Create the messages that will be sent to clients
|
|
13
|
+
const messages = [];
|
|
14
|
+
for (const pushToken of tokens) {
|
|
15
|
+
// Each push token looks like ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]
|
|
16
|
+
// Check that all your push tokens appear to be valid Expo push tokens
|
|
17
|
+
if (!expo_server_sdk_1.Expo.isExpoPushToken(pushToken)) {
|
|
18
|
+
console.error(`ExpoManager :: sendPushNotifications :: Push token ${pushToken} is not a valid Expo push token`);
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
// Construct a message (see https://docs.expo.io/push-notifications/sending-notifications/)
|
|
22
|
+
messages.push({
|
|
23
|
+
...payload,
|
|
24
|
+
to: pushToken,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
// const chunks = this.expo.chunkPushNotifications(messages);
|
|
28
|
+
// console.log('ExpoManager :: Sending messages: ', chunks.length);
|
|
29
|
+
const response = await this.expo.sendPushNotificationsAsync(messages);
|
|
30
|
+
console.log('ExpoManager :: sendPushNotifications :: Successfully sent message:', response);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
console.error('ExpoManager :: sendPushNotifications :: Error sending messages:', error);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.ExpoManager = ExpoManager;
|
|
38
|
+
//# sourceMappingURL=expo.manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expo.manager.js","sourceRoot":"","sources":["../../../src/managers/expo.manager.ts"],"names":[],"mappings":";;;AAAA,qDAAwD;AAExD,MAAa,WAAW;IACd,IAAI,CAAO;IAEnB;QACE,IAAI,CAAC,IAAI,GAAG,IAAI,sBAAI,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,MAAgB,EAChB,OAAwB;QAExB,IAAI,CAAC;YACH,mDAAmD;YACnD,MAAM,QAAQ,GAAG,EAAuB,CAAC;YACzC,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;gBAC/B,uEAAuE;gBACvE,sEAAsE;gBACtE,IAAI,CAAC,sBAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;oBACrC,OAAO,CAAC,KAAK,CACX,sDAAsD,SAAS,iCAAiC,CACjG,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,2FAA2F;gBAC3F,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG,OAAO;oBACV,EAAE,EAAE,SAAS;iBACd,CAAC,CAAC;YACL,CAAC;YAED,6DAA6D;YAC7D,mEAAmE;YACnE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,oEAAoE,EAAE,QAAQ,CAAC,CAAC;QAC9F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iEAAiE,EAAE,KAAK,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;CACF;AAvCD,kCAuCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/managers/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./service-bus.manager"), exports);
|
|
18
|
+
__exportStar(require("./expo.manager"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/managers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,iDAA+B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class ServiceBusManager {
|
|
2
|
+
private sbClient;
|
|
3
|
+
private sender;
|
|
4
|
+
private receiver;
|
|
5
|
+
constructor(connectionString: string);
|
|
6
|
+
sendMessagesToServiceBus<T>(topicName: string, messages: T[]): Promise<void>;
|
|
7
|
+
listenMessagesFromServiceBus<T>(topicName: string, subscriptionName: string, count?: number): Promise<T[] | undefined>;
|
|
8
|
+
peekMessagesFromServiceBus<T>(): Promise<T | undefined>;
|
|
9
|
+
closeSBClient(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=service-bus.manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-bus.manager.d.ts","sourceRoot":"","sources":["../../../src/managers/service-bus.manager.ts"],"names":[],"mappings":"AAMA,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,QAAQ,CAAqB;gBAGnC,gBAAgB,EAAE,MAAM;IAMpB,wBAAwB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B5E,4BAA4B,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC;IAsCzH,0BAA0B,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAkBvD,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAMrC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ServiceBusManager = void 0;
|
|
4
|
+
const service_bus_1 = require("@azure/service-bus");
|
|
5
|
+
class ServiceBusManager {
|
|
6
|
+
sbClient;
|
|
7
|
+
sender;
|
|
8
|
+
receiver;
|
|
9
|
+
constructor(connectionString) {
|
|
10
|
+
this.sbClient = new service_bus_1.ServiceBusClient(connectionString);
|
|
11
|
+
console.log('ServiceBusManager :: init :: Service Bus initialized');
|
|
12
|
+
}
|
|
13
|
+
async sendMessagesToServiceBus(topicName, messages) {
|
|
14
|
+
try {
|
|
15
|
+
this.sender = this.sbClient.createSender(topicName);
|
|
16
|
+
console.log('ServiceBusManager :: sendMessagesToServiceBus :: Preparing to send message to service bus');
|
|
17
|
+
await this.sender.sendMessages({
|
|
18
|
+
body: messages,
|
|
19
|
+
});
|
|
20
|
+
console.log('ServiceBusManager :: sendMessagesToServiceBus :: Message sent to service bus');
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error('ServiceBusManager :: sendMessagesToServiceBus :: Could not send message to service bus', error instanceof Error ? error.message : String(error));
|
|
24
|
+
throw error;
|
|
25
|
+
}
|
|
26
|
+
finally {
|
|
27
|
+
await this.sender.close();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async listenMessagesFromServiceBus(topicName, subscriptionName, count = 1) {
|
|
31
|
+
try {
|
|
32
|
+
this.receiver = this.sbClient.createReceiver(topicName, subscriptionName);
|
|
33
|
+
console.log('ServiceBusManager :: listenMessagesFromServiceBus :: Repairing to listen for messages from service bus');
|
|
34
|
+
const messages = await this.receiver.receiveMessages(count, {
|
|
35
|
+
maxWaitTimeInMs: 5000,
|
|
36
|
+
});
|
|
37
|
+
const messageBodies = await Promise.all(messages.map(async (message) => {
|
|
38
|
+
console.log(`ServiceBusManager :: listenMessagesFromServiceBus :: Processing message: ${message.body}`);
|
|
39
|
+
await this.receiver.completeMessage(message);
|
|
40
|
+
return message.body;
|
|
41
|
+
}));
|
|
42
|
+
console.log('ServiceBusManager :: listenMessagesFromServiceBus :: Message completed and removed from queue');
|
|
43
|
+
return messageBodies;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error('ServiceBusManager :: listenMessagesFromServiceBus :: Could not listen for messages from service bus', error instanceof Error ? error.message : String(error));
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
await this.receiver.close();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async peekMessagesFromServiceBus() {
|
|
54
|
+
try {
|
|
55
|
+
console.log('ServiceBusManager :: watchMessagesFromServiceBus :: Watching for messages from service bus');
|
|
56
|
+
const messages = await this.receiver.peekMessages(1);
|
|
57
|
+
return messages[0]?.body;
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
console.error('ServiceBusManager :: watchMessagesFromServiceBus :: Could not watch for messages from service bus', error instanceof Error ? error.message : String(error));
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async closeSBClient() {
|
|
65
|
+
await this.sbClient.close();
|
|
66
|
+
console.log('ServiceBusManager :: closeSBClient :: Service Bus client closed');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.ServiceBusManager = ServiceBusManager;
|
|
70
|
+
//# sourceMappingURL=service-bus.manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-bus.manager.js","sourceRoot":"","sources":["../../../src/managers/service-bus.manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Language } from "../enums/language.enum.js";
|
|
1
2
|
export declare enum NotificationType {
|
|
2
3
|
CRS_DRAW = "crs",
|
|
3
4
|
NEWS = "news"
|
|
@@ -11,5 +12,17 @@ export interface Notification {
|
|
|
11
12
|
deviceId: string;
|
|
12
13
|
isOpened: boolean;
|
|
13
14
|
createdAt: Date;
|
|
15
|
+
updatedAt?: Date;
|
|
16
|
+
}
|
|
17
|
+
export declare class CreateNotificationDto implements Partial<Notification> {
|
|
18
|
+
title: string;
|
|
19
|
+
message?: string;
|
|
20
|
+
itemId?: string;
|
|
21
|
+
type: NotificationType;
|
|
22
|
+
isOpened: boolean;
|
|
23
|
+
language: Language;
|
|
24
|
+
}
|
|
25
|
+
export declare class UpdateNotificationStatusDto {
|
|
26
|
+
isOpened: boolean;
|
|
14
27
|
}
|
|
15
28
|
//# sourceMappingURL=notification.model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.model.d.ts","sourceRoot":"","sources":["../../../src/models/notification.model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"notification.model.d.ts","sourceRoot":"","sources":["../../../src/models/notification.model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,oBAAY,gBAAgB;IAC1B,QAAQ,QAAQ;IAChB,IAAI,SAAS;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,qBAAa,qBAAsB,YAAW,OAAO,CAAC,YAAY,CAAC;IAEjE,KAAK,EAAE,MAAM,CAAC;IAId,OAAO,CAAC,EAAE,MAAM,CAAC;IAIjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,IAAI,EAAE,gBAAgB,CAAC;IAIvB,QAAQ,EAAE,OAAO,CAAS;IAI1B,QAAQ,EAAE,QAAQ,CAAe;CAClC;AAED,qBAAa,2BAA2B;IAEtC,QAAQ,EAAE,OAAO,CAAC;CACnB"}
|
|
@@ -1,9 +1,65 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NotificationType = void 0;
|
|
12
|
+
exports.UpdateNotificationStatusDto = exports.CreateNotificationDto = exports.NotificationType = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
const language_enum_js_1 = require("../enums/language.enum.js");
|
|
4
15
|
var NotificationType;
|
|
5
16
|
(function (NotificationType) {
|
|
6
17
|
NotificationType["CRS_DRAW"] = "crs";
|
|
7
18
|
NotificationType["NEWS"] = "news";
|
|
8
19
|
})(NotificationType || (exports.NotificationType = NotificationType = {}));
|
|
20
|
+
class CreateNotificationDto {
|
|
21
|
+
title;
|
|
22
|
+
message;
|
|
23
|
+
itemId;
|
|
24
|
+
type;
|
|
25
|
+
isOpened = false;
|
|
26
|
+
language = language_enum_js_1.Language.EN;
|
|
27
|
+
}
|
|
28
|
+
exports.CreateNotificationDto = CreateNotificationDto;
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, class_validator_1.IsString)(),
|
|
31
|
+
__metadata("design:type", String)
|
|
32
|
+
], CreateNotificationDto.prototype, "title", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, class_validator_1.IsString)(),
|
|
35
|
+
(0, class_validator_1.IsOptional)(),
|
|
36
|
+
__metadata("design:type", String)
|
|
37
|
+
], CreateNotificationDto.prototype, "message", void 0);
|
|
38
|
+
__decorate([
|
|
39
|
+
(0, class_validator_1.IsString)(),
|
|
40
|
+
(0, class_validator_1.IsOptional)(),
|
|
41
|
+
__metadata("design:type", String)
|
|
42
|
+
], CreateNotificationDto.prototype, "itemId", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
(0, class_validator_1.IsEnum)(NotificationType),
|
|
45
|
+
__metadata("design:type", String)
|
|
46
|
+
], CreateNotificationDto.prototype, "type", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, class_validator_1.IsBoolean)(),
|
|
49
|
+
(0, class_validator_1.IsOptional)(),
|
|
50
|
+
__metadata("design:type", Boolean)
|
|
51
|
+
], CreateNotificationDto.prototype, "isOpened", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
(0, class_validator_1.IsEnum)(language_enum_js_1.Language),
|
|
54
|
+
(0, class_validator_1.IsOptional)(),
|
|
55
|
+
__metadata("design:type", String)
|
|
56
|
+
], CreateNotificationDto.prototype, "language", void 0);
|
|
57
|
+
class UpdateNotificationStatusDto {
|
|
58
|
+
isOpened;
|
|
59
|
+
}
|
|
60
|
+
exports.UpdateNotificationStatusDto = UpdateNotificationStatusDto;
|
|
61
|
+
__decorate([
|
|
62
|
+
(0, class_validator_1.IsBoolean)(),
|
|
63
|
+
__metadata("design:type", Boolean)
|
|
64
|
+
], UpdateNotificationStatusDto.prototype, "isOpened", void 0);
|
|
9
65
|
//# sourceMappingURL=notification.model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.model.js","sourceRoot":"","sources":["../../../src/models/notification.model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"notification.model.js","sourceRoot":"","sources":["../../../src/models/notification.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA0E;AAC1E,gEAAqD;AAErD,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,oCAAgB,CAAA;IAChB,iCAAa,CAAA;AACf,CAAC,EAHW,gBAAgB,gCAAhB,gBAAgB,QAG3B;AAcD,MAAa,qBAAqB;IAEhC,KAAK,CAAS;IAId,OAAO,CAAU;IAIjB,MAAM,CAAU;IAGhB,IAAI,CAAmB;IAIvB,QAAQ,GAAY,KAAK,CAAC;IAI1B,QAAQ,GAAa,2BAAQ,CAAC,EAAE,CAAC;CAClC;AAtBD,sDAsBC;AApBC;IADC,IAAA,0BAAQ,GAAE;;oDACG;AAId;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;sDACI;AAIjB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;qDACG;AAGhB;IADC,IAAA,wBAAM,EAAC,gBAAgB,CAAC;;mDACF;AAIvB;IAFC,IAAA,2BAAS,GAAE;IACX,IAAA,4BAAU,GAAE;;uDACa;AAI1B;IAFC,IAAA,wBAAM,EAAC,2BAAQ,CAAC;IAChB,IAAA,4BAAU,GAAE;;uDACoB;AAGnC,MAAa,2BAA2B;IAEtC,QAAQ,CAAU;CACnB;AAHD,kEAGC;AADC;IADC,IAAA,2BAAS,GAAE;;6DACM"}
|
package/dist/esm/index.d.ts
CHANGED
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AAIzB,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,EAAE,CAAC;IAC5D,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AAIzB,cAAc,YAAY,CAAC;AAG3B,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,EAAE,CAAC;IAC5D,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,6BAA6B;AAE7B,WAAW;AACX,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expo.manager.d.ts","sourceRoot":"","sources":["../../../src/managers/expo.manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAExD,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAO;;IAMb,qBAAqB,CACzB,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,eAAe;CA8B3B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Expo } from 'expo-server-sdk';
|
|
2
|
+
export class ExpoManager {
|
|
3
|
+
expo;
|
|
4
|
+
constructor() {
|
|
5
|
+
this.expo = new Expo();
|
|
6
|
+
}
|
|
7
|
+
async sendPushNotifications(tokens, payload) {
|
|
8
|
+
try {
|
|
9
|
+
// Create the messages that will be sent to clients
|
|
10
|
+
const messages = [];
|
|
11
|
+
for (const pushToken of tokens) {
|
|
12
|
+
// Each push token looks like ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]
|
|
13
|
+
// Check that all your push tokens appear to be valid Expo push tokens
|
|
14
|
+
if (!Expo.isExpoPushToken(pushToken)) {
|
|
15
|
+
console.error(`ExpoManager :: sendPushNotifications :: Push token ${pushToken} is not a valid Expo push token`);
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
// Construct a message (see https://docs.expo.io/push-notifications/sending-notifications/)
|
|
19
|
+
messages.push({
|
|
20
|
+
...payload,
|
|
21
|
+
to: pushToken,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
// const chunks = this.expo.chunkPushNotifications(messages);
|
|
25
|
+
// console.log('ExpoManager :: Sending messages: ', chunks.length);
|
|
26
|
+
const response = await this.expo.sendPushNotificationsAsync(messages);
|
|
27
|
+
console.log('ExpoManager :: sendPushNotifications :: Successfully sent message:', response);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error('ExpoManager :: sendPushNotifications :: Error sending messages:', error);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=expo.manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expo.manager.js","sourceRoot":"","sources":["../../../src/managers/expo.manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,iBAAiB,CAAC;AAExD,MAAM,OAAO,WAAW;IACd,IAAI,CAAO;IAEnB;QACE,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,MAAgB,EAChB,OAAwB;QAExB,IAAI,CAAC;YACH,mDAAmD;YACnD,MAAM,QAAQ,GAAG,EAAuB,CAAC;YACzC,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;gBAC/B,uEAAuE;gBACvE,sEAAsE;gBACtE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;oBACrC,OAAO,CAAC,KAAK,CACX,sDAAsD,SAAS,iCAAiC,CACjG,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,2FAA2F;gBAC3F,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG,OAAO;oBACV,EAAE,EAAE,SAAS;iBACd,CAAC,CAAC;YACL,CAAC;YAED,6DAA6D;YAC7D,mEAAmE;YACnE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,oEAAoE,EAAE,QAAQ,CAAC,CAAC;QAC9F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iEAAiE,EAAE,KAAK,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/managers/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/managers/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class ServiceBusManager {
|
|
2
|
+
private sbClient;
|
|
3
|
+
private sender;
|
|
4
|
+
private receiver;
|
|
5
|
+
constructor(connectionString: string);
|
|
6
|
+
sendMessagesToServiceBus<T>(topicName: string, messages: T[]): Promise<void>;
|
|
7
|
+
listenMessagesFromServiceBus<T>(topicName: string, subscriptionName: string, count?: number): Promise<T[] | undefined>;
|
|
8
|
+
peekMessagesFromServiceBus<T>(): Promise<T | undefined>;
|
|
9
|
+
closeSBClient(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=service-bus.manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-bus.manager.d.ts","sourceRoot":"","sources":["../../../src/managers/service-bus.manager.ts"],"names":[],"mappings":"AAMA,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,QAAQ,CAAqB;gBAGnC,gBAAgB,EAAE,MAAM;IAMpB,wBAAwB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B5E,4BAA4B,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC;IAsCzH,0BAA0B,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAkBvD,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAMrC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ServiceBusClient, } from '@azure/service-bus';
|
|
2
|
+
export class ServiceBusManager {
|
|
3
|
+
sbClient;
|
|
4
|
+
sender;
|
|
5
|
+
receiver;
|
|
6
|
+
constructor(connectionString) {
|
|
7
|
+
this.sbClient = new ServiceBusClient(connectionString);
|
|
8
|
+
console.log('ServiceBusManager :: init :: Service Bus initialized');
|
|
9
|
+
}
|
|
10
|
+
async sendMessagesToServiceBus(topicName, messages) {
|
|
11
|
+
try {
|
|
12
|
+
this.sender = this.sbClient.createSender(topicName);
|
|
13
|
+
console.log('ServiceBusManager :: sendMessagesToServiceBus :: Preparing to send message to service bus');
|
|
14
|
+
await this.sender.sendMessages({
|
|
15
|
+
body: messages,
|
|
16
|
+
});
|
|
17
|
+
console.log('ServiceBusManager :: sendMessagesToServiceBus :: Message sent to service bus');
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
console.error('ServiceBusManager :: sendMessagesToServiceBus :: Could not send message to service bus', error instanceof Error ? error.message : String(error));
|
|
21
|
+
throw error;
|
|
22
|
+
}
|
|
23
|
+
finally {
|
|
24
|
+
await this.sender.close();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async listenMessagesFromServiceBus(topicName, subscriptionName, count = 1) {
|
|
28
|
+
try {
|
|
29
|
+
this.receiver = this.sbClient.createReceiver(topicName, subscriptionName);
|
|
30
|
+
console.log('ServiceBusManager :: listenMessagesFromServiceBus :: Repairing to listen for messages from service bus');
|
|
31
|
+
const messages = await this.receiver.receiveMessages(count, {
|
|
32
|
+
maxWaitTimeInMs: 5000,
|
|
33
|
+
});
|
|
34
|
+
const messageBodies = await Promise.all(messages.map(async (message) => {
|
|
35
|
+
console.log(`ServiceBusManager :: listenMessagesFromServiceBus :: Processing message: ${message.body}`);
|
|
36
|
+
await this.receiver.completeMessage(message);
|
|
37
|
+
return message.body;
|
|
38
|
+
}));
|
|
39
|
+
console.log('ServiceBusManager :: listenMessagesFromServiceBus :: Message completed and removed from queue');
|
|
40
|
+
return messageBodies;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
console.error('ServiceBusManager :: listenMessagesFromServiceBus :: Could not listen for messages from service bus', error instanceof Error ? error.message : String(error));
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
await this.receiver.close();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async peekMessagesFromServiceBus() {
|
|
51
|
+
try {
|
|
52
|
+
console.log('ServiceBusManager :: watchMessagesFromServiceBus :: Watching for messages from service bus');
|
|
53
|
+
const messages = await this.receiver.peekMessages(1);
|
|
54
|
+
return messages[0]?.body;
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
console.error('ServiceBusManager :: watchMessagesFromServiceBus :: Could not watch for messages from service bus', error instanceof Error ? error.message : String(error));
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async closeSBClient() {
|
|
62
|
+
await this.sbClient.close();
|
|
63
|
+
console.log('ServiceBusManager :: closeSBClient :: Service Bus client closed');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=service-bus.manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-bus.manager.js","sourceRoot":"","sources":["../../../src/managers/service-bus.manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Language } from "../enums/language.enum.js";
|
|
1
2
|
export declare enum NotificationType {
|
|
2
3
|
CRS_DRAW = "crs",
|
|
3
4
|
NEWS = "news"
|
|
@@ -11,5 +12,17 @@ export interface Notification {
|
|
|
11
12
|
deviceId: string;
|
|
12
13
|
isOpened: boolean;
|
|
13
14
|
createdAt: Date;
|
|
15
|
+
updatedAt?: Date;
|
|
16
|
+
}
|
|
17
|
+
export declare class CreateNotificationDto implements Partial<Notification> {
|
|
18
|
+
title: string;
|
|
19
|
+
message?: string;
|
|
20
|
+
itemId?: string;
|
|
21
|
+
type: NotificationType;
|
|
22
|
+
isOpened: boolean;
|
|
23
|
+
language: Language;
|
|
24
|
+
}
|
|
25
|
+
export declare class UpdateNotificationStatusDto {
|
|
26
|
+
isOpened: boolean;
|
|
14
27
|
}
|
|
15
28
|
//# sourceMappingURL=notification.model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.model.d.ts","sourceRoot":"","sources":["../../../src/models/notification.model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"notification.model.d.ts","sourceRoot":"","sources":["../../../src/models/notification.model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,oBAAY,gBAAgB;IAC1B,QAAQ,QAAQ;IAChB,IAAI,SAAS;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,qBAAa,qBAAsB,YAAW,OAAO,CAAC,YAAY,CAAC;IAEjE,KAAK,EAAE,MAAM,CAAC;IAId,OAAO,CAAC,EAAE,MAAM,CAAC;IAIjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,IAAI,EAAE,gBAAgB,CAAC;IAIvB,QAAQ,EAAE,OAAO,CAAS;IAI1B,QAAQ,EAAE,QAAQ,CAAe;CAClC;AAED,qBAAa,2BAA2B;IAEtC,QAAQ,EAAE,OAAO,CAAC;CACnB"}
|
|
@@ -1,6 +1,60 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { IsBoolean, IsEnum, IsOptional, IsString } from "class-validator";
|
|
11
|
+
import { Language } from "../enums/language.enum.js";
|
|
1
12
|
export var NotificationType;
|
|
2
13
|
(function (NotificationType) {
|
|
3
14
|
NotificationType["CRS_DRAW"] = "crs";
|
|
4
15
|
NotificationType["NEWS"] = "news";
|
|
5
16
|
})(NotificationType || (NotificationType = {}));
|
|
17
|
+
export class CreateNotificationDto {
|
|
18
|
+
title;
|
|
19
|
+
message;
|
|
20
|
+
itemId;
|
|
21
|
+
type;
|
|
22
|
+
isOpened = false;
|
|
23
|
+
language = Language.EN;
|
|
24
|
+
}
|
|
25
|
+
__decorate([
|
|
26
|
+
IsString(),
|
|
27
|
+
__metadata("design:type", String)
|
|
28
|
+
], CreateNotificationDto.prototype, "title", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
IsString(),
|
|
31
|
+
IsOptional(),
|
|
32
|
+
__metadata("design:type", String)
|
|
33
|
+
], CreateNotificationDto.prototype, "message", void 0);
|
|
34
|
+
__decorate([
|
|
35
|
+
IsString(),
|
|
36
|
+
IsOptional(),
|
|
37
|
+
__metadata("design:type", String)
|
|
38
|
+
], CreateNotificationDto.prototype, "itemId", void 0);
|
|
39
|
+
__decorate([
|
|
40
|
+
IsEnum(NotificationType),
|
|
41
|
+
__metadata("design:type", String)
|
|
42
|
+
], CreateNotificationDto.prototype, "type", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
IsBoolean(),
|
|
45
|
+
IsOptional(),
|
|
46
|
+
__metadata("design:type", Boolean)
|
|
47
|
+
], CreateNotificationDto.prototype, "isOpened", void 0);
|
|
48
|
+
__decorate([
|
|
49
|
+
IsEnum(Language),
|
|
50
|
+
IsOptional(),
|
|
51
|
+
__metadata("design:type", String)
|
|
52
|
+
], CreateNotificationDto.prototype, "language", void 0);
|
|
53
|
+
export class UpdateNotificationStatusDto {
|
|
54
|
+
isOpened;
|
|
55
|
+
}
|
|
56
|
+
__decorate([
|
|
57
|
+
IsBoolean(),
|
|
58
|
+
__metadata("design:type", Boolean)
|
|
59
|
+
], UpdateNotificationStatusDto.prototype, "isOpened", void 0);
|
|
6
60
|
//# sourceMappingURL=notification.model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.model.js","sourceRoot":"","sources":["../../../src/models/notification.model.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,oCAAgB,CAAA;IAChB,iCAAa,CAAA;AACf,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B"}
|
|
1
|
+
{"version":3,"file":"notification.model.js","sourceRoot":"","sources":["../../../src/models/notification.model.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,oCAAgB,CAAA;IAChB,iCAAa,CAAA;AACf,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAcD,MAAM,OAAO,qBAAqB;IAEhC,KAAK,CAAS;IAId,OAAO,CAAU;IAIjB,MAAM,CAAU;IAGhB,IAAI,CAAmB;IAIvB,QAAQ,GAAY,KAAK,CAAC;IAI1B,QAAQ,GAAa,QAAQ,CAAC,EAAE,CAAC;CAClC;AApBC;IADC,QAAQ,EAAE;;oDACG;AAId;IAFC,QAAQ,EAAE;IACV,UAAU,EAAE;;sDACI;AAIjB;IAFC,QAAQ,EAAE;IACV,UAAU,EAAE;;qDACG;AAGhB;IADC,MAAM,CAAC,gBAAgB,CAAC;;mDACF;AAIvB;IAFC,SAAS,EAAE;IACX,UAAU,EAAE;;uDACa;AAI1B;IAFC,MAAM,CAAC,QAAQ,CAAC;IAChB,UAAU,EAAE;;uDACoB;AAGnC,MAAM,OAAO,2BAA2B;IAEtC,QAAQ,CAAU;CACnB;AADC;IADC,SAAS,EAAE;;6DACM"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "imm-shared",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -28,7 +28,14 @@
|
|
|
28
28
|
"prepublishOnly": "npm run build",
|
|
29
29
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
30
30
|
},
|
|
31
|
-
"keywords": [
|
|
31
|
+
"keywords": [
|
|
32
|
+
"shared",
|
|
33
|
+
"models",
|
|
34
|
+
"types",
|
|
35
|
+
"typescript",
|
|
36
|
+
"mongoose",
|
|
37
|
+
"class-validator"
|
|
38
|
+
],
|
|
32
39
|
"author": "Nvi <contact@nvimai.com>",
|
|
33
40
|
"license": "ISC",
|
|
34
41
|
"description": "Shared models, types, and utilities for IMM applications",
|
|
@@ -37,7 +44,9 @@
|
|
|
37
44
|
"typescript": "^5.9.2"
|
|
38
45
|
},
|
|
39
46
|
"dependencies": {
|
|
47
|
+
"@azure/service-bus": "^7.9.5",
|
|
40
48
|
"class-validator": "^0.14.2",
|
|
49
|
+
"expo-server-sdk": "^3.15.0",
|
|
41
50
|
"mongoose": "^8.17.1"
|
|
42
51
|
}
|
|
43
52
|
}
|