@awarevue/api-types 2.0.24 → 2.0.25
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/_legacy/index.js +18 -2
- package/dist/_legacy/milestone.js +2 -1
- package/dist/_legacy/orchid.js +2 -1
- package/dist/alarm-automation.js +37 -26
- package/dist/api/agent-protocol/index.js +17 -1
- package/dist/api/agent-protocol/protocol.js +219 -212
- package/dist/api/commands/alarm.js +46 -43
- package/dist/api/commands/all.js +25 -22
- package/dist/api/commands/camera-lift.js +13 -10
- package/dist/api/commands/camera.js +65 -61
- package/dist/api/commands/display.js +27 -24
- package/dist/api/commands/door.js +21 -18
- package/dist/api/commands/index.js +28 -12
- package/dist/api/commands/intercom-terminal.js +2 -1
- package/dist/api/commands/io-board.js +11 -8
- package/dist/api/commands/nvr-exporter.js +20 -17
- package/dist/api/commands/pbx.js +13 -10
- package/dist/api/commands/presence-tracker.js +25 -22
- package/dist/api/commands/server.js +21 -18
- package/dist/api/error.js +93 -89
- package/dist/api/events/alarm.js +53 -50
- package/dist/api/events/all.js +57 -53
- package/dist/api/events/camera.js +68 -65
- package/dist/api/events/display.js +6 -3
- package/dist/api/events/door.js +60 -57
- package/dist/api/events/index.js +28 -12
- package/dist/api/events/intercom-terminal.js +16 -13
- package/dist/api/events/io-board.js +10 -7
- package/dist/api/events/nvr-exporter.js +14 -11
- package/dist/api/events/panic-button.js +8 -5
- package/dist/api/events/presence-tracker.js +29 -26
- package/dist/api/events/reader.js +11 -8
- package/dist/api/events/server.js +12 -9
- package/dist/api/index.js +25 -9
- package/dist/api/mqtt/index.js +17 -1
- package/dist/api/mqtt/payloads.js +15 -12
- package/dist/api/queries/all.js +23 -20
- package/dist/api/queries/camera.js +19 -16
- package/dist/api/queries/index.js +21 -5
- package/dist/api/queries/nvr-analytics-server.js +57 -54
- package/dist/api/queries/nvr-exporter.js +26 -23
- package/dist/api/queries/nvr-recorder.js +32 -29
- package/dist/api/rest/access-rule.js +14 -8
- package/dist/api/rest/agreement.js +6 -3
- package/dist/api/rest/alarm.js +2 -1
- package/dist/api/rest/api-keys.js +11 -8
- package/dist/api/rest/app.js +11 -8
- package/dist/api/rest/auth.js +12 -9
- package/dist/api/rest/automation.js +13 -10
- package/dist/api/rest/aware-config.js +2 -1
- package/dist/api/rest/bookmarks.js +17 -14
- package/dist/api/rest/cast.js +11 -5
- package/dist/api/rest/custom-field.js +6 -3
- package/dist/api/rest/device-event.js +2 -1
- package/dist/api/rest/device-group.js +19 -13
- package/dist/api/rest/file.js +2 -1
- package/dist/api/rest/index.js +50 -34
- package/dist/api/rest/io-device.js +21 -14
- package/dist/api/rest/layout.js +23 -17
- package/dist/api/rest/macros.js +6 -3
- package/dist/api/rest/media.js +55 -52
- package/dist/api/rest/module-config.js +2 -1
- package/dist/api/rest/notifications.js +11 -8
- package/dist/api/rest/person-agreement.js +11 -5
- package/dist/api/rest/person-presence.js +26 -23
- package/dist/api/rest/person-type.js +6 -3
- package/dist/api/rest/person.js +11 -5
- package/dist/api/rest/query.js +13 -8
- package/dist/api/rest/schedule.js +11 -8
- package/dist/api/rest/security-level.js +6 -3
- package/dist/api/rest/template.js +13 -10
- package/dist/api/rest/token-conversion.js +6 -3
- package/dist/api/rest/user.js +31 -28
- package/dist/api/rest/view.js +20 -14
- package/dist/api/rest/webrtc-playback.js +12 -6
- package/dist/api/rest/zone.js +14 -8
- package/dist/api/state/index.js +2 -1
- package/dist/api/ws/device-communication.js +46 -38
- package/dist/api/ws/index.js +21 -5
- package/dist/api/ws/notifications.js +17 -10
- package/dist/api/ws/progress.js +37 -30
- package/dist/api/ws/web-rtc-signaling.js +72 -65
- package/dist/api/ws/web-socket.js +5 -2
- package/dist/index.js +22 -6
- package/dist/objects/access-rule.js +32 -29
- package/dist/objects/agent-metadata.js +33 -30
- package/dist/objects/agreement.js +10 -7
- package/dist/objects/all.js +7 -4
- package/dist/objects/api-key.js +10 -7
- package/dist/objects/automation-rule.js +28 -25
- package/dist/objects/bookmark.js +14 -11
- package/dist/objects/credential.js +15 -9
- package/dist/objects/custom-field.js +11 -8
- package/dist/objects/device/alarm.js +6 -3
- package/dist/objects/device/any-device.js +206 -203
- package/dist/objects/device/camera-lift.js +6 -3
- package/dist/objects/device/camera.js +30 -27
- package/dist/objects/device/device-gateway.js +4 -1
- package/dist/objects/device/device-import.js +26 -23
- package/dist/objects/device/device-relation.js +16 -13
- package/dist/objects/device/display.js +6 -3
- package/dist/objects/device/door.js +10 -7
- package/dist/objects/device/index.js +38 -22
- package/dist/objects/device/intercom-operator.js +4 -1
- package/dist/objects/device/intercom-terminal.js +20 -17
- package/dist/objects/device/io-board.js +8 -5
- package/dist/objects/device/motion-sensor.js +6 -3
- package/dist/objects/device/nvr-analytics-server.js +8 -5
- package/dist/objects/device/nvr-exporter.js +9 -6
- package/dist/objects/device/nvr-recorder.js +8 -5
- package/dist/objects/device/panic-button.js +6 -3
- package/dist/objects/device/pbx.js +7 -4
- package/dist/objects/device/presence-tracker.js +4 -1
- package/dist/objects/device/reader.js +4 -1
- package/dist/objects/device/server.js +4 -1
- package/dist/objects/device/system.js +7 -4
- package/dist/objects/device-group.js +11 -8
- package/dist/objects/index.js +44 -28
- package/dist/objects/layout.js +23 -20
- package/dist/objects/macro.js +20 -17
- package/dist/objects/module-config.js +2 -1
- package/dist/objects/notification.js +15 -12
- package/dist/objects/person-agreement.js +10 -7
- package/dist/objects/person-presence.js +32 -29
- package/dist/objects/person-type.js +17 -11
- package/dist/objects/person.js +42 -39
- package/dist/objects/role.js +11 -8
- package/dist/objects/schedule.js +45 -39
- package/dist/objects/security-level.js +13 -10
- package/dist/objects/template.js +10 -7
- package/dist/objects/token-conversion.js +10 -7
- package/dist/objects/user.js +14 -11
- package/dist/objects/view.js +53 -50
- package/dist/objects/world-object.js +8 -5
- package/dist/objects/zone.js +16 -13
- package/dist/package.json +1 -1
- package/dist/permissions.js +149 -146
- package/dist/primitives.js +30 -27
- package/package.json +1 -1
|
@@ -1,30 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.presenceTrackerCommands = exports.sTogglePresenceCommand = exports.sCheckOutPersonCommand = exports.sCheckInPersonCommand = void 0;
|
|
4
|
+
const primitives_1 = require("../../primitives");
|
|
5
|
+
const zod_1 = require("zod");
|
|
3
6
|
// COMMANDS
|
|
4
|
-
|
|
5
|
-
command: z.literal('presence-tracker.check-in'),
|
|
6
|
-
params: z.object({
|
|
7
|
-
personId: sPersonId,
|
|
8
|
-
zoneId: sZoneId.nullable(),
|
|
7
|
+
exports.sCheckInPersonCommand = zod_1.z.object({
|
|
8
|
+
command: zod_1.z.literal('presence-tracker.check-in'),
|
|
9
|
+
params: zod_1.z.object({
|
|
10
|
+
personId: primitives_1.sPersonId,
|
|
11
|
+
zoneId: primitives_1.sZoneId.nullable(),
|
|
9
12
|
}),
|
|
10
13
|
});
|
|
11
|
-
|
|
12
|
-
command: z.literal('presence-tracker.check-out'),
|
|
13
|
-
params: z.object({
|
|
14
|
-
personId: sPersonId,
|
|
15
|
-
zoneId: sZoneId.nullable(),
|
|
16
|
-
leave: z.boolean(),
|
|
14
|
+
exports.sCheckOutPersonCommand = zod_1.z.object({
|
|
15
|
+
command: zod_1.z.literal('presence-tracker.check-out'),
|
|
16
|
+
params: zod_1.z.object({
|
|
17
|
+
personId: primitives_1.sPersonId,
|
|
18
|
+
zoneId: primitives_1.sZoneId.nullable(),
|
|
19
|
+
leave: zod_1.z.boolean(),
|
|
17
20
|
}),
|
|
18
21
|
});
|
|
19
|
-
|
|
20
|
-
command: z.literal('presence-tracker.toggle-presence'),
|
|
21
|
-
params: z.object({
|
|
22
|
-
personId: sPersonId,
|
|
23
|
-
zoneId: sZoneId.nullable(),
|
|
22
|
+
exports.sTogglePresenceCommand = zod_1.z.object({
|
|
23
|
+
command: zod_1.z.literal('presence-tracker.toggle-presence'),
|
|
24
|
+
params: zod_1.z.object({
|
|
25
|
+
personId: primitives_1.sPersonId,
|
|
26
|
+
zoneId: primitives_1.sZoneId.nullable(),
|
|
24
27
|
}),
|
|
25
28
|
});
|
|
26
|
-
|
|
27
|
-
'presence-tracker.check-in': sCheckInPersonCommand,
|
|
28
|
-
'presence-tracker.check-out': sCheckOutPersonCommand,
|
|
29
|
-
'presence-tracker.toggle-presence': sTogglePresenceCommand,
|
|
29
|
+
exports.presenceTrackerCommands = {
|
|
30
|
+
'presence-tracker.check-in': exports.sCheckInPersonCommand,
|
|
31
|
+
'presence-tracker.check-out': exports.sCheckOutPersonCommand,
|
|
32
|
+
'presence-tracker.toggle-presence': exports.sTogglePresenceCommand,
|
|
30
33
|
};
|
|
@@ -1,24 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.serverCommands = exports.sNotify = exports.sRunMacroCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const primitives_1 = require("../../primitives");
|
|
3
6
|
// COMMANDS
|
|
4
|
-
|
|
5
|
-
command: z.literal('server.run-macro'),
|
|
6
|
-
params: z.object({
|
|
7
|
-
macroId: sMacroId,
|
|
7
|
+
exports.sRunMacroCommand = zod_1.z.object({
|
|
8
|
+
command: zod_1.z.literal('server.run-macro'),
|
|
9
|
+
params: zod_1.z.object({
|
|
10
|
+
macroId: primitives_1.sMacroId,
|
|
8
11
|
}),
|
|
9
12
|
});
|
|
10
|
-
|
|
11
|
-
command: z.literal('server.notify'),
|
|
12
|
-
params: z.object({
|
|
13
|
-
source: sDeviceParam,
|
|
14
|
-
message: z.string().nonempty(),
|
|
15
|
-
severity: sNotificationSeverity,
|
|
16
|
-
metadata: z.record(z.unknown()),
|
|
17
|
-
notificationRef: z.string().nonempty().nullable(),
|
|
18
|
-
recipientId: z.string().nonempty().nullable(),
|
|
13
|
+
exports.sNotify = zod_1.z.object({
|
|
14
|
+
command: zod_1.z.literal('server.notify'),
|
|
15
|
+
params: zod_1.z.object({
|
|
16
|
+
source: primitives_1.sDeviceParam,
|
|
17
|
+
message: zod_1.z.string().nonempty(),
|
|
18
|
+
severity: primitives_1.sNotificationSeverity,
|
|
19
|
+
metadata: zod_1.z.record(zod_1.z.unknown()),
|
|
20
|
+
notificationRef: zod_1.z.string().nonempty().nullable(),
|
|
21
|
+
recipientId: zod_1.z.string().nonempty().nullable(),
|
|
19
22
|
}),
|
|
20
23
|
});
|
|
21
|
-
|
|
22
|
-
'server.run-macro': sRunMacroCommand,
|
|
23
|
-
'server.notify': sNotify,
|
|
24
|
+
exports.serverCommands = {
|
|
25
|
+
'server.run-macro': exports.sRunMacroCommand,
|
|
26
|
+
'server.notify': exports.sNotify,
|
|
24
27
|
};
|
package/dist/api/error.js
CHANGED
|
@@ -1,45 +1,49 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.errorMetadataSchemas = exports.AppErrorCode = exports.sTokenLimitExceededMeta = exports.sTokenInvalidFormatMeta = exports.sZoneAccessRuleConflictMeta = exports.sAccessRuleConflictMeta = exports.sVoidMeta = exports.sConflictMeta = exports.sInvalidMeta = exports.sNotFoundMeta = exports.sDuplicateMeta = void 0;
|
|
4
|
+
exports.isErrorResponse = isErrorResponse;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const credential_1 = require("../objects/credential");
|
|
3
7
|
// METADATA
|
|
4
|
-
|
|
5
|
-
subject: z.string(),
|
|
6
|
-
field: z.string(),
|
|
7
|
-
value: z.string().optional(),
|
|
8
|
-
existingId: z.string().optional(), // UUID or whatever
|
|
8
|
+
exports.sDuplicateMeta = zod_1.z.object({
|
|
9
|
+
subject: zod_1.z.string(),
|
|
10
|
+
field: zod_1.z.string(),
|
|
11
|
+
value: zod_1.z.string().optional(),
|
|
12
|
+
existingId: zod_1.z.string().optional(), // UUID or whatever
|
|
9
13
|
});
|
|
10
|
-
|
|
11
|
-
subject: z.string(),
|
|
12
|
-
field: z.string(),
|
|
13
|
-
value: z.string(),
|
|
14
|
+
exports.sNotFoundMeta = zod_1.z.object({
|
|
15
|
+
subject: zod_1.z.string(),
|
|
16
|
+
field: zod_1.z.string(),
|
|
17
|
+
value: zod_1.z.string(),
|
|
14
18
|
});
|
|
15
|
-
|
|
16
|
-
subject: z.string(),
|
|
17
|
-
fieldErrors: z.record(z.string()), // key → human msg
|
|
19
|
+
exports.sInvalidMeta = zod_1.z.object({
|
|
20
|
+
subject: zod_1.z.string(),
|
|
21
|
+
fieldErrors: zod_1.z.record(zod_1.z.string()), // key → human msg
|
|
18
22
|
});
|
|
19
|
-
|
|
20
|
-
subject: z.string(),
|
|
21
|
-
blockingSubject: z.string().optional(),
|
|
22
|
-
blockingId: z.string().optional(),
|
|
23
|
-
value: z.string().optional(),
|
|
23
|
+
exports.sConflictMeta = zod_1.z.object({
|
|
24
|
+
subject: zod_1.z.string(),
|
|
25
|
+
blockingSubject: zod_1.z.string().optional(),
|
|
26
|
+
blockingId: zod_1.z.string().optional(),
|
|
27
|
+
value: zod_1.z.string().optional(),
|
|
24
28
|
});
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
deviceSchedules: z.record(z.string(), z.array(z.string())),
|
|
29
|
+
exports.sVoidMeta = zod_1.z.object({}).strict();
|
|
30
|
+
exports.sAccessRuleConflictMeta = zod_1.z.object({
|
|
31
|
+
deviceSchedules: zod_1.z.record(zod_1.z.string(), zod_1.z.array(zod_1.z.string())),
|
|
28
32
|
});
|
|
29
|
-
|
|
30
|
-
zoneId: z.string(),
|
|
31
|
-
accessRuleIds: z.array(z.string()),
|
|
33
|
+
exports.sZoneAccessRuleConflictMeta = zod_1.z.object({
|
|
34
|
+
zoneId: zod_1.z.string(),
|
|
35
|
+
accessRuleIds: zod_1.z.array(zod_1.z.string()),
|
|
32
36
|
});
|
|
33
|
-
|
|
34
|
-
token: z.string(),
|
|
35
|
-
expectedFormat: z.string(),
|
|
37
|
+
exports.sTokenInvalidFormatMeta = zod_1.z.object({
|
|
38
|
+
token: zod_1.z.string(),
|
|
39
|
+
expectedFormat: zod_1.z.string(),
|
|
36
40
|
});
|
|
37
|
-
|
|
38
|
-
limit: z.number(),
|
|
39
|
-
type: sCredentialType,
|
|
41
|
+
exports.sTokenLimitExceededMeta = zod_1.z.object({
|
|
42
|
+
limit: zod_1.z.number(),
|
|
43
|
+
type: credential_1.sCredentialType,
|
|
40
44
|
});
|
|
41
45
|
// ERROR CODES
|
|
42
|
-
|
|
46
|
+
var AppErrorCode;
|
|
43
47
|
(function (AppErrorCode) {
|
|
44
48
|
// generic
|
|
45
49
|
AppErrorCode["RESOURCE_ALREADY_EXISTS"] = "RESOURCE_ALREADY_EXISTS";
|
|
@@ -106,74 +110,74 @@ export var AppErrorCode;
|
|
|
106
110
|
AppErrorCode["VIEW_ALREADY_EXISTS"] = "VIEW_ALREADY_EXISTS";
|
|
107
111
|
// config
|
|
108
112
|
AppErrorCode["CONFIG_INVALID"] = "CONFIG_INVALID";
|
|
109
|
-
})(AppErrorCode || (AppErrorCode = {}));
|
|
110
|
-
|
|
111
|
-
[AppErrorCode.RESOURCE_ALREADY_EXISTS]: sDuplicateMeta,
|
|
112
|
-
[AppErrorCode.RESOURCE_NOT_FOUND]: sNotFoundMeta,
|
|
113
|
-
[AppErrorCode.RESOURCE_INVALID]: sInvalidMeta,
|
|
114
|
-
[AppErrorCode.RESOURCE_IN_USE]: sConflictMeta,
|
|
115
|
-
[AppErrorCode.RESOURCE_NOT_SUPPORTED]: sVoidMeta,
|
|
116
|
-
[AppErrorCode.RESOURCE_FORBIDDEN]: sVoidMeta,
|
|
117
|
-
[AppErrorCode.BAD_REFERENCE]: sVoidMeta,
|
|
113
|
+
})(AppErrorCode || (exports.AppErrorCode = AppErrorCode = {}));
|
|
114
|
+
exports.errorMetadataSchemas = {
|
|
115
|
+
[AppErrorCode.RESOURCE_ALREADY_EXISTS]: exports.sDuplicateMeta,
|
|
116
|
+
[AppErrorCode.RESOURCE_NOT_FOUND]: exports.sNotFoundMeta,
|
|
117
|
+
[AppErrorCode.RESOURCE_INVALID]: exports.sInvalidMeta,
|
|
118
|
+
[AppErrorCode.RESOURCE_IN_USE]: exports.sConflictMeta,
|
|
119
|
+
[AppErrorCode.RESOURCE_NOT_SUPPORTED]: exports.sVoidMeta,
|
|
120
|
+
[AppErrorCode.RESOURCE_FORBIDDEN]: exports.sVoidMeta,
|
|
121
|
+
[AppErrorCode.BAD_REFERENCE]: exports.sVoidMeta,
|
|
118
122
|
// access
|
|
119
|
-
[AppErrorCode.ACCESS_RULE_NOT_FOUND]: sNotFoundMeta,
|
|
120
|
-
[AppErrorCode.ACCESS_RULE_PERMISSION_CONFLICT]: sAccessRuleConflictMeta,
|
|
123
|
+
[AppErrorCode.ACCESS_RULE_NOT_FOUND]: exports.sNotFoundMeta,
|
|
124
|
+
[AppErrorCode.ACCESS_RULE_PERMISSION_CONFLICT]: exports.sAccessRuleConflictMeta,
|
|
121
125
|
// alarm
|
|
122
|
-
[AppErrorCode.ALARM_NOT_FOUND]: sNotFoundMeta,
|
|
126
|
+
[AppErrorCode.ALARM_NOT_FOUND]: exports.sNotFoundMeta,
|
|
123
127
|
// auth / user
|
|
124
|
-
[AppErrorCode.AUTH_INVALID_CREDENTIALS]: sVoidMeta,
|
|
125
|
-
[AppErrorCode.AUTH_CITADEL_MODE_ENABLED]: sVoidMeta,
|
|
126
|
-
[AppErrorCode.USER_NOT_FOUND]: sNotFoundMeta,
|
|
127
|
-
[AppErrorCode.USERNAME_ALREADY_EXISTS]: sDuplicateMeta,
|
|
128
|
-
[AppErrorCode.EMAIL_ALREADY_EXISTS]: sDuplicateMeta,
|
|
129
|
-
[AppErrorCode.CANNOT_DELETE_ROOT_USER]: sVoidMeta,
|
|
128
|
+
[AppErrorCode.AUTH_INVALID_CREDENTIALS]: exports.sVoidMeta,
|
|
129
|
+
[AppErrorCode.AUTH_CITADEL_MODE_ENABLED]: exports.sVoidMeta,
|
|
130
|
+
[AppErrorCode.USER_NOT_FOUND]: exports.sNotFoundMeta,
|
|
131
|
+
[AppErrorCode.USERNAME_ALREADY_EXISTS]: exports.sDuplicateMeta,
|
|
132
|
+
[AppErrorCode.EMAIL_ALREADY_EXISTS]: exports.sDuplicateMeta,
|
|
133
|
+
[AppErrorCode.CANNOT_DELETE_ROOT_USER]: exports.sVoidMeta,
|
|
130
134
|
// person / token
|
|
131
|
-
[AppErrorCode.PERSON_NOT_FOUND]: sNotFoundMeta,
|
|
132
|
-
[AppErrorCode.PERSON_INVALID_ID]: sInvalidMeta,
|
|
133
|
-
[AppErrorCode.TOKEN_NOT_SUPPORTED]: sVoidMeta,
|
|
134
|
-
[AppErrorCode.TOKEN_INVALID_FORMAT]: sTokenInvalidFormatMeta,
|
|
135
|
-
[AppErrorCode.TOKEN_LIMIT_EXCEEDED]: sTokenLimitExceededMeta,
|
|
136
|
-
[AppErrorCode.TOKEN_IN_USE]: sConflictMeta,
|
|
135
|
+
[AppErrorCode.PERSON_NOT_FOUND]: exports.sNotFoundMeta,
|
|
136
|
+
[AppErrorCode.PERSON_INVALID_ID]: exports.sInvalidMeta,
|
|
137
|
+
[AppErrorCode.TOKEN_NOT_SUPPORTED]: exports.sVoidMeta,
|
|
138
|
+
[AppErrorCode.TOKEN_INVALID_FORMAT]: exports.sTokenInvalidFormatMeta,
|
|
139
|
+
[AppErrorCode.TOKEN_LIMIT_EXCEEDED]: exports.sTokenLimitExceededMeta,
|
|
140
|
+
[AppErrorCode.TOKEN_IN_USE]: exports.sConflictMeta,
|
|
137
141
|
// device
|
|
138
|
-
[AppErrorCode.DEVICE_NOT_FOUND]: sNotFoundMeta,
|
|
139
|
-
[AppErrorCode.DEVICE_ALREADY_EXISTS]: sDuplicateMeta,
|
|
140
|
-
[AppErrorCode.DEVICE_INVALID_ID]: sInvalidMeta,
|
|
141
|
-
[AppErrorCode.DEVICE_INVALID_TYPE]: sInvalidMeta,
|
|
142
|
-
[AppErrorCode.DEVICE_INVALID_RELATION_TYPE]: sInvalidMeta,
|
|
143
|
-
[AppErrorCode.DEVICE_INVALID_TEMPLATE]: sInvalidMeta,
|
|
144
|
-
[AppErrorCode.DEVICE_INVALID_PROVIDER_METADATA]: sInvalidMeta,
|
|
145
|
-
[AppErrorCode.DEVICE_PRESET_ALREADY_EXISTS]: sDuplicateMeta,
|
|
146
|
-
[AppErrorCode.DEVICE_NOT_SUPPORTED]: sVoidMeta,
|
|
142
|
+
[AppErrorCode.DEVICE_NOT_FOUND]: exports.sNotFoundMeta,
|
|
143
|
+
[AppErrorCode.DEVICE_ALREADY_EXISTS]: exports.sDuplicateMeta,
|
|
144
|
+
[AppErrorCode.DEVICE_INVALID_ID]: exports.sInvalidMeta,
|
|
145
|
+
[AppErrorCode.DEVICE_INVALID_TYPE]: exports.sInvalidMeta,
|
|
146
|
+
[AppErrorCode.DEVICE_INVALID_RELATION_TYPE]: exports.sInvalidMeta,
|
|
147
|
+
[AppErrorCode.DEVICE_INVALID_TEMPLATE]: exports.sInvalidMeta,
|
|
148
|
+
[AppErrorCode.DEVICE_INVALID_PROVIDER_METADATA]: exports.sInvalidMeta,
|
|
149
|
+
[AppErrorCode.DEVICE_PRESET_ALREADY_EXISTS]: exports.sDuplicateMeta,
|
|
150
|
+
[AppErrorCode.DEVICE_NOT_SUPPORTED]: exports.sVoidMeta,
|
|
147
151
|
// group / zone / schedule
|
|
148
|
-
[AppErrorCode.GROUP_NOT_FOUND]: sNotFoundMeta,
|
|
149
|
-
[AppErrorCode.GROUP_ALREADY_EXISTS]: sDuplicateMeta,
|
|
150
|
-
[AppErrorCode.ZONE_NOT_FOUND]: sNotFoundMeta,
|
|
151
|
-
[AppErrorCode.ZONE_ALREADY_EXISTS]: sDuplicateMeta,
|
|
152
|
-
[AppErrorCode.ZONE_IN_USE]: sConflictMeta,
|
|
153
|
-
[AppErrorCode.ZONE_ACCESS_RULE_CONFLICT]: sZoneAccessRuleConflictMeta,
|
|
154
|
-
[AppErrorCode.SCHEDULE_NOT_FOUND]: sNotFoundMeta,
|
|
155
|
-
[AppErrorCode.SCHEDULE_ALREADY_EXISTS]: sDuplicateMeta,
|
|
156
|
-
[AppErrorCode.SCHEDULE_IN_USE]: sConflictMeta,
|
|
152
|
+
[AppErrorCode.GROUP_NOT_FOUND]: exports.sNotFoundMeta,
|
|
153
|
+
[AppErrorCode.GROUP_ALREADY_EXISTS]: exports.sDuplicateMeta,
|
|
154
|
+
[AppErrorCode.ZONE_NOT_FOUND]: exports.sNotFoundMeta,
|
|
155
|
+
[AppErrorCode.ZONE_ALREADY_EXISTS]: exports.sDuplicateMeta,
|
|
156
|
+
[AppErrorCode.ZONE_IN_USE]: exports.sConflictMeta,
|
|
157
|
+
[AppErrorCode.ZONE_ACCESS_RULE_CONFLICT]: exports.sZoneAccessRuleConflictMeta,
|
|
158
|
+
[AppErrorCode.SCHEDULE_NOT_FOUND]: exports.sNotFoundMeta,
|
|
159
|
+
[AppErrorCode.SCHEDULE_ALREADY_EXISTS]: exports.sDuplicateMeta,
|
|
160
|
+
[AppErrorCode.SCHEDULE_IN_USE]: exports.sConflictMeta,
|
|
157
161
|
// permission / role
|
|
158
|
-
[AppErrorCode.PERMISSION_ALREADY_EXISTS]: sDuplicateMeta,
|
|
159
|
-
[AppErrorCode.ROLE_ALREADY_EXISTS]: sDuplicateMeta,
|
|
160
|
-
[AppErrorCode.ADMIN_ROLE_CANNOT_UPDATE]: sVoidMeta,
|
|
161
|
-
[AppErrorCode.ADMIN_ROLE_CANNOT_DELETE]: sVoidMeta,
|
|
162
|
+
[AppErrorCode.PERMISSION_ALREADY_EXISTS]: exports.sDuplicateMeta,
|
|
163
|
+
[AppErrorCode.ROLE_ALREADY_EXISTS]: exports.sDuplicateMeta,
|
|
164
|
+
[AppErrorCode.ADMIN_ROLE_CANNOT_UPDATE]: exports.sVoidMeta,
|
|
165
|
+
[AppErrorCode.ADMIN_ROLE_CANNOT_DELETE]: exports.sVoidMeta,
|
|
162
166
|
// automation / rules
|
|
163
|
-
[AppErrorCode.RULE_ALREADY_EXISTS]: sDuplicateMeta,
|
|
164
|
-
[AppErrorCode.RULE_INVALID_BODY]: sInvalidMeta,
|
|
165
|
-
[AppErrorCode.RULE_MISSING_CODE]: sVoidMeta,
|
|
167
|
+
[AppErrorCode.RULE_ALREADY_EXISTS]: exports.sDuplicateMeta,
|
|
168
|
+
[AppErrorCode.RULE_INVALID_BODY]: exports.sInvalidMeta,
|
|
169
|
+
[AppErrorCode.RULE_MISSING_CODE]: exports.sVoidMeta,
|
|
166
170
|
// layout / view
|
|
167
|
-
[AppErrorCode.LAYOUT_ALREADY_EXISTS]: sDuplicateMeta,
|
|
168
|
-
[AppErrorCode.VIEW_ALREADY_EXISTS]: sDuplicateMeta,
|
|
171
|
+
[AppErrorCode.LAYOUT_ALREADY_EXISTS]: exports.sDuplicateMeta,
|
|
172
|
+
[AppErrorCode.VIEW_ALREADY_EXISTS]: exports.sDuplicateMeta,
|
|
169
173
|
// config
|
|
170
|
-
[AppErrorCode.CONFIG_INVALID]: sInvalidMeta,
|
|
171
|
-
[AppErrorCode.UNKNOWN]: sVoidMeta,
|
|
172
|
-
[AppErrorCode.SERVER_INTERNAL_ERROR]: sVoidMeta,
|
|
173
|
-
[AppErrorCode.UNAUTHORIZED]: sVoidMeta,
|
|
174
|
-
[AppErrorCode.BAD_REQUEST]: sVoidMeta,
|
|
174
|
+
[AppErrorCode.CONFIG_INVALID]: exports.sInvalidMeta,
|
|
175
|
+
[AppErrorCode.UNKNOWN]: exports.sVoidMeta,
|
|
176
|
+
[AppErrorCode.SERVER_INTERNAL_ERROR]: exports.sVoidMeta,
|
|
177
|
+
[AppErrorCode.UNAUTHORIZED]: exports.sVoidMeta,
|
|
178
|
+
[AppErrorCode.BAD_REQUEST]: exports.sVoidMeta,
|
|
175
179
|
};
|
|
176
|
-
|
|
180
|
+
function isErrorResponse(err) {
|
|
177
181
|
return (!!err &&
|
|
178
182
|
typeof err === 'object' &&
|
|
179
183
|
'code' in err &&
|
package/dist/api/events/alarm.js
CHANGED
|
@@ -1,52 +1,55 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.alarmEventSchemasByKind = exports.sAlarmRearmedEvent = exports.sAlarmArmReleasedEvent = exports.sAlarmDisarmedEvent = exports.sAlarmArmedEvent = exports.sAlarmDisarmedAllEvent = exports.sAlarmArmedAllEvent = exports.sAlarmAcknowledgedEvent = exports.sAlarmTriggeredEvent = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
2
5
|
// EVENTS
|
|
3
|
-
|
|
4
|
-
kind: z.literal('alarm-triggered'),
|
|
5
|
-
alarmId: z.string().nonempty(),
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
kind: z.literal('alarm-acknowledged'),
|
|
9
|
-
alarmId: z.string().nonempty(),
|
|
10
|
-
userId: z.string().optional(),
|
|
11
|
-
personId: z.string().optional(),
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
kind: z.literal('alarm-armed-all'),
|
|
15
|
-
userId: z.string().optional(),
|
|
16
|
-
personId: z.string().optional(),
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
kind: z.literal('alarm-disarmed-all'),
|
|
20
|
-
userId: z.string().optional(),
|
|
21
|
-
personId: z.string().optional(),
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
kind: z.literal('alarm-armed'),
|
|
25
|
-
subjects: z.array(z.string().nonempty()),
|
|
26
|
-
userId: z.string().optional(),
|
|
27
|
-
personId: z.string().optional(),
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
kind: z.literal('alarm-disarmed'),
|
|
31
|
-
subjects: z.array(z.string().nonempty()),
|
|
32
|
-
userId: z.string().optional(),
|
|
33
|
-
personId: z.string().optional(),
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
kind: z.literal('alarm-arm-released'),
|
|
37
|
-
userId: z.string().optional(),
|
|
38
|
-
personId: z.string().optional(),
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
kind: z.literal('alarm-rearmed'),
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
'alarm-triggered': sAlarmTriggeredEvent,
|
|
45
|
-
'alarm-acknowledged': sAlarmAcknowledgedEvent,
|
|
46
|
-
'alarm-armed-all': sAlarmArmedAllEvent,
|
|
47
|
-
'alarm-disarmed-all': sAlarmDisarmedAllEvent,
|
|
48
|
-
'alarm-armed': sAlarmArmedEvent,
|
|
49
|
-
'alarm-disarmed': sAlarmDisarmedEvent,
|
|
50
|
-
'alarm-arm-released': sAlarmArmReleasedEvent,
|
|
51
|
-
'alarm-rearmed': sAlarmRearmedEvent,
|
|
6
|
+
exports.sAlarmTriggeredEvent = zod_1.z.object({
|
|
7
|
+
kind: zod_1.z.literal('alarm-triggered'),
|
|
8
|
+
alarmId: zod_1.z.string().nonempty(),
|
|
9
|
+
});
|
|
10
|
+
exports.sAlarmAcknowledgedEvent = zod_1.z.object({
|
|
11
|
+
kind: zod_1.z.literal('alarm-acknowledged'),
|
|
12
|
+
alarmId: zod_1.z.string().nonempty(),
|
|
13
|
+
userId: zod_1.z.string().optional(),
|
|
14
|
+
personId: zod_1.z.string().optional(),
|
|
15
|
+
});
|
|
16
|
+
exports.sAlarmArmedAllEvent = zod_1.z.object({
|
|
17
|
+
kind: zod_1.z.literal('alarm-armed-all'),
|
|
18
|
+
userId: zod_1.z.string().optional(),
|
|
19
|
+
personId: zod_1.z.string().optional(),
|
|
20
|
+
});
|
|
21
|
+
exports.sAlarmDisarmedAllEvent = zod_1.z.object({
|
|
22
|
+
kind: zod_1.z.literal('alarm-disarmed-all'),
|
|
23
|
+
userId: zod_1.z.string().optional(),
|
|
24
|
+
personId: zod_1.z.string().optional(),
|
|
25
|
+
});
|
|
26
|
+
exports.sAlarmArmedEvent = zod_1.z.object({
|
|
27
|
+
kind: zod_1.z.literal('alarm-armed'),
|
|
28
|
+
subjects: zod_1.z.array(zod_1.z.string().nonempty()),
|
|
29
|
+
userId: zod_1.z.string().optional(),
|
|
30
|
+
personId: zod_1.z.string().optional(),
|
|
31
|
+
});
|
|
32
|
+
exports.sAlarmDisarmedEvent = zod_1.z.object({
|
|
33
|
+
kind: zod_1.z.literal('alarm-disarmed'),
|
|
34
|
+
subjects: zod_1.z.array(zod_1.z.string().nonempty()),
|
|
35
|
+
userId: zod_1.z.string().optional(),
|
|
36
|
+
personId: zod_1.z.string().optional(),
|
|
37
|
+
});
|
|
38
|
+
exports.sAlarmArmReleasedEvent = zod_1.z.object({
|
|
39
|
+
kind: zod_1.z.literal('alarm-arm-released'),
|
|
40
|
+
userId: zod_1.z.string().optional(),
|
|
41
|
+
personId: zod_1.z.string().optional(),
|
|
42
|
+
});
|
|
43
|
+
exports.sAlarmRearmedEvent = zod_1.z.object({
|
|
44
|
+
kind: zod_1.z.literal('alarm-rearmed'),
|
|
45
|
+
});
|
|
46
|
+
exports.alarmEventSchemasByKind = {
|
|
47
|
+
'alarm-triggered': exports.sAlarmTriggeredEvent,
|
|
48
|
+
'alarm-acknowledged': exports.sAlarmAcknowledgedEvent,
|
|
49
|
+
'alarm-armed-all': exports.sAlarmArmedAllEvent,
|
|
50
|
+
'alarm-disarmed-all': exports.sAlarmDisarmedAllEvent,
|
|
51
|
+
'alarm-armed': exports.sAlarmArmedEvent,
|
|
52
|
+
'alarm-disarmed': exports.sAlarmDisarmedEvent,
|
|
53
|
+
'alarm-arm-released': exports.sAlarmArmReleasedEvent,
|
|
54
|
+
'alarm-rearmed': exports.sAlarmRearmedEvent,
|
|
52
55
|
};
|
package/dist/api/events/all.js
CHANGED
|
@@ -1,37 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isDeviceEvent = exports.eventsByDeviceType = exports.eventSchemaByKind = exports.eventKindLabels = exports.sEventHeader = exports.sDeviceDisconnectedEvent = exports.sDeviceConnectedEvent = exports.sMotionDetected = exports.sDeviceCommandTriggered = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const alarm_1 = require("./alarm");
|
|
6
|
+
const camera_1 = require("./camera");
|
|
7
|
+
const door_1 = require("./door");
|
|
8
|
+
const intercom_terminal_1 = require("./intercom-terminal");
|
|
9
|
+
const io_board_1 = require("./io-board");
|
|
10
|
+
const panic_button_1 = require("./panic-button");
|
|
11
|
+
const presence_tracker_1 = require("./presence-tracker");
|
|
12
|
+
const reader_1 = require("./reader");
|
|
13
|
+
const nvr_exporter_1 = require("./nvr-exporter");
|
|
14
|
+
exports.sDeviceCommandTriggered = zod_1.z.object({
|
|
15
|
+
kind: zod_1.z.literal('device-command'),
|
|
16
|
+
userId: zod_1.z.string().nonempty().optional(),
|
|
17
|
+
command: zod_1.z.string().nonempty(),
|
|
18
|
+
args: zod_1.z.record(zod_1.z.unknown()),
|
|
16
19
|
});
|
|
17
|
-
|
|
18
|
-
kind: z.literal('motion-detected'),
|
|
20
|
+
exports.sMotionDetected = zod_1.z.object({
|
|
21
|
+
kind: zod_1.z.literal('motion-detected'),
|
|
19
22
|
});
|
|
20
|
-
|
|
21
|
-
kind: z.literal('device-connected'),
|
|
22
|
-
clientId: z.number().int().positive().optional(),
|
|
23
|
+
exports.sDeviceConnectedEvent = zod_1.z.object({
|
|
24
|
+
kind: zod_1.z.literal('device-connected'),
|
|
25
|
+
clientId: zod_1.z.number().int().positive().optional(),
|
|
23
26
|
});
|
|
24
|
-
|
|
25
|
-
kind: z.literal('device-disconnected'),
|
|
26
|
-
clientId: z.number().int().positive().optional(),
|
|
27
|
+
exports.sDeviceDisconnectedEvent = zod_1.z.object({
|
|
28
|
+
kind: zod_1.z.literal('device-disconnected'),
|
|
29
|
+
clientId: zod_1.z.number().int().positive().optional(),
|
|
27
30
|
});
|
|
28
|
-
|
|
29
|
-
id: z.string().nonempty(),
|
|
30
|
-
timestamp: z.number().int().positive(),
|
|
31
|
-
deviceId: z.string().nonempty(),
|
|
32
|
-
observedBy: z.string().optional(),
|
|
31
|
+
exports.sEventHeader = zod_1.z.object({
|
|
32
|
+
id: zod_1.z.string().nonempty(),
|
|
33
|
+
timestamp: zod_1.z.number().int().positive(),
|
|
34
|
+
deviceId: zod_1.z.string().nonempty(),
|
|
35
|
+
observedBy: zod_1.z.string().optional(),
|
|
33
36
|
});
|
|
34
|
-
|
|
37
|
+
exports.eventKindLabels = {
|
|
35
38
|
'door-access': 'Door Access',
|
|
36
39
|
'door-force': 'Force-Opened',
|
|
37
40
|
'door-tamper': 'Tampered',
|
|
@@ -79,42 +82,42 @@ export const eventKindLabels = {
|
|
|
79
82
|
'notification-created': 'Notification Created',
|
|
80
83
|
'notification-acknowledged': 'Notification Acknowledged',
|
|
81
84
|
};
|
|
82
|
-
|
|
83
|
-
...alarmEventSchemasByKind,
|
|
84
|
-
...cameraEventSchemasByKind,
|
|
85
|
-
...doorEventSchemaByKind,
|
|
86
|
-
...intercomTerminalEventSchemaByKind,
|
|
87
|
-
...ioBoardEventSchemaByKind,
|
|
88
|
-
...panicButtonEventSchemaByKind,
|
|
89
|
-
...presenceTrackerEventSchemaByKind,
|
|
90
|
-
...readerEventSchemaByKind,
|
|
91
|
-
...nvrExporterEventSchemasByKind,
|
|
92
|
-
'motion-detected': sMotionDetected,
|
|
93
|
-
'device-command': sDeviceCommandTriggered,
|
|
94
|
-
'device-connected': sDeviceConnectedEvent,
|
|
95
|
-
'device-disconnected': sDeviceDisconnectedEvent,
|
|
85
|
+
exports.eventSchemaByKind = {
|
|
86
|
+
...alarm_1.alarmEventSchemasByKind,
|
|
87
|
+
...camera_1.cameraEventSchemasByKind,
|
|
88
|
+
...door_1.doorEventSchemaByKind,
|
|
89
|
+
...intercom_terminal_1.intercomTerminalEventSchemaByKind,
|
|
90
|
+
...io_board_1.ioBoardEventSchemaByKind,
|
|
91
|
+
...panic_button_1.panicButtonEventSchemaByKind,
|
|
92
|
+
...presence_tracker_1.presenceTrackerEventSchemaByKind,
|
|
93
|
+
...reader_1.readerEventSchemaByKind,
|
|
94
|
+
...nvr_exporter_1.nvrExporterEventSchemasByKind,
|
|
95
|
+
'motion-detected': exports.sMotionDetected,
|
|
96
|
+
'device-command': exports.sDeviceCommandTriggered,
|
|
97
|
+
'device-connected': exports.sDeviceConnectedEvent,
|
|
98
|
+
'device-disconnected': exports.sDeviceDisconnectedEvent,
|
|
96
99
|
};
|
|
97
|
-
|
|
100
|
+
exports.eventsByDeviceType = {
|
|
98
101
|
camera: [
|
|
99
|
-
...Object.keys(cameraEventSchemasByKind),
|
|
102
|
+
...Object.keys(camera_1.cameraEventSchemasByKind),
|
|
100
103
|
'motion-detected',
|
|
101
104
|
],
|
|
102
|
-
door: Object.keys(doorEventSchemaByKind),
|
|
103
|
-
'io-board': Object.keys(ioBoardEventSchemaByKind),
|
|
104
|
-
'panic-button': Object.keys(panicButtonEventSchemaByKind),
|
|
105
|
-
'presence-tracker': Object.keys(presenceTrackerEventSchemaByKind),
|
|
106
|
-
reader: Object.keys(readerEventSchemaByKind),
|
|
105
|
+
door: Object.keys(door_1.doorEventSchemaByKind),
|
|
106
|
+
'io-board': Object.keys(io_board_1.ioBoardEventSchemaByKind),
|
|
107
|
+
'panic-button': Object.keys(panic_button_1.panicButtonEventSchemaByKind),
|
|
108
|
+
'presence-tracker': Object.keys(presence_tracker_1.presenceTrackerEventSchemaByKind),
|
|
109
|
+
reader: Object.keys(reader_1.readerEventSchemaByKind),
|
|
107
110
|
'motion-sensor': ['motion-detected'],
|
|
108
|
-
'nvr-exporter': Object.keys(nvrExporterEventSchemasByKind),
|
|
111
|
+
'nvr-exporter': Object.keys(nvr_exporter_1.nvrExporterEventSchemasByKind),
|
|
109
112
|
};
|
|
110
|
-
|
|
113
|
+
const isDeviceEvent = (event) => {
|
|
111
114
|
if (typeof event !== 'object' || event === null)
|
|
112
115
|
return false;
|
|
113
116
|
if (!('kind' in event))
|
|
114
117
|
return false;
|
|
115
118
|
if (typeof event.kind !== 'string')
|
|
116
119
|
return false;
|
|
117
|
-
const schema = eventSchemaByKind[event.kind];
|
|
120
|
+
const schema = exports.eventSchemaByKind[event.kind];
|
|
118
121
|
if (!schema)
|
|
119
122
|
return false;
|
|
120
123
|
const result = schema.safeParse(event);
|
|
@@ -122,3 +125,4 @@ export const isDeviceEvent = (event) => {
|
|
|
122
125
|
return false;
|
|
123
126
|
return true;
|
|
124
127
|
};
|
|
128
|
+
exports.isDeviceEvent = isDeviceEvent;
|