@kohost/api-client 3.0.0-beta.54 → 3.0.0-beta.56

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/camera.json +1 -1
  51. package/dist/cjs/schemas/courtesy.json +3 -0
  52. package/dist/cjs/schemas/dimmer.json +3 -0
  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 +418 -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);
@@ -8391,6 +8418,9 @@ var require_switch = __commonJS({
8391
8418
  driver: {
8392
8419
  $ref: "definitions.json#/definitions/driver"
8393
8420
  },
8421
+ offline: {
8422
+ type: "boolean"
8423
+ },
8394
8424
  state: {
8395
8425
  type: "string",
8396
8426
  enum: ["on", "off"]
@@ -8464,6 +8494,9 @@ var require_alarm = __commonJS({
8464
8494
  name: {
8465
8495
  type: "string"
8466
8496
  },
8497
+ offline: {
8498
+ type: "boolean"
8499
+ },
8467
8500
  type: {
8468
8501
  $ref: "definitions.json#/definitions/type"
8469
8502
  },
@@ -8491,11 +8524,11 @@ var require_alarm = __commonJS({
8491
8524
  type: "string"
8492
8525
  },
8493
8526
  securityMode: {
8494
- type: "string",
8495
- enum: ["arming", "disarming", "armed", "disarmed", "alarm"]
8527
+ type: ["string", "null"],
8528
+ enum: ["arming", "disarming", "armed", "disarmed", "alarm", null]
8496
8529
  },
8497
8530
  readyToArm: {
8498
- type: "boolean"
8531
+ type: ["boolean", "null"]
8499
8532
  }
8500
8533
  },
8501
8534
  additionalProperties: false
@@ -8517,27 +8550,12 @@ var require_alarm = __commonJS({
8517
8550
  type: "boolean"
8518
8551
  },
8519
8552
  bypassed: {
8520
- type: "boolean"
8553
+ type: ["boolean", "null"]
8521
8554
  }
8522
8555
  },
8523
8556
  additionalProperties: false
8524
8557
  }
8525
8558
  },
8526
- supportedTroubles: {
8527
- type: "array",
8528
- uniqueItems: true,
8529
- items: {
8530
- type: "string",
8531
- enum: ["battery", "ac", "phone", "bell", "fire"]
8532
- }
8533
- },
8534
- troubles: {
8535
- type: "array",
8536
- uniqueItems: true,
8537
- items: {
8538
- $ref: "#/properties/supportedTroubles/items"
8539
- }
8540
- },
8541
8559
  watts: {
8542
8560
  $ref: "definitions.json#/definitions/watts"
8543
8561
  }
@@ -8549,8 +8567,6 @@ var require_alarm = __commonJS({
8549
8567
  "systemData",
8550
8568
  "areas",
8551
8569
  "zones",
8552
- "supportedTroubles",
8553
- "troubles",
8554
8570
  "driver"
8555
8571
  ]
8556
8572
  };
@@ -8625,6 +8641,9 @@ var require_dimmer = __commonJS({
8625
8641
  driver: {
8626
8642
  $ref: "definitions.json#/definitions/driver"
8627
8643
  },
8644
+ offline: {
8645
+ type: "boolean"
8646
+ },
8628
8647
  level: {
8629
8648
  type: "number",
8630
8649
  minimum: 0,
@@ -9048,9 +9067,6 @@ var require_windowCovering = __commonJS({
9048
9067
  type: {
9049
9068
  $ref: "definitions.json#/definitions/type"
9050
9069
  },
9051
- subType: {
9052
- $ref: "definitions.json#/definitions/subType"
9053
- },
9054
9070
  supportedNotifications: {
9055
9071
  $ref: "definitions.json#/definitions/supportedNotifications"
9056
9072
  },
@@ -9060,6 +9076,9 @@ var require_windowCovering = __commonJS({
9060
9076
  driver: {
9061
9077
  $ref: "definitions.json#/definitions/driver"
9062
9078
  },
9079
+ offline: {
9080
+ type: "boolean"
9081
+ },
9063
9082
  position: {
9064
9083
  type: "number",
9065
9084
  minimum: 0,
@@ -9222,7 +9241,7 @@ var require_Identification = __commonJS({
9222
9241
  super(identification);
9223
9242
  }
9224
9243
  get isExpired() {
9225
- return new Date(this.expirationDate) < /* @__PURE__ */ new Date();
9244
+ return new Date(this.expires) < /* @__PURE__ */ new Date();
9226
9245
  }
9227
9246
  };
9228
9247
  Object.defineProperty(Identification.prototype, "schema", {
@@ -9507,6 +9526,7 @@ var require_User = __commonJS({
9507
9526
  var Kohost = require_Kohost();
9508
9527
  var MediaFile = require_MediaFile();
9509
9528
  var Reservation = require_Reservation();
9529
+ var Identification = require_Identification();
9510
9530
  var { nanoid: nanoid3 } = (init_index_browser2(), __toCommonJS(index_browser_exports2));
9511
9531
  schemas.add(paymentSchema);
9512
9532
  schemas.add(schema);
@@ -9526,6 +9546,10 @@ var require_User = __commonJS({
9526
9546
  user.photo = new MediaFile(user.photo);
9527
9547
  if (user.reservations)
9528
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
+ );
9529
9553
  super(user);
9530
9554
  }
9531
9555
  static validatePhone(phoneNumber) {
@@ -9567,6 +9591,31 @@ var require_User = __commonJS({
9567
9591
  return Array.from(roles);
9568
9592
  }
9569
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
+ });
9570
9619
  module.exports = User;
9571
9620
  }
9572
9621
  });
@@ -9750,6 +9799,9 @@ var require_courtesy = __commonJS({
9750
9799
  driver: {
9751
9800
  $ref: "definitions.json#/definitions/driver"
9752
9801
  },
9802
+ offline: {
9803
+ type: "boolean"
9804
+ },
9753
9805
  supportedStates: {
9754
9806
  type: "array",
9755
9807
  uniqueItems: true,
@@ -9865,7 +9917,7 @@ var require_camera = __commonJS({
9865
9917
  }
9866
9918
  },
9867
9919
  additionalProperties: false,
9868
- required: ["id", "type", "systemData", "streams", "driver"]
9920
+ required: ["id", "type", "systemData", "liveStreams", "driver"]
9869
9921
  };
9870
9922
  }
9871
9923
  });
@@ -10013,6 +10065,9 @@ var require_mediaSource = __commonJS({
10013
10065
  driver: {
10014
10066
  $ref: "definitions.json#/definitions/driver"
10015
10067
  },
10068
+ offline: {
10069
+ type: "boolean"
10070
+ },
10016
10071
  audio: {
10017
10072
  type: "boolean"
10018
10073
  },
@@ -11141,72 +11196,12 @@ var require_scene = __commonJS({
11141
11196
  }
11142
11197
  });
11143
11198
 
11144
- // src/Commands/Command.js
11145
- var require_Command = __commonJS({
11146
- "src/Commands/Command.js"(exports, module) {
11147
- var Command = class {
11148
- static {
11149
- __name(this, "Command");
11150
- }
11151
- constructor(data) {
11152
- this.data = {};
11153
- if (!data)
11154
- throw new Error("Command data is required");
11155
- if (typeof data !== "object")
11156
- throw new Error("Command data must be an object");
11157
- for (const key in data) {
11158
- this.data[key] = data[key];
11159
- }
11160
- }
11161
- get name() {
11162
- throw new Error("Command name is required");
11163
- }
11164
- get type() {
11165
- return "Command";
11166
- }
11167
- get routingKey() {
11168
- return "";
11169
- }
11170
- get exchange() {
11171
- return "Commands";
11172
- }
11173
- build() {
11174
- return { data: { ...this.data } };
11175
- }
11176
- };
11177
- module.exports = Command;
11178
- }
11179
- });
11180
-
11181
- // src/Commands/SetSceneCommand.js
11182
- var require_SetSceneCommand = __commonJS({
11183
- "src/Commands/SetSceneCommand.js"(exports, module) {
11184
- var Command = require_Command();
11185
- var SetSceneCommand = class extends Command {
11186
- static {
11187
- __name(this, "SetSceneCommand");
11188
- }
11189
- constructor({ id, devices, ...rest }) {
11190
- super({ id, devices, ...rest });
11191
- }
11192
- get name() {
11193
- return "SetScene";
11194
- }
11195
- get routingKey() {
11196
- return `scene.${this.data.id}.set`;
11197
- }
11198
- };
11199
- module.exports = SetSceneCommand;
11200
- }
11201
- });
11202
-
11203
11199
  // src/Models/Scene.js
11204
11200
  var require_Scene = __commonJS({
11205
11201
  "src/Models/Scene.js"(exports, module) {
11206
11202
  var schemas = require_schema();
11207
11203
  var schema = require_scene();
11208
11204
  var Kohost = require_Kohost();
11209
- var SetSceneCommand = require_SetSceneCommand();
11210
11205
  schemas.add(schema);
11211
11206
  var validator = schemas.compile(schema);
11212
11207
  var Scene = class extends Kohost {
@@ -11222,8 +11217,8 @@ var require_Scene = __commonJS({
11222
11217
  constructor(scene) {
11223
11218
  super(scene);
11224
11219
  }
11225
- static createSceneCommandPayload(room, scene, restore) {
11226
- const commandsByDriver = [];
11220
+ static getRoomSceneDeviceData(room, scene, restore) {
11221
+ const deviceData = [];
11227
11222
  const sceneDevices = scene?.devices || {};
11228
11223
  const sceneId = scene.id;
11229
11224
  for (const deviceType in sceneDevices) {
@@ -11235,9 +11230,12 @@ var require_Scene = __commonJS({
11235
11230
  const { id, ...deviceProps } = data;
11236
11231
  if (id === "*") {
11237
11232
  for (const device of roomDevices) {
11238
- const driver = device.driver;
11239
11233
  const deviceCmd = {
11240
- id: device.systemData?.id
11234
+ id: device.id,
11235
+ systemId: device.systemData?.id,
11236
+ type: device.type,
11237
+ driver: device.driver,
11238
+ commandData: {}
11241
11239
  };
11242
11240
  for (const prop in deviceProps) {
11243
11241
  if (prop === "setpointDelta") {
@@ -11257,7 +11255,7 @@ var require_Scene = __commonJS({
11257
11255
  currentSetpoint.value + delta
11258
11256
  );
11259
11257
  }
11260
- deviceCmd.setpoints = {
11258
+ deviceCmd.commandData.setpoints = {
11261
11259
  heat: {
11262
11260
  value: setpointValue
11263
11261
  }
@@ -11274,7 +11272,7 @@ var require_Scene = __commonJS({
11274
11272
  currentSetpoint.value - delta
11275
11273
  );
11276
11274
  }
11277
- deviceCmd.setpoints = {
11275
+ deviceCmd.commandData.setpoints = {
11278
11276
  cool: {
11279
11277
  value: setpointValue
11280
11278
  }
@@ -11303,7 +11301,7 @@ var require_Scene = __commonJS({
11303
11301
  if (Math.abs(heatSetpoint - coolSetpoint) < minAutoDelta) {
11304
11302
  continue;
11305
11303
  }
11306
- deviceCmd.setpoints = {
11304
+ deviceCmd.commandData.setpoints = {
11307
11305
  heat: {
11308
11306
  value: heatSetpoint
11309
11307
  },
@@ -11317,38 +11315,18 @@ var require_Scene = __commonJS({
11317
11315
  continue;
11318
11316
  }
11319
11317
  } else {
11320
- deviceCmd[prop] = deviceProps[prop];
11318
+ deviceCmd.commandData[prop] = deviceProps[prop];
11321
11319
  }
11322
11320
  }
11323
- if (Object.keys(deviceCmd).length === 1) {
11321
+ if (Object.keys(deviceCmd.commandData).length === 0) {
11324
11322
  continue;
11325
11323
  }
11326
- const driverIndex = commandsByDriver.findIndex(
11327
- (c) => c.driver === driver
11328
- );
11329
- if (driverIndex >= 0) {
11330
- commandsByDriver[driverIndex].command.devices.push(deviceCmd);
11331
- } else {
11332
- commandsByDriver.push({
11333
- driver,
11334
- command: {
11335
- id: sceneId,
11336
- devices: [deviceCmd]
11337
- }
11338
- });
11339
- }
11324
+ deviceData.push(deviceCmd);
11340
11325
  }
11341
11326
  }
11342
11327
  }
11343
11328
  }
11344
- const commands = commandsByDriver.map((c) => {
11345
- const command = new SetSceneCommand(c.command);
11346
- return {
11347
- driver: c.driver,
11348
- command
11349
- };
11350
- });
11351
- return commands;
11329
+ return deviceData;
11352
11330
  }
11353
11331
  };
11354
11332
  Object.defineProperty(Scene.prototype, "schema", {
@@ -11602,7 +11580,11 @@ var require_space = __commonJS({
11602
11580
  "office",
11603
11581
  "building",
11604
11582
  "commonArea",
11605
- "other"
11583
+ "conferenceRoom",
11584
+ "lobby",
11585
+ "gym",
11586
+ "pool",
11587
+ "restaurant"
11606
11588
  ]
11607
11589
  },
11608
11590
  driver: {
@@ -11820,6 +11802,12 @@ var require_spaceType = __commonJS({
11820
11802
  image: {
11821
11803
  $ref: "mediaFile.json"
11822
11804
  },
11805
+ rating: {
11806
+ type: "number",
11807
+ minimum: 0,
11808
+ maximum: 10,
11809
+ default: 9
11810
+ },
11823
11811
  systemData: {
11824
11812
  $ref: "definitions.json#/definitions/systemData"
11825
11813
  }
@@ -14294,6 +14282,241 @@ var require_Product = __commonJS({
14294
14282
  }
14295
14283
  });
14296
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
+
14297
14520
  // src/schemas/discoveredDevice.json
14298
14521
  var require_discoveredDevice = __commonJS({
14299
14522
  "src/schemas/discoveredDevice.json"(exports, module) {
@@ -14980,6 +15203,78 @@ var require_EmailMessage = __commonJS({
14980
15203
  }
14981
15204
  });
14982
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
+
14983
15278
  // src/schemas/property.json
14984
15279
  var require_property = __commonJS({
14985
15280
  "src/schemas/property.json"(exports, module) {
@@ -15432,6 +15727,7 @@ var require_Models = __commonJS({
15432
15727
  var Scene = require_Scene();
15433
15728
  var Gateway = require_Gateway();
15434
15729
  var Product = require_Product();
15730
+ var Order = require_Order();
15435
15731
  var DiscoveredDevice = require_DiscoveredDevice();
15436
15732
  var Credential = require_Credential();
15437
15733
  var ShortLink = require_ShortLink();
@@ -15439,6 +15735,7 @@ var require_Models = __commonJS({
15439
15735
  var EnergyReport = require_EnergyReport();
15440
15736
  var SMSMessage = require_SmsMessage();
15441
15737
  var EmailMessage = require_EmailMessage();
15738
+ var Notification = require_Notification();
15442
15739
  var Property = require_Property();
15443
15740
  var Organization = require_Organization();
15444
15741
  module.exports = {
@@ -15472,7 +15769,9 @@ var require_Models = __commonJS({
15472
15769
  EnergyReportShard,
15473
15770
  EnergyReport,
15474
15771
  SMSMessage,
15475
- EmailMessage
15772
+ EmailMessage,
15773
+ Order,
15774
+ Notification
15476
15775
  };
15477
15776
  }
15478
15777
  });