@kohost/api-client 3.0.0-beta.53 → 3.0.0-beta.55

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 (73) hide show
  1. package/dist/cjs/AMQPClient/index.js +1 -0
  2. package/dist/cjs/Client/index.js +40 -0
  3. package/dist/cjs/Errors/ConflictError.js +9 -0
  4. package/dist/cjs/Errors/index.js +1 -0
  5. package/dist/cjs/Events/SceneSetEvent.js +17 -0
  6. package/dist/cjs/Events/index.js +3 -0
  7. package/dist/cjs/Models/Identification.js +1 -1
  8. package/dist/cjs/Models/Notification.js +34 -0
  9. package/dist/cjs/Models/Order.js +48 -0
  10. package/dist/cjs/Models/Reservation.js +10 -0
  11. package/dist/cjs/Models/Scene.js +15 -35
  12. package/dist/cjs/Models/User.js +36 -0
  13. package/dist/cjs/Models/index.js +4 -0
  14. package/dist/cjs/schemas/AlarmSchema.d.ts +150 -0
  15. package/dist/cjs/schemas/CameraSchema.d.ts +142 -0
  16. package/dist/cjs/schemas/CourtesySchema.d.ts +140 -0
  17. package/dist/cjs/schemas/CredentialSchema.d.ts +22 -0
  18. package/dist/cjs/schemas/DefinitionsSchema.d.ts +10 -0
  19. package/dist/cjs/schemas/DimmerSchema.d.ts +140 -0
  20. package/dist/cjs/schemas/DiscoveredDeviceSchema.d.ts +39 -0
  21. package/dist/cjs/schemas/EmailMessageSchema.d.ts +52 -0
  22. package/dist/cjs/schemas/EnergyReportSchema.d.ts +57 -0
  23. package/dist/cjs/schemas/EnergyReportShardSchema.d.ts +61 -0
  24. package/dist/cjs/schemas/GatewaySchema.d.ts +137 -0
  25. package/dist/cjs/schemas/IdentificationSchema.d.ts +48 -0
  26. package/dist/cjs/schemas/LockSchema.d.ts +140 -0
  27. package/dist/cjs/schemas/MediaFileSchema.d.ts +46 -0
  28. package/dist/cjs/schemas/MediaSourceSchema.d.ts +237 -0
  29. package/dist/cjs/schemas/MotionSensorSchema.d.ts +136 -0
  30. package/dist/cjs/schemas/NotificationSchema.d.ts +57 -0
  31. package/dist/cjs/schemas/OrderSchema.d.ts +90 -0
  32. package/dist/cjs/schemas/OrganizationSchema.d.ts +33 -0
  33. package/dist/cjs/schemas/PaymentSchema.d.ts +36 -0
  34. package/dist/cjs/schemas/ProductSchema.d.ts +65 -0
  35. package/dist/cjs/schemas/PropertySchema.d.ts +119 -0
  36. package/dist/cjs/schemas/ReservationSchema.d.ts +89 -0
  37. package/dist/cjs/schemas/RoomSchema.d.ts +1035 -0
  38. package/dist/cjs/schemas/SceneSchema.d.ts +57 -0
  39. package/dist/cjs/schemas/ShortLinkSchema.d.ts +23 -0
  40. package/dist/cjs/schemas/SmsMessageSchema.d.ts +43 -0
  41. package/dist/cjs/schemas/SpaceSchema.d.ts +64 -0
  42. package/dist/cjs/schemas/SpaceTypeSchema.d.ts +80 -0
  43. package/dist/cjs/schemas/SwitchSchema.d.ts +140 -0
  44. package/dist/cjs/schemas/SystemUserSchema.d.ts +184 -0
  45. package/dist/cjs/schemas/ThermostatSchema.d.ts +170 -0
  46. package/dist/cjs/schemas/TicketSchema.d.ts +76 -0
  47. package/dist/cjs/schemas/UserSchema.d.ts +259 -0
  48. package/dist/cjs/schemas/WindowCoveringSchema.d.ts +139 -0
  49. package/dist/cjs/schemas/alarm.json +7 -21
  50. package/dist/cjs/schemas/courtesy.json +3 -0
  51. package/dist/cjs/schemas/dimmer.json +3 -0
  52. package/dist/cjs/schemas/mediaFile.json +4 -1
  53. package/dist/cjs/schemas/mediaSource.json +3 -0
  54. package/dist/cjs/schemas/notification.json +29 -0
  55. package/dist/cjs/schemas/order.json +179 -0
  56. package/dist/cjs/schemas/space.json +5 -1
  57. package/dist/cjs/schemas/spaceType.json +6 -0
  58. package/dist/cjs/schemas/switch.json +3 -0
  59. package/dist/cjs/schemas/windowCovering.json +4 -4
  60. package/dist/esm/Client.js +40 -0
  61. package/dist/esm/Client.js.map +3 -3
  62. package/dist/esm/Commands.js +18 -0
  63. package/dist/esm/Commands.js.map +3 -3
  64. package/dist/esm/Errors.js +18 -0
  65. package/dist/esm/Errors.js.map +3 -3
  66. package/dist/esm/Events.js +24 -0
  67. package/dist/esm/Events.js.map +3 -3
  68. package/dist/esm/Models.js +421 -119
  69. package/dist/esm/Models.js.map +3 -3
  70. package/dist/esm/utils.js +18 -0
  71. package/dist/esm/utils.js.map +3 -3
  72. package/dist/useCases/RequestPWAToken.js +32 -0
  73. package/package.json +1 -1
