homebridge-carrier-infinity 1.8.0 → 1.9.0-beta.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.
Files changed (76) hide show
  1. package/.devcontainer/.uix-hb-service-homebridge-startup.json.example +5 -0
  2. package/.devcontainer/README.md +211 -0
  3. package/.devcontainer/config.json.example +28 -0
  4. package/.devcontainer/devcontainer.json +55 -0
  5. package/.devcontainer/setup-homebridge.sh +51 -0
  6. package/.devcontainer/start-homebridge.sh +29 -0
  7. package/.devcontainer/stop-homebridge.sh +7 -0
  8. package/CLAUDE.md +186 -0
  9. package/dist/accessory_base.d.ts +2 -2
  10. package/dist/accessory_base.d.ts.map +1 -1
  11. package/dist/accessory_base.js.map +1 -1
  12. package/dist/api/graphql_client.d.ts +71 -0
  13. package/dist/api/graphql_client.d.ts.map +1 -0
  14. package/dist/api/graphql_client.js +261 -0
  15. package/dist/api/graphql_client.js.map +1 -0
  16. package/dist/api/graphql_operations.d.ts +56 -0
  17. package/dist/api/graphql_operations.d.ts.map +1 -0
  18. package/dist/api/graphql_operations.js +325 -0
  19. package/dist/api/graphql_operations.js.map +1 -0
  20. package/dist/api/interface_graphql_mutations.d.ts +149 -0
  21. package/dist/api/interface_graphql_mutations.d.ts.map +1 -0
  22. package/dist/api/interface_graphql_mutations.js +8 -0
  23. package/dist/api/interface_graphql_mutations.js.map +1 -0
  24. package/dist/api/interface_graphql_system.d.ts +287 -0
  25. package/dist/api/interface_graphql_system.d.ts.map +1 -0
  26. package/dist/api/interface_graphql_system.js +9 -0
  27. package/dist/api/interface_graphql_system.js.map +1 -0
  28. package/dist/api/models_graphql.d.ts +167 -0
  29. package/dist/api/models_graphql.d.ts.map +1 -0
  30. package/dist/api/models_graphql.js +590 -0
  31. package/dist/api/models_graphql.js.map +1 -0
  32. package/dist/api/oauth2.d.ts +45 -0
  33. package/dist/api/oauth2.d.ts.map +1 -0
  34. package/dist/api/oauth2.js +35 -0
  35. package/dist/api/oauth2.js.map +1 -0
  36. package/dist/characteristics_base.d.ts +2 -2
  37. package/dist/characteristics_base.d.ts.map +1 -1
  38. package/dist/characteristics_base.js.map +1 -1
  39. package/dist/platform.d.ts +4 -4
  40. package/dist/platform.d.ts.map +1 -1
  41. package/dist/platform.js +7 -12
  42. package/dist/platform.js.map +1 -1
  43. package/dist/settings.d.ts +6 -3
  44. package/dist/settings.d.ts.map +1 -1
  45. package/dist/settings.js +7 -4
  46. package/dist/settings.js.map +1 -1
  47. package/eslint.config.mjs +172 -0
  48. package/package.json +24 -26
  49. package/dist/api/interface_config.d.ts +0 -185
  50. package/dist/api/interface_config.d.ts.map +0 -1
  51. package/dist/api/interface_config.js +0 -5
  52. package/dist/api/interface_config.js.map +0 -1
  53. package/dist/api/interface_locations.d.ts +0 -45
  54. package/dist/api/interface_locations.d.ts.map +0 -1
  55. package/dist/api/interface_locations.js +0 -5
  56. package/dist/api/interface_locations.js.map +0 -1
  57. package/dist/api/interface_profile.d.ts +0 -80
  58. package/dist/api/interface_profile.d.ts.map +0 -1
  59. package/dist/api/interface_profile.js +0 -5
  60. package/dist/api/interface_profile.js.map +0 -1
  61. package/dist/api/interface_status.d.ts +0 -90
  62. package/dist/api/interface_status.d.ts.map +0 -1
  63. package/dist/api/interface_status.js +0 -5
  64. package/dist/api/interface_status.js.map +0 -1
  65. package/dist/api/models.d.ts +0 -111
  66. package/dist/api/models.d.ts.map +0 -1
  67. package/dist/api/models.js +0 -572
  68. package/dist/api/models.js.map +0 -1
  69. package/dist/api/oauth.d.ts +0 -6
  70. package/dist/api/oauth.d.ts.map +0 -1
  71. package/dist/api/oauth.js +0 -49
  72. package/dist/api/oauth.js.map +0 -1
  73. package/dist/api/rest_client.d.ts +0 -15
  74. package/dist/api/rest_client.d.ts.map +0 -1
  75. package/dist/api/rest_client.js +0 -120
  76. package/dist/api/rest_client.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/api/oauth.ts"],"names":[],"mappings":";;;;;;AAAA,0CAAsF;AAEtF,oDAA4B;AAE5B,2CAAkC;AAElC,MAAa,YAAY;IACvB,MAAM,CAAC,SAAS,CAAC,UAAkB,EAAE,GAAW,EAAE,QAAgB,EAAE,KAAa,EAAE,IAAmB;QACpG,4BAA4B;QAC5B,MAAM,iBAAiB,GAAG;YACxB,kBAAkB,EAAG,oCAAyB;YAC9C,WAAW,EAAG,QAAQ;YACtB,sBAAsB,EAAG,WAAW;YACpC,eAAe,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YAC/C,WAAW,EAAG,gBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACvD,aAAa,EAAG,KAAK;SACtB,CAAC;QAEF,+CAA+C;QAC/C,MAAM,eAAe,GAAG,EAAE,CAAC;QAC3B,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC;QAEzE,eAAe;QACf,MAAM,SAAS,GAAG,IAAA,iBAAI,EACpB,iBAAiB,CAAC,wBAAwB,CAAC,EAC3C,UAAU,EACV,SAAS,GAAG,GAAG,EACf,UAAU,EACV,uCAA4B,EAC5B,KAAK,CACN,CAAC;QACF,mBAAmB;QACnB,MAAM,aAAa,GAAG;YACpB,SAAS,kBAAkB,CAAC,GAAG,CAAC,EAAE;SACnC,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAClC,aAAa,CAAC,IAAI,CAChB,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CACxB,CAAC;QACJ,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,mBAAmB,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,SAAS,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,MAAkC,EAAE,QAAgB,EAAE,KAAa;QAClF,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1H,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAjDD,oCAiDC"}
