@kohost/api-client 3.0.0-beta.5 → 3.0.0-beta.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -0
- package/dist/cjs/AMQPClient/index.js +290 -0
- package/dist/cjs/{Client.js → Client/index.js} +1938 -986
- 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/DiscoverReservationRoomTypeUpsellOptionsCommand.js +20 -0
- package/dist/cjs/Commands/DiscoverReservationsCommand.js +20 -0
- package/dist/cjs/Commands/DiscoverRoomTypesCommand.js +19 -0
- package/dist/cjs/Commands/DiscoverRoomsCommand.js +35 -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/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 +15 -0
- package/dist/cjs/Events/ApplicationInUseEvent.js +17 -0
- package/dist/cjs/Events/ApplicationOutOfUseEvent.js +17 -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/ShortLinkCreatedEvent.js +17 -0
- package/dist/cjs/Events/SystemCameraUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemCourtesyUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemDimmerUpdatedEvent.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/SystemProductUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemReservationUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemSceneControllerUpdatedEvent.js +17 -0
- package/dist/cjs/Events/SystemSpaceTypeUpdatedEvent.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 +50 -0
- package/dist/cjs/Models/Alarm.js +29 -0
- package/dist/cjs/Models/Camera.js +29 -0
- package/dist/cjs/Models/Courtesy.js +33 -0
- package/dist/cjs/Models/Credential.js +29 -0
- package/dist/cjs/Models/Dimmer.js +61 -0
- package/dist/cjs/Models/DiscoveredDevice.js +30 -0
- package/dist/cjs/Models/EmailMessage.js +29 -0
- package/dist/cjs/Models/EnergyReport.js +29 -0
- package/dist/cjs/Models/EnergyReportShard.js +29 -0
- package/dist/cjs/Models/Gateway.js +29 -0
- package/dist/cjs/Models/Identification.js +32 -0
- package/dist/cjs/Models/Kohost.js +96 -0
- package/dist/cjs/Models/Lock.js +33 -0
- package/dist/cjs/Models/MediaFile.js +41 -0
- package/dist/cjs/Models/MediaSource.js +29 -0
- package/dist/cjs/Models/MotionSensor.js +29 -0
- package/dist/cjs/Models/Organization.js +28 -0
- package/dist/cjs/Models/Product.js +29 -0
- package/dist/cjs/Models/Property.js +28 -0
- package/dist/cjs/Models/Reservation.js +98 -0
- package/dist/cjs/Models/Room.js +212 -0
- package/dist/cjs/Models/Scene.js +183 -0
- package/dist/cjs/Models/ShortLink.js +29 -0
- package/dist/cjs/Models/SmsMessage.js +29 -0
- package/dist/cjs/Models/Space.js +97 -0
- package/dist/cjs/Models/SpaceType.js +30 -0
- package/dist/cjs/Models/Switch.js +33 -0
- package/dist/cjs/Models/SystemUser.js +48 -0
- package/dist/cjs/Models/Thermostat.js +80 -0
- package/dist/cjs/Models/Ticket.js +105 -0
- package/dist/cjs/Models/User.js +73 -0
- package/dist/cjs/Models/WindowCovering.js +49 -0
- package/dist/cjs/Models/index.js +68 -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/alarm.json +103 -0
- package/dist/cjs/schemas/camera.json +50 -0
- package/dist/cjs/schemas/courtesy.json +46 -0
- package/dist/cjs/schemas/credential.json +31 -0
- package/dist/cjs/schemas/definitions.json +191 -0
- package/dist/cjs/schemas/dimmer.json +43 -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 +35 -0
- package/dist/cjs/schemas/identification.json +61 -0
- package/dist/cjs/schemas/lock.json +45 -0
- package/dist/cjs/schemas/mediaFile.json +67 -0
- package/dist/cjs/schemas/mediaSource.json +184 -0
- package/dist/cjs/schemas/motionSensor.json +32 -0
- package/dist/cjs/schemas/organization.json +36 -0
- package/dist/cjs/schemas/payment.json +47 -0
- package/dist/cjs/schemas/product.json +40 -0
- package/dist/cjs/schemas/property.json +246 -0
- package/dist/cjs/schemas/reservation.json +118 -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 +120 -0
- package/dist/cjs/schemas/spaceType.json +30 -0
- package/dist/cjs/schemas/switch.json +42 -0
- package/dist/cjs/schemas/systemUser.json +95 -0
- package/dist/cjs/schemas/thermostat.json +153 -0
- package/dist/cjs/schemas/ticket.json +96 -0
- package/dist/cjs/schemas/user.json +152 -0
- package/dist/cjs/schemas/windowCovering.json +43 -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 +2293 -1205
- package/dist/esm/Client.js.map +4 -4
- package/dist/esm/Commands.js +478 -73
- package/dist/esm/Commands.js.map +3 -3
- package/dist/esm/Errors.js +35 -0
- package/dist/esm/Errors.js.map +1 -1
- package/dist/esm/Events.js +266 -63
- package/dist/esm/Events.js.map +3 -3
- package/dist/esm/Models.js +2853 -833
- package/dist/esm/Models.js.map +4 -4
- package/dist/esm/SocketIoClient.js +4748 -0
- package/dist/esm/SocketIoClient.js.map +7 -0
- package/dist/esm/defs.js +407 -279
- package/dist/esm/defs.js.map +4 -4
- package/dist/esm/index.js +17 -10
- package/dist/esm/utils.js +742 -85
- package/dist/esm/utils.js.map +3 -3
- package/dist/useCases/{AdminUpdateProperty.js → AdminUpdateCustomer.js} +2 -2
- package/dist/useCases/AssignSpaceToReservation.js +32 -0
- package/dist/useCases/BatchNotifyCheckIn.js +32 -0
- package/dist/useCases/CreateImageUploadEndpoint.js +32 -0
- package/dist/useCases/{CreateSource.js → CreateMediaSource.js} +2 -2
- package/dist/useCases/{AdminListCustomers.js → CreateOrganization.js} +3 -3
- package/dist/useCases/{LoginGateway.js → CreateProperty.js} +2 -2
- package/dist/useCases/{AdminCreateProperty.js → CreateSpaceType.js} +2 -2
- package/dist/useCases/DeleteMediaFile.js +32 -0
- package/dist/useCases/{DeleteSource.js → DeleteMediaSource.js} +2 -2
- package/dist/useCases/DeleteSpaceType.js +32 -0
- package/dist/useCases/DescribeLockCredential.js +32 -0
- package/dist/useCases/{DescribeIntegration.js → DescribeMediaSource.js} +3 -3
- package/dist/useCases/DescribeMyAccessCredentials.js +32 -0
- package/dist/useCases/{AdminDescribeProperty.js → DescribeOrganization.js} +2 -2
- package/dist/useCases/DescribeProduct.js +32 -0
- package/dist/useCases/{ListIntegrations.js → DescribeProperty.js} +3 -3
- package/dist/useCases/DescribeReservationEarlyCheckInProducts.js +32 -0
- package/dist/useCases/DescribeReservationRoomUpgrades.js +32 -0
- package/dist/useCases/{DeleteIntegration.js → DescribeSpaceType.js} +2 -2
- package/dist/useCases/ListMediaSources.js +32 -0
- package/dist/useCases/{AdminListProperties.js → ListMyTickets.js} +2 -2
- package/dist/useCases/{UpdateIntegration.js → ListOrganizations.js} +4 -4
- package/dist/useCases/ListProperties.js +32 -0
- package/dist/useCases/ListScenes.js +32 -0
- package/dist/useCases/ListSpaceTypes.js +32 -0
- package/dist/useCases/ListTeam.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/{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/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/UpdateMediaSource.js +32 -0
- package/dist/useCases/UpdateProperty.js +32 -0
- package/dist/useCases/UpdateSpaceType.js +32 -0
- package/dist/useCases/{ListSources.js → UploadImage.js} +4 -4
- package/package.json +25 -10
- package/dist/cjs/Commands.js +0 -568
- package/dist/cjs/Errors.js +0 -174
- package/dist/cjs/Events.js +0 -375
- package/dist/cjs/Models.js +0 -3582
- package/dist/cjs/defs.js +0 -175
- package/dist/cjs/utils.js +0 -246
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// create the Courtesy Model
|
|
2
|
+
const schemas = require("../utils/schema");
|
|
3
|
+
const schema = require("../schemas/courtesy.json");
|
|
4
|
+
const Kohost = require("./Kohost");
|
|
5
|
+
|
|
6
|
+
schemas.add(schema);
|
|
7
|
+
const validator = schemas.compile(schema);
|
|
8
|
+
|
|
9
|
+
class Courtesy extends Kohost {
|
|
10
|
+
constructor(data) {
|
|
11
|
+
super(data);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
Object.defineProperty(Courtesy.prototype, "schema", {
|
|
16
|
+
value: schema,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
Object.defineProperty(Courtesy.prototype, "validator", {
|
|
20
|
+
get: function () {
|
|
21
|
+
return validator;
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
Object.defineProperty(Courtesy, "validProperties", {
|
|
26
|
+
value: Object.keys(schema.properties),
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
Object.defineProperty(Courtesy, "actionProperties", {
|
|
30
|
+
value: ["state"],
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
module.exports = Courtesy;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// create the Credential Model
|
|
2
|
+
const schemas = require("../utils/schema");
|
|
3
|
+
const schema = require("../schemas/credential.json");
|
|
4
|
+
const Kohost = require("./Kohost");
|
|
5
|
+
|
|
6
|
+
schemas.add(schema);
|
|
7
|
+
const validator = schemas.compile(schema);
|
|
8
|
+
|
|
9
|
+
class Credential extends Kohost {
|
|
10
|
+
constructor(data) {
|
|
11
|
+
super(data);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
Object.defineProperty(Credential.prototype, "schema", {
|
|
16
|
+
value: schema,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
Object.defineProperty(Credential.prototype, "validator", {
|
|
20
|
+
get: function () {
|
|
21
|
+
return validator;
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
Object.defineProperty(Credential, "validProperties", {
|
|
26
|
+
value: Object.keys(schema.properties),
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
module.exports = Credential;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// Create the Dimmer Model
|
|
2
|
+
const schemas = require("../utils/schema");
|
|
3
|
+
const schema = require("../schemas/dimmer.json");
|
|
4
|
+
const Kohost = require("./Kohost");
|
|
5
|
+
|
|
6
|
+
schemas.add(schema);
|
|
7
|
+
const validator = schemas.compile(schema);
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Represents a Dimmer device.
|
|
11
|
+
* @class
|
|
12
|
+
* @extends Kohost
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
class Dimmer extends Kohost {
|
|
16
|
+
/**
|
|
17
|
+
* @typedef {import("../schemas/DimmerSchema").Dimmer} DimmerType
|
|
18
|
+
* Create a Dimmer instance.
|
|
19
|
+
* @constructor
|
|
20
|
+
* @param {DimmerType} dimmer - The dimmer object of type Dimmer.
|
|
21
|
+
*/
|
|
22
|
+
constructor(dimmer) {
|
|
23
|
+
super(dimmer);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
static getActionDelta(old, _new) {
|
|
27
|
+
const delta = {};
|
|
28
|
+
for (const action in _new) {
|
|
29
|
+
if (this.actionProperties?.includes(action)) {
|
|
30
|
+
if (action === "level") {
|
|
31
|
+
const oldLevel = old[action];
|
|
32
|
+
const newLevel = _new[action];
|
|
33
|
+
delta[action] = newLevel - oldLevel / 100;
|
|
34
|
+
} else {
|
|
35
|
+
delta[action] = 1;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return delta;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
Object.defineProperty(Dimmer.prototype, "schema", {
|
|
44
|
+
value: schema,
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
Object.defineProperty(Dimmer.prototype, "validator", {
|
|
48
|
+
get: function () {
|
|
49
|
+
return validator;
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
Object.defineProperty(Dimmer, "validProperties", {
|
|
54
|
+
value: Object.keys(schema.properties),
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
Object.defineProperty(Dimmer, "actionProperties", {
|
|
58
|
+
value: ["level"],
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
module.exports = Dimmer;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Create the Discovered Device Model
|
|
2
|
+
const schemas = require("../utils/schema");
|
|
3
|
+
const schema = require("../schemas/discoveredDevice.json");
|
|
4
|
+
|
|
5
|
+
const Kohost = require("./Kohost");
|
|
6
|
+
|
|
7
|
+
schemas.add(schema);
|
|
8
|
+
const validator = schemas.compile(schema);
|
|
9
|
+
|
|
10
|
+
class DiscoveredDevice extends Kohost {
|
|
11
|
+
constructor(data) {
|
|
12
|
+
super(data);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
Object.defineProperty(DiscoveredDevice.prototype, "schema", {
|
|
17
|
+
value: schema,
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
Object.defineProperty(DiscoveredDevice.prototype, "validator", {
|
|
21
|
+
get: function () {
|
|
22
|
+
return validator;
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
Object.defineProperty(DiscoveredDevice, "validProperties", {
|
|
27
|
+
value: Object.keys(schema.properties),
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
module.exports = DiscoveredDevice;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Create the SMS Message Model
|
|
2
|
+
const schemas = require("../utils/schema");
|
|
3
|
+
const schema = require("../schemas/emailMessage.json");
|
|
4
|
+
const Kohost = require("./Kohost");
|
|
5
|
+
|
|
6
|
+
schemas.add(schema);
|
|
7
|
+
const validator = schemas.compile(schema);
|
|
8
|
+
|
|
9
|
+
class EmailMessage extends Kohost {
|
|
10
|
+
constructor(data) {
|
|
11
|
+
super(data);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
Object.defineProperty(EmailMessage.prototype, "schema", {
|
|
16
|
+
value: schema,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
Object.defineProperty(EmailMessage.prototype, "validator", {
|
|
20
|
+
get: function () {
|
|
21
|
+
return validator;
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
Object.defineProperty(EmailMessage, "validProperties", {
|
|
26
|
+
value: Object.keys(schema.properties),
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
module.exports = EmailMessage;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// create the energyReportDaily Model
|
|
2
|
+
const schemas = require("../utils/schema");
|
|
3
|
+
const schema = require("../schemas/energyReport.json");
|
|
4
|
+
const Kohost = require("./Kohost");
|
|
5
|
+
|
|
6
|
+
schemas.add(schema);
|
|
7
|
+
const validator = schemas.compile(schema);
|
|
8
|
+
|
|
9
|
+
class EnergyReport extends Kohost {
|
|
10
|
+
constructor(data) {
|
|
11
|
+
super(data);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
Object.defineProperty(EnergyReport.prototype, "schema", {
|
|
16
|
+
value: schema,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
Object.defineProperty(EnergyReport.prototype, "validator", {
|
|
20
|
+
get: function () {
|
|
21
|
+
return validator;
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
Object.defineProperty(EnergyReport, "validProperties", {
|
|
26
|
+
value: Object.keys(schema.properties),
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
module.exports = EnergyReport;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// create the energyReportShard Model
|
|
2
|
+
const schemas = require("../utils/schema");
|
|
3
|
+
const schema = require("../schemas/energyReportShard.json");
|
|
4
|
+
const Kohost = require("./Kohost");
|
|
5
|
+
|
|
6
|
+
schemas.add(schema);
|
|
7
|
+
const validator = schemas.compile(schema);
|
|
8
|
+
|
|
9
|
+
class EnergyReportShard extends Kohost {
|
|
10
|
+
constructor(data) {
|
|
11
|
+
super(data);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
Object.defineProperty(EnergyReportShard.prototype, "schema", {
|
|
16
|
+
value: schema,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
Object.defineProperty(EnergyReportShard.prototype, "validator", {
|
|
20
|
+
get: function () {
|
|
21
|
+
return validator;
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
Object.defineProperty(EnergyReportShard, "validProperties", {
|
|
26
|
+
value: Object.keys(schema.properties),
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
module.exports = EnergyReportShard;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Create the Gateway Model
|
|
2
|
+
const schemas = require("../utils/schema");
|
|
3
|
+
const schema = require("../schemas/gateway.json");
|
|
4
|
+
const Kohost = require("./Kohost");
|
|
5
|
+
|
|
6
|
+
schemas.add(schema);
|
|
7
|
+
const validator = schemas.compile(schema);
|
|
8
|
+
|
|
9
|
+
class Gateway extends Kohost {
|
|
10
|
+
constructor(data) {
|
|
11
|
+
super(data);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
Object.defineProperty(Gateway.prototype, "schema", {
|
|
16
|
+
value: schema,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
Object.defineProperty(Gateway.prototype, "validator", {
|
|
20
|
+
get: function () {
|
|
21
|
+
return validator;
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
Object.defineProperty(Gateway, "validProperties", {
|
|
26
|
+
value: Object.keys(schema.properties),
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
module.exports = Gateway;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const schemas = require("../utils/schema");
|
|
2
|
+
const schema = require("../schemas/identification.json");
|
|
3
|
+
const Kohost = require("./Kohost");
|
|
4
|
+
|
|
5
|
+
schemas.add(schema);
|
|
6
|
+
const validator = schemas.compile(schema);
|
|
7
|
+
|
|
8
|
+
class Identification extends Kohost {
|
|
9
|
+
constructor(data) {
|
|
10
|
+
super(data);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
get isExpired() {
|
|
14
|
+
return new Date(this.expirationDate) < new Date();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
Object.defineProperty(Identification.prototype, "schema", {
|
|
19
|
+
value: schema,
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
Object.defineProperty(Identification.prototype, "validator", {
|
|
23
|
+
get: function () {
|
|
24
|
+
return validator;
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
Object.defineProperty(Identification, "validProperties", {
|
|
29
|
+
value: Object.keys(schema.properties),
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
module.exports = Identification;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
const { ValidationError } = require("../Errors");
|
|
2
|
+
const { customAlphabet: generate } = require("nanoid");
|
|
3
|
+
|
|
4
|
+
class Kohost {
|
|
5
|
+
constructor(data) {
|
|
6
|
+
if (!this.schema) {
|
|
7
|
+
throw new Error("Schema is not defined");
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
if (!this.validator) {
|
|
11
|
+
throw new Error("Validator is not defined");
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const isNew = data?.id ? false : true;
|
|
15
|
+
|
|
16
|
+
this.#_setId(data);
|
|
17
|
+
this.#_validate(data);
|
|
18
|
+
this.#_setProperties(data);
|
|
19
|
+
this.#_setTimestamps(isNew);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
static get validProperties() {
|
|
23
|
+
throw new Error("validProperties is not defined");
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
get schemaProperties() {
|
|
27
|
+
return Object.keys(this.validator.schema.properties);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
#_setId(data) {
|
|
31
|
+
if (data._id) data.id = data._id;
|
|
32
|
+
if (!data.id) {
|
|
33
|
+
data.id = this.constructor.generateId();
|
|
34
|
+
}
|
|
35
|
+
delete data._id;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
#_setProperties(data) {
|
|
39
|
+
this.schemaProperties.forEach((key) => {
|
|
40
|
+
if (data[key] !== undefined) this[key] = data[key];
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
#_setTimestamps(isNew) {
|
|
45
|
+
const now = new Date();
|
|
46
|
+
if (
|
|
47
|
+
isNew &&
|
|
48
|
+
this.schemaProperties.includes("createdAt") &&
|
|
49
|
+
!this.createdAt
|
|
50
|
+
) {
|
|
51
|
+
this.createdAt = now;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
#_validate(data) {
|
|
56
|
+
const valid = this.validator(data);
|
|
57
|
+
if (!valid) {
|
|
58
|
+
throw new ValidationError(`Invalid ${this.constructor.name}`, {
|
|
59
|
+
cause: this.validator.errors,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
static generateId() {
|
|
65
|
+
const length = 8;
|
|
66
|
+
const characters =
|
|
67
|
+
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
68
|
+
const id = generate(characters, length)();
|
|
69
|
+
return id;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
static getActionDelta(old, _new) {
|
|
73
|
+
const delta = {};
|
|
74
|
+
for (const action in _new) {
|
|
75
|
+
if (this.actionProperties?.includes(action)) {
|
|
76
|
+
if (old[action] !== _new[action]) {
|
|
77
|
+
delta[action] = 1;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return delta;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
toObject() {
|
|
85
|
+
const obj = { ...this };
|
|
86
|
+
// delete keys if they are not valid properties
|
|
87
|
+
Object.keys(obj).forEach((key) => {
|
|
88
|
+
if (!this.constructor.validProperties.includes(key)) {
|
|
89
|
+
delete obj[key];
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
return obj;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
module.exports = Kohost;
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
constructor(data) {
|
|
11
|
+
super(data);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
Object.defineProperty(Lock.prototype, "schema", {
|
|
16
|
+
value: schema,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
Object.defineProperty(Lock.prototype, "validator", {
|
|
20
|
+
get: function () {
|
|
21
|
+
return validator;
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
Object.defineProperty(Lock, "validProperties", {
|
|
26
|
+
value: Object.keys(schema.properties),
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
Object.defineProperty(Lock, "actionProperties", {
|
|
30
|
+
value: ["state"],
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
module.exports = Lock;
|
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
constructor(data) {
|
|
11
|
+
super(data);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
createImageVariant(params) {
|
|
15
|
+
if (this.mimeType != "image/*")
|
|
16
|
+
throw new RequestError("Only dynamic images can have variants");
|
|
17
|
+
// convert params to "key=value" pairs
|
|
18
|
+
const query = Object.keys(params)
|
|
19
|
+
.map((key) => `${key}=${params[key]}`)
|
|
20
|
+
.join(",");
|
|
21
|
+
|
|
22
|
+
// replace the final /public with the query above
|
|
23
|
+
return this.url.replace(/\/public$/, `/${query}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
Object.defineProperty(MediaFile.prototype, "schema", {
|
|
28
|
+
value: schema,
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
Object.defineProperty(MediaFile.prototype, "validator", {
|
|
32
|
+
get: function () {
|
|
33
|
+
return validator;
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
Object.defineProperty(MediaFile, "validProperties", {
|
|
38
|
+
value: Object.keys(schema.properties),
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
module.exports = MediaFile;
|
|
@@ -0,0 +1,29 @@
|
|
|
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
|
+
constructor(data) {
|
|
11
|
+
super(data);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
Object.defineProperty(MediaSource.prototype, "schema", {
|
|
16
|
+
value: schema,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
Object.defineProperty(MediaSource.prototype, "validator", {
|
|
20
|
+
get: function () {
|
|
21
|
+
return validator;
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
Object.defineProperty(MediaSource, "validProperties", {
|
|
26
|
+
value: Object.keys(schema.properties),
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
module.exports = MediaSource;
|
|
@@ -0,0 +1,29 @@
|
|
|
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
|
+
constructor(data) {
|
|
11
|
+
super(data);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
Object.defineProperty(MotionSensor.prototype, "schema", {
|
|
16
|
+
value: schema,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
Object.defineProperty(MotionSensor.prototype, "validator", {
|
|
20
|
+
get: function () {
|
|
21
|
+
return validator;
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
Object.defineProperty(MotionSensor, "validProperties", {
|
|
26
|
+
value: Object.keys(schema.properties),
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
module.exports = MotionSensor;
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
constructor(data) {
|
|
10
|
+
super(data);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
Object.defineProperty(Organization.prototype, "schema", {
|
|
15
|
+
value: schema,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
Object.defineProperty(Organization.prototype, "validator", {
|
|
19
|
+
get: function () {
|
|
20
|
+
return validator;
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
Object.defineProperty(Organization, "validProperties", {
|
|
25
|
+
value: Object.keys(schema.properties),
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
module.exports = Organization;
|
|
@@ -0,0 +1,29 @@
|
|
|
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
|
+
constructor(data) {
|
|
11
|
+
super(data);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
Object.defineProperty(Product.prototype, "schema", {
|
|
16
|
+
value: schema,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
Object.defineProperty(Product.prototype, "validator", {
|
|
20
|
+
get: function () {
|
|
21
|
+
return validator;
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
Object.defineProperty(Product, "validProperties", {
|
|
26
|
+
value: Object.keys(schema.properties),
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
module.exports = Product;
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
constructor(data) {
|
|
10
|
+
super(data);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
Object.defineProperty(Property.prototype, "schema", {
|
|
15
|
+
value: schema,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
Object.defineProperty(Property.prototype, "validator", {
|
|
19
|
+
get: function () {
|
|
20
|
+
return validator;
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
Object.defineProperty(Property, "validProperties", {
|
|
25
|
+
value: Object.keys(schema.properties),
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
module.exports = Property;
|