dt-common-device 13.1.3 → 13.1.4

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.
Files changed (167) hide show
  1. package/dist/admin/Admin.repository.d.ts +7 -0
  2. package/dist/admin/Admin.service.d.ts +5 -0
  3. package/dist/admin/index.d.ts +1 -0
  4. package/dist/alerts/AlertBuilder.example.d.ts +11 -0
  5. package/dist/alerts/AlertService.example.d.ts +55 -0
  6. package/dist/audit/AuditProperties.d.ts +16 -0
  7. package/dist/chronicle/Cronicle.service.d.ts +9 -0
  8. package/dist/chronicle/IChronicle.interface.d.ts +14 -0
  9. package/dist/chronicle/ICronicle.interface.d.ts +15 -0
  10. package/dist/chronicle/chronicle.service.d.ts +4 -0
  11. package/dist/chronicle/index.d.ts +2 -0
  12. package/dist/connection/Connection.repository.d.ts +8 -0
  13. package/dist/connection/Connection.service.d.ts +8 -0
  14. package/dist/connection/IConnection.d.ts +28 -0
  15. package/dist/connection/index.d.ts +2 -0
  16. package/dist/copilotQueue/examples/CopilotQueue.example.d.ts +37 -0
  17. package/dist/copilotQueue/examples/index.d.ts +1 -0
  18. package/dist/device/cloud/entities/CloudConnection.d.ts +6 -0
  19. package/dist/device/cloud/entities/CloudDevice.d.ts +16 -0
  20. package/dist/device/cloud/entities/CloudDeviceService.d.ts +5 -0
  21. package/dist/device/cloud/entities/DeviceFactory.d.ts +7 -0
  22. package/dist/device/cloud/entities/index.d.ts +3 -0
  23. package/dist/device/cloud/interface.d.ts +101 -0
  24. package/dist/device/cloud/interfaces/ICloudConnection.d.ts +5 -0
  25. package/dist/device/cloud/interfaces/ICloudDevice.d.ts +9 -0
  26. package/dist/device/cloud/interfaces/ICloudDeviceService.d.ts +4 -0
  27. package/dist/device/cloud/interfaces/IConnectionService.d.ts +7 -0
  28. package/dist/device/cloud/interfaces/IDeviceConnectionService.d.ts +7 -0
  29. package/dist/device/cloud/interfaces/IDeviceFactory.d.ts +4 -0
  30. package/dist/device/cloud/interfaces/IDeviceService.d.ts +8 -0
  31. package/dist/device/cloud/interfaces/IDevicesService.d.ts +9 -0
  32. package/dist/device/cloud/interfaces/IHubService.d.ts +5 -0
  33. package/dist/device/cloud/interfaces/IRawDataTransformer.d.ts +4 -0
  34. package/dist/device/cloud/interfaces/IRawDevice.d.ts +17 -0
  35. package/dist/device/cloud/interfaces/index.d.ts +5 -0
  36. package/dist/device/cloud/services/CloudDevice.service.d.ts +5 -0
  37. package/dist/device/cloud/services/Connection.service.d.ts +8 -0
  38. package/dist/device/cloud/services/Device.service.d.ts +39 -0
  39. package/dist/device/cloud/services/DeviceCloudService.d.ts +42 -0
  40. package/dist/device/cloud/services/DeviceHub.service.d.ts +3 -0
  41. package/dist/device/cloud/services/Hub.service.d.ts +25 -0
  42. package/dist/device/cloud/services/SmartThingsDeviceService.d.ts +38 -0
  43. package/dist/device/cloud/services/SmartThingsDeviceService.js +52 -0
  44. package/dist/device/cloud/services/index.d.ts +2 -0
  45. package/dist/device/cloud/types.d.ts +52 -0
  46. package/dist/device/cloud/types.js +15 -0
  47. package/dist/device/index.d.ts +4 -0
  48. package/dist/device/local/entities/AlertBuilder.d.ts +87 -0
  49. package/dist/device/local/entities/AlertBuilder.example.d.ts +11 -0
  50. package/dist/device/local/entities/IssueBuilder.d.ts +109 -0
  51. package/dist/device/local/entities/IssueBuilder.example.d.ts +16 -0
  52. package/dist/device/local/entities/IssueBuilder.example.js +196 -0
  53. package/dist/device/local/entities/IssueBuilder.js +237 -0
  54. package/dist/device/local/entities/index.d.ts +2 -0
  55. package/dist/device/local/events/EventHandler.d.ts +11 -0
  56. package/dist/device/local/events/Events.d.ts +54 -0
  57. package/dist/device/local/events/index.d.ts +2 -0
  58. package/dist/device/local/handler/EventHandler.d.ts +7 -0
  59. package/dist/device/local/interface.d.ts +0 -0
  60. package/dist/device/local/interfaces/IConnection.d.ts +26 -0
  61. package/dist/device/local/interfaces/IDevice.d.ts +68 -0
  62. package/dist/device/local/interfaces/IDtDevice.d.ts +16 -0
  63. package/dist/device/local/interfaces/IHub.d.ts +46 -0
  64. package/dist/device/local/interfaces/IProperty.d.ts +29 -0
  65. package/dist/device/local/interfaces/ISchedule.d.ts +25 -0
  66. package/dist/device/local/interfaces/index.d.ts +3 -0
  67. package/dist/device/local/models/Alert.model.d.ts +28 -0
  68. package/dist/device/local/models/Issue.model.d.ts +28 -0
  69. package/dist/device/local/repository/Alert.repository.d.ts +106 -0
  70. package/dist/device/local/repository/Connection.repository.d.ts +8 -0
  71. package/dist/device/local/repository/Device.repository.d.ts +30 -0
  72. package/dist/device/local/repository/Hub.repository.d.ts +13 -0
  73. package/dist/device/local/repository/Issue.repository.d.ts +113 -0
  74. package/dist/device/local/repository/Property.repository.d.ts +8 -0
  75. package/dist/device/local/repository/Property.repository.js +95 -0
  76. package/dist/device/local/repository/Schedule.repository.d.ts +9 -0
  77. package/dist/device/local/repository/Schedule.repository.js +109 -0
  78. package/dist/device/local/services/Alert.service.d.ts +137 -0
  79. package/dist/device/local/services/AlertService.example.d.ts +55 -0
  80. package/dist/device/local/services/Connection.service.d.ts +8 -0
  81. package/dist/device/local/services/Device.service.d.ts +40 -0
  82. package/dist/device/local/services/DeviceHub.service.d.ts +11 -0
  83. package/dist/device/local/services/Hub.service.d.ts +12 -0
  84. package/dist/device/local/services/Issue.service.d.ts +168 -0
  85. package/dist/device/local/services/Issue.service.js +642 -0
  86. package/dist/device/local/services/IssueService.example.d.ts +68 -0
  87. package/dist/device/local/services/IssueService.example.js +177 -0
  88. package/dist/device/local/services/Property.service.d.ts +8 -0
  89. package/dist/device/local/services/Property.service.js +36 -0
  90. package/dist/device/local/services/Schedule.service.d.ts +9 -0
  91. package/dist/device/local/services/Schedule.service.js +26 -0
  92. package/dist/device/local/services/index.d.ts +3 -0
  93. package/dist/entities/accessGroup/AccessGroup.repository.d.ts +5 -0
  94. package/dist/entities/accessGroup/AccessGroup.service.d.ts +5 -0
  95. package/dist/entities/accessGroup/IAccessGroup.d.ts +14 -0
  96. package/dist/entities/accessGroup/index.d.ts +2 -0
  97. package/dist/entities/admin/Admin.repository.d.ts +1 -0
  98. package/dist/entities/admin/Admin.repository.js +9 -0
  99. package/dist/entities/admin/Admin.service.d.ts +1 -0
  100. package/dist/entities/admin/Admin.service.js +3 -0
  101. package/dist/entities/device/local/repository/DeviceProfile.repository.d.ts +5 -0
  102. package/dist/entities/guest/Guest.repository.d.ts +6 -0
  103. package/dist/entities/guest/Guest.service.d.ts +6 -0
  104. package/dist/entities/guest/IGuest.d.ts +12 -0
  105. package/dist/entities/guest/index.d.ts +2 -0
  106. package/dist/entities/schedules/ISchedule.d.ts +14 -0
  107. package/dist/entities/schedules/Schedule.repository.d.ts +6 -0
  108. package/dist/entities/schedules/Schedule.repository.js +74 -0
  109. package/dist/entities/schedules/Schedule.service.d.ts +6 -0
  110. package/dist/entities/schedules/Schedule.service.js +104 -0
  111. package/dist/entities/schedules/index.d.ts +2 -0
  112. package/dist/entities/user/IUser.d.ts +15 -0
  113. package/dist/entities/user/IUser.js +2 -0
  114. package/dist/entities/user/User.repository.d.ts +5 -0
  115. package/dist/entities/user/User.repository.js +68 -0
  116. package/dist/entities/user/User.service.d.ts +6 -0
  117. package/dist/entities/user/User.service.js +103 -0
  118. package/dist/entities/zone/IZone.d.ts +10 -0
  119. package/dist/entities/zone/IZone.js +2 -0
  120. package/dist/entities/zone/Zone.repository.d.ts +6 -0
  121. package/dist/entities/zone/Zone.repository.js +77 -0
  122. package/dist/entities/zone/Zone.service.d.ts +6 -0
  123. package/dist/entities/zone/Zone.service.js +104 -0
  124. package/dist/entities/zone/index.d.ts +2 -0
  125. package/dist/issues/IssueBuilder.example.d.ts +16 -0
  126. package/dist/issues/IssueBuilder.example.js +196 -0
  127. package/dist/issues/IssueService.example.d.ts +68 -0
  128. package/dist/issues/IssueService.example.js +292 -0
  129. package/dist/pms/IPms.d.ts +6 -0
  130. package/dist/pms/index.d.ts +1 -0
  131. package/dist/pms/webhookQueue/examples/index.d.ts +2 -0
  132. package/dist/pms/webhookQueue/examples/pms-integration.d.ts +65 -0
  133. package/dist/pms/webhookQueue/examples/pms-integration.js +254 -0
  134. package/dist/pms/webhookQueue/examples/usage.d.ts +7 -0
  135. package/dist/pms/webhookQueue/examples/usage.js +175 -0
  136. package/dist/pms/webhookQueue/index.d.ts +3 -0
  137. package/dist/pms/webhookQueue/interfaces/IWebhookQueue.d.ts +33 -0
  138. package/dist/pms/webhookQueue/interfaces/IWebhookQueue.js +2 -0
  139. package/dist/pms/webhookQueue/interfaces/IWebhookWorker.d.ts +38 -0
  140. package/dist/pms/webhookQueue/interfaces/IWebhookWorker.js +2 -0
  141. package/dist/pms/webhookQueue/interfaces/index.d.ts +1 -0
  142. package/dist/pms/webhookQueue/services/WebhookQueueFactory.d.ts +38 -0
  143. package/dist/pms/webhookQueue/services/WebhookQueueFactory.js +131 -0
  144. package/dist/pms/webhookQueue/services/WebhookQueueIntegration.d.ts +70 -0
  145. package/dist/pms/webhookQueue/services/WebhookQueueIntegration.js +207 -0
  146. package/dist/pms/webhookQueue/services/WebhookQueueService.d.ts +45 -0
  147. package/dist/pms/webhookQueue/services/WebhookQueueService.js +270 -0
  148. package/dist/pms/webhookQueue/services/WebhookWorker.d.ts +37 -0
  149. package/dist/pms/webhookQueue/services/WebhookWorker.js +201 -0
  150. package/dist/pms/webhookQueue/services/index.d.ts +1 -0
  151. package/dist/pms/webhookQueue/types/index.d.ts +1 -0
  152. package/dist/pms/webhookQueue/types/webhook.types.d.ts +39 -0
  153. package/dist/pms/webhookQueue/types/webhook.types.js +2 -0
  154. package/dist/property/IProperty.d.ts +29 -0
  155. package/dist/property/Property.repository.d.ts +8 -0
  156. package/dist/property/Property.repository.js +109 -0
  157. package/dist/property/Property.service.d.ts +8 -0
  158. package/dist/property/Property.service.js +124 -0
  159. package/dist/property/index.d.ts +2 -0
  160. package/dist/queue/interfaces/IHttpRequestJob.d.ts +9 -0
  161. package/dist/types/alert.types.d.ts +57 -0
  162. package/dist/types/config.types.d.ts +19 -0
  163. package/dist/types/index.d.ts +3 -0
  164. package/dist/types/issue.types.d.ts +90 -0
  165. package/dist/types/issue.types.js +40 -0
  166. package/dist/utils/http-utils.d.ts +13 -0
  167. package/package.json +1 -1
