dt-common-device 9.4.1 → 10.0.1
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/alerts/alert.types.d.ts +1 -2
- package/dist/alerts/alert.types.js +0 -1
- package/dist/audit/ExcludeAudits.js +3 -0
- package/dist/audit/PushAudit.js +10 -4
- package/dist/config/config.js +6 -15
- package/dist/entities/admin/Admin.repository.js +22 -20
- package/dist/issues/Issue.repository.js +1 -1
- package/dist/issues/issue.types.d.ts +8 -3
- package/dist/issues/issue.types.js +8 -2
- package/package.json +2 -2
|
@@ -25,8 +25,7 @@ export declare enum AlertType {
|
|
|
25
25
|
GUEST_LOCK_FIRST_ACCESS = "GUEST_LOCK_FIRST_ACCESS",
|
|
26
26
|
DEVICE_ONLINE = "DEVICE_ONLINE",
|
|
27
27
|
ZONE_NOT_MAPPED_TO_ACCESS_GROUP = "ZONE_NOT_MAPPED_TO_ACCESS_GROUP",
|
|
28
|
-
INCORRECT_CODE_USED = "INCORRECT_CODE_USED"
|
|
29
|
-
LOW_GUEST_CODES = "LOW_GUEST_CODES"
|
|
28
|
+
INCORRECT_CODE_USED = "INCORRECT_CODE_USED"
|
|
30
29
|
}
|
|
31
30
|
export interface AlertDocument {
|
|
32
31
|
_id: string;
|
|
@@ -31,7 +31,6 @@ var AlertType;
|
|
|
31
31
|
AlertType["DEVICE_ONLINE"] = "DEVICE_ONLINE";
|
|
32
32
|
AlertType["ZONE_NOT_MAPPED_TO_ACCESS_GROUP"] = "ZONE_NOT_MAPPED_TO_ACCESS_GROUP";
|
|
33
33
|
AlertType["INCORRECT_CODE_USED"] = "INCORRECT_CODE_USED";
|
|
34
|
-
AlertType["LOW_GUEST_CODES"] = "LOW_GUEST_CODES";
|
|
35
34
|
})(AlertType || (exports.AlertType = AlertType = {}));
|
|
36
35
|
// Re-export EntityType from issue.types.ts to avoid duplication
|
|
37
36
|
var issue_types_1 = require("../issues/issue.types");
|
|
@@ -13,7 +13,10 @@ exports.excludeEvents = [
|
|
|
13
13
|
"schedule.sendcode.initiate",
|
|
14
14
|
"schedule.sendcode.success",
|
|
15
15
|
"device.state.changed",
|
|
16
|
+
"lock.code.set.attempt",
|
|
16
17
|
"lock.code.set.success",
|
|
18
|
+
"lock.code.update.attempt",
|
|
19
|
+
"lock.code.delete.attempt",
|
|
17
20
|
"lock.unlocked_non_business_hour.alert",
|
|
18
21
|
"lock.left_unlocked.alert",
|
|
19
22
|
"network.connection.on",
|
package/dist/audit/PushAudit.js
CHANGED
|
@@ -7,10 +7,16 @@ exports.pushAudit = pushAudit;
|
|
|
7
7
|
const dt_audit_library_1 = require("dt-audit-library");
|
|
8
8
|
const AuditUtils_1 = require("./AuditUtils");
|
|
9
9
|
const typedi_1 = __importDefault(require("typedi"));
|
|
10
|
+
const ExcludeAudits_1 = require("./ExcludeAudits");
|
|
10
11
|
async function pushAudit(data) {
|
|
11
12
|
const audit = await typedi_1.default.get(AuditUtils_1.AuditUtils).buildAuditProperties(data.auditData);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
if (ExcludeAudits_1.excludeEvents.includes(data.auditType)) {
|
|
14
|
+
console.log("Audit event excluded:", data.auditType);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
await (0, dt_audit_library_1.publishAudit)({
|
|
18
|
+
eventType: data.auditType,
|
|
19
|
+
properties: { ...audit, timestamp: new Date().toISOString() },
|
|
20
|
+
});
|
|
21
|
+
}
|
|
16
22
|
}
|
package/dist/config/config.js
CHANGED
|
@@ -206,22 +206,13 @@ function checkRequiredEnv(requiredEnvs) {
|
|
|
206
206
|
function ensureAuditInitialized() {
|
|
207
207
|
if (auditInitialized)
|
|
208
208
|
return;
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
const password = process.env.CLICKHOUSE_PASSWORD;
|
|
215
|
-
if (!host || !database || !username || !password) {
|
|
216
|
-
getConfig().LOGGER.error("CLICKHOUSE_HOST, CLICKHOUSE_DATABASE, CLICKHOUSE_USERNAME, and CLICKHOUSE_PASSWORD must be set in environment variables");
|
|
217
|
-
throw new Error("dt-common-device: CLICKHOUSE_HOST, CLICKHOUSE_DATABASE, CLICKHOUSE_USERNAME, and CLICKHOUSE_PASSWORD must be set in environment variables");
|
|
209
|
+
const apiKey = process.env.POSTHOG_API_KEY;
|
|
210
|
+
const host = process.env.POSTHOG_HOST;
|
|
211
|
+
if (!apiKey || !host) {
|
|
212
|
+
getConfig().LOGGER.error("POSTHOG_API_KEY and POSTHOG_HOST must be set in environment variables");
|
|
213
|
+
throw new Error("dt-common-device: POSTHOG_API_KEY and POSTHOG_HOST must be set in environment variables");
|
|
218
214
|
}
|
|
219
|
-
(0, dt_audit_library_1.initializeAudit)(
|
|
220
|
-
host,
|
|
221
|
-
database,
|
|
222
|
-
username,
|
|
223
|
-
password,
|
|
224
|
-
});
|
|
215
|
+
(0, dt_audit_library_1.initializeAudit)(apiKey, host);
|
|
225
216
|
auditInitialized = true;
|
|
226
217
|
}
|
|
227
218
|
// Direct logger export for easier usage
|
|
@@ -212,36 +212,38 @@ let AdminRepository = (() => {
|
|
|
212
212
|
return collectionZoneDevices;
|
|
213
213
|
}
|
|
214
214
|
async getZonesByAccessGroups(accessGroupIds) {
|
|
215
|
-
// Fetch
|
|
215
|
+
// Fetch zone IDs associated with these access groups
|
|
216
216
|
const zonesIdsQuery = `
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
217
|
+
SELECT DISTINCT z."zoneId"
|
|
218
|
+
FROM dt_zones_collection_map z
|
|
219
|
+
WHERE z."collectionId" = ANY($1)
|
|
220
|
+
`;
|
|
221
221
|
const zonesIdsResult = await this.postgres.query(zonesIdsQuery, [
|
|
222
222
|
accessGroupIds,
|
|
223
223
|
]);
|
|
224
|
+
const zonesIds = zonesIdsResult.rows.map((row) => row.zoneId);
|
|
225
|
+
if (zonesIds.length === 0) {
|
|
226
|
+
return [];
|
|
227
|
+
}
|
|
228
|
+
// Fetch zone type IDs for guest rooms and rooms
|
|
224
229
|
const zoneTypesQuery = `
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
230
|
+
SELECT id
|
|
231
|
+
FROM "dt_zoneTypes"
|
|
232
|
+
WHERE name IN ('Guest Room', 'Room')
|
|
233
|
+
`;
|
|
229
234
|
const zoneTypes = await this.postgres.query(zoneTypesQuery);
|
|
230
|
-
const
|
|
231
|
-
|
|
235
|
+
const guestRoomZoneTypeIds = zoneTypes.rows.map((e) => e.id);
|
|
236
|
+
// Fetch zones matching both sets of IDs
|
|
232
237
|
const zonesQuery = `
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
238
|
+
SELECT id
|
|
239
|
+
FROM dt_zones
|
|
240
|
+
WHERE id = ANY($1) AND "zoneTypeId" = ANY($2)
|
|
241
|
+
`;
|
|
237
242
|
const zonesResult = await this.postgres.query(zonesQuery, [
|
|
238
243
|
zonesIds,
|
|
239
|
-
|
|
244
|
+
guestRoomZoneTypeIds,
|
|
240
245
|
]);
|
|
241
|
-
|
|
242
|
-
return zonesResult?.rows?.map((e) => e.id);
|
|
243
|
-
}
|
|
244
|
-
return [];
|
|
246
|
+
return zonesResult.rows.map((e) => e.id);
|
|
245
247
|
}
|
|
246
248
|
async getAccessGroup(accessGroupId) {
|
|
247
249
|
const query = `
|
|
@@ -141,7 +141,7 @@ let IssueRepository = (() => {
|
|
|
141
141
|
const query = this.buildQuery(filters);
|
|
142
142
|
const options = this.buildOptions(filters);
|
|
143
143
|
const results = await Issue_model_1.IssueModel.find(query, null, options);
|
|
144
|
-
return results
|
|
144
|
+
return results?.map((result) => result.toObject()) || [];
|
|
145
145
|
}
|
|
146
146
|
catch (error) {
|
|
147
147
|
throw new Error(`Failed to find issues: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
@@ -7,19 +7,22 @@ export declare enum IssuesCategory {
|
|
|
7
7
|
export declare enum EntityType {
|
|
8
8
|
ZONE = "ZONE",
|
|
9
9
|
DEVICE = "DEVICE",
|
|
10
|
-
|
|
10
|
+
ACCESS_GROUP = "ACCESS_GROUP",
|
|
11
11
|
USER = "USER",
|
|
12
12
|
INTEGRATION = "INTEGRATION",
|
|
13
13
|
PROPERTY = "PROPERTY",
|
|
14
14
|
HUB = "HUB",
|
|
15
15
|
SCHEDULE = "SCHEDULE",
|
|
16
|
-
ALERT = "ALERT",
|
|
17
16
|
OTHER = "OTHER",
|
|
18
17
|
CLOUD_DEVICE_ACCOUNT = "CLOUD_DEVICE_ACCOUNT",
|
|
19
18
|
CLOUD_PMS_ACCOUNT = "CLOUD_PMS_ACCOUNT"
|
|
20
19
|
}
|
|
21
20
|
export declare enum EntitySubType {
|
|
22
21
|
ZONE = "ZONE",
|
|
22
|
+
GUEST_CODE = "GUEST_CODE",
|
|
23
|
+
STAFF_CODE = "STAFF_CODE",
|
|
24
|
+
EMERGENCY_CODE = "EMERGENCY_CODE",
|
|
25
|
+
VENDOR_CODE = "VENDOR_CODE",
|
|
23
26
|
LOCK = "LOCK",
|
|
24
27
|
HUB = "HUB",
|
|
25
28
|
TV = "TV",
|
|
@@ -73,7 +76,9 @@ export declare enum IssueType {
|
|
|
73
76
|
DEVICE_MALFUNCTION = "DEVICE_MALFUNCTION",
|
|
74
77
|
NO_GUEST_CODES = "NO_GUEST_CODES",
|
|
75
78
|
JUST_ENOUGH_GUEST_CODES = "JUST_ENOUGH_GUEST_CODES",
|
|
76
|
-
|
|
79
|
+
LOW_GUEST_CODES = "LOW_GUEST_CODES",
|
|
80
|
+
PMS_CODE_NOT_DELIVERED = "PMS_CODE_NOT_DELIVERED",
|
|
81
|
+
SCHEDULE_CODE_NOT_ASSIGNED = "SCHEDULE_CODE_NOT_ASSIGNED"
|
|
77
82
|
}
|
|
78
83
|
export interface IssueDocument {
|
|
79
84
|
id: string;
|
|
@@ -12,13 +12,12 @@ var EntityType;
|
|
|
12
12
|
(function (EntityType) {
|
|
13
13
|
EntityType["ZONE"] = "ZONE";
|
|
14
14
|
EntityType["DEVICE"] = "DEVICE";
|
|
15
|
-
EntityType["
|
|
15
|
+
EntityType["ACCESS_GROUP"] = "ACCESS_GROUP";
|
|
16
16
|
EntityType["USER"] = "USER";
|
|
17
17
|
EntityType["INTEGRATION"] = "INTEGRATION";
|
|
18
18
|
EntityType["PROPERTY"] = "PROPERTY";
|
|
19
19
|
EntityType["HUB"] = "HUB";
|
|
20
20
|
EntityType["SCHEDULE"] = "SCHEDULE";
|
|
21
|
-
EntityType["ALERT"] = "ALERT";
|
|
22
21
|
EntityType["OTHER"] = "OTHER";
|
|
23
22
|
EntityType["CLOUD_DEVICE_ACCOUNT"] = "CLOUD_DEVICE_ACCOUNT";
|
|
24
23
|
EntityType["CLOUD_PMS_ACCOUNT"] = "CLOUD_PMS_ACCOUNT";
|
|
@@ -26,6 +25,11 @@ var EntityType;
|
|
|
26
25
|
var EntitySubType;
|
|
27
26
|
(function (EntitySubType) {
|
|
28
27
|
EntitySubType["ZONE"] = "ZONE";
|
|
28
|
+
// CODES
|
|
29
|
+
EntitySubType["GUEST_CODE"] = "GUEST_CODE";
|
|
30
|
+
EntitySubType["STAFF_CODE"] = "STAFF_CODE";
|
|
31
|
+
EntitySubType["EMERGENCY_CODE"] = "EMERGENCY_CODE";
|
|
32
|
+
EntitySubType["VENDOR_CODE"] = "VENDOR_CODE";
|
|
29
33
|
// DEVICE
|
|
30
34
|
EntitySubType["LOCK"] = "LOCK";
|
|
31
35
|
EntitySubType["HUB"] = "HUB";
|
|
@@ -78,5 +82,7 @@ var IssueType;
|
|
|
78
82
|
IssueType["DEVICE_MALFUNCTION"] = "DEVICE_MALFUNCTION";
|
|
79
83
|
IssueType["NO_GUEST_CODES"] = "NO_GUEST_CODES";
|
|
80
84
|
IssueType["JUST_ENOUGH_GUEST_CODES"] = "JUST_ENOUGH_GUEST_CODES";
|
|
85
|
+
IssueType["LOW_GUEST_CODES"] = "LOW_GUEST_CODES";
|
|
81
86
|
IssueType["PMS_CODE_NOT_DELIVERED"] = "PMS_CODE_NOT_DELIVERED";
|
|
87
|
+
IssueType["SCHEDULE_CODE_NOT_ASSIGNED"] = "SCHEDULE_CODE_NOT_ASSIGNED";
|
|
82
88
|
})(IssueType || (exports.IssueType = IssueType = {}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dt-common-device",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"axios": "1.10.0",
|
|
47
47
|
"bullmq": "5.56.4",
|
|
48
|
-
"dt-audit-library": "1.0.
|
|
48
|
+
"dt-audit-library": "^1.0.3",
|
|
49
49
|
"dt-pub-sub": "^1.0.0",
|
|
50
50
|
"ioredis": "5.6.1",
|
|
51
51
|
"lodash": "^4.17.21",
|