@kohost/api-client 3.0.0-beta.4 → 3.0.0-beta.40
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 +71 -0
- package/dist/cjs/AMQPClient.js +425 -0
- package/dist/cjs/Client.js +1187 -757
- package/dist/cjs/Commands.js +264 -93
- package/dist/cjs/Errors.js +24 -22
- package/dist/cjs/Events.js +200 -43
- package/dist/cjs/Models.js +1180 -520
- package/dist/cjs/SocketIoClient.js +66 -0
- package/dist/cjs/defs.js +37 -47
- package/dist/cjs/index.cjs.js +4 -0
- package/dist/cjs/utils.js +253 -15
- package/dist/esm/Client.js +1490 -940
- package/dist/esm/Client.js.map +4 -4
- package/dist/esm/Commands.js +264 -93
- package/dist/esm/Commands.js.map +3 -3
- package/dist/esm/Errors.js +24 -22
- package/dist/esm/Errors.js.map +1 -1
- package/dist/esm/Events.js +200 -43
- package/dist/esm/Events.js.map +3 -3
- package/dist/esm/Models.js +1809 -530
- package/dist/esm/Models.js.map +4 -4
- package/dist/esm/SocketIoClient.js +4533 -0
- package/dist/esm/SocketIoClient.js.map +7 -0
- package/dist/esm/defs.js +383 -273
- package/dist/esm/defs.js.map +4 -4
- package/dist/esm/index.js +11 -10
- package/dist/esm/utils.js +636 -63
- package/dist/esm/utils.js.map +3 -3
- package/dist/useCases/AddDefaultScenesToRooms.js +2 -2
- package/dist/useCases/AddScenesToRoom.js +2 -2
- package/dist/useCases/AdminUpdateCustomer.js +32 -0
- package/dist/useCases/AssignSpaceToReservation.js +32 -0
- package/dist/useCases/BatchNotifyCheckIn.js +32 -0
- package/dist/useCases/BatchNotifyPreArrival.js +2 -2
- package/dist/useCases/CheckInReservation.js +2 -2
- package/dist/useCases/CheckVerificationCode.js +2 -2
- package/dist/useCases/CreateAlarm.js +2 -2
- package/dist/useCases/CreateCamera.js +2 -2
- package/dist/useCases/CreateCourtesy.js +2 -2
- package/dist/useCases/CreateDefaultScenes.js +2 -2
- package/dist/useCases/CreateDimmer.js +2 -2
- package/dist/useCases/CreateDiscoveredDevice.js +2 -2
- package/dist/useCases/CreateDiscoveredDeviceAssociation.js +2 -2
- package/dist/useCases/CreateLock.js +2 -2
- package/dist/useCases/{CreateSource.js → CreateMediaSource.js} +3 -3
- package/dist/useCases/CreateOrganization.js +32 -0
- package/dist/useCases/{AdminCreateProperty.js → CreateProperty.js} +3 -3
- package/dist/useCases/CreateReservation.js +2 -2
- package/dist/useCases/CreateRoom.js +2 -2
- package/dist/useCases/CreateRoomInSpace.js +2 -2
- package/dist/useCases/CreateSpace.js +2 -2
- package/dist/useCases/{CreateIntegration.js → CreateSpaceType.js} +3 -3
- package/dist/useCases/CreateSwitch.js +2 -2
- package/dist/useCases/CreateThermostat.js +2 -2
- package/dist/useCases/CreateTicket.js +2 -2
- package/dist/useCases/CreateTicketMessage.js +2 -2
- package/dist/useCases/CreateUser.js +2 -2
- package/dist/useCases/CreateWindowCovering.js +2 -2
- package/dist/useCases/DeleteAlarm.js +2 -2
- package/dist/useCases/DeleteCamera.js +2 -2
- package/dist/useCases/DeleteCourtesy.js +2 -2
- package/dist/useCases/DeleteDimmer.js +2 -2
- package/dist/useCases/DeleteDiscoveredDevice.js +2 -2
- package/dist/useCases/DeleteLock.js +2 -2
- package/dist/useCases/{DeleteSource.js → DeleteMediaSource.js} +3 -3
- package/dist/useCases/DeleteReservation.js +2 -2
- package/dist/useCases/DeleteRoom.js +2 -2
- package/dist/useCases/DeleteSpace.js +2 -2
- package/dist/useCases/DeleteSpaceType.js +32 -0
- package/dist/useCases/DeleteSwitch.js +2 -2
- package/dist/useCases/DeleteThermostat.js +2 -2
- package/dist/useCases/DeleteTicket.js +2 -2
- package/dist/useCases/DeleteUser.js +2 -2
- package/dist/useCases/DeleteWindowCovering.js +2 -2
- package/dist/useCases/DescribeAlarm.js +2 -2
- package/dist/useCases/DescribeCamera.js +2 -2
- package/dist/useCases/DescribeCourtesy.js +2 -2
- package/dist/useCases/DescribeDimmer.js +2 -2
- package/dist/useCases/DescribeDiscoveredDevice.js +2 -2
- package/dist/useCases/DescribeLock.js +2 -2
- package/dist/useCases/{DescribeSource.js → DescribeMediaSource.js} +3 -3
- package/dist/useCases/DescribeMyProperty.js +2 -2
- package/dist/useCases/{DeleteIntegration.js → DescribeOrganization.js} +3 -3
- package/dist/useCases/{DescribeIntegration.js → DescribeProperty.js} +3 -3
- package/dist/useCases/DescribeReservation.js +2 -2
- package/dist/useCases/DescribeReservationCheckinStatus.js +2 -2
- package/dist/useCases/DescribeRoom.js +2 -2
- package/dist/useCases/DescribeSelf.js +2 -2
- package/dist/useCases/DescribeSpace.js +2 -2
- package/dist/useCases/{AdminDescribeProperty.js → DescribeSpaceType.js} +3 -3
- package/dist/useCases/DescribeSwitch.js +2 -2
- package/dist/useCases/DescribeThermostat.js +2 -2
- package/dist/useCases/DescribeTicket.js +2 -2
- package/dist/useCases/DescribeUser.js +2 -2
- package/dist/useCases/DescribeWindowCovering.js +2 -2
- package/dist/useCases/DiscoverReservations.js +2 -2
- package/dist/useCases/EmailUserAccountSetup.js +2 -2
- package/dist/useCases/GetMobileKey.js +32 -0
- package/dist/useCases/ListAlarms.js +2 -2
- package/dist/useCases/ListCameras.js +2 -2
- package/dist/useCases/ListCourtesy.js +2 -2
- package/dist/useCases/ListDimmers.js +2 -2
- package/dist/useCases/ListDiscoveredDevices.js +2 -2
- package/dist/useCases/ListLocks.js +2 -2
- package/dist/useCases/{ListSources.js → ListMediaSources.js} +3 -3
- package/dist/useCases/ListMyReservations.js +2 -2
- package/dist/useCases/ListMySpaces.js +2 -2
- package/dist/useCases/ListMyTickets.js +32 -0
- package/dist/useCases/ListOrganizations.js +32 -0
- package/dist/useCases/{AdminListCustomers.js → ListProperties.js} +3 -3
- package/dist/useCases/ListReservations.js +2 -2
- package/dist/useCases/ListRooms.js +2 -2
- package/dist/useCases/ListRoomsInSpace.js +2 -2
- package/dist/useCases/{AdminListProperties.js → ListSpaceTypes.js} +3 -3
- package/dist/useCases/ListSpaces.js +2 -2
- package/dist/useCases/ListSwitches.js +2 -2
- package/dist/useCases/{ListIntegrations.js → ListTeam.js} +3 -3
- package/dist/useCases/ListThermostats.js +2 -2
- package/dist/useCases/ListTickets.js +2 -2
- package/dist/useCases/ListUserReservations.js +2 -2
- package/dist/useCases/ListUsers.js +2 -2
- package/dist/useCases/ListWindowCoverings.js +2 -2
- package/dist/useCases/LoginUser.js +2 -2
- package/dist/useCases/{CreateIntegrationDeviceMapEntry.js → LogoutUser.js} +3 -3
- package/dist/useCases/MatchUserIdentification.js +2 -2
- package/dist/useCases/OCRDocument.js +2 -2
- package/dist/useCases/RefreshToken.js +2 -2
- package/dist/useCases/RequestLoginLink.js +3 -3
- package/dist/useCases/RequestMyKeyToken.js +32 -0
- package/dist/useCases/SendCheckInSMS.js +32 -0
- package/dist/useCases/SendPreArrivalEmail.js +2 -2
- package/dist/useCases/SendPreArrivalSMS.js +2 -2
- package/dist/useCases/SendVerificationCode.js +2 -2
- package/dist/useCases/SetCamera.js +2 -2
- package/dist/useCases/SetCourtesy.js +2 -2
- package/dist/useCases/{SetSource.js → SetDimmer.js} +3 -3
- package/dist/useCases/SetLock.js +2 -2
- package/dist/useCases/SetMediaSource.js +32 -0
- package/dist/useCases/SetSwitch.js +2 -2
- package/dist/useCases/SetThermostat.js +2 -2
- package/dist/useCases/SetWindowCovering.js +2 -2
- package/dist/useCases/UpdateAlarm.js +2 -2
- package/dist/useCases/UpdateCamera.js +2 -2
- package/dist/useCases/UpdateCourtesy.js +2 -2
- package/dist/useCases/UpdateDimmer.js +2 -2
- package/dist/useCases/UpdateDiscoveredDevice.js +2 -2
- package/dist/useCases/UpdateLock.js +2 -2
- package/dist/useCases/{UpdateSource.js → UpdateMediaSource.js} +3 -3
- package/dist/useCases/UpdateMessageReadStatus.js +2 -2
- package/dist/useCases/{AdminUpdateProperty.js → UpdateProperty.js} +3 -3
- package/dist/useCases/UpdateReservation.js +2 -2
- package/dist/useCases/UpdateRoom.js +2 -2
- package/dist/useCases/UpdateSelf.js +2 -2
- package/dist/useCases/UpdateSpace.js +2 -2
- package/dist/useCases/{UpdateIntegration.js → UpdateSpaceType.js} +3 -3
- package/dist/useCases/UpdateSwitch.js +2 -2
- package/dist/useCases/UpdateThermostat.js +2 -2
- package/dist/useCases/UpdateTicket.js +2 -2
- package/dist/useCases/UpdateTicketStatus.js +2 -2
- package/dist/useCases/UpdateUser.js +2 -2
- package/dist/useCases/UpdateWindowCovering.js +2 -2
- package/dist/useCases/UpsertDiscoveredDevice.js +2 -2
- package/package.json +14 -3
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
|
|
4
|
+
// src/SocketIoClient/index.js
|
|
5
|
+
var io = require("socket.io-client");
|
|
6
|
+
var { EventEmitter } = require("events");
|
|
7
|
+
module.exports = /* @__PURE__ */ __name(class SocketIoClient extends EventEmitter {
|
|
8
|
+
constructor(config = { url: null, propertyId: null, options: {} }) {
|
|
9
|
+
super();
|
|
10
|
+
if (!config.url)
|
|
11
|
+
throw new Error("Websocket URL / endpoint not provided");
|
|
12
|
+
if (!config.propertyId)
|
|
13
|
+
throw new Error("Property ID not provided");
|
|
14
|
+
this.url = config.url;
|
|
15
|
+
this.propertyId = config.propertyId;
|
|
16
|
+
this.options = {
|
|
17
|
+
autoConnect: false,
|
|
18
|
+
forceNew: false,
|
|
19
|
+
reconnection: true,
|
|
20
|
+
reconnectionAttempts: Infinity,
|
|
21
|
+
reconnectionDelay: 1e3,
|
|
22
|
+
withCredentials: true,
|
|
23
|
+
transports: ["websocket", "polling"],
|
|
24
|
+
upgrade: true,
|
|
25
|
+
...config.options
|
|
26
|
+
};
|
|
27
|
+
this.socket = io(this.url, this.options);
|
|
28
|
+
this.socket.on("connect", () => {
|
|
29
|
+
this.emit("connect", this.socket);
|
|
30
|
+
});
|
|
31
|
+
this.socket.on("disconnect", (reason) => {
|
|
32
|
+
this.emit("disconnect", reason);
|
|
33
|
+
});
|
|
34
|
+
this.socket.on("reconnect_attempt", (data) => {
|
|
35
|
+
this.emit("reconnect_attempt", data);
|
|
36
|
+
});
|
|
37
|
+
this.socket.on("connect_error", (error) => {
|
|
38
|
+
this.emit("connect_error", error);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
get connected() {
|
|
42
|
+
return this.socket?.connected || false;
|
|
43
|
+
}
|
|
44
|
+
get disconnected() {
|
|
45
|
+
return this.socket?.disconnected || false;
|
|
46
|
+
}
|
|
47
|
+
connect() {
|
|
48
|
+
this.socket.connect();
|
|
49
|
+
}
|
|
50
|
+
disconnect() {
|
|
51
|
+
this.socket.disconnect();
|
|
52
|
+
}
|
|
53
|
+
reconnect() {
|
|
54
|
+
this.disconnect();
|
|
55
|
+
this.connect();
|
|
56
|
+
}
|
|
57
|
+
subscribe(event, callback) {
|
|
58
|
+
this.socket.on(event, callback);
|
|
59
|
+
}
|
|
60
|
+
unsubscribe(event, callback) {
|
|
61
|
+
this.socket.off(event, callback);
|
|
62
|
+
}
|
|
63
|
+
send(event, { data = {}, query = {}, ...rest }) {
|
|
64
|
+
this.socket.emit(event, { data, query, ...rest });
|
|
65
|
+
}
|
|
66
|
+
}, "SocketIoClient");
|
package/dist/cjs/defs.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
1
2
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
2
4
|
var __commonJS = (cb, mod) => function __require() {
|
|
3
5
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
4
6
|
};
|
|
@@ -12,12 +14,12 @@ var require_deviceTypes = __commonJS({
|
|
|
12
14
|
"thermostat",
|
|
13
15
|
"lock",
|
|
14
16
|
"windowCovering",
|
|
15
|
-
"sceneController",
|
|
16
17
|
"courtesy",
|
|
17
18
|
"alarm",
|
|
18
19
|
"camera",
|
|
19
|
-
"
|
|
20
|
-
"motionSensor"
|
|
20
|
+
"mediaSource",
|
|
21
|
+
"motionSensor",
|
|
22
|
+
"gateway"
|
|
21
23
|
];
|
|
22
24
|
module2.exports = types;
|
|
23
25
|
}
|
|
@@ -50,6 +52,8 @@ var require_Client = __commonJS({
|
|
|
50
52
|
constructor(options = {
|
|
51
53
|
url: "",
|
|
52
54
|
propertyId: "",
|
|
55
|
+
organizationId: "",
|
|
56
|
+
apiKey: "",
|
|
53
57
|
headers: {}
|
|
54
58
|
}) {
|
|
55
59
|
super();
|
|
@@ -59,7 +63,8 @@ var require_Client = __commonJS({
|
|
|
59
63
|
throw new Error("options.property is required");
|
|
60
64
|
this.options = options;
|
|
61
65
|
this.isBrowser = typeof window !== "undefined";
|
|
62
|
-
this.
|
|
66
|
+
this.isRefreshingToken = false;
|
|
67
|
+
const config = {
|
|
63
68
|
baseURL: options.url,
|
|
64
69
|
responseType: "json",
|
|
65
70
|
withCredentials: true,
|
|
@@ -69,96 +74,81 @@ var require_Client = __commonJS({
|
|
|
69
74
|
[KohostApiClient.defs.propertyHeader]: options.propertyId,
|
|
70
75
|
...options.headers
|
|
71
76
|
}
|
|
72
|
-
}
|
|
77
|
+
};
|
|
78
|
+
if (options.apiKey) {
|
|
79
|
+
config.headers[KohostApiClient.defs.apiKeyHeader] = options.apiKey;
|
|
80
|
+
}
|
|
81
|
+
this._http = axios.create(config);
|
|
73
82
|
this._http.interceptors.response.use(
|
|
74
83
|
this._handleResponse.bind(this),
|
|
75
84
|
this._handleResponseError.bind(this)
|
|
76
85
|
);
|
|
77
|
-
this._http.interceptors.request.use((config) => {
|
|
78
|
-
if (!this.isBrowser) {
|
|
79
|
-
config.headers[KohostApiClient.defs.authTokenHeader] = this.authToken;
|
|
80
|
-
}
|
|
81
|
-
return config;
|
|
82
|
-
});
|
|
83
86
|
}
|
|
84
87
|
static get defs() {
|
|
85
88
|
return {
|
|
86
|
-
|
|
87
|
-
refreshTokenHeader: "X-Refresh-Token",
|
|
89
|
+
apiKeyHeader: "X-Api-Key",
|
|
88
90
|
propertyHeader: "X-Property-Id"
|
|
89
91
|
};
|
|
90
92
|
}
|
|
91
93
|
_handleResponse(response) {
|
|
92
|
-
var _a;
|
|
93
94
|
try {
|
|
94
|
-
if (
|
|
95
|
+
if (response?.data?.data) {
|
|
95
96
|
response.query = response.data.query;
|
|
96
97
|
response.pagination = response.data.pagination;
|
|
97
98
|
response.data = response.data.data;
|
|
98
99
|
}
|
|
99
|
-
if (!this.isBrowser && response.headers[this.authTokenHeaderKey]) {
|
|
100
|
-
this.authToken = response.headers[this.authTokenHeaderKey];
|
|
101
|
-
}
|
|
102
|
-
if (!this.isBrowser && response.headers[this.refreshTokenHeaderKey]) {
|
|
103
|
-
this.refreshToken = response.headers[this.refreshTokenHeaderKey];
|
|
104
|
-
}
|
|
105
100
|
return response;
|
|
106
101
|
} catch (error) {
|
|
107
102
|
return Promise.reject(error);
|
|
108
103
|
}
|
|
109
104
|
}
|
|
110
105
|
_handleResponseError(error) {
|
|
111
|
-
var _a, _b;
|
|
112
106
|
const { config: originalReq } = error;
|
|
113
107
|
if (!error.response)
|
|
114
108
|
return Promise.reject(error);
|
|
115
109
|
const { status, data } = error.response;
|
|
116
|
-
const errorType =
|
|
117
|
-
const errorMessage =
|
|
110
|
+
const errorType = data?.error?.type;
|
|
111
|
+
const errorMessage = data?.error?.message;
|
|
118
112
|
try {
|
|
119
113
|
const expectedError = status >= 400 && status < 500;
|
|
120
114
|
const newTokensNeeded = expectedError && errorType === "TokenExpiredError";
|
|
115
|
+
if (expectedError && errorMessage === "Phone Verification is required") {
|
|
116
|
+
this._onPhoneVerificationRequired();
|
|
117
|
+
return Promise.reject(error);
|
|
118
|
+
}
|
|
121
119
|
if (expectedError && errorMessage === "Login Required") {
|
|
122
120
|
this._onLoginRequired();
|
|
123
121
|
return Promise.reject(error);
|
|
124
122
|
}
|
|
125
|
-
if (expectedError && errorMessage === "No
|
|
123
|
+
if (expectedError && errorMessage === "No auth header or cookie provided") {
|
|
126
124
|
this._onLoginRequired();
|
|
127
125
|
return Promise.reject(error);
|
|
128
126
|
}
|
|
129
127
|
if (expectedError && newTokensNeeded) {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
128
|
+
while (!this.isRefreshingToken) {
|
|
129
|
+
this.isRefreshingToken = true;
|
|
130
|
+
return this.RefreshToken().then(() => {
|
|
131
|
+
this.isRefreshingToken = false;
|
|
132
|
+
return this._http(originalReq);
|
|
133
|
+
}).catch((err) => {
|
|
134
|
+
this.isRefreshingToken = false;
|
|
135
|
+
return Promise.reject(err);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
133
138
|
}
|
|
134
139
|
} catch (error2) {
|
|
135
140
|
console.log(error2);
|
|
136
141
|
}
|
|
137
142
|
return Promise.reject(error);
|
|
138
143
|
}
|
|
139
|
-
get authTokenHeaderKey() {
|
|
140
|
-
return KohostApiClient.defs.authTokenHeader.toLowerCase();
|
|
141
|
-
}
|
|
142
|
-
get refreshTokenHeaderKey() {
|
|
143
|
-
return KohostApiClient.defs.refreshTokenHeader.toLowerCase();
|
|
144
|
-
}
|
|
145
|
-
get lsTokenKey() {
|
|
146
|
-
return `${this.options.propertyId}_${KohostApiClient.defs.authTokenHeader}`;
|
|
147
|
-
}
|
|
148
|
-
get authToken() {
|
|
149
|
-
return this._authToken;
|
|
150
|
-
}
|
|
151
|
-
/*
|
|
152
|
-
@param {String} token - The token to set
|
|
153
|
-
@returns undefined
|
|
154
|
-
*/
|
|
155
|
-
set authToken(token) {
|
|
156
|
-
this._authToken = token;
|
|
157
|
-
}
|
|
158
144
|
_onLoginRequired() {
|
|
159
145
|
this.emit("LoginRequired");
|
|
160
146
|
}
|
|
147
|
+
_onPhoneVerificationRequired() {
|
|
148
|
+
this.emit("PhoneVerificationRequired");
|
|
149
|
+
}
|
|
161
150
|
};
|
|
151
|
+
__name(KohostApiClient, "KohostApiClient");
|
|
162
152
|
module2.exports = KohostApiClient;
|
|
163
153
|
}
|
|
164
154
|
});
|
package/dist/cjs/index.cjs.js
CHANGED
|
@@ -5,12 +5,16 @@ const Events = require("./Events");
|
|
|
5
5
|
const defs = require("./defs");
|
|
6
6
|
const utils = require("./utils");
|
|
7
7
|
const Client = require("./Client");
|
|
8
|
+
const SocketIoClient = require("./SocketIoClient");
|
|
9
|
+
const AMQPClient = require("./AMQPClient");
|
|
8
10
|
const Kohost = {
|
|
9
11
|
Models,
|
|
10
12
|
Errors,
|
|
11
13
|
Commands,
|
|
12
14
|
Events,
|
|
13
15
|
Client,
|
|
16
|
+
SocketIoClient,
|
|
17
|
+
AMQPClient,
|
|
14
18
|
defs,
|
|
15
19
|
utils
|
|
16
20
|
};
|
package/dist/cjs/utils.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
1
2
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
2
4
|
var __commonJS = (cb, mod) => function __require() {
|
|
3
5
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
4
6
|
};
|
|
@@ -9,6 +11,7 @@ var require_getFormalDeviceType = __commonJS({
|
|
|
9
11
|
function getFormalDeviceType2(deviceType) {
|
|
10
12
|
return deviceType.charAt(0).toUpperCase() + deviceType.slice(1);
|
|
11
13
|
}
|
|
14
|
+
__name(getFormalDeviceType2, "getFormalDeviceType");
|
|
12
15
|
module2.exports = getFormalDeviceType2;
|
|
13
16
|
}
|
|
14
17
|
});
|
|
@@ -22,12 +25,12 @@ var require_deviceTypes = __commonJS({
|
|
|
22
25
|
"thermostat",
|
|
23
26
|
"lock",
|
|
24
27
|
"windowCovering",
|
|
25
|
-
"sceneController",
|
|
26
28
|
"courtesy",
|
|
27
29
|
"alarm",
|
|
28
30
|
"camera",
|
|
29
|
-
"
|
|
30
|
-
"motionSensor"
|
|
31
|
+
"mediaSource",
|
|
32
|
+
"motionSensor",
|
|
33
|
+
"gateway"
|
|
31
34
|
];
|
|
32
35
|
module2.exports = types;
|
|
33
36
|
}
|
|
@@ -40,6 +43,7 @@ var require_getDeviceTypes = __commonJS({
|
|
|
40
43
|
function getDeviceTypes2() {
|
|
41
44
|
return deviceTypes;
|
|
42
45
|
}
|
|
46
|
+
__name(getDeviceTypes2, "getDeviceTypes");
|
|
43
47
|
module2.exports = getDeviceTypes2;
|
|
44
48
|
}
|
|
45
49
|
});
|
|
@@ -49,10 +53,13 @@ var require_common = __commonJS({
|
|
|
49
53
|
"src/schemas/definitions/common.json"(exports2, module2) {
|
|
50
54
|
module2.exports = {
|
|
51
55
|
$schema: "http://json-schema.org/draft-07/schema",
|
|
52
|
-
$id: "https://api.kohost.
|
|
56
|
+
$id: "https://api.kohost.io/schemas/v3/definitions/common.json",
|
|
53
57
|
definitions: {
|
|
54
58
|
id: {
|
|
55
|
-
type: "string"
|
|
59
|
+
type: "string",
|
|
60
|
+
not: {
|
|
61
|
+
enum: ["global", "system"]
|
|
62
|
+
}
|
|
56
63
|
},
|
|
57
64
|
systemData: {
|
|
58
65
|
type: "object",
|
|
@@ -118,6 +125,30 @@ var require_common = __commonJS({
|
|
|
118
125
|
maxLength: 2
|
|
119
126
|
}
|
|
120
127
|
}
|
|
128
|
+
},
|
|
129
|
+
driver: {
|
|
130
|
+
type: "string",
|
|
131
|
+
enum: [
|
|
132
|
+
"aws-kinesis",
|
|
133
|
+
"butler",
|
|
134
|
+
"crestron",
|
|
135
|
+
"ecobee",
|
|
136
|
+
"igor",
|
|
137
|
+
"inncom",
|
|
138
|
+
"kohost-k7",
|
|
139
|
+
"kohost-pms",
|
|
140
|
+
"lg",
|
|
141
|
+
"lirc",
|
|
142
|
+
"mews",
|
|
143
|
+
"pelican-wireless",
|
|
144
|
+
"rebrandly",
|
|
145
|
+
"salto",
|
|
146
|
+
"salto-irn",
|
|
147
|
+
"se",
|
|
148
|
+
"sendgrid",
|
|
149
|
+
"stay-n-touch",
|
|
150
|
+
"twilio"
|
|
151
|
+
]
|
|
121
152
|
}
|
|
122
153
|
}
|
|
123
154
|
};
|
|
@@ -129,17 +160,18 @@ var require_device = __commonJS({
|
|
|
129
160
|
"src/schemas/definitions/device.json"(exports2, module2) {
|
|
130
161
|
module2.exports = {
|
|
131
162
|
$schema: "http://json-schema.org/draft-07/schema",
|
|
132
|
-
$id: "https://api.kohost.
|
|
163
|
+
$id: "https://api.kohost.io/schemas/v3/definitions/device.json",
|
|
133
164
|
definitions: {
|
|
134
165
|
id: {
|
|
135
|
-
$ref: "https://api.kohost.
|
|
166
|
+
$ref: "https://api.kohost.io/schemas/v3/definitions/common.json#/definitions/id"
|
|
136
167
|
},
|
|
137
168
|
systemData: {
|
|
138
|
-
$ref: "https://api.kohost.
|
|
169
|
+
$ref: "https://api.kohost.io/schemas/v3/definitions/common.json#/definitions/systemData"
|
|
139
170
|
},
|
|
140
171
|
type: {
|
|
141
172
|
type: "string",
|
|
142
173
|
enum: [
|
|
174
|
+
"alarm",
|
|
143
175
|
"dimmer",
|
|
144
176
|
"switch",
|
|
145
177
|
"motionSensor",
|
|
@@ -149,8 +181,13 @@ var require_device = __commonJS({
|
|
|
149
181
|
"thermostat",
|
|
150
182
|
"lock",
|
|
151
183
|
"courtesy",
|
|
152
|
-
"
|
|
153
|
-
"
|
|
184
|
+
"gateway",
|
|
185
|
+
"tv",
|
|
186
|
+
"dvr",
|
|
187
|
+
"appleTv",
|
|
188
|
+
"discPlayer",
|
|
189
|
+
"mediaPlayer",
|
|
190
|
+
"uncontrolledDevice"
|
|
154
191
|
]
|
|
155
192
|
},
|
|
156
193
|
name: {
|
|
@@ -179,7 +216,11 @@ var require_device = __commonJS({
|
|
|
179
216
|
"softwareFailure",
|
|
180
217
|
"hardwareFailureWithCode",
|
|
181
218
|
"softwareFailureWithCode",
|
|
182
|
-
"motionDetection"
|
|
219
|
+
"motionDetection",
|
|
220
|
+
"airFilterNeedsCleaned",
|
|
221
|
+
"smokeDetected",
|
|
222
|
+
"outsideSafeTemperatureRange",
|
|
223
|
+
"outsideSafeHumidityRange"
|
|
183
224
|
]
|
|
184
225
|
}
|
|
185
226
|
},
|
|
@@ -193,6 +234,9 @@ var require_device = __commonJS({
|
|
|
193
234
|
timestamp: {
|
|
194
235
|
type: "number",
|
|
195
236
|
minimum: 1655907956593
|
|
237
|
+
},
|
|
238
|
+
description: {
|
|
239
|
+
type: "string"
|
|
196
240
|
}
|
|
197
241
|
}
|
|
198
242
|
},
|
|
@@ -200,6 +244,10 @@ var require_device = __commonJS({
|
|
|
200
244
|
type: "number",
|
|
201
245
|
minimum: 0,
|
|
202
246
|
maximum: 100
|
|
247
|
+
},
|
|
248
|
+
watts: {
|
|
249
|
+
type: "number",
|
|
250
|
+
minimum: 0
|
|
203
251
|
}
|
|
204
252
|
}
|
|
205
253
|
};
|
|
@@ -225,13 +273,201 @@ var require_schema = __commonJS({
|
|
|
225
273
|
ajv.addSchema(commonDefs);
|
|
226
274
|
ajv.addSchema(deviceDefs);
|
|
227
275
|
module2.exports = {
|
|
228
|
-
add: function add(schema2) {
|
|
276
|
+
add: /* @__PURE__ */ __name(function add(schema2) {
|
|
229
277
|
ajv.addSchema(schema2);
|
|
230
|
-
},
|
|
231
|
-
compile: function compile(schema2) {
|
|
278
|
+
}, "add"),
|
|
279
|
+
compile: /* @__PURE__ */ __name(function compile(schema2) {
|
|
232
280
|
return ajv.compile(schema2);
|
|
281
|
+
}, "compile")
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
// src/Errors/AppError.js
|
|
287
|
+
var require_AppError = __commonJS({
|
|
288
|
+
"src/Errors/AppError.js"(exports2, module2) {
|
|
289
|
+
module2.exports = /* @__PURE__ */ __name(class AppError extends Error {
|
|
290
|
+
constructor(message = "Internal Server Error", options) {
|
|
291
|
+
super(message, options);
|
|
292
|
+
this.type = this.constructor.name;
|
|
293
|
+
this.statusCode = 500;
|
|
294
|
+
Object.setPrototypeOf(this, AppError.prototype);
|
|
295
|
+
}
|
|
296
|
+
}, "AppError");
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
|
|
300
|
+
// src/Errors/AuthenticationError.js
|
|
301
|
+
var require_AuthenticationError = __commonJS({
|
|
302
|
+
"src/Errors/AuthenticationError.js"(exports2, module2) {
|
|
303
|
+
var AppError = require_AppError();
|
|
304
|
+
module2.exports = /* @__PURE__ */ __name(class AuthenticationError extends AppError {
|
|
305
|
+
constructor(message = "Authentication Error", options = {}) {
|
|
306
|
+
super(message, options);
|
|
307
|
+
this.statusCode = 401;
|
|
308
|
+
Object.setPrototypeOf(this, AuthenticationError.prototype);
|
|
309
|
+
}
|
|
310
|
+
}, "AuthenticationError");
|
|
311
|
+
}
|
|
312
|
+
});
|
|
313
|
+
|
|
314
|
+
// src/Errors/AuthorizationError.js
|
|
315
|
+
var require_AuthorizationError = __commonJS({
|
|
316
|
+
"src/Errors/AuthorizationError.js"(exports2, module2) {
|
|
317
|
+
var AppError = require_AppError();
|
|
318
|
+
module2.exports = /* @__PURE__ */ __name(class AuthorizationError extends AppError {
|
|
319
|
+
constructor(message = "Authorization Error", options = {}) {
|
|
320
|
+
super(message, options);
|
|
321
|
+
this.statusCode = 403;
|
|
322
|
+
Object.setPrototypeOf(this, AuthorizationError.prototype);
|
|
323
|
+
}
|
|
324
|
+
}, "AuthorizationError");
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
// src/Errors/DeviceCommError.js
|
|
329
|
+
var require_DeviceCommError = __commonJS({
|
|
330
|
+
"src/Errors/DeviceCommError.js"(exports2, module2) {
|
|
331
|
+
var AppError = require_AppError();
|
|
332
|
+
module2.exports = /* @__PURE__ */ __name(class DeviceCommError extends AppError {
|
|
333
|
+
constructor(message = "Device Communication Error", options = {}) {
|
|
334
|
+
super(message, options);
|
|
335
|
+
this.statusCode = 503;
|
|
336
|
+
Object.setPrototypeOf(this, DeviceCommError.prototype);
|
|
337
|
+
}
|
|
338
|
+
}, "DeviceCommError");
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
// src/Errors/LoginError.js
|
|
343
|
+
var require_LoginError = __commonJS({
|
|
344
|
+
"src/Errors/LoginError.js"(exports2, module2) {
|
|
345
|
+
var AppError = require_AppError();
|
|
346
|
+
module2.exports = /* @__PURE__ */ __name(class LoginError extends AppError {
|
|
347
|
+
constructor(message = "Invalid Login information provided", options = {}) {
|
|
348
|
+
super(message, options);
|
|
349
|
+
this.statusCode = 401;
|
|
350
|
+
Object.setPrototypeOf(this, LoginError.prototype);
|
|
233
351
|
}
|
|
352
|
+
}, "LoginError");
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
|
|
356
|
+
// src/Errors/NotFoundError.js
|
|
357
|
+
var require_NotFoundError = __commonJS({
|
|
358
|
+
"src/Errors/NotFoundError.js"(exports2, module2) {
|
|
359
|
+
var AppError = require_AppError();
|
|
360
|
+
module2.exports = /* @__PURE__ */ __name(class NotFoundError extends AppError {
|
|
361
|
+
constructor(message = "Resource Not Found", options = {}) {
|
|
362
|
+
super(message, options);
|
|
363
|
+
this.statusCode = 404;
|
|
364
|
+
Object.setPrototypeOf(this, NotFoundError.prototype);
|
|
365
|
+
}
|
|
366
|
+
}, "NotFoundError");
|
|
367
|
+
}
|
|
368
|
+
});
|
|
369
|
+
|
|
370
|
+
// src/Errors/RequestError.js
|
|
371
|
+
var require_RequestError = __commonJS({
|
|
372
|
+
"src/Errors/RequestError.js"(exports2, module2) {
|
|
373
|
+
var AppError = require_AppError();
|
|
374
|
+
module2.exports = /* @__PURE__ */ __name(class RequestError extends AppError {
|
|
375
|
+
constructor(message = "Bad Request", options = {}) {
|
|
376
|
+
super(message, options);
|
|
377
|
+
this.statusCode = 400;
|
|
378
|
+
Object.setPrototypeOf(this, RequestError.prototype);
|
|
379
|
+
}
|
|
380
|
+
}, "RequestError");
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
|
|
384
|
+
// src/Errors/SystemCommError.js
|
|
385
|
+
var require_SystemCommError = __commonJS({
|
|
386
|
+
"src/Errors/SystemCommError.js"(exports2, module2) {
|
|
387
|
+
var AppError = require_AppError();
|
|
388
|
+
module2.exports = /* @__PURE__ */ __name(class SystemCommError extends AppError {
|
|
389
|
+
constructor(message = "System Communication Error", options = {}) {
|
|
390
|
+
super(message, options);
|
|
391
|
+
this.statusCode = 503;
|
|
392
|
+
Object.setPrototypeOf(this, SystemCommError.prototype);
|
|
393
|
+
}
|
|
394
|
+
}, "SystemCommError");
|
|
395
|
+
}
|
|
396
|
+
});
|
|
397
|
+
|
|
398
|
+
// src/Errors/TokenExpiredError.js
|
|
399
|
+
var require_TokenExpiredError = __commonJS({
|
|
400
|
+
"src/Errors/TokenExpiredError.js"(exports2, module2) {
|
|
401
|
+
var AppError = require_AppError();
|
|
402
|
+
module2.exports = /* @__PURE__ */ __name(class TokenExpiredError extends AppError {
|
|
403
|
+
constructor(message = "Token Expired", options = {}) {
|
|
404
|
+
super(message, options);
|
|
405
|
+
this.statusCode = 401;
|
|
406
|
+
Object.setPrototypeOf(this, TokenExpiredError.prototype);
|
|
407
|
+
}
|
|
408
|
+
}, "TokenExpiredError");
|
|
409
|
+
}
|
|
410
|
+
});
|
|
411
|
+
|
|
412
|
+
// src/Errors/UnprocessableRequestError.js
|
|
413
|
+
var require_UnprocessableRequestError = __commonJS({
|
|
414
|
+
"src/Errors/UnprocessableRequestError.js"(exports2, module2) {
|
|
415
|
+
var AppError = require_AppError();
|
|
416
|
+
module2.exports = /* @__PURE__ */ __name(class UnprocessableRequestError extends AppError {
|
|
417
|
+
constructor(message = "Unprocessable Request Error", options = {}) {
|
|
418
|
+
super(message, options);
|
|
419
|
+
this.statusCode = 422;
|
|
420
|
+
Object.setPrototypeOf(this, UnprocessableRequestError.prototype);
|
|
421
|
+
}
|
|
422
|
+
}, "UnprocessableRequestError");
|
|
423
|
+
}
|
|
424
|
+
});
|
|
425
|
+
|
|
426
|
+
// src/Errors/ValidationError.js
|
|
427
|
+
var require_ValidationError = __commonJS({
|
|
428
|
+
"src/Errors/ValidationError.js"(exports2, module2) {
|
|
429
|
+
var AppError = require_AppError();
|
|
430
|
+
module2.exports = /* @__PURE__ */ __name(class ValidationError extends AppError {
|
|
431
|
+
constructor(message = "Validation Error", options = {}) {
|
|
432
|
+
super(message, options);
|
|
433
|
+
this.statusCode = 400;
|
|
434
|
+
Object.setPrototypeOf(this, ValidationError.prototype);
|
|
435
|
+
}
|
|
436
|
+
}, "ValidationError");
|
|
437
|
+
}
|
|
438
|
+
});
|
|
439
|
+
|
|
440
|
+
// src/Errors/index.js
|
|
441
|
+
var require_Errors = __commonJS({
|
|
442
|
+
"src/Errors/index.js"(exports2, module2) {
|
|
443
|
+
var Errors = {
|
|
444
|
+
AppError: require_AppError(),
|
|
445
|
+
AuthenticationError: require_AuthenticationError(),
|
|
446
|
+
AuthorizationError: require_AuthorizationError(),
|
|
447
|
+
DeviceCommError: require_DeviceCommError(),
|
|
448
|
+
LoginError: require_LoginError(),
|
|
449
|
+
NotFoundError: require_NotFoundError(),
|
|
450
|
+
RequestError: require_RequestError(),
|
|
451
|
+
SystemCommError: require_SystemCommError(),
|
|
452
|
+
TokenExpiredError: require_TokenExpiredError(),
|
|
453
|
+
UnprocessableRequestError: require_UnprocessableRequestError(),
|
|
454
|
+
ValidationError: require_ValidationError()
|
|
234
455
|
};
|
|
456
|
+
module2.exports = Errors;
|
|
457
|
+
}
|
|
458
|
+
});
|
|
459
|
+
|
|
460
|
+
// src/utils/errorFactory.js
|
|
461
|
+
var require_errorFactory = __commonJS({
|
|
462
|
+
"src/utils/errorFactory.js"(exports2, module2) {
|
|
463
|
+
var Errors = require_Errors();
|
|
464
|
+
module2.exports = /* @__PURE__ */ __name(function errorFactory2(errName) {
|
|
465
|
+
const AllErrors = Object.values(Errors);
|
|
466
|
+
const TheError = AllErrors.find((E) => E.prototype.name === errName);
|
|
467
|
+
if (!TheError)
|
|
468
|
+
return new Error("Invalid error name: " + errName);
|
|
469
|
+
return TheError;
|
|
470
|
+
}, "errorFactory");
|
|
235
471
|
}
|
|
236
472
|
});
|
|
237
473
|
|
|
@@ -239,8 +475,10 @@ var require_schema = __commonJS({
|
|
|
239
475
|
var getFormalDeviceType = require_getFormalDeviceType();
|
|
240
476
|
var getDeviceTypes = require_getDeviceTypes();
|
|
241
477
|
var schema = require_schema();
|
|
478
|
+
var errorFactory = require_errorFactory();
|
|
242
479
|
module.exports = {
|
|
243
480
|
getFormalDeviceType,
|
|
244
481
|
getDeviceTypes,
|
|
245
|
-
schema
|
|
482
|
+
schema,
|
|
483
|
+
errorFactory
|
|
246
484
|
};
|