@kohost/api-client 3.0.0-beta.10 → 3.0.0-beta.100

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 (280) hide show
  1. package/README.md +71 -0
  2. package/dist/cjs/AMQPClient/index.js +296 -0
  3. package/dist/cjs/{Client.js → Client/index.js} +1907 -598
  4. package/dist/cjs/Commands/CheckInReservationCommand.js +19 -0
  5. package/dist/cjs/Commands/CheckOutReservationCommand.js +20 -0
  6. package/dist/cjs/Commands/Command.js +34 -0
  7. package/dist/cjs/Commands/CreateImageUploadEndpointCommand.js +17 -0
  8. package/dist/cjs/Commands/CreateShortLinkCommand.js +20 -0
  9. package/dist/cjs/Commands/DiscoverCategoriesCommand.js +20 -0
  10. package/dist/cjs/Commands/DiscoverReservationSpaceCategoryAvailabilitiesCommand.js +20 -0
  11. package/dist/cjs/Commands/DiscoverReservationsCommand.js +20 -0
  12. package/dist/cjs/Commands/DiscoverRoomsCommand.js +37 -0
  13. package/dist/cjs/Commands/DiscoverUsersCommand.js +19 -0
  14. package/dist/cjs/Commands/GetMobileKeyCommand.js +24 -0
  15. package/dist/cjs/Commands/GetProductsCommand.js +17 -0
  16. package/dist/cjs/Commands/OCRDocumentCommand.js +15 -0
  17. package/dist/cjs/Commands/SellProductsCommand.js +17 -0
  18. package/dist/cjs/Commands/SendEmailCommand.js +24 -0
  19. package/dist/cjs/Commands/SendSMSCommand.js +22 -0
  20. package/dist/cjs/Commands/SetAlarmCommand.js +17 -0
  21. package/dist/cjs/Commands/SetCourtesyCommand.js +17 -0
  22. package/dist/cjs/Commands/SetDimmerCommand.js +17 -0
  23. package/dist/cjs/Commands/SetLockCommand.js +17 -0
  24. package/dist/cjs/Commands/SetMediaCommand.js +17 -0
  25. package/dist/cjs/Commands/SetSceneCommand.js +17 -0
  26. package/dist/cjs/Commands/SetSwitchCommand.js +17 -0
  27. package/dist/cjs/Commands/SetThermostatCommand.js +17 -0
  28. package/dist/cjs/Commands/SetWindowCoveringCommand.js +17 -0
  29. package/dist/cjs/Commands/UpdateReservationCommand.js +19 -0
  30. package/dist/cjs/Commands/UpdateUserCommand.js +41 -0
  31. package/dist/cjs/Commands/UploadImageCommand.js +17 -0
  32. package/dist/cjs/Commands/index.js +57 -0
  33. package/dist/cjs/Errors/AppError.js +8 -0
  34. package/dist/cjs/Errors/AuthenticationError.js +9 -0
  35. package/dist/cjs/Errors/AuthorizationError.js +9 -0
  36. package/dist/cjs/Errors/ConflictError.js +9 -0
  37. package/dist/cjs/Errors/DeviceCommError.js +9 -0
  38. package/dist/cjs/Errors/LoginError.js +9 -0
  39. package/dist/cjs/Errors/NotFoundError.js +9 -0
  40. package/dist/cjs/Errors/RequestError.js +9 -0
  41. package/dist/cjs/Errors/SystemCommError.js +9 -0
  42. package/dist/cjs/Errors/TokenExpiredError.js +9 -0
  43. package/dist/cjs/Errors/UnprocessableRequestError.js +9 -0
  44. package/dist/cjs/Errors/ValidationError.js +9 -0
  45. package/dist/cjs/Errors/index.js +16 -0
  46. package/dist/cjs/Events/ApplicationInUseEvent.js +25 -0
  47. package/dist/cjs/Events/ApplicationOutOfUseEvent.js +25 -0
  48. package/dist/cjs/Events/EmailEvent.js +18 -0
  49. package/dist/cjs/Events/Event.js +55 -0
  50. package/dist/cjs/Events/SMSEvent.js +18 -0
  51. package/dist/cjs/Events/SMSSentEvent.js +17 -0
  52. package/dist/cjs/Events/SceneSetEvent.js +17 -0
  53. package/dist/cjs/Events/ShortLinkCreatedEvent.js +17 -0
  54. package/dist/cjs/Events/SystemAlarmUpdatedEvent.js +17 -0
  55. package/dist/cjs/Events/SystemCameraUpdatedEvent.js +17 -0
  56. package/dist/cjs/Events/SystemCategoryUpdatedEvent.js +17 -0
  57. package/dist/cjs/Events/SystemCourtesyUpdatedEvent.js +17 -0
  58. package/dist/cjs/Events/SystemCredentialUpdatedEvent.js +17 -0
  59. package/dist/cjs/Events/SystemDimmerUpdatedEvent.js +17 -0
  60. package/dist/cjs/Events/SystemEntityDeletedEvent.js +17 -0
  61. package/dist/cjs/Events/SystemGatewayUpdatedEvent.js +17 -0
  62. package/dist/cjs/Events/SystemLockUpdatedEvent.js +17 -0
  63. package/dist/cjs/Events/SystemMediaSourceUpdatedEvent.js +17 -0
  64. package/dist/cjs/Events/SystemMotionSensorUpdatedEvent.js +17 -0
  65. package/dist/cjs/Events/SystemOrganizationUpdatedEvent.js +17 -0
  66. package/dist/cjs/Events/SystemProductUpdatedEvent.js +17 -0
  67. package/dist/cjs/Events/SystemPropertyUpdatedEvent.js +17 -0
  68. package/dist/cjs/Events/SystemReservationUpdatedEvent.js +17 -0
  69. package/dist/cjs/Events/SystemSceneControllerUpdatedEvent.js +17 -0
  70. package/dist/cjs/Events/SystemSpaceUpdatedEvent.js +17 -0
  71. package/dist/cjs/Events/SystemSwitchUpdatedEvent.js +17 -0
  72. package/dist/cjs/Events/SystemThermostatUpdatedEvent.js +17 -0
  73. package/dist/cjs/Events/SystemUserUpdatedEvent.js +17 -0
  74. package/dist/cjs/Events/SystemWindowCoveringUpdatedEvent.js +17 -0
  75. package/dist/cjs/Events/index.js +65 -0
  76. package/dist/cjs/Models/Alarm.js +35 -0
  77. package/dist/cjs/Models/Announcement.js +34 -0
  78. package/dist/cjs/Models/Camera.js +35 -0
  79. package/dist/cjs/Models/Category.js +36 -0
  80. package/dist/cjs/Models/Courtesy.js +39 -0
  81. package/dist/cjs/Models/Credential.js +35 -0
  82. package/dist/cjs/Models/DeviceRouter.js +36 -0
  83. package/dist/cjs/Models/Dimmer.js +61 -0
  84. package/dist/cjs/Models/DiscoveredDevice.js +36 -0
  85. package/dist/cjs/Models/EmailMessage.js +35 -0
  86. package/dist/cjs/Models/EnergyReport.js +35 -0
  87. package/dist/cjs/Models/EnergyReportShard.js +35 -0
  88. package/dist/cjs/Models/Entity.js +96 -0
  89. package/dist/cjs/Models/Gateway.js +35 -0
  90. package/dist/cjs/Models/Identification.js +38 -0
  91. package/dist/cjs/Models/Lock.js +39 -0
  92. package/dist/cjs/Models/MediaFile.js +48 -0
  93. package/dist/cjs/Models/MediaSource.js +35 -0
  94. package/dist/cjs/Models/MotionSensor.js +35 -0
  95. package/dist/cjs/Models/Order.js +97 -0
  96. package/dist/cjs/Models/Organization.js +34 -0
  97. package/dist/cjs/Models/Product.js +35 -0
  98. package/dist/cjs/Models/Property.js +34 -0
  99. package/dist/cjs/Models/Reservation.js +114 -0
  100. package/dist/cjs/Models/Room.js +217 -0
  101. package/dist/cjs/Models/Scene.js +169 -0
  102. package/dist/cjs/Models/ShortLink.js +35 -0
  103. package/dist/cjs/Models/SmsMessage.js +35 -0
  104. package/dist/cjs/Models/Space.js +97 -0
  105. package/dist/cjs/Models/Switch.js +39 -0
  106. package/dist/cjs/Models/SystemUser.js +55 -0
  107. package/dist/cjs/Models/Thermostat.js +86 -0
  108. package/dist/cjs/Models/Ticket.js +55 -0
  109. package/dist/cjs/Models/User.js +115 -0
  110. package/dist/cjs/Models/WindowCovering.js +55 -0
  111. package/dist/cjs/Models/index.js +77 -0
  112. package/dist/cjs/SocketIoClient/index.js +74 -0
  113. package/dist/cjs/defs/deviceTypes.js +15 -0
  114. package/dist/cjs/defs/formalDeviceTypes.js +6 -0
  115. package/dist/cjs/defs/index.js +11 -0
  116. package/dist/cjs/{index.cjs.js → index.js} +7 -1
  117. package/dist/cjs/schemas/AlarmSchema.d.ts +158 -0
  118. package/dist/cjs/schemas/AnnouncementSchema.d.ts +61 -0
  119. package/dist/cjs/schemas/CameraSchema.d.ts +149 -0
  120. package/dist/cjs/schemas/CategorySchema.d.ts +82 -0
  121. package/dist/cjs/schemas/CourtesySchema.d.ts +148 -0
  122. package/dist/cjs/schemas/CredentialSchema.d.ts +53 -0
  123. package/dist/cjs/schemas/DefinitionsSchema.d.ts +10 -0
  124. package/dist/cjs/schemas/DeviceRouterSchema.d.ts +23 -0
  125. package/dist/cjs/schemas/DimmerSchema.d.ts +147 -0
  126. package/dist/cjs/schemas/DiscoveredDeviceSchema.d.ts +43 -0
  127. package/dist/cjs/schemas/EmailMessageSchema.d.ts +49 -0
  128. package/dist/cjs/schemas/EnergyReportSchema.d.ts +57 -0
  129. package/dist/cjs/schemas/EnergyReportShardSchema.d.ts +61 -0
  130. package/dist/cjs/schemas/GatewaySchema.d.ts +145 -0
  131. package/dist/cjs/schemas/IdentificationSchema.d.ts +45 -0
  132. package/dist/cjs/schemas/LockSchema.d.ts +152 -0
  133. package/dist/cjs/schemas/MediaFileSchema.d.ts +43 -0
  134. package/dist/cjs/schemas/MediaSourceSchema.d.ts +244 -0
  135. package/dist/cjs/schemas/MotionSensorSchema.d.ts +143 -0
  136. package/dist/cjs/schemas/OrderSchema.d.ts +91 -0
  137. package/dist/cjs/schemas/OrganizationSchema.d.ts +34 -0
  138. package/dist/cjs/schemas/PaymentSchema.d.ts +33 -0
  139. package/dist/cjs/schemas/ProductSchema.d.ts +66 -0
  140. package/dist/cjs/schemas/PropertySchema.d.ts +144 -0
  141. package/dist/cjs/schemas/ReservationSchema.d.ts +119 -0
  142. package/dist/cjs/schemas/RoomSchema.d.ts +1103 -0
  143. package/dist/cjs/schemas/SceneSchema.d.ts +57 -0
  144. package/dist/cjs/schemas/ShortLinkSchema.d.ts +20 -0
  145. package/dist/cjs/schemas/SmsMessageSchema.d.ts +40 -0
  146. package/dist/cjs/schemas/SpaceSchema.d.ts +73 -0
  147. package/dist/cjs/schemas/SwitchSchema.d.ts +148 -0
  148. package/dist/cjs/schemas/SystemUserSchema.d.ts +194 -0
  149. package/dist/cjs/schemas/ThermostatSchema.d.ts +178 -0
  150. package/dist/cjs/schemas/TicketSchema.d.ts +90 -0
  151. package/dist/cjs/schemas/UserSchema.d.ts +287 -0
  152. package/dist/cjs/schemas/WindowCoveringSchema.d.ts +147 -0
  153. package/dist/cjs/schemas/alarm.json +81 -0
  154. package/dist/cjs/schemas/announcement.json +47 -0
  155. package/dist/cjs/schemas/camera.json +50 -0
  156. package/dist/cjs/schemas/category.json +42 -0
  157. package/dist/cjs/schemas/courtesy.json +48 -0
  158. package/dist/cjs/schemas/credential.json +51 -0
  159. package/dist/cjs/schemas/definitions.json +223 -0
  160. package/dist/cjs/schemas/deviceRouter.json +28 -0
  161. package/dist/cjs/schemas/dimmer.json +42 -0
  162. package/dist/cjs/schemas/discoveredDevice.json +35 -0
  163. package/dist/cjs/schemas/emailMessage.json +71 -0
  164. package/dist/cjs/schemas/energyReport.json +86 -0
  165. package/dist/cjs/schemas/energyReportShard.json +75 -0
  166. package/dist/cjs/schemas/gateway.json +34 -0
  167. package/dist/cjs/schemas/identification.json +61 -0
  168. package/dist/cjs/schemas/lock.json +50 -0
  169. package/dist/cjs/schemas/mediaFile.json +70 -0
  170. package/dist/cjs/schemas/mediaSource.json +187 -0
  171. package/dist/cjs/schemas/motionSensor.json +32 -0
  172. package/dist/cjs/schemas/order.json +182 -0
  173. package/dist/cjs/schemas/organization.json +40 -0
  174. package/dist/cjs/schemas/payment.json +47 -0
  175. package/dist/cjs/schemas/product.json +41 -0
  176. package/dist/cjs/schemas/property.json +347 -0
  177. package/dist/cjs/schemas/reservation.json +137 -0
  178. package/dist/cjs/schemas/room.json +98 -0
  179. package/dist/cjs/schemas/scene.json +121 -0
  180. package/dist/cjs/schemas/shortLink.json +30 -0
  181. package/dist/cjs/schemas/smsMessage.json +61 -0
  182. package/dist/cjs/schemas/space.json +129 -0
  183. package/dist/cjs/schemas/switch.json +44 -0
  184. package/dist/cjs/schemas/systemUser.json +98 -0
  185. package/dist/cjs/schemas/thermostat.json +150 -0
  186. package/dist/cjs/schemas/ticket.json +181 -0
  187. package/dist/cjs/schemas/user.json +170 -0
  188. package/dist/cjs/schemas/windowCovering.json +42 -0
  189. package/dist/cjs/utils/errorFactory.js +8 -0
  190. package/dist/cjs/utils/eventFactory.js +10 -0
  191. package/dist/cjs/utils/getDeviceTypes.js +7 -0
  192. package/dist/cjs/utils/getFormalDeviceType.js +5 -0
  193. package/dist/cjs/utils/index.js +11 -0
  194. package/dist/cjs/utils/schema.js +25 -0
  195. package/dist/esm/Client.js +2013 -637
  196. package/dist/esm/Client.js.map +4 -4
  197. package/dist/esm/Commands.js +519 -140
  198. package/dist/esm/Commands.js.map +3 -3
  199. package/dist/esm/Errors.js +73 -22
  200. package/dist/esm/Errors.js.map +3 -3
  201. package/dist/esm/Events.js +422 -73
  202. package/dist/esm/Events.js.map +3 -3
  203. package/dist/esm/Models.js +3407 -3923
  204. package/dist/esm/Models.js.map +4 -4
  205. package/dist/esm/SocketIoClient.js +4846 -0
  206. package/dist/esm/SocketIoClient.js.map +7 -0
  207. package/dist/esm/defs.js +168 -112
  208. package/dist/esm/defs.js.map +4 -4
  209. package/dist/esm/index.js +17 -10
  210. package/dist/esm/utils.js +451 -73
  211. package/dist/esm/utils.js.map +3 -3
  212. package/dist/useCases/AdminUpdateCustomer.js +1 -1
  213. package/dist/useCases/AssignSpaceToReservation.js +32 -0
  214. package/dist/useCases/{AdminCreateProperty.js → BatchNotifyCheckIn.js} +2 -2
  215. package/dist/useCases/{AdminCreateCustomer.js → BatchNotifyCheckOut.js} +2 -2
  216. package/dist/useCases/BatchNotifyMissedCheckOut.js +32 -0
  217. package/dist/useCases/{AdminUpdateProperty.js → CheckOutReservation.js} +3 -3
  218. package/dist/useCases/{AdminListCustomers.js → CreateAnnouncement.js} +3 -3
  219. package/dist/useCases/CreateCateory.js +32 -0
  220. package/dist/useCases/CreateImageUploadEndpoint.js +32 -0
  221. package/dist/useCases/CreateMediaSource.js +32 -0
  222. package/dist/useCases/CreateOrganization.js +32 -0
  223. package/dist/useCases/{AdminLoginUser.js → CreateProperty.js} +2 -2
  224. package/dist/useCases/DeleteAnnouncement.js +32 -0
  225. package/dist/useCases/DeleteCategory.js +32 -0
  226. package/dist/useCases/DeleteMediaFile.js +32 -0
  227. package/dist/useCases/DeleteMediaSource.js +32 -0
  228. package/dist/useCases/{AdminCreateAdminUser.js → DescribeAnnouncement.js} +4 -4
  229. package/dist/useCases/{ListIntegrations.js → DescribeCategory.js} +3 -3
  230. package/dist/useCases/{DeleteSource.js → DescribeLockCredential.js} +3 -3
  231. package/dist/useCases/{AdminListAdminUsers.js → DescribeMediaSource.js} +3 -3
  232. package/dist/useCases/DescribeMyAccessCredentials.js +32 -0
  233. package/dist/useCases/{AdminDescribeCustomer.js → DescribeOrganization.js} +2 -2
  234. package/dist/useCases/{DescribeIntegration.js → DescribeProduct.js} +2 -2
  235. package/dist/useCases/DescribeProperty.js +32 -0
  236. package/dist/useCases/DescribeReservationEarlyCheckInProducts.js +32 -0
  237. package/dist/useCases/DescribeReservationLateCheckOutProducts.js +32 -0
  238. package/dist/useCases/{AdminDescribeProperty.js → DescribeReservationRoomUpgrades.js} +2 -2
  239. package/dist/useCases/{AdminRefreshToken.js → ListAnnouncements.js} +3 -3
  240. package/dist/useCases/ListCategories.js +32 -0
  241. package/dist/useCases/ListMediaSources.js +32 -0
  242. package/dist/useCases/{CreateSource.js → ListMyOrders.js} +4 -4
  243. package/dist/useCases/{AdminListProperties.js → ListMyTickets.js} +2 -2
  244. package/dist/useCases/ListOrders.js +32 -0
  245. package/dist/useCases/{DeleteIntegration.js → ListOrganizations.js} +3 -3
  246. package/dist/useCases/ListProperties.js +32 -0
  247. package/dist/useCases/ListScenes.js +32 -0
  248. package/dist/useCases/ListTeam.js +32 -0
  249. package/dist/useCases/ListUserOrders.js +32 -0
  250. package/dist/useCases/ListUserSpaces.js +32 -0
  251. package/dist/useCases/LogoutUser.js +32 -0
  252. package/dist/useCases/PurchaseReservationEarlyCheckInProducts.js +32 -0
  253. package/dist/useCases/PurchaseReservationLateCheckOutProducts.js +32 -0
  254. package/dist/useCases/{CreateIntegrationDeviceMapEntry.js → PurchaseReservationRoomUpgrades.js} +2 -2
  255. package/dist/useCases/RequestLoginLink.js +1 -1
  256. package/dist/useCases/{CreateIntegration.js → RequestMyKeyToken.js} +2 -2
  257. package/dist/useCases/RequestPWAToken.js +32 -0
  258. package/dist/useCases/SendCheckInSMS.js +32 -0
  259. package/dist/useCases/SendCheckOutSMS.js +32 -0
  260. package/dist/useCases/SendRoomControlSMS.js +32 -0
  261. package/dist/useCases/{SetSource.js → SetDimmer.js} +2 -2
  262. package/dist/useCases/{DescribeSource.js → SetMediaSource.js} +3 -3
  263. package/dist/useCases/{UpdateSource.js → SetRoomScene.js} +3 -3
  264. package/dist/useCases/SetSpaceScene.js +32 -0
  265. package/dist/useCases/TipUser.js +32 -0
  266. package/dist/useCases/UpdateAnnouncement.js +32 -0
  267. package/dist/useCases/UpdateCategory.js +32 -0
  268. package/dist/useCases/{UpdateIntegration.js → UpdateMediaSource.js} +3 -3
  269. package/dist/useCases/UpdateProperty.js +32 -0
  270. package/dist/useCases/UpdateReservationExpectedArrivalTime.js +32 -0
  271. package/dist/useCases/{ListSources.js → UploadImage.js} +4 -4
  272. package/package.json +37 -14
  273. package/dist/cjs/Commands.js +0 -643
  274. package/dist/cjs/Errors.js +0 -176
  275. package/dist/cjs/Events.js +0 -387
  276. package/dist/cjs/Models.js +0 -3612
  277. package/dist/cjs/defs.js +0 -178
  278. package/dist/cjs/utils.js +0 -250
  279. package/dist/useCases/AdminRequestLoginLink.js +0 -32
  280. package/dist/useCases/DescribeReservationCheckinStatus.js +0 -32
