dt-common-device 3.0.10 → 3.0.12

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 (145) hide show
  1. package/dist/audit/AuditProperties.d.ts +16 -0
  2. package/dist/audit/AuditUtils.d.ts +2 -0
  3. package/dist/audit/AuditUtils.js +36 -0
  4. package/dist/config/config.d.ts +1 -2
  5. package/dist/config/config.js +4 -5
  6. package/dist/constants/Service.d.ts +1 -0
  7. package/dist/device/local/events/EventHandler.js +6 -6
  8. package/dist/device/local/events/Events.d.ts +33 -12
  9. package/dist/device/local/events/Events.js +33 -12
  10. package/dist/device/local/repository/Schedule.repository.d.ts +0 -1
  11. package/dist/device/local/repository/Schedule.repository.js +6 -6
  12. package/dist/queue/entities/HybridHttpQueue.d.ts +4 -14
  13. package/dist/queue/entities/HybridHttpQueue.js +31 -119
  14. package/dist/queue/interfaces/IHybridHttpQueue.d.ts +2 -12
  15. package/dist/queue/interfaces/IJobResult.d.ts +1 -8
  16. package/dist/queue/interfaces/index.d.ts +0 -1
  17. package/dist/queue/interfaces/index.js +0 -1
  18. package/dist/queue/services/QueueService.d.ts +2 -12
  19. package/dist/queue/types/http.types.d.ts +6 -4
  20. package/dist/queue/types/queue.types.d.ts +12 -29
  21. package/dist/queue/utils/jobUtils.d.ts +2 -4
  22. package/dist/queue/utils/jobUtils.js +0 -48
  23. package/dist/queue/utils/queueUtils.d.ts +7 -0
  24. package/dist/queue/utils/queueUtils.js +114 -4
  25. package/dist/queue/utils/rateLimit.utils.d.ts +1 -1
  26. package/dist/queue/utils/rateLimit.utils.js +38 -2
  27. package/package.json +6 -1
  28. package/.eslintrc.js +0 -44
  29. package/dist/device/cloud/interface.d.ts +0 -101
  30. package/dist/device/cloud/interface.js +0 -3
  31. package/dist/device/cloud/interfaces/IDeviceConnectionService.d.ts +0 -7
  32. package/dist/device/cloud/interfaces/IDeviceConnectionService.js +0 -3
  33. package/dist/device/cloud/interfaces/IDevicesService.d.ts +0 -9
  34. package/dist/device/cloud/services/Device.service.d.ts +0 -39
  35. package/dist/device/cloud/services/Device.service.js +0 -9
  36. package/dist/device/cloud/services/DeviceCloudService.d.ts +0 -42
  37. package/dist/device/cloud/services/DeviceCloudService.js +0 -59
  38. package/dist/device/cloud/services/DeviceHub.service.d.ts +0 -3
  39. package/dist/device/cloud/services/DeviceHub.service.js +0 -6
  40. package/dist/device/cloud/services/Hub.service.d.ts +0 -25
  41. package/dist/device/cloud/services/Hub.service.js +0 -9
  42. package/dist/device/cloud/services/SmartThingsDeviceService.d.ts +0 -38
  43. package/dist/device/cloud/services/SmartThingsDeviceService.js +0 -52
  44. package/dist/device/index.d.ts +0 -4
  45. package/dist/device/index.js +0 -20
  46. package/dist/device/local/interface.d.ts +0 -0
  47. package/dist/device/local/interface.js +0 -1
  48. package/dist/device/local/services/DeviceHub.service.d.ts +0 -11
  49. package/dist/device/local/services/DeviceHub.service.js +0 -40
  50. package/src/alerts/Alert.model.ts +0 -289
  51. package/src/alerts/Alert.repository.ts +0 -487
  52. package/src/alerts/Alert.service.ts +0 -711
  53. package/src/alerts/AlertBuilder.example.ts +0 -126
  54. package/src/alerts/AlertBuilder.ts +0 -208
  55. package/src/alerts/AlertService.example.ts +0 -232
  56. package/src/alerts/alert.types.ts +0 -64
  57. package/src/alerts/index.ts +0 -3
  58. package/src/config/config.ts +0 -202
  59. package/src/config/config.types.ts +0 -21
  60. package/src/connection/Connection.repository.ts +0 -52
  61. package/src/connection/Connection.service.ts +0 -39
  62. package/src/connection/IConnection.ts +0 -27
  63. package/src/connection/index.ts +0 -3
  64. package/src/constants/ConnectionProviders.ts +0 -11
  65. package/src/constants/Event.ts +0 -89
  66. package/src/constants/Service.ts +0 -17
  67. package/src/constants/index.ts +0 -3
  68. package/src/db/db.ts +0 -24
  69. package/src/db/index.ts +0 -2
  70. package/src/db/redis.ts +0 -20
  71. package/src/device/cloud/entities/CloudDevice.ts +0 -40
  72. package/src/device/cloud/entities/CloudDeviceService.ts +0 -8
  73. package/src/device/cloud/entities/DeviceFactory.ts +0 -27
  74. package/src/device/cloud/entities/index.ts +0 -3
  75. package/src/device/cloud/interfaces/ICloudDevice.ts +0 -14
  76. package/src/device/cloud/interfaces/ICloudDeviceService.ts +0 -6
  77. package/src/device/cloud/interfaces/IDeviceFactory.ts +0 -5
  78. package/src/device/cloud/interfaces/IRawDataTransformer.ts +0 -5
  79. package/src/device/cloud/interfaces/IRawDevice.ts +0 -19
  80. package/src/device/cloud/interfaces/index.ts +0 -5
  81. package/src/device/local/interfaces/IDevice.ts +0 -62
  82. package/src/device/local/interfaces/IDtDevice.ts +0 -16
  83. package/src/device/local/interfaces/ISchedule.ts +0 -40
  84. package/src/device/local/interfaces/index.ts +0 -3
  85. package/src/device/local/repository/Device.repository.ts +0 -368
  86. package/src/device/local/repository/Hub.repository.ts +0 -107
  87. package/src/device/local/repository/Schedule.repository.ts +0 -72
  88. package/src/device/local/services/Device.service.ts +0 -436
  89. package/src/device/local/services/Hub.service.ts +0 -57
  90. package/src/device/local/services/Schedule.service.ts +0 -26
  91. package/src/device/local/services/index.ts +0 -3
  92. package/src/docs/Alert.model.md +0 -319
  93. package/src/docs/Alerts&IssuesModel.md +0 -312
  94. package/src/docs/Issue.model.md +0 -386
  95. package/src/docs/SECURITY.md +0 -67
  96. package/src/docs/TROUBLESHOOTING.md +0 -184
  97. package/src/events/BaseEventHandler.ts +0 -145
  98. package/src/events/BaseEventTransformer.ts +0 -97
  99. package/src/events/DeviceEventHandler.ts +0 -213
  100. package/src/events/DeviceEventTransformerFactory.ts +0 -77
  101. package/src/events/EventHandler.ts +0 -124
  102. package/src/events/EventHandlerOrchestrator.ts +0 -119
  103. package/src/events/EventProcessingService.ts +0 -248
  104. package/src/events/InternalEventSubscription.ts +0 -194
  105. package/src/events/index.ts +0 -9
  106. package/src/events/interfaces/DeviceEvent.ts +0 -56
  107. package/src/events/interfaces/IEventHandler.ts +0 -28
  108. package/src/events/interfaces/IEventTransformer.ts +0 -8
  109. package/src/events/interfaces/IInternalEvent.ts +0 -33
  110. package/src/events/interfaces/index.ts +0 -4
  111. package/src/index.ts +0 -43
  112. package/src/issues/Issue.model.ts +0 -350
  113. package/src/issues/Issue.repository.ts +0 -517
  114. package/src/issues/Issue.service.ts +0 -932
  115. package/src/issues/IssueBuilder.example.ts +0 -210
  116. package/src/issues/IssueBuilder.ts +0 -263
  117. package/src/issues/IssueService.example.ts +0 -310
  118. package/src/issues/index.ts +0 -2
  119. package/src/issues/issue.types.ts +0 -98
  120. package/src/property/IProperty.ts +0 -30
  121. package/src/property/Property.repository.ts +0 -53
  122. package/src/property/Property.service.ts +0 -38
  123. package/src/property/index.ts +0 -2
  124. package/src/queue/entities/HybridHttpQueue.ts +0 -274
  125. package/src/queue/entities/index.ts +0 -1
  126. package/src/queue/index.ts +0 -6
  127. package/src/queue/interfaces/IHttpRequestJob.ts +0 -10
  128. package/src/queue/interfaces/IHybridHttpQueue.ts +0 -25
  129. package/src/queue/interfaces/IJobResult.ts +0 -15
  130. package/src/queue/interfaces/IRateLimitConfig.ts +0 -5
  131. package/src/queue/interfaces/index.ts +0 -4
  132. package/src/queue/services/QueueService.ts +0 -40
  133. package/src/queue/services/index.ts +0 -1
  134. package/src/queue/types/http.types.ts +0 -23
  135. package/src/queue/types/index.ts +0 -2
  136. package/src/queue/types/queue.types.ts +0 -21
  137. package/src/queue/utils/index.ts +0 -3
  138. package/src/queue/utils/jobUtils.ts +0 -79
  139. package/src/queue/utils/queueUtils.ts +0 -84
  140. package/src/queue/utils/rateLimit.utils.ts +0 -131
  141. package/src/utils/http.utils.ts +0 -143
  142. package/src/utils/index.ts +0 -2
  143. package/src/utils/redis.utils.ts +0 -74
  144. package/tsconfig.json +0 -20
  145. /package/dist/{device/cloud/interfaces/IDevicesService.js → audit/AuditProperties.js} +0 -0
