@kohost/api-client 3.0.0-beta.8 → 3.0.0-beta.81
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.
- package/README.md +71 -0
- package/dist/cjs/AMQPClient/index.js +296 -0
- package/dist/cjs/{Client.js → Client/index.js} +1535 -586
- package/dist/cjs/Commands/CheckInReservationCommand.js +19 -0
- package/dist/cjs/Commands/Command.js +34 -0
- package/dist/cjs/Commands/CreateImageUploadEndpointCommand.js +17 -0
- package/dist/cjs/Commands/CreateShortLinkCommand.js +20 -0
- package/dist/cjs/Commands/DiscoverCategoriesCommand.js +20 -0
- package/dist/cjs/Commands/DiscoverReservationSpaceCategoryAvailabilitiesCommand.js +20 -0
- package/dist/cjs/Commands/DiscoverReservationsCommand.js +20 -0
- package/dist/cjs/Commands/DiscoverRoomsCommand.js +37 -0
- package/dist/cjs/Commands/DiscoverUsersCommand.js +19 -0
- package/dist/cjs/Commands/GetMobileKeyCommand.js +24 -0
- package/dist/cjs/Commands/GetProductsCommand.js +17 -0
- package/dist/cjs/Commands/OCRDocumentCommand.js +15 -0
- package/dist/cjs/Commands/SellProductsCommand.js +17 -0
- package/dist/cjs/Commands/SendEmailCommand.js +24 -0
- package/dist/cjs/Commands/SendSMSCommand.js +21 -0
- package/dist/cjs/Commands/SetAlarmCommand.js +17 -0
- package/dist/cjs/Commands/SetCourtesyCommand.js +17 -0
- package/dist/cjs/Commands/SetDimmerCommand.js +17 -0
- package/dist/cjs/Commands/SetLockCommand.js +17 -0
- package/dist/cjs/Commands/SetMediaCommand.js +17 -0
- package/dist/cjs/Commands/SetSceneCommand.js +17 -0
- package/dist/cjs/Commands/SetSwitchCommand.js +17 -0
- package/dist/cjs/Commands/SetThermostatCommand.js +17 -0
- package/dist/cjs/Commands/SetWindowCoveringCommand.js +17 -0
- package/dist/cjs/Commands/UpdateReservationCommand.js +19 -0
- package/dist/cjs/Commands/UpdateUserCommand.js +41 -0
- package/dist/cjs/Commands/UploadImageCommand.js +17 -0
- package/dist/cjs/Commands/index.js +55 -0
- package/dist/cjs/Errors/AppError.js +8 -0
- package/dist/cjs/Errors/AuthenticationError.js +9 -0
- package/dist/cjs/Errors/AuthorizationError.js +9 -0
- package/dist/cjs/Errors/ConflictError.js +9 -0
- package/dist/cjs/Errors/DeviceCommError.js +9 -0
- package/dist/cjs/Errors/LoginError.js +9 -0
- package/dist/cjs/Errors/NotFoundError.js +9 -0
- package/dist/cjs/Errors/RequestError.js +9 -0
- package/dist/cjs/Errors/SystemCommError.js +9 -0
- package/dist/cjs/Errors/TokenExpiredError.js +9 -0
- package/dist/cjs/Errors/UnprocessableRequestError.js +9 -0
- package/dist/cjs/Errors/ValidationError.js +9 -0
- package/dist/cjs/Errors/index.js +16 -0
- package/dist/cjs/Events/ApplicationInUseEvent.js +21 -0
- package/dist/cjs/Events/ApplicationOutOfUseEvent.js +21 -0
- package/dist/cjs/Events/EmailEvent.js +18 -0
- package/dist/cjs/Events/Event.js +55 -0
- package/dist/cjs/Events/SMSEvent.js +18 -0
- package/dist/cjs/Events/SMSSentEvent.js +17 -0
- package/dist/cjs/Events/SceneSetEvent.js +17 -0
- package/dist/cjs/Events/ShortLinkCreatedEvent.js +17 -0
- package/dist/cjs/Events/SystemAlarmUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemCameraUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemCategoryUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemCourtesyUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemCredentialUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemDimmerUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemEntityDeletedEvent.js +17 -0
- package/dist/cjs/Events/SystemGatewayUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemLockUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemMediaSourceUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemMotionSensorUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemOrganizationUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemProductUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemPropertyUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemReservationUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemSceneControllerUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemSpaceUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemSwitchUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemThermostatUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemUserUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemWindowCoveringUpdatedEvent.js +17 -0
- package/dist/cjs/Events/index.js +65 -0
- package/dist/cjs/Models/Alarm.js +35 -0
- package/dist/cjs/Models/Camera.js +35 -0
- package/dist/cjs/Models/Category.js +36 -0
- package/dist/cjs/Models/Courtesy.js +39 -0
- package/dist/cjs/Models/Credential.js +35 -0
- package/dist/cjs/Models/Dimmer.js +61 -0
- package/dist/cjs/Models/DiscoveredDevice.js +36 -0
- package/dist/cjs/Models/EmailMessage.js +35 -0
- package/dist/cjs/Models/EnergyReport.js +35 -0
- package/dist/cjs/Models/EnergyReportShard.js +35 -0
- package/dist/cjs/Models/Gateway.js +35 -0
- package/dist/cjs/Models/Identification.js +38 -0
- package/dist/cjs/Models/Kohost.js +96 -0
- package/dist/cjs/Models/Lock.js +39 -0
- package/dist/cjs/Models/MediaFile.js +48 -0
- package/dist/cjs/Models/MediaSource.js +35 -0
- package/dist/cjs/Models/MotionSensor.js +35 -0
- package/dist/cjs/Models/Notification.js +34 -0
- package/dist/cjs/Models/Order.js +97 -0
- package/dist/cjs/Models/Organization.js +34 -0
- package/dist/cjs/Models/Product.js +35 -0
- package/dist/cjs/Models/Property.js +34 -0
- package/dist/cjs/Models/Reservation.js +114 -0
- package/dist/cjs/Models/Room.js +218 -0
- package/dist/cjs/Models/Scene.js +169 -0
- package/dist/cjs/Models/ShortLink.js +35 -0
- package/dist/cjs/Models/SmsMessage.js +35 -0
- package/dist/cjs/Models/Space.js +97 -0
- package/dist/cjs/Models/Switch.js +39 -0
- package/dist/cjs/Models/SystemUser.js +55 -0
- package/dist/cjs/Models/Thermostat.js +86 -0
- package/dist/cjs/Models/Ticket.js +112 -0
- package/dist/cjs/Models/User.js +115 -0
- package/dist/cjs/Models/WindowCovering.js +55 -0
- package/dist/cjs/Models/index.js +72 -0
- package/dist/cjs/SocketIoClient/index.js +74 -0
- package/dist/cjs/defs/deviceTypes.js +15 -0
- package/dist/cjs/defs/formalDeviceTypes.js +6 -0
- package/dist/cjs/defs/index.js +11 -0
- package/dist/cjs/{index.cjs.js → index.js} +7 -1
- package/dist/cjs/schemas/AlarmSchema.d.ts +152 -0
- package/dist/cjs/schemas/CameraSchema.d.ts +143 -0
- package/dist/cjs/schemas/CategorySchema.d.ts +82 -0
- package/dist/cjs/schemas/CourtesySchema.d.ts +142 -0
- package/dist/cjs/schemas/CredentialSchema.d.ts +52 -0
- package/dist/cjs/schemas/DefinitionsSchema.d.ts +10 -0
- package/dist/cjs/schemas/DimmerSchema.d.ts +142 -0
- package/dist/cjs/schemas/DiscoveredDeviceSchema.d.ts +39 -0
- package/dist/cjs/schemas/EmailMessageSchema.d.ts +49 -0
- package/dist/cjs/schemas/EnergyReportSchema.d.ts +57 -0
- package/dist/cjs/schemas/EnergyReportShardSchema.d.ts +61 -0
- package/dist/cjs/schemas/GatewaySchema.d.ts +139 -0
- package/dist/cjs/schemas/IdentificationSchema.d.ts +45 -0
- package/dist/cjs/schemas/LockSchema.d.ts +142 -0
- package/dist/cjs/schemas/MediaFileSchema.d.ts +43 -0
- package/dist/cjs/schemas/MediaSourceSchema.d.ts +238 -0
- package/dist/cjs/schemas/MotionSensorSchema.d.ts +137 -0
- package/dist/cjs/schemas/NotificationSchema.d.ts +54 -0
- package/dist/cjs/schemas/OrderSchema.d.ts +91 -0
- package/dist/cjs/schemas/OrganizationSchema.d.ts +34 -0
- package/dist/cjs/schemas/PaymentSchema.d.ts +33 -0
- package/dist/cjs/schemas/ProductSchema.d.ts +66 -0
- package/dist/cjs/schemas/PropertySchema.d.ts +144 -0
- package/dist/cjs/schemas/ReservationSchema.d.ts +118 -0
- package/dist/cjs/schemas/RoomSchema.d.ts +1076 -0
- package/dist/cjs/schemas/SceneSchema.d.ts +57 -0
- package/dist/cjs/schemas/ShortLinkSchema.d.ts +20 -0
- package/dist/cjs/schemas/SmsMessageSchema.d.ts +40 -0
- package/dist/cjs/schemas/SpaceSchema.d.ts +69 -0
- package/dist/cjs/schemas/SwitchSchema.d.ts +142 -0
- package/dist/cjs/schemas/SystemUserSchema.d.ts +193 -0
- package/dist/cjs/schemas/ThermostatSchema.d.ts +172 -0
- package/dist/cjs/schemas/TicketSchema.d.ts +88 -0
- package/dist/cjs/schemas/UserSchema.d.ts +286 -0
- package/dist/cjs/schemas/WindowCoveringSchema.d.ts +141 -0
- package/dist/cjs/schemas/alarm.json +81 -0
- package/dist/cjs/schemas/camera.json +50 -0
- package/dist/cjs/schemas/category.json +42 -0
- package/dist/cjs/schemas/courtesy.json +48 -0
- package/dist/cjs/schemas/credential.json +44 -0
- package/dist/cjs/schemas/definitions.json +218 -0
- package/dist/cjs/schemas/dimmer.json +45 -0
- package/dist/cjs/schemas/discoveredDevice.json +31 -0
- package/dist/cjs/schemas/emailMessage.json +71 -0
- package/dist/cjs/schemas/energyReport.json +86 -0
- package/dist/cjs/schemas/energyReportShard.json +75 -0
- package/dist/cjs/schemas/gateway.json +34 -0
- package/dist/cjs/schemas/identification.json +61 -0
- package/dist/cjs/schemas/lock.json +44 -0
- package/dist/cjs/schemas/mediaFile.json +70 -0
- package/dist/cjs/schemas/mediaSource.json +187 -0
- package/dist/cjs/schemas/motionSensor.json +32 -0
- package/dist/cjs/schemas/notification.json +29 -0
- package/dist/cjs/schemas/order.json +182 -0
- package/dist/cjs/schemas/organization.json +40 -0
- package/dist/cjs/schemas/payment.json +47 -0
- package/dist/cjs/schemas/product.json +41 -0
- package/dist/cjs/schemas/property.json +347 -0
- package/dist/cjs/schemas/reservation.json +137 -0
- package/dist/cjs/schemas/room.json +98 -0
- package/dist/cjs/schemas/scene.json +121 -0
- package/dist/cjs/schemas/shortLink.json +30 -0
- package/dist/cjs/schemas/smsMessage.json +61 -0
- package/dist/cjs/schemas/space.json +129 -0
- package/dist/cjs/schemas/switch.json +44 -0
- package/dist/cjs/schemas/systemUser.json +98 -0
- package/dist/cjs/schemas/thermostat.json +150 -0
- package/dist/cjs/schemas/ticket.json +141 -0
- package/dist/cjs/schemas/user.json +170 -0
- package/dist/cjs/schemas/windowCovering.json +42 -0
- package/dist/cjs/utils/errorFactory.js +8 -0
- package/dist/cjs/utils/eventFactory.js +10 -0
- package/dist/cjs/utils/getDeviceTypes.js +7 -0
- package/dist/cjs/utils/getFormalDeviceType.js +5 -0
- package/dist/cjs/utils/index.js +11 -0
- package/dist/cjs/utils/schema.js +25 -0
- package/dist/esm/Client.js +1632 -627
- package/dist/esm/Client.js.map +4 -4
- package/dist/esm/Commands.js +493 -116
- package/dist/esm/Commands.js.map +3 -3
- package/dist/esm/Errors.js +73 -22
- package/dist/esm/Errors.js.map +3 -3
- package/dist/esm/Events.js +414 -73
- package/dist/esm/Events.js.map +3 -3
- package/dist/esm/Models.js +3418 -1271
- package/dist/esm/Models.js.map +4 -4
- package/dist/esm/SocketIoClient.js +4846 -0
- package/dist/esm/SocketIoClient.js.map +7 -0
- package/dist/esm/defs.js +146 -101
- package/dist/esm/defs.js.map +4 -4
- package/dist/esm/index.js +17 -10
- package/dist/esm/utils.js +446 -73
- package/dist/esm/utils.js.map +3 -3
- package/dist/useCases/AdminUpdateCustomer.js +1 -1
- package/dist/useCases/AssignSpaceToReservation.js +32 -0
- package/dist/useCases/{AdminCreateProperty.js → BatchNotifyCheckIn.js} +2 -2
- package/dist/useCases/{AdminCreateCustomer.js → CreateCateory.js} +2 -2
- package/dist/useCases/CreateImageUploadEndpoint.js +32 -0
- package/dist/useCases/{DeleteIntegration.js → CreateMediaSource.js} +4 -4
- package/dist/useCases/{AdminListCustomers.js → CreateOrganization.js} +3 -3
- package/dist/useCases/{AdminLoginUser.js → CreateProperty.js} +2 -2
- package/dist/useCases/DeleteCategory.js +32 -0
- package/dist/useCases/DeleteMediaFile.js +32 -0
- package/dist/useCases/DeleteMediaSource.js +32 -0
- package/dist/useCases/{ListIntegrations.js → DescribeCategory.js} +3 -3
- package/dist/useCases/{DeleteSource.js → DescribeLockCredential.js} +3 -3
- package/dist/useCases/{AdminListAdminUsers.js → DescribeMediaSource.js} +3 -3
- package/dist/useCases/DescribeMyAccessCredentials.js +32 -0
- package/dist/useCases/{AdminCreateAdminUser.js → DescribeOrganization.js} +4 -4
- package/dist/useCases/{DescribeIntegration.js → DescribeProduct.js} +2 -2
- package/dist/useCases/{AdminDescribeCustomer.js → DescribeProperty.js} +2 -2
- package/dist/useCases/DescribeReservationEarlyCheckInProducts.js +32 -0
- package/dist/useCases/DescribeReservationLateCheckOutProducts.js +32 -0
- package/dist/useCases/{AdminDescribeProperty.js → DescribeReservationRoomUpgrades.js} +2 -2
- package/dist/useCases/ListCategories.js +32 -0
- package/dist/useCases/ListMediaSources.js +32 -0
- package/dist/useCases/{CreateSource.js → ListMyOrders.js} +4 -4
- package/dist/useCases/{AdminListProperties.js → ListMyTickets.js} +2 -2
- package/dist/useCases/ListOrders.js +32 -0
- package/dist/useCases/{AdminRefreshToken.js → ListOrganizations.js} +3 -3
- package/dist/useCases/ListProperties.js +32 -0
- package/dist/useCases/ListScenes.js +32 -0
- package/dist/useCases/ListTeam.js +32 -0
- package/dist/useCases/ListUserOrders.js +32 -0
- package/dist/useCases/ListUserSpaces.js +32 -0
- package/dist/useCases/LogoutUser.js +32 -0
- package/dist/useCases/PurchaseReservationEarlyCheckInProducts.js +32 -0
- package/dist/useCases/PurchaseReservationLateCheckOutProducts.js +32 -0
- package/dist/useCases/{CreateIntegrationDeviceMapEntry.js → PurchaseReservationRoomUpgrades.js} +2 -2
- package/dist/useCases/RequestLoginLink.js +1 -1
- package/dist/useCases/{CreateIntegration.js → RequestMyKeyToken.js} +2 -2
- package/dist/useCases/RequestPWAToken.js +32 -0
- package/dist/useCases/SendCheckInSMS.js +32 -0
- package/dist/useCases/{SetSource.js → SetDimmer.js} +2 -2
- package/dist/useCases/{DescribeSource.js → SetMediaSource.js} +3 -3
- package/dist/useCases/{UpdateSource.js → SetRoomScene.js} +3 -3
- package/dist/useCases/SetSpaceScene.js +32 -0
- package/dist/useCases/TipUser.js +32 -0
- package/dist/useCases/{AdminUpdateProperty.js → UpdateCategory.js} +2 -2
- package/dist/useCases/{UpdateIntegration.js → UpdateMediaSource.js} +3 -3
- package/dist/useCases/UpdateProperty.js +32 -0
- package/dist/useCases/UpdateReservationExpectedArrivalTime.js +32 -0
- package/dist/useCases/{ListSources.js → UploadImage.js} +4 -4
- package/package.json +38 -10
- package/dist/cjs/Commands.js +0 -616
- package/dist/cjs/Errors.js +0 -176
- package/dist/cjs/Events.js +0 -387
- package/dist/cjs/Models.js +0 -3612
- package/dist/cjs/defs.js +0 -178
- package/dist/cjs/utils.js +0 -250
- package/dist/useCases/AdminRequestLoginLink.js +0 -32
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
const schemas = require("../utils/schema");
|
|
2
|
+
const schema = require("../schemas/mediaFile.json");
|
|
3
|
+
const Kohost = require("./Kohost");
|
|
4
|
+
const { RequestError } = require("../Errors");
|
|
5
|
+
|
|
6
|
+
schemas.add(schema);
|
|
7
|
+
const validator = schemas.compile(schema);
|
|
8
|
+
|
|
9
|
+
class MediaFile extends Kohost {
|
|
10
|
+
/**
|
|
11
|
+
* @typedef {import("../schemas/MediaFileSchema").MediaFile} MediaFileType
|
|
12
|
+
* Create a MediaFile instance.
|
|
13
|
+
* @constructor
|
|
14
|
+
* @param {MediaFileType} mediaFile - The mediaFile object of type MediaFile.
|
|
15
|
+
*/
|
|
16
|
+
constructor(mediaFile) {
|
|
17
|
+
super(mediaFile);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
createImageVariant(params) {
|
|
21
|
+
if (this.mimeType != "image/*")
|
|
22
|
+
throw new RequestError("Only dynamic images can have variants");
|
|
23
|
+
if (!this.url) throw new RequestError("MediaFile has no url");
|
|
24
|
+
// convert params to "key=value" pairs
|
|
25
|
+
const query = Object.keys(params)
|
|
26
|
+
.map((key) => `${key}=${params[key]}`)
|
|
27
|
+
.join(",");
|
|
28
|
+
|
|
29
|
+
// replace the final /public with the query above
|
|
30
|
+
return this.url.replace(/\/public$/, `/${query}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
Object.defineProperty(MediaFile.prototype, "schema", {
|
|
35
|
+
value: schema,
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
Object.defineProperty(MediaFile.prototype, "validator", {
|
|
39
|
+
get: function () {
|
|
40
|
+
return validator;
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
Object.defineProperty(MediaFile, "validProperties", {
|
|
45
|
+
value: Object.keys(schema.properties),
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
module.exports = MediaFile;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// create the Media Source Model
|
|
2
|
+
const schemas = require("../utils/schema");
|
|
3
|
+
const schema = require("../schemas/mediaSource.json");
|
|
4
|
+
const Kohost = require("./Kohost");
|
|
5
|
+
|
|
6
|
+
schemas.add(schema);
|
|
7
|
+
const validator = schemas.compile(schema);
|
|
8
|
+
|
|
9
|
+
class MediaSource extends Kohost {
|
|
10
|
+
/**
|
|
11
|
+
* @typedef {import("../schemas/MediaSourceSchema").MediaSource} MediaSourceType
|
|
12
|
+
* Create a MediaSource instance.
|
|
13
|
+
* @constructor
|
|
14
|
+
* @param {MediaSourceType} mediaSource - The mediaSource object of type MediaSource.
|
|
15
|
+
*/
|
|
16
|
+
constructor(mediaSource) {
|
|
17
|
+
super(mediaSource);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
Object.defineProperty(MediaSource.prototype, "schema", {
|
|
22
|
+
value: schema,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
Object.defineProperty(MediaSource.prototype, "validator", {
|
|
26
|
+
get: function () {
|
|
27
|
+
return validator;
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
Object.defineProperty(MediaSource, "validProperties", {
|
|
32
|
+
value: Object.keys(schema.properties),
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
module.exports = MediaSource;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// create the Motion Sensor Model
|
|
2
|
+
const schemas = require("../utils/schema");
|
|
3
|
+
const schema = require("../schemas/motionSensor.json");
|
|
4
|
+
const Kohost = require("./Kohost");
|
|
5
|
+
|
|
6
|
+
schemas.add(schema);
|
|
7
|
+
const validator = schemas.compile(schema);
|
|
8
|
+
|
|
9
|
+
class MotionSensor extends Kohost {
|
|
10
|
+
/**
|
|
11
|
+
* @typedef {import("../schemas/MotionSensorSchema").MotionSensor} MotionSensorType
|
|
12
|
+
* Create a MotionSensor instance.
|
|
13
|
+
* @constructor
|
|
14
|
+
* @param {MotionSensorType} motionSensor - The motionSensor object of type MotionSensor.
|
|
15
|
+
*/
|
|
16
|
+
constructor(motionSensor) {
|
|
17
|
+
super(motionSensor);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
Object.defineProperty(MotionSensor.prototype, "schema", {
|
|
22
|
+
value: schema,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
Object.defineProperty(MotionSensor.prototype, "validator", {
|
|
26
|
+
get: function () {
|
|
27
|
+
return validator;
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
Object.defineProperty(MotionSensor, "validProperties", {
|
|
32
|
+
value: Object.keys(schema.properties),
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
module.exports = MotionSensor;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
const schemas = require("../utils/schema");
|
|
2
|
+
const schema = require("../schemas/notification.json");
|
|
3
|
+
const Kohost = require("./Kohost");
|
|
4
|
+
|
|
5
|
+
schemas.add(schema);
|
|
6
|
+
const validator = schemas.compile(schema);
|
|
7
|
+
|
|
8
|
+
class Notification extends Kohost {
|
|
9
|
+
/**
|
|
10
|
+
* @typedef {import("../schemas/NotificationSchema").Notification} NotificationType
|
|
11
|
+
* Create a Notification instance.
|
|
12
|
+
* @constructor
|
|
13
|
+
* @param {NotificationType} property - The property object of type Notification.
|
|
14
|
+
*/
|
|
15
|
+
constructor(notification) {
|
|
16
|
+
super(notification);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Object.defineProperty(Notification.prototype, "schema", {
|
|
21
|
+
value: schema,
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
Object.defineProperty(Notification.prototype, "validator", {
|
|
25
|
+
get: function () {
|
|
26
|
+
return validator;
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
Object.defineProperty(Notification, "validProperties", {
|
|
31
|
+
value: Object.keys(schema.properties),
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
module.exports = Notification;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
const schemas = require("../utils/schema");
|
|
2
|
+
const schema = require("../schemas/order.json");
|
|
3
|
+
const Kohost = require("./Kohost");
|
|
4
|
+
|
|
5
|
+
schemas.add(schema);
|
|
6
|
+
const validator = schemas.compile(schema);
|
|
7
|
+
|
|
8
|
+
class Order extends Kohost {
|
|
9
|
+
/**
|
|
10
|
+
* @typedef {import("../schemas/OrderSchema").Order} OrderType
|
|
11
|
+
* Create a Order instance.
|
|
12
|
+
* @constructor
|
|
13
|
+
* @param {OrderType} order - The order object of type Order.
|
|
14
|
+
*/
|
|
15
|
+
constructor(order) {
|
|
16
|
+
super(order);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
getSubTotal() {
|
|
20
|
+
return this.items.reduce((acc, item) => {
|
|
21
|
+
const qty = item.quantity || 1;
|
|
22
|
+
return acc + item.price * qty;
|
|
23
|
+
}, 0);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
getTaxTotal() {
|
|
27
|
+
const taxes = this.taxes;
|
|
28
|
+
if (!taxes) return 0;
|
|
29
|
+
return this.items.reduce((acc, item) => {
|
|
30
|
+
if (!item.taxClass) return acc;
|
|
31
|
+
const tax = taxes.find((t) => t.class === item.taxClass);
|
|
32
|
+
if (!tax) return acc;
|
|
33
|
+
const { rateType, rate } = tax;
|
|
34
|
+
if (rateType === "percentage") {
|
|
35
|
+
return acc + item.price * rate;
|
|
36
|
+
}
|
|
37
|
+
return acc + rate;
|
|
38
|
+
}, 0);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
getDeliveryTotal() {
|
|
42
|
+
const delivery = this.delivery;
|
|
43
|
+
if (!delivery) return 0;
|
|
44
|
+
return this.items.reduce((acc, item) => {
|
|
45
|
+
if (!item.deliveryClass) return acc;
|
|
46
|
+
const d = delivery.find((d) => d.class === item.deliveryClass);
|
|
47
|
+
if (!d) return acc;
|
|
48
|
+
const { rateType, rate } = d;
|
|
49
|
+
if (rateType === "percentage") {
|
|
50
|
+
return acc + item.price * rate;
|
|
51
|
+
}
|
|
52
|
+
return acc + rate;
|
|
53
|
+
}, 0);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
getFeesTotal() {
|
|
57
|
+
const fees = this.fees;
|
|
58
|
+
return fees.reduce((acc, fee) => {
|
|
59
|
+
return acc + fee.price;
|
|
60
|
+
}, 0);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
getTotal() {
|
|
64
|
+
return (
|
|
65
|
+
this.getSubTotal() +
|
|
66
|
+
this.getTaxTotal() +
|
|
67
|
+
this.getDeliveryTotal() +
|
|
68
|
+
this.getFeesTotal()
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
getPaymentsTotal() {
|
|
73
|
+
return this.payments.reduce((acc, payment) => {
|
|
74
|
+
return acc + payment.amount;
|
|
75
|
+
}, 0);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
getBalance() {
|
|
79
|
+
return this.getTotal() - this.getPaymentsTotal();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
Object.defineProperty(Order.prototype, "schema", {
|
|
84
|
+
value: schema,
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
Object.defineProperty(Order.prototype, "validator", {
|
|
88
|
+
get: function () {
|
|
89
|
+
return validator;
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
Object.defineProperty(Order, "validProperties", {
|
|
94
|
+
value: Object.keys(schema.properties),
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
module.exports = Order;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
const schemas = require("../utils/schema");
|
|
2
|
+
const schema = require("../schemas/organization.json");
|
|
3
|
+
const Kohost = require("./Kohost");
|
|
4
|
+
|
|
5
|
+
schemas.add(schema);
|
|
6
|
+
const validator = schemas.compile(schema);
|
|
7
|
+
|
|
8
|
+
class Organization extends Kohost {
|
|
9
|
+
/**
|
|
10
|
+
* @typedef {import("../schemas/OrganizationSchema").Organization} OrganizationType
|
|
11
|
+
* Create a Organization instance.
|
|
12
|
+
* @constructor
|
|
13
|
+
* @param {OrganizationType} organization - The organization object of type Organization.
|
|
14
|
+
*/
|
|
15
|
+
constructor(organization) {
|
|
16
|
+
super(organization);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Object.defineProperty(Organization.prototype, "schema", {
|
|
21
|
+
value: schema,
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
Object.defineProperty(Organization.prototype, "validator", {
|
|
25
|
+
get: function () {
|
|
26
|
+
return validator;
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
Object.defineProperty(Organization, "validProperties", {
|
|
31
|
+
value: Object.keys(schema.properties),
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
module.exports = Organization;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// Create the Product Model
|
|
2
|
+
const schemas = require("../utils/schema");
|
|
3
|
+
const schema = require("../schemas/product.json");
|
|
4
|
+
const Kohost = require("./Kohost");
|
|
5
|
+
|
|
6
|
+
schemas.add(schema);
|
|
7
|
+
const validator = schemas.compile(schema);
|
|
8
|
+
|
|
9
|
+
class Product extends Kohost {
|
|
10
|
+
/**
|
|
11
|
+
* @typedef {import("../schemas/ProductSchema").Product} ProductType
|
|
12
|
+
* Create a Product instance.
|
|
13
|
+
* @constructor
|
|
14
|
+
* @param {ProductType} product - The product object of type Product.
|
|
15
|
+
*/
|
|
16
|
+
constructor(product) {
|
|
17
|
+
super(product);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
Object.defineProperty(Product.prototype, "schema", {
|
|
22
|
+
value: schema,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
Object.defineProperty(Product.prototype, "validator", {
|
|
26
|
+
get: function () {
|
|
27
|
+
return validator;
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
Object.defineProperty(Product, "validProperties", {
|
|
32
|
+
value: Object.keys(schema.properties),
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
module.exports = Product;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
const schemas = require("../utils/schema");
|
|
2
|
+
const schema = require("../schemas/property.json");
|
|
3
|
+
const Kohost = require("./Kohost");
|
|
4
|
+
|
|
5
|
+
schemas.add(schema);
|
|
6
|
+
const validator = schemas.compile(schema);
|
|
7
|
+
|
|
8
|
+
class Property extends Kohost {
|
|
9
|
+
/**
|
|
10
|
+
* @typedef {import("../schemas/PropertySchema").Property} PropertyType
|
|
11
|
+
* Create a Property instance.
|
|
12
|
+
* @constructor
|
|
13
|
+
* @param {PropertyType} property - The property object of type Property.
|
|
14
|
+
*/
|
|
15
|
+
constructor(property) {
|
|
16
|
+
super(property);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Object.defineProperty(Property.prototype, "schema", {
|
|
21
|
+
value: schema,
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
Object.defineProperty(Property.prototype, "validator", {
|
|
25
|
+
get: function () {
|
|
26
|
+
return validator;
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
Object.defineProperty(Property, "validProperties", {
|
|
31
|
+
value: Object.keys(schema.properties),
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
module.exports = Property;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
const schemas = require("../utils/schema");
|
|
2
|
+
const schema = require("../schemas/reservation.json");
|
|
3
|
+
const Kohost = require("./Kohost");
|
|
4
|
+
|
|
5
|
+
schemas.add(schema);
|
|
6
|
+
const validator = schemas.compile(schema);
|
|
7
|
+
|
|
8
|
+
class Reservation extends Kohost {
|
|
9
|
+
/**
|
|
10
|
+
* @typedef {import("../schemas/ReservationSchema").Reservation} ReservationType
|
|
11
|
+
* Create a Reservation instance.
|
|
12
|
+
* @constructor
|
|
13
|
+
* @param {ReservationType} reservation - The reservation object of type Reservation.
|
|
14
|
+
*/
|
|
15
|
+
constructor(reservation) {
|
|
16
|
+
super(reservation);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
get peopleCount() {
|
|
20
|
+
return this.adultCount + this.childCount;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
get hasPayment() {
|
|
24
|
+
return this.paymentId?.length > 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
get nights() {
|
|
28
|
+
const start = new Date(this.checkInDateTime);
|
|
29
|
+
const end = new Date(this.checkOutDateTime);
|
|
30
|
+
let nights = Math.round((end - start) / (1000 * 60 * 60 * 24));
|
|
31
|
+
if (nights <= 0) {
|
|
32
|
+
nights = 1;
|
|
33
|
+
}
|
|
34
|
+
return nights;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
range(tz) {
|
|
38
|
+
const start = new Date(this.checkInDateTime);
|
|
39
|
+
const end = new Date(this.checkOutDateTime);
|
|
40
|
+
|
|
41
|
+
// output Dec 19 if same day in timezone
|
|
42
|
+
|
|
43
|
+
if (
|
|
44
|
+
start.getDate() === end.getDate() &&
|
|
45
|
+
start.getMonth() === end.getMonth() &&
|
|
46
|
+
start.getFullYear() === end.getFullYear()
|
|
47
|
+
) {
|
|
48
|
+
return `${start.toLocaleString("default", {
|
|
49
|
+
month: "short",
|
|
50
|
+
timeZone: tz,
|
|
51
|
+
})} ${start.toLocaleString("default", {
|
|
52
|
+
timeZone: tz,
|
|
53
|
+
day: "numeric",
|
|
54
|
+
})}`;
|
|
55
|
+
}
|
|
56
|
+
// output Dec 19-23 if same month and year
|
|
57
|
+
if (
|
|
58
|
+
start.getMonth() === end.getMonth() &&
|
|
59
|
+
start.getFullYear() === end.getFullYear()
|
|
60
|
+
) {
|
|
61
|
+
return `${start.toLocaleString("default", {
|
|
62
|
+
month: "short",
|
|
63
|
+
timeZone: tz,
|
|
64
|
+
})} ${start.toLocaleString("default", {
|
|
65
|
+
timeZone: tz,
|
|
66
|
+
day: "numeric",
|
|
67
|
+
})}-${end.toLocaleString("default", {
|
|
68
|
+
timeZone: tz,
|
|
69
|
+
day: "numeric",
|
|
70
|
+
})}`;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// output Dec 19 - Jan 2 if different month and year
|
|
74
|
+
return `${start.toLocaleString("default", {
|
|
75
|
+
month: "short",
|
|
76
|
+
timeZone: tz,
|
|
77
|
+
})} ${start.getDate()} - ${end.toLocaleString("default", {
|
|
78
|
+
month: "short",
|
|
79
|
+
timeZone: tz,
|
|
80
|
+
})} ${end.getDate()}`;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
checkInTime(tz) {
|
|
84
|
+
return new Date(this.checkInDateTime).toLocaleString("default", {
|
|
85
|
+
hour: "numeric",
|
|
86
|
+
minute: "numeric",
|
|
87
|
+
timeZone: tz,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
checkOutTime(tz) {
|
|
92
|
+
return new Date(this.checkOutDateTime).toLocaleString("default", {
|
|
93
|
+
hour: "numeric",
|
|
94
|
+
minute: "numeric",
|
|
95
|
+
timeZone: tz,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
Object.defineProperty(Reservation.prototype, "schema", {
|
|
101
|
+
value: schema,
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
Object.defineProperty(Reservation.prototype, "validator", {
|
|
105
|
+
get: function () {
|
|
106
|
+
return validator;
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
Object.defineProperty(Reservation, "validProperties", {
|
|
111
|
+
value: Object.keys(schema.properties),
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
module.exports = Reservation;
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
// create the Room model
|
|
2
|
+
const schemas = require("../utils/schema");
|
|
3
|
+
const schema = require("../schemas/room.json");
|
|
4
|
+
const deviceSchema = require("../schemas/definitions.json");
|
|
5
|
+
const Kohost = require("./Kohost");
|
|
6
|
+
const cloneDeep = require("lodash.clonedeep");
|
|
7
|
+
|
|
8
|
+
// device dependencies
|
|
9
|
+
const Switch = require("./Switch");
|
|
10
|
+
const Dimmer = require("./Dimmer");
|
|
11
|
+
const Thermostat = require("./Thermostat");
|
|
12
|
+
const Lock = require("./Lock");
|
|
13
|
+
const WindowCovering = require("./WindowCovering");
|
|
14
|
+
const Courtesy = require("./Courtesy");
|
|
15
|
+
const Camera = require("./Camera");
|
|
16
|
+
const Alarm = require("./Alarm");
|
|
17
|
+
const MediaSource = require("./MediaSource");
|
|
18
|
+
const MotionSensor = require("./MotionSensor");
|
|
19
|
+
|
|
20
|
+
// other dependencies
|
|
21
|
+
const Scene = require("./Scene");
|
|
22
|
+
|
|
23
|
+
schemas.add(schema);
|
|
24
|
+
const validator = schemas.compile(schema);
|
|
25
|
+
|
|
26
|
+
class Room extends Kohost {
|
|
27
|
+
/**
|
|
28
|
+
* @typedef {import("../schemas/RoomSchema").Room} RoomType
|
|
29
|
+
* Create a Room instance.
|
|
30
|
+
* @constructor
|
|
31
|
+
* @param {RoomType} room - The room object of type Room.
|
|
32
|
+
*/
|
|
33
|
+
constructor(room) {
|
|
34
|
+
const roomData = mapRoomData(room);
|
|
35
|
+
super(roomData);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
static getDevicePath(type) {
|
|
39
|
+
const validTypes = deviceSchema.definitions.type.enum;
|
|
40
|
+
if (!validTypes.includes(type))
|
|
41
|
+
throw new Error("Invalid device type:" + type);
|
|
42
|
+
switch (type) {
|
|
43
|
+
case "tv":
|
|
44
|
+
case "dvr":
|
|
45
|
+
case "appleTv":
|
|
46
|
+
case "discPlayer":
|
|
47
|
+
case "mediaPlayer":
|
|
48
|
+
case "uncontrolledDevice":
|
|
49
|
+
case "mediaSource":
|
|
50
|
+
return "mediaSources";
|
|
51
|
+
case "courtesy":
|
|
52
|
+
return type;
|
|
53
|
+
case "switch":
|
|
54
|
+
return "switches";
|
|
55
|
+
default:
|
|
56
|
+
return `${type}s`;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
static getDeviceTypeFromPath(path) {
|
|
61
|
+
const validPaths = [
|
|
62
|
+
"dimmers",
|
|
63
|
+
"switches",
|
|
64
|
+
"thermostats",
|
|
65
|
+
"locks",
|
|
66
|
+
"windowCoverings",
|
|
67
|
+
"courtesy",
|
|
68
|
+
"cameras",
|
|
69
|
+
"mediaSources",
|
|
70
|
+
"motionSensors",
|
|
71
|
+
"alarms",
|
|
72
|
+
];
|
|
73
|
+
if (!validPaths.includes(path))
|
|
74
|
+
throw new Error("Invalid device path:" + path);
|
|
75
|
+
switch (path) {
|
|
76
|
+
case "courtesy":
|
|
77
|
+
return path;
|
|
78
|
+
case "switches":
|
|
79
|
+
return "switch";
|
|
80
|
+
default:
|
|
81
|
+
return path.slice(0, -1);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
get hasDimmer() {
|
|
86
|
+
return this.dimmers?.length > 0;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
get hasSwitch() {
|
|
90
|
+
return this.switches?.length > 0;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
get hasWindowCovering() {
|
|
94
|
+
return this.windowCoverings?.length > 0;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
get hasShade() {
|
|
98
|
+
return this.hasWindowCovering;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
get hasThermostat() {
|
|
102
|
+
return this.thermostats?.length > 0;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
get hasClimate() {
|
|
106
|
+
return this.hasThermostat;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
get hasLock() {
|
|
110
|
+
return this.locks?.length > 0;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
get hasCourtesy() {
|
|
114
|
+
return this.courtesy?.length > 0;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
get hasCamera() {
|
|
118
|
+
return this.cameras?.length > 0;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
get hasAlarm() {
|
|
122
|
+
return this.alarms?.length > 0;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
get hasMedia() {
|
|
126
|
+
return this.mediaSources?.length > 0;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
get hasLight() {
|
|
130
|
+
const hasSubTypeLight = this.switches?.some((sw) => {
|
|
131
|
+
return sw.subType === "light" || sw.subType === "fan";
|
|
132
|
+
});
|
|
133
|
+
return this.hasDimmer || hasSubTypeLight;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
get occupied() {
|
|
137
|
+
const now = new Date();
|
|
138
|
+
const lastOccupied = new Date(this.occupiedAt);
|
|
139
|
+
const diff = now - lastOccupied;
|
|
140
|
+
// check if the room has been occupied in the last 60 minutes
|
|
141
|
+
return diff < 60 * 60 * 1000;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
Object.defineProperty(Room.prototype, "schema", {
|
|
146
|
+
value: schema,
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
Object.defineProperty(Room.prototype, "validator", {
|
|
150
|
+
get: function () {
|
|
151
|
+
return validator;
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
Object.defineProperty(Room, "validProperties", {
|
|
156
|
+
value: Object.keys(schema.properties),
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
function mapRoomData(data) {
|
|
160
|
+
const roomData = cloneDeep(data);
|
|
161
|
+
roomData.dimmers?.map((dimmer) => {
|
|
162
|
+
if (dimmer instanceof Dimmer) return dimmer;
|
|
163
|
+
else return new Dimmer(dimmer);
|
|
164
|
+
});
|
|
165
|
+
roomData.switches?.map((switch_) => {
|
|
166
|
+
if (switch_ instanceof Switch) return switch_;
|
|
167
|
+
else return new Switch(switch_);
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
roomData.windowCoverings?.map((windowCovering) => {
|
|
171
|
+
if (windowCovering instanceof WindowCovering) return windowCovering;
|
|
172
|
+
else return new WindowCovering(windowCovering);
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
roomData.thermostats?.map((thermostat) => {
|
|
176
|
+
if (thermostat instanceof Thermostat) return thermostat;
|
|
177
|
+
else return new Thermostat(thermostat);
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
roomData.locks?.map((lock) => {
|
|
181
|
+
if (lock instanceof Lock) return lock;
|
|
182
|
+
else return new Lock(lock);
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
roomData.courtesy?.map((courtesy) => {
|
|
186
|
+
if (courtesy instanceof Courtesy) return courtesy;
|
|
187
|
+
else return new Courtesy(courtesy);
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
roomData.mediaSources?.map((source) => {
|
|
191
|
+
if (source instanceof MediaSource) return source;
|
|
192
|
+
else return new MediaSource(source);
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
roomData.cameras?.map((camera) => {
|
|
196
|
+
if (camera instanceof Camera) return camera;
|
|
197
|
+
else return new Camera(camera);
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
roomData.alarms?.map((alarm) => {
|
|
201
|
+
if (alarm instanceof Alarm) return alarm;
|
|
202
|
+
else return new Alarm(alarm);
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
roomData.motionSensors?.map((motionSensor) => {
|
|
206
|
+
if (motionSensor instanceof MotionSensor) return motionSensor;
|
|
207
|
+
else return new MotionSensor(motionSensor);
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
roomData.scenes?.map((scene) => {
|
|
211
|
+
if (scene instanceof Scene) return scene;
|
|
212
|
+
else return new Scene(scene);
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
return roomData;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
module.exports = Room;
|