homey-api 1.10.17 → 3.0.0-rc.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 (53) hide show
  1. package/README.md +1 -1
  2. package/assets/types/homey-api.d.ts +47 -588
  3. package/assets/types/homey-api.private.d.ts +47 -648
  4. package/index.js +1 -1
  5. package/lib/APIErrorNotFound.js +20 -0
  6. package/lib/AthomCloudAPI/Homey.js +3 -1
  7. package/lib/EventEmitter.js +0 -6
  8. package/lib/HomeyAPI/HomeyAPI.js +49 -5
  9. package/lib/HomeyAPI/HomeyAPIErrorNotFound.js +21 -0
  10. package/lib/HomeyAPI/HomeyAPIV2/Manager.js +2 -575
  11. package/lib/HomeyAPI/HomeyAPIV2/ManagerDevices/Capability.js +20 -0
  12. package/lib/HomeyAPI/HomeyAPIV2/ManagerDevices/Device.js +18 -0
  13. package/lib/HomeyAPI/HomeyAPIV2/ManagerDevices.js +20 -3
  14. package/lib/HomeyAPI/HomeyAPIV2/ManagerDrivers/Driver.js +25 -0
  15. package/lib/HomeyAPI/HomeyAPIV2/ManagerDrivers.js +29 -0
  16. package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow/AdvancedFlow.js +17 -0
  17. package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow/Flow.js +34 -0
  18. package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow/FlowCardAction.js +25 -0
  19. package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow/FlowCardCondition.js +25 -0
  20. package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow/FlowCardTrigger.js +25 -0
  21. package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow.js +104 -0
  22. package/lib/HomeyAPI/HomeyAPIV2/ManagerFlowToken/FlowToken.js +24 -0
  23. package/lib/HomeyAPI/HomeyAPIV2/ManagerFlowToken.js +29 -0
  24. package/lib/HomeyAPI/HomeyAPIV2/ManagerInsights/Log.js +23 -0
  25. package/lib/HomeyAPI/HomeyAPIV2/ManagerInsights.js +29 -0
  26. package/lib/HomeyAPI/HomeyAPIV2.js +12 -716
  27. package/lib/HomeyAPI/HomeyAPIV3/Item.js +173 -2
  28. package/lib/HomeyAPI/HomeyAPIV3/Manager.js +531 -3
  29. package/lib/HomeyAPI/{HomeyAPIV2 → HomeyAPIV3/ManagerApps}/App.js +1 -1
  30. package/lib/HomeyAPI/{HomeyAPIV2 → HomeyAPIV3}/ManagerApps.js +4 -3
  31. package/lib/HomeyAPI/HomeyAPIV3/ManagerDevices/Capability.js +9 -0
  32. package/lib/HomeyAPI/{HomeyAPIV2 → HomeyAPIV3/ManagerDevices}/Device.js +78 -3
  33. package/lib/HomeyAPI/{HomeyAPIV2 → HomeyAPIV3/ManagerDevices}/DeviceCapability.js +3 -3
  34. package/lib/HomeyAPI/HomeyAPIV3/ManagerDevices.js +17 -0
  35. package/lib/HomeyAPI/HomeyAPIV3/ManagerDrivers/Driver.js +9 -0
  36. package/lib/HomeyAPI/HomeyAPIV3/ManagerDrivers.js +15 -0
  37. package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/AdvancedFlow.js +9 -0
  38. package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/Flow.js +9 -0
  39. package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/FlowCard.js +9 -0
  40. package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/FlowCardAction.js +9 -0
  41. package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/FlowCardCondition.js +9 -0
  42. package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/FlowCardTrigger.js +9 -0
  43. package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow.js +12 -23
  44. package/lib/HomeyAPI/HomeyAPIV3/ManagerFlowToken/FlowToken.js +16 -0
  45. package/lib/HomeyAPI/HomeyAPIV3/ManagerFlowToken.js +15 -0
  46. package/lib/HomeyAPI/HomeyAPIV3/ManagerInsights/Log.js +9 -0
  47. package/lib/HomeyAPI/HomeyAPIV3/ManagerInsights.js +15 -0
  48. package/lib/HomeyAPI/HomeyAPIV3.js +728 -4
  49. package/lib/HomeyAPI/HomeyAPIV3Cloud.js +1 -1
  50. package/lib/HomeyAPI/HomeyAPIV3Local.js +1 -1
  51. package/package.json +1 -1
  52. package/lib/HomeyAPI/HomeyAPIApp.js +0 -127
  53. package/lib/HomeyAPI/HomeyAPIV2/Item.js +0 -177
package/index.js CHANGED
@@ -20,5 +20,5 @@ module.exports = {
20
20
  AthomWeatherAPI: require('./lib/AthomWeatherAPI'),
21
21
  AthomWebhooksAPI: require('./lib/AthomWebhooksAPI'),
22
22
  HomeyCloudAPI: require('./lib/HomeyCloudAPI'),
23
- HomeyAPIApp: require('./lib/HomeyAPI/HomeyAPIApp'),
23
+ HomeyAPI: require('./lib/HomeyAPI/HomeyAPI'),
24
24
  };
