@kohost/api-client 3.0.0-beta.4 → 3.0.0-beta.41
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 +1702 -1112
- package/dist/cjs/Commands.js +308 -93
- package/dist/cjs/Errors.js +24 -22
- package/dist/cjs/Events.js +225 -45
- package/dist/cjs/Models.js +1447 -555
- 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 +257 -15
- package/dist/esm/Client.js +1992 -1274
- package/dist/esm/Client.js.map +4 -4
- package/dist/esm/Commands.js +308 -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 +225 -45
- package/dist/esm/Events.js.map +3 -3
- package/dist/esm/Models.js +2062 -551
- package/dist/esm/Models.js.map +4 -4
- package/dist/esm/SocketIoClient.js +4546 -0
- package/dist/esm/SocketIoClient.js.map +7 -0
- package/dist/esm/defs.js +394 -276
- package/dist/esm/defs.js.map +4 -4
- package/dist/esm/index.js +11 -10
- package/dist/esm/utils.js +640 -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/CreateImageUploadEndpoint.js +32 -0
- 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/DeleteMediaFile.js +32 -0
- 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/DescribeLockCredential.js +32 -0
- package/dist/useCases/{DescribeSource.js → DescribeMediaSource.js} +3 -3
- package/dist/useCases/DescribeMyAccessCredentials.js +32 -0
- package/dist/useCases/DescribeMyProperty.js +2 -2
- package/dist/useCases/DescribeOrganization.js +32 -0
- 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/{DeleteIntegration.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/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/{AdminDescribeProperty.js → ListUserSpaces.js} +3 -3
- 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",
|
|
@@ -62,6 +69,10 @@ var require_common = __commonJS({
|
|
|
62
69
|
type: "object",
|
|
63
70
|
default: {}
|
|
64
71
|
},
|
|
72
|
+
date: {
|
|
73
|
+
type: ["string", "object"],
|
|
74
|
+
format: "date-time"
|
|
75
|
+
},
|
|
65
76
|
createdAt: {
|
|
66
77
|
type: ["string", "object"],
|
|
67
78
|
format: "date-time"
|
|
@@ -118,6 +129,30 @@ var require_common = __commonJS({
|
|
|
118
129
|
maxLength: 2
|
|
119
130
|
}
|
|
120
131
|
}
|
|
132
|
+
},
|
|
133
|
+
driver: {
|
|
134
|
+
type: "string",
|
|
135
|
+
enum: [
|
|
136
|
+
"aws-kinesis",
|
|
137
|
+
"butler",
|
|
138
|
+
"crestron",
|
|
139
|
+
"ecobee",
|
|
140
|
+
"igor",
|
|
141
|
+
"inncom",
|
|
142
|
+
"kohost-k7",
|
|
143
|
+
"kohost-pms",
|
|
144
|
+
"lg",
|
|
145
|
+
"lirc",
|
|
146
|
+
"mews",
|
|
147
|
+
"pelican-wireless",
|
|
148
|
+
"rebrandly",
|
|
149
|
+
"salto",
|
|
150
|
+
"salto-irn",
|
|
151
|
+
"se",
|
|
152
|
+
"sendgrid",
|
|
153
|
+
"stay-n-touch",
|
|
154
|
+
"twilio"
|
|
155
|
+
]
|
|
121
156
|
}
|
|
122
157
|
}
|
|
123
158
|
};
|
|
@@ -129,17 +164,18 @@ var require_device = __commonJS({
|
|
|
129
164
|
"src/schemas/definitions/device.json"(exports2, module2) {
|
|
130
165
|
module2.exports = {
|
|
131
166
|
$schema: "http://json-schema.org/draft-07/schema",
|
|
132
|
-
$id: "https://api.kohost.
|
|
167
|
+
$id: "https://api.kohost.io/schemas/v3/definitions/device.json",
|
|
133
168
|
definitions: {
|
|
134
169
|
id: {
|
|
135
|
-
$ref: "https://api.kohost.
|
|
170
|
+
$ref: "https://api.kohost.io/schemas/v3/definitions/common.json#/definitions/id"
|
|
136
171
|
},
|
|
137
172
|
systemData: {
|
|
138
|
-
$ref: "https://api.kohost.
|
|
173
|
+
$ref: "https://api.kohost.io/schemas/v3/definitions/common.json#/definitions/systemData"
|
|
139
174
|
},
|
|
140
175
|
type: {
|
|
141
176
|
type: "string",
|
|
142
177
|
enum: [
|
|
178
|
+
"alarm",
|
|
143
179
|
"dimmer",
|
|
144
180
|
"switch",
|
|
145
181
|
"motionSensor",
|
|
@@ -149,8 +185,13 @@ var require_device = __commonJS({
|
|
|
149
185
|
"thermostat",
|
|
150
186
|
"lock",
|
|
151
187
|
"courtesy",
|
|
152
|
-
"
|
|
153
|
-
"
|
|
188
|
+
"gateway",
|
|
189
|
+
"tv",
|
|
190
|
+
"dvr",
|
|
191
|
+
"appleTv",
|
|
192
|
+
"discPlayer",
|
|
193
|
+
"mediaPlayer",
|
|
194
|
+
"uncontrolledDevice"
|
|
154
195
|
]
|
|
155
196
|
},
|
|
156
197
|
name: {
|
|
@@ -179,7 +220,11 @@ var require_device = __commonJS({
|
|
|
179
220
|
"softwareFailure",
|
|
180
221
|
"hardwareFailureWithCode",
|
|
181
222
|
"softwareFailureWithCode",
|
|
182
|
-
"motionDetection"
|
|
223
|
+
"motionDetection",
|
|
224
|
+
"airFilterNeedsCleaned",
|
|
225
|
+
"smokeDetected",
|
|
226
|
+
"outsideSafeTemperatureRange",
|
|
227
|
+
"outsideSafeHumidityRange"
|
|
183
228
|
]
|
|
184
229
|
}
|
|
185
230
|
},
|
|
@@ -193,6 +238,9 @@ var require_device = __commonJS({
|
|
|
193
238
|
timestamp: {
|
|
194
239
|
type: "number",
|
|
195
240
|
minimum: 1655907956593
|
|
241
|
+
},
|
|
242
|
+
description: {
|
|
243
|
+
type: "string"
|
|
196
244
|
}
|
|
197
245
|
}
|
|
198
246
|
},
|
|
@@ -200,6 +248,10 @@ var require_device = __commonJS({
|
|
|
200
248
|
type: "number",
|
|
201
249
|
minimum: 0,
|
|
202
250
|
maximum: 100
|
|
251
|
+
},
|
|
252
|
+
watts: {
|
|
253
|
+
type: "number",
|
|
254
|
+
minimum: 0
|
|
203
255
|
}
|
|
204
256
|
}
|
|
205
257
|
};
|
|
@@ -225,13 +277,201 @@ var require_schema = __commonJS({
|
|
|
225
277
|
ajv.addSchema(commonDefs);
|
|
226
278
|
ajv.addSchema(deviceDefs);
|
|
227
279
|
module2.exports = {
|
|
228
|
-
add: function add(schema2) {
|
|
280
|
+
add: /* @__PURE__ */ __name(function add(schema2) {
|
|
229
281
|
ajv.addSchema(schema2);
|
|
230
|
-
},
|
|
231
|
-
compile: function compile(schema2) {
|
|
282
|
+
}, "add"),
|
|
283
|
+
compile: /* @__PURE__ */ __name(function compile(schema2) {
|
|
232
284
|
return ajv.compile(schema2);
|
|
285
|
+
}, "compile")
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
// src/Errors/AppError.js
|
|
291
|
+
var require_AppError = __commonJS({
|
|
292
|
+
"src/Errors/AppError.js"(exports2, module2) {
|
|
293
|
+
module2.exports = /* @__PURE__ */ __name(class AppError extends Error {
|
|
294
|
+
constructor(message = "Internal Server Error", options) {
|
|
295
|
+
super(message, options);
|
|
296
|
+
this.type = this.constructor.name;
|
|
297
|
+
this.statusCode = 500;
|
|
298
|
+
Object.setPrototypeOf(this, AppError.prototype);
|
|
299
|
+
}
|
|
300
|
+
}, "AppError");
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
// src/Errors/AuthenticationError.js
|
|
305
|
+
var require_AuthenticationError = __commonJS({
|
|
306
|
+
"src/Errors/AuthenticationError.js"(exports2, module2) {
|
|
307
|
+
var AppError = require_AppError();
|
|
308
|
+
module2.exports = /* @__PURE__ */ __name(class AuthenticationError extends AppError {
|
|
309
|
+
constructor(message = "Authentication Error", options = {}) {
|
|
310
|
+
super(message, options);
|
|
311
|
+
this.statusCode = 401;
|
|
312
|
+
Object.setPrototypeOf(this, AuthenticationError.prototype);
|
|
313
|
+
}
|
|
314
|
+
}, "AuthenticationError");
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
// src/Errors/AuthorizationError.js
|
|
319
|
+
var require_AuthorizationError = __commonJS({
|
|
320
|
+
"src/Errors/AuthorizationError.js"(exports2, module2) {
|
|
321
|
+
var AppError = require_AppError();
|
|
322
|
+
module2.exports = /* @__PURE__ */ __name(class AuthorizationError extends AppError {
|
|
323
|
+
constructor(message = "Authorization Error", options = {}) {
|
|
324
|
+
super(message, options);
|
|
325
|
+
this.statusCode = 403;
|
|
326
|
+
Object.setPrototypeOf(this, AuthorizationError.prototype);
|
|
327
|
+
}
|
|
328
|
+
}, "AuthorizationError");
|
|
329
|
+
}
|
|
330
|
+
});
|
|
331
|
+
|
|
332
|
+
// src/Errors/DeviceCommError.js
|
|
333
|
+
var require_DeviceCommError = __commonJS({
|
|
334
|
+
"src/Errors/DeviceCommError.js"(exports2, module2) {
|
|
335
|
+
var AppError = require_AppError();
|
|
336
|
+
module2.exports = /* @__PURE__ */ __name(class DeviceCommError extends AppError {
|
|
337
|
+
constructor(message = "Device Communication Error", options = {}) {
|
|
338
|
+
super(message, options);
|
|
339
|
+
this.statusCode = 503;
|
|
340
|
+
Object.setPrototypeOf(this, DeviceCommError.prototype);
|
|
341
|
+
}
|
|
342
|
+
}, "DeviceCommError");
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
|
|
346
|
+
// src/Errors/LoginError.js
|
|
347
|
+
var require_LoginError = __commonJS({
|
|
348
|
+
"src/Errors/LoginError.js"(exports2, module2) {
|
|
349
|
+
var AppError = require_AppError();
|
|
350
|
+
module2.exports = /* @__PURE__ */ __name(class LoginError extends AppError {
|
|
351
|
+
constructor(message = "Invalid Login information provided", options = {}) {
|
|
352
|
+
super(message, options);
|
|
353
|
+
this.statusCode = 401;
|
|
354
|
+
Object.setPrototypeOf(this, LoginError.prototype);
|
|
355
|
+
}
|
|
356
|
+
}, "LoginError");
|
|
357
|
+
}
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
// src/Errors/NotFoundError.js
|
|
361
|
+
var require_NotFoundError = __commonJS({
|
|
362
|
+
"src/Errors/NotFoundError.js"(exports2, module2) {
|
|
363
|
+
var AppError = require_AppError();
|
|
364
|
+
module2.exports = /* @__PURE__ */ __name(class NotFoundError extends AppError {
|
|
365
|
+
constructor(message = "Resource Not Found", options = {}) {
|
|
366
|
+
super(message, options);
|
|
367
|
+
this.statusCode = 404;
|
|
368
|
+
Object.setPrototypeOf(this, NotFoundError.prototype);
|
|
369
|
+
}
|
|
370
|
+
}, "NotFoundError");
|
|
371
|
+
}
|
|
372
|
+
});
|
|
373
|
+
|
|
374
|
+
// src/Errors/RequestError.js
|
|
375
|
+
var require_RequestError = __commonJS({
|
|
376
|
+
"src/Errors/RequestError.js"(exports2, module2) {
|
|
377
|
+
var AppError = require_AppError();
|
|
378
|
+
module2.exports = /* @__PURE__ */ __name(class RequestError extends AppError {
|
|
379
|
+
constructor(message = "Bad Request", options = {}) {
|
|
380
|
+
super(message, options);
|
|
381
|
+
this.statusCode = 400;
|
|
382
|
+
Object.setPrototypeOf(this, RequestError.prototype);
|
|
383
|
+
}
|
|
384
|
+
}, "RequestError");
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
// src/Errors/SystemCommError.js
|
|
389
|
+
var require_SystemCommError = __commonJS({
|
|
390
|
+
"src/Errors/SystemCommError.js"(exports2, module2) {
|
|
391
|
+
var AppError = require_AppError();
|
|
392
|
+
module2.exports = /* @__PURE__ */ __name(class SystemCommError extends AppError {
|
|
393
|
+
constructor(message = "System Communication Error", options = {}) {
|
|
394
|
+
super(message, options);
|
|
395
|
+
this.statusCode = 503;
|
|
396
|
+
Object.setPrototypeOf(this, SystemCommError.prototype);
|
|
397
|
+
}
|
|
398
|
+
}, "SystemCommError");
|
|
399
|
+
}
|
|
400
|
+
});
|
|
401
|
+
|
|
402
|
+
// src/Errors/TokenExpiredError.js
|
|
403
|
+
var require_TokenExpiredError = __commonJS({
|
|
404
|
+
"src/Errors/TokenExpiredError.js"(exports2, module2) {
|
|
405
|
+
var AppError = require_AppError();
|
|
406
|
+
module2.exports = /* @__PURE__ */ __name(class TokenExpiredError extends AppError {
|
|
407
|
+
constructor(message = "Token Expired", options = {}) {
|
|
408
|
+
super(message, options);
|
|
409
|
+
this.statusCode = 401;
|
|
410
|
+
Object.setPrototypeOf(this, TokenExpiredError.prototype);
|
|
411
|
+
}
|
|
412
|
+
}, "TokenExpiredError");
|
|
413
|
+
}
|
|
414
|
+
});
|
|
415
|
+
|
|
416
|
+
// src/Errors/UnprocessableRequestError.js
|
|
417
|
+
var require_UnprocessableRequestError = __commonJS({
|
|
418
|
+
"src/Errors/UnprocessableRequestError.js"(exports2, module2) {
|
|
419
|
+
var AppError = require_AppError();
|
|
420
|
+
module2.exports = /* @__PURE__ */ __name(class UnprocessableRequestError extends AppError {
|
|
421
|
+
constructor(message = "Unprocessable Request Error", options = {}) {
|
|
422
|
+
super(message, options);
|
|
423
|
+
this.statusCode = 422;
|
|
424
|
+
Object.setPrototypeOf(this, UnprocessableRequestError.prototype);
|
|
425
|
+
}
|
|
426
|
+
}, "UnprocessableRequestError");
|
|
427
|
+
}
|
|
428
|
+
});
|
|
429
|
+
|
|
430
|
+
// src/Errors/ValidationError.js
|
|
431
|
+
var require_ValidationError = __commonJS({
|
|
432
|
+
"src/Errors/ValidationError.js"(exports2, module2) {
|
|
433
|
+
var AppError = require_AppError();
|
|
434
|
+
module2.exports = /* @__PURE__ */ __name(class ValidationError extends AppError {
|
|
435
|
+
constructor(message = "Validation Error", options = {}) {
|
|
436
|
+
super(message, options);
|
|
437
|
+
this.statusCode = 400;
|
|
438
|
+
Object.setPrototypeOf(this, ValidationError.prototype);
|
|
233
439
|
}
|
|
440
|
+
}, "ValidationError");
|
|
441
|
+
}
|
|
442
|
+
});
|
|
443
|
+
|
|
444
|
+
// src/Errors/index.js
|
|
445
|
+
var require_Errors = __commonJS({
|
|
446
|
+
"src/Errors/index.js"(exports2, module2) {
|
|
447
|
+
var Errors = {
|
|
448
|
+
AppError: require_AppError(),
|
|
449
|
+
AuthenticationError: require_AuthenticationError(),
|
|
450
|
+
AuthorizationError: require_AuthorizationError(),
|
|
451
|
+
DeviceCommError: require_DeviceCommError(),
|
|
452
|
+
LoginError: require_LoginError(),
|
|
453
|
+
NotFoundError: require_NotFoundError(),
|
|
454
|
+
RequestError: require_RequestError(),
|
|
455
|
+
SystemCommError: require_SystemCommError(),
|
|
456
|
+
TokenExpiredError: require_TokenExpiredError(),
|
|
457
|
+
UnprocessableRequestError: require_UnprocessableRequestError(),
|
|
458
|
+
ValidationError: require_ValidationError()
|
|
234
459
|
};
|
|
460
|
+
module2.exports = Errors;
|
|
461
|
+
}
|
|
462
|
+
});
|
|
463
|
+
|
|
464
|
+
// src/utils/errorFactory.js
|
|
465
|
+
var require_errorFactory = __commonJS({
|
|
466
|
+
"src/utils/errorFactory.js"(exports2, module2) {
|
|
467
|
+
var Errors = require_Errors();
|
|
468
|
+
module2.exports = /* @__PURE__ */ __name(function errorFactory2(errName) {
|
|
469
|
+
const AllErrors = Object.values(Errors);
|
|
470
|
+
const TheError = AllErrors.find((E) => E.prototype.name === errName);
|
|
471
|
+
if (!TheError)
|
|
472
|
+
return new Error("Invalid error name: " + errName);
|
|
473
|
+
return TheError;
|
|
474
|
+
}, "errorFactory");
|
|
235
475
|
}
|
|
236
476
|
});
|
|
237
477
|
|
|
@@ -239,8 +479,10 @@ var require_schema = __commonJS({
|
|
|
239
479
|
var getFormalDeviceType = require_getFormalDeviceType();
|
|
240
480
|
var getDeviceTypes = require_getDeviceTypes();
|
|
241
481
|
var schema = require_schema();
|
|
482
|
+
var errorFactory = require_errorFactory();
|
|
242
483
|
module.exports = {
|
|
243
484
|
getFormalDeviceType,
|
|
244
485
|
getDeviceTypes,
|
|
245
|
-
schema
|
|
486
|
+
schema,
|
|
487
|
+
errorFactory
|
|
246
488
|
};
|