@@ -1,517 +0,0 @@
1
- import { Service } from "typedi";
2
- import { IssueModel, IIssueDocument } from "./Issue.model";
3
- import {
4
- CreateIssueData,
5
- UpdateIssueData,
6
- IssueStatus,
7
- IssuePriority,
8
- IssuesCategory,
9
- EntityType,
10
- } from "./issue.types";
11
-
12
- @Service()
13
- export class IssueRepository {
14
- /**
15
- * Create a new issue
16
- */
17
- async create(issueData: CreateIssueData): Promise<IIssueDocument> {
18
- try {
19
- const issue = new IssueModel({
20
- ...issueData,
21
- status: IssueStatus.PENDING,
22
- priority: issueData.priority || IssuePriority.MEDIUM,
23
- isDeleted: false,
24
- });
25
-
26
- return await issue.save();
27
- } catch (error) {
28
- throw new Error(
29
- `Failed to create issue: ${
30
- error instanceof Error ? error.message : "Unknown error"
31
- }`
32
- );
33
- }
34
- }
35
-
36
- /**
37
- * Find issue by ID
38
- */
39
- async findById(
40
- id: string,
41
- includeDeleted = false
42
- ): Promise<IIssueDocument | null> {
43
- try {
44
- const query: any = { _id: id };
45
- if (!includeDeleted) {
46
- query.isDeleted = false;
47
- }
48
- return await IssueModel.findOne(query);
49
- } catch (error) {
50
- throw new Error(
51
- `Failed to find issue by ID: ${
52
- error instanceof Error ? error.message : "Unknown error"
53
- }`
54
- );
55
- }
56
- }
57
-
58
- /**
59
- * Find all issues with filters
60
- */
61
- async findAll(
62
- filters: {
63
- propertyId?: string;
64
- assignedTo?: string;
65
- status?: IssueStatus;
66
- priority?: IssuePriority;
67
- category?: IssuesCategory;
68
- entityType?: EntityType;
69
- entityId?: string;
70
- includeDeleted?: boolean;
71
- limit?: number;
72
- skip?: number;
73
- sort?: { [key: string]: 1 | -1 };
74
- } = {}
75
- ): Promise<IIssueDocument[]> {
76
- try {
77
- const query: any = {};
78
-
79
- if (filters.propertyId) query.propertyId = filters.propertyId;
80
- if (filters.assignedTo) query.assignedTo = filters.assignedTo;
81
- if (filters.status) query.status = filters.status;
82
- if (filters.priority) query.priority = filters.priority;
83
- if (filters.category) query.category = filters.category;
84
- if (filters.entityType) query.entityType = filters.entityType;
85
- if (filters.entityId) query.entityId = filters.entityId;
86
- if (!filters.includeDeleted) query.isDeleted = false;
87
-
88
- const queryBuilder = IssueModel.find(query);
89
-
90
- if (filters.sort) {
91
- queryBuilder.sort(filters.sort);
92
- } else {
93
- queryBuilder.sort({ createdAt: -1 });
94
- }
95
-
96
- if (filters.skip) queryBuilder.skip(filters.skip);
97
- if (filters.limit) queryBuilder.limit(filters.limit);
98
-
99
- return await queryBuilder.exec();
100
- } catch (error) {
101
- throw new Error(
102
- `Failed to find issues: ${
103
- error instanceof Error ? error.message : "Unknown error"
104
- }`
105
- );
106
- }
107
- }
108
-
109
- /**
110
- * Update an issue
111
- */
112
- async update(
113
- id: string,
114
- updateData: UpdateIssueData
115
- ): Promise<IIssueDocument | null> {
116
- try {
117
- return await IssueModel.findByIdAndUpdate(
118
- id,
119
- { ...updateData, updatedAt: new Date() },
120
- { new: true, runValidators: true }
121
- );
122
- } catch (error) {
123
- throw new Error(
124
- `Failed to update issue: ${
125
- error instanceof Error ? error.message : "Unknown error"
126
- }`
127
- );
128
- }
129
- }
130
-
131
- /**
132
- * Soft delete an issue
133
- */
134
- async softDelete(id: string, deletedBy: string): Promise<boolean> {
135
- try {
136
- const result = await IssueModel.findByIdAndUpdate(id, {
137
- isDeleted: true,
138
- updatedBy: deletedBy,
139
- updatedAt: new Date(),
140
- });
141
- return !!result;
142
- } catch (error) {
143
- throw new Error(
144
- `Failed to soft delete issue: ${
145
- error instanceof Error ? error.message : "Unknown error"
146
- }`
147
- );
148
- }
149
- }
150
-
151
- /**
152
- * Permanently delete an issue
153
- */
154
- async hardDelete(id: string): Promise<boolean> {
155
- try {
156
- const result = await IssueModel.findByIdAndDelete(id);
157
- return !!result;
158
- } catch (error) {
159
- throw new Error(
160
- `Failed to permanently delete issue: ${
161
- error instanceof Error ? error.message : "Unknown error"
162
- }`
163
- );
164
- }
165
- }
166
-
167
- /**
168
- * Count issues with filters
169
- */
170
- async count(
171
- filters: {
172
- propertyId?: string;
173
- assignedTo?: string;
174
- status?: IssueStatus;
175
- priority?: IssuePriority;
176
- category?: IssuesCategory;
177
- entityType?: EntityType;
178
- entityId?: string;
179
- includeDeleted?: boolean;
180
- } = {}
181
- ): Promise<number> {
182
- try {
183
- const query: any = {};
184
-
185
- if (filters.propertyId) query.propertyId = filters.propertyId;
186
- if (filters.assignedTo) query.assignedTo = filters.assignedTo;
187
- if (filters.status) query.status = filters.status;
188
- if (filters.priority) query.priority = filters.priority;
189
- if (filters.category) query.category = filters.category;
190
- if (filters.entityType) query.entityType = filters.entityType;
191
- if (filters.entityId) query.entityId = filters.entityId;
192
- if (!filters.includeDeleted) query.isDeleted = false;
193
-
194
- return await IssueModel.countDocuments(query);
195
- } catch (error) {
196
- throw new Error(
197
- `Failed to count issues: ${
198
- error instanceof Error ? error.message : "Unknown error"
199
- }`
200
- );
201
- }
202
- }
203
-
204
- /**
205
- * Find issues by property
206
- */
207
- async findByProperty(
208
- propertyId: string,
209
- includeDeleted = false
210
- ): Promise<IIssueDocument[]> {
211
- try {
212
- return await IssueModel.findByProperty(propertyId, includeDeleted);
213
- } catch (error) {
214
- throw new Error(
215
- `Failed to find issues by property: ${
216
- error instanceof Error ? error.message : "Unknown error"
217
- }`
218
- );
219
- }
220
- }
221
-
222
- /**
223
- * Find issues by assignee
224
- */
225
- async findByAssignee(
226
- assignedTo: string,
227
- includeDeleted = false
228
- ): Promise<IIssueDocument[]> {
229
- try {
230
- return await IssueModel.findByAssignee(assignedTo, includeDeleted);
231
- } catch (error) {
232
- throw new Error(
233
- `Failed to find issues by assignee: ${
234
- error instanceof Error ? error.message : "Unknown error"
235
- }`
236
- );
237
- }
238
- }
239
-
240
- /**
241
- * Find issues by entity
242
- */
243
- async findByEntity(
244
- entityId: string,
245
- entityType: EntityType,
246
- includeDeleted = false
247
- ): Promise<IIssueDocument[]> {
248
- try {
249
- return await IssueModel.findByEntity(
250
- entityId,
251
- entityType,
252
- includeDeleted
253
- );
254
- } catch (error) {
255
- throw new Error(
256
- `Failed to find issues by entity: ${
257
- error instanceof Error ? error.message : "Unknown error"
258
- }`
259
- );
260
- }
261
- }
262
-
263
- /**
264
- * Find issues by status
265
- */
266
- async findByStatus(
267
- status: IssueStatus,
268
- includeDeleted = false
269
- ): Promise<IIssueDocument[]> {
270
- try {
271
- return await IssueModel.findByStatus(status, includeDeleted);
272
- } catch (error) {
273
- throw new Error(
274
- `Failed to find issues by status: ${
275
- error instanceof Error ? error.message : "Unknown error"
276
- }`
277
- );
278
- }
279
- }
280
-
281
- /**
282
- * Find issues by priority
283
- */
284
- async findByPriority(
285
- priority: IssuePriority,
286
- includeDeleted = false
287
- ): Promise<IIssueDocument[]> {
288
- try {
289
- return await IssueModel.findByPriority(priority, includeDeleted);
290
- } catch (error) {
291
- throw new Error(
292
- `Failed to find issues by priority: ${
293
- error instanceof Error ? error.message : "Unknown error"
294
- }`
295
- );
296
- }
297
- }
298
-
299
- /**
300
- * Find overdue issues
301
- */
302
- async findOverdue(includeDeleted = false): Promise<IIssueDocument[]> {
303
- try {
304
- return await IssueModel.findOverdue(includeDeleted);
305
- } catch (error) {
306
- throw new Error(
307
- `Failed to find overdue issues: ${
308
- error instanceof Error ? error.message : "Unknown error"
309
- }`
310
- );
311
- }
312
- }
313
-
314
- /**
315
- * Find upcoming issues
316
- */
317
- async findUpcoming(
318
- days: number = 7,
319
- includeDeleted = false
320
- ): Promise<IIssueDocument[]> {
321
- try {
322
- return await IssueModel.findUpcoming(days, includeDeleted);
323
- } catch (error) {
324
- throw new Error(
325
- `Failed to find upcoming issues: ${
326
- error instanceof Error ? error.message : "Unknown error"
327
- }`
328
- );
329
- }
330
- }
331
-
332
- /**
333
- * Search issues by text
334
- */
335
- async search(
336
- searchTerm: string,
337
- filters: {
338
- propertyId?: string;
339
- includeDeleted?: boolean;
340
- limit?: number;
341
- skip?: number;
342
- } = {}
343
- ): Promise<IIssueDocument[]> {
344
- try {
345
- const query: any = {
346
- $or: [
347
- { title: { $regex: searchTerm, $options: "i" } },
348
- { description: { $regex: searchTerm, $options: "i" } },
349
- ],
350
- };
351
-
352
- if (filters.propertyId) query.propertyId = filters.propertyId;
353
- if (!filters.includeDeleted) query.isDeleted = false;
354
-
355
- const queryBuilder = IssueModel.find(query).sort({ createdAt: -1 });
356
-
357
- if (filters.skip) queryBuilder.skip(filters.skip);
358
- if (filters.limit) queryBuilder.limit(filters.limit);
359
-
360
- return await queryBuilder.exec();
361
- } catch (error) {
362
- throw new Error(
363
- `Failed to search issues: ${
364
- error instanceof Error ? error.message : "Unknown error"
365
- }`
366
- );
367
- }
368
- }
369
-
370
- /**
371
- * Get issue statistics
372
- */
373
- async getStatistics(propertyId?: string): Promise<{
374
- total: number;
375
- pending: number;
376
- inProgress: number;
377
- resolved: number;
378
- closed: number;
379
- overdue: number;
380
- byPriority: Record<IssuePriority, number>;
381
- byCategory: Record<IssuesCategory, number>;
382
- }> {
383
- try {
384
- const query: any = { isDeleted: false };
385
- if (propertyId) query.propertyId = propertyId;
386
-
387
- const [
388
- total,
389
- pending,
390
- inProgress,
391
- resolved,
392
- closed,
393
- overdue,
394
- priorityStats,
395
- categoryStats,
396
- ] = await Promise.all([
397
- IssueModel.countDocuments(query),
398
- IssueModel.countDocuments({ ...query, status: IssueStatus.PENDING }),
399
- IssueModel.countDocuments({
400
- ...query,
401
- status: IssueStatus.IN_PROGRESS,
402
- }),
403
- IssueModel.countDocuments({ ...query, status: IssueStatus.RESOLVED }),
404
- IssueModel.countDocuments({ ...query, status: IssueStatus.CLOSED }),
405
- IssueModel.countDocuments({
406
- ...query,
407
- dueDate: { $lt: new Date() },
408
- status: {
409
- $nin: [
410
- IssueStatus.RESOLVED,
411
- IssueStatus.CLOSED,
412
- IssueStatus.CANCELLED,
413
- ],
414
- },
415
- }),
416
- IssueModel.aggregate([
417
- { $match: query },
418
- { $group: { _id: "$priority", count: { $sum: 1 } } },
419
- ]),
420
- IssueModel.aggregate([
421
- { $match: query },
422
- { $group: { _id: "$category", count: { $sum: 1 } } },
423
- ]),
424
- ]);
425
-
426
- const byPriority = Object.values(IssuePriority).reduce(
427
- (acc, priority) => {
428
- acc[priority] = 0;
429
- return acc;
430
- },
431
- {} as Record<IssuePriority, number>
432
- );
433
-
434
- const byCategory = Object.values(IssuesCategory).reduce(
435
- (acc, category) => {
436
- acc[category] = 0;
437
- return acc;
438
- },
439
- {} as Record<IssuesCategory, number>
440
- );
441
-
442
- priorityStats.forEach((stat: { _id: string; count: number }) => {
443
- if (stat._id in byPriority) {
444
- byPriority[stat._id as IssuePriority] = stat.count;
445
- }
446
- });
447
-
448
- categoryStats.forEach((stat: { _id: string; count: number }) => {
449
- if (stat._id in byCategory) {
450
- byCategory[stat._id as IssuesCategory] = stat.count;
451
- }
452
- });
453
-
454
- return {
455
- total,
456
- pending,
457
- inProgress,
458
- resolved,
459
- closed,
460
- overdue,
461
- byPriority,
462
- byCategory,
463
- };
464
- } catch (error) {
465
- throw new Error(
466
- `Failed to get issue statistics: ${
467
- error instanceof Error ? error.message : "Unknown error"
468
- }`
469
- );
470
- }
471
- }
472
-
473
- /**
474
- * Bulk update issues
475
- */
476
- async bulkUpdate(
477
- ids: string[],
478
- updateData: Partial<UpdateIssueData>
479
- ): Promise<number> {
480
- try {
481
- const result = await IssueModel.updateMany(
482
- { _id: { $in: ids } },
483
- { ...updateData, updatedAt: new Date() }
484
- );
485
- return result.modifiedCount;
486
- } catch (error) {
487
- throw new Error(
488
- `Failed to bulk update issues: ${
489
- error instanceof Error ? error.message : "Unknown error"
490
- }`
491
- );
492
- }
493
- }
494
-
495
- /**
496
- * Bulk soft delete issues
497
- */
498
- async bulkSoftDelete(ids: string[], deletedBy: string): Promise<number> {
499
- try {
500
- const result = await IssueModel.updateMany(
501
- { _id: { $in: ids } },
502
- {
503
- isDeleted: true,
504
- updatedBy: deletedBy,
505
- updatedAt: new Date(),
506
- }
507
- );
508
- return result.modifiedCount;
509
- } catch (error) {
510
- throw new Error(
511
- `Failed to bulk soft delete issues: ${
512
- error instanceof Error ? error.message : "Unknown error"
513
- }`
514
- );
515
- }
516
- }
517
- }