trane-thermostat-api 1.0.0 → 1.0.2

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 (42) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +11 -20
  3. package/dist/client/auth.d.ts.map +1 -1
  4. package/dist/client/auth.js +27 -13
  5. package/dist/client/auth.js.map +1 -1
  6. package/dist/client/nexia-client.d.ts +3 -3
  7. package/dist/client/trane-client.d.ts +49 -0
  8. package/dist/client/trane-client.d.ts.map +1 -0
  9. package/dist/client/trane-client.js +332 -0
  10. package/dist/client/trane-client.js.map +1 -0
  11. package/dist/devices/nexia-thermostat.d.ts +2 -2
  12. package/dist/devices/nexia-zone.d.ts +3 -3
  13. package/dist/devices/trane-automation.d.ts +15 -0
  14. package/dist/devices/trane-automation.d.ts.map +1 -0
  15. package/dist/devices/trane-automation.js +39 -0
  16. package/dist/devices/trane-automation.js.map +1 -0
  17. package/dist/devices/trane-sensor.d.ts +34 -0
  18. package/dist/devices/trane-sensor.d.ts.map +1 -0
  19. package/dist/devices/trane-sensor.js +152 -0
  20. package/dist/devices/trane-sensor.js.map +1 -0
  21. package/dist/devices/trane-thermostat.d.ts +74 -0
  22. package/dist/devices/trane-thermostat.d.ts.map +1 -0
  23. package/dist/devices/trane-thermostat.js +457 -0
  24. package/dist/devices/trane-thermostat.js.map +1 -0
  25. package/dist/devices/trane-zone.d.ts +61 -0
  26. package/dist/devices/trane-zone.d.ts.map +1 -0
  27. package/dist/devices/trane-zone.js +370 -0
  28. package/dist/devices/trane-zone.js.map +1 -0
  29. package/dist/index.d.ts +5 -5
  30. package/dist/index.js +11 -11
  31. package/dist/types/api.d.ts +36 -6
  32. package/dist/types/api.d.ts.map +1 -1
  33. package/dist/types/constants.d.ts +2 -5
  34. package/dist/types/constants.d.ts.map +1 -1
  35. package/dist/types/constants.js +3 -6
  36. package/dist/types/constants.js.map +1 -1
  37. package/dist/types/interfaces.d.ts +23 -23
  38. package/dist/utils/errors.d.ts +13 -13
  39. package/dist/utils/errors.js +21 -21
  40. package/dist/utils/validation.d.ts +1 -1
  41. package/dist/utils/validation.js +3 -3
  42. package/package.json +4 -8
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Spencer S
3
+ Copyright (c) 2026 sbs44
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
- # Nexia Homebridge Library
1
+ # Trane Thermostat API
2
2
 
3
- A TypeScript/Node.js library for controlling Nexia/Trane/American Standard thermostats, specifically designed for Homebridge integration.
3
+ A TypeScript/Node.js library for controlling Trane thermostats via the Trane Home API.
4
4
 
5
5
  ## Overview
6
6
 
7
- This library provides a complete rewrite of the Python Nexia library in TypeScript, offering:
7
+ This library provides:
8
8
 
9
9
  - **Full TypeScript support** with comprehensive type definitions
10
10
  - **Homebridge-optimized** architecture for seamless HomeKit integration
@@ -15,9 +15,7 @@ This library provides a complete rewrite of the Python Nexia library in TypeScri
15
15
 
16
16
  ## Supported Devices
17
17
 
18
- - **Nexia Thermostats**: XL950, XL1050, XL824, UX360
19
- - **Trane Thermostats**: Compatible with Nexia API
20
- - **American Standard**: Compatible with Nexia API
18
+ - **Trane Thermostats**: XL850, XL950, XL1050, XL824, and other Trane Home compatible models
21
19
 
22
20
  ## Features
23
21
 
@@ -45,7 +43,6 @@ This library provides a complete rewrite of the Python Nexia library in TypeScri
45
43
  - ETag-based caching for efficient API usage
46
44
  - Automatic session management and re-authentication
47
45
  - Rate-limited login attempts to prevent account lockout
48
- - Brand-specific URL handling (Nexia, Trane, American Standard)
49
46
  - Comprehensive device capability detection
50
47
 
51
48
  ## Installation
@@ -57,12 +54,11 @@ npm install trane-thermostat-api
57
54
  ## Quick Start
58
55
 
59
56
  ```typescript
60
- import { NexiaClient, BrandType } from 'trane-thermostat-api';
57
+ import { TraneClient } from 'trane-thermostat-api';
61
58
 
62
- const client = new NexiaClient({
59
+ const client = new TraneClient({
63
60
  username: 'your-email@example.com',
64
- password: 'your-password',
65
- brand: BrandType.NEXIA
61
+ password: 'your-password'
66
62
  });
67
63
 
68
64
  // Authenticate and discover devices
@@ -85,16 +81,16 @@ await zone.setTemperatures({
85
81
 
86
82
  ### Core Classes
87
83
 
88
- #### NexiaClient
84
+ #### TraneClient
89
85
  Main HTTP client for API communication and device discovery.
90
86
 
91
- #### NexiaThermostat
87
+ #### TraneThermostat
92
88
  Represents a physical thermostat with full feature detection and control.
93
89
 
94
- #### NexiaZone
90
+ #### TraneZone
95
91
  Represents a zone/room within a thermostat with independent temperature control.
96
92
 
97
- #### NexiaSensor
93
+ #### TraneSensor
98
94
  RoomIQ temperature and humidity sensor with battery monitoring.
99
95
 
100
96
  ## Homebridge Integration
@@ -127,7 +123,6 @@ The test suite includes:
127
123
  - Mock HTTP responses for API testing
128
124
  - Validation logic testing
129
125
  - Error handling scenarios
130
- - Integration tests with real API endpoints
131
126
 
132
127
  ```bash
