@kohost/api-client 1.0.0-beta.3 → 1.0.0-beta.5

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 (271) hide show
  1. package/dist/cjs/Client.js +5089 -0
  2. package/dist/cjs/Commands.js +568 -0
  3. package/dist/cjs/Errors.js +174 -0
  4. package/dist/cjs/Events.js +375 -0
  5. package/dist/cjs/Models.js +3584 -0
  6. package/dist/cjs/defs.js +175 -0
  7. package/dist/cjs/index.cjs.js +17 -0
  8. package/dist/cjs/utils.js +246 -0
  9. package/dist/esm/Client.js +7428 -0
  10. package/dist/esm/Client.js.map +7 -0
  11. package/dist/esm/Commands.js +574 -0
  12. package/dist/esm/Commands.js.map +7 -0
  13. package/dist/esm/Errors.js +180 -0
  14. package/dist/esm/Errors.js.map +7 -0
  15. package/dist/esm/Events.js +381 -0
  16. package/dist/esm/Events.js.map +7 -0
  17. package/dist/esm/Models.js +13220 -0
  18. package/dist/esm/Models.js.map +7 -0
  19. package/dist/esm/defs.js +2514 -0
  20. package/dist/esm/defs.js.map +7 -0
  21. package/dist/esm/index.js +11 -0
  22. package/dist/esm/utils.js +7281 -0
  23. package/dist/esm/utils.js.map +7 -0
  24. package/dist/useCases/AddDefaultScenesToRooms.js +32 -0
  25. package/dist/useCases/AddScenesToRoom.js +32 -0
  26. package/dist/useCases/AdminCreateProperty.js +32 -0
  27. package/dist/useCases/AdminDescribeProperty.js +32 -0
  28. package/dist/useCases/AdminListCustomers.js +32 -0
  29. package/dist/useCases/AdminListProperties.js +32 -0
  30. package/dist/useCases/AdminUpdateProperty.js +32 -0
  31. package/dist/useCases/BatchNotifyPreArrival.js +32 -0
  32. package/dist/useCases/CheckInReservation.js +32 -0
  33. package/dist/useCases/CheckVerificationCode.js +32 -0
  34. package/dist/useCases/CreateAlarm.js +32 -0
  35. package/dist/useCases/CreateCamera.js +32 -0
  36. package/dist/useCases/CreateCourtesy.js +32 -0
  37. package/dist/useCases/CreateDefaultScenes.js +32 -0
  38. package/dist/useCases/CreateDimmer.js +32 -0
  39. package/dist/useCases/CreateDiscoveredDevice.js +32 -0
  40. package/dist/useCases/CreateDiscoveredDeviceAssociation.js +32 -0
  41. package/dist/useCases/CreateIntegration.js +32 -0
  42. package/dist/useCases/CreateIntegrationDeviceMapEntry.js +32 -0
  43. package/dist/useCases/CreateLock.js +32 -0
  44. package/dist/useCases/CreateReservation.js +32 -0
  45. package/dist/useCases/CreateRoom.js +32 -0
  46. package/dist/useCases/CreateRoomInSpace.js +32 -0
  47. package/dist/useCases/CreateSource.js +32 -0
  48. package/dist/useCases/CreateSpace.js +32 -0
  49. package/dist/useCases/CreateSwitch.js +32 -0
  50. package/dist/useCases/CreateThermostat.js +32 -0
  51. package/dist/useCases/CreateTicket.js +32 -0
  52. package/dist/useCases/CreateTicketMessage.js +32 -0
  53. package/dist/useCases/CreateUser.js +32 -0
  54. package/dist/useCases/CreateWindowCovering.js +32 -0
  55. package/dist/useCases/DeleteAlarm.js +32 -0
  56. package/dist/useCases/DeleteCamera.js +32 -0
  57. package/dist/useCases/DeleteCourtesy.js +32 -0
  58. package/dist/useCases/DeleteDimmer.js +32 -0
  59. package/dist/useCases/DeleteDiscoveredDevice.js +32 -0
  60. package/dist/useCases/DeleteIntegration.js +32 -0
  61. package/dist/useCases/DeleteLock.js +32 -0
  62. package/dist/useCases/DeleteReservation.js +32 -0
  63. package/dist/useCases/DeleteRoom.js +32 -0
  64. package/dist/useCases/DeleteSource.js +32 -0
  65. package/dist/useCases/DeleteSpace.js +32 -0
  66. package/dist/useCases/DeleteSwitch.js +32 -0
  67. package/dist/useCases/DeleteThermostat.js +32 -0
  68. package/dist/useCases/DeleteTicket.js +32 -0
  69. package/dist/useCases/DeleteUser.js +32 -0
  70. package/dist/useCases/DeleteWindowCovering.js +32 -0
  71. package/dist/useCases/DescribeAlarm.js +32 -0
  72. package/dist/useCases/DescribeCamera.js +32 -0
  73. package/dist/useCases/DescribeCourtesy.js +32 -0
  74. package/dist/useCases/DescribeDimmer.js +32 -0
  75. package/dist/useCases/DescribeDiscoveredDevice.js +32 -0
  76. package/dist/useCases/DescribeIntegration.js +32 -0
  77. package/dist/useCases/DescribeLock.js +32 -0
  78. package/dist/useCases/DescribeMyProperty.js +32 -0
  79. package/dist/useCases/DescribeReservation.js +32 -0
  80. package/dist/useCases/DescribeReservationCheckinStatus.js +32 -0
  81. package/dist/useCases/DescribeRoom.js +32 -0
  82. package/dist/useCases/DescribeSelf.js +32 -0
  83. package/dist/useCases/DescribeSource.js +32 -0
  84. package/dist/useCases/DescribeSpace.js +32 -0
  85. package/dist/useCases/DescribeSwitch.js +32 -0
  86. package/dist/useCases/DescribeThermostat.js +32 -0
  87. package/dist/useCases/DescribeTicket.js +32 -0
  88. package/dist/useCases/DescribeUser.js +32 -0
  89. package/dist/useCases/DescribeWindowCovering.js +32 -0
  90. package/dist/useCases/DiscoverReservations.js +32 -0
  91. package/dist/useCases/EmailUserAccountSetup.js +32 -0
  92. package/dist/useCases/ListAlarms.js +32 -0
  93. package/dist/useCases/ListCameras.js +32 -0
  94. package/dist/useCases/ListCourtesy.js +32 -0
  95. package/dist/useCases/ListDimmers.js +32 -0
  96. package/dist/useCases/ListDiscoveredDevices.js +32 -0
  97. package/dist/useCases/ListIntegrations.js +32 -0
  98. package/dist/useCases/ListLocks.js +32 -0
  99. package/dist/useCases/ListMyReservations.js +32 -0
  100. package/dist/useCases/ListMySpaces.js +32 -0
  101. package/dist/useCases/ListReservations.js +32 -0
  102. package/dist/useCases/ListRooms.js +32 -0
  103. package/dist/useCases/ListRoomsInSpace.js +32 -0
  104. package/dist/useCases/ListSources.js +32 -0
  105. package/dist/useCases/ListSpaces.js +32 -0
  106. package/dist/useCases/ListSwitches.js +32 -0
  107. package/dist/useCases/ListThermostats.js +32 -0
  108. package/dist/useCases/ListTickets.js +32 -0
  109. package/dist/useCases/ListUserReservations.js +32 -0
  110. package/dist/useCases/ListUsers.js +32 -0
  111. package/dist/useCases/ListWindowCoverings.js +32 -0
  112. package/dist/useCases/LoginGateway.js +32 -0
  113. package/dist/useCases/LoginUser.js +32 -0
  114. package/dist/useCases/MatchUserIdentification.js +32 -0
  115. package/dist/useCases/OCRDocument.js +32 -0
  116. package/dist/useCases/RefreshToken.js +32 -0
  117. package/dist/useCases/RequestLoginLink.js +32 -0
  118. package/dist/useCases/SendPreArrivalEmail.js +32 -0
  119. package/dist/useCases/SendPreArrivalSMS.js +32 -0
  120. package/dist/useCases/SendVerificationCode.js +32 -0
  121. package/dist/useCases/SetCamera.js +32 -0
  122. package/dist/useCases/SetCourtesy.js +32 -0
  123. package/dist/useCases/SetLock.js +32 -0
  124. package/dist/useCases/SetSource.js +32 -0
  125. package/dist/useCases/SetSwitch.js +32 -0
  126. package/dist/useCases/SetThermostat.js +32 -0
  127. package/dist/useCases/SetWindowCovering.js +32 -0
  128. package/dist/useCases/UpdateAlarm.js +32 -0
  129. package/dist/useCases/UpdateCamera.js +32 -0
  130. package/dist/useCases/UpdateCourtesy.js +32 -0
  131. package/dist/useCases/UpdateDimmer.js +32 -0
  132. package/dist/useCases/UpdateDiscoveredDevice.js +32 -0
  133. package/dist/useCases/UpdateIntegration.js +32 -0
  134. package/dist/useCases/UpdateLock.js +32 -0
  135. package/dist/useCases/UpdateMessageReadStatus.js +32 -0
  136. package/dist/useCases/UpdateReservation.js +32 -0
  137. package/dist/useCases/UpdateRoom.js +32 -0
  138. package/dist/useCases/UpdateSelf.js +32 -0
  139. package/dist/useCases/UpdateSource.js +32 -0
  140. package/dist/useCases/UpdateSpace.js +32 -0
  141. package/dist/useCases/UpdateSwitch.js +32 -0
  142. package/dist/useCases/UpdateThermostat.js +32 -0
  143. package/dist/useCases/UpdateTicket.js +32 -0
  144. package/dist/useCases/UpdateTicketStatus.js +32 -0
  145. package/dist/useCases/UpdateUser.js +32 -0
  146. package/dist/useCases/UpdateWindowCovering.js +32 -0
  147. package/dist/useCases/UpsertDiscoveredDevice.js +32 -0
  148. package/package.json +26 -7
  149. package/.eslintrc.js +0 -10
  150. package/bitbucket-pipelines.yml +0 -71
  151. package/commands/CheckInReservationCommand.js +0 -23
  152. package/commands/Command.js +0 -38
  153. package/commands/DiscoverReservationsCommand.js +0 -24
  154. package/commands/DiscoverRoomsCommand.js +0 -21
  155. package/commands/DiscoverUsersCommand.js +0 -21
  156. package/commands/OCRDocumentCommand.js +0 -20
  157. package/commands/SendEmailCommand.js +0 -24
  158. package/commands/SendSMSCommand.js +0 -21
  159. package/commands/SetAlarmCommand.js +0 -21
  160. package/commands/SetCourtesyCommand.js +0 -21
  161. package/commands/SetDimmerCommand.js +0 -21
  162. package/commands/SetLockCommand.js +0 -21
  163. package/commands/SetSceneControllerCommand.js +0 -21
  164. package/commands/SetSwitchCommand.js +0 -21
  165. package/commands/SetThermostatCommand.js +0 -21
  166. package/commands/SetWindowCoveringCommand.js +0 -21
  167. package/commands/index.js +0 -31
  168. package/defs/deviceTypes.js +0 -15
  169. package/defs/formalDeviceTypes.js +0 -6
  170. package/defs/http.js +0 -7
  171. package/defs/index.js +0 -11
  172. package/errors/AppError.js +0 -8
  173. package/errors/AuthenticationError.js +0 -9
  174. package/errors/AuthorizationError.js +0 -9
  175. package/errors/DeviceCommError.js +0 -9
  176. package/errors/LoginError.js +0 -9
  177. package/errors/NotFoundError.js +0 -9
  178. package/errors/RequestError.js +0 -9
  179. package/errors/SystemCommError.js +0 -9
  180. package/errors/TokenExpiredError.js +0 -9
  181. package/errors/UnprocessableRequestError.js +0 -9
  182. package/errors/ValidationError.js +0 -9
  183. package/errors/index.js +0 -15
  184. package/events/EmailSentEvent.js +0 -17
  185. package/events/Event.js +0 -52
  186. package/events/SMSSentEvent.js +0 -17
  187. package/events/ShortLinkCreatedEvent.js +0 -17
  188. package/events/SystemCameraUpdatedEvent.js +0 -17
  189. package/events/SystemCourtesyUpdatedEvent.js +0 -17
  190. package/events/SystemDimmerUpdatedEvent.js +0 -17
  191. package/events/SystemLockUpdatedEvent.js +0 -17
  192. package/events/SystemReservationUpdatedEvent.js +0 -17
  193. package/events/SystemSceneControllerUpdatedEvent.js +0 -17
  194. package/events/SystemSourceUpdatedEvent.js +0 -17
  195. package/events/SystemSpaceUpdatedEvent.js +0 -17
  196. package/events/SystemSwitchUpdatedEvent.js +0 -17
  197. package/events/SystemThermostatUpdatedEvent.js +0 -17
  198. package/events/SystemUserUpdatedEvent.js +0 -17
  199. package/events/SystemWindowCoveringUpdatedEvent.js +0 -17
  200. package/events/index.js +0 -35
  201. package/http/handleResponseError.js +0 -33
  202. package/http/handleResponseSuccess.js +0 -15
  203. package/http/index.js +0 -169
  204. package/index.js +0 -23
  205. package/models/acl.js +0 -29
  206. package/models/admin/customer.js +0 -28
  207. package/models/admin/property.js +0 -28
  208. package/models/alarm.js +0 -29
  209. package/models/application.js +0 -28
  210. package/models/camera.js +0 -29
  211. package/models/courtesy.js +0 -33
  212. package/models/credential.js +0 -29
  213. package/models/dimmer.js +0 -49
  214. package/models/discoveredDevice.js +0 -30
  215. package/models/gateway.js +0 -29
  216. package/models/identification.js +0 -32
  217. package/models/index.js +0 -56
  218. package/models/integration.js +0 -76
  219. package/models/kohost.js +0 -96
  220. package/models/lock.js +0 -33
  221. package/models/mediaSource.js +0 -29
  222. package/models/motionSensor.js +0 -29
  223. package/models/product.js +0 -30
  224. package/models/reservation.js +0 -83
  225. package/models/room.js +0 -174
  226. package/models/scene.js +0 -28
  227. package/models/shortLink.js +0 -29
  228. package/models/space.js +0 -99
  229. package/models/switch.js +0 -33
  230. package/models/thermostat.js +0 -80
  231. package/models/ticket.js +0 -91
  232. package/models/user.js +0 -56
  233. package/models/windowCovering.js +0 -49
  234. package/prepare.js +0 -4
  235. package/schemas/acl.json +0 -111
  236. package/schemas/admin/customer.json +0 -32
  237. package/schemas/admin/property.json +0 -180
  238. package/schemas/alarm.json +0 -93
  239. package/schemas/application.json +0 -24
  240. package/schemas/camera.json +0 -41
  241. package/schemas/courtesy.json +0 -37
  242. package/schemas/credential.json +0 -28
  243. package/schemas/definitions/common.json +0 -74
  244. package/schemas/definitions/device.json +0 -76
  245. package/schemas/dimmer.json +0 -34
  246. package/schemas/discoveredDevice.json +0 -43
  247. package/schemas/gateway.json +0 -30
  248. package/schemas/identification.json +0 -49
  249. package/schemas/integration.json +0 -94
  250. package/schemas/lock.json +0 -36
  251. package/schemas/mediaSource.json +0 -151
  252. package/schemas/motionSensor.json +0 -26
  253. package/schemas/payment.json +0 -40
  254. package/schemas/product.json +0 -36
  255. package/schemas/reservation.json +0 -71
  256. package/schemas/room.json +0 -131
  257. package/schemas/scene.json +0 -118
  258. package/schemas/shortLink.json +0 -30
  259. package/schemas/space.json +0 -111
  260. package/schemas/switch.json +0 -33
  261. package/schemas/thermostat.json +0 -139
  262. package/schemas/ticket.json +0 -82
  263. package/schemas/user.json +0 -176
  264. package/schemas/windowCovering.json +0 -34
  265. package/tests/unit/models/space.test.js +0 -31
  266. package/tests/unit/models/thermostat.test.js +0 -146
  267. package/tests/unit/models/user.test.js +0 -28
  268. package/useCases/http.json +0 -1161
  269. package/utils/getDeviceTypes.js +0 -7
  270. package/utils/getFormalDeviceType.js +0 -5
  271. package/utils/schema.js +0 -28
