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.
@@ -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",
@@ -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
- await (0, dt_audit_library_1.publishAudit)({
13
- eventType: data.auditType,
14
- properties: { ...audit, timestamp: new Date().toISOString() },
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
  }
@@ -206,22 +206,13 @@ function checkRequiredEnv(requiredEnvs) {
206
206
  function ensureAuditInitialized() {
207
207
  if (auditInitialized)
208
208
  return;
209
- // const apiKey = process.env.POSTHOG_API_KEY;
210
- // const host = process.env.POSTHOG_HOST;
211
- const host = process.env.CLICKHOUSE_HOST;
212
- const database = process.env.CLICKHOUSE_DATABASE;
213
- const username = process.env.CLICKHOUSE_USERNAME;
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 zones associated with these access groups
215
+ // Fetch zone IDs associated with these access groups
216
216
  const zonesIdsQuery = `
217
- SELECT DISTINCT z."zoneId"
218
- FROM dt_zones_collection_map z
219
- WHERE z."collectionId" = ANY($1)
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
- SELECT id
226
- FROM "dt_zoneTypes"
227
- WHERE name = 'Guest Room'
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 guestRoomZoneTypeId = zoneTypes.rows[0].id;
231
- const zonesIds = zonesIdsResult.rows.map((row) => row.zoneId);
235
+ const guestRoomZoneTypeIds = zoneTypes.rows.map((e) => e.id);
236
+ // Fetch zones matching both sets of IDs
232
237
  const zonesQuery = `
233
- SELECT id
234
- FROM dt_zones
235
- WHERE id = ANY($1) AND "zoneTypeId" = $2
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
- guestRoomZoneTypeId,
244
+ guestRoomZoneTypeIds,
240
245
  ]);
241
- if (zonesResult?.rows?.length > 0) {
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.map((result) => result.toObject());
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
- COLLECTION = "COLLECTION",
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
- PMS_CODE_NOT_DELIVERED = "PMS_CODE_NOT_DELIVERED"
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["COLLECTION"] = "COLLECTION";
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": "9.4.1",
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.5",
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",