@kohost/api-client 3.0.0-beta.47 → 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/dist/cjs/AMQPClient/index.js +290 -0
- 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.js → SocketIoClient/index.js} +19 -14
- 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.js +23 -0
- 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/Models.js +451 -435
- package/dist/esm/Models.js.map +4 -4
- package/dist/esm/utils.js +7 -26
- package/dist/esm/utils.js.map +3 -3
- package/package.json +12 -7
- package/dist/cjs/AMQPClient.js +0 -462
- package/dist/cjs/Commands.js +0 -973
- package/dist/cjs/Errors.js +0 -209
- package/dist/cjs/Events.js +0 -578
- package/dist/cjs/Models.js +0 -4905
- package/dist/cjs/defs.js +0 -167
- package/dist/cjs/index.cjs.js +0 -6755
- package/dist/cjs/utils.js +0 -525
- /package/dist/cjs/{Client.js → Client/index.js} +0 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// Create the User Model
|
|
2
|
+
const schemas = require("../utils/schema");
|
|
3
|
+
const schema = require("../schemas/user.json");
|
|
4
|
+
const paymentSchema = require("../schemas/payment.json");
|
|
5
|
+
const Kohost = require("./Kohost");
|
|
6
|
+
const MediaFile = require("./MediaFile");
|
|
7
|
+
const Reservation = require("./Reservation");
|
|
8
|
+
|
|
9
|
+
const { nanoid } = require("nanoid/async");
|
|
10
|
+
|
|
11
|
+
schemas.add(paymentSchema);
|
|
12
|
+
schemas.add(schema);
|
|
13
|
+
|
|
14
|
+
const validator = schemas.compile(schema);
|
|
15
|
+
|
|
16
|
+
class User extends Kohost {
|
|
17
|
+
constructor(data) {
|
|
18
|
+
if (data.photo) data.photo = new MediaFile(data.photo);
|
|
19
|
+
if (data.reservations)
|
|
20
|
+
data.reservations = data.reservations.map((res) => new Reservation(res));
|
|
21
|
+
super(data);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
static validatePhone(phoneNumber) {
|
|
25
|
+
const regex = /^\+?[1-9]\d{1,14}$/;
|
|
26
|
+
return regex.test(phoneNumber);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
static validateEmail(email) {
|
|
30
|
+
//eslint-disable-next-line no-useless-escape
|
|
31
|
+
const regex =
|
|
32
|
+
/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
|
33
|
+
return regex.test(email);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
static async generatePassword(len = 16) {
|
|
37
|
+
return await nanoid(len);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
Object.defineProperty(User.prototype, "schema", {
|
|
42
|
+
value: schema,
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
Object.defineProperty(User.prototype, "validator", {
|
|
46
|
+
get: function () {
|
|
47
|
+
return validator;
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
Object.defineProperty(User, "validProperties", {
|
|
52
|
+
value: Object.keys(schema.properties),
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
Object.defineProperty(User.prototype, "fullName", {
|
|
56
|
+
get: function () {
|
|
57
|
+
return `${this.firstName} ${this.lastName}`;
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
Object.defineProperty(User.prototype, "roles", {
|
|
62
|
+
get: function () {
|
|
63
|
+
const roles = new Set();
|
|
64
|
+
if (this.permissions) {
|
|
65
|
+
for (const permission of this.permissions) {
|
|
66
|
+
roles.add(permission.role);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return Array.from(roles);
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
module.exports = User;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Create the WindowCovering Model
|
|
2
|
+
const schemas = require("../utils/schema");
|
|
3
|
+
const schema = require("../schemas/windowCovering.json");
|
|
4
|
+
const Kohost = require("./Kohost");
|
|
5
|
+
|
|
6
|
+
schemas.add(schema);
|
|
7
|
+
const validator = schemas.compile(schema);
|
|
8
|
+
|
|
9
|
+
class WindowCovering extends Kohost {
|
|
10
|
+
constructor(data) {
|
|
11
|
+
super(data);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
static getActionDelta(old, _new) {
|
|
15
|
+
const delta = {};
|
|
16
|
+
for (const action in _new) {
|
|
17
|
+
if (this.actionProperties?.includes(action)) {
|
|
18
|
+
if (action === "position") {
|
|
19
|
+
const oldPos = old[action];
|
|
20
|
+
const newPos = _new[action];
|
|
21
|
+
delta[action] = newPos - oldPos / 100;
|
|
22
|
+
} else if (old[action] !== _new[action]) {
|
|
23
|
+
delta[action] = 1;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return delta;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
Object.defineProperty(WindowCovering.prototype, "schema", {
|
|
32
|
+
value: schema,
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
Object.defineProperty(WindowCovering.prototype, "validator", {
|
|
36
|
+
get: function () {
|
|
37
|
+
return validator;
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
Object.defineProperty(WindowCovering, "validProperties", {
|
|
42
|
+
value: Object.keys(schema.properties),
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
Object.defineProperty(WindowCovering, "actionProperties", {
|
|
46
|
+
value: ["position"],
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
module.exports = WindowCovering;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
const Reservation = require("./Reservation");
|
|
2
|
+
const MediaFile = require("./MediaFile");
|
|
3
|
+
const Switch = require("./Switch");
|
|
4
|
+
const Alarm = require("./Alarm");
|
|
5
|
+
const Dimmer = require("./Dimmer");
|
|
6
|
+
const Lock = require("./Lock");
|
|
7
|
+
const Thermostat = require("./Thermostat");
|
|
8
|
+
const WindowCovering = require("./WindowCovering");
|
|
9
|
+
const Identification = require("./Identification");
|
|
10
|
+
const User = require("./User");
|
|
11
|
+
const SystemUser = require("./SystemUser");
|
|
12
|
+
const Courtesy = require("./Courtesy");
|
|
13
|
+
const Camera = require("./Camera");
|
|
14
|
+
const MotionSensor = require("./MotionSensor");
|
|
15
|
+
const MediaSource = require("./MediaSource");
|
|
16
|
+
const Room = require("./Room");
|
|
17
|
+
|
|
18
|
+
const Space = require("./Space");
|
|
19
|
+
const SpaceType = require("./SpaceType");
|
|
20
|
+
|
|
21
|
+
const Ticket = require("./Ticket");
|
|
22
|
+
const Scene = require("./Scene");
|
|
23
|
+
const Gateway = require("./Gateway");
|
|
24
|
+
const Product = require("./Product");
|
|
25
|
+
const DiscoveredDevice = require("./DiscoveredDevice");
|
|
26
|
+
const Credential = require("./Credential");
|
|
27
|
+
const ShortLink = require("./ShortLink");
|
|
28
|
+
const EnergyReportShard = require("./EnergyReportShard");
|
|
29
|
+
const EnergyReport = require("./EnergyReport");
|
|
30
|
+
const SMSMessage = require("./SmsMessage");
|
|
31
|
+
const EmailMessage = require("./EmailMessage");
|
|
32
|
+
|
|
33
|
+
const Property = require("./Property");
|
|
34
|
+
const Organization = require("./Organization");
|
|
35
|
+
|
|
36
|
+
module.exports = {
|
|
37
|
+
Organization,
|
|
38
|
+
Property,
|
|
39
|
+
MediaFile,
|
|
40
|
+
Gateway,
|
|
41
|
+
Switch,
|
|
42
|
+
Alarm,
|
|
43
|
+
Dimmer,
|
|
44
|
+
Lock,
|
|
45
|
+
Courtesy,
|
|
46
|
+
Camera,
|
|
47
|
+
MotionSensor,
|
|
48
|
+
Thermostat,
|
|
49
|
+
WindowCovering,
|
|
50
|
+
MediaSource,
|
|
51
|
+
Identification,
|
|
52
|
+
Product,
|
|
53
|
+
User,
|
|
54
|
+
SystemUser,
|
|
55
|
+
Room,
|
|
56
|
+
Space,
|
|
57
|
+
SpaceType,
|
|
58
|
+
Ticket,
|
|
59
|
+
Scene,
|
|
60
|
+
DiscoveredDevice,
|
|
61
|
+
Reservation,
|
|
62
|
+
Credential,
|
|
63
|
+
ShortLink,
|
|
64
|
+
EnergyReportShard,
|
|
65
|
+
EnergyReport,
|
|
66
|
+
SMSMessage,
|
|
67
|
+
EmailMessage,
|
|
68
|
+
};
|
|
@@ -1,19 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
const io = require("socket.io-client");
|
|
2
|
+
const { EventEmitter } = require("events");
|
|
3
3
|
|
|
4
|
-
// src/SocketIoClient/index.js
|
|
5
|
-
var io = require("socket.io-client");
|
|
6
|
-
var { EventEmitter } = require("events");
|
|
7
4
|
module.exports = class SocketIoClient extends EventEmitter {
|
|
8
|
-
static {
|
|
9
|
-
__name(this, "SocketIoClient");
|
|
10
|
-
}
|
|
11
5
|
constructor(config = { url: null, propertyId: null, options: {} }) {
|
|
12
6
|
super();
|
|
13
|
-
if (!config.url)
|
|
14
|
-
|
|
15
|
-
if (!config.propertyId)
|
|
16
|
-
throw new Error("Property ID not provided");
|
|
7
|
+
if (!config.url) throw new Error("Websocket URL / endpoint not provided");
|
|
8
|
+
if (!config.propertyId) throw new Error("Property ID not provided");
|
|
17
9
|
this.url = config.url;
|
|
18
10
|
this.propertyId = config.propertyId;
|
|
19
11
|
this.options = {
|
|
@@ -21,48 +13,61 @@ module.exports = class SocketIoClient extends EventEmitter {
|
|
|
21
13
|
forceNew: false,
|
|
22
14
|
reconnection: true,
|
|
23
15
|
reconnectionAttempts: Infinity,
|
|
24
|
-
reconnectionDelay:
|
|
16
|
+
reconnectionDelay: 1000,
|
|
25
17
|
withCredentials: true,
|
|
26
18
|
transports: ["websocket", "polling"],
|
|
27
19
|
upgrade: true,
|
|
28
|
-
...config.options
|
|
20
|
+
...config.options,
|
|
29
21
|
};
|
|
22
|
+
|
|
30
23
|
this.socket = io(this.url, this.options);
|
|
24
|
+
|
|
31
25
|
this.socket.on("connect", () => {
|
|
32
26
|
this.emit("connect", this.socket);
|
|
33
27
|
});
|
|
28
|
+
|
|
34
29
|
this.socket.on("disconnect", (reason) => {
|
|
35
30
|
this.emit("disconnect", reason);
|
|
36
31
|
});
|
|
32
|
+
|
|
37
33
|
this.socket.on("reconnect_attempt", (data) => {
|
|
38
34
|
this.emit("reconnect_attempt", data);
|
|
39
35
|
});
|
|
36
|
+
|
|
40
37
|
this.socket.on("connect_error", (error) => {
|
|
41
38
|
this.emit("connect_error", error);
|
|
42
39
|
});
|
|
43
40
|
}
|
|
41
|
+
|
|
44
42
|
get connected() {
|
|
45
43
|
return this.socket?.connected || false;
|
|
46
44
|
}
|
|
45
|
+
|
|
47
46
|
get disconnected() {
|
|
48
47
|
return this.socket?.disconnected || false;
|
|
49
48
|
}
|
|
49
|
+
|
|
50
50
|
connect() {
|
|
51
51
|
this.socket.connect();
|
|
52
52
|
}
|
|
53
|
+
|
|
53
54
|
disconnect() {
|
|
54
55
|
this.socket.disconnect();
|
|
55
56
|
}
|
|
57
|
+
|
|
56
58
|
reconnect() {
|
|
57
59
|
this.disconnect();
|
|
58
60
|
this.connect();
|
|
59
61
|
}
|
|
62
|
+
|
|
60
63
|
subscribe(event, callback) {
|
|
61
64
|
this.socket.on(event, callback);
|
|
62
65
|
}
|
|
66
|
+
|
|
63
67
|
unsubscribe(event, callback) {
|
|
64
68
|
this.socket.off(event, callback);
|
|
65
69
|
}
|
|
70
|
+
|
|
66
71
|
send(event, { data = {}, query = {}, ...rest }) {
|
|
67
72
|
this.socket.emit(event, { data, query, ...rest });
|
|
68
73
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const deviceTypes = require("./deviceTypes");
|
|
2
|
+
const formalDeviceTypes = require("./formalDeviceTypes");
|
|
3
|
+
const { defs: httpDefs } = require("../Client");
|
|
4
|
+
|
|
5
|
+
const defs = {
|
|
6
|
+
http: httpDefs,
|
|
7
|
+
deviceTypes,
|
|
8
|
+
formalDeviceTypes,
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
module.exports = defs;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const Models = require("./Models");
|
|
2
|
+
const Errors = require("./Errors");
|
|
3
|
+
const Commands = require("./Commands");
|
|
4
|
+
const Events = require("./Events");
|
|
5
|
+
const defs = require("./defs");
|
|
6
|
+
const utils = require("./utils");
|
|
7
|
+
const Client = require("./Client");
|
|
8
|
+
const SocketIoClient = require("./SocketIoClient");
|
|
9
|
+
const AMQPClient = require("./AMQPClient");
|
|
10
|
+
|
|
11
|
+
const Kohost = {
|
|
12
|
+
Models,
|
|
13
|
+
Errors,
|
|
14
|
+
Commands,
|
|
15
|
+
Events,
|
|
16
|
+
Client,
|
|
17
|
+
SocketIoClient,
|
|
18
|
+
AMQPClient,
|
|
19
|
+
defs,
|
|
20
|
+
utils: utils,
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
module.exports = Kohost;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema",
|
|
3
|
+
"$id": "alarm.json",
|
|
4
|
+
"title": "Alarm",
|
|
5
|
+
"description": "Any smart alarm system",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"id": {
|
|
9
|
+
"$ref": "definitions.json#/definitions/id"
|
|
10
|
+
},
|
|
11
|
+
"name": {
|
|
12
|
+
"type": "string"
|
|
13
|
+
},
|
|
14
|
+
"type": {
|
|
15
|
+
"$ref": "definitions.json#/definitions/type"
|
|
16
|
+
},
|
|
17
|
+
"systemData": {
|
|
18
|
+
"$ref": "definitions.json#/definitions/systemData"
|
|
19
|
+
},
|
|
20
|
+
"supportedNotifications": {
|
|
21
|
+
"$ref": "definitions.json#/definitions/supportedNotifications"
|
|
22
|
+
},
|
|
23
|
+
"notification": {
|
|
24
|
+
"$ref": "definitions.json#/definitions/notification"
|
|
25
|
+
},
|
|
26
|
+
"driver": {
|
|
27
|
+
"$ref": "definitions.json#/definitions/driver"
|
|
28
|
+
},
|
|
29
|
+
"areas": {
|
|
30
|
+
"type": "array",
|
|
31
|
+
"items": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"properties": {
|
|
34
|
+
"number": {
|
|
35
|
+
"type": "number"
|
|
36
|
+
},
|
|
37
|
+
"name": {
|
|
38
|
+
"type": "string"
|
|
39
|
+
},
|
|
40
|
+
"securityMode": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"enum": ["arming", "disarming", "armed", "disarmed", "alarm"]
|
|
43
|
+
},
|
|
44
|
+
"readyToArm": {
|
|
45
|
+
"type": "boolean"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"additionalProperties": false
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"zones": {
|
|
52
|
+
"type": "array",
|
|
53
|
+
"items": {
|
|
54
|
+
"type": "object",
|
|
55
|
+
"properties": {
|
|
56
|
+
"number": {
|
|
57
|
+
"type": "number",
|
|
58
|
+
"minimum": 0
|
|
59
|
+
},
|
|
60
|
+
"name": {
|
|
61
|
+
"type": "string"
|
|
62
|
+
},
|
|
63
|
+
"secure": {
|
|
64
|
+
"type": "boolean"
|
|
65
|
+
},
|
|
66
|
+
"bypassed": {
|
|
67
|
+
"type": "boolean"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"additionalProperties": false
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"supportedTroubles": {
|
|
74
|
+
"type": "array",
|
|
75
|
+
"uniqueItems": true,
|
|
76
|
+
"items": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"enum": ["battery", "ac", "phone", "bell", "fire"]
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"troubles": {
|
|
82
|
+
"type": "array",
|
|
83
|
+
"uniqueItems": true,
|
|
84
|
+
"items": {
|
|
85
|
+
"$ref": "#/properties/supportedTroubles/items"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"watts": {
|
|
89
|
+
"$ref": "definitions.json#/definitions/watts"
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"additionalProperties": false,
|
|
93
|
+
"required": [
|
|
94
|
+
"id",
|
|
95
|
+
"type",
|
|
96
|
+
"systemData",
|
|
97
|
+
"areas",
|
|
98
|
+
"zones",
|
|
99
|
+
"supportedTroubles",
|
|
100
|
+
"troubles",
|
|
101
|
+
"driver"
|
|
102
|
+
]
|
|
103
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema",
|
|
3
|
+
"$id": "camera.json",
|
|
4
|
+
"title": "Camera",
|
|
5
|
+
"description": "Any smart camera",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"id": {
|
|
9
|
+
"$ref": "definitions.json#/definitions/id"
|
|
10
|
+
},
|
|
11
|
+
"name": {
|
|
12
|
+
"type": "string"
|
|
13
|
+
},
|
|
14
|
+
"type": {
|
|
15
|
+
"$ref": "definitions.json#/definitions/type"
|
|
16
|
+
},
|
|
17
|
+
"supportedNotifications": {
|
|
18
|
+
"$ref": "definitions.json#/definitions/supportedNotifications"
|
|
19
|
+
},
|
|
20
|
+
"notification": {
|
|
21
|
+
"$ref": "definitions.json#/definitions/notification"
|
|
22
|
+
},
|
|
23
|
+
"driver": {
|
|
24
|
+
"$ref": "definitions.json#/definitions/driver"
|
|
25
|
+
},
|
|
26
|
+
"liveStreams": {
|
|
27
|
+
"type": "object",
|
|
28
|
+
"additionalProperties": false,
|
|
29
|
+
"properties": {
|
|
30
|
+
"iframe": {
|
|
31
|
+
"type": ["string", "null"]
|
|
32
|
+
},
|
|
33
|
+
"hls": {
|
|
34
|
+
"type": ["string", "null"]
|
|
35
|
+
},
|
|
36
|
+
"webRTC": {
|
|
37
|
+
"type": ["string", "null"]
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"systemData": {
|
|
42
|
+
"$ref": "definitions.json#/definitions/systemData"
|
|
43
|
+
},
|
|
44
|
+
"watts": {
|
|
45
|
+
"$ref": "definitions.json#/definitions/watts"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"additionalProperties": false,
|
|
49
|
+
"required": ["id", "type", "systemData", "streams", "driver"]
|
|
50
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema",
|
|
3
|
+
"$id": "courtesy.json",
|
|
4
|
+
"title": "Courtesy",
|
|
5
|
+
"description": "Any smart courtesy system",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"id": {
|
|
9
|
+
"$ref": "definitions.json#/definitions/id"
|
|
10
|
+
},
|
|
11
|
+
"name": {
|
|
12
|
+
"type": "string"
|
|
13
|
+
},
|
|
14
|
+
"type": {
|
|
15
|
+
"$ref": "definitions.json#/definitions/type"
|
|
16
|
+
},
|
|
17
|
+
"supportedNotifications": {
|
|
18
|
+
"$ref": "definitions.json#/definitions/supportedNotifications"
|
|
19
|
+
},
|
|
20
|
+
"notification": {
|
|
21
|
+
"$ref": "definitions.json#/definitions/notification"
|
|
22
|
+
},
|
|
23
|
+
"driver": {
|
|
24
|
+
"$ref": "definitions.json#/definitions/driver"
|
|
25
|
+
},
|
|
26
|
+
"supportedStates": {
|
|
27
|
+
"type": "array",
|
|
28
|
+
"uniqueItems": true,
|
|
29
|
+
"items": {
|
|
30
|
+
"enum": ["privacy", "service", "none"]
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"state": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"$ref": "#/properties/supportedStates/items"
|
|
36
|
+
},
|
|
37
|
+
"systemData": {
|
|
38
|
+
"$ref": "definitions.json#/definitions/systemData"
|
|
39
|
+
},
|
|
40
|
+
"watts": {
|
|
41
|
+
"$ref": "definitions.json#/definitions/watts"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"additionalProperties": false,
|
|
45
|
+
"required": ["id", "type", "driver", "supportedStates", "state"]
|
|
46
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema",
|
|
3
|
+
"$id": "credential.json",
|
|
4
|
+
"title": "Credential",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["type", "credential", "expires"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"id": {
|
|
9
|
+
"$ref": "definitions.json#/definitions/id"
|
|
10
|
+
},
|
|
11
|
+
"type": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"enum": ["verificationCode", "token", "mobileKey"]
|
|
14
|
+
},
|
|
15
|
+
"credential": {
|
|
16
|
+
"type": "string"
|
|
17
|
+
},
|
|
18
|
+
"user": {
|
|
19
|
+
"type": "string"
|
|
20
|
+
},
|
|
21
|
+
"userAgent": {
|
|
22
|
+
"type": "string"
|
|
23
|
+
},
|
|
24
|
+
"expires": {
|
|
25
|
+
"string": "string"
|
|
26
|
+
},
|
|
27
|
+
"systemData": {
|
|
28
|
+
"$ref": "definitions.json#/definitions/systemData"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|