@kohost/api-client 3.0.0-beta.47 → 3.0.0-beta.50

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 (156) hide show
  1. package/dist/cjs/AMQPClient/index.js +290 -0
  2. package/dist/cjs/Commands/CheckInReservationCommand.js +19 -0
  3. package/dist/cjs/Commands/Command.js +34 -0
  4. package/dist/cjs/Commands/CreateImageUploadEndpointCommand.js +17 -0
  5. package/dist/cjs/Commands/CreateShortLinkCommand.js +20 -0
  6. package/dist/cjs/Commands/DiscoverReservationRoomTypeUpsellOptionsCommand.js +20 -0
  7. package/dist/cjs/Commands/DiscoverReservationsCommand.js +20 -0
  8. package/dist/cjs/Commands/DiscoverRoomTypesCommand.js +19 -0
  9. package/dist/cjs/Commands/DiscoverRoomsCommand.js +35 -0
  10. package/dist/cjs/Commands/DiscoverUsersCommand.js +19 -0
  11. package/dist/cjs/Commands/GetMobileKeyCommand.js +24 -0
  12. package/dist/cjs/Commands/GetProductsCommand.js +17 -0
  13. package/dist/cjs/Commands/OCRDocumentCommand.js +15 -0
  14. package/dist/cjs/Commands/SellProductsCommand.js +17 -0
  15. package/dist/cjs/Commands/SendEmailCommand.js +24 -0
  16. package/dist/cjs/Commands/SendSMSCommand.js +21 -0
  17. package/dist/cjs/Commands/SetAlarmCommand.js +17 -0
  18. package/dist/cjs/Commands/SetCourtesyCommand.js +17 -0
  19. package/dist/cjs/Commands/SetDimmerCommand.js +17 -0
  20. package/dist/cjs/Commands/SetLockCommand.js +17 -0
  21. package/dist/cjs/Commands/SetMediaCommand.js +17 -0
  22. package/dist/cjs/Commands/SetSceneCommand.js +17 -0
  23. package/dist/cjs/Commands/SetSwitchCommand.js +17 -0
  24. package/dist/cjs/Commands/SetThermostatCommand.js +17 -0
  25. package/dist/cjs/Commands/SetWindowCoveringCommand.js +17 -0
  26. package/dist/cjs/Commands/UpdateReservationCommand.js +19 -0
  27. package/dist/cjs/Commands/UpdateUserCommand.js +41 -0
  28. package/dist/cjs/Commands/UploadImageCommand.js +17 -0
  29. package/dist/cjs/Commands/index.js +55 -0
  30. package/dist/cjs/Errors/AppError.js +8 -0
  31. package/dist/cjs/Errors/AuthenticationError.js +9 -0
  32. package/dist/cjs/Errors/AuthorizationError.js +9 -0
  33. package/dist/cjs/Errors/DeviceCommError.js +9 -0
  34. package/dist/cjs/Errors/LoginError.js +9 -0
  35. package/dist/cjs/Errors/NotFoundError.js +9 -0
  36. package/dist/cjs/Errors/RequestError.js +9 -0
  37. package/dist/cjs/Errors/SystemCommError.js +9 -0
  38. package/dist/cjs/Errors/TokenExpiredError.js +9 -0
  39. package/dist/cjs/Errors/UnprocessableRequestError.js +9 -0
  40. package/dist/cjs/Errors/ValidationError.js +9 -0
  41. package/dist/cjs/Errors/index.js +15 -0
  42. package/dist/cjs/Events/ApplicationInUseEvent.js +17 -0
  43. package/dist/cjs/Events/ApplicationOutOfUseEvent.js +17 -0
  44. package/dist/cjs/Events/EmailEvent.js +18 -0
  45. package/dist/cjs/Events/Event.js +55 -0
  46. package/dist/cjs/Events/SMSEvent.js +18 -0
  47. package/dist/cjs/Events/SMSSentEvent.js +17 -0
  48. package/dist/cjs/Events/ShortLinkCreatedEvent.js +17 -0
  49. package/dist/cjs/Events/SystemCameraUpdatedEvent.js +17 -0
  50. package/dist/cjs/Events/SystemCourtesyUpdatedEvent.js +17 -0
  51. package/dist/cjs/Events/SystemDimmerUpdatedEvent.js +17 -0
  52. package/dist/cjs/Events/SystemGatewayUpdatedEvent.js +17 -0
  53. package/dist/cjs/Events/SystemLockUpdatedEvent.js +17 -0
  54. package/dist/cjs/Events/SystemMediaSourceUpdatedEvent.js +17 -0
  55. package/dist/cjs/Events/SystemMotionSensorUpdatedEvent.js +17 -0
  56. package/dist/cjs/Events/SystemProductUpdatedEvent.js +17 -0
  57. package/dist/cjs/Events/SystemReservationUpdatedEvent.js +17 -0
  58. package/dist/cjs/Events/SystemSceneControllerUpdatedEvent.js +17 -0
  59. package/dist/cjs/Events/SystemSpaceTypeUpdatedEvent.js +17 -0
  60. package/dist/cjs/Events/SystemSpaceUpdatedEvent.js +17 -0
  61. package/dist/cjs/Events/SystemSwitchUpdatedEvent.js +17 -0
  62. package/dist/cjs/Events/SystemThermostatUpdatedEvent.js +17 -0
  63. package/dist/cjs/Events/SystemUserUpdatedEvent.js +17 -0
  64. package/dist/cjs/Events/SystemWindowCoveringUpdatedEvent.js +17 -0
  65. package/dist/cjs/Events/index.js +50 -0
  66. package/dist/cjs/Models/Alarm.js +29 -0
  67. package/dist/cjs/Models/Camera.js +29 -0
  68. package/dist/cjs/Models/Courtesy.js +33 -0
  69. package/dist/cjs/Models/Credential.js +29 -0
  70. package/dist/cjs/Models/Dimmer.js +61 -0
  71. package/dist/cjs/Models/DiscoveredDevice.js +30 -0
  72. package/dist/cjs/Models/EmailMessage.js +29 -0
  73. package/dist/cjs/Models/EnergyReport.js +29 -0
  74. package/dist/cjs/Models/EnergyReportShard.js +29 -0
  75. package/dist/cjs/Models/Gateway.js +29 -0
  76. package/dist/cjs/Models/Identification.js +32 -0
  77. package/dist/cjs/Models/Kohost.js +96 -0
  78. package/dist/cjs/Models/Lock.js +33 -0
  79. package/dist/cjs/Models/MediaFile.js +41 -0
  80. package/dist/cjs/Models/MediaSource.js +29 -0
  81. package/dist/cjs/Models/MotionSensor.js +29 -0
  82. package/dist/cjs/Models/Organization.js +28 -0
  83. package/dist/cjs/Models/Product.js +29 -0
  84. package/dist/cjs/Models/Property.js +28 -0
  85. package/dist/cjs/Models/Reservation.js +98 -0
  86. package/dist/cjs/Models/Room.js +212 -0
  87. package/dist/cjs/Models/Scene.js +183 -0
  88. package/dist/cjs/Models/ShortLink.js +29 -0
  89. package/dist/cjs/Models/SmsMessage.js +29 -0
  90. package/dist/cjs/Models/Space.js +97 -0
  91. package/dist/cjs/Models/SpaceType.js +30 -0
  92. package/dist/cjs/Models/Switch.js +33 -0
  93. package/dist/cjs/Models/SystemUser.js +48 -0
  94. package/dist/cjs/Models/Thermostat.js +80 -0
  95. package/dist/cjs/Models/Ticket.js +105 -0
  96. package/dist/cjs/Models/User.js +73 -0
  97. package/dist/cjs/Models/WindowCovering.js +49 -0
  98. package/dist/cjs/Models/index.js +68 -0
  99. package/dist/cjs/{SocketIoClient.js → SocketIoClient/index.js} +19 -14
  100. package/dist/cjs/defs/deviceTypes.js +15 -0
  101. package/dist/cjs/defs/formalDeviceTypes.js +6 -0
  102. package/dist/cjs/defs/index.js +11 -0
  103. package/dist/cjs/index.js +23 -0
  104. package/dist/cjs/schemas/alarm.json +103 -0
  105. package/dist/cjs/schemas/camera.json +50 -0
  106. package/dist/cjs/schemas/courtesy.json +46 -0
  107. package/dist/cjs/schemas/credential.json +31 -0
  108. package/dist/cjs/schemas/definitions.json +191 -0
  109. package/dist/cjs/schemas/dimmer.json +43 -0
  110. package/dist/cjs/schemas/discoveredDevice.json +31 -0
  111. package/dist/cjs/schemas/emailMessage.json +71 -0
  112. package/dist/cjs/schemas/energyReport.json +86 -0
  113. package/dist/cjs/schemas/energyReportShard.json +75 -0
  114. package/dist/cjs/schemas/gateway.json +35 -0
  115. package/dist/cjs/schemas/identification.json +61 -0
  116. package/dist/cjs/schemas/lock.json +45 -0
  117. package/dist/cjs/schemas/mediaFile.json +67 -0
  118. package/dist/cjs/schemas/mediaSource.json +184 -0
  119. package/dist/cjs/schemas/motionSensor.json +32 -0
  120. package/dist/cjs/schemas/organization.json +36 -0
  121. package/dist/cjs/schemas/payment.json +47 -0
  122. package/dist/cjs/schemas/product.json +40 -0
  123. package/dist/cjs/schemas/property.json +246 -0
  124. package/dist/cjs/schemas/reservation.json +118 -0
  125. package/dist/cjs/schemas/room.json +98 -0
  126. package/dist/cjs/schemas/scene.json +121 -0
  127. package/dist/cjs/schemas/shortLink.json +30 -0
  128. package/dist/cjs/schemas/smsMessage.json +61 -0
  129. package/dist/cjs/schemas/space.json +120 -0
  130. package/dist/cjs/schemas/spaceType.json +30 -0
  131. package/dist/cjs/schemas/switch.json +42 -0
  132. package/dist/cjs/schemas/systemUser.json +95 -0
  133. package/dist/cjs/schemas/thermostat.json +153 -0
  134. package/dist/cjs/schemas/ticket.json +96 -0
  135. package/dist/cjs/schemas/user.json +152 -0
  136. package/dist/cjs/schemas/windowCovering.json +43 -0
  137. package/dist/cjs/utils/errorFactory.js +8 -0
  138. package/dist/cjs/utils/eventFactory.js +10 -0
  139. package/dist/cjs/utils/getDeviceTypes.js +7 -0
  140. package/dist/cjs/utils/getFormalDeviceType.js +5 -0
  141. package/dist/cjs/utils/index.js +11 -0
  142. package/dist/cjs/utils/schema.js +25 -0
  143. package/dist/esm/Models.js +451 -435
  144. package/dist/esm/Models.js.map +4 -4
  145. package/dist/esm/utils.js +7 -26
  146. package/dist/esm/utils.js.map +3 -3
  147. package/package.json +12 -7
  148. package/dist/cjs/AMQPClient.js +0 -462
  149. package/dist/cjs/Commands.js +0 -973
  150. package/dist/cjs/Errors.js +0 -209
  151. package/dist/cjs/Events.js +0 -578
  152. package/dist/cjs/Models.js +0 -4905
  153. package/dist/cjs/defs.js +0 -167
  154. package/dist/cjs/index.cjs.js +0 -6755
  155. package/dist/cjs/utils.js +0 -525
  156. /package/dist/cjs/{Client.js → Client/index.js} +0 -0
