dt-common-device 1.0.17 → 1.0.19

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 (33) hide show
  1. package/dist/config/config.d.ts +1 -5
  2. package/dist/config/config.js +3 -7
  3. package/dist/db/db.js +2 -2
  4. package/dist/device/cloud/entities/DeviceFactory.js +9 -1
  5. package/dist/device/local/services/Device.service.d.ts +3 -3
  6. package/dist/device/local/services/Device.service.js +23 -13
  7. package/package.json +5 -2
  8. package/src/config/config.ts +4 -14
  9. package/src/db/db.ts +2 -2
  10. package/src/device/cloud/entities/DeviceFactory.ts +13 -1
  11. package/src/device/local/services/Device.service.ts +34 -16
  12. package/dist/device/cloud/interface.d.ts +0 -101
  13. package/dist/device/cloud/interface.js +0 -3
  14. package/dist/device/cloud/interfaces/IDeviceConnectionService.d.ts +0 -7
  15. package/dist/device/cloud/interfaces/IDeviceConnectionService.js +0 -3
  16. package/dist/device/cloud/interfaces/IDevicesService.d.ts +0 -9
  17. package/dist/device/cloud/interfaces/IDevicesService.js +0 -2
  18. package/dist/device/cloud/services/Device.service.d.ts +0 -39
  19. package/dist/device/cloud/services/Device.service.js +0 -9
  20. package/dist/device/cloud/services/DeviceCloudService.d.ts +0 -42
  21. package/dist/device/cloud/services/DeviceCloudService.js +0 -59
  22. package/dist/device/cloud/services/DeviceHub.service.d.ts +0 -3
  23. package/dist/device/cloud/services/DeviceHub.service.js +0 -6
  24. package/dist/device/cloud/services/Hub.service.d.ts +0 -25
  25. package/dist/device/cloud/services/Hub.service.js +0 -9
  26. package/dist/device/cloud/services/SmartThingsDeviceService.d.ts +0 -38
  27. package/dist/device/cloud/services/SmartThingsDeviceService.js +0 -52
  28. package/dist/device/index.d.ts +0 -4
  29. package/dist/device/index.js +0 -20
  30. package/dist/device/local/interface.d.ts +0 -0
  31. package/dist/device/local/interface.js +0 -1
  32. package/dist/device/local/services/DeviceHub.service.d.ts +0 -11
  33. package/dist/device/local/services/DeviceHub.service.js +0 -40
@@ -7,11 +7,7 @@ export declare function ensureAuditInitialized(): void;
7
7
  * Returns the PostgreSQL DB URI from environment variables.
8
8
  * Throws an error if not set.
9
9
  */
10
- export declare function getPostgresDbUri(): {
11
- baseUri: string;
12
- dbName: string;
13
- params: string;
14
- };
10
+ export declare function getPostgresDbUri(): string;
15
11
  /**
16
12
  * Returns the Redis DB Host and port from environment variables.
17
13
  * Throws an error if not set.
@@ -62,15 +62,11 @@ function ensureAuditInitialized() {
62
62
  * Throws an error if not set.
63
63
  */