@@ -0,0 +1,17 @@
1
+ const Event = require("./Event");
2
+
3
+ class SystemThermostatUpdatedEvent extends Event {
4
+ constructor(thermostat) {
5
+ super(thermostat);
6
+ }
7
+
8
+ get name() {
9
+ return "SystemThermostatUpdated";
10
+ }
11
+
12
+ get routingKey() {
13
+ return `thermostat.${this.keyId}.updated`;
14
+ }
15
+ }
16
+
17
+ module.exports = SystemThermostatUpdatedEvent;
@@ -0,0 +1,17 @@
1
+ const Event = require("./Event");
2
+
3
+ class SystemUserUpdatedEvent extends Event {
4
+ constructor(user) {
5
+ super(user);
6
+ }
7
+
8
+ get name() {
9
+ return "SystemUserUpdated";
10
+ }
11
+
12
+ get routingKey() {
13
+ return `user.${this.keyId}.updated`;
14
+ }
15
+ }
16
+
17
+ module.exports = SystemUserUpdatedEvent;
@@ -0,0 +1,17 @@
1
+ const Event = require("./Event");
2
+
3
+ class SystemWindowCoveringUpdatedEvent extends Event {
4
+ constructor(wc) {
5
+ super(wc);
6
+ }
7
+
8
+ get name() {
9
+ return "SystemWindowCoveringUpdated";
10
+ }
11
+
12
+ get routingKey() {
13
+ return `windowCovering.${this.keyId}.updated`;
14
+ }
15
+ }
16
+
17
+ module.exports = SystemWindowCoveringUpdatedEvent;
@@ -0,0 +1,65 @@
1
+ const SystemGatewayUpdatedEvent = require("./SystemGatewayUpdatedEvent");
2
+ const SystemThermostatUpdatedEvent = require("./SystemThermostatUpdatedEvent");
3
+ const SystemDimmerUpdatedEvent = require("./SystemDimmerUpdatedEvent");
4
+ const SystemSwitchUpdatedEvent = require("./SystemSwitchUpdatedEvent");
5
+ const SystemLockUpdatedEvent = require("./SystemLockUpdatedEvent");
6
+ const SystemCameraUpdatedEvent = require("./SystemCameraUpdatedEvent");
7
+ const SystemSceneControllerUpdatedEvent = require("./SystemSceneControllerUpdatedEvent");
8
+ const SystemWindowCoveringUpdatedEvent = require("./SystemWindowCoveringUpdatedEvent");
9
+ const SystemMediaSourceUpdatedEvent = require("./SystemMediaSourceUpdatedEvent");
10
+ const SystemCourtesyUpdatedEvent = require("./SystemCourtesyUpdatedEvent");
11
+ const SystemAlarmUpdatedEvent = require("./SystemAlarmUpdatedEvent");
12
+ const SystemMotionSensorUpdatedEvent = require("./SystemMotionSensorUpdatedEvent");
13
+ const SystemPropertyUpdatedEvent = require("./SystemPropertyUpdatedEvent");
14
+ const SystemOrganizationUpdatedEvent = require("./SystemOrganizationUpdatedEvent");
15
+ const SystemCredentialUpdatedEvent = require("./SystemCredentialUpdatedEvent");
16
+
17
+ const SceneSetEvent = require("./SceneSetEvent");
18
+
19
+ const SystemUserUpdatedEvent = require("./SystemUserUpdatedEvent");
20
+ const SystemSpaceUpdatedEvent = require("./SystemSpaceUpdatedEvent");
21
+ const SystemCategoryUpdatedEvent = require("./SystemCategoryUpdatedEvent");
22
+ const SystemProductUpdatedEvent = require("./SystemProductUpdatedEvent");
23
+
24
+ const SystemReservationUpdatedEvent = require("./SystemReservationUpdatedEvent");
25
+
26
+ const SMSEvent = require("./SMSEvent");
27
+ const EmailEvent = require("./EmailEvent");
28
+ const ShortLinkCreatedEvent = require("./ShortLinkCreatedEvent");
29
+
30
+ const ApplicationInUseEvent = require("./ApplicationInUseEvent");
31
+ const ApplicationOutOfUseEvent = require("./ApplicationOutOfUseEvent");
32
+
33
+ // Delete Events
34
+ const SystemEntityDeletedEvent = require("./SystemEntityDeletedEvent");
35
+
36
+
37
+ module.exports = {
38
+ SystemAlarmUpdatedEvent,
39
+ SystemCredentialUpdatedEvent,
40
+ SystemGatewayUpdatedEvent,
41
+ SystemThermostatUpdatedEvent,
42
+ SystemDimmerUpdatedEvent,
43
+ SystemSwitchUpdatedEvent,
44
+ SystemLockUpdatedEvent,
45
+ SystemCameraUpdatedEvent,
46
+ SystemSceneControllerUpdatedEvent,
47
+ SystemWindowCoveringUpdatedEvent,
48
+ SystemMediaSourceUpdatedEvent,
49
+ SystemMotionSensorUpdatedEvent,
50
+ SystemCourtesyUpdatedEvent,
51
+ SystemUserUpdatedEvent,
52
+ SystemSpaceUpdatedEvent,
53
+ SystemCategoryUpdatedEvent,
54
+ SystemProductUpdatedEvent,
55
+ SystemPropertyUpdatedEvent,
56
+ SystemOrganizationUpdatedEvent,
57
+ SystemReservationUpdatedEvent,
58
+ SystemEntityDeletedEvent,
59
+ SceneSetEvent,
60
+ SMSEvent,
61
+ EmailEvent,
62
+ ShortLinkCreatedEvent,
63
+ ApplicationInUseEvent,
64
+ ApplicationOutOfUseEvent,
65
+ };
@@ -0,0 +1,35 @@
1
+ // create the Alarm Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/alarm.json");
4
+ const Entity = require("./Entity");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ class Alarm extends Entity {
10
+ /**
11
+ * @typedef {import("../schemas/AlarmSchema").Alarm} AlarmType
12
+ * Create a Alarm instance.
13
+ * @constructor
14
+ * @param {AlarmType} alarm - The alarm object of type Alarm.
15
+ */
16
+ constructor(alarm) {
17
+ super(alarm);
18
+ }
19
+ }
20
+
21
+ Object.defineProperty(Alarm.prototype, "schema", {
22
+ value: schema,
23
+ });
24
+
25
+ Object.defineProperty(Alarm.prototype, "validator", {
26
+ get: function () {
27
+ return validator;
28
+ },
29
+ });
30
+
31
+ Object.defineProperty(Alarm, "validProperties", {
32
+ value: Object.keys(schema.properties),
33
+ });
34
+
35
+ module.exports = Alarm;
@@ -0,0 +1,34 @@
1
+ const schemas = require("../utils/schema");
2
+ const schema = require("../schemas/announcement.json");
3
+ const Entity = require("./Entity");
4
+
5
+ schemas.add(schema);
6
+ const validator = schemas.compile(schema);
7
+
8
+ class Announcement extends Entity {
9
+ /**
10
+ * @typedef {import("../schemas/AnnouncementSchema").Announcement} AnnouncementType
11
+ * Create a Announcement instance.
12
+ * @constructor
13
+ * @param {AnnouncementType} property - The property object of type Announcement.
14
+ */
15
+ constructor(announcement) {
16
+ super(announcement);
17
+ }
18
+ }
19
+
20
+ Object.defineProperty(Announcement.prototype, "schema", {
21
+ value: schema,
22
+ });
23
+
24
+ Object.defineProperty(Announcement.prototype, "validator", {
25
+ get: function () {
26
+ return validator;
27
+ },
28
+ });
29
+
30
+ Object.defineProperty(Announcement, "validProperties", {
31
+ value: Object.keys(schema.properties),
32
+ });
33
+
34
+ module.exports = Announcement;
@@ -0,0 +1,35 @@
1
+ // create the Camera Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/camera.json");
4
+ const Entity = require("./Entity");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ class Camera extends Entity {
10
+ /**
11
+ * @typedef {import("../schemas/CameraSchema").Camera} CameraType
12
+ * Create a Camera instance.
13
+ * @constructor
14
+ * @param {CameraType} camera - The camera object of type Camera.
15
+ */
16
+ constructor(camera) {
17
+ super(camera);
18
+ }
19
+ }
20
+
21
+ Object.defineProperty(Camera.prototype, "schema", {
22
+ value: schema,
23
+ });
24
+
25
+ Object.defineProperty(Camera.prototype, "validator", {
26
+ get: function () {
27
+ return validator;
28
+ },
29
+ });
30
+
31
+ Object.defineProperty(Camera, "validProperties", {
32
+ value: Object.keys(schema.properties),
33
+ });
34
+
35
+ module.exports = Camera;
@@ -0,0 +1,36 @@
1
+ // Create the Category Model
2
+ // Originally used for hotel room category e.g. Double Queen
3
+ const schemas = require("../utils/schema");
4
+ const schema = require("../schemas/category.json");
5
+ const Entity = require("./Entity");
6
+
7
+ schemas.add(schema);
8
+ const validator = schemas.compile(schema);
9
+
10
+ class Category extends Entity {
11
+ /**
12
+ * @typedef {import("../schemas/CategorySchema").Category} CategoryType
13
+ * Create a Category instance.
14
+ * @constructor
15
+ * @param {CategoryType} category - The category object of type SpaceType.
16
+ */
17
+ constructor(category) {
18
+ super(category);
19
+ }
20
+ }
21
+
22
+ Object.defineProperty(Category.prototype, "schema", {
23
+ value: schema,
24
+ });
25
+
26
+ Object.defineProperty(Category.prototype, "validator", {
27
+ get: function () {
28
+ return validator;
29
+ },
30
+ });
31
+
32
+ Object.defineProperty(Category, "validProperties", {
33
+ value: Object.keys(schema.properties),
34
+ });
35
+
36
+ module.exports = Category;
@@ -0,0 +1,39 @@
1
+ // create the Courtesy Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/courtesy.json");
4
+ const Entity = require("./Entity");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ class Courtesy extends Entity {
10
+ /**
11
+ * @typedef {import("../schemas/CourtesySchema").Courtesy} CourtesyType
12
+ * Create a Courtesy instance.
13
+ * @constructor
14
+ * @param {CourtesyType} courtesy - The courtesy object of type Courtesy.
15
+ */
16
+ constructor(courtesy) {
17
+ super(courtesy);
18
+ }
19
+ }
20
+
21
+ Object.defineProperty(Courtesy.prototype, "schema", {
22
+ value: schema,
23
+ });
24
+
25
+ Object.defineProperty(Courtesy.prototype, "validator", {
26
+ get: function () {
27
+ return validator;
28
+ },
29
+ });
30
+
31
+ Object.defineProperty(Courtesy, "validProperties", {
32
+ value: Object.keys(schema.properties),
33
+ });
34
+
35
+ Object.defineProperty(Courtesy, "actionProperties", {
36
+ value: ["state"],
37
+ });
38
+
39
+ module.exports = Courtesy;
@@ -0,0 +1,35 @@
1
+ // create the Credential Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/credential.json");
4
+ const Entity = require("./Entity");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ class Credential extends Entity {
10
+ /**
11
+ * @typedef {import("../schemas/CredentialSchema").Credential} CredentialType
12
+ * Create a Credential instance.
13
+ * @constructor
14
+ * @param {CredentialType} credential - The credential object of type Credential.
15
+ */
16
+ constructor(credential) {
17
+ super(credential);
18
+ }
19
+ }
20
+
21
+ Object.defineProperty(Credential.prototype, "schema", {
22
+ value: schema,
23
+ });
24
+
25
+ Object.defineProperty(Credential.prototype, "validator", {
26
+ get: function () {
27
+ return validator;
28
+ },
29
+ });
30
+
31
+ Object.defineProperty(Credential, "validProperties", {
32
+ value: Object.keys(schema.properties),
33
+ });
34
+
35
+ module.exports = Credential;
@@ -0,0 +1,36 @@
1
+ // Create the Device Router Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/deviceRouter.json");
4
+
5
+ const Entity = require("./Entity");
6
+
7
+ schemas.add(schema);
8
+ const validator = schemas.compile(schema);
9
+
10
+ class DeviceRouter extends Entity {
11
+ /**
12
+ * @typedef {import("../schemas/DeviceRouterSchema").DeviceRouter} DeviceRouterType
13
+ * Create a DeviceRouter instance.
14
+ * @constructor
15
+ * @param {DeviceRouterType} device - The device object of type DeviceRouter.
16
+ */
17
+ constructor(device) {
18
+ super(device);
19
+ }
20
+ }
21
+
22
+ Object.defineProperty(DeviceRouter.prototype, "schema", {
23
+ value: schema,
24
+ });
25
+
26
+ Object.defineProperty(DeviceRouter.prototype, "validator", {
27
+ get: function () {
28
+ return validator;
29
+ },
30
+ });
31
+
32
+ Object.defineProperty(DeviceRouter, "validProperties", {
33
+ value: Object.keys(schema.properties),
34
+ });
35
+
36
+ module.exports = DeviceRouter;
@@ -0,0 +1,61 @@
1
+ // Create the Dimmer Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/dimmer.json");
4
+ const Entity = require("./Entity");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ /**
10
+ * Represents a Dimmer device.
11
+ * @class
12
+ * @extends Entity
13
+ */
14
+
15
+ class Dimmer extends Entity {
16
+ /**
17
+ * @typedef {import("../schemas/DimmerSchema").Dimmer} DimmerType
18
+ * Create a Dimmer instance.
19
+ * @constructor
20
+ * @param {DimmerType} dimmer - The dimmer object of type Dimmer.
21
+ */
22
+ constructor(dimmer) {
23
+ super(dimmer);
24
+ }
25
+
26
+ static getActionDelta(old, _new) {
27
+ const delta = {};
28
+ for (const action in _new) {
29
+ if (this.actionProperties?.includes(action)) {
30
+ if (action === "level") {
31
+ const oldLevel = old[action];
32
+ const newLevel = _new[action];
33
+ delta[action] = newLevel - oldLevel / 100;
34
+ } else {
35
+ delta[action] = 1;
36
+ }
37
+ }
38
+ }
39
+ return delta;
40
+ }
41
+ }
42
+
43
+ Object.defineProperty(Dimmer.prototype, "schema", {
44
+ value: schema,
45
+ });
46
+
47
+ Object.defineProperty(Dimmer.prototype, "validator", {
48
+ get: function () {
49
+ return validator;
50
+ },
51
+ });
52
+
53
+ Object.defineProperty(Dimmer, "validProperties", {
54
+ value: Object.keys(schema.properties),
55
+ });
56
+
57
+ Object.defineProperty(Dimmer, "actionProperties", {
58
+ value: ["level"],
59
+ });
60
+
61
+ module.exports = Dimmer;
@@ -0,0 +1,36 @@
1
+ // Create the Discovered Device Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/discoveredDevice.json");
4
+
5
+ const Entity = require("./Entity");
6
+
7
+ schemas.add(schema);
8
+ const validator = schemas.compile(schema);
9
+
10
+ class DiscoveredDevice extends Entity {
11
+ /**
12
+ * @typedef {import("../schemas/DiscoveredDeviceSchema").DiscoveredDevice} DiscoveredDeviceType
13
+ * Create a DiscoveredDevice instance.
14
+ * @constructor
15
+ * @param {DiscoveredDeviceType} device - The dd object of type DiscoveredDevice.
16
+ */
17
+ constructor(device) {
18
+ super(device);
19
+ }
20
+ }
21
+
22
+ Object.defineProperty(DiscoveredDevice.prototype, "schema", {
23
+ value: schema,
24
+ });
25
+
26
+ Object.defineProperty(DiscoveredDevice.prototype, "validator", {
27
+ get: function () {
28
+ return validator;
29
+ },
30
+ });
31
+
32
+ Object.defineProperty(DiscoveredDevice, "validProperties", {
33
+ value: Object.keys(schema.properties),
34
+ });
35
+
36
+ module.exports = DiscoveredDevice;
@@ -0,0 +1,35 @@
1
+ // Create the SMS Message Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/emailMessage.json");
4
+ const Entity = require("./Entity");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ class EmailMessage extends Entity {
10
+ /**
11
+ * @typedef {import("../schemas/EmailMessageSchema").EmailMessage} EmailMessageType
12
+ * Create a EmailMessage instance.
13
+ * @constructor
14
+ * @param {EmailMessageType} message - The message object of type EmailMessage.
15
+ */
16
+ constructor(message) {
17
+ super(message);
18
+ }
19
+ }
20
+
21
+ Object.defineProperty(EmailMessage.prototype, "schema", {
22
+ value: schema,
23
+ });
24
+
25
+ Object.defineProperty(EmailMessage.prototype, "validator", {
26
+ get: function () {
27
+ return validator;
28
+ },
29
+ });
30
+
31
+ Object.defineProperty(EmailMessage, "validProperties", {
32
+ value: Object.keys(schema.properties),
33
+ });
34
+
35
+ module.exports = EmailMessage;
@@ -0,0 +1,35 @@
1
+ // create the energyReportDaily Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/energyReport.json");
4
+ const Entity = require("./Entity");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ class EnergyReport extends Entity {
10
+ /**
11
+ * @typedef {import("../schemas/EnergyReportSchema").EnergyReport} EnergyReportType
12
+ * Create a EnergyReport instance.
13
+ * @constructor
14
+ * @param {EnergyReportType} energyReport - The energyReport object of type EnergyReport.
15
+ */
16
+ constructor(energyReport) {
17
+ super(energyReport);
18
+ }
19
+ }
20
+
21
+ Object.defineProperty(EnergyReport.prototype, "schema", {
22
+ value: schema,
23
+ });
24
+
25
+ Object.defineProperty(EnergyReport.prototype, "validator", {
26
+ get: function () {
27
+ return validator;
28
+ },
29
+ });
30
+
31
+ Object.defineProperty(EnergyReport, "validProperties", {
32
+ value: Object.keys(schema.properties),
33
+ });
34
+
35
+ module.exports = EnergyReport;
@@ -0,0 +1,35 @@
1
+ // create the energyReportShard Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/energyReportShard.json");
4
+ const Entity = require("./Entity");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ class EnergyReportShard extends Entity {
10
+ /**
11
+ * @typedef {import("../schemas/EnergyReportShardSchema").EnergyReportShard} EnergyReportShardType
12
+ * Create a EnergyReportShard instance.
13
+ * @constructor
14
+ * @param {EnergyReportShardType} energyReportShard - The energyReportShard object of type EnergyReportShard.
15
+ */
16
+ constructor(energyReportShard) {
17
+ super(energyReportShard);
18
+ }
19
+ }
20
+
21
+ Object.defineProperty(EnergyReportShard.prototype, "schema", {
22
+ value: schema,
23
+ });
24
+
25
+ Object.defineProperty(EnergyReportShard.prototype, "validator", {
26
+ get: function () {
27
+ return validator;
28
+ },
29
+ });
30
+
31
+ Object.defineProperty(EnergyReportShard, "validProperties", {
32
+ value: Object.keys(schema.properties),
33
+ });
34
+
35
+ module.exports = EnergyReportShard;
@@ -0,0 +1,96 @@
1
+ const { ValidationError } = require("../Errors");
2
+ const { customAlphabet: generate } = require("nanoid");
3
+
4
+ class Entity {
5
+ constructor(data) {
6
+ if (!this.schema) {
7
+ throw new Error("Schema is not defined");
8
+ }
9
+
10
+ if (!this.validator) {
11
+ throw new Error("Validator is not defined");
12
+ }
13
+
14
+ const isNew = data?.id ? false : true;
15
+
16
+ this.#_setId(data);
17
+ this.#_validate(data);
18
+ this.#_setProperties(data);
19
+ this.#_setTimestamps(isNew);
20
+ }
21
+
22
+ static get validProperties() {
23
+ throw new Error("validProperties is not defined");
24
+ }
25
+
26
+ get schemaProperties() {
27
+ return Object.keys(this.validator.schema.properties);
28
+ }
29
+
30
+ #_setId(data) {
31
+ if (data._id) data.id = data._id;
32
+ if (!data.id) {
33
+ data.id = this.constructor.generateId();
34
+ }
35
+ delete data._id;
36
+ }
37
+
38
+ #_setProperties(data) {
39
+ this.schemaProperties.forEach((key) => {
40
+ if (data[key] !== undefined) this[key] = data[key];
41
+ });
42
+ }
43
+
44
+ #_setTimestamps(isNew) {
45
+ const now = new Date();
46
+ if (
47
+ isNew &&
48
+ this.schemaProperties.includes("createdAt") &&
49
+ !this.createdAt
50
+ ) {
51
+ this.createdAt = now;
52
+ }
53
+ }
54
+
55
+ #_validate(data) {
56
+ const valid = this.validator(data);
57
+ if (!valid) {
58
+ throw new ValidationError(`Invalid ${this.constructor.name}`, {
59
+ cause: this.validator.errors,
60
+ });
61
+ }
62
+ }
63
+
64
+ static generateId() {
65
+ const length = 8;
66
+ const characters =
67
+ "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
68
+ const id = generate(characters, length)();
69
+ return id;
70
+ }
71
+
72
+ static getActionDelta(old, _new) {
73
+ const delta = {};
74
+ for (const action in _new) {
75
+ if (this.actionProperties?.includes(action)) {
76
+ if (old[action] !== _new[action]) {
77
+ delta[action] = 1;
78
+ }
79
+ }
80
+ }
81
+ return delta;
82
+ }
83
+
84
+ toObject() {
85
+ const obj = { ...this };
86
+ // delete keys if they are not valid properties
87
+ Object.keys(obj).forEach((key) => {
88
+ if (!this.constructor.validProperties.includes(key)) {
89
+ delete obj[key];
90
+ }
91
+ });
92
+ return obj;
93
+ }
94
+ }
95
+
96
+ module.exports = Entity;