@@ -0,0 +1,17 @@
1
+ const Event = require("./Event");
2
+
3
+ class SystemReservationUpdatedEvent extends Event {
4
+ constructor(reservation) {
5
+ super(reservation);
6
+ }
7
+
8
+ get name() {
9
+ return "SystemReservationUpdated";
10
+ }
11
+
12
+ get routingKey() {
13
+ return `reservation.${this.keyId}.updated`;
14
+ }
15
+ }
16
+
17
+ module.exports = SystemReservationUpdatedEvent;
@@ -0,0 +1,17 @@
1
+ const Event = require("./Event");
2
+
3
+ class SystemSceneControllerUpdatedEvent extends Event {
4
+ constructor(sceneController) {
5
+ super(sceneController);
6
+ }
7
+
8
+ get name() {
9
+ return "SystemSceneControllerUpdated";
10
+ }
11
+
12
+ get routingKey() {
13
+ return `sceneController.${this.keyId}.updated`;
14
+ }
15
+ }
16
+
17
+ module.exports = SystemSceneControllerUpdatedEvent;
@@ -0,0 +1,17 @@
1
+ const Event = require("./Event");
2
+
3
+ class SystemSpaceTypeUpdatedEvent extends Event {
4
+ constructor(space) {
5
+ super(space);
6
+ }
7
+
8
+ get name() {
9
+ return "SystemSpaceTypeUpdated";
10
+ }
11
+
12
+ get routingKey() {
13
+ return `spaceType.${this.keyId}.updated`;
14
+ }
15
+ }
16
+
17
+ module.exports = SystemSpaceTypeUpdatedEvent;
@@ -0,0 +1,17 @@
1
+ const Event = require("./Event");
2
+
3
+ class SystemSpaceUpdatedEvent extends Event {
4
+ constructor(space) {
5
+ super(space);
6
+ }
7
+
8
+ get name() {
9
+ return "SystemSpaceUpdated";
10
+ }
11
+
12
+ get routingKey() {
13
+ return `space.${this.keyId}.updated`;
14
+ }
15
+ }
16
+
17
+ module.exports = SystemSpaceUpdatedEvent;
@@ -0,0 +1,17 @@
1
+ const Event = require("./Event");
2
+
3
+ class SystemSwitchUpdatedEvent extends Event {
4
+ constructor(_switch) {
5
+ super(_switch);
6
+ }
7
+
8
+ get name() {
9
+ return "SystemSwitchUpdated";
10
+ }
11
+
12
+ get routingKey() {
13
+ return `switch.${this.keyId}.updated`;
14
+ }
15
+ }
16
+
17
+ module.exports = SystemSwitchUpdatedEvent;
@@ -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,50 @@
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
+
12
+ const SystemMotionSensorUpdatedEvent = require("./SystemMotionSensorUpdatedEvent");
13
+
14
+ const SystemUserUpdatedEvent = require("./SystemUserUpdatedEvent");
15
+ const SystemSpaceUpdatedEvent = require("./SystemSpaceUpdatedEvent");
16
+ const SystemSpaceTypeUpdatedEvent = require("./SystemSpaceTypeUpdatedEvent");
17
+ const SystemProductUpdatedEvent = require("./SystemProductUpdatedEvent");
18
+
19
+ const SystemReservationUpdatedEvent = require("./SystemReservationUpdatedEvent");
20
+
21
+ const SMSEvent = require("./SMSEvent");
22
+ const EmailEvent = require("./EmailEvent");
23
+ const ShortLinkCreatedEvent = require("./ShortLinkCreatedEvent");
24
+
25
+ const ApplicationInUseEvent = require("./ApplicationInUseEvent");
26
+ const ApplicationOutOfUseEvent = require("./ApplicationOutOfUseEvent");
27
+
28
+ module.exports = {
29
+ SystemGatewayUpdatedEvent,
30
+ SystemThermostatUpdatedEvent,
31
+ SystemDimmerUpdatedEvent,
32
+ SystemSwitchUpdatedEvent,
33
+ SystemLockUpdatedEvent,
34
+ SystemCameraUpdatedEvent,
35
+ SystemSceneControllerUpdatedEvent,
36
+ SystemWindowCoveringUpdatedEvent,
37
+ SystemMediaSourceUpdatedEvent,
38
+ SystemMotionSensorUpdatedEvent,
39
+ SystemCourtesyUpdatedEvent,
40
+ SystemUserUpdatedEvent,
41
+ SystemSpaceUpdatedEvent,
42
+ SystemSpaceTypeUpdatedEvent,
43
+ SystemProductUpdatedEvent,
44
+ SystemReservationUpdatedEvent,
45
+ SMSEvent,
46
+ EmailEvent,
47
+ ShortLinkCreatedEvent,
48
+ ApplicationInUseEvent,
49
+ ApplicationOutOfUseEvent,
50
+ };
@@ -0,0 +1,29 @@
1
+ // create the Alarm Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/alarm.json");
4
+ const Kohost = require("./Kohost");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ class Alarm extends Kohost {
10
+ constructor(data) {
11
+ super(data);
12
+ }
13
+ }
14
+
15
+ Object.defineProperty(Alarm.prototype, "schema", {
16
+ value: schema,
17
+ });
18
+
19
+ Object.defineProperty(Alarm.prototype, "validator", {
20
+ get: function () {
21
+ return validator;
22
+ },
23
+ });
24
+
25
+ Object.defineProperty(Alarm, "validProperties", {
26
+ value: Object.keys(schema.properties),
27
+ });
28
+
29
+ module.exports = Alarm;
@@ -0,0 +1,29 @@
1
+ // create the Alarm Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/camera.json");
4
+ const Kohost = require("./Kohost");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ class Camera extends Kohost {
10
+ constructor(data) {
11
+ super(data);
12
+ }
13
+ }
14
+
15
+ Object.defineProperty(Camera.prototype, "schema", {
16
+ value: schema,
17
+ });
18
+
19
+ Object.defineProperty(Camera.prototype, "validator", {
20
+ get: function () {
21
+ return validator;
22
+ },
23
+ });
24
+
25
+ Object.defineProperty(Camera, "validProperties", {
26
+ value: Object.keys(schema.properties),
27
+ });
28
+
29
+ module.exports = Camera;
@@ -0,0 +1,33 @@
1
+ // create the Courtesy Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/courtesy.json");
4
+ const Kohost = require("./Kohost");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ class Courtesy extends Kohost {
10
+ constructor(data) {
11
+ super(data);
12
+ }
13
+ }
14
+
15
+ Object.defineProperty(Courtesy.prototype, "schema", {
16
+ value: schema,
17
+ });
18
+
19
+ Object.defineProperty(Courtesy.prototype, "validator", {
20
+ get: function () {
21
+ return validator;
22
+ },
23
+ });
24
+
25
+ Object.defineProperty(Courtesy, "validProperties", {
26
+ value: Object.keys(schema.properties),
27
+ });
28
+
29
+ Object.defineProperty(Courtesy, "actionProperties", {
30
+ value: ["state"],
31
+ });
32
+
33
+ module.exports = Courtesy;
@@ -0,0 +1,29 @@
1
+ // create the Credential Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/credential.json");
4
+ const Kohost = require("./Kohost");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ class Credential extends Kohost {
10
+ constructor(data) {
11
+ super(data);
12
+ }
13
+ }
14
+
15
+ Object.defineProperty(Credential.prototype, "schema", {
16
+ value: schema,
17
+ });
18
+
19
+ Object.defineProperty(Credential.prototype, "validator", {
20
+ get: function () {
21
+ return validator;
22
+ },
23
+ });
24
+
25
+ Object.defineProperty(Credential, "validProperties", {
26
+ value: Object.keys(schema.properties),
27
+ });
28
+
29
+ module.exports = Credential;
@@ -0,0 +1,61 @@
1
+ // Create the Dimmer Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/dimmer.json");
4
+ const Kohost = require("./Kohost");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ /**
10
+ * Represents a Dimmer device.
11
+ * @class
12
+ * @extends Kohost
13
+ */
14
+
15
+ class Dimmer extends Kohost {
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,30 @@
1
+ // Create the Discovered Device Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/discoveredDevice.json");
4
+
5
+ const Kohost = require("./Kohost");
6
+
7
+ schemas.add(schema);
8
+ const validator = schemas.compile(schema);
9
+
10
+ class DiscoveredDevice extends Kohost {
11
+ constructor(data) {
12
+ super(data);
13
+ }
14
+ }
15
+
16
+ Object.defineProperty(DiscoveredDevice.prototype, "schema", {
17
+ value: schema,
18
+ });
19
+
20
+ Object.defineProperty(DiscoveredDevice.prototype, "validator", {
21
+ get: function () {
22
+ return validator;
23
+ },
24
+ });
25
+
26
+ Object.defineProperty(DiscoveredDevice, "validProperties", {
27
+ value: Object.keys(schema.properties),
28
+ });
29
+
30
+ module.exports = DiscoveredDevice;
@@ -0,0 +1,29 @@
1
+ // Create the SMS Message Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/emailMessage.json");
4
+ const Kohost = require("./Kohost");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ class EmailMessage extends Kohost {
10
+ constructor(data) {
11
+ super(data);
12
+ }
13
+ }
14
+
15
+ Object.defineProperty(EmailMessage.prototype, "schema", {
16
+ value: schema,
17
+ });
18
+
19
+ Object.defineProperty(EmailMessage.prototype, "validator", {
20
+ get: function () {
21
+ return validator;
22
+ },
23
+ });
24
+
25
+ Object.defineProperty(EmailMessage, "validProperties", {
26
+ value: Object.keys(schema.properties),
27
+ });
28
+
29
+ module.exports = EmailMessage;
@@ -0,0 +1,29 @@
1
+ // create the energyReportDaily Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/energyReport.json");
4
+ const Kohost = require("./Kohost");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ class EnergyReport extends Kohost {
10
+ constructor(data) {
11
+ super(data);
12
+ }
13
+ }
14
+
15
+ Object.defineProperty(EnergyReport.prototype, "schema", {
16
+ value: schema,
17
+ });
18
+
19
+ Object.defineProperty(EnergyReport.prototype, "validator", {
20
+ get: function () {
21
+ return validator;
22
+ },
23
+ });
24
+
25
+ Object.defineProperty(EnergyReport, "validProperties", {
26
+ value: Object.keys(schema.properties),
27
+ });
28
+
29
+ module.exports = EnergyReport;
@@ -0,0 +1,29 @@
1
+ // create the energyReportShard Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/energyReportShard.json");
4
+ const Kohost = require("./Kohost");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ class EnergyReportShard extends Kohost {
10
+ constructor(data) {
11
+ super(data);
12
+ }
13
+ }
14
+
15
+ Object.defineProperty(EnergyReportShard.prototype, "schema", {
16
+ value: schema,
17
+ });
18
+
19
+ Object.defineProperty(EnergyReportShard.prototype, "validator", {
20
+ get: function () {
21
+ return validator;
22
+ },
23
+ });
24
+
25
+ Object.defineProperty(EnergyReportShard, "validProperties", {
26
+ value: Object.keys(schema.properties),
27
+ });
28
+
29
+ module.exports = EnergyReportShard;
@@ -0,0 +1,29 @@
1
+ // Create the Gateway Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/gateway.json");
4
+ const Kohost = require("./Kohost");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ class Gateway extends Kohost {
10
+ constructor(data) {
11
+ super(data);
12
+ }
13
+ }
14
+
15
+ Object.defineProperty(Gateway.prototype, "schema", {
16
+ value: schema,
17
+ });
18
+
19
+ Object.defineProperty(Gateway.prototype, "validator", {
20
+ get: function () {
21
+ return validator;
22
+ },
23
+ });
24
+
25
+ Object.defineProperty(Gateway, "validProperties", {
26
+ value: Object.keys(schema.properties),
27
+ });
28
+
29
+ module.exports = Gateway;
@@ -0,0 +1,32 @@
1
+ const schemas = require("../utils/schema");
2
+ const schema = require("../schemas/identification.json");
3
+ const Kohost = require("./Kohost");
4
+
5
+ schemas.add(schema);
6
+ const validator = schemas.compile(schema);
7
+
8
+ class Identification extends Kohost {
9
+ constructor(data) {
10
+ super(data);
11
+ }
12
+
13
+ get isExpired() {
14
+ return new Date(this.expirationDate) < new Date();
15
+ }
16
+ }
17
+
18
+ Object.defineProperty(Identification.prototype, "schema", {
19
+ value: schema,
20
+ });
21
+
22
+ Object.defineProperty(Identification.prototype, "validator", {
23
+ get: function () {
24
+ return validator;
25
+ },
26
+ });
27
+
28
+ Object.defineProperty(Identification, "validProperties", {
29
+ value: Object.keys(schema.properties),
30
+ });
31
+
32
+ module.exports = Identification;
@@ -0,0 +1,96 @@
1
+ const { ValidationError } = require("../Errors");
2
+ const { customAlphabet: generate } = require("nanoid");
3
+
4
+ class Kohost {
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 = Kohost;