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.
- package/README.md +1 -1
- package/assets/types/homey-api.d.ts +47 -588
- package/assets/types/homey-api.private.d.ts +47 -648
- package/index.js +1 -1
- package/lib/APIErrorNotFound.js +20 -0
- package/lib/AthomCloudAPI/Homey.js +3 -1
- package/lib/EventEmitter.js +0 -6
- package/lib/HomeyAPI/HomeyAPI.js +49 -5
- package/lib/HomeyAPI/HomeyAPIErrorNotFound.js +21 -0
- package/lib/HomeyAPI/HomeyAPIV2/Manager.js +2 -575
- package/lib/HomeyAPI/HomeyAPIV2/ManagerDevices/Capability.js +20 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerDevices/Device.js +18 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerDevices.js +20 -3
- package/lib/HomeyAPI/HomeyAPIV2/ManagerDrivers/Driver.js +25 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerDrivers.js +29 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow/AdvancedFlow.js +17 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow/Flow.js +34 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow/FlowCardAction.js +25 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow/FlowCardCondition.js +25 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow/FlowCardTrigger.js +25 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow.js +104 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerFlowToken/FlowToken.js +24 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerFlowToken.js +29 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerInsights/Log.js +23 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerInsights.js +29 -0
- package/lib/HomeyAPI/HomeyAPIV2.js +12 -716
- package/lib/HomeyAPI/HomeyAPIV3/Item.js +173 -2
- package/lib/HomeyAPI/HomeyAPIV3/Manager.js +531 -3
- package/lib/HomeyAPI/{HomeyAPIV2 → HomeyAPIV3/ManagerApps}/App.js +1 -1
- package/lib/HomeyAPI/{HomeyAPIV2 → HomeyAPIV3}/ManagerApps.js +4 -3
- package/lib/HomeyAPI/HomeyAPIV3/ManagerDevices/Capability.js +9 -0
- package/lib/HomeyAPI/{HomeyAPIV2 → HomeyAPIV3/ManagerDevices}/Device.js +78 -3
- package/lib/HomeyAPI/{HomeyAPIV2 → HomeyAPIV3/ManagerDevices}/DeviceCapability.js +3 -3
- package/lib/HomeyAPI/HomeyAPIV3/ManagerDevices.js +17 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerDrivers/Driver.js +9 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerDrivers.js +15 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/AdvancedFlow.js +9 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/Flow.js +9 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/FlowCard.js +9 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/FlowCardAction.js +9 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/FlowCardCondition.js +9 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/FlowCardTrigger.js +9 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow.js +12 -23
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlowToken/FlowToken.js +16 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlowToken.js +15 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerInsights/Log.js +9 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerInsights.js +15 -0
- package/lib/HomeyAPI/HomeyAPIV3.js +728 -4
- package/lib/HomeyAPI/HomeyAPIV3Cloud.js +1 -1
- package/lib/HomeyAPI/HomeyAPIV3Local.js +1 -1
- package/package.json +1 -1
- package/lib/HomeyAPI/HomeyAPIApp.js +0 -127
- 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
|
-
|
|
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();
|
package/lib/EventEmitter.js
CHANGED
|
@@ -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;
|
package/lib/HomeyAPI/HomeyAPI.js
CHANGED
|
@@ -27,11 +27,11 @@ class HomeyAPI {
|
|
|
27
27
|
constructor({
|
|
28
28
|
api,
|
|
29
29
|
properties,
|
|
30
|
-
debug =
|
|
30
|
+
debug = () => { },
|
|
31
31
|
}) {
|
|
32
32
|
// Set Debug Enabled
|
|
33
|
-
Object.defineProperty(this, '
|
|
34
|
-
value:
|
|
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
|
-
|
|
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;
|