@@ -7853,6 +7853,23 @@ var require_AuthorizationError = __commonJS({
7853
7853
  }
7854
7854
  });
7855
7855
 
7856
+ // src/Errors/ConflictError.js
7857
+ var require_ConflictError = __commonJS({
7858
+ "src/Errors/ConflictError.js"(exports, module) {
7859
+ var AppError = require_AppError();
7860
+ module.exports = class ConflictError extends AppError {
7861
+ static {
7862
+ __name(this, "ConflictError");
7863
+ }
7864
+ constructor(message = "Bad Request", options = {}) {
7865
+ super(message, options);
7866
+ this.statusCode = 409;
7867
+ Object.setPrototypeOf(this, ConflictError.prototype);
7868
+ }
7869
+ };
7870
+ }
7871
+ });
7872
+
7856
7873
  // src/Errors/DeviceCommError.js
7857
7874
  var require_DeviceCommError = __commonJS({
7858
7875
  "src/Errors/DeviceCommError.js"(exports, module) {
@@ -7996,6 +8013,7 @@ var require_Errors = __commonJS({
7996
8013
  AppError: require_AppError(),
7997
8014
  AuthenticationError: require_AuthenticationError(),
7998
8015
  AuthorizationError: require_AuthorizationError(),
8016
+ ConflictError: require_ConflictError(),
7999
8017
  DeviceCommError: require_DeviceCommError(),
8000
8018
  LoginError: require_LoginError(),
8001
8019
  NotFoundError: require_NotFoundError(),
@@ -8178,6 +8196,15 @@ var require_Reservation = __commonJS({
8178
8196
  get hasPayment() {
8179
8197
  return this.paymentId?.length > 0;
8180
8198
  }
8199
+ get nights() {
8200
+ const start = new Date(this.checkInDateTime);
8201
+ const end = new Date(this.checkOutDateTime);
8202
+ let nights = Math.round((end - start) / (1e3 * 60 * 60 * 24));
8203
+ if (nights <= 0) {
8204
+ nights = 1;
8205
+ }
8206
+ return nights;
8207
+ }
8181
8208
  range(tz) {
8182
8209
  const start = new Date(this.checkInDateTime);
8183
8210
  const end = new Date(this.checkOutDateTime);
@@ -8257,6 +8284,9 @@ var require_mediaFile = __commonJS({
8257
8284
  type: "string",
8258
8285
  default: "mediaFile"
8259
8286
  },
8287
+ name: {
8288
+ type: "string"
8289
+ },
8260
8290
  fileHash: {
8261
8291
  type: "string"
8262
8292
  },
@@ -8308,7 +8338,7 @@ var require_mediaFile = __commonJS({
8308
8338
  }
8309
8339
  },
8310
8340
  additionalProperties: false,
8311
- required: ["id", "type"]
8341
+ required: ["type"]
8312
8342
  };
8313
8343
  }
8314
8344
  });
@@ -8388,6 +8418,9 @@ var require_switch = __commonJS({
8388
8418
  driver: {
8389
8419
  $ref: "definitions.json#/definitions/driver"
8390
8420
  },
8421
+ offline: {
8422
+ type: "boolean"
8423
+ },
8391
8424
  state: {
8392
8425
  type: "string",
8393
8426
  enum: ["on", "off"]
@@ -8461,6 +8494,9 @@ var require_alarm = __commonJS({
8461
8494
  name: {
8462
8495
  type: "string"
8463
8496
  },
8497
+ offline: {
8498
+ type: "boolean"
8499
+ },
8464
8500
  type: {
8465
8501
  $ref: "definitions.json#/definitions/type"
8466
8502
  },
@@ -8488,11 +8524,11 @@ var require_alarm = __commonJS({
8488
8524
  type: "string"
8489
8525
  },
8490
8526
  securityMode: {
8491
- type: "string",
8492
- enum: ["arming", "disarming", "armed", "disarmed", "alarm"]
8527
+ type: ["string", "null"],
8528
+ enum: ["arming", "disarming", "armed", "disarmed", "alarm", null]
8493
8529
  },
8494
8530
  readyToArm: {
8495
- type: "boolean"
8531
+ type: ["boolean", "null"]
8496
8532
  }
8497
8533
  },
8498
8534
  additionalProperties: false
@@ -8514,27 +8550,12 @@ var require_alarm = __commonJS({
8514
8550
  type: "boolean"
8515
8551
  },
8516
8552
  bypassed: {
8517
- type: "boolean"
8553
+ type: ["boolean", "null"]
8518
8554
  }
8519
8555
  },
8520
8556
  additionalProperties: false
8521
8557
  }
8522
8558
  },
8523
- supportedTroubles: {
8524
- type: "array",
8525
- uniqueItems: true,
8526
- items: {
8527
- type: "string",
8528
- enum: ["battery", "ac", "phone", "bell", "fire"]
8529
- }
8530
- },
8531
- troubles: {
8532
- type: "array",
8533
- uniqueItems: true,
8534
- items: {
8535
- $ref: "#/properties/supportedTroubles/items"
8536
- }
8537
- },
8538
8559
  watts: {
8539
8560
  $ref: "definitions.json#/definitions/watts"
8540
8561
  }
@@ -8546,8 +8567,6 @@ var require_alarm = __commonJS({
8546
8567
  "systemData",
8547
8568
  "areas",
8548
8569
  "zones",
8549
- "supportedTroubles",
8550
- "troubles",
8551
8570
  "driver"
8552
8571
  ]
8553
8572
  };
@@ -8622,6 +8641,9 @@ var require_dimmer = __commonJS({
8622
8641
  driver: {
8623
8642
  $ref: "definitions.json#/definitions/driver"
8624
8643
  },
8644
+ offline: {
8645
+ type: "boolean"
8646
+ },
8625
8647
  level: {
8626
8648
  type: "number",
8627
8649
  minimum: 0,
@@ -9045,9 +9067,6 @@ var require_windowCovering = __commonJS({
9045
9067
  type: {
9046
9068
  $ref: "definitions.json#/definitions/type"
9047
9069
  },
9048
- subType: {
9049
- $ref: "definitions.json#/definitions/subType"
9050
- },
9051
9070
  supportedNotifications: {
9052
9071
  $ref: "definitions.json#/definitions/supportedNotifications"
9053
9072
  },
@@ -9057,6 +9076,9 @@ var require_windowCovering = __commonJS({
9057
9076
  driver: {
9058
9077
  $ref: "definitions.json#/definitions/driver"
9059
9078
  },
9079
+ offline: {
9080
+ type: "boolean"
9081
+ },
9060
9082
  position: {
9061
9083
  type: "number",
9062
9084
  minimum: 0,
@@ -9219,7 +9241,7 @@ var require_Identification = __commonJS({
9219
9241
  super(identification);
9220
9242
  }
9221
9243
  get isExpired() {
9222
- return new Date(this.expirationDate) < /* @__PURE__ */ new Date();
9244
+ return new Date(this.expires) < /* @__PURE__ */ new Date();
9223
9245
  }
9224
9246
  };
9225
9247
  Object.defineProperty(Identification.prototype, "schema", {
@@ -9504,6 +9526,7 @@ var require_User = __commonJS({
9504
9526
  var Kohost = require_Kohost();
9505
9527
  var MediaFile = require_MediaFile();
9506
9528
  var Reservation = require_Reservation();
9529
+ var Identification = require_Identification();
9507
9530
  var { nanoid: nanoid3 } = (init_index_browser2(), __toCommonJS(index_browser_exports2));
9508
9531
  schemas.add(paymentSchema);
9509
9532
  schemas.add(schema);
@@ -9523,6 +9546,10 @@ var require_User = __commonJS({
9523
9546
  user.photo = new MediaFile(user.photo);
9524
9547
  if (user.reservations)
9525
9548
  user.reservations = user.reservations.map((res) => new Reservation(res));
9549
+ if (user.identifications)
9550
+ user.identifications = user.identifications.map(
9551
+ (id) => new Identification(id)
9552
+ );
9526
9553
  super(user);
9527
9554
  }
9528
9555
  static validatePhone(phoneNumber) {
@@ -9564,6 +9591,31 @@ var require_User = __commonJS({
9564
9591
  return Array.from(roles);
9565
9592
  }
9566
9593
  });
9594
+ Object.defineProperty(User.prototype, "isSuperAdmin", {
9595
+ get: function() {
9596
+ return this.roles.includes("SuperAdmin");
9597
+ }
9598
+ });
9599
+ Object.defineProperty(User.prototype, "isAdmin", {
9600
+ get: function() {
9601
+ return this.roles.includes("Admin") || this.roles.includes("Administrator");
9602
+ }
9603
+ });
9604
+ Object.defineProperty(User.prototype, "isManager", {
9605
+ get: function() {
9606
+ return this.roles.includes("Manager");
9607
+ }
9608
+ });
9609
+ Object.defineProperty(User.prototype, "isUser", {
9610
+ get: function() {
9611
+ return this.roles.includes("User");
9612
+ }
9613
+ });
9614
+ Object.defineProperty(User.prototype, "isGuest", {
9615
+ get: function() {
9616
+ return this.roles.includes("Guest");
9617
+ }
9618
+ });
9567
9619
  module.exports = User;
9568
9620
  }
9569
9621
  });
@@ -9747,6 +9799,9 @@ var require_courtesy = __commonJS({
9747
9799
  driver: {
9748
9800
  $ref: "definitions.json#/definitions/driver"
9749
9801
  },
9802
+ offline: {
9803
+ type: "boolean"
9804
+ },
9750
9805
  supportedStates: {
9751
9806
  type: "array",
9752
9807
  uniqueItems: true,
@@ -10010,6 +10065,9 @@ var require_mediaSource = __commonJS({
10010
10065
  driver: {
10011
10066
  $ref: "definitions.json#/definitions/driver"
10012
10067
  },
10068
+ offline: {
10069
+ type: "boolean"
10070
+ },
10013
10071
  audio: {
10014
10072
  type: "boolean"
10015
10073
  },
@@ -11138,72 +11196,12 @@ var require_scene = __commonJS({
11138
11196
  }
11139
11197
  });
11140
11198
 
11141
- // src/Commands/Command.js
11142
- var require_Command = __commonJS({
11143
- "src/Commands/Command.js"(exports, module) {
11144
- var Command = class {
11145
- static {
11146
- __name(this, "Command");
11147
- }
11148
- constructor(data) {
11149
- this.data = {};
11150
- if (!data)
11151
- throw new Error("Command data is required");
11152
- if (typeof data !== "object")
11153
- throw new Error("Command data must be an object");
11154
- for (const key in data) {
11155
- this.data[key] = data[key];
11156
- }
11157
- }
11158
- get name() {
11159
- throw new Error("Command name is required");
11160
- }
11161
- get type() {
11162
- return "Command";
11163
- }
11164
- get routingKey() {
11165
- return "";
11166
- }
11167
- get exchange() {
11168
- return "Commands";
11169
- }
11170
- build() {
11171
- return { data: { ...this.data } };
11172
- }
11173
- };
11174
- module.exports = Command;
11175
- }
11176
- });
11177
-
11178
- // src/Commands/SetSceneCommand.js
11179
- var require_SetSceneCommand = __commonJS({
11180
- "src/Commands/SetSceneCommand.js"(exports, module) {
11181
- var Command = require_Command();
11182
- var SetSceneCommand = class extends Command {
11183
- static {
11184
- __name(this, "SetSceneCommand");
11185
- }
11186
- constructor({ id, devices, ...rest }) {
11187
- super({ id, devices, ...rest });
11188
- }
11189
- get name() {
11190
- return "SetScene";
11191
- }
11192
- get routingKey() {
11193
- return `scene.${this.data.id}.set`;
11194
- }
11195
- };
11196
- module.exports = SetSceneCommand;
11197
- }
11198
- });
11199
-
11200
11199
  // src/Models/Scene.js
11201
11200
  var require_Scene = __commonJS({
11202
11201
  "src/Models/Scene.js"(exports, module) {
11203
11202
  var schemas = require_schema();
11204
11203
  var schema = require_scene();
11205
11204
  var Kohost = require_Kohost();
11206
- var SetSceneCommand = require_SetSceneCommand();
11207
11205
  schemas.add(schema);
11208
11206
  var validator = schemas.compile(schema);
11209
11207
  var Scene = class extends Kohost {
@@ -11219,8 +11217,8 @@ var require_Scene = __commonJS({
11219
11217
  constructor(scene) {
11220
11218
  super(scene);
11221
11219
  }
11222
- static createSceneCommandPayload(room, scene, restore) {
11223
- const commandsByDriver = [];
11220
+ static getRoomSceneDeviceData(room, scene, restore) {
11221
+ const deviceData = [];
11224
11222
  const sceneDevices = scene?.devices || {};
11225
11223
  const sceneId = scene.id;
11226
11224
  for (const deviceType in sceneDevices) {
@@ -11232,9 +11230,12 @@ var require_Scene = __commonJS({
11232
11230
  const { id, ...deviceProps } = data;
11233
11231
  if (id === "*") {
11234
11232
  for (const device of roomDevices) {
11235
- const driver = device.driver;
11236
11233
  const deviceCmd = {
11237
- id: device.systemData?.id
11234
+ id: device.id,
11235
+ systemId: device.systemData?.id,
11236
+ type: device.type,
11237
+ driver: device.driver,
11238
+ commandData: {}
11238
11239
  };
11239
11240
  for (const prop in deviceProps) {
11240
11241
  if (prop === "setpointDelta") {
@@ -11254,7 +11255,7 @@ var require_Scene = __commonJS({
11254
11255
  currentSetpoint.value + delta
11255
11256
  );
11256
11257
  }
11257
- deviceCmd.setpoints = {
11258
+ deviceCmd.commandData.setpoints = {
11258
11259
  heat: {
11259
11260
  value: setpointValue
11260
11261
  }
@@ -11271,7 +11272,7 @@ var require_Scene = __commonJS({
11271
11272
  currentSetpoint.value - delta
11272
11273
  );
11273
11274
  }
11274
- deviceCmd.setpoints = {
11275
+ deviceCmd.commandData.setpoints = {
11275
11276
  cool: {
11276
11277
  value: setpointValue
11277
11278
  }
@@ -11300,7 +11301,7 @@ var require_Scene = __commonJS({
11300
11301
  if (Math.abs(heatSetpoint - coolSetpoint) < minAutoDelta) {
11301
11302
  continue;
11302
11303
  }
11303
- deviceCmd.setpoints = {
11304
+ deviceCmd.commandData.setpoints = {
11304
11305
  heat: {
11305
11306
  value: heatSetpoint
11306
11307
  },
@@ -11314,38 +11315,18 @@ var require_Scene = __commonJS({
11314
11315
  continue;
11315
11316
  }
11316
11317
  } else {
11317
- deviceCmd[prop] = deviceProps[prop];
11318
+ deviceCmd.commandData[prop] = deviceProps[prop];
11318
11319
  }
11319
11320
  }
11320
- if (Object.keys(deviceCmd).length === 1) {
11321
+ if (Object.keys(deviceCmd.commandData).length === 0) {
11321
11322
  continue;
11322
11323
  }
11323
- const driverIndex = commandsByDriver.findIndex(
11324
- (c) => c.driver === driver
11325
- );
11326
- if (driverIndex >= 0) {
11327
- commandsByDriver[driverIndex].command.devices.push(deviceCmd);
11328
- } else {
11329
- commandsByDriver.push({
11330
- driver,
11331
- command: {
11332
- id: sceneId,
11333
- devices: [deviceCmd]
11334
- }
11335
- });
11336
- }
11324
+ deviceData.push(deviceCmd);
11337
11325
  }
11338
11326
  }
11339
11327
  }
11340
11328
  }
11341
- const commands = commandsByDriver.map((c) => {
11342
- const command = new SetSceneCommand(c.command);
11343
- return {
11344
- driver: c.driver,
11345
- command
11346
- };
11347
- });
11348
- return commands;
11329
+ return deviceData;
11349
11330
  }
11350
11331
  };
11351
11332
  Object.defineProperty(Scene.prototype, "schema", {
@@ -11599,7 +11580,11 @@ var require_space = __commonJS({
11599
11580
  "office",
11600
11581
  "building",
11601
11582
  "commonArea",
11602
- "other"
11583
+ "conferenceRoom",
11584
+ "lobby",
11585
+ "gym",
11586
+ "pool",
11587
+ "restaurant"
11603
11588
  ]
11604
11589
  },
11605
11590
  driver: {
@@ -11817,6 +11802,12 @@ var require_spaceType = __commonJS({
11817
11802
  image: {
11818
11803
  $ref: "mediaFile.json"
11819
11804
  },
11805
+ rating: {
11806
+ type: "number",
11807
+ minimum: 0,
11808
+ maximum: 10,
11809
+ default: 9
11810
+ },
11820
11811
  systemData: {
11821
11812
  $ref: "definitions.json#/definitions/systemData"
11822
11813
  }
@@ -14291,6 +14282,241 @@ var require_Product = __commonJS({
14291
14282
  }
14292
14283
  });
14293
14284
 
14285
+ // src/schemas/order.json
14286
+ var require_order = __commonJS({
14287
+ "src/schemas/order.json"(exports, module) {
14288
+ module.exports = {
14289
+ $schema: "http://json-schema.org/draft-07/schema",
14290
+ $id: "order.json",
14291
+ title: "Order",
14292
+ description: "A purchase order for products or services.",
14293
+ type: "object",
14294
+ required: ["type", "status"],
14295
+ properties: {
14296
+ id: {
14297
+ $ref: "definitions.json#/definitions/id"
14298
+ },
14299
+ type: {
14300
+ type: "string",
14301
+ default: "order"
14302
+ },
14303
+ status: {
14304
+ type: "string",
14305
+ enum: [
14306
+ "draft",
14307
+ "pendingPayment",
14308
+ "processing",
14309
+ "outForDelivery",
14310
+ "completed",
14311
+ "paymentFailed",
14312
+ "cancelled",
14313
+ "refunded"
14314
+ ]
14315
+ },
14316
+ user: {
14317
+ $ref: "definitions.json#/definitions/id",
14318
+ description: "User id of purchaser"
14319
+ },
14320
+ date: {
14321
+ $ref: "definitions.json#/definitions/date"
14322
+ },
14323
+ items: {
14324
+ type: "array",
14325
+ default: [],
14326
+ items: {
14327
+ type: "object",
14328
+ required: ["name", "price"],
14329
+ properties: {
14330
+ additionalProperties: false,
14331
+ name: {
14332
+ type: "string"
14333
+ },
14334
+ sku: {
14335
+ type: "string"
14336
+ },
14337
+ quantity: {
14338
+ type: "number",
14339
+ default: 1
14340
+ },
14341
+ price: {
14342
+ type: "number"
14343
+ },
14344
+ taxClass: {
14345
+ type: "string"
14346
+ },
14347
+ deliveryClass: {
14348
+ type: "string"
14349
+ }
14350
+ }
14351
+ }
14352
+ },
14353
+ taxes: {
14354
+ type: "array",
14355
+ default: [],
14356
+ items: {
14357
+ type: "object",
14358
+ required: ["name", "rate"],
14359
+ properties: {
14360
+ additionalProperties: false,
14361
+ name: {
14362
+ type: "string"
14363
+ },
14364
+ class: {
14365
+ type: "string"
14366
+ },
14367
+ rateType: {
14368
+ type: "string",
14369
+ enum: ["percentage", "flat"],
14370
+ default: "percentage"
14371
+ },
14372
+ rate: {
14373
+ type: "number"
14374
+ },
14375
+ total: {
14376
+ type: "number"
14377
+ }
14378
+ }
14379
+ }
14380
+ },
14381
+ fees: {
14382
+ type: "array",
14383
+ default: [],
14384
+ items: {
14385
+ type: "object",
14386
+ required: ["name", "price"],
14387
+ properties: {
14388
+ additionalProperties: false,
14389
+ name: {
14390
+ type: "string"
14391
+ },
14392
+ price: {
14393
+ type: "number"
14394
+ }
14395
+ }
14396
+ }
14397
+ },
14398
+ delivery: {
14399
+ type: "array",
14400
+ default: [],
14401
+ items: {
14402
+ type: "object",
14403
+ required: ["name", "rate"],
14404
+ properties: {
14405
+ additionalProperties: false,
14406
+ name: {
14407
+ type: "string"
14408
+ },
14409
+ class: {
14410
+ type: "string"
14411
+ },
14412
+ rateType: {
14413
+ type: "string",
14414
+ enum: ["percentage", "flat"],
14415
+ default: "percentage"
14416
+ },
14417
+ rate: {
14418
+ type: "number"
14419
+ },
14420
+ total: {
14421
+ type: "number"
14422
+ }
14423
+ }
14424
+ }
14425
+ },
14426
+ payments: {
14427
+ type: "array",
14428
+ default: [],
14429
+ items: {
14430
+ type: "object",
14431
+ properties: {
14432
+ method: {
14433
+ type: "string",
14434
+ enum: [
14435
+ "folio",
14436
+ "invoice",
14437
+ "amex",
14438
+ "visa",
14439
+ "masterCard",
14440
+ "maestro",
14441
+ "discover",
14442
+ "diners",
14443
+ "jcb",
14444
+ "applePay",
14445
+ "alipay",
14446
+ "chinaUnionPay",
14447
+ "vpay"
14448
+ ]
14449
+ },
14450
+ name: {
14451
+ type: "string"
14452
+ },
14453
+ date: {
14454
+ $ref: "definitions.json#/definitions/date"
14455
+ },
14456
+ amount: {
14457
+ type: "number"
14458
+ },
14459
+ transactionReference: {
14460
+ type: "string"
14461
+ }
14462
+ }
14463
+ }
14464
+ }
14465
+ }
14466
+ };
14467
+ }
14468
+ });
14469
+
14470
+ // src/Models/Order.js
14471
+ var require_Order = __commonJS({
14472
+ "src/Models/Order.js"(exports, module) {
14473
+ var schemas = require_schema();
14474
+ var schema = require_order();
14475
+ var Kohost = require_Kohost();
14476
+ schemas.add(schema);
14477
+ var validator = schemas.compile(schema);
14478
+ var Order = class extends Kohost {
14479
+ static {
14480
+ __name(this, "Order");
14481
+ }
14482
+ /**
14483
+ * @typedef {import("../schemas/OrderSchema").Order} OrderType
14484
+ * Create a Order instance.
14485
+ * @constructor
14486
+ * @param {OrderType} order - The order object of type Order.
14487
+ */
14488
+ constructor(order) {
14489
+ super(order);
14490
+ }
14491
+ getSubTotal() {
14492
+ return this.items.reduce((acc, item) => {
14493
+ return acc + item.price;
14494
+ }, 0);
14495
+ }
14496
+ getTaxTotal() {
14497
+ }
14498
+ getTotal() {
14499
+ }
14500
+ getDeliveryTotal() {
14501
+ }
14502
+ getFeesTotal() {
14503
+ }
14504
+ };
14505
+ Object.defineProperty(Order.prototype, "schema", {
14506
+ value: schema
14507
+ });
14508
+ Object.defineProperty(Order.prototype, "validator", {
14509
+ get: function() {
14510
+ return validator;
14511
+ }
14512
+ });
14513
+ Object.defineProperty(Order, "validProperties", {
14514
+ value: Object.keys(schema.properties)
14515
+ });
14516
+ module.exports = Order;
14517
+ }
14518
+ });
14519
+
14294
14520
  // src/schemas/discoveredDevice.json
14295
14521
  var require_discoveredDevice = __commonJS({
14296
14522
  "src/schemas/discoveredDevice.json"(exports, module) {
@@ -14977,6 +15203,78 @@ var require_EmailMessage = __commonJS({
14977
15203
  }
14978
15204
  });
14979
15205
 
15206
+ // src/schemas/notification.json
15207
+ var require_notification = __commonJS({
15208
+ "src/schemas/notification.json"(exports, module) {
15209
+ module.exports = {
15210
+ $schema: "http://json-schema.org/draft-07/schema",
15211
+ $id: "notification.json",
15212
+ "title ": "Notification",
15213
+ description: "Notification sent to users",
15214
+ type: "object",
15215
+ properties: {
15216
+ id: { $ref: "definitions.json#/definitions/id" },
15217
+ title: {
15218
+ type: "string",
15219
+ maxLength: 30
15220
+ },
15221
+ body: {
15222
+ type: "string",
15223
+ maxLength: 85
15224
+ },
15225
+ image: {
15226
+ $ref: "mediaFile.json"
15227
+ },
15228
+ tag: {
15229
+ type: "string"
15230
+ },
15231
+ createdAt: {
15232
+ $ref: "definitions.json#/definitions/date"
15233
+ }
15234
+ },
15235
+ required: ["title", "body"],
15236
+ additionalProperties: false
15237
+ };
15238
+ }
15239
+ });
15240
+
15241
+ // src/Models/Notification.js
15242
+ var require_Notification = __commonJS({
15243
+ "src/Models/Notification.js"(exports, module) {
15244
+ var schemas = require_schema();
15245
+ var schema = require_notification();
15246
+ var Kohost = require_Kohost();
15247
+ schemas.add(schema);
15248
+ var validator = schemas.compile(schema);
15249
+ var Notification = class extends Kohost {
15250
+ static {
15251
+ __name(this, "Notification");
15252
+ }
15253
+ /**
15254
+ * @typedef {import("../schemas/NotificationSchema").Notification} NotificationType
15255
+ * Create a Notification instance.
15256
+ * @constructor
15257
+ * @param {NotificationType} property - The property object of type Notification.
15258
+ */
15259
+ constructor(notification) {
15260
+ super(notification);
15261
+ }
15262
+ };
15263
+ Object.defineProperty(Notification.prototype, "schema", {
15264
+ value: schema
15265
+ });
15266
+ Object.defineProperty(Notification.prototype, "validator", {
15267
+ get: function() {
15268
+ return validator;
15269
+ }
15270
+ });
15271
+ Object.defineProperty(Notification, "validProperties", {
15272
+ value: Object.keys(schema.properties)
15273
+ });
15274
+ module.exports = Notification;
15275
+ }
15276
+ });
15277
+
14980
15278
  // src/schemas/property.json
14981
15279
  var require_property = __commonJS({
14982
15280
  "src/schemas/property.json"(exports, module) {
@@ -15429,6 +15727,7 @@ var require_Models = __commonJS({
15429
15727
  var Scene = require_Scene();
15430
15728
  var Gateway = require_Gateway();
15431
15729
  var Product = require_Product();
15730
+ var Order = require_Order();
15432
15731
  var DiscoveredDevice = require_DiscoveredDevice();
15433
15732
  var Credential = require_Credential();
15434
15733
  var ShortLink = require_ShortLink();
@@ -15436,6 +15735,7 @@ var require_Models = __commonJS({
15436
15735
  var EnergyReport = require_EnergyReport();
15437
15736
  var SMSMessage = require_SmsMessage();
15438
15737
  var EmailMessage = require_EmailMessage();
15738
+ var Notification = require_Notification();
15439
15739
  var Property = require_Property();
15440
15740
  var Organization = require_Organization();
15441
15741
  module.exports = {
@@ -15469,7 +15769,9 @@ var require_Models = __commonJS({
15469
15769
  EnergyReportShard,
15470
15770
  EnergyReport,
15471
15771
  SMSMessage,
15472
- EmailMessage
15772
+ EmailMessage,
15773
+ Order,
15774
+ Notification
15473
15775
  };
15474
15776
  }
15475
15777
  });