@@ -0,0 +1,20 @@
1
+ /* eslint-disable camelcase */
2
+
3
+ 'use strict';
4
+
5
+ const APIError = require('./APIError');
6
+
7
+ /**
8
+ * @class
9
+ * @hideconstructor
10
+ * @extends APIError
11
+ */
12
+ class APIErrorNotFound extends APIError {
13
+
14
+ constructor(message, statusCode = 404) {
15
+ super(message, statusCode);
16
+ }
17
+
18
+ }
19
+
20
+ module.exports = APIErrorNotFound;
@@ -41,8 +41,10 @@ class Homey extends APIDefinition {
41
41
  const homey = new HomeyAPI({
42
42
  strategy,
43
43
  api: this.__api,
44
- debug: this.__api.__debugEnabled,
45
44
  properties: this.__properties,
45
+ debug: (...props) => {
46
+ return this.__api.__debug(`[${HomeyAPI.name}:${this.__properties.id}]`, ...props);
47
+ },
46
48
  });
47
49
 
48
50
  await homey.login();
@@ -43,8 +43,6 @@ class EventEmitter {
43
43
  * @param {function} callback
44
44
  */
45
45
  on(event, callback) {
46
- this.__debug(`.on('${event}')`);
47
-
48
46
  this.__listeners[event] = this.__listeners[event] || [];
49
47
  this.__listeners[event].push(callback);
50
48
 
@@ -56,8 +54,6 @@ class EventEmitter {
56
54
  * @param {function} callback
57
55
  */
58
56
  once(event, callback) {
59
- this.__debug(`.once('${event}')`);
60
-
61
57
  const callback_ = (...args) => {
62
58
  this.__listeners[event] = this.__listeners[event].filter(cb => cb !== callback_);
63
59
  callback(...args);
@@ -74,8 +70,6 @@ class EventEmitter {
74
70
  * @param {function} callback
75
71
  */
76
72
  off(event, callback) {
77
- this.__debug(`.off('${event}')`);
78
-
79
73
  this.__listeners[event] = this.__listeners[event].filter(cb => cb !== callback);
80
74
 
81
75
  return this;
@@ -27,11 +27,11 @@ class HomeyAPI {
27
27
  constructor({
28
28
  api,
29
29
  properties,
30
- debug = false,
30
+ debug = () => { },
31
31
  }) {
32
32
  // Set Debug Enabled
33
- Object.defineProperty(this, '__debugEnabled', {
34
- value: !!debug,
33
+ Object.defineProperty(this, '__debugFunction', {
34
+ value: debug,
35
35
  enumerable: false,
36
36
  writable: true,
37
37
  });
@@ -45,7 +45,7 @@ class HomeyAPI {
45
45
 
46
46
  // Set ID
47
47
  Object.defineProperty(this, 'id', {
48
- value: properties._id || null,
48
+ value: properties.id || properties._id || null,
49
49
  enumerable: true,
50
50
  writable: true,
51
51
  });
@@ -66,7 +66,8 @@ class HomeyAPI {
66
66
  }
67
67
 
68
68
  __debug(...props) {
69
- this.__api.__debug(`[${this.constructor.name}:${this.id}]`, ...props);
69
+ if (!this.__debugFunction) return;
70
+ this.__debugFunction(...props);
70
71
  }
71
72
 
72
73
  /*
@@ -124,6 +125,49 @@ class HomeyAPI {
124
125
  return null;
125
126
  }
126
127
 
128
+ /**
129
+ * Create a {@link HomeyAPIV3Local} instance for use in the Apps SDK.
130
+ * @param {Object} opts
131
+ * @param {Homey} opts.homey — Homey instance
132
+ * @param {Function} opts.debug — Debug method, defaults to `homey.app.log`
133
+ */
134
+ static async createAppAPI({
135
+ homey,
136
+ debug = (...props) => homey.app.log('[homey-api]', ...props),
137
+ } = {}) {
138
+ if (!homey) {
139
+ throw new Error('Invalid Homey');
140
+ }
141
+
142
+ const props = {
143
+ debug,
144
+ token: await homey.api.getOwnerApiToken(),
145
+ baseUrl: await homey.api.getLocalUrl(),
146
+ strategy: [],
147
+ properties: {
148
+ id: await homey.cloud.getHomeyId(),
149
+ softwareVersion: homey.version,
150
+ },
151
+ };
152
+
153
+ if (homey.platform === 'local' && homey.platformVersion === 1) {
154
+ const HomeyAPIV2 = require('./HomeyAPIV2');
155
+ return new HomeyAPIV2(props);
156
+ }
157
+
158
+ if (homey.platform === 'local' && homey.platformVersion === 2) {
159
+ const HomeyAPIV3Local = require('./HomeyAPIV3Local');
160
+ return new HomeyAPIV3Local(props);
161
+ }
162
+
163
+ if (homey.platform === 'cloud' && homey.platformVersion === 2) {
164
+ const HomeyAPIV3Cloud = require('./HomeyAPIV3Cloud');
165
+ return new HomeyAPIV3Cloud(props);
166
+ }
167
+
168
+ throw new Error(`Invalid Homey Platform Version: ${homey.platformVersion}`);
169
+ }
170
+
127
171
  }
128
172
 
129
173
  module.exports = HomeyAPI;
@@ -0,0 +1,21 @@
1
+ /* eslint-disable camelcase */
2
+
3
+ 'use strict';
4
+
5
+ const HomeyAPIError = require('./HomeyAPIError');
6
+
7
+ /**
8
+ * @class
9
+ * @hideconstructor
10
+ * @extends APIError
11
+ * @memberof HomeyAPI
12
+ */
13
+ class HomeyAPIErrorNotFound extends HomeyAPIError {
14
+
15
+ constructor(opts, statusCode = 404) {
16
+ super(opts, statusCode);
17
+ }
18
+
19
+ }
20
+
21
+ module.exports = HomeyAPIErrorNotFound;