@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.
Files changed (167) hide show
  1. package/README.md +71 -0
  2. package/dist/cjs/AMQPClient.js +425 -0
  3. package/dist/cjs/Client.js +1702 -1112
  4. package/dist/cjs/Commands.js +308 -93
  5. package/dist/cjs/Errors.js +24 -22
  6. package/dist/cjs/Events.js +225 -45
  7. package/dist/cjs/Models.js +1447 -555
  8. package/dist/cjs/SocketIoClient.js +66 -0
  9. package/dist/cjs/defs.js +37 -47
  10. package/dist/cjs/index.cjs.js +4 -0
  11. package/dist/cjs/utils.js +257 -15
  12. package/dist/esm/Client.js +1992 -1274
  13. package/dist/esm/Client.js.map +4 -4
  14. package/dist/esm/Commands.js +308 -93
  15. package/dist/esm/Commands.js.map +3 -3
  16. package/dist/esm/Errors.js +24 -22
  17. package/dist/esm/Errors.js.map +1 -1
  18. package/dist/esm/Events.js +225 -45
  19. package/dist/esm/Events.js.map +3 -3
  20. package/dist/esm/Models.js +2062 -551
  21. package/dist/esm/Models.js.map +4 -4
  22. package/dist/esm/SocketIoClient.js +4546 -0
  23. package/dist/esm/SocketIoClient.js.map +7 -0
  24. package/dist/esm/defs.js +394 -276
  25. package/dist/esm/defs.js.map +4 -4
  26. package/dist/esm/index.js +11 -10
  27. package/dist/esm/utils.js +640 -63
  28. package/dist/esm/utils.js.map +3 -3
  29. package/dist/useCases/AddDefaultScenesToRooms.js +2 -2
  30. package/dist/useCases/AddScenesToRoom.js +2 -2
  31. package/dist/useCases/AdminUpdateCustomer.js +32 -0
  32. package/dist/useCases/AssignSpaceToReservation.js +32 -0
  33. package/dist/useCases/BatchNotifyCheckIn.js +32 -0
  34. package/dist/useCases/BatchNotifyPreArrival.js +2 -2
  35. package/dist/useCases/CheckInReservation.js +2 -2
  36. package/dist/useCases/CheckVerificationCode.js +2 -2
  37. package/dist/useCases/CreateAlarm.js +2 -2
  38. package/dist/useCases/CreateCamera.js +2 -2
  39. package/dist/useCases/CreateCourtesy.js +2 -2
  40. package/dist/useCases/CreateDefaultScenes.js +2 -2
  41. package/dist/useCases/CreateDimmer.js +2 -2
  42. package/dist/useCases/CreateDiscoveredDevice.js +2 -2
  43. package/dist/useCases/CreateDiscoveredDeviceAssociation.js +2 -2
  44. package/dist/useCases/CreateImageUploadEndpoint.js +32 -0
  45. package/dist/useCases/CreateLock.js +2 -2
  46. package/dist/useCases/{CreateSource.js → CreateMediaSource.js} +3 -3
  47. package/dist/useCases/CreateOrganization.js +32 -0
  48. package/dist/useCases/{AdminCreateProperty.js → CreateProperty.js} +3 -3
  49. package/dist/useCases/CreateReservation.js +2 -2
  50. package/dist/useCases/CreateRoom.js +2 -2
  51. package/dist/useCases/CreateRoomInSpace.js +2 -2
  52. package/dist/useCases/CreateSpace.js +2 -2
  53. package/dist/useCases/{CreateIntegration.js → CreateSpaceType.js} +3 -3
  54. package/dist/useCases/CreateSwitch.js +2 -2
  55. package/dist/useCases/CreateThermostat.js +2 -2
  56. package/dist/useCases/CreateTicket.js +2 -2
  57. package/dist/useCases/CreateTicketMessage.js +2 -2
  58. package/dist/useCases/CreateUser.js +2 -2
  59. package/dist/useCases/CreateWindowCovering.js +2 -2
  60. package/dist/useCases/DeleteAlarm.js +2 -2
  61. package/dist/useCases/DeleteCamera.js +2 -2
  62. package/dist/useCases/DeleteCourtesy.js +2 -2
  63. package/dist/useCases/DeleteDimmer.js +2 -2
  64. package/dist/useCases/DeleteDiscoveredDevice.js +2 -2
  65. package/dist/useCases/DeleteLock.js +2 -2
  66. package/dist/useCases/DeleteMediaFile.js +32 -0
  67. package/dist/useCases/{DeleteSource.js → DeleteMediaSource.js} +3 -3
  68. package/dist/useCases/DeleteReservation.js +2 -2
  69. package/dist/useCases/DeleteRoom.js +2 -2
  70. package/dist/useCases/DeleteSpace.js +2 -2
  71. package/dist/useCases/DeleteSpaceType.js +32 -0
  72. package/dist/useCases/DeleteSwitch.js +2 -2
  73. package/dist/useCases/DeleteThermostat.js +2 -2
  74. package/dist/useCases/DeleteTicket.js +2 -2
  75. package/dist/useCases/DeleteUser.js +2 -2
  76. package/dist/useCases/DeleteWindowCovering.js +2 -2
  77. package/dist/useCases/DescribeAlarm.js +2 -2
  78. package/dist/useCases/DescribeCamera.js +2 -2
  79. package/dist/useCases/DescribeCourtesy.js +2 -2
  80. package/dist/useCases/DescribeDimmer.js +2 -2
  81. package/dist/useCases/DescribeDiscoveredDevice.js +2 -2
  82. package/dist/useCases/DescribeLock.js +2 -2
  83. package/dist/useCases/DescribeLockCredential.js +32 -0
  84. package/dist/useCases/{DescribeSource.js → DescribeMediaSource.js} +3 -3
  85. package/dist/useCases/DescribeMyAccessCredentials.js +32 -0
  86. package/dist/useCases/DescribeMyProperty.js +2 -2
  87. package/dist/useCases/DescribeOrganization.js +32 -0
  88. package/dist/useCases/{DescribeIntegration.js → DescribeProperty.js} +3 -3
  89. package/dist/useCases/DescribeReservation.js +2 -2
  90. package/dist/useCases/DescribeReservationCheckinStatus.js +2 -2
  91. package/dist/useCases/DescribeRoom.js +2 -2
  92. package/dist/useCases/DescribeSelf.js +2 -2
  93. package/dist/useCases/DescribeSpace.js +2 -2
  94. package/dist/useCases/{DeleteIntegration.js → DescribeSpaceType.js} +3 -3
  95. package/dist/useCases/DescribeSwitch.js +2 -2
  96. package/dist/useCases/DescribeThermostat.js +2 -2
  97. package/dist/useCases/DescribeTicket.js +2 -2
  98. package/dist/useCases/DescribeUser.js +2 -2
  99. package/dist/useCases/DescribeWindowCovering.js +2 -2
  100. package/dist/useCases/DiscoverReservations.js +2 -2
  101. package/dist/useCases/EmailUserAccountSetup.js +2 -2
  102. package/dist/useCases/ListAlarms.js +2 -2
  103. package/dist/useCases/ListCameras.js +2 -2
  104. package/dist/useCases/ListCourtesy.js +2 -2
  105. package/dist/useCases/ListDimmers.js +2 -2
  106. package/dist/useCases/ListDiscoveredDevices.js +2 -2
  107. package/dist/useCases/ListLocks.js +2 -2
  108. package/dist/useCases/{ListSources.js → ListMediaSources.js} +3 -3
  109. package/dist/useCases/ListMyReservations.js +2 -2
  110. package/dist/useCases/ListMySpaces.js +2 -2
  111. package/dist/useCases/ListMyTickets.js +32 -0
  112. package/dist/useCases/ListOrganizations.js +32 -0
  113. package/dist/useCases/{AdminListCustomers.js → ListProperties.js} +3 -3
  114. package/dist/useCases/ListReservations.js +2 -2
  115. package/dist/useCases/ListRooms.js +2 -2
  116. package/dist/useCases/ListRoomsInSpace.js +2 -2
  117. package/dist/useCases/{AdminListProperties.js → ListSpaceTypes.js} +3 -3
  118. package/dist/useCases/ListSpaces.js +2 -2
  119. package/dist/useCases/ListSwitches.js +2 -2
  120. package/dist/useCases/{ListIntegrations.js → ListTeam.js} +3 -3
  121. package/dist/useCases/ListThermostats.js +2 -2
  122. package/dist/useCases/ListTickets.js +2 -2
  123. package/dist/useCases/ListUserReservations.js +2 -2
  124. package/dist/useCases/{AdminDescribeProperty.js → ListUserSpaces.js} +3 -3
  125. package/dist/useCases/ListUsers.js +2 -2
  126. package/dist/useCases/ListWindowCoverings.js +2 -2
  127. package/dist/useCases/LoginUser.js +2 -2
  128. package/dist/useCases/{CreateIntegrationDeviceMapEntry.js → LogoutUser.js} +3 -3
  129. package/dist/useCases/MatchUserIdentification.js +2 -2
  130. package/dist/useCases/OCRDocument.js +2 -2
  131. package/dist/useCases/RefreshToken.js +2 -2
  132. package/dist/useCases/RequestLoginLink.js +3 -3
  133. package/dist/useCases/RequestMyKeyToken.js +32 -0
  134. package/dist/useCases/SendCheckInSMS.js +32 -0
  135. package/dist/useCases/SendPreArrivalEmail.js +2 -2
  136. package/dist/useCases/SendPreArrivalSMS.js +2 -2
  137. package/dist/useCases/SendVerificationCode.js +2 -2
  138. package/dist/useCases/SetCamera.js +2 -2
  139. package/dist/useCases/SetCourtesy.js +2 -2
  140. package/dist/useCases/{SetSource.js → SetDimmer.js} +3 -3
  141. package/dist/useCases/SetLock.js +2 -2
  142. package/dist/useCases/SetMediaSource.js +32 -0
  143. package/dist/useCases/SetSwitch.js +2 -2
  144. package/dist/useCases/SetThermostat.js +2 -2
  145. package/dist/useCases/SetWindowCovering.js +2 -2
  146. package/dist/useCases/UpdateAlarm.js +2 -2
  147. package/dist/useCases/UpdateCamera.js +2 -2
  148. package/dist/useCases/UpdateCourtesy.js +2 -2
  149. package/dist/useCases/UpdateDimmer.js +2 -2
  150. package/dist/useCases/UpdateDiscoveredDevice.js +2 -2
  151. package/dist/useCases/UpdateLock.js +2 -2
  152. package/dist/useCases/{UpdateSource.js → UpdateMediaSource.js} +3 -3
  153. package/dist/useCases/UpdateMessageReadStatus.js +2 -2
  154. package/dist/useCases/{AdminUpdateProperty.js → UpdateProperty.js} +3 -3
  155. package/dist/useCases/UpdateReservation.js +2 -2
  156. package/dist/useCases/UpdateRoom.js +2 -2
  157. package/dist/useCases/UpdateSelf.js +2 -2
  158. package/dist/useCases/UpdateSpace.js +2 -2
  159. package/dist/useCases/{UpdateIntegration.js → UpdateSpaceType.js} +3 -3
  160. package/dist/useCases/UpdateSwitch.js +2 -2
  161. package/dist/useCases/UpdateThermostat.js +2 -2
  162. package/dist/useCases/UpdateTicket.js +2 -2
  163. package/dist/useCases/UpdateTicketStatus.js +2 -2
  164. package/dist/useCases/UpdateUser.js +2 -2
  165. package/dist/useCases/UpdateWindowCovering.js +2 -2
  166. package/dist/useCases/UpsertDiscoveredDevice.js +2 -2
  167. 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
- "source",
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._http = axios.create({
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
- authTokenHeader: "X-Auth-Token",
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 ((_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data) {
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 = (_a = data == null ? void 0 : data.error) == null ? void 0 : _a.type;
117
- const errorMessage = (_b = data == null ? void 0 : data.error) == null ? void 0 : _b.message;
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 token provided") {
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
- return this.RefreshToken().then(() => {
131
- return this.http(originalReq);
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
  });
@@ -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
- "source",
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.app/schemas/v3/definitions/common.json",
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.app/schemas/v3/definitions/device.json",
167
+ $id: "https://api.kohost.io/schemas/v3/definitions/device.json",
133
168
  definitions: {
134
169
  id: {
135
- $ref: "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/id"
170
+ $ref: "https://api.kohost.io/schemas/v3/definitions/common.json#/definitions/id"
136
171
  },
137
172
  systemData: {
138
- $ref: "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/systemData"
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
- "sceneController",
153
- "gateway"
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
  };