@@ -1,15 +0,0 @@
1
- import { AxiosInstance } from 'axios';
2
- import { Logger } from 'homebridge';
3
- export declare class InfinityRestClient {
4
- username: string;
5
- private password;
6
- readonly log: Logger;
7
- private access_token;
8
- axios: AxiosInstance;
9
- constructor(username: string, password: string, log: Logger);
10
- activate(): Promise<void>;
11
- forceActivate(): Promise<void>;
12
- refreshToken(): Promise<void>;
13
- forceRefreshToken(): Promise<void>;
14
- }
15
- //# sourceMappingURL=rest_client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rest_client.d.ts","sourceRoot":"","sources":["../../src/api/rest_client.ts"],"names":[],"mappings":"AAIA,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAIpC,qBAAa,kBAAkB;IAKlB,QAAQ,EAAE,MAAM;IACvB,OAAO,CAAC,QAAQ;aACA,GAAG,EAAE,MAAM;IAN/B,OAAO,CAAC,YAAY,CAAM;IACnB,KAAK,EAAE,aAAa,CAAC;gBAGjB,QAAQ,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EACR,GAAG,EAAE,MAAM;IAsCzB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAWzB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB7B,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;CA6BzC"}
@@ -1,120 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.InfinityRestClient = void 0;
13
- const settings_1 = require("../settings");
14
- const oauth_1 = require("./oauth");
15
- const xml2js_1 = __importDefault(require("xml2js"));
16
- const axios_1 = __importDefault(require("axios"));
17
- const typescript_memoize_1 = require("typescript-memoize");
18
- const typescript_retry_decorator_1 = require("typescript-retry-decorator");
19
- class InfinityRestClient {
20
- constructor(username, password, log) {
21
- this.username = username;
22
- this.password = password;
23
- this.log = log;
24
- this.access_token = '';
25
- this.axios = axios_1.default.create({
26
- baseURL: settings_1.INFINITY_API_BASE_URL,
27
- headers: {
28
- featureset: 'CONSUMER_PORTAL',
29
- Accept: 'application/xml',
30
- },
31
- });
32
- // Axios debug logging and error handling
33
- this.axios.interceptors.response.use(
34
- // Success
35
- response => {
36
- var _a, _b;
37
- this.log.debug(`${(_a = response.request) === null || _a === void 0 ? void 0 : _a.method} ${response.request.host}${(_b = response.request) === null || _b === void 0 ? void 0 : _b.path}`, `${response.status} ${response.statusText}`);
38
- return response;
39
- },
40
- // Failure
41
- error => {
42
- var _a, _b, _c, _d, _e;
43
- if (axios_1.default.isAxiosError(error)) {
44
- this.log.debug(`${(_a = error.request) === null || _a === void 0 ? void 0 : _a.method} ${(_b = error.request) === null || _b === void 0 ? void 0 : _b.host}${(_c = error.request) === null || _c === void 0 ? void 0 : _c.path}`, `${(_d = error.response) === null || _d === void 0 ? void 0 : _d.status} ${(_e = error.response) === null || _e === void 0 ? void 0 : _e.statusText}`);
45
- }
46
- return Promise.reject(error); // this makes http errors raise
47
- });
48
- // Oauth header add
49
- this.axios.interceptors.request.use(config => {
50
- return oauth_1.OAuthHeaders.intercept(config, this.username, this.access_token);
51
- });
52
- }
53
- // Api seems to expect this every min or so. more frequent doesn't seem to
54
- // make any difference.
55
- async activate() {
56
- try {
57
- await this.forceActivate();
58
- }
59
- catch (error) {
60
- this.log.error('[API] Failure sending activation signal: ', axios_1.default.isAxiosError(error) ? error.message : error);
61
- }
62
- }
63
- async forceActivate() {
64
- await this.axios.post(`/users/${this.username}/activateSystems`, null, {
65
- headers: {
66
- Accept: 'application/json',
67
- },
68
- });
69
- }
70
- async refreshToken() {
71
- try {
72
- await this.forceRefreshToken();
73
- this.log.info('Completed login / token refresh successfully.');
74
- }
75
- catch (error) {
76
- this.log.error('[API] Could not refresh access token: ', axios_1.default.isAxiosError(error) ? error.message : error);
77
- }
78
- }
79
- async forceRefreshToken() {
80
- var _a;
81
- this.log.info('Attempting login / token refresh.');
82
- const builder = new xml2js_1.default.Builder({ cdata: true, headless: true });
83
- const new_xml = builder.buildObject({
84
- credentials: {
85
- username: this.username,
86
- password: this.password,
87
- },
88
- });
89
- const data = `data=${encodeURIComponent(new_xml)}`;
90
- const response = await this.axios.post('/users/authenticated', data, {
91
- headers: {
92
- 'Content-Type': 'application/x-www-form-urlencoded',
93
- Accept: 'application/json',
94
- },
95
- });
96
- if ((_a = response.data.result) === null || _a === void 0 ? void 0 : _a.accessToken) {
97
- this.access_token = response.data.result.accessToken;
98
- }
99
- else {
100
- this.log.debug(response.data);
101
- throw new Error('User authentication error.');
102
- }
103
- }
104
- }
105
- exports.InfinityRestClient = InfinityRestClient;
106
- __decorate([
107
- (0, typescript_memoize_1.MemoizeExpiring)(1 * 60 * 1000)
108
- ], InfinityRestClient.prototype, "activate", null);
109
- __decorate([
110
- (0, typescript_memoize_1.MemoizeExpiring)(24 * 60 * 60 * 1000) // every 24 hrs
111
- ], InfinityRestClient.prototype, "refreshToken", null);
112
- __decorate([
113
- (0, typescript_retry_decorator_1.Retryable)({
114
- maxAttempts: 5,
115
- backOffPolicy: typescript_retry_decorator_1.BackOffPolicy.ExponentialBackOffPolicy,
116
- backOff: 1000,
117
- exponentialOption: { maxInterval: 5 * 60 * 1000, multiplier: 5 },
118
- })
119
- ], InfinityRestClient.prototype, "forceRefreshToken", null);
120
- //# sourceMappingURL=rest_client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rest_client.js","sourceRoot":"","sources":["../../src/api/rest_client.ts"],"names":[],"mappings":"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"}