dt-common-device 1.3.0 → 2.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/TROUBLESHOOTING.md +184 -0
- package/dist/config/config.d.ts +9 -2
- package/dist/config/config.js +97 -14
- package/dist/constants/Event.d.ts +75 -0
- package/dist/constants/Event.js +78 -0
- package/dist/db/db.d.ts +1 -0
- package/dist/db/db.js +18 -2
- package/dist/device/local/entities/AlertBuilder.d.ts +87 -0
- package/dist/device/local/entities/AlertBuilder.example.d.ts +11 -0
- package/dist/device/local/entities/AlertBuilder.example.js +117 -0
- package/dist/device/local/entities/AlertBuilder.js +179 -0
- package/dist/device/local/entities/IssueBuilder.d.ts +109 -0
- package/dist/device/local/entities/IssueBuilder.example.d.ts +16 -0
- package/dist/device/local/entities/IssueBuilder.example.js +196 -0
- package/dist/device/local/entities/IssueBuilder.js +237 -0
- package/dist/device/local/entities/index.d.ts +2 -0
- package/dist/device/local/entities/index.js +7 -0
- package/dist/device/local/interfaces/IDevice.d.ts +10 -9
- package/dist/device/local/interfaces/IDevice.js +7 -0
- package/dist/device/local/models/Alert.model.d.ts +28 -0
- package/dist/device/local/models/Alert.model.js +222 -0
- package/dist/device/local/models/Issue.model.d.ts +28 -0
- package/dist/device/local/models/Issue.model.js +260 -0
- package/dist/device/local/repository/Alert.repository.d.ts +106 -0
- package/dist/device/local/repository/Alert.repository.js +374 -0
- package/dist/device/local/repository/Device.repository.d.ts +10 -2
- package/dist/device/local/repository/Device.repository.js +153 -30
- package/dist/device/local/repository/Hub.repository.d.ts +1 -1
- package/dist/device/local/repository/Hub.repository.js +60 -18
- package/dist/device/local/repository/Issue.repository.d.ts +113 -0
- package/dist/device/local/repository/Issue.repository.js +401 -0
- package/dist/device/local/repository/Schedule.repository.d.ts +1 -1
- package/dist/device/local/repository/Schedule.repository.js +14 -18
- package/dist/device/local/services/Alert.service.d.ts +135 -5
- package/dist/device/local/services/Alert.service.js +471 -7
- package/dist/device/local/services/AlertService.example.d.ts +55 -0
- package/dist/device/local/services/AlertService.example.js +148 -0
- package/dist/device/local/services/Device.service.d.ts +8 -5
- package/dist/device/local/services/Device.service.js +58 -40
- package/dist/device/local/services/Issue.service.d.ts +168 -0
- package/dist/device/local/services/Issue.service.js +642 -0
- package/dist/device/local/services/IssueService.example.d.ts +68 -0
- package/dist/device/local/services/IssueService.example.js +177 -0
- package/dist/device/local/services/index.d.ts +7 -5
- package/dist/device/local/services/index.js +21 -11
- package/dist/events/BaseEventHandler.d.ts +43 -0
- package/dist/events/BaseEventHandler.js +111 -0
- package/dist/events/BaseEventTransformer.d.ts +26 -0
- package/dist/events/BaseEventTransformer.js +72 -0
- package/dist/events/DeviceEventHandler.d.ts +15 -0
- package/dist/events/DeviceEventHandler.js +152 -0
- package/dist/events/DeviceEventTransformerFactory.d.ts +27 -0
- package/dist/events/DeviceEventTransformerFactory.js +116 -0
- package/dist/events/EventHandler.d.ts +11 -0
- package/dist/events/EventHandler.js +106 -0
- package/dist/events/EventHandlerOrchestrator.d.ts +35 -0
- package/dist/events/EventHandlerOrchestrator.js +141 -0
- package/dist/events/EventProcessingService.d.ts +43 -0
- package/dist/events/EventProcessingService.js +243 -0
- package/dist/events/InternalEventSubscription.d.ts +44 -0
- package/dist/events/InternalEventSubscription.js +152 -0
- package/dist/events/index.d.ts +9 -0
- package/dist/events/index.js +21 -0
- package/dist/events/interfaces/DeviceEvent.d.ts +48 -0
- package/dist/events/interfaces/DeviceEvent.js +2 -0
- package/dist/events/interfaces/IEventHandler.d.ts +23 -0
- package/dist/events/interfaces/IEventHandler.js +2 -0
- package/dist/events/interfaces/IEventTransformer.d.ts +7 -0
- package/dist/events/interfaces/IEventTransformer.js +2 -0
- package/dist/events/interfaces/IInternalEvent.d.ts +42 -0
- package/dist/events/interfaces/IInternalEvent.js +2 -0
- package/dist/events/interfaces/index.d.ts +4 -0
- package/dist/events/interfaces/index.js +20 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +9 -2
- package/dist/types/alert.types.d.ts +57 -0
- package/dist/types/alert.types.js +22 -0
- package/dist/types/config.types.d.ts +15 -4
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +2 -0
- package/dist/types/issue.types.d.ts +90 -0
- package/dist/types/issue.types.js +40 -0
- package/dist/utils/http-utils.d.ts +13 -0
- package/dist/utils/http-utils.js +117 -0
- package/package.json +2 -1
- package/src/config/config.ts +117 -14
- package/src/{device/local/events/Events.ts → constants/Event.ts} +34 -13
- package/src/db/db.ts +14 -5
- package/src/device/local/entities/AlertBuilder.example.ts +126 -0
- package/src/device/local/entities/AlertBuilder.ts +202 -0
- package/src/device/local/entities/IssueBuilder.example.ts +210 -0
- package/src/device/local/entities/IssueBuilder.ts +263 -0
- package/src/device/local/entities/README.md +173 -0
- package/src/device/local/entities/index.ts +2 -0
- package/src/device/local/interfaces/IDevice.ts +11 -9
- package/src/device/local/models/Alert.model.md +319 -0
- package/src/device/local/models/Alert.model.ts +283 -0
- package/src/device/local/models/Issue.model.md +386 -0
- package/src/device/local/models/Issue.model.ts +350 -0
- package/src/device/local/models/README.md +312 -0
- package/src/device/local/repository/Alert.repository.ts +465 -0
- package/src/device/local/repository/Device.repository.ts +241 -32
- package/src/device/local/repository/Hub.repository.ts +74 -18
- package/src/device/local/repository/Issue.repository.ts +517 -0
- package/src/device/local/repository/Schedule.repository.ts +28 -22
- package/src/device/local/services/Alert.service.ts +617 -5
- package/src/device/local/services/AlertService.example.ts +229 -0
- package/src/device/local/services/Device.service.ts +70 -50
- package/src/device/local/services/Issue.service.ts +872 -0
- package/src/device/local/services/IssueService.example.ts +307 -0
- package/src/device/local/services/index.ts +7 -5
- package/src/events/BaseEventHandler.ts +145 -0
- package/src/events/BaseEventTransformer.ts +97 -0
- package/src/events/DeviceEventHandler.ts +211 -0
- package/src/events/DeviceEventTransformerFactory.ts +77 -0
- package/src/{device/local/events → events}/EventHandler.ts +19 -15
- package/src/events/EventHandlerOrchestrator.ts +119 -0
- package/src/events/EventProcessingService.ts +248 -0
- package/src/events/InternalEventSubscription.ts +219 -0
- package/src/events/index.ts +9 -0
- package/src/events/interfaces/DeviceEvent.ts +56 -0
- package/src/events/interfaces/IEventHandler.ts +28 -0
- package/src/events/interfaces/IEventTransformer.ts +8 -0
- package/src/events/interfaces/IInternalEvent.ts +47 -0
- package/src/events/interfaces/index.ts +4 -0
- package/src/index.ts +9 -2
- package/src/types/alert.types.ts +64 -0
- package/src/types/config.types.ts +17 -4
- package/src/types/index.ts +2 -0
- package/src/types/issue.types.ts +98 -0
- package/src/utils/http-utils.ts +143 -0
- package/src/device/local/events/index.ts +0 -2
|
@@ -37,14 +37,11 @@ var __setFunctionName = (this && this.__setFunctionName) || function (f, name, p
|
|
|
37
37
|
if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
|
|
38
38
|
return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
|
|
39
39
|
};
|
|
40
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
41
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
42
|
-
};
|
|
43
40
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
41
|
exports.ScheduleRepository = void 0;
|
|
45
42
|
const typedi_1 = require("typedi");
|
|
46
43
|
const config_1 = require("../../../config/config");
|
|
47
|
-
const
|
|
44
|
+
const http_utils_1 = require("../../../utils/http-utils");
|
|
48
45
|
let ScheduleRepository = (() => {
|
|
49
46
|
let _classDecorators = [(0, typedi_1.Service)()];
|
|
50
47
|
let _classDescriptor;
|
|
@@ -52,40 +49,39 @@ let ScheduleRepository = (() => {
|
|
|
52
49
|
let _classThis;
|
|
53
50
|
var ScheduleRepository = _classThis = class {
|
|
54
51
|
constructor() {
|
|
55
|
-
|
|
56
|
-
if (!DEVICE_SERVICE) {
|
|
57
|
-
throw new Error("DEVICE_SERVICE is not configured. Call initialize() first with DEVICE_SERVICE.");
|
|
58
|
-
}
|
|
59
|
-
this.baseUrl = DEVICE_SERVICE;
|
|
52
|
+
this.axiosInstance = (0, http_utils_1.getDeviceServiceAxiosInstance)();
|
|
60
53
|
}
|
|
61
54
|
async getSchedule(scheduleId) {
|
|
62
55
|
try {
|
|
63
|
-
const response = await
|
|
56
|
+
const response = await this.axiosInstance.get(`/devices/schedule?id=${scheduleId}`);
|
|
64
57
|
return response.data;
|
|
65
58
|
}
|
|
66
59
|
catch (error) {
|
|
67
|
-
|
|
68
|
-
|
|
60
|
+
(0, config_1.getConfig)().LOGGER.error(`Failed to get schedule ${scheduleId}:`, error);
|
|
61
|
+
const errorMessage = error.response?.data?.message || error.message || "Unknown error";
|
|
62
|
+
throw new Error(`Failed to get schedule: ${errorMessage}`);
|
|
69
63
|
}
|
|
70
64
|
}
|
|
71
65
|
async getScheduleByZone(zoneId) {
|
|
72
66
|
try {
|
|
73
|
-
const response = await
|
|
67
|
+
const response = await this.axiosInstance.get(`/devices/schedules?zoneId=${zoneId}`);
|
|
74
68
|
return response.data;
|
|
75
69
|
}
|
|
76
70
|
catch (error) {
|
|
77
|
-
|
|
78
|
-
|
|
71
|
+
(0, config_1.getConfig)().LOGGER.error(`Failed to get schedule by zone ${zoneId}:`, error);
|
|
72
|
+
const errorMessage = error.response?.data?.message || error.message || "Unknown error";
|
|
73
|
+
throw new Error(`Failed to get schedule: ${errorMessage}`);
|
|
79
74
|
}
|
|
80
75
|
}
|
|
81
76
|
async setSchedule(scheduleId, schedule) {
|
|
82
77
|
try {
|
|
83
|
-
const response = await
|
|
78
|
+
const response = await this.axiosInstance.put(`/devices/schedules/${scheduleId}`, schedule);
|
|
84
79
|
return response.data;
|
|
85
80
|
}
|
|
86
81
|
catch (error) {
|
|
87
|
-
|
|
88
|
-
|
|
82
|
+
(0, config_1.getConfig)().LOGGER.error(`Failed to update schedule ${scheduleId}:`, error);
|
|
83
|
+
const errorMessage = error.response?.data?.message || error.message || "Unknown error";
|
|
84
|
+
throw new Error(`Failed to update schedule: ${errorMessage}`);
|
|
89
85
|
}
|
|
90
86
|
}
|
|
91
87
|
};
|
|
@@ -1,7 +1,137 @@
|
|
|
1
|
+
import { AlertRepository } from "../repository/Alert.repository";
|
|
2
|
+
import { IAlertDocument } from "../models/Alert.model";
|
|
3
|
+
import { CreateAlertData, UpdateAlertData, AlertCategory, AlertSeverity, EntityType } from "../../../types/alert.types";
|
|
4
|
+
import { AlertBuilder } from "../entities/AlertBuilder";
|
|
1
5
|
export declare class AlertService {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
private readonly alertRepository;
|
|
7
|
+
constructor(alertRepository: AlertRepository);
|
|
8
|
+
/**
|
|
9
|
+
* Create a readiness alert using AlertBuilder
|
|
10
|
+
*/
|
|
11
|
+
raiseReadinessAlert(propertyId: string, title: string, description: string, entityId?: string, entityType?: EntityType, createdBy?: string): Promise<IAlertDocument>;
|
|
12
|
+
/**
|
|
13
|
+
* Create an operations alert using AlertBuilder
|
|
14
|
+
*/
|
|
15
|
+
raiseOperationsAlert(propertyId: string, title: string, description: string, entityId?: string, entityType?: EntityType, createdBy?: string): Promise<IAlertDocument>;
|
|
16
|
+
/**
|
|
17
|
+
* Create a security alert using AlertBuilder
|
|
18
|
+
*/
|
|
19
|
+
raiseSecurityAlert(propertyId: string, title: string, description: string, entityId?: string, entityType?: EntityType, createdBy?: string): Promise<IAlertDocument>;
|
|
20
|
+
/**
|
|
21
|
+
* Create an energy alert using AlertBuilder
|
|
22
|
+
*/
|
|
23
|
+
raiseEnergyAlert(propertyId: string, title: string, description: string, entityId?: string, entityType?: EntityType, createdBy?: string): Promise<IAlertDocument>;
|
|
24
|
+
/**
|
|
25
|
+
* Create a device-specific alert using AlertBuilder
|
|
26
|
+
*/
|
|
27
|
+
raiseDeviceAlert(deviceId: string, propertyId: string, title: string, description: string, category?: AlertCategory, severity?: AlertSeverity, createdBy?: string): Promise<IAlertDocument>;
|
|
28
|
+
/**
|
|
29
|
+
* Create a hub-specific alert using AlertBuilder
|
|
30
|
+
*/
|
|
31
|
+
raiseHubAlert(hubId: string, propertyId: string, title: string, description: string, category?: AlertCategory, severity?: AlertSeverity, createdBy?: string): Promise<IAlertDocument>;
|
|
32
|
+
/**
|
|
33
|
+
* Create a new alert with business logic validation
|
|
34
|
+
* Accepts either a CreateAlertData object or an AlertBuilder instance
|
|
35
|
+
*/
|
|
36
|
+
createAlert(alertData: CreateAlertData | AlertBuilder): Promise<IAlertDocument>;
|
|
37
|
+
/**
|
|
38
|
+
* Get alert by ID with business logic
|
|
39
|
+
*/
|
|
40
|
+
getAlertById(id: string, includeDeleted?: boolean): Promise<IAlertDocument | null>;
|
|
41
|
+
/**
|
|
42
|
+
* Get all alerts with business logic filtering
|
|
43
|
+
*/
|
|
44
|
+
getAlerts(filters?: {
|
|
45
|
+
propertyId?: string;
|
|
46
|
+
category?: AlertCategory;
|
|
47
|
+
severity?: AlertSeverity;
|
|
48
|
+
entityType?: EntityType;
|
|
49
|
+
entityId?: string;
|
|
50
|
+
isActive?: boolean;
|
|
51
|
+
isRead?: boolean;
|
|
52
|
+
includeDeleted?: boolean;
|
|
53
|
+
limit?: number;
|
|
54
|
+
skip?: number;
|
|
55
|
+
}): Promise<IAlertDocument[]>;
|
|
56
|
+
/**
|
|
57
|
+
* Update an alert with business logic validation
|
|
58
|
+
*/
|
|
59
|
+
updateAlert(id: string, updateData: UpdateAlertData): Promise<IAlertDocument | null>;
|
|
60
|
+
/**
|
|
61
|
+
* Soft delete an alert with business logic
|
|
62
|
+
*/
|
|
63
|
+
deleteAlert(id: string, deletedBy: string): Promise<boolean>;
|
|
64
|
+
/**
|
|
65
|
+
* Mark alert as read with business logic
|
|
66
|
+
*/
|
|
67
|
+
markAsRead(id: string, updatedBy: string): Promise<IAlertDocument | null>;
|
|
68
|
+
/**
|
|
69
|
+
* Mark alert as unread with business logic
|
|
70
|
+
*/
|
|
71
|
+
markAsUnread(id: string, updatedBy: string): Promise<IAlertDocument | null>;
|
|
72
|
+
/**
|
|
73
|
+
* Activate an alert with business logic
|
|
74
|
+
*/
|
|
75
|
+
activateAlert(id: string, updatedBy: string): Promise<IAlertDocument | null>;
|
|
76
|
+
/**
|
|
77
|
+
* Deactivate an alert with business logic
|
|
78
|
+
*/
|
|
79
|
+
deactivateAlert(id: string, updatedBy: string): Promise<IAlertDocument | null>;
|
|
80
|
+
/**
|
|
81
|
+
* Snooze an alert with business logic
|
|
82
|
+
*/
|
|
83
|
+
snoozeAlert(id: string, until: Date, updatedBy: string): Promise<IAlertDocument | null>;
|
|
84
|
+
/**
|
|
85
|
+
* Unsnooze an alert with business logic
|
|
86
|
+
*/
|
|
87
|
+
unsnoozeAlert(id: string, updatedBy: string): Promise<IAlertDocument | null>;
|
|
88
|
+
/**
|
|
89
|
+
* Get alerts by property with business logic
|
|
90
|
+
*/
|
|
91
|
+
getAlertsByProperty(propertyId: string, includeDeleted?: boolean): Promise<IAlertDocument[]>;
|
|
92
|
+
/**
|
|
93
|
+
* Get alerts by entity with business logic
|
|
94
|
+
*/
|
|
95
|
+
getAlertsByEntity(entityId: string, entityType: EntityType, includeDeleted?: boolean): Promise<IAlertDocument[]>;
|
|
96
|
+
/**
|
|
97
|
+
* Get alerts by category with business logic
|
|
98
|
+
*/
|
|
99
|
+
getAlertsByCategory(category: AlertCategory, includeDeleted?: boolean): Promise<IAlertDocument[]>;
|
|
100
|
+
/**
|
|
101
|
+
* Get alerts by severity with business logic
|
|
102
|
+
*/
|
|
103
|
+
getAlertsBySeverity(severity: AlertSeverity, includeDeleted?: boolean): Promise<IAlertDocument[]>;
|
|
104
|
+
/**
|
|
105
|
+
* Get active alerts with business logic
|
|
106
|
+
*/
|
|
107
|
+
getActiveAlerts(includeDeleted?: boolean): Promise<IAlertDocument[]>;
|
|
108
|
+
/**
|
|
109
|
+
* Get unread alerts with business logic
|
|
110
|
+
*/
|
|
111
|
+
getUnreadAlerts(includeDeleted?: boolean): Promise<IAlertDocument[]>;
|
|
112
|
+
/**
|
|
113
|
+
* Get snoozed alerts with business logic
|
|
114
|
+
*/
|
|
115
|
+
getSnoozedAlerts(includeDeleted?: boolean): Promise<IAlertDocument[]>;
|
|
116
|
+
/**
|
|
117
|
+
* Get expired snooze alerts with business logic
|
|
118
|
+
*/
|
|
119
|
+
getExpiredSnoozeAlerts(includeDeleted?: boolean): Promise<IAlertDocument[]>;
|
|
120
|
+
/**
|
|
121
|
+
* Get alert statistics with business logic
|
|
122
|
+
*/
|
|
123
|
+
getAlertStatistics(propertyId?: string): Promise<{
|
|
124
|
+
total: number;
|
|
125
|
+
active: number;
|
|
126
|
+
unread: number;
|
|
127
|
+
snoozed: number;
|
|
128
|
+
bySeverity: Record<AlertSeverity, number>;
|
|
129
|
+
byCategory: Record<AlertCategory, number>;
|
|
130
|
+
}>;
|
|
131
|
+
private validateAlertData;
|
|
132
|
+
private validateFilters;
|
|
133
|
+
private validateUpdateData;
|
|
134
|
+
private validateSnoozeDate;
|
|
135
|
+
private determineDefaultSeverity;
|
|
136
|
+
private applyBusinessRules;
|
|
7
137
|
}
|