dt-common-device 13.0.22 → 13.0.23
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/admin/Admin.repository.d.ts +7 -0
- package/dist/admin/Admin.service.d.ts +5 -0
- package/dist/admin/index.d.ts +1 -0
- package/dist/alerts/AlertBuilder.example.d.ts +11 -0
- package/dist/alerts/AlertService.example.d.ts +55 -0
- package/dist/audit/AuditProperties.d.ts +16 -0
- package/dist/chronicle/Cronicle.service.d.ts +9 -0
- package/dist/chronicle/IChronicle.interface.d.ts +14 -0
- package/dist/chronicle/ICronicle.interface.d.ts +15 -0
- package/dist/chronicle/chronicle.service.d.ts +4 -0
- package/dist/chronicle/index.d.ts +2 -0
- package/dist/connection/Connection.repository.d.ts +8 -0
- package/dist/connection/Connection.service.d.ts +8 -0
- package/dist/connection/IConnection.d.ts +28 -0
- package/dist/connection/index.d.ts +2 -0
- package/dist/constants/ConnectionProviders.d.ts +1 -0
- package/dist/constants/ConnectionProviders.js +1 -0
- package/dist/copilotQueue/examples/CopilotQueue.example.d.ts +37 -0
- package/dist/copilotQueue/examples/index.d.ts +1 -0
- package/dist/device/cloud/entities/CloudConnection.d.ts +6 -0
- package/dist/device/cloud/entities/CloudDevice.d.ts +16 -0
- package/dist/device/cloud/entities/CloudDeviceService.d.ts +5 -0
- package/dist/device/cloud/entities/DeviceFactory.d.ts +7 -0
- package/dist/device/cloud/entities/index.d.ts +3 -0
- package/dist/device/cloud/interface.d.ts +101 -0
- package/dist/device/cloud/interfaces/ICloudConnection.d.ts +5 -0
- package/dist/device/cloud/interfaces/ICloudDevice.d.ts +9 -0
- package/dist/device/cloud/interfaces/ICloudDeviceService.d.ts +4 -0
- package/dist/device/cloud/interfaces/IConnectionService.d.ts +7 -0
- package/dist/device/cloud/interfaces/IDeviceConnectionService.d.ts +7 -0
- package/dist/device/cloud/interfaces/IDeviceFactory.d.ts +4 -0
- package/dist/device/cloud/interfaces/IDeviceService.d.ts +8 -0
- package/dist/device/cloud/interfaces/IDevicesService.d.ts +9 -0
- package/dist/device/cloud/interfaces/IHubService.d.ts +5 -0
- package/dist/device/cloud/interfaces/IRawDataTransformer.d.ts +4 -0
- package/dist/device/cloud/interfaces/IRawDevice.d.ts +17 -0
- package/dist/device/cloud/interfaces/index.d.ts +5 -0
- package/dist/device/cloud/services/CloudDevice.service.d.ts +5 -0
- package/dist/device/cloud/services/Connection.service.d.ts +8 -0
- package/dist/device/cloud/services/Device.service.d.ts +39 -0
- package/dist/device/cloud/services/DeviceCloudService.d.ts +42 -0
- package/dist/device/cloud/services/DeviceHub.service.d.ts +3 -0
- package/dist/device/cloud/services/Hub.service.d.ts +25 -0
- package/dist/device/cloud/services/SmartThingsDeviceService.d.ts +38 -0
- package/dist/device/cloud/services/SmartThingsDeviceService.js +52 -0
- package/dist/device/cloud/services/index.d.ts +2 -0
- package/dist/device/cloud/types.d.ts +52 -0
- package/dist/device/cloud/types.js +15 -0
- package/dist/device/index.d.ts +4 -0
- 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/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/events/EventHandler.d.ts +11 -0
- package/dist/device/local/events/Events.d.ts +54 -0
- package/dist/device/local/events/index.d.ts +2 -0
- package/dist/device/local/handler/EventHandler.d.ts +7 -0
- package/dist/device/local/interface.d.ts +0 -0
- package/dist/device/local/interfaces/IConnection.d.ts +26 -0
- package/dist/device/local/interfaces/IDevice.d.ts +68 -0
- package/dist/device/local/interfaces/IDtDevice.d.ts +16 -0
- package/dist/device/local/interfaces/IHub.d.ts +46 -0
- package/dist/device/local/interfaces/IProperty.d.ts +29 -0
- package/dist/device/local/interfaces/ISchedule.d.ts +25 -0
- package/dist/device/local/interfaces/index.d.ts +3 -0
- package/dist/device/local/models/Alert.model.d.ts +28 -0
- package/dist/device/local/models/Issue.model.d.ts +28 -0
- package/dist/device/local/repository/Alert.repository.d.ts +106 -0
- package/dist/device/local/repository/Connection.repository.d.ts +8 -0
- package/dist/device/local/repository/Device.repository.d.ts +30 -0
- package/dist/device/local/repository/Hub.repository.d.ts +13 -0
- package/dist/device/local/repository/Issue.repository.d.ts +113 -0
- package/dist/device/local/repository/Property.repository.d.ts +8 -0
- package/dist/device/local/repository/Property.repository.js +95 -0
- package/dist/device/local/repository/Schedule.repository.d.ts +9 -0
- package/dist/device/local/repository/Schedule.repository.js +109 -0
- package/dist/device/local/services/Alert.service.d.ts +137 -0
- package/dist/device/local/services/AlertService.example.d.ts +55 -0
- package/dist/device/local/services/Connection.service.d.ts +8 -0
- package/dist/device/local/services/Device.service.d.ts +40 -0
- package/dist/device/local/services/DeviceHub.service.d.ts +11 -0
- package/dist/device/local/services/Hub.service.d.ts +12 -0
- 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/Property.service.d.ts +8 -0
- package/dist/device/local/services/Property.service.js +36 -0
- package/dist/device/local/services/Schedule.service.d.ts +9 -0
- package/dist/device/local/services/Schedule.service.js +26 -0
- package/dist/device/local/services/index.d.ts +3 -0
- package/dist/entities/accessGroup/AccessGroup.repository.d.ts +5 -0
- package/dist/entities/accessGroup/AccessGroup.service.d.ts +5 -0
- package/dist/entities/accessGroup/IAccessGroup.d.ts +14 -0
- package/dist/entities/accessGroup/index.d.ts +2 -0
- package/dist/entities/device/local/repository/DeviceProfile.repository.d.ts +5 -0
- package/dist/entities/guest/Guest.repository.d.ts +6 -0
- package/dist/entities/guest/Guest.service.d.ts +6 -0
- package/dist/entities/guest/IGuest.d.ts +12 -0
- package/dist/entities/guest/index.d.ts +2 -0
- package/dist/entities/schedules/ISchedule.d.ts +14 -0
- package/dist/entities/schedules/Schedule.repository.d.ts +6 -0
- package/dist/entities/schedules/Schedule.repository.js +74 -0
- package/dist/entities/schedules/Schedule.service.d.ts +6 -0
- package/dist/entities/schedules/Schedule.service.js +104 -0
- package/dist/entities/schedules/index.d.ts +2 -0
- package/dist/entities/user/IUser.d.ts +15 -0
- package/dist/entities/user/IUser.js +2 -0
- package/dist/entities/user/User.repository.d.ts +5 -0
- package/dist/entities/user/User.repository.js +68 -0
- package/dist/entities/user/User.service.d.ts +6 -0
- package/dist/entities/user/User.service.js +103 -0
- package/dist/entities/zone/IZone.d.ts +10 -0
- package/dist/entities/zone/IZone.js +2 -0
- package/dist/entities/zone/Zone.repository.d.ts +6 -0
- package/dist/entities/zone/Zone.repository.js +77 -0
- package/dist/entities/zone/Zone.service.d.ts +6 -0
- package/dist/entities/zone/Zone.service.js +104 -0
- package/dist/entities/zone/index.d.ts +2 -0
- package/dist/issues/IssueBuilder.example.d.ts +16 -0
- package/dist/issues/IssueBuilder.example.js +196 -0
- package/dist/issues/IssueService.example.d.ts +68 -0
- package/dist/issues/IssueService.example.js +292 -0
- package/dist/pms/IPms.d.ts +6 -0
- package/dist/pms/index.d.ts +1 -0
- package/dist/pms/webhookQueue/examples/index.d.ts +2 -0
- package/dist/pms/webhookQueue/examples/pms-integration.d.ts +65 -0
- package/dist/pms/webhookQueue/examples/pms-integration.js +254 -0
- package/dist/pms/webhookQueue/examples/usage.d.ts +7 -0
- package/dist/pms/webhookQueue/examples/usage.js +175 -0
- package/dist/pms/webhookQueue/index.d.ts +3 -0
- package/dist/pms/webhookQueue/interfaces/IWebhookQueue.d.ts +33 -0
- package/dist/pms/webhookQueue/interfaces/IWebhookQueue.js +2 -0
- package/dist/pms/webhookQueue/interfaces/IWebhookWorker.d.ts +38 -0
- package/dist/pms/webhookQueue/interfaces/IWebhookWorker.js +2 -0
- package/dist/pms/webhookQueue/interfaces/index.d.ts +1 -0
- package/dist/pms/webhookQueue/services/WebhookQueueFactory.d.ts +38 -0
- package/dist/pms/webhookQueue/services/WebhookQueueFactory.js +131 -0
- package/dist/pms/webhookQueue/services/WebhookQueueIntegration.d.ts +70 -0
- package/dist/pms/webhookQueue/services/WebhookQueueIntegration.js +207 -0
- package/dist/pms/webhookQueue/services/WebhookQueueService.d.ts +45 -0
- package/dist/pms/webhookQueue/services/WebhookQueueService.js +270 -0
- package/dist/pms/webhookQueue/services/WebhookWorker.d.ts +37 -0
- package/dist/pms/webhookQueue/services/WebhookWorker.js +201 -0
- package/dist/pms/webhookQueue/services/index.d.ts +1 -0
- package/dist/pms/webhookQueue/types/index.d.ts +1 -0
- package/dist/pms/webhookQueue/types/webhook.types.d.ts +39 -0
- package/dist/pms/webhookQueue/types/webhook.types.js +2 -0
- package/dist/property/IProperty.d.ts +29 -0
- package/dist/property/Property.repository.d.ts +8 -0
- package/dist/property/Property.repository.js +109 -0
- package/dist/property/Property.service.d.ts +8 -0
- package/dist/property/Property.service.js +124 -0
- package/dist/property/index.d.ts +2 -0
- package/dist/queue/interfaces/IHttpRequestJob.d.ts +9 -0
- package/dist/queue/utils/rateLimit.utils.js +7 -1
- package/dist/types/alert.types.d.ts +57 -0
- package/dist/types/config.types.d.ts +19 -0
- package/dist/types/index.d.ts +3 -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/package.json +1 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { IHubService } from "../interfaces";
|
|
2
|
+
import { IConnection, IDevice } from "../types";
|
|
3
|
+
export declare abstract class HubService implements IHubService {
|
|
4
|
+
deviceId: string;
|
|
5
|
+
propertyId: string;
|
|
6
|
+
name: string;
|
|
7
|
+
deviceType: {
|
|
8
|
+
id: string;
|
|
9
|
+
type: string;
|
|
10
|
+
};
|
|
11
|
+
status: {
|
|
12
|
+
online: boolean;
|
|
13
|
+
error?: {
|
|
14
|
+
type?: string;
|
|
15
|
+
message?: string;
|
|
16
|
+
};
|
|
17
|
+
lastUpdated?: string;
|
|
18
|
+
};
|
|
19
|
+
metaData?: Record<string, any>;
|
|
20
|
+
connection: IConnection;
|
|
21
|
+
constructor(hub: IDevice);
|
|
22
|
+
abstract getHubs(connectionId: string): Promise<any[] | null>;
|
|
23
|
+
abstract getHub(connectionId: string, hubId: string): Promise<Record<string, any>>;
|
|
24
|
+
abstract getStatus(connectionId: string, hubId: string): Promise<string>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ISmartthingsDeviceCommandManager } from "../interface";
|
|
2
|
+
import { IDeviceCommand, ISmartthingsDeviceCommand, ICommandResponse } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* SmartThings Device Service Class
|
|
5
|
+
* Implements ISmartthingsDeviceCommandManager interface with empty implementations
|
|
6
|
+
* Implementation will be provided by the consuming project
|
|
7
|
+
*/
|
|
8
|
+
export declare class SmartThingsDeviceService implements ISmartthingsDeviceCommandManager {
|
|
9
|
+
/**
|
|
10
|
+
* Invokes a command on a device
|
|
11
|
+
* @param command - Device command to execute
|
|
12
|
+
* @param deviceId - Device identifier
|
|
13
|
+
* @returns Promise with command response
|
|
14
|
+
*/
|
|
15
|
+
invokeCommand(command: IDeviceCommand, deviceId: string): Promise<ICommandResponse>;
|
|
16
|
+
/**
|
|
17
|
+
* Performs device action for SmartThings
|
|
18
|
+
* @param commands - Array of SmartThings device commands
|
|
19
|
+
* @param deviceId - Device identifier
|
|
20
|
+
* @param accessToken - Access token for authentication
|
|
21
|
+
* @returns Promise with action result
|
|
22
|
+
*/
|
|
23
|
+
performDeviceAction(commands: ISmartthingsDeviceCommand[], deviceId: string, accessToken: string): Promise<any>;
|
|
24
|
+
/**
|
|
25
|
+
* Gets device status for SmartThings
|
|
26
|
+
* @param deviceId - Device identifier
|
|
27
|
+
* @param accessToken - Access token for authentication
|
|
28
|
+
* @returns Promise with device status
|
|
29
|
+
*/
|
|
30
|
+
getDeviceStatus(deviceId: string, accessToken: string): Promise<any>;
|
|
31
|
+
/**
|
|
32
|
+
* Gets device lock status for SmartThings
|
|
33
|
+
* @param deviceId - Device identifier
|
|
34
|
+
* @param accessToken - Access token for authentication
|
|
35
|
+
* @returns Promise with lock status
|
|
36
|
+
*/
|
|
37
|
+
getDeviceLockStatus(deviceId: string, accessToken: string): Promise<any>;
|
|
38
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SmartThingsDeviceService = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* SmartThings Device Service Class
|
|
6
|
+
* Implements ISmartthingsDeviceCommandManager interface with empty implementations
|
|
7
|
+
* Implementation will be provided by the consuming project
|
|
8
|
+
*/
|
|
9
|
+
class SmartThingsDeviceService {
|
|
10
|
+
/**
|
|
11
|
+
* Invokes a command on a device
|
|
12
|
+
* @param command - Device command to execute
|
|
13
|
+
* @param deviceId - Device identifier
|
|
14
|
+
* @returns Promise with command response
|
|
15
|
+
*/
|
|
16
|
+
async invokeCommand(command, deviceId) {
|
|
17
|
+
// Implementation will be provided by the consuming project
|
|
18
|
+
throw new Error("invokeCommand method not implemented");
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Performs device action for SmartThings
|
|
22
|
+
* @param commands - Array of SmartThings device commands
|
|
23
|
+
* @param deviceId - Device identifier
|
|
24
|
+
* @param accessToken - Access token for authentication
|
|
25
|
+
* @returns Promise with action result
|
|
26
|
+
*/
|
|
27
|
+
async performDeviceAction(commands, deviceId, accessToken) {
|
|
28
|
+
// Implementation will be provided by the consuming project
|
|
29
|
+
throw new Error("performDeviceAction method not implemented");
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Gets device status for SmartThings
|
|
33
|
+
* @param deviceId - Device identifier
|
|
34
|
+
* @param accessToken - Access token for authentication
|
|
35
|
+
* @returns Promise with device status
|
|
36
|
+
*/
|
|
37
|
+
async getDeviceStatus(deviceId, accessToken) {
|
|
38
|
+
// Implementation will be provided by the consuming project
|
|
39
|
+
throw new Error("getDeviceStatus method not implemented");
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Gets device lock status for SmartThings
|
|
43
|
+
* @param deviceId - Device identifier
|
|
44
|
+
* @param accessToken - Access token for authentication
|
|
45
|
+
* @returns Promise with lock status
|
|
46
|
+
*/
|
|
47
|
+
async getDeviceLockStatus(deviceId, accessToken) {
|
|
48
|
+
// Implementation will be provided by the consuming project
|
|
49
|
+
throw new Error("getDeviceLockStatus method not implemented");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.SmartThingsDeviceService = SmartThingsDeviceService;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents a connection to a device provider.
|
|
3
|
+
* WARNING: Do not log or expose sensitive fields (accessToken, clientSecret).
|
|
4
|
+
*/
|
|
5
|
+
export interface IConnection {
|
|
6
|
+
id?: string;
|
|
7
|
+
createdAt?: Date;
|
|
8
|
+
updatedAt?: Date;
|
|
9
|
+
isDeleted?: boolean;
|
|
10
|
+
connectionName: string;
|
|
11
|
+
connectionRefId: string;
|
|
12
|
+
propertyId: string;
|
|
13
|
+
connectionProvider: ConnectionProvider;
|
|
14
|
+
accessToken?: string;
|
|
15
|
+
refreshToken?: string;
|
|
16
|
+
clientId?: string;
|
|
17
|
+
clientSecret: string;
|
|
18
|
+
isActive?: boolean;
|
|
19
|
+
metaData?: any;
|
|
20
|
+
}
|
|
21
|
+
export interface IConnectionPagination {
|
|
22
|
+
page: number;
|
|
23
|
+
limit: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Device account response from provider.
|
|
27
|
+
* WARNING: Do not log or expose connection_access_token.
|
|
28
|
+
*/
|
|
29
|
+
export interface IDeviceAccountResponse {
|
|
30
|
+
id: string;
|
|
31
|
+
connection_name: string;
|
|
32
|
+
connection_access_token: string;
|
|
33
|
+
connection_provider: string;
|
|
34
|
+
totalDevices: number;
|
|
35
|
+
connection_ref_id: string;
|
|
36
|
+
isActive: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface IConnectionConnectParams {
|
|
39
|
+
code?: string;
|
|
40
|
+
propertyId?: string;
|
|
41
|
+
[key: string]: unknown;
|
|
42
|
+
}
|
|
43
|
+
export declare enum ConnectionProvider {
|
|
44
|
+
Smartthings = "Smartthings",
|
|
45
|
+
SaltoKS = "SaltoKS",
|
|
46
|
+
TTLock = "TTLock",
|
|
47
|
+
Tuya = "Tuya",
|
|
48
|
+
Schlage = "Schlage",
|
|
49
|
+
YaleWifi = "YaleWifi",
|
|
50
|
+
Sensibo = "Sensibo",
|
|
51
|
+
Devicethread = "Devicethread"
|
|
52
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Device Cloud Type Interfaces for DeviceThread Common Library
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ConnectionProvider = void 0;
|
|
5
|
+
var ConnectionProvider;
|
|
6
|
+
(function (ConnectionProvider) {
|
|
7
|
+
ConnectionProvider["Smartthings"] = "Smartthings";
|
|
8
|
+
ConnectionProvider["SaltoKS"] = "SaltoKS";
|
|
9
|
+
ConnectionProvider["TTLock"] = "TTLock";
|
|
10
|
+
ConnectionProvider["Tuya"] = "Tuya";
|
|
11
|
+
ConnectionProvider["Schlage"] = "Schlage";
|
|
12
|
+
ConnectionProvider["YaleWifi"] = "YaleWifi";
|
|
13
|
+
ConnectionProvider["Sensibo"] = "Sensibo";
|
|
14
|
+
ConnectionProvider["Devicethread"] = "Devicethread";
|
|
15
|
+
})(ConnectionProvider || (exports.ConnectionProvider = ConnectionProvider = {}));
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { CreateAlertData, AlertCategory, AlertSeverity, EntityType } from "../../../types/alert.types";
|
|
2
|
+
/**
|
|
3
|
+
* AlertBuilder - A builder pattern implementation for constructing CreateAlertData objects
|
|
4
|
+
*
|
|
5
|
+
* This builder provides a fluent interface for creating alert data with proper validation
|
|
6
|
+
* and default values. It follows the Builder pattern which is a standard design pattern
|
|
7
|
+
* in TypeScript for constructing complex objects.
|
|
8
|
+
*
|
|
9
|
+
* Usage example:
|
|
10
|
+
* const alertData = new AlertBuilder()
|
|
11
|
+
* .setCategory(AlertCategory.OPERATIONS)
|
|
12
|
+
* .setPropertyId("prop123")
|
|
13
|
+
* .setTitle("Device Offline")
|
|
14
|
+
* .setDescription("Device has been offline for more than 5 minutes")
|
|
15
|
+
* .setEntityId("device456")
|
|
16
|
+
* .setEntityType(EntityType.DEVICE)
|
|
17
|
+
* .setSeverity(AlertSeverity.HIGH)
|
|
18
|
+
* .setCreatedBy("user789")
|
|
19
|
+
* .build();
|
|
20
|
+
*/
|
|
21
|
+
export declare class AlertBuilder {
|
|
22
|
+
private data;
|
|
23
|
+
/**
|
|
24
|
+
* Sets the alert category
|
|
25
|
+
*/
|
|
26
|
+
setCategory(category: AlertCategory): AlertBuilder;
|
|
27
|
+
/**
|
|
28
|
+
* Sets the property ID
|
|
29
|
+
*/
|
|
30
|
+
setPropertyId(propertyId: string): AlertBuilder;
|
|
31
|
+
/**
|
|
32
|
+
* Sets the alert title
|
|
33
|
+
*/
|
|
34
|
+
setTitle(title: string): AlertBuilder;
|
|
35
|
+
/**
|
|
36
|
+
* Sets the alert description
|
|
37
|
+
*/
|
|
38
|
+
setDescription(description: string): AlertBuilder;
|
|
39
|
+
/**
|
|
40
|
+
* Sets the entity ID (optional)
|
|
41
|
+
*/
|
|
42
|
+
setEntityId(entityId?: string): AlertBuilder;
|
|
43
|
+
/**
|
|
44
|
+
* Sets the entity type
|
|
45
|
+
*/
|
|
46
|
+
setEntityType(entityType: EntityType): AlertBuilder;
|
|
47
|
+
/**
|
|
48
|
+
* Sets the alert severity (optional, defaults to MEDIUM)
|
|
49
|
+
*/
|
|
50
|
+
setSeverity(severity?: AlertSeverity): AlertBuilder;
|
|
51
|
+
/**
|
|
52
|
+
* Sets the user who created the alert (optional)
|
|
53
|
+
*/
|
|
54
|
+
setCreatedBy(createdBy?: string): AlertBuilder;
|
|
55
|
+
/**
|
|
56
|
+
* Sets the snooze until date (optional)
|
|
57
|
+
*/
|
|
58
|
+
setSnoozeUntil(snoozeUntil?: Date): AlertBuilder;
|
|
59
|
+
/**
|
|
60
|
+
* Validates that all required fields are present
|
|
61
|
+
*/
|
|
62
|
+
private validate;
|
|
63
|
+
/**
|
|
64
|
+
* Builds and returns the CreateAlertData object
|
|
65
|
+
* @throws Error if required fields are missing
|
|
66
|
+
*/
|
|
67
|
+
build(): CreateAlertData;
|
|
68
|
+
/**
|
|
69
|
+
* Resets the builder to its initial state
|
|
70
|
+
*/
|
|
71
|
+
reset(): AlertBuilder;
|
|
72
|
+
/**
|
|
73
|
+
* Creates a new builder instance with predefined values for common alert types
|
|
74
|
+
*/
|
|
75
|
+
static createReadinessAlert(): AlertBuilder;
|
|
76
|
+
static createOperationsAlert(): AlertBuilder;
|
|
77
|
+
static createSecurityAlert(): AlertBuilder;
|
|
78
|
+
static createEnergyAlert(): AlertBuilder;
|
|
79
|
+
/**
|
|
80
|
+
* Creates a device-specific alert builder
|
|
81
|
+
*/
|
|
82
|
+
static createDeviceAlert(deviceId: string, propertyId: string): AlertBuilder;
|
|
83
|
+
/**
|
|
84
|
+
* Creates a hub-specific alert builder
|
|
85
|
+
*/
|
|
86
|
+
static createHubAlert(hubId: string, propertyId: string): AlertBuilder;
|
|
87
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example usage of AlertBuilder
|
|
3
|
+
* This file demonstrates various ways to use the AlertBuilder pattern
|
|
4
|
+
*/
|
|
5
|
+
export declare function createBasicAlert(): import("../../../types/alert.types").CreateAlertData;
|
|
6
|
+
export declare function createDeviceAlert(): import("../../../types/alert.types").CreateAlertData;
|
|
7
|
+
export declare function createSecurityAlert(): import("../../../types/alert.types").CreateAlertData;
|
|
8
|
+
export declare function createEnergyAlert(): import("../../../types/alert.types").CreateAlertData;
|
|
9
|
+
export declare function createHubAlert(): import("../../../types/alert.types").CreateAlertData;
|
|
10
|
+
export declare function createSnoozedAlert(): import("../../../types/alert.types").CreateAlertData;
|
|
11
|
+
export declare function createMultipleAlerts(): import("../../../types/alert.types").CreateAlertData[];
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { CreateIssueData, IssuesCategory, IssuePriority, EntityType } from "../../../types/issue.types";
|
|
2
|
+
/**
|
|
3
|
+
* IssueBuilder - A builder pattern implementation for constructing CreateIssueData objects
|
|
4
|
+
*
|
|
5
|
+
* This builder provides a fluent interface for creating issue data with proper validation
|
|
6
|
+
* and default values. It follows the Builder pattern which is a standard design pattern
|
|
7
|
+
* in TypeScript for constructing complex objects.
|
|
8
|
+
*
|
|
9
|
+
* Usage example:
|
|
10
|
+
* const issueData = new IssueBuilder()
|
|
11
|
+
* .setCategory(IssuesCategory.OPERATIONS)
|
|
12
|
+
* .setPropertyId("prop123")
|
|
13
|
+
* .setTitle("Device Maintenance Required")
|
|
14
|
+
* .setDescription("Device requires scheduled maintenance")
|
|
15
|
+
* .setEntityId("device456")
|
|
16
|
+
* .setEntityType(EntityType.DEVICE)
|
|
17
|
+
* .setPriority(IssuePriority.HIGH)
|
|
18
|
+
* .setAssignedTo("tech789")
|
|
19
|
+
* .setCreatedBy("user123")
|
|
20
|
+
* .setDueDate(new Date("2024-01-15"))
|
|
21
|
+
* .build();
|
|
22
|
+
*/
|
|
23
|
+
export declare class IssueBuilder {
|
|
24
|
+
private data;
|
|
25
|
+
/**
|
|
26
|
+
* Sets the issue category
|
|
27
|
+
*/
|
|
28
|
+
setCategory(category: IssuesCategory): IssueBuilder;
|
|
29
|
+
/**
|
|
30
|
+
* Sets the property ID
|
|
31
|
+
*/
|
|
32
|
+
setPropertyId(propertyId: string): IssueBuilder;
|
|
33
|
+
/**
|
|
34
|
+
* Sets the issue title
|
|
35
|
+
*/
|
|
36
|
+
setTitle(title: string): IssueBuilder;
|
|
37
|
+
/**
|
|
38
|
+
* Sets the issue description
|
|
39
|
+
*/
|
|
40
|
+
setDescription(description: string): IssueBuilder;
|
|
41
|
+
/**
|
|
42
|
+
* Sets the entity ID (optional)
|
|
43
|
+
*/
|
|
44
|
+
setEntityId(entityId?: string): IssueBuilder;
|
|
45
|
+
/**
|
|
46
|
+
* Sets the entity type
|
|
47
|
+
*/
|
|
48
|
+
setEntityType(entityType: EntityType): IssueBuilder;
|
|
49
|
+
/**
|
|
50
|
+
* Sets the issue priority (optional, defaults to MEDIUM)
|
|
51
|
+
*/
|
|
52
|
+
setPriority(priority?: IssuePriority): IssueBuilder;
|
|
53
|
+
/**
|
|
54
|
+
* Sets the user assigned to the issue (optional)
|
|
55
|
+
*/
|
|
56
|
+
setAssignedTo(assignedTo?: string): IssueBuilder;
|
|
57
|
+
/**
|
|
58
|
+
* Sets the user who created the issue (required)
|
|
59
|
+
*/
|
|
60
|
+
setCreatedBy(createdBy: string): IssueBuilder;
|
|
61
|
+
/**
|
|
62
|
+
* Sets the due date (optional)
|
|
63
|
+
*/
|
|
64
|
+
setDueDate(dueDate?: Date): IssueBuilder;
|
|
65
|
+
/**
|
|
66
|
+
* Validates that all required fields are present
|
|
67
|
+
*/
|
|
68
|
+
private validate;
|
|
69
|
+
/**
|
|
70
|
+
* Builds and returns the CreateIssueData object
|
|
71
|
+
* @throws Error if required fields are missing
|
|
72
|
+
*/
|
|
73
|
+
build(): CreateIssueData;
|
|
74
|
+
/**
|
|
75
|
+
* Resets the builder to its initial state
|
|
76
|
+
*/
|
|
77
|
+
reset(): IssueBuilder;
|
|
78
|
+
/**
|
|
79
|
+
* Creates a new builder instance with predefined values for common issue types
|
|
80
|
+
*/
|
|
81
|
+
static createReadinessIssue(): IssueBuilder;
|
|
82
|
+
static createOperationsIssue(): IssueBuilder;
|
|
83
|
+
static createSecurityIssue(): IssueBuilder;
|
|
84
|
+
static createEnergyIssue(): IssueBuilder;
|
|
85
|
+
/**
|
|
86
|
+
* Creates a device-specific issue builder
|
|
87
|
+
*/
|
|
88
|
+
static createDeviceIssue(deviceId: string, propertyId: string): IssueBuilder;
|
|
89
|
+
/**
|
|
90
|
+
* Creates a hub-specific issue builder
|
|
91
|
+
*/
|
|
92
|
+
static createHubIssue(hubId: string, propertyId: string): IssueBuilder;
|
|
93
|
+
/**
|
|
94
|
+
* Creates a user-specific issue builder
|
|
95
|
+
*/
|
|
96
|
+
static createUserIssue(userId: string, propertyId: string): IssueBuilder;
|
|
97
|
+
/**
|
|
98
|
+
* Creates a property-specific issue builder
|
|
99
|
+
*/
|
|
100
|
+
static createPropertyIssue(propertyId: string): IssueBuilder;
|
|
101
|
+
/**
|
|
102
|
+
* Creates a maintenance issue builder
|
|
103
|
+
*/
|
|
104
|
+
static createMaintenanceIssue(propertyId: string, entityId?: string, entityType?: EntityType): IssueBuilder;
|
|
105
|
+
/**
|
|
106
|
+
* Creates an urgent issue builder
|
|
107
|
+
*/
|
|
108
|
+
static createUrgentIssue(propertyId: string, entityId?: string, entityType?: EntityType): IssueBuilder;
|
|
109
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example usage of IssueBuilder
|
|
3
|
+
* This file demonstrates various ways to use the IssueBuilder pattern
|
|
4
|
+
*/
|
|
5
|
+
export declare function createBasicIssue(): import("../../../types/issue.types").CreateIssueData;
|
|
6
|
+
export declare function createDeviceIssue(): import("../../../types/issue.types").CreateIssueData;
|
|
7
|
+
export declare function createSecurityIssue(): import("../../../types/issue.types").CreateIssueData;
|
|
8
|
+
export declare function createEnergyIssue(): import("../../../types/issue.types").CreateIssueData;
|
|
9
|
+
export declare function createHubIssue(): import("../../../types/issue.types").CreateIssueData;
|
|
10
|
+
export declare function createUserIssue(): import("../../../types/issue.types").CreateIssueData;
|
|
11
|
+
export declare function createPropertyIssue(): import("../../../types/issue.types").CreateIssueData;
|
|
12
|
+
export declare function createMaintenanceIssue(): import("../../../types/issue.types").CreateIssueData;
|
|
13
|
+
export declare function createUrgentIssue(): import("../../../types/issue.types").CreateIssueData;
|
|
14
|
+
export declare function createMultipleIssues(): import("../../../types/issue.types").CreateIssueData[];
|
|
15
|
+
export declare function createIssueWithDueDate(): import("../../../types/issue.types").CreateIssueData;
|
|
16
|
+
export declare function createUnassignedIssue(): import("../../../types/issue.types").CreateIssueData;
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createBasicIssue = createBasicIssue;
|
|
4
|
+
exports.createDeviceIssue = createDeviceIssue;
|
|
5
|
+
exports.createSecurityIssue = createSecurityIssue;
|
|
6
|
+
exports.createEnergyIssue = createEnergyIssue;
|
|
7
|
+
exports.createHubIssue = createHubIssue;
|
|
8
|
+
exports.createUserIssue = createUserIssue;
|
|
9
|
+
exports.createPropertyIssue = createPropertyIssue;
|
|
10
|
+
exports.createMaintenanceIssue = createMaintenanceIssue;
|
|
11
|
+
exports.createUrgentIssue = createUrgentIssue;
|
|
12
|
+
exports.createMultipleIssues = createMultipleIssues;
|
|
13
|
+
exports.createIssueWithDueDate = createIssueWithDueDate;
|
|
14
|
+
exports.createUnassignedIssue = createUnassignedIssue;
|
|
15
|
+
const IssueBuilder_1 = require("./IssueBuilder");
|
|
16
|
+
const issue_types_1 = require("../../../types/issue.types");
|
|
17
|
+
/**
|
|
18
|
+
* Example usage of IssueBuilder
|
|
19
|
+
* This file demonstrates various ways to use the IssueBuilder pattern
|
|
20
|
+
*/
|
|
21
|
+
// Example 1: Basic issue creation
|
|
22
|
+
function createBasicIssue() {
|
|
23
|
+
const issueData = new IssueBuilder_1.IssueBuilder()
|
|
24
|
+
.setCategory(issue_types_1.IssuesCategory.OPERATIONS)
|
|
25
|
+
.setPropertyId("prop123")
|
|
26
|
+
.setTitle("Device Maintenance Required")
|
|
27
|
+
.setDescription("Device requires scheduled maintenance")
|
|
28
|
+
.setEntityId("device456")
|
|
29
|
+
.setEntityType(issue_types_1.EntityType.DEVICE)
|
|
30
|
+
.setPriority(issue_types_1.IssuePriority.HIGH)
|
|
31
|
+
.setAssignedTo("tech789")
|
|
32
|
+
.setCreatedBy("user123")
|
|
33
|
+
.setDueDate(new Date("2024-01-15"))
|
|
34
|
+
.build();
|
|
35
|
+
return issueData;
|
|
36
|
+
}
|
|
37
|
+
// Example 2: Using static factory methods
|
|
38
|
+
function createDeviceIssue() {
|
|
39
|
+
const issueData = IssueBuilder_1.IssueBuilder.createDeviceIssue("device123", "prop456")
|
|
40
|
+
.setCategory(issue_types_1.IssuesCategory.READINESS)
|
|
41
|
+
.setTitle("Device Firmware Update")
|
|
42
|
+
.setDescription("Device firmware update is available")
|
|
43
|
+
.setPriority(issue_types_1.IssuePriority.MEDIUM)
|
|
44
|
+
.setAssignedTo("admin")
|
|
45
|
+
.setCreatedBy("system")
|
|
46
|
+
.setDueDate(new Date("2024-01-20"))
|
|
47
|
+
.build();
|
|
48
|
+
return issueData;
|
|
49
|
+
}
|
|
50
|
+
// Example 3: Using predefined issue types
|
|
51
|
+
function createSecurityIssue() {
|
|
52
|
+
const issueData = IssueBuilder_1.IssueBuilder.createSecurityIssue()
|
|
53
|
+
.setPropertyId("prop789")
|
|
54
|
+
.setTitle("Security Breach Detected")
|
|
55
|
+
.setDescription("Unauthorized access attempt detected")
|
|
56
|
+
.setEntityId("user123")
|
|
57
|
+
.setEntityType(issue_types_1.EntityType.USER)
|
|
58
|
+
.setAssignedTo("security-team")
|
|
59
|
+
.setCreatedBy("security-system")
|
|
60
|
+
.setDueDate(new Date("2024-01-10"))
|
|
61
|
+
.build();
|
|
62
|
+
return issueData;
|
|
63
|
+
}
|
|
64
|
+
// Example 4: Creating energy issue
|
|
65
|
+
function createEnergyIssue() {
|
|
66
|
+
const issueData = IssueBuilder_1.IssueBuilder.createEnergyIssue()
|
|
67
|
+
.setPropertyId("prop101")
|
|
68
|
+
.setTitle("High Energy Consumption")
|
|
69
|
+
.setDescription("Energy usage is 20% above normal levels")
|
|
70
|
+
.setEntityId("zone456")
|
|
71
|
+
.setEntityType(issue_types_1.EntityType.COLLECTION)
|
|
72
|
+
.setAssignedTo("energy-manager")
|
|
73
|
+
.setCreatedBy("energy-monitor")
|
|
74
|
+
.setDueDate(new Date("2024-01-25"))
|
|
75
|
+
.build();
|
|
76
|
+
return issueData;
|
|
77
|
+
}
|
|
78
|
+
// Example 5: Creating hub issue
|
|
79
|
+
function createHubIssue() {
|
|
80
|
+
const issueData = IssueBuilder_1.IssueBuilder.createHubIssue("hub789", "prop202")
|
|
81
|
+
.setCategory(issue_types_1.IssuesCategory.OPERATIONS)
|
|
82
|
+
.setTitle("Hub Connection Lost")
|
|
83
|
+
.setDescription("Hub has lost connection to the network")
|
|
84
|
+
.setPriority(issue_types_1.IssuePriority.CRITICAL)
|
|
85
|
+
.setAssignedTo("network-admin")
|
|
86
|
+
.setCreatedBy("network-monitor")
|
|
87
|
+
.setDueDate(new Date("2024-01-05"))
|
|
88
|
+
.build();
|
|
89
|
+
return issueData;
|
|
90
|
+
}
|
|
91
|
+
// Example 6: Creating user-specific issue
|
|
92
|
+
function createUserIssue() {
|
|
93
|
+
const issueData = IssueBuilder_1.IssueBuilder.createUserIssue("user456", "prop303")
|
|
94
|
+
.setCategory(issue_types_1.IssuesCategory.SECURITY)
|
|
95
|
+
.setTitle("User Access Review Required")
|
|
96
|
+
.setDescription("User access permissions need review")
|
|
97
|
+
.setPriority(issue_types_1.IssuePriority.MEDIUM)
|
|
98
|
+
.setAssignedTo("hr-admin")
|
|
99
|
+
.setCreatedBy("access-control")
|
|
100
|
+
.setDueDate(new Date("2024-01-30"))
|
|
101
|
+
.build();
|
|
102
|
+
return issueData;
|
|
103
|
+
}
|
|
104
|
+
// Example 7: Creating property-specific issue
|
|
105
|
+
function createPropertyIssue() {
|
|
106
|
+
const issueData = IssueBuilder_1.IssueBuilder.createPropertyIssue("prop404")
|
|
107
|
+
.setCategory(issue_types_1.IssuesCategory.READINESS)
|
|
108
|
+
.setTitle("Property Maintenance Schedule")
|
|
109
|
+
.setDescription("Annual property maintenance is due")
|
|
110
|
+
.setPriority(issue_types_1.IssuePriority.LOW)
|
|
111
|
+
.setAssignedTo("property-manager")
|
|
112
|
+
.setCreatedBy("maintenance-system")
|
|
113
|
+
.setDueDate(new Date("2024-02-15"))
|
|
114
|
+
.build();
|
|
115
|
+
return issueData;
|
|
116
|
+
}
|
|
117
|
+
// Example 8: Creating maintenance issue
|
|
118
|
+
function createMaintenanceIssue() {
|
|
119
|
+
const issueData = IssueBuilder_1.IssueBuilder.createMaintenanceIssue("prop505", "device789", issue_types_1.EntityType.DEVICE)
|
|
120
|
+
.setTitle("Scheduled Device Maintenance")
|
|
121
|
+
.setDescription("Regular maintenance is scheduled for this device")
|
|
122
|
+
.setAssignedTo("technician")
|
|
123
|
+
.setCreatedBy("maintenance-scheduler")
|
|
124
|
+
.setDueDate(new Date("2024-01-12"))
|
|
125
|
+
.build();
|
|
126
|
+
return issueData;
|
|
127
|
+
}
|
|
128
|
+
// Example 9: Creating urgent issue
|
|
129
|
+
function createUrgentIssue() {
|
|
130
|
+
const issueData = IssueBuilder_1.IssueBuilder.createUrgentIssue("prop606", "hub123", issue_types_1.EntityType.HUB)
|
|
131
|
+
.setTitle("Critical Hub Failure")
|
|
132
|
+
.setDescription("Hub is experiencing critical failures")
|
|
133
|
+
.setAssignedTo("emergency-tech")
|
|
134
|
+
.setCreatedBy("monitoring-system")
|
|
135
|
+
.setDueDate(new Date("2024-01-03"))
|
|
136
|
+
.build();
|
|
137
|
+
return issueData;
|
|
138
|
+
}
|
|
139
|
+
// Example 10: Reusing builder instance
|
|
140
|
+
function createMultipleIssues() {
|
|
141
|
+
const builder = new IssueBuilder_1.IssueBuilder()
|
|
142
|
+
.setPropertyId("prop707")
|
|
143
|
+
.setCreatedBy("batch-processor");
|
|
144
|
+
const issue1 = builder
|
|
145
|
+
.setCategory(issue_types_1.IssuesCategory.OPERATIONS)
|
|
146
|
+
.setTitle("Device Temperature High")
|
|
147
|
+
.setDescription("Device temperature exceeds normal operating range")
|
|
148
|
+
.setEntityId("device789")
|
|
149
|
+
.setEntityType(issue_types_1.EntityType.DEVICE)
|
|
150
|
+
.setPriority(issue_types_1.IssuePriority.HIGH)
|
|
151
|
+
.setAssignedTo("tech-support")
|
|
152
|
+
.build();
|
|
153
|
+
const issue2 = builder
|
|
154
|
+
.reset()
|
|
155
|
+
.setPropertyId("prop707")
|
|
156
|
+
.setCategory(issue_types_1.IssuesCategory.ENERGY)
|
|
157
|
+
.setTitle("Low Battery Warning")
|
|
158
|
+
.setDescription("Device battery level is below 20%")
|
|
159
|
+
.setEntityId("device789")
|
|
160
|
+
.setEntityType(issue_types_1.EntityType.DEVICE)
|
|
161
|
+
.setPriority(issue_types_1.IssuePriority.MEDIUM)
|
|
162
|
+
.setAssignedTo("maintenance-team")
|
|
163
|
+
.setCreatedBy("batch-processor")
|
|
164
|
+
.build();
|
|
165
|
+
return [issue1, issue2];
|
|
166
|
+
}
|
|
167
|
+
// Example 11: Creating issue with due date calculation
|
|
168
|
+
function createIssueWithDueDate() {
|
|
169
|
+
const dueDate = new Date();
|
|
170
|
+
dueDate.setDate(dueDate.getDate() + 7); // Due in 7 days
|
|
171
|
+
const issueData = new IssueBuilder_1.IssueBuilder()
|
|
172
|
+
.setCategory(issue_types_1.IssuesCategory.READINESS)
|
|
173
|
+
.setPropertyId("prop808")
|
|
174
|
+
.setTitle("System Update Required")
|
|
175
|
+
.setDescription("System requires critical security update")
|
|
176
|
+
.setEntityType(issue_types_1.EntityType.PROPERTY)
|
|
177
|
+
.setPriority(issue_types_1.IssuePriority.HIGH)
|
|
178
|
+
.setAssignedTo("system-admin")
|
|
179
|
+
.setCreatedBy("update-manager")
|
|
180
|
+
.setDueDate(dueDate)
|
|
181
|
+
.build();
|
|
182
|
+
return issueData;
|
|
183
|
+
}
|
|
184
|
+
// Example 12: Creating issue without assignment
|
|
185
|
+
function createUnassignedIssue() {
|
|
186
|
+
const issueData = new IssueBuilder_1.IssueBuilder()
|
|
187
|
+
.setCategory(issue_types_1.IssuesCategory.OTHER)
|
|
188
|
+
.setPropertyId("prop909")
|
|
189
|
+
.setTitle("General Inquiry")
|
|
190
|
+
.setDescription("General inquiry about system functionality")
|
|
191
|
+
.setEntityType(issue_types_1.EntityType.PROPERTY)
|
|
192
|
+
.setPriority(issue_types_1.IssuePriority.LOW)
|
|
193
|
+
.setCreatedBy("user-inquiry")
|
|
194
|
+
.build();
|
|
195
|
+
return issueData;
|
|
196
|
+
}
|