@@ -0,0 +1,175 @@
1
+ var __getOwnPropNames = Object.getOwnPropertyNames;
2
+ var __commonJS = (cb, mod) => function __require() {
3
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
4
+ };
5
+
6
+ // src/defs/deviceTypes.js
7
+ var require_deviceTypes = __commonJS({
8
+ "src/defs/deviceTypes.js"(exports2, module2) {
9
+ var types = [
10
+ "dimmer",
11
+ "switch",
12
+ "thermostat",
13
+ "lock",
14
+ "windowCovering",
15
+ "sceneController",
16
+ "courtesy",
17
+ "alarm",
18
+ "camera",
19
+ "source",
20
+ "motionSensor"
21
+ ];
22
+ module2.exports = types;
23
+ }
24
+ });
25
+
26
+ // src/defs/formalDeviceTypes.js
27
+ var require_formalDeviceTypes = __commonJS({
28
+ "src/defs/formalDeviceTypes.js"(exports2, module2) {
29
+ var deviceTypes2 = require_deviceTypes();
30
+ var formalDeviceTypes2 = deviceTypes2.map(
31
+ (type) => type.charAt(0).toUpperCase() + type.slice(1)
32
+ );
33
+ module2.exports = formalDeviceTypes2;
34
+ }
35
+ });
36
+
37
+ // src/Client/index.js
38
+ var require_Client = __commonJS({
39
+ "src/Client/index.js"(exports2, module2) {
40
+ var { EventEmitter } = require("events");
41
+ var axios = require("axios");
42
+ var KohostApiClient = class extends EventEmitter {
43
+ /*
44
+ @param {Object} options - The options to create the client
45
+ @param {String} options.propertyId - The property ID
46
+ @param {String} options.url - The base URL for the API endpint
47
+ @param {Object} options.headers - Additional headers to send with each request
48
+
49
+ */
50
+ constructor(options = {
51
+ url: "",
52
+ propertyId: "",
53
+ headers: {}
54
+ }) {
55
+ super();
56
+ if (!options.url)
57
+ throw new Error("options.url is required");
58
+ if (!options.propertyId)
59
+ throw new Error("options.property is required");
60
+ this.options = options;
61
+ this.isBrowser = typeof window !== "undefined";
62
+ this._http = axios.create({
63
+ baseURL: options.url,
64
+ responseType: "json",
65
+ withCredentials: true,
66
+ headers: {
67
+ "Content-Type": "application/json",
68
+ Accept: "application/json",
69
+ [KohostApiClient.defs.propertyHeader]: options.propertyId,
70
+ ...options.headers
71
+ }
72
+ });
73
+ this._http.interceptors.response.use(
74
+ this._handleResponse.bind(this),
75
+ this._handleResponseError.bind(this)
76
+ );
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
+ }
84
+ static get defs() {
85
+ return {
86
+ authTokenHeader: "X-Auth-Token",
87
+ refreshTokenHeader: "X-Refresh-Token",
88
+ propertyHeader: "X-Property-Id"
89
+ };
90
+ }
91
+ _handleResponse(response) {
92
+ var _a;
93
+ try {
94
+ if ((_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data) {
95
+ response.query = response.data.query;
96
+ response.pagination = response.data.pagination;
97
+ response.data = response.data.data;
98
+ }
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
+ return response;
106
+ } catch (error) {
107
+ return Promise.reject(error);
108
+ }
109
+ }
110
+ _handleResponseError(error) {
111
+ var _a, _b;
112
+ const { config: originalReq } = error;
113
+ if (!error.response)
114
+ return Promise.reject(error);
115
+ 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;
118
+ try {
119
+ const expectedError = status >= 400 && status < 500;
120
+ const newTokensNeeded = expectedError && errorType === "TokenExpiredError";
121
+ if (expectedError && errorMessage === "Login Required") {
122
+ this._onLoginRequired();
123
+ return Promise.reject(error);
124
+ }
125
+ if (expectedError && errorMessage === "No token provided") {
126
+ this._onLoginRequired();
127
+ return Promise.reject(error);
128
+ }
129
+ if (expectedError && newTokensNeeded) {
130
+ return this.RefreshToken().then(() => {
131
+ return this.http(originalReq);
132
+ });
133
+ }
134
+ } catch (error2) {
135
+ console.log(error2);
136
+ }
137
+ return Promise.reject(error);
138
+ }
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
+ _onLoginRequired() {
159
+ this.emit("LoginRequired");
160
+ }
161
+ };
162
+ module2.exports = KohostApiClient;
163
+ }
164
+ });
165
+
166
+ // src/defs/index.js
167
+ var deviceTypes = require_deviceTypes();
168
+ var formalDeviceTypes = require_formalDeviceTypes();
169
+ var { defs: httpDefs } = require_Client();
170
+ var defs = {
171
+ http: httpDefs,
172
+ deviceTypes,
173
+ formalDeviceTypes
174
+ };
175
+ module.exports = defs;
@@ -0,0 +1,17 @@
1
+ const Models = require("./Models");
2
+ const Errors = require("./Errors");
3
+ const Commands = require("./Commands");
4
+ const Events = require("./Events");
5
+ const defs = require("./defs");
6
+ const utils = require("./utils");
7
+ const Client = require("./Client");
8
+ const Kohost = {
9
+ Models,
10
+ Errors,
11
+ Commands,
12
+ Events,
13
+ Client,
14
+ defs,
15
+ utils
16
+ };
17
+ module.exports = Kohost;
@@ -0,0 +1,246 @@
1
+ var __getOwnPropNames = Object.getOwnPropertyNames;
2
+ var __commonJS = (cb, mod) => function __require() {
3
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
4
+ };
5
+
6
+ // src/utils/getFormalDeviceType.js
7
+ var require_getFormalDeviceType = __commonJS({
8
+ "src/utils/getFormalDeviceType.js"(exports2, module2) {
9
+ function getFormalDeviceType2(deviceType) {
10
+ return deviceType.charAt(0).toUpperCase() + deviceType.slice(1);
11
+ }
12
+ module2.exports = getFormalDeviceType2;
13
+ }
14
+ });
15
+
16
+ // src/defs/deviceTypes.js
17
+ var require_deviceTypes = __commonJS({
18
+ "src/defs/deviceTypes.js"(exports2, module2) {
19
+ var types = [
20
+ "dimmer",
21
+ "switch",
22
+ "thermostat",
23
+ "lock",
24
+ "windowCovering",
25
+ "sceneController",
26
+ "courtesy",
27
+ "alarm",
28
+ "camera",
29
+ "source",
30
+ "motionSensor"
31
+ ];
32
+ module2.exports = types;
33
+ }
34
+ });
35
+
36
+ // src/utils/getDeviceTypes.js
37
+ var require_getDeviceTypes = __commonJS({
38
+ "src/utils/getDeviceTypes.js"(exports2, module2) {
39
+ var deviceTypes = require_deviceTypes();
40
+ function getDeviceTypes2() {
41
+ return deviceTypes;
42
+ }
43
+ module2.exports = getDeviceTypes2;
44
+ }
45
+ });
46
+
47
+ // src/schemas/definitions/common.json
48
+ var require_common = __commonJS({
49
+ "src/schemas/definitions/common.json"(exports2, module2) {
50
+ module2.exports = {
51
+ $schema: "http://json-schema.org/draft-07/schema",
52
+ $id: "https://api.kohost.app/schemas/v3/definitions/common.json",
53
+ definitions: {
54
+ id: {
55
+ type: "string"
56
+ },
57
+ systemData: {
58
+ type: "object",
59
+ default: {}
60
+ },
61
+ metadata: {
62
+ type: "object",
63
+ default: {}
64
+ },
65
+ createdAt: {
66
+ type: ["string", "object"],
67
+ format: "date-time"
68
+ },
69
+ updatedAt: {
70
+ type: ["string", "object"],
71
+ format: "date-time"
72
+ },
73
+ file: {
74
+ type: "object",
75
+ required: ["name", "type", "data"],
76
+ properties: {
77
+ name: {
78
+ type: "string",
79
+ description: "Name of the file."
80
+ },
81
+ type: {
82
+ type: "string",
83
+ description: "MIME type of the file (e.g. application/pdf)."
84
+ },
85
+ data: {
86
+ type: "string",
87
+ description: "Base64-encoded data of the file."
88
+ }
89
+ }
90
+ },
91
+ address: {
92
+ type: "object",
93
+ properties: {
94
+ id: {
95
+ type: "string"
96
+ },
97
+ line1: {
98
+ type: "string"
99
+ },
100
+ line2: {
101
+ type: "string"
102
+ },
103
+ line3: {
104
+ type: "string"
105
+ },
106
+ city: {
107
+ type: "string"
108
+ },
109
+ state: {
110
+ type: "string"
111
+ },
112
+ postalCode: {
113
+ type: "string"
114
+ },
115
+ countryCode: {
116
+ type: "string",
117
+ minLength: 2,
118
+ maxLength: 2
119
+ }
120
+ }
121
+ }
122
+ }
123
+ };
124
+ }
125
+ });
126
+
127
+ // src/schemas/definitions/device.json
128
+ var require_device = __commonJS({
129
+ "src/schemas/definitions/device.json"(exports2, module2) {
130
+ module2.exports = {
131
+ $schema: "http://json-schema.org/draft-07/schema",
132
+ $id: "https://api.kohost.app/schemas/v3/definitions/device.json",
133
+ definitions: {
134
+ id: {
135
+ $ref: "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/id"
136
+ },
137
+ systemData: {
138
+ $ref: "https://api.kohost.app/schemas/v3/definitions/common.json#/definitions/systemData"
139
+ },
140
+ type: {
141
+ type: "string",
142
+ enum: [
143
+ "dimmer",
144
+ "switch",
145
+ "motionSensor",
146
+ "windowCovering",
147
+ "camera",
148
+ "mediaSource",
149
+ "thermostat",
150
+ "lock",
151
+ "courtesy",
152
+ "sceneController",
153
+ "gateway"
154
+ ]
155
+ },
156
+ name: {
157
+ type: "string"
158
+ },
159
+ subType: {
160
+ type: ["string", "null"]
161
+ },
162
+ supportedNotifications: {
163
+ type: "array",
164
+ uniqueItems: true,
165
+ items: {
166
+ enum: [
167
+ "button 1",
168
+ "button 2",
169
+ "button 3",
170
+ "button 4",
171
+ "button 5",
172
+ "idle",
173
+ "powerHasBeedApplied",
174
+ "acMainsDisconnected",
175
+ "acMainsReconnected",
176
+ "replaceBatterySoon",
177
+ "replaceBatteryNow",
178
+ "hardwareFailure",
179
+ "softwareFailure",
180
+ "hardwareFailureWithCode",
181
+ "softwareFailureWithCode",
182
+ "motionDetection"
183
+ ]
184
+ }
185
+ },
186
+ notification: {
187
+ type: ["object", "null"],
188
+ properties: {
189
+ name: {
190
+ type: "string",
191
+ $ref: "#/definitions/supportedNotifications/items"
192
+ },
193
+ timestamp: {
194
+ type: "number",
195
+ minimum: 1655907956593
196
+ }
197
+ }
198
+ },
199
+ batteryLevel: {
200
+ type: "number",
201
+ minimum: 0,
202
+ maximum: 100
203
+ }
204
+ }
205
+ };
206
+ }
207
+ });
208
+
209
+ // src/utils/schema.js
210
+ var require_schema = __commonJS({
211
+ "src/utils/schema.js"(exports2, module2) {
212
+ var Ajv = require("ajv");
213
+ var ajv = new Ajv({
214
+ allErrors: true,
215
+ useDefaults: true,
216
+ strict: false,
217
+ allowMatchingProperties: true,
218
+ allowUnionTypes: true,
219
+ strictRequired: false
220
+ });
221
+ var addFormats = require("ajv-formats");
222
+ var commonDefs = require_common();
223
+ var deviceDefs = require_device();
224
+ addFormats(ajv);
225
+ ajv.addSchema(commonDefs);
226
+ ajv.addSchema(deviceDefs);
227
+ module2.exports = {
228
+ add: function add(schema2) {
229
+ ajv.addSchema(schema2);
230
+ },
231
+ compile: function compile(schema2) {
232
+ return ajv.compile(schema2);
233
+ }
234
+ };
235
+ }
236
+ });
237
+
238
+ // src/utils/index.js
239
+ var getFormalDeviceType = require_getFormalDeviceType();
240
+ var getDeviceTypes = require_getDeviceTypes();
241
+ var schema = require_schema();
242
+ module.exports = {
243
+ getFormalDeviceType,
244
+ getDeviceTypes,
245
+ schema
246
+ };