@kohost/api-client 3.0.0-beta.9 → 3.0.0-beta.90
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} +1907 -598
- package/dist/cjs/Commands/CheckInReservationCommand.js +19 -0
- package/dist/cjs/Commands/CheckOutReservationCommand.js +20 -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 +57 -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/Announcement.js +34 -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/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 +217 -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 +55 -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 +158 -0
- package/dist/cjs/schemas/AnnouncementSchema.d.ts +59 -0
- package/dist/cjs/schemas/CameraSchema.d.ts +149 -0
- package/dist/cjs/schemas/CategorySchema.d.ts +82 -0
- package/dist/cjs/schemas/CourtesySchema.d.ts +148 -0
- package/dist/cjs/schemas/CredentialSchema.d.ts +53 -0
- package/dist/cjs/schemas/DefinitionsSchema.d.ts +10 -0
- package/dist/cjs/schemas/DimmerSchema.d.ts +147 -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 +145 -0
- package/dist/cjs/schemas/IdentificationSchema.d.ts +45 -0
- package/dist/cjs/schemas/LockSchema.d.ts +152 -0
- package/dist/cjs/schemas/MediaFileSchema.d.ts +43 -0
- package/dist/cjs/schemas/MediaSourceSchema.d.ts +244 -0
- package/dist/cjs/schemas/MotionSensorSchema.d.ts +143 -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 +119 -0
- package/dist/cjs/schemas/RoomSchema.d.ts +1103 -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 +73 -0
- package/dist/cjs/schemas/SwitchSchema.d.ts +148 -0
- package/dist/cjs/schemas/SystemUserSchema.d.ts +194 -0
- package/dist/cjs/schemas/ThermostatSchema.d.ts +178 -0
- package/dist/cjs/schemas/TicketSchema.d.ts +89 -0
- package/dist/cjs/schemas/UserSchema.d.ts +287 -0
- package/dist/cjs/schemas/WindowCoveringSchema.d.ts +147 -0
- package/dist/cjs/schemas/alarm.json +81 -0
- package/dist/cjs/schemas/announcement.json +36 -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 +223 -0
- package/dist/cjs/schemas/dimmer.json +42 -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 +50 -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/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 +176 -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 +2013 -637
- package/dist/esm/Client.js.map +4 -4
- package/dist/esm/Commands.js +499 -120
- 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 +3297 -3915
- 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 +168 -112
- package/dist/esm/defs.js.map +4 -4
- package/dist/esm/index.js +17 -10
- package/dist/esm/utils.js +451 -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 → BatchNotifyCheckOut.js} +2 -2
- package/dist/useCases/BatchNotifyMissedCheckOut.js +32 -0
- package/dist/useCases/{AdminUpdateProperty.js → CheckOutReservation.js} +3 -3
- package/dist/useCases/{AdminListCustomers.js → CreateAnnouncement.js} +3 -3
- package/dist/useCases/CreateCateory.js +32 -0
- package/dist/useCases/CreateImageUploadEndpoint.js +32 -0
- package/dist/useCases/CreateMediaSource.js +32 -0
- package/dist/useCases/CreateOrganization.js +32 -0
- package/dist/useCases/{AdminLoginUser.js → CreateProperty.js} +2 -2
- package/dist/useCases/DeleteAnnouncement.js +32 -0
- package/dist/useCases/DeleteCategory.js +32 -0
- package/dist/useCases/DeleteMediaFile.js +32 -0
- package/dist/useCases/DeleteMediaSource.js +32 -0
- package/dist/useCases/{AdminCreateAdminUser.js → DescribeAnnouncement.js} +4 -4
- 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/{AdminDescribeCustomer.js → DescribeOrganization.js} +2 -2
- package/dist/useCases/{DescribeIntegration.js → DescribeProduct.js} +2 -2
- package/dist/useCases/DescribeProperty.js +32 -0
- 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/{AdminRefreshToken.js → ListAnnouncements.js} +3 -3
- 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/{DeleteIntegration.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/SendCheckOutSMS.js +32 -0
- package/dist/useCases/SendRoomControlSMS.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/UpdateAnnouncement.js +32 -0
- package/dist/useCases/UpdateCategory.js +32 -0
- 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 +37 -14
- package/dist/cjs/Commands.js +0 -643
- 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
- package/dist/useCases/DescribeReservationCheckinStatus.js +0 -32
|
@@ -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;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Create the Lock Model
|
|
2
|
+
const schemas = require("../utils/schema");
|
|
3
|
+
const schema = require("../schemas/lock.json");
|
|
4
|
+
const Kohost = require("./Kohost");
|
|
5
|
+
|
|
6
|
+
schemas.add(schema);
|
|
7
|
+
const validator = schemas.compile(schema);
|
|
8
|
+
|
|
9
|
+
class Lock extends Kohost {
|
|
10
|
+
/**
|
|
11
|
+
* @typedef {import("../schemas/LockSchema").Lock} LockType
|
|
12
|
+
* Create a Lock instance.
|
|
13
|
+
* @constructor
|
|
14
|
+
* @param {LockType} lock - The lock object of type Lock.
|
|
15
|
+
*/
|
|
16
|
+
constructor(lock) {
|
|
17
|
+
super(lock);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
Object.defineProperty(Lock.prototype, "schema", {
|
|
22
|
+
value: schema,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
Object.defineProperty(Lock.prototype, "validator", {
|
|
26
|
+
get: function () {
|
|
27
|
+
return validator;
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
Object.defineProperty(Lock, "validProperties", {
|
|
32
|
+
value: Object.keys(schema.properties),
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
Object.defineProperty(Lock, "actionProperties", {
|
|
36
|
+
value: ["state"],
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
module.exports = Lock;
|
|
@@ -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,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;
|