@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.
Files changed (163) hide show
  1. package/README.md +71 -0
  2. package/dist/cjs/AMQPClient.js +425 -0
  3. package/dist/cjs/Client.js +1187 -757
  4. package/dist/cjs/Commands.js +264 -93
  5. package/dist/cjs/Errors.js +24 -22
  6. package/dist/cjs/Events.js +200 -43
  7. package/dist/cjs/Models.js +1180 -520
  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 +253 -15
  12. package/dist/esm/Client.js +1490 -940
  13. package/dist/esm/Client.js.map +4 -4
  14. package/dist/esm/Commands.js +264 -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 +200 -43
  19. package/dist/esm/Events.js.map +3 -3
  20. package/dist/esm/Models.js +1809 -530
  21. package/dist/esm/Models.js.map +4 -4
  22. package/dist/esm/SocketIoClient.js +4533 -0
  23. package/dist/esm/SocketIoClient.js.map +7 -0
  24. package/dist/esm/defs.js +383 -273
  25. package/dist/esm/defs.js.map +4 -4
  26. package/dist/esm/index.js +11 -10
  27. package/dist/esm/utils.js +636 -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/CreateLock.js +2 -2
  45. package/dist/useCases/{CreateSource.js → CreateMediaSource.js} +3 -3
  46. package/dist/useCases/CreateOrganization.js +32 -0
  47. package/dist/useCases/{AdminCreateProperty.js → CreateProperty.js} +3 -3
  48. package/dist/useCases/CreateReservation.js +2 -2
  49. package/dist/useCases/CreateRoom.js +2 -2
  50. package/dist/useCases/CreateRoomInSpace.js +2 -2
  51. package/dist/useCases/CreateSpace.js +2 -2
  52. package/dist/useCases/{CreateIntegration.js → CreateSpaceType.js} +3 -3
  53. package/dist/useCases/CreateSwitch.js +2 -2
  54. package/dist/useCases/CreateThermostat.js +2 -2
  55. package/dist/useCases/CreateTicket.js +2 -2
  56. package/dist/useCases/CreateTicketMessage.js +2 -2
  57. package/dist/useCases/CreateUser.js +2 -2
  58. package/dist/useCases/CreateWindowCovering.js +2 -2
  59. package/dist/useCases/DeleteAlarm.js +2 -2
  60. package/dist/useCases/DeleteCamera.js +2 -2
  61. package/dist/useCases/DeleteCourtesy.js +2 -2
  62. package/dist/useCases/DeleteDimmer.js +2 -2
  63. package/dist/useCases/DeleteDiscoveredDevice.js +2 -2
  64. package/dist/useCases/DeleteLock.js +2 -2
  65. package/dist/useCases/{DeleteSource.js → DeleteMediaSource.js} +3 -3
  66. package/dist/useCases/DeleteReservation.js +2 -2
  67. package/dist/useCases/DeleteRoom.js +2 -2
  68. package/dist/useCases/DeleteSpace.js +2 -2
  69. package/dist/useCases/DeleteSpaceType.js +32 -0
  70. package/dist/useCases/DeleteSwitch.js +2 -2
  71. package/dist/useCases/DeleteThermostat.js +2 -2
  72. package/dist/useCases/DeleteTicket.js +2 -2
  73. package/dist/useCases/DeleteUser.js +2 -2
  74. package/dist/useCases/DeleteWindowCovering.js +2 -2
  75. package/dist/useCases/DescribeAlarm.js +2 -2
  76. package/dist/useCases/DescribeCamera.js +2 -2
  77. package/dist/useCases/DescribeCourtesy.js +2 -2
  78. package/dist/useCases/DescribeDimmer.js +2 -2
  79. package/dist/useCases/DescribeDiscoveredDevice.js +2 -2
  80. package/dist/useCases/DescribeLock.js +2 -2
  81. package/dist/useCases/{DescribeSource.js → DescribeMediaSource.js} +3 -3
  82. package/dist/useCases/DescribeMyProperty.js +2 -2
  83. package/dist/useCases/{DeleteIntegration.js → DescribeOrganization.js} +3 -3
  84. package/dist/useCases/{DescribeIntegration.js → DescribeProperty.js} +3 -3
  85. package/dist/useCases/DescribeReservation.js +2 -2
  86. package/dist/useCases/DescribeReservationCheckinStatus.js +2 -2
  87. package/dist/useCases/DescribeRoom.js +2 -2
  88. package/dist/useCases/DescribeSelf.js +2 -2
  89. package/dist/useCases/DescribeSpace.js +2 -2
  90. package/dist/useCases/{AdminDescribeProperty.js → DescribeSpaceType.js} +3 -3
  91. package/dist/useCases/DescribeSwitch.js +2 -2
  92. package/dist/useCases/DescribeThermostat.js +2 -2
  93. package/dist/useCases/DescribeTicket.js +2 -2
  94. package/dist/useCases/DescribeUser.js +2 -2
  95. package/dist/useCases/DescribeWindowCovering.js +2 -2
  96. package/dist/useCases/DiscoverReservations.js +2 -2
  97. package/dist/useCases/EmailUserAccountSetup.js +2 -2
  98. package/dist/useCases/GetMobileKey.js +32 -0
  99. package/dist/useCases/ListAlarms.js +2 -2
  100. package/dist/useCases/ListCameras.js +2 -2
  101. package/dist/useCases/ListCourtesy.js +2 -2
  102. package/dist/useCases/ListDimmers.js +2 -2
  103. package/dist/useCases/ListDiscoveredDevices.js +2 -2
  104. package/dist/useCases/ListLocks.js +2 -2
  105. package/dist/useCases/{ListSources.js → ListMediaSources.js} +3 -3
  106. package/dist/useCases/ListMyReservations.js +2 -2
  107. package/dist/useCases/ListMySpaces.js +2 -2
  108. package/dist/useCases/ListMyTickets.js +32 -0
  109. package/dist/useCases/ListOrganizations.js +32 -0
  110. package/dist/useCases/{AdminListCustomers.js → ListProperties.js} +3 -3
  111. package/dist/useCases/ListReservations.js +2 -2
  112. package/dist/useCases/ListRooms.js +2 -2
  113. package/dist/useCases/ListRoomsInSpace.js +2 -2
  114. package/dist/useCases/{AdminListProperties.js → ListSpaceTypes.js} +3 -3
  115. package/dist/useCases/ListSpaces.js +2 -2
  116. package/dist/useCases/ListSwitches.js +2 -2
  117. package/dist/useCases/{ListIntegrations.js → ListTeam.js} +3 -3
  118. package/dist/useCases/ListThermostats.js +2 -2
  119. package/dist/useCases/ListTickets.js +2 -2
  120. package/dist/useCases/ListUserReservations.js +2 -2
  121. package/dist/useCases/ListUsers.js +2 -2
  122. package/dist/useCases/ListWindowCoverings.js +2 -2
  123. package/dist/useCases/LoginUser.js +2 -2
  124. package/dist/useCases/{CreateIntegrationDeviceMapEntry.js → LogoutUser.js} +3 -3
  125. package/dist/useCases/MatchUserIdentification.js +2 -2
  126. package/dist/useCases/OCRDocument.js +2 -2
  127. package/dist/useCases/RefreshToken.js +2 -2
  128. package/dist/useCases/RequestLoginLink.js +3 -3
  129. package/dist/useCases/RequestMyKeyToken.js +32 -0
  130. package/dist/useCases/SendCheckInSMS.js +32 -0
  131. package/dist/useCases/SendPreArrivalEmail.js +2 -2
  132. package/dist/useCases/SendPreArrivalSMS.js +2 -2
  133. package/dist/useCases/SendVerificationCode.js +2 -2
  134. package/dist/useCases/SetCamera.js +2 -2
  135. package/dist/useCases/SetCourtesy.js +2 -2
  136. package/dist/useCases/{SetSource.js → SetDimmer.js} +3 -3
  137. package/dist/useCases/SetLock.js +2 -2
  138. package/dist/useCases/SetMediaSource.js +32 -0
  139. package/dist/useCases/SetSwitch.js +2 -2
  140. package/dist/useCases/SetThermostat.js +2 -2
  141. package/dist/useCases/SetWindowCovering.js +2 -2
  142. package/dist/useCases/UpdateAlarm.js +2 -2
  143. package/dist/useCases/UpdateCamera.js +2 -2
  144. package/dist/useCases/UpdateCourtesy.js +2 -2
  145. package/dist/useCases/UpdateDimmer.js +2 -2
  146. package/dist/useCases/UpdateDiscoveredDevice.js +2 -2
  147. package/dist/useCases/UpdateLock.js +2 -2
  148. package/dist/useCases/{UpdateSource.js → UpdateMediaSource.js} +3 -3
  149. package/dist/useCases/UpdateMessageReadStatus.js +2 -2
  150. package/dist/useCases/{AdminUpdateProperty.js → UpdateProperty.js} +3 -3
  151. package/dist/useCases/UpdateReservation.js +2 -2
  152. package/dist/useCases/UpdateRoom.js +2 -2
  153. package/dist/useCases/UpdateSelf.js +2 -2
  154. package/dist/useCases/UpdateSpace.js +2 -2
  155. package/dist/useCases/{UpdateIntegration.js → UpdateSpaceType.js} +3 -3
  156. package/dist/useCases/UpdateSwitch.js +2 -2
  157. package/dist/useCases/UpdateThermostat.js +2 -2
  158. package/dist/useCases/UpdateTicket.js +2 -2
  159. package/dist/useCases/UpdateTicketStatus.js +2 -2
  160. package/dist/useCases/UpdateUser.js +2 -2
  161. package/dist/useCases/UpdateWindowCovering.js +2 -2
  162. package/dist/useCases/UpsertDiscoveredDevice.js +2 -2
  163. 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",
@@ -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.app/schemas/v3/definitions/device.json",
163
+ $id: "https://api.kohost.io/schemas/v3/definitions/device.json",
133
164
  definitions: {
134
165
  id: {
135
- $ref: "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/id"
166
+ $ref: "https://api.kohost.io/schemas/v3/definitions/common.json#/definitions/id"
136
167
  },
137
168
  systemData: {
138
- $ref: "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/systemData"
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
- "sceneController",
153
- "gateway"
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
  };