@@ -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("./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
+ }
@@ -0,0 +1,68 @@
1
+ import { IssueService } from "./Issue.service";
2
+ /**
3
+ * Example usage of the updated IssueService with IssueBuilder integration
4
+ * This file demonstrates various ways to use the IssueService with the new IssueBuilder
5
+ */
6
+ export declare class IssueServiceExample {
7
+ private readonly issueService;
8
+ constructor(issueService: IssueService);
9
+ /**
10
+ * Example 1: Using the updated createIssue method with IssueBuilder
11
+ */
12
+ createIssueWithBuilder(): Promise<import("./issue.types").IssueDocument>;
13
+ /**
14
+ * Example 2: Using convenience methods for specific issue types
15
+ */
16
+ createSpecificIssues(): Promise<{
17
+ readinessIssue: import("./issue.types").IssueDocument;
18
+ operationsIssue: import("./issue.types").IssueDocument;
19
+ securityIssue: import("./issue.types").IssueDocument;
20
+ energyIssue: import("./issue.types").IssueDocument;
21
+ }>;
22
+ /**
23
+ * Example 3: Using device-specific issue methods
24
+ */
25
+ createDeviceIssues(): Promise<{
26
+ deviceIssue1: import("./issue.types").IssueDocument;
27
+ deviceIssue2: import("./issue.types").IssueDocument;
28
+ }>;
29
+ /**
30
+ * Example 4: Using hub-specific issue methods
31
+ */
32
+ createHubIssues(): Promise<{
33
+ hubIssue1: import("./issue.types").IssueDocument;
34
+ hubIssue2: import("./issue.types").IssueDocument;
35
+ }>;
36
+ /**
37
+ * Example 5: Using user-specific issue methods
38
+ */
39
+ createUserIssues(): Promise<{
40
+ userIssue: import("./issue.types").IssueDocument;
41
+ }>;
42
+ /**
43
+ * Example 6: Using maintenance and urgent issue methods
44
+ */
45
+ createMaintenanceAndUrgentIssues(): Promise<{
46
+ maintenanceIssue: import("./issue.types").IssueDocument;
47
+ urgentIssue: import("./issue.types").IssueDocument;
48
+ }>;
49
+ /**
50
+ * Example 7: Using static factory methods with IssueBuilder
51
+ */
52
+ createIssuesWithStaticMethods(): Promise<{
53
+ issue1: import("./issue.types").IssueDocument;
54
+ issue2: import("./issue.types").IssueDocument;
55
+ }>;
56
+ /**
57
+ * Example 8: Creating multiple issues efficiently
58
+ */
59
+ createMultipleIssues(): Promise<import("./issue.types").IssueDocument[]>;
60
+ /**
61
+ * Example 9: Creating issue with due date calculation
62
+ */
63
+ createIssueWithDueDate(): Promise<import("./issue.types").IssueDocument>;
64
+ /**
65
+ * Example 10: Backward compatibility - still works with CreateIssueData
66
+ */
67
+ createIssueWithLegacyData(): Promise<import("./issue.types").IssueDocument>;
68
+ }
@@ -0,0 +1,292 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IssueServiceExample = void 0;
4
+ const constants_1 = require("../constants");
5
+ const IssueBuilder_1 = require("./IssueBuilder");
6
+ const issue_types_1 = require("./issue.types");
7
+ /**
8
+ * Example usage of the updated IssueService with IssueBuilder integration
9
+ * This file demonstrates various ways to use the IssueService with the new IssueBuilder
10
+ */
11
+ class IssueServiceExample {
12
+ constructor(issueService) {
13
+ this.issueService = issueService;
14
+ }
15
+ /**
16
+ * Example 1: Using the updated createIssue method with IssueBuilder
17
+ */
18
+ async createIssueWithBuilder() {
19
+ const issueBuilder = new IssueBuilder_1.IssueBuilder()
20
+ .setCategory(issue_types_1.IssuesCategory.OPERATIONS)
21
+ .setPropertyId("prop123")
22
+ .setTitle("Device Maintenance Required")
23
+ .setDescription("Device requires scheduled maintenance")
24
+ .setEntityId("device456")
25
+ .setEntityType(issue_types_1.EntityType.DEVICE)
26
+ .setPriority(issue_types_1.IssuePriority.HIGH)
27
+ .setAssignedTo("tech789")
28
+ .setCreatedBy("user123")
29
+ .setDueDate(new Date("2024-01-15"));
30
+ // Pass the IssueBuilder directly to createIssue
31
+ const issue = await this.issueService.createIssue(issueBuilder);
32
+ return issue;
33
+ }
34
+ /**
35
+ * Example 2: Using convenience methods for specific issue types
36
+ */
37
+ async createSpecificIssues() {
38
+ // Create a readiness issue
39
+ const readinessIssue = await this.issueService.createReadinessIssue({
40
+ propertyId: "prop123",
41
+ title: "System Maintenance Required",
42
+ description: "System maintenance is scheduled for tonight",
43
+ createdBy: "admin",
44
+ entityId: "system456",
45
+ entityType: issue_types_1.EntityType.PROPERTY,
46
+ assignedTo: "maintenance-team",
47
+ dueDate: new Date("2024-01-20"),
48
+ category: issue_types_1.IssuesCategory.READINESS,
49
+ });
50
+ // Create an operations issue
51
+ const operationsIssue = await this.issueService.createOperationsIssue({
52
+ propertyId: "prop123",
53
+ title: "Device Temperature High",
54
+ description: "Device temperature exceeds normal operating range",
55
+ createdBy: "monitor",
56
+ entityId: "device789",
57
+ entityType: issue_types_1.EntityType.DEVICE,
58
+ assignedTo: "tech-support",
59
+ dueDate: new Date("2024-01-10"),
60
+ category: issue_types_1.IssuesCategory.OPERATIONS,
61
+ });
62
+ // Create a security issue
63
+ const securityIssue = await this.issueService.createSecurityIssue({
64
+ propertyId: "prop123",
65
+ title: "Unauthorized Access Attempt",
66
+ description: "Multiple failed login attempts detected",
67
+ createdBy: "security-system",
68
+ entityId: "user123",
69
+ entityType: issue_types_1.EntityType.USER,
70
+ assignedTo: "security-team",
71
+ dueDate: new Date("2024-01-05"),
72
+ category: issue_types_1.IssuesCategory.SECURITY,
73
+ });
74
+ // Create an energy issue
75
+ const energyIssue = await this.issueService.createEnergyIssue({
76
+ propertyId: "prop123",
77
+ title: "High Energy Consumption",
78
+ description: "Energy usage is 20% above normal levels",
79
+ createdBy: "energy-monitor",
80
+ entityId: "zone456",
81
+ entityType: issue_types_1.EntityType.COLLECTION,
82
+ assignedTo: "energy-manager",
83
+ dueDate: new Date("2024-01-25"),
84
+ category: issue_types_1.IssuesCategory.ENERGY,
85
+ });
86
+ return { readinessIssue, operationsIssue, securityIssue, energyIssue };
87
+ }
88
+ /**
89
+ * Example 3: Using device-specific issue methods
90
+ */
91
+ async createDeviceIssues() {
92
+ // Create a device issue with default category and priority
93
+ const deviceIssue1 = await this.issueService.createDeviceIssue({
94
+ entityId: "device123",
95
+ propertyId: "prop456",
96
+ title: "Device Battery Low",
97
+ description: "Device battery level is below 20%",
98
+ createdBy: constants_1.Source.CLOUD_EVENT,
99
+ category: issue_types_1.IssuesCategory.READINESS,
100
+ priority: issue_types_1.IssuePriority.MEDIUM,
101
+ assignedTo: "maintenance-team",
102
+ dueDate: new Date("2024-01-12"),
103
+ entityType: issue_types_1.EntityType.DEVICE,
104
+ });
105
+ // Create a device issue with custom category and priority
106
+ const deviceIssue2 = await this.issueService.createDeviceIssue({
107
+ entityId: "device789",
108
+ propertyId: "prop456",
109
+ title: "Device Firmware Update Available",
110
+ description: "New firmware version is available for installation",
111
+ createdBy: constants_1.Source.CLOUD_EVENT,
112
+ category: issue_types_1.IssuesCategory.READINESS,
113
+ priority: issue_types_1.IssuePriority.MEDIUM,
114
+ assignedTo: "admin",
115
+ dueDate: new Date("2024-01-20"),
116
+ entityType: issue_types_1.EntityType.DEVICE,
117
+ });
118
+ return { deviceIssue1, deviceIssue2 };
119
+ }
120
+ /**
121
+ * Example 4: Using hub-specific issue methods
122
+ */
123
+ async createHubIssues() {
124
+ // Create a hub issue with default settings
125
+ const hubIssue1 = await this.issueService.createHubIssue({
126
+ entityId: "hub123",
127
+ propertyId: "prop456",
128
+ title: "Hub Connection Lost",
129
+ description: "Hub has lost connection to the network",
130
+ createdBy: "network-monitor",
131
+ category: issue_types_1.IssuesCategory.READINESS,
132
+ priority: issue_types_1.IssuePriority.MEDIUM,
133
+ assignedTo: "network-admin",
134
+ dueDate: new Date("2024-01-05"),
135
+ entityType: issue_types_1.EntityType.HUB,
136
+ });
137
+ // Create a hub issue with custom settings
138
+ const hubIssue2 = await this.issueService.createHubIssue({
139
+ entityId: "hub789",
140
+ propertyId: "prop456",
141
+ title: "Hub Maintenance Required",
142
+ description: "Hub requires scheduled maintenance",
143
+ createdBy: "maintenance-system",
144
+ category: issue_types_1.IssuesCategory.READINESS,
145
+ priority: issue_types_1.IssuePriority.LOW,
146
+ assignedTo: "technician",
147
+ dueDate: new Date("2024-01-15"),
148
+ entityType: issue_types_1.EntityType.HUB,
149
+ });
150
+ return { hubIssue1, hubIssue2 };
151
+ }
152
+ /**
153
+ * Example 5: Using user-specific issue methods
154
+ */
155
+ async createUserIssues() {
156
+ // Create a user issue
157
+ const userIssue = await this.issueService.createUserIssue({
158
+ entityId: "user456",
159
+ propertyId: "prop303",
160
+ title: "User Access Review Required",
161
+ description: "User access permissions need review",
162
+ createdBy: "access-control",
163
+ category: issue_types_1.IssuesCategory.SECURITY,
164
+ priority: issue_types_1.IssuePriority.MEDIUM,
165
+ assignedTo: "hr-admin",
166
+ dueDate: new Date("2024-01-30"),
167
+ entityType: issue_types_1.EntityType.USER,
168
+ });
169
+ return { userIssue };
170
+ }
171
+ /**
172
+ * Example 6: Using maintenance and urgent issue methods
173
+ */
174
+ async createMaintenanceAndUrgentIssues() {
175
+ // Create a maintenance issue
176
+ const maintenanceIssue = await this.issueService.createMaintenanceIssue({
177
+ propertyId: "prop505",
178
+ title: "Scheduled Device Maintenance",
179
+ description: "Regular maintenance is scheduled for this device",
180
+ createdBy: "maintenance-scheduler",
181
+ entityId: "device789",
182
+ entityType: issue_types_1.EntityType.DEVICE,
183
+ assignedTo: "technician",
184
+ dueDate: new Date("2024-01-12"),
185
+ category: issue_types_1.IssuesCategory.READINESS,
186
+ priority: issue_types_1.IssuePriority.MEDIUM,
187
+ });
188
+ // Create an urgent issue
189
+ const urgentIssue = await this.issueService.createUrgentIssue({
190
+ propertyId: "prop606",
191
+ title: "Critical Hub Failure",
192
+ description: "Hub is experiencing critical failures",
193
+ createdBy: "monitoring-system",
194
+ entityId: "hub123",
195
+ entityType: issue_types_1.EntityType.HUB,
196
+ assignedTo: "emergency-tech",
197
+ dueDate: new Date("2024-01-03"),
198
+ category: issue_types_1.IssuesCategory.READINESS,
199
+ priority: issue_types_1.IssuePriority.CRITICAL,
200
+ });
201
+ return { maintenanceIssue, urgentIssue };
202
+ }
203
+ /**
204
+ * Example 7: Using static factory methods with IssueBuilder
205
+ */
206
+ async createIssuesWithStaticMethods() {
207
+ // Create a device issue using static factory method
208
+ const deviceIssue = IssueBuilder_1.IssueBuilder.createDeviceIssue("device123", "prop456")
209
+ .setCategory(issue_types_1.IssuesCategory.OPERATIONS)
210
+ .setTitle("Device Offline")
211
+ .setDescription("Device has been offline for more than 5 minutes")
212
+ .setPriority(issue_types_1.IssuePriority.HIGH)
213
+ .setAssignedTo("tech-support")
214
+ .setCreatedBy("monitor")
215
+ .setDueDate(new Date("2024-01-10"));
216
+ const issue1 = await this.issueService.createIssue(deviceIssue);
217
+ // Create a hub issue using static factory method
218
+ const hubIssue = IssueBuilder_1.IssueBuilder.createHubIssue("hub789", "prop202")
219
+ .setCategory(issue_types_1.IssuesCategory.SECURITY)
220
+ .setTitle("Hub Security Breach")
221
+ .setDescription("Unauthorized access attempt detected on hub")
222
+ .setPriority(issue_types_1.IssuePriority.CRITICAL)
223
+ .setAssignedTo("security-team")
224
+ .setCreatedBy("security-system")
225
+ .setDueDate(new Date("2024-01-05"));
226
+ const issue2 = await this.issueService.createIssue(hubIssue);
227
+ return { issue1, issue2 };
228
+ }
229
+ /**
230
+ * Example 8: Creating multiple issues efficiently
231
+ */
232
+ async createMultipleIssues() {
233
+ const issues = [];
234
+ // Create multiple device issues efficiently
235
+ const deviceIds = ["device1", "device2", "device3"];
236
+ const propertyId = "prop123";
237
+ for (const deviceId of deviceIds) {
238
+ const issueBuilder = IssueBuilder_1.IssueBuilder.createDeviceIssue(deviceId, propertyId)
239
+ .setCategory(issue_types_1.IssuesCategory.OPERATIONS)
240
+ .setTitle(`Device ${deviceId} Status`)
241
+ .setDescription(`Status check for device ${deviceId}`)
242
+ .setPriority(issue_types_1.IssuePriority.MEDIUM)
243
+ .setAssignedTo("batch-processor")
244
+ .setCreatedBy("batch-processor")
245
+ .setDueDate(new Date("2024-01-15"));
246
+ const issue = await this.issueService.createIssue(issueBuilder);
247
+ issues.push(issue);
248
+ }
249
+ return issues;
250
+ }
251
+ /**
252
+ * Example 9: Creating issue with due date calculation
253
+ */
254
+ async createIssueWithDueDate() {
255
+ const dueDate = new Date();
256
+ dueDate.setDate(dueDate.getDate() + 7); // Due in 7 days
257
+ const issueBuilder = new IssueBuilder_1.IssueBuilder()
258
+ .setCategory(issue_types_1.IssuesCategory.READINESS)
259
+ .setPropertyId("prop808")
260
+ .setTitle("System Update Required")
261
+ .setDescription("System requires critical security update")
262
+ .setEntityType(issue_types_1.EntityType.PROPERTY)
263
+ .setPriority(issue_types_1.IssuePriority.HIGH)
264
+ .setAssignedTo("system-admin")
265
+ .setCreatedBy("update-manager")
266
+ .setDueDate(dueDate);
267
+ const issue = await this.issueService.createIssue(issueBuilder);
268
+ return issue;
269
+ }
270
+ /**
271
+ * Example 10: Backward compatibility - still works with CreateIssueData
272
+ */
273
+ async createIssueWithLegacyData() {
274
+ const issueData = {
275
+ category: issue_types_1.IssuesCategory.OPERATIONS,
276
+ propertyId: "prop123",
277
+ title: "Legacy Issue",
278
+ description: "This issue was created using the old CreateIssueData format",
279
+ entityId: "device456",
280
+ entityType: issue_types_1.EntityType.DEVICE,
281
+ priority: issue_types_1.IssuePriority.MEDIUM,
282
+ assignedTo: "tech-support",
283
+ createdBy: "legacy-system",
284
+ dueDate: new Date("2024-01-20"),
285
+ source: constants_1.Source.CLOUD_EVENT,
286
+ };
287
+ // This still works with the updated createIssue method
288
+ const issue = await this.issueService.createIssue(issueData);
289
+ return issue;
290
+ }
291
+ }
292
+ exports.IssueServiceExample = IssueServiceExample;
@@ -0,0 +1,6 @@
1
+ export declare enum PmsProvider {
2
+ Cloudbeds = "Cloudbeds",
3
+ StayNTouch = "StayNTouch",
4
+ HotelKey = "HotelKey",
5
+ Yanolja = "Yanolja"
6
+ }
@@ -0,0 +1 @@
1
+ export * from "./webhookQueue";
@@ -0,0 +1,2 @@
1
+ export * from "./pms-integration";
2
+ export * from "./usage";
@@ -0,0 +1,65 @@
1
+ export declare class ExamplePmsServiceWithQueue {
2
+ private webhookQueueIntegration;
3
+ constructor();
4
+ /**
5
+ * Initialize the webhook queue system
6
+ */
7
+ initializeWebhookQueue(): Promise<void>;
8
+ /**
9
+ * Your existing webhook processing method
10
+ * This will be called by the queue worker
11
+ */
12
+ processWebhook(webhookData: any, pmsType: string): Promise<any>;
13
+ /**
14
+ * Modified webhook handler that queues webhooks instead of processing directly
15
+ */
16
+ handleWebhookWithQueue(webhookData: any, pmsType: string, propertyId: string): Promise<string>;
17
+ /**
18
+ * Get webhook queue status for monitoring
19
+ */
20
+ getWebhookQueueStatus(propertyId: string, pmsType: string): Promise<import("../types/webhook.types").IWebhookQueueStatus>;
21
+ /**
22
+ * Get all webhook queue statuses for a property
23
+ */
24
+ getAllWebhookQueueStatuses(propertyId: string): Promise<Record<string, import("../types/webhook.types").IWebhookQueueStatus>>;
25
+ /**
26
+ * Clean up old webhook jobs
27
+ */
28
+ cleanupWebhookQueues(propertyId: string): Promise<void>;
29
+ /**
30
+ * Shutdown webhook queue system
31
+ */
32
+ shutdownWebhookQueue(): Promise<void>;
33
+ private extractPropertyIdFromWebhook;
34
+ private simulateWebhookProcessing;
35
+ }
36
+ export declare class ExamplePmsController {
37
+ private pmsService;
38
+ constructor();
39
+ /**
40
+ * Initialize the service (call this when your app starts)
41
+ */
42
+ initialize(): Promise<void>;
43
+ /**
44
+ * Modified webhook endpoint that uses the queue
45
+ */
46
+ handleWebhook(payload: any, pmsType: string): Promise<any>;
47
+ /**
48
+ * Get webhook queue status
49
+ */
50
+ getWebhookQueueStatus(propertyId: string, pmsType: string): Promise<import("../types/webhook.types").IWebhookQueueStatus>;
51
+ /**
52
+ * Get all webhook queue statuses for a property
53
+ */
54
+ getAllWebhookQueueStatuses(propertyId: string): Promise<Record<string, import("../types/webhook.types").IWebhookQueueStatus>>;
55
+ /**
56
+ * Cleanup webhook queues
57
+ */
58
+ cleanupWebhookQueues(propertyId: string): Promise<void>;
59
+ /**
60
+ * Shutdown the service
61
+ */
62
+ shutdown(): Promise<void>;
63
+ private extractPropertyIdFromPayload;
64
+ }
65
+ export declare function exampleUsage(): Promise<void>;