133
128
  npm run test:coverage
@@ -144,7 +139,3 @@ npm run test:coverage
144
139
  ## License
145
140
 
146
141
  MIT License - see LICENSE file for details.
147
-
148
- ## Acknowledgments
149
-
150
- Based on the original Python Nexia library architecture, rewritten for modern TypeScript/Node.js environments with Homebridge-specific optimizations.
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/client/auth.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAgC,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAgD,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAUjD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,SAAS,CAAY;gBAEjB,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU;IAazC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC;IA6CzC,cAAc,IAAI,OAAO;IAYnB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBrC,SAAS,IAAI,MAAM,GAAG,IAAI;IAO1B,WAAW,IAAI,MAAM,GAAG,IAAI;IAO5B,aAAa,IAAI,MAAM;IAOvB,mBAAmB,IAAI,OAAO;IAOxB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAYvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,cAAc,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IA8C9E,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,gBAAgB;YAaV,SAAS;YA4BT,SAAS;YAiBT,qBAAqB;IAQnC,OAAO,CAAC,cAAc;YA8BR,YAAY;IAuB1B,OAAO,CAAC,kBAAkB;IAQnB,oBAAoB,IAAI,IAAI;CAMpC"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/client/auth.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAgC,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAgD,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAUjD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,SAAS,CAAY;gBAEjB,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU;IAazC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC;IA6CzC,cAAc,IAAI,OAAO;IAYnB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBrC,SAAS,IAAI,MAAM,GAAG,IAAI;IAO1B,WAAW,IAAI,MAAM,GAAG,IAAI;IAO5B,aAAa,IAAI,MAAM;IAOvB,mBAAmB,IAAI,OAAO;IAOxB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAYvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,cAAc,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAmE9E,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,gBAAgB;YAaV,SAAS;YA4BT,SAAS;YAiBT,qBAAqB;IAQnC,OAAO,CAAC,cAAc;YA8BR,YAAY;IAuB1B,OAAO,CAAC,kBAAkB;IAQnB,oBAAoB,IAAI,IAAI;CAMpC"}
@@ -29,17 +29,17 @@ class AuthManager {
29
29
  this.checkRateLimit();
30
30
  try {
31
31
  const response = await this.performLogin();
32
- if (response.success && response.api_key && response.mobile_id) {
33
- this.authState.apiKey = response.api_key;
34
- this.authState.mobileId = response.mobile_id;
32
+ if (response.success && response.result?.api_key && response.result?.mobile_id) {
33
+ this.authState.apiKey = response.result.api_key;
34
+ this.authState.mobileId = String(response.result.mobile_id);
35
35
  this.authState.loginAttempts = 0;
36
36
  this.authState.lastLoginAttempt = Date.now();
37
37
  this.authState.sessionExpiry = Date.now() + (24 * 60 * 60 * 1000);
38
- this.httpClient.setAuthHeaders(response.api_key, response.mobile_id, this.config.brand);
38
+ this.httpClient.setAuthHeaders(response.result.api_key, String(response.result.mobile_id), this.config.brand);
39
39
  await this.saveState();
40
40
  return {
41
- apiKey: response.api_key,
42
- mobileId: response.mobile_id,
41
+ apiKey: response.result.api_key,
42
+ mobileId: String(response.result.mobile_id),
43
43
  success: true
44
44
  };
45
45
  }
@@ -53,8 +53,8 @@ class AuthManager {
53
53
  if (error instanceof errors_1.AuthenticationError) {
54
54
  throw error;
55
55
  }
56
- const nexiaError = errors_1.ErrorHandler.handle(error);
57
- throw new errors_1.AuthenticationError(`Login failed: ${nexiaError.message}`);
56
+ const traneError = errors_1.ErrorHandler.handle(error);
57
+ throw new errors_1.AuthenticationError(`Login failed: ${traneError.message}`);
58
58
  }
59
59
  }
60
60
  isSessionValid() {
@@ -103,8 +103,22 @@ class AuthManager {
103
103
  }
104
104
  try {
105
105
  const response = await this.httpClient.post(constants_1.API_ENDPOINTS.SESSION, {});
106
- if (response.data.success && response.data.result?.homes) {
107
- const homes = response.data.result.homes;
106
+ if (response.data.success && response.data.result) {
107
+ const result = response.data.result;
108
+ const homes = [];
109
+ if (result._links?.child) {
110
+ for (const child of result._links.child) {
111
+ if (child.type === 'application/vnd.nexia.location+json' && child.data?.id) {
112
+ homes.push({
113
+ house_id: child.data.id,
114
+ name: child.data.name || 'Home'
115
+ });
116
+ }
117
+ }
118
+ }
119
+ if (homes.length === 0 && result.homes) {
120
+ homes.push(...result.homes);
121
+ }
108
122
  if (homes.length === 0) {
109
123
  throw new errors_1.AuthenticationError('No homes found in account');
110
124
  }
@@ -127,8 +141,8 @@ class AuthManager {
127
141
  if (error instanceof errors_1.AuthenticationError) {
128
142
  throw error;
129
143
  }
130
- const nexiaError = errors_1.ErrorHandler.handle(error);
131
- throw new errors_1.AuthenticationError(`Session discovery failed: ${nexiaError.message}`);
144
+ const traneError = errors_1.ErrorHandler.handle(error);
145
+ throw new errors_1.AuthenticationError(`Session discovery failed: ${traneError.message}`);
132
146
  }
133
147
  }
134
148
  validateConfig(config) {
@@ -151,7 +165,7 @@ class AuthManager {
151
165
  return this.config.stateFile;
152
166
  }
153
167
  const homeDir = process.env['HOME'] || process.env['USERPROFILE'] || process.cwd();
154
- return (0, path_1.join)(homeDir, '.nexia', 'auth-state.json');
168
+ return (0, path_1.join)(homeDir, '.trane', 'auth-state.json');
155
169
  }
156
170
  async loadState() {
157
171
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/client/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/client/auth.ts"],"names":[],"mappings":";;;AAKA,2BAAoC;AACpC,+BAAqC;AACrC,+BAAoC;AACpC,kDAA6E;AAG7E,4CAOyB;AAoBzB,MAAa,WAAW;IAMtB,YAAY,UAAsB,EAAE,MAAkB;QACpD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG;YACf,UAAU,EAAE,IAAA,SAAM,GAAE;YACpB,aAAa,EAAE,CAAC;SACjB,CAAC;IACJ,CAAC;IAKM,KAAK,CAAC,UAAU;QACrB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,OAAO,CAAC,IAAI,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IAKM,KAAK,CAAC,YAAY;QAEvB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAE3C,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;gBAE/E,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;gBAChD,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC5D,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC;gBACjC,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC7C,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;gBAGlE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAG9G,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBAEvB,OAAO;oBACL,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO;oBAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;oBAC3C,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,MAAM,IAAI,4BAAmB,CAAC,mCAAmC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAE1B,IAAI,KAAK,YAAY,4BAAmB,EAAE,CAAC;gBACzC,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,UAAU,GAAG,qBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,IAAI,4BAAmB,CAAC,iBAAiB,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAKM,cAAc;QACnB,OAAO,CAAC,CAAC,CACP,IAAI,CAAC,SAAS,CAAC,MAAM;YACrB,IAAI,CAAC,SAAS,CAAC,QAAQ;YACvB,IAAI,CAAC,SAAS,CAAC,aAAa;YAC5B,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAC1C,CAAC;IACJ,CAAC;IAKM,KAAK,CAAC,cAAc;QAEzB,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC;QAGzC,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;QAGnC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAKM,SAAS;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC;IACvC,CAAC;IAKM,WAAW;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC;IACzC,CAAC;IAKM,aAAa;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;IACnC,CAAC;IAKM,mBAAmB;QACxB,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IAChC,CAAC;IAKM,KAAK,CAAC,MAAM;QACjB,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC;QAEzC,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;QACnC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IACzB,CAAC;IAKM,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,SAAS,GAAG;YACf,UAAU,EAAE,IAAA,SAAM,GAAE;YACpB,aAAa,EAAE,CAAC;SACjB,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;QACnC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IACzB,CAAC;IAKM,KAAK,CAAC,cAAc;QACzB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAkB,yBAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAExF,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;gBAKpC,MAAM,KAAK,GAA8C,EAAE,CAAC;gBAE5D,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;oBACzB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;wBACxC,IAAI,KAAK,CAAC,IAAI,KAAK,qCAAqC,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;4BAC3E,KAAK,CAAC,IAAI,CAAC;gCACT,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;gCACvB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM;6BAChC,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;gBAGD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACvC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvB,MAAM,IAAI,4BAAmB,CAAC,2BAA2B,CAAC,CAAC;gBAC7D,CAAC;gBAGD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;oBACrC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;oBACrD,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAEb,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,MAAM,IAAI,4BAAmB,CAC3B,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,iCAAiC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxG,CAAC;gBACJ,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE,WAAW,CAAC,QAAQ;oBAC7B,SAAS,EAAE,WAAW,CAAC,IAAI;iBAC5B,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,4BAAmB,CAAC,wCAAwC,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,4BAAmB,EAAE,CAAC;gBACzC,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,UAAU,GAAG,qBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,IAAI,4BAAmB,CAAC,6BAA6B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAKO,cAAc,CAAC,MAAkB;QACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC5D,MAAM,IAAI,2BAAkB,CAAC,sBAAsB,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC5D,MAAM,IAAI,2BAAkB,CAAC,sBAAsB,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,2BAAkB,CAAC,kBAAkB,MAAM,CAAC,KAAK,qBAAqB,MAAM,CAAC,MAAM,CAAC,qBAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzH,CAAC;QAED,OAAO;YACL,GAAG,MAAM;YACT,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,yBAAa,CAAC,mBAAmB;SACnE,CAAC;IACJ,CAAC;IAKO,gBAAgB;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAC/B,CAAC;QAGD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACnF,OAAO,IAAA,WAAI,EAAC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IACpD,CAAC;IAKO,KAAK,CAAC,SAAS;QACrB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAChE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAc,CAAC;YAGjD,IAAI,KAAK,CAAC,UAAU,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAC7D,IAAI,CAAC,SAAS,GAAG;oBACf,GAAG,IAAI,CAAC,SAAS;oBACjB,GAAG,KAAK;iBACT,CAAC;gBAGF,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC5D,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YAEP,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IAKO,KAAK,CAAC,SAAS;QACrB,IAAI,CAAC;YAEH,MAAM,aAAE,CAAC,KAAK,CAAC,IAAA,cAAO,EAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAGjE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1D,MAAM,aAAE,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QAEpD,CAAC;IACH,CAAC;IAKO,KAAK,CAAC,qBAAqB;QACjC,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,IAAA,SAAM,GAAE,CAAC;QACrC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IACzB,CAAC;IAKO,cAAc;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,IAAI,CAAC,CAAC;QACzD,MAAM,oBAAoB,GAAG,GAAG,GAAG,WAAW,CAAC;QAG/C,IAAI,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC;QACnC,CAAC;QAGD,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,yBAAa,CAAC,kBAAkB,EAAE,CAAC;YACrE,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAChC,MAAM,aAAa,GAAG,QAAQ,GAAG,oBAAoB,CAAC;YAEtD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,uBAAc,CACtB,yCAAyC,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,WAAW,EACpF,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAChC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBAEN,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAKO,KAAK,CAAC,YAAY;QACxB,MAAM,SAAS,GAAiB;YAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC3B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU;YACtC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,UAAW;YACpC,WAAW,EAAE,yBAAa,CAAC,WAAW;YACtC,aAAa,EAAE,KAAK;SACrB,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAgB,yBAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAG7F,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,MAAM,IAAI,4BAAmB,CAAC,qBAAqB,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAKO,kBAAkB;QACxB,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACvE,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/C,CAAC;IAKM,oBAAoB;QACzB,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;IACrC,CAAC;CACF;AA5XD,kCA4XC"}
@@ -1,6 +1,6 @@
1
1
  import { BrandType } from '../types/constants';
2
2
  import { NexiaClientConfig, UpdateOptions } from '../types/api';
3
- import { INexiaClient, INexiaThermostat, INexiaAutomation } from '../types/interfaces';
3
+ import { INexiaClient, ITraneThermostat, INexiaAutomation } from '../types/interfaces';
4
4
  export declare class NexiaClient implements INexiaClient {
5
5
  private readonly httpClient;
6
6
  private readonly authManager;
@@ -16,9 +16,9 @@ export declare class NexiaClient implements INexiaClient {
16
16
  login(): Promise<void>;
17
17
  logout(): Promise<void>;
18
18
  isAuthenticated(): boolean;
19
- getThermostats(): Promise<INexiaThermostat[]>;
19
+ getThermostats(): Promise<ITraneThermostat[]>;
20
20
  getAutomations(): Promise<INexiaAutomation[]>;
21
- getThermostatById(id: string): INexiaThermostat | undefined;
21
+ getThermostatById(id: string): ITraneThermostat | undefined;
22
22
  getAutomationById(id: string): INexiaAutomation | undefined;
23
23
  update(options?: UpdateOptions): Promise<void>;
24
24
  get<T>(url: string, headers?: Record<string, string>): Promise<T>;
@@ -0,0 +1,49 @@
1
+ import { BrandType } from '../types/constants';
2
+ import { TraneClientConfig, UpdateOptions } from '../types/api';
3
+ import { ITraneClient, ITraneThermostat, ITraneAutomation } from '../types/interfaces';
4
+ export declare class TraneClient implements ITraneClient {
5
+ private readonly httpClient;
6
+ private readonly authManager;
7
+ private readonly config;
8
+ private _houseId?;
9
+ private _houseName?;
10
+ private thermostats;
11
+ private automations;
12
+ private _lastUpdate;
13
+ private isInitialized;
14
+ constructor(config: TraneClientConfig);
15
+ initialize(): Promise<void>;
16
+ login(): Promise<void>;
17
+ logout(): Promise<void>;
18
+ isAuthenticated(): boolean;
19
+ getThermostats(): Promise<ITraneThermostat[]>;
20
+ getAutomations(): Promise<ITraneAutomation[]>;
21
+ getThermostatById(id: string): ITraneThermostat | undefined;
22
+ getAutomationById(id: string): ITraneAutomation | undefined;
23
+ update(options?: UpdateOptions): Promise<void>;
24
+ get<T>(url: string, headers?: Record<string, string>): Promise<T>;
25
+ post<T>(url: string, data: unknown, headers?: Record<string, string>): Promise<T>;
26
+ put<T>(url: string, data: unknown, headers?: Record<string, string>): Promise<T>;
27
+ get brand(): BrandType;
28
+ get username(): string;
29
+ getHouseId(): number | undefined;
30
+ get lastUpdate(): Date | null;
31
+ getThermostatIds(): string[];
32
+ getAutomationIds(): string[];
33
+ clearCache(): void;
34
+ private validateConfig;
35
+ private ensureAuthenticated;
36
+ private processHouseData;
37
+ private isThermostatItem;
38
+ private processThermostat;
39
+ private processAutomation;
40
+ private clearDeviceCache;
41
+ private isSessionExpiredError;
42
+ private handleSessionExpiry;
43
+ delayedUpdate(delayMs?: number): Promise<void>;
44
+ getBaseUrl(): string;
45
+ getMobileUrl(): string;
46
+ getUpdateUrl(): string | null;
47
+ getHouseName(): string | undefined;
48
+ }
49
+ //# sourceMappingURL=trane-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trane-client.d.ts","sourceRoot":"","sources":["../../src/client/trane-client.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAA0C,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAIL,iBAAiB,EACjB,aAAa,EACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAavF,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAE3C,OAAO,CAAC,QAAQ,CAAC,CAAS;IAE1B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,aAAa,CAAkB;gBAE3B,MAAM,EAAE,iBAAiB;IA8BxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAS7B,eAAe,IAAI,OAAO;IAOpB,cAAc,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAQ7C,cAAc,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAQnD,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAO3D,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAOrD,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmClD,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAoBjE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAoBjF,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAkB7F,IAAW,KAAK,IAAI,SAAS,CAE5B;IAED,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAEM,UAAU,IAAI,MAAM,GAAG,SAAS;IAIvC,IAAW,UAAU,IAAI,IAAI,GAAG,IAAI,CAEnC;IAKM,gBAAgB,IAAI,MAAM,EAAE;IAO5B,gBAAgB,IAAI,MAAM,EAAE;IAO5B,UAAU,IAAI,IAAI;IAOzB,OAAO,CAAC,cAAc;YAwBR,mBAAmB;YAanB,gBAAgB;IAqE9B,OAAO,CAAC,gBAAgB;YAeV,iBAAiB;YAiBjB,iBAAiB;IAiB/B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,qBAAqB;YAWf,mBAAmB;IAqBpB,aAAa,CAAC,OAAO,GAAE,MAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB1D,UAAU,IAAI,MAAM;IAOpB,YAAY,IAAI,MAAM;IAOtB,YAAY,IAAI,MAAM,GAAG,IAAI;IAO7B,YAAY,IAAI,MAAM,GAAG,SAAS;CAG1C"}
@@ -0,0 +1,332 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TraneClient = void 0;
4
+ const constants_1 = require("../types/constants");
5
+ const http_utils_1 = require("../utils/http-utils");
6
+ const auth_1 = require("./auth");
7
+ const trane_thermostat_1 = require("../devices/trane-thermostat");
8
+ const trane_automation_1 = require("../devices/trane-automation");
9
+ const errors_1 = require("../utils/errors");
10
+ const validation_1 = require("../utils/validation");
11
+ class TraneClient {
12
+ constructor(config) {
13
+ this.thermostats = new Map();
14
+ this.automations = new Map();
15
+ this._lastUpdate = null;
16
+ this.isInitialized = false;
17
+ this.config = this.validateConfig(config);
18
+ const baseURL = constants_1.BRAND_URLS[this.config.brand];
19
+ this.httpClient = (0, http_utils_1.createHttpClient)({
20
+ baseURL,
21
+ timeout: this.config.timeout || 30000,
22
+ retryAttempts: this.config.retryAttempts || 3,
23
+ headers: {
24
+ 'Content-Type': 'application/json'
25
+ }
26
+ });
27
+ const authConfig = {
28
+ username: this.config.username,
29
+ password: this.config.password,
30
+ brand: this.config.brand,
31
+ deviceName: this.config.deviceName,
32
+ stateFile: this.config.stateFile,
33
+ houseId: this.config.houseId
34
+ };
35
+ this.authManager = new auth_1.AuthManager(this.httpClient, authConfig);
36
+ }
37
+ async initialize() {
38
+ if (this.isInitialized) {
39
+ return;
40
+ }
41
+ await this.authManager.initialize();
42
+ if (!this.authManager.isSessionValid()) {
43
+ await this.login();
44
+ }
45
+ this.isInitialized = true;
46
+ }
47
+ async login() {
48
+ try {
49
+ await this.authManager.authenticate();
50
+ const sessionInfo = await this.authManager.getSessionInfo();
51
+ this._houseId = sessionInfo.houseId;
52
+ this._houseName = sessionInfo.houseName;
53
+ await this.update({ forceUpdate: true });
54
+ }
55
+ catch (error) {
56
+ if (error instanceof errors_1.AuthenticationError) {
57
+ throw error;
58
+ }
59
+ const traneError = errors_1.ErrorHandler.handle(error);
60
+ throw new errors_1.AuthenticationError(`Login failed: ${traneError.message}`);
61
+ }
62
+ }
63
+ async logout() {
64
+ await this.authManager.logout();
65
+ this.clearDeviceCache();
66
+ this.isInitialized = false;
67
+ }
68
+ isAuthenticated() {
69
+ return this.authManager.isSessionValid();
70
+ }
71
+ async getThermostats() {
72
+ await this.ensureAuthenticated();
73
+ return Array.from(this.thermostats.values());
74
+ }
75
+ async getAutomations() {
76
+ await this.ensureAuthenticated();
77
+ return Array.from(this.automations.values());
78
+ }
79
+ getThermostatById(id) {
80
+ return this.thermostats.get(id);
81
+ }
82
+ getAutomationById(id) {
83
+ return this.automations.get(id);
84
+ }
85
+ async update(options = {}) {
86
+ await this.ensureAuthenticated();
87
+ if (!this._houseId) {
88
+ throw new errors_1.ApiError('House ID not available. Please ensure login was successful.');
89
+ }
90
+ try {
91
+ const { forceUpdate = false } = options;
92
+ const houseUrl = `${constants_1.API_ENDPOINTS.HOUSES}/${this._houseId}`;
93
+ const response = forceUpdate
94
+ ? await this.httpClient.get(houseUrl)
95
+ : await this.httpClient.getWithETag(houseUrl);
96
+ if (!('fromCache' in response) || !response.fromCache || forceUpdate) {
97
+ await this.processHouseData(response.data);
98
+ this._lastUpdate = new Date();
99
+ }
100
+ }
101
+ catch (error) {
102
+ if (this.isSessionExpiredError(error)) {
103
+ await this.handleSessionExpiry();
104
+ return this.update(options);
105
+ }
106
+ throw errors_1.ErrorHandler.handle(error);
107
+ }
108
+ }
109
+ async get(url, headers) {
110
+ await this.ensureAuthenticated();
111
+ try {
112
+ const response = await this.httpClient.get(url, { headers });
113
+ return response.data;
114
+ }
115
+ catch (error) {
116
+ if (this.isSessionExpiredError(error)) {
117
+ await this.handleSessionExpiry();
118
+ const response = await this.httpClient.get(url, { headers });
119
+ return response.data;
120
+ }
121
+ throw errors_1.ErrorHandler.handle(error);
122
+ }
123
+ }
124
+ async post(url, data, headers) {
125
+ await this.ensureAuthenticated();
126
+ try {
127
+ const response = await this.httpClient.post(url, data, { headers });
128
+ return response.data;
129
+ }
130
+ catch (error) {
131
+ if (this.isSessionExpiredError(error)) {
132
+ await this.handleSessionExpiry();
133
+ const response = await this.httpClient.post(url, data, { headers });
134
+ return response.data;
135
+ }
136
+ throw errors_1.ErrorHandler.handle(error);
137
+ }
138
+ }
139
+ async put(url, data, headers) {
140
+ await this.ensureAuthenticated();
141
+ try {
142
+ const response = await this.httpClient.put(url, data, { headers });
143
+ return response.data;
144
+ }
145
+ catch (error) {
146
+ if (this.isSessionExpiredError(error)) {
147
+ await this.handleSessionExpiry();
148
+ const response = await this.httpClient.put(url, data, { headers });
149
+ return response.data;
150
+ }
151
+ throw errors_1.ErrorHandler.handle(error);
152
+ }
153
+ }
154
+ get brand() {
155
+ return this.config.brand;
156
+ }
157
+ get username() {
158
+ return this.config.username;
159
+ }
160
+ getHouseId() {
161
+ return this._houseId;
162
+ }
163
+ get lastUpdate() {
164
+ return this._lastUpdate;
165
+ }
166
+ getThermostatIds() {
167
+ return Array.from(this.thermostats.keys());
168
+ }
169
+ getAutomationIds() {
170
+ return Array.from(this.automations.keys());
171
+ }
172
+ clearCache() {
173
+ this.httpClient.clearETagCache();
174
+ }
175
+ validateConfig(config) {
176
+ const username = validation_1.GeneralValidator.validateRequiredString(config.username, 'username');
177
+ const password = validation_1.GeneralValidator.validateRequiredString(config.password, 'password');
178
+ const brand = validation_1.GeneralValidator.validateOptional(config.brand, (b) => validation_1.GeneralValidator.validateEnum(b, constants_1.BrandType, 'brand'), constants_1.BrandType.TRANE);
179
+ return {
180
+ ...config,
181
+ username,
182
+ password,
183
+ brand,
184
+ deviceName: config.deviceName || 'Homebridge',
185
+ timeout: config.timeout || 30000,
186
+ retryAttempts: config.retryAttempts || 3
187
+ };
188
+ }
189
+ async ensureAuthenticated() {
190
+ if (!this.isInitialized) {
191
+ await this.initialize();
192
+ }
193
+ if (!this.isAuthenticated()) {
194
+ await this.login();
195
+ }
196
+ }
197
+ async processHouseData(houseData) {
198
+ if (!houseData.success || !houseData.result) {
199
+ throw new errors_1.ApiError('Invalid house data received');
200
+ }
201
+ const result = houseData.result;
202
+ this.clearDeviceCache();
203
+ if (result._links?.child) {
204
+ for (const childLink of result._links.child) {
205
+ try {
206
+ if (childLink.type === 'thermostat' || childLink.href.includes('xxl_thermostats')) {
207
+ await this.processThermostat(childLink);
208
+ }
209
+ else if (childLink.type === 'automation' || childLink.href.includes('automation')) {
210
+ await this.processAutomation(childLink);
211
+ }
212
+ else if (childLink.type === 'application/vnd.nexia.collection+json' && childLink.data?.items) {
213
+ for (const item of childLink.data.items) {
214
+ try {
215
+ if (this.isThermostatItem(item)) {
216
+ const thermostat = new trane_thermostat_1.TraneThermostat(this, item);
217
+ this.thermostats.set(thermostat.id, thermostat);
218
+ }
219
+ }
220
+ catch (error) {
221
+ console.warn(`Failed to process device item ${item.id}:`, error);
222
+ }
223
+ }
224
+ }
225
+ }
226
+ catch (error) {
227
+ console.warn(`Failed to process child link:`, error);
228
+ }
229
+ }
230
+ }
231
+ if (result.devices) {
232
+ for (const device of result.devices) {
233
+ try {
234
+ const thermostat = new trane_thermostat_1.TraneThermostat(this, device);
235
+ this.thermostats.set(thermostat.id, thermostat);
236
+ }
237
+ catch (error) {
238
+ console.warn('Failed to create thermostat from device data:', error);
239
+ }
240
+ }
241
+ }
242
+ if (result.automations) {
243
+ for (const automation of result.automations) {
244
+ try {
245
+ const automationObj = new trane_automation_1.TraneAutomation(this, automation);
246
+ this.automations.set(automationObj.id, automationObj);
247
+ }
248
+ catch (error) {
249
+ console.warn('Failed to create automation from data:', error);
250
+ }
251
+ }
252
+ }
253
+ }
254
+ isThermostatItem(item) {
255
+ if (!item || !item.features) {
256
+ return false;
257
+ }
258
+ return item.features.some((f) => f.name === 'thermostat' ||
259
+ f.name === 'thermostat_mode' ||
260
+ f.name === 'advanced_info');
261
+ }
262
+ async processThermostat(deviceLink) {
263
+ try {
264
+ const thermostatData = await this.get(deviceLink.href);
265
+ const thermostat = new trane_thermostat_1.TraneThermostat(this, thermostatData);
266
+ this.thermostats.set(thermostat.id, thermostat);
267
+ }
268
+ catch (error) {
269
+ console.warn(`Failed to load thermostat ${deviceLink.id || 'unknown'}:`, error);
270
+ }
271
+ }
272
+ async processAutomation(deviceLink) {
273
+ try {
274
+ const automationData = await this.get(deviceLink.href);
275
+ const automation = new trane_automation_1.TraneAutomation(this, automationData);
276
+ this.automations.set(automation.id, automation);
277
+ }
278
+ catch (error) {
279
+ console.warn(`Failed to load automation ${deviceLink.id || 'unknown'}:`, error);
280
+ }
281
+ }
282
+ clearDeviceCache() {
283
+ this.thermostats.clear();
284
+ this.automations.clear();
285
+ }
286
+ isSessionExpiredError(error) {
287
+ return (error instanceof errors_1.SessionExpiredError ||
288
+ (error instanceof errors_1.ApiError && error.statusCode === constants_1.HTTP_STATUS.REDIRECT) ||
289
+ (error instanceof errors_1.AuthenticationError && error.message.includes('session')));
290
+ }
291
+ async handleSessionExpiry() {
292
+ console.info('Session expired, refreshing authentication...');
293
+ try {
294
+ this.authManager.handleSessionExpired();
295
+ await this.authManager.authenticate();
296
+ const sessionInfo = await this.authManager.getSessionInfo();
297
+ this._houseId = sessionInfo.houseId;
298
+ this._houseName = sessionInfo.houseName;
299
+ }
300
+ catch {
301
+ this.clearDeviceCache();
302
+ throw new errors_1.AuthenticationError('Failed to refresh expired session');
303
+ }
304
+ }
305
+ async delayedUpdate(delayMs = 7000) {
306
+ return new Promise((resolve, reject) => {
307
+ setTimeout(async () => {
308
+ try {
309
+ await this.update();
310
+ resolve();
311
+ }
312
+ catch (error) {
313
+ reject(error);
314
+ }
315
+ }, delayMs);
316
+ });
317
+ }
318
+ getBaseUrl() {
319
+ return constants_1.BRAND_URLS[this.config.brand];
320
+ }
321
+ getMobileUrl() {
322
+ return `${this.getBaseUrl()}/mobile`;
323
+ }
324
+ getUpdateUrl() {
325
+ return this._houseId ? `${constants_1.API_ENDPOINTS.HOUSES}/${this._houseId}` : null;
326
+ }
327
+ getHouseName() {
328
+ return this._houseName;
329
+ }
330
+ }
331
+ exports.TraneClient = TraneClient;
332
+ //# sourceMappingURL=trane-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trane-client.js","sourceRoot":"","sources":["../../src/client/trane-client.ts"],"names":[],"mappings":";;;AAMA,kDAAuF;AASvF,oDAAmE;AACnE,iCAAiD;AACjD,kEAA8D;AAC9D,kEAA8D;AAC9D,4CAKyB;AACzB,oDAAuD;AAEvD,MAAa,WAAW;IAatB,YAAY,MAAyB;QAL7B,gBAAW,GAAkC,IAAI,GAAG,EAAE,CAAC;QACvD,gBAAW,GAAkC,IAAI,GAAG,EAAE,CAAC;QACvD,gBAAW,GAAgB,IAAI,CAAC;QAChC,kBAAa,GAAY,KAAK,CAAC;QAGrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAG1C,MAAM,OAAO,GAAG,sBAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAA,6BAAgB,EAAC;YACjC,OAAO;YACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK;YACrC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC;YAC7C,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;QAGH,MAAM,UAAU,GAAe;YAC7B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAM;YACzB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;SAC7B,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAW,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;IAKM,KAAK,CAAC,UAAU;QACrB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QAGpC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAKM,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YAGtC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;YAC5D,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC;YACpC,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC;YAGxC,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,4BAAmB,EAAE,CAAC;gBACzC,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,UAAU,GAAG,qBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,IAAI,4BAAmB,CAAC,iBAAiB,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAKM,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IAKM,eAAe;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;IAC3C,CAAC;IAKM,KAAK,CAAC,cAAc;QACzB,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAKM,KAAK,CAAC,cAAc;QACzB,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAKM,iBAAiB,CAAC,EAAU;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAKM,iBAAiB,CAAC,EAAU;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAKM,KAAK,CAAC,MAAM,CAAC,UAAyB,EAAE;QAC7C,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,iBAAQ,CAAC,6DAA6D,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;YACxC,MAAM,QAAQ,GAAG,GAAG,yBAAa,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAG5D,MAAM,QAAQ,GAAG,WAAW;gBAC1B,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAY,QAAQ,CAAC;gBAChD,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAY,QAAQ,CAAC,CAAC;YAE3D,IAAI,CAAC,CAAC,WAAW,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,WAAW,EAAE,CAAC;gBACrE,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC3C,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;YAChC,CAAC;QAEH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;YAED,MAAM,qBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAKM,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,OAAgC;QAC/D,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEjC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAChE,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAEjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAChE,OAAO,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC;YACD,MAAM,qBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAKM,KAAK,CAAC,IAAI,CAAI,GAAW,EAAE,IAAa,EAAE,OAAgC;QAC/E,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEjC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAI,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YACvE,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAEjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAI,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBACvE,OAAO,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC;YACD,MAAM,qBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAKM,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,IAAa,EAAE,OAAgC;QAC9E,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEjC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YACtE,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAEjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBACtE,OAAO,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC;YACD,MAAM,qBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAGD,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,KAAM,CAAC;IAC5B,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAKM,gBAAgB;QACrB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAKM,gBAAgB;QACrB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAKM,UAAU;QACf,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;IACnC,CAAC;IAKO,cAAc,CAAC,MAAyB;QAC9C,MAAM,QAAQ,GAAG,6BAAgB,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACtF,MAAM,QAAQ,GAAG,6BAAgB,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEtF,MAAM,KAAK,GAAG,6BAAgB,CAAC,gBAAgB,CAC7C,MAAM,CAAC,KAAK,EACZ,CAAC,CAAC,EAAE,EAAE,CAAC,6BAAgB,CAAC,YAAY,CAAC,CAAC,EAAE,qBAAS,EAAE,OAAO,CAAC,EAC3D,qBAAS,CAAC,KAAK,CAChB,CAAC;QAEF,OAAO;YACL,GAAG,MAAM;YACT,QAAQ;YACR,QAAQ;YACR,KAAK;YACL,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,YAAY;YAC7C,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;YAChC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,CAAC;SACzC,CAAC;IACJ,CAAC;IAKO,KAAK,CAAC,mBAAmB;QAC/B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAKO,KAAK,CAAC,gBAAgB,CAAC,SAAoB;QACjD,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAC5C,MAAM,IAAI,iBAAQ,CAAC,6BAA6B,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAGhC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAGxB,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;YACzB,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC5C,IAAI,CAAC;oBAEH,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;wBAClF,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;oBAC1C,CAAC;yBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;wBACpF,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;oBAC1C,CAAC;yBAGI,IAAI,SAAS,CAAC,IAAI,KAAK,uCAAuC,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;wBAC7F,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;4BACxC,IAAI,CAAC;gCAEH,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;oCAChC,MAAM,UAAU,GAAG,IAAI,kCAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oCACnD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;gCAClD,CAAC;4BACH,CAAC;4BAAC,OAAO,KAAK,EAAE,CAAC;gCACf,OAAO,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;4BACnE,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;QACH,CAAC;QAGD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpC,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,IAAI,kCAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACrD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;gBAClD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC;QACH,CAAC;QAGD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC5C,IAAI,CAAC;oBACH,MAAM,aAAa,GAAG,IAAI,kCAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBAC5D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;gBACxD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAKO,gBAAgB,CAAC,IAAS;QAChC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CACnC,CAAC,CAAC,IAAI,KAAK,YAAY;YACvB,CAAC,CAAC,IAAI,KAAK,iBAAiB;YAC5B,CAAC,CAAC,IAAI,KAAK,eAAe,CAC3B,CAAC;IACJ,CAAC;IAKO,KAAK,CAAC,iBAAiB,CAAC,UAAkD;QAChF,IAAI,CAAC;YAEH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,GAAG,CAAiB,UAAU,CAAC,IAAI,CAAC,CAAC;YAGvE,MAAM,UAAU,GAAG,IAAI,kCAAe,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAC7D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAElD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,6BAA6B,UAAU,CAAC,EAAE,IAAI,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAKO,KAAK,CAAC,iBAAiB,CAAC,UAAkD;QAChF,IAAI,CAAC;YAEH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,GAAG,CAAiB,UAAU,CAAC,IAAI,CAAC,CAAC;YAGvE,MAAM,UAAU,GAAG,IAAI,kCAAe,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAC7D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAElD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,6BAA6B,UAAU,CAAC,EAAE,IAAI,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAKO,gBAAgB;QACtB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAKO,qBAAqB,CAAC,KAAc;QAC1C,OAAO,CACL,KAAK,YAAY,4BAAmB;YACpC,CAAC,KAAK,YAAY,iBAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,uBAAW,CAAC,QAAQ,CAAC;YACxE,CAAC,KAAK,YAAY,4BAAmB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAC5E,CAAC;IACJ,CAAC;IAKO,KAAK,CAAC,mBAAmB;QAC/B,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAE9D,IAAI,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YAGtC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;YAC5D,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC;YACpC,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC;QAE1C,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,MAAM,IAAI,4BAAmB,CAAC,mCAAmC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAKM,KAAK,CAAC,aAAa,CAAC,UAAkB,IAAI;QAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,UAAU,CAAC,KAAK,IAAI,EAAE;gBACpB,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;oBACpB,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,EAAE,OAAO,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAKM,UAAU;QACf,OAAO,sBAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAM,CAAC,CAAC;IACxC,CAAC;IAKM,YAAY;QACjB,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;IACvC,CAAC;IAKM,YAAY;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,yBAAa,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,CAAC;IAKM,YAAY;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF;AApfD,kCAofC"}