64
64
  function getPostgresDbUri() {
65
- const fullUri = process.env.DATABASE_URL;
65
+ const fullUri = process.env.ADMIN_DB_URI;
66
66
  if (!fullUri) {
67
- throw new Error("dt-common-device: POSTGRESQL_DB_URI must be set in environment variables or .env file");
67
+ throw new Error("dt-common-device: ADMIN_DB_URI must be set in environment variables or .env file");
68
68
  }
69
- const url = new URL(fullUri);
70
- const baseUri = `${url.protocol}//${url.username}:${url.password}@${url.hostname}${url.port ? `:${url.port}` : ""}/`;
71
- const dbName = url.pathname.replace(/^\//, "").split("?")[0];
72
- const params = url.search || "";
73
- return { baseUri, dbName, params };
69
+ return fullUri;
74
70
  }
75
71
  /**
76
72
  * Returns the Redis DB Host and port from environment variables.
package/dist/db/db.js CHANGED
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getPostgresClient = getPostgresClient;
4
4
  const pg_1 = require("pg");
5
5
  const config_1 = require("../config/config");
6
- const { baseUri, dbName, params } = (0, config_1.getPostgresDbUri)();
6
+ const URI = (0, config_1.getPostgresDbUri)();
7
7
  let pool = null;
8
8
  function getPostgresClient() {
9
9
  if (!pool) {
10
10
  pool = new pg_1.Pool({
11
- connectionString: `${baseUri}${dbName}${params}`,
11
+ connectionString: URI,
12
12
  });
13
13
  }
14
14
  return pool;
@@ -7,7 +7,15 @@ class DeviceFactory {
7
7
  this.localDeviceService = new Device_service_1.LocalDeviceService();
8
8
  }
9
9
  async getDevice(deviceId) {
10
- return await this.localDeviceService.getDevice(deviceId);
10
+ try {
11
+ return await this.localDeviceService.getDevice(deviceId);
12
+ }
13
+ catch (error) {
14
+ // Log the error for debugging purposes
15
+ console.error(`DeviceFactory: Failed to get device ${deviceId}:`, error);
16
+ // Re-throw the error with additional context
17
+ throw new Error(`DeviceFactory: Unable to retrieve device ${deviceId}. ${error instanceof Error ? error.message : "Unknown error occurred"}`);
18
+ }
11
19
  }
12
20
  }
13
21
  exports.DeviceFactory = DeviceFactory;
@@ -13,11 +13,11 @@ export declare class LocalDeviceService {
13
13
  updateDevice(deviceId: string, body: any): Promise<any>;
14
14
  deleteDevice(deviceId: string): Promise<any>;
15
15
  getState(deviceId: string): Promise<import("axios").AxiosResponse<any, any>>;
16
- setState(deviceId: string, state: any): Promise<void>;
16
+ setState(deviceId: string, newState: any): Promise<void>;
17
17
  getStatus(deviceId: string): Promise<import("axios").AxiosResponse<any, any>>;
18
- setStatus(deviceId: string, status: any): Promise<void>;
18
+ setStatus(deviceId: string, newStatus: any): Promise<void>;
19
19
  getBatteryLevel(deviceId: string): Promise<import("axios").AxiosResponse<any, any>>;
20
- setBatteryLevel(deviceId: string, batteryLevel: number): Promise<void>;
20
+ setBatteryLevel(deviceId: string, newBatteryLevel: any): Promise<void>;
21
21
  getMetaData(deviceId: string): Promise<import("axios").AxiosResponse<any, any>>;
22
22
  setMetaData(deviceId: string, metaData: Record<string, any>): Promise<void>;
23
23
  getDeviceByZone(zoneId: string): Promise<any>;
@@ -38,7 +38,14 @@ class LocalDeviceService {
38
38
  await (0, dt_audit_library_1.publishAudit)(payload);
39
39
  }
40
40
  async getDevice(deviceId, withHubDetails = false) {
41
- return await axios_1.default.get(`${this.baseUrl}/devices/${deviceId}?withHubDetails=${withHubDetails} `);
41
+ try {
42
+ const response = await axios_1.default.get(`${this.baseUrl}/devices/${deviceId}?withHubDetails=${withHubDetails} `);
43
+ return response.data;
44
+ }
45
+ catch (error) {
46
+ console.log(error);
47
+ throw new Error(`Failed to get device: ${error.message}`);
48
+ }
42
49
  }
43
50
  async getDevices(deviceIds, withHubDetails = false) {
44
51
  return await axios_1.default.get(`${this.baseUrl}/devices`, {
@@ -74,26 +81,28 @@ class LocalDeviceService {
74
81
  async getState(deviceId) {
75
82
  return await axios_1.default.get(`${this.baseUrl}/devices/${deviceId}/state`);
76
83
  }
77
- async setState(deviceId, state) {
84
+ async setState(deviceId, newState) {
78
85
  // If old state and new state are different
79
- const oldState = await this.getState(deviceId);
80
- if (!(0, lodash_1.isEqual)(oldState?.data?.state, state)) {
81
- return await this.eventHandler.onStateChange(deviceId, state);
86
+ const oldState = (await this.getState(deviceId))?.data?.state || {};
87
+ const changedKeys = Object.keys(newState).filter((key) => !(0, lodash_1.isEqual)(oldState[key], newState[key]));
88
+ if (changedKeys.length > 0) {
89
+ return await this.eventHandler.onStateChange(deviceId, newState);
82
90
  }
83
91
  }
84
92
  async getStatus(deviceId) {
85
93
  return await axios_1.default.get(`${this.baseUrl}/devices/${deviceId}/status`);
86
94
  }
87
- async setStatus(deviceId, status) {
95
+ async setStatus(deviceId, newStatus) {
88
96
  // If old status and new status are different
89
97
  const oldStatus = await this.getStatus(deviceId);
90
- if (!(0, lodash_1.isEqual)(oldStatus, status)) {
91
- return await this.eventHandler.onStatusChange(deviceId, status);
98
+ const changedKeys = Object.keys(newStatus).filter((key) => !(0, lodash_1.isEqual)(oldStatus?.data?.[key], newStatus?.[key]));
99
+ if (changedKeys.length > 0) {
100
+ return await this.eventHandler.onStatusChange(deviceId, newStatus);
92
101
  }
93
102
  // If both old and new status are offline, check the time difference between the last offline status and current time
94
103
  if (oldStatus?.data?.online === false &&
95
104
  oldStatus?.data?.lastUpdated &&
96
- status?.online === false) {
105
+ newStatus?.online === false) {
97
106
  const lastOfflineTime = new Date(oldStatus?.data?.lastUpdated).getTime();
98
107
  const currentTime = Date.now();
99
108
  const timeDifference = currentTime - lastOfflineTime;
@@ -106,14 +115,15 @@ class LocalDeviceService {
106
115
  async getBatteryLevel(deviceId) {
107
116
  return await axios_1.default.get(`${this.baseUrl}/devices/${deviceId}/battery-level`);
108
117
  }
109
- async setBatteryLevel(deviceId, batteryLevel) {
118
+ async setBatteryLevel(deviceId, newBatteryLevel) {
110
119
  // If old battery level and new battery level are different
111
120
  const oldBatteryLevel = await this.getBatteryLevel(deviceId);
112
- if (!(0, lodash_1.isEqual)(oldBatteryLevel?.data?.value, batteryLevel)) {
113
- this.eventHandler.onBatteryLevelChange(deviceId, batteryLevel);
121
+ const changedKeys = Object.keys(newBatteryLevel).filter((key) => !(0, lodash_1.isEqual)(oldBatteryLevel?.data?.[key], newBatteryLevel?.[key]));
122
+ if (changedKeys.length > 0) {
123
+ return await this.eventHandler.onBatteryLevelChange(deviceId, newBatteryLevel);
114
124
  }
115
125
  // If current battery level is less than 20% and lsat updated time is more than 8 hours, raise an energy alert
116
- if (batteryLevel < 20 &&
126
+ if (newBatteryLevel?.value < 20 &&
117
127
  oldBatteryLevel?.data?.value < 20 &&
118
128
  new Date(oldBatteryLevel?.data?.lastUpdated).getTime() <
119
129
  Date.now() - 1000 * 60 * 60 * 8) {
package/package.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "name": "dt-common-device",
3
- "version": "1.0.17",
3
+ "version": "1.0.19",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {
7
- "build": "tsc",
7
+ "build": "tsc ",
8
+ "patch": "npm version patch && npm run build",
9
+ "minor": "npm version minor && npm run build",
10
+ "major": "npm version major && npm run build",
8
11
  "security:audit": "npm audit --audit-level=moderate",
9
12
  "security:fix": "npm audit fix",
10
13
  "security:check": "npm audit && npm outdated",
@@ -68,24 +68,14 @@ export function ensureAuditInitialized() {
68
68
  * Returns the PostgreSQL DB URI from environment variables.
69
69
  * Throws an error if not set.
70
70
  */
71
- export function getPostgresDbUri(): {
72
- baseUri: string;
73
- dbName: string;
74
- params: string;
75
- } {
76
- const fullUri = process.env.DATABASE_URL;
71
+ export function getPostgresDbUri(): string {
72
+ const fullUri = process.env.ADMIN_DB_URI;
77
73
  if (!fullUri) {
78
74
  throw new Error(
79
- "dt-common-device: POSTGRESQL_DB_URI must be set in environment variables or .env file"
75
+ "dt-common-device: ADMIN_DB_URI must be set in environment variables or .env file"
80
76
  );
81
77
  }
82
- const url = new URL(fullUri);
83
- const baseUri = `${url.protocol}//${url.username}:${url.password}@${
84
- url.hostname
85
- }${url.port ? `:${url.port}` : ""}/`;
86
- const dbName = url.pathname.replace(/^\//, "").split("?")[0];
87
- const params = url.search || "";
88
- return { baseUri, dbName, params };
78
+ return fullUri;
89
79
  }
90
80
 
91
81
  /**
package/src/db/db.ts CHANGED
@@ -1,14 +1,14 @@
1
1
  import { Pool } from "pg";
2
2
  import { getPostgresDbUri } from "../config/config";
3
3
 
4
- const { baseUri, dbName, params } = getPostgresDbUri();
4
+ const URI = getPostgresDbUri();
5
5
 
6
6
  let pool: Pool | null = null;
7
7
 
8
8
  export function getPostgresClient() {
9
9
  if (!pool) {
10
10
  pool = new Pool({
11
- connectionString: `${baseUri}${dbName}${params}`,
11
+ connectionString: URI,
12
12
  });
13
13
  }
14
14
  return pool;
@@ -9,6 +9,18 @@ export class DeviceFactory {
9
9
  }
10
10
 
11
11
  async getDevice(deviceId: string): Promise<IDevice> {
12
- return await this.localDeviceService.getDevice(deviceId);
12
+ try {
13
+ return await this.localDeviceService.getDevice(deviceId);
14
+ } catch (error) {
15
+ // Log the error for debugging purposes
16
+ console.error(`DeviceFactory: Failed to get device ${deviceId}:`, error);
17
+
18
+ // Re-throw the error with additional context
19
+ throw new Error(
20
+ `DeviceFactory: Unable to retrieve device ${deviceId}. ${
21
+ error instanceof Error ? error.message : "Unknown error occurred"
22
+ }`
23
+ );
24
+ }
13
25
  }
14
26
  }
@@ -10,7 +10,7 @@ import { publishAudit } from "dt-audit-library";
10
10
  import { EventHandler } from "../handler/EventHandler";
11
11
  import { isEqual } from "lodash";
12
12
  import { AlertService } from "./Alert.service";
13
- import { getRedisClient, getPostgresClient } from "../../../db";
13
+ import { getPostgresClient } from "../../../db";
14
14
 
15
15
  export class LocalDeviceService {
16
16
  private readonly baseUrl: string;
@@ -50,9 +50,15 @@ export class LocalDeviceService {
50
50
  deviceId: string,
51
51
  withHubDetails: boolean = false
52
52
  ): Promise<IDevice> {
53
- return await axios.get(
54
- `${this.baseUrl}/devices/${deviceId}?withHubDetails=${withHubDetails} `
55
- );
53
+ try {
54
+ const response = await axios.get(
55
+ `${this.baseUrl}/devices/${deviceId}?withHubDetails=${withHubDetails} `
56
+ );
57
+ return response.data;
58
+ } catch (error: any) {
59
+ console.log(error);
60
+ throw new Error(`Failed to get device: ${error.message}`);
61
+ }
56
62
  }
57
63
 
58
64
  async getDevices(
@@ -108,11 +114,14 @@ export class LocalDeviceService {
108
114
  return await axios.get(`${this.baseUrl}/devices/${deviceId}/state`);
109
115
  }
110
116
 
111
- async setState(deviceId: string, state: any) {
117
+ async setState(deviceId: string, newState: any) {
112
118
  // If old state and new state are different
113
- const oldState = await this.getState(deviceId);
114
- if (!isEqual(oldState?.data?.state, state)) {
115
- return await this.eventHandler.onStateChange(deviceId, state);
119
+ const oldState = (await this.getState(deviceId))?.data?.state || {};
120
+ const changedKeys = Object.keys(newState).filter(
121
+ (key) => !isEqual(oldState[key], newState[key])
122
+ );
123
+ if (changedKeys.length > 0) {
124
+ return await this.eventHandler.onStateChange(deviceId, newState);
116
125
  }
117
126
  }
118
127
 
@@ -120,17 +129,20 @@ export class LocalDeviceService {
120
129
  return await axios.get(`${this.baseUrl}/devices/${deviceId}/status`);
121
130
  }
122
131
 
123
- async setStatus(deviceId: string, status: any) {
132
+ async setStatus(deviceId: string, newStatus: any) {
124
133
  // If old status and new status are different
125
134
  const oldStatus = await this.getStatus(deviceId);
126
- if (!isEqual(oldStatus, status)) {
127
- return await this.eventHandler.onStatusChange(deviceId, status);
135
+ const changedKeys = Object.keys(newStatus).filter(
136
+ (key) => !isEqual(oldStatus?.data?.[key], newStatus?.[key])
137
+ );
138
+ if (changedKeys.length > 0) {
139
+ return await this.eventHandler.onStatusChange(deviceId, newStatus);
128
140
  }
129
141
  // If both old and new status are offline, check the time difference between the last offline status and current time
130
142
  if (
131
143
  oldStatus?.data?.online === false &&
132
144
  oldStatus?.data?.lastUpdated &&
133
- status?.online === false
145
+ newStatus?.online === false
134
146
  ) {
135
147
  const lastOfflineTime = new Date(oldStatus?.data?.lastUpdated).getTime();
136
148
  const currentTime = Date.now();
@@ -145,15 +157,21 @@ export class LocalDeviceService {
145
157
  async getBatteryLevel(deviceId: string) {
146
158
  return await axios.get(`${this.baseUrl}/devices/${deviceId}/battery-level`);
147
159
  }
148
- async setBatteryLevel(deviceId: string, batteryLevel: number) {
160
+ async setBatteryLevel(deviceId: string, newBatteryLevel: any) {
149
161
  // If old battery level and new battery level are different
150
162
  const oldBatteryLevel = await this.getBatteryLevel(deviceId);
151
- if (!isEqual(oldBatteryLevel?.data?.value, batteryLevel)) {
152
- this.eventHandler.onBatteryLevelChange(deviceId, batteryLevel);
163
+ const changedKeys = Object.keys(newBatteryLevel).filter(
164
+ (key) => !isEqual(oldBatteryLevel?.data?.[key], newBatteryLevel?.[key])
165
+ );
166
+ if (changedKeys.length > 0) {
167
+ return await this.eventHandler.onBatteryLevelChange(
168
+ deviceId,
169
+ newBatteryLevel
170
+ );
153
171
  }
154
172
  // If current battery level is less than 20% and lsat updated time is more than 8 hours, raise an energy alert
155
173
  if (
156
- batteryLevel < 20 &&
174
+ newBatteryLevel?.value < 20 &&
157
175
  oldBatteryLevel?.data?.value < 20 &&
158
176
  new Date(oldBatteryLevel?.data?.lastUpdated).getTime() <
159
177
  Date.now() - 1000 * 60 * 60 * 8
@@ -1,101 +0,0 @@
1
- import { IConnection, IConnectionConnectParams, IDevice, IDeviceAccountResponse, IDeviceCommand, ISmartthingsDeviceCommand, ICommandResponse } from "./types";
2
- /**
3
- * Class interface for device cloud operations and connection management
4
- */
5
- export interface IDeviceCloudService {
6
- /**
7
- * Creates a new connection for device management
8
- * @param data - Connection data
9
- * @param userId - User identifier
10
- * @returns Promise with connection result
11
- */
12
- createConnection(data: IConnection, userId: string): Promise<any>;
13
- /**
14
- * Gets device account information for a connection
15
- * @param connection - Connection object
16
- * @returns Promise with device account response
17
- */
18
- getDeviceAccount(connection: IConnection): Promise<IDeviceAccountResponse>;
19
- /**
20
- * Gets all devices for a connection
21
- * @param connection - Connection object
22
- * @returns Promise with array of devices
23
- */
24
- getDevices(connection: IConnection): Promise<IDevice[]>;
25
- /**
26
- * Filters devices based on connection and device list
27
- * @param connection - Connection object
28
- * @param devices - Array of devices to filter
29
- * @returns Promise with filtered devices
30
- */
31
- filterDevices(connection: IConnection, devices: any[]): Promise<IDevice[]>;
32
- /**
33
- * Connects to a device service
34
- * @param connection - Connection object
35
- * @param connectionConnect - Connection parameters
36
- * @returns Promise with connection result
37
- */
38
- connect(connection: IConnection, connectionConnect: IConnectionConnectParams): Promise<any>;
39
- }
40
- /**
41
- * Interface for device command operations
42
- */
43
- export interface IDeviceCommandManager {
44
- /**
45
- * Invokes a command on a device
46
- * @param command - Device command to execute
47
- * @param deviceId - Device identifier
48
- * @returns Promise with command response
49
- */
50
- invokeCommand(command: IDeviceCommand, deviceId: string): Promise<ICommandResponse>;
51
- }
52
- /**
53
- * Interface for SmartThings specific device command operations
54
- */
55
- export interface ISmartthingsDeviceCommandManager extends IDeviceCommandManager {
56
- /**
57
- * Performs device action for SmartThings
58
- * @param commands - Array of SmartThings device commands
59
- * @param deviceId - Device identifier
60
- * @param accessToken - Access token for authentication
61
- * @returns Promise with action result
62
- */
63
- performDeviceAction(commands: ISmartthingsDeviceCommand[], deviceId: string, accessToken: string): Promise<any>;
64
- /**
65
- * Gets device status for SmartThings
66
- * @param deviceId - Device identifier
67
- * @param accessToken - Access token for authentication
68
- * @returns Promise with device status
69
- */
70
- getDeviceStatus(deviceId: string, accessToken: string): Promise<any>;
71
- /**
72
- * Gets device lock status for SmartThings
73
- * @param deviceId - Device identifier
74
- * @param accessToken - Access token for authentication
75
- * @returns Promise with lock status
76
- */
77
- getDeviceLockStatus(deviceId: string, accessToken: string): Promise<any>;
78
- }
79
- /**
80
- * Interface for device command factory
81
- */
82
- export interface IDeviceCommandManagerFactory {
83
- /**
84
- * Creates a device command manager for a specific connection provider
85
- * @param connectionProvider - Connection provider type
86
- * @param connection - Connection object
87
- * @returns Device command manager instance
88
- */
89
- createDeviceCommandManager(connectionProvider: string, connection: IConnection): IDeviceCommandManager;
90
- }
91
- /**
92
- * Interface for device command classes
93
- */
94
- export interface IDeviceCommandClass {
95
- /**
96
- * Creates a SmartThings device command from a generic device command
97
- * @param deviceCommand - Generic device command
98
- * @returns SmartThings device command
99
- */
100
- fromDeviceCommand(deviceCommand: IDeviceCommand): ISmartthingsDeviceCommand;
101
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- // Device Cloud Class Interface for DeviceThread Common Library
3
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,7 +0,0 @@
1
- import { IConnection, IConnectionConnectParams, IDeviceAccountResponse } from "../types";
2
- export interface IDeviceConnectionService {
3
- createConnection(data: IConnection, userId: string): Promise<any>;
4
- getDeviceAccount(connection: IConnection): Promise<IDeviceAccountResponse>;
5
- getDevices(connection: IConnection): Promise<any>;
6
- connect(connection: IConnection, connectionConnect: IConnectionConnectParams): Promise<any>;
7
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- // Device Cloud Class Interface for DeviceThread Common Library
3
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,9 +0,0 @@
1
- import { IConnection } from "../types";
2
- export interface IDeviceService {
3
- getDevices(connection: IConnection): Promise<Record<string, any>[]>;
4
- getDevice(connectionId: string, deviceId: string): Promise<Record<string, any>>;
5
- getStatus(connectionId: string, deviceId: string): Promise<string | null>;
6
- getState(deviceId: string): Promise<Record<string, any>>;
7
- getGateways(connectionId: string): Promise<any[] | null>;
8
- getGatewayDetails(connectionId: string, gatewayId: string): Promise<any>;
9
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,39 +0,0 @@
1
- import { IDeviceService } from "../interfaces";
2
- import { IConnection, IDevice } from "../types";
3
- export declare abstract class DeviceService implements IDeviceService {
4
- deviceId: string;
5
- propertyId: string;
6
- name: string;
7
- hubId: string[];
8
- deviceType: {
9
- id: string;
10
- type: string;
11
- };
12
- status: {
13
- online: boolean;
14
- error?: {
15
- type?: string;
16
- message?: string;
17
- };
18
- lastUpdated?: string;
19
- };
20
- state?: Record<string, any>;
21
- metaData?: Record<string, any>;
22
- zone?: {
23
- id: string;
24
- name: string;
25
- zoneType: string;
26
- parentZone?: {
27
- id: string;
28
- name: string;
29
- zoneType: string;
30
- };
31
- };
32
- connection: IConnection;
33
- constructor(device: IDevice);
34
- abstract getDevices(connection: IConnection): Promise<Record<string, any>[]>;
35
- abstract getDevice(connectionId: string, deviceId: string): Promise<any>;
36
- abstract getBattery(deviceId: string): Promise<number | string>;
37
- abstract getStatus(connectionId: string, deviceId: string): Promise<string>;
38
- abstract getState(deviceId: string): Promise<string>;
39
- }
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DeviceService = void 0;
4
- class DeviceService {
5
- constructor(device) {
6
- Object.assign(this, device);
7
- }
8
- }
9
- exports.DeviceService = DeviceService;
@@ -1,42 +0,0 @@
1
- import { IDeviceCloudService } from "../interface";
2
- import { IConnection, IDevice, IDeviceAccountResponse, IConnectionConnectParams } from "../types";
3
- /**
4
- * Device Cloud Service Class
5
- * Implements IDeviceCloudService interface with empty implementations
6
- * Implementation will be provided by the consuming project
7
- */
8
- export declare class DeviceCloudService implements IDeviceCloudService {
9
- /**
10
- * Creates a new connection for device management
11
- * @param data - Connection data
12
- * @param userId - User identifier
13
- * @returns Promise with connection result
14
- */
15
- createConnection(data: IConnection, userId: string): Promise<any>;
16
- /**
17
- * Gets device account information for a connection
18
- * @param connection - Connection object
19
- * @returns Promise with device account response
20
- */
21
- getDeviceAccount(connection: IConnection): Promise<IDeviceAccountResponse>;
22
- /**
23
- * Gets all devices for a connection
24
- * @param connection - Connection object
25
- * @returns Promise with array of devices
26
- */
27
- getDevices(connection: IConnection): Promise<IDevice[]>;
28
- /**
29
- * Filters devices based on connection and device list
30
- * @param connection - Connection object
31
- * @param devices - Array of devices to filter
32
- * @returns Promise with filtered devices
33
- */
34
- filterDevices(connection: IConnection, devices: any[]): Promise<IDevice[]>;
35
- /**
36
- * Connects to a device service
37
- * @param connection - Connection object
38
- * @param connectionConnect - Connection parameters
39
- * @returns Promise with connection result
40
- */
41
- connect(connection: IConnection, connectionConnect: IConnectionConnectParams): Promise<any>;
42
- }
@@ -1,59 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DeviceCloudService = void 0;
4
- /**
5
- * Device Cloud Service Class
6
- * Implements IDeviceCloudService interface with empty implementations
7
- * Implementation will be provided by the consuming project
8
- */
9
- class DeviceCloudService {
10
- /**
11
- * Creates a new connection for device management
12
- * @param data - Connection data
13
- * @param userId - User identifier
14
- * @returns Promise with connection result
15
- */
16
- async createConnection(data, userId) {
17
- // Implementation will be provided by the consuming project
18
- throw new Error("createConnection method not implemented");
19
- }
20
- /**
21
- * Gets device account information for a connection
22
- * @param connection - Connection object
23
- * @returns Promise with device account response
24
- */
25
- async getDeviceAccount(connection) {
26
- // Implementation will be provided by the consuming project
27
- throw new Error("getDeviceAccount method not implemented");
28
- }
29
- /**
30
- * Gets all devices for a connection
31
- * @param connection - Connection object
32
- * @returns Promise with array of devices
33
- */
34
- async getDevices(connection) {
35
- // Implementation will be provided by the consuming project
36
- throw new Error("getDevices method not implemented");
37
- }
38
- /**
39
- * Filters devices based on connection and device list
40
- * @param connection - Connection object
41
- * @param devices - Array of devices to filter
42
- * @returns Promise with filtered devices
43
- */
44
- async filterDevices(connection, devices) {
45
- // Implementation will be provided by the consuming project
46
- throw new Error("filterDevices method not implemented");
47
- }
48
- /**
49
- * Connects to a device service
50
- * @param connection - Connection object
51
- * @param connectionConnect - Connection parameters
52
- * @returns Promise with connection result
53
- */
54
- async connect(connection, connectionConnect) {
55
- // Implementation will be provided by the consuming project
56
- throw new Error("connect method not implemented");
57
- }
58
- }
59
- exports.DeviceCloudService = DeviceCloudService;
@@ -1,3 +0,0 @@
1
- export declare abstract class DeviceHubService {
2
- abstract getHubs(): Promise<any>;
3
- }
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DeviceHubService = void 0;
4
- class DeviceHubService {
5
- }
6
- exports.DeviceHubService = DeviceHubService;
@@ -1,25 +0,0 @@
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
- }
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HubService = void 0;
4
- class HubService {
5
- constructor(hub) {
6
- Object.assign(this, hub);
7
- }
8
- }
9
- exports.HubService = HubService;
@@ -1,38 +0,0 @@
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
- }
@@ -1,52 +0,0 @@
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;
@@ -1,4 +0,0 @@
1
- export * from "./cloud/interface";
2
- export * from "./cloud/types";
3
- export type { IConnection, IConnectionConnectParams, IDevice, IDeviceAccountResponse, } from "./cloud/types";
4
- export type { IDeviceCloudService } from "./cloud/interface";
@@ -1,20 +0,0 @@
1
- "use strict";
2
- // DeviceThread Common Library - Device Module
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
16
- };
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- // Export cloud device interfaces
19
- __exportStar(require("./cloud/interface"), exports);
20
- __exportStar(require("./cloud/types"), exports);
File without changes
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,11 +0,0 @@
1
- import { IHubCreateParams } from "../interfaces";
2
- export declare class DeviceHubService {
3
- private readonly baseUrl;
4
- constructor();
5
- addHub(body: IHubCreateParams): Promise<any>;
6
- getHubs(hubIds: string[]): Promise<any>;
7
- getHub(hubId: string): Promise<any>;
8
- updateHub(hubId: string, body: any): Promise<any>;
9
- deleteHub(hubId: string): Promise<any>;
10
- deleteAllHubs(hubIds: string[]): Promise<any>;
11
- }
@@ -1,40 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DeviceHubService = void 0;
7
- const axios_1 = __importDefault(require("axios"));
8
- const config_1 = require("../../../config/config");
9
- class DeviceHubService {
10
- constructor() {
11
- const { DEVICE_SERVICE } = (0, config_1.getConfig)();
12
- if (!DEVICE_SERVICE) {
13
- throw new Error("DEVICE_SERVICE is not configured. Call initialize() first with DEVICE_SERVICE.");
14
- }
15
- this.baseUrl = DEVICE_SERVICE;
16
- }
17
- async addHub(body) {
18
- return await axios_1.default.post(`${this.baseUrl}/devices/hubs`, body);
19
- }
20
- //get hubs takes an array of hub ids as query params
21
- async getHubs(hubIds) {
22
- const query = hubIds && hubIds.length ? `?ids=${hubIds.join(",")}` : "";
23
- return await axios_1.default.get(`${this.baseUrl}/devices/hubs${query}`);
24
- }
25
- //get hub takes a hub id in params
26
- async getHub(hubId) {
27
- return await axios_1.default.get(`${this.baseUrl}/devices/hubs/${hubId}`);
28
- }
29
- async updateHub(hubId, body) {
30
- return await axios_1.default.put(`${this.baseUrl}/devices/hubs/${hubId}`, body);
31
- }
32
- async deleteHub(hubId) {
33
- return await axios_1.default.delete(`${this.baseUrl}/devices/hubs/${hubId}`);
34
- }
35
- async deleteAllHubs(hubIds) {
36
- const query = hubIds.length ? `?ids=${hubIds.join(",")}` : "";
37
- return await axios_1.default.delete(`${this.baseUrl}/devices/hubs${query}`);
38
- }
39
- }
40
- exports.DeviceHubService = DeviceHubService;