@7365admin1/core 3.32.2-staging.63 → 3.32.2-staging.64
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/.changeset/camera-integration-layer.md +60 -0
- package/dist/index.d.ts +321 -49
- package/dist/index.js +1876 -723
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1857 -723
- package/dist/index.mjs.map +1 -1
- package/docs/camera-integration-config.md +169 -0
- package/package.json +2 -2
- package/test/camera-capability.util.test.mjs +545 -0
- package/test/camera-device-http.test.mjs +792 -0
- package/test/camera-view.util.test.mjs +25 -5
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
"@7365admin1/core": minor
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Camera integration layer: a capability descriptor, a transport registry, and the
|
|
6
|
+
Dahua device HTTP adapter (written, tested, switched off).
|
|
7
|
+
|
|
8
|
+
Every camera in the wall and status responses now carries a `capabilities`
|
|
9
|
+
descriptor: `liveVideo`, `stillFrame`, `digitalZoom`, `ptz`, `presets`,
|
|
10
|
+
`playback`, `events`, `audio`, `deviceInfo`, each `supported` / `unsupported` /
|
|
11
|
+
`unknown` with a machine-readable reason code and one sentence. A client renders
|
|
12
|
+
itself from it without knowing anything about relays, recorders or networks.
|
|
13
|
+
`unknown` is distinct on purpose: "we have not been allowed to ask" is not the
|
|
14
|
+
same fact as "this camera cannot".
|
|
15
|
+
|
|
16
|
+
Capabilities resolve through a transport registry instead of the service picking
|
|
17
|
+
a path. `RELAY_PLAYER` is the stored player-page URL rendered in a WebView (the
|
|
18
|
+
live product's picture path, live video only, no control channel). `RTSP_FRAME`
|
|
19
|
+
is one ffmpeg still off the recorder. `DEVICE_HTTP` is the camera's own CGI API.
|
|
20
|
+
Registration order is preference order, so one camera serves live video over the
|
|
21
|
+
relay and evidence stills over RTSP at the same time, and adding a transport
|
|
22
|
+
later needs no service change.
|
|
23
|
+
|
|
24
|
+
`DEVICE_HTTP` covers device info/version, snapshot, PTZ (continuous, absolute,
|
|
25
|
+
stop), presets (list and recall), recorded-file query with playback URL
|
|
26
|
+
construction, and event subscription - digest auth only, values percent-encoded,
|
|
27
|
+
403 treated as bad credentials and 401 as an ordinary challenge. It contacts
|
|
28
|
+
nothing today: the recorder in this estate answers on RTSP only. Enabling it is
|
|
29
|
+
configuration, not a code change.
|
|
30
|
+
|
|
31
|
+
A shared, persistent authentication failure budget is mandatory on that path. The
|
|
32
|
+
device locks an account for 1800 s after 3 failed logins in 30 s, so failures are
|
|
33
|
+
counted per device in the cache, the budget stops at 2, and once spent no request
|
|
34
|
+
leaves the process. Nothing retries anywhere.
|
|
35
|
+
|
|
36
|
+
Mutating operations are structurally unreachable while disabled: the adapter is
|
|
37
|
+
`null` without `CAMERA_DEVICE_HTTP_ENABLED`, and its `control` object is `null`
|
|
38
|
+
without `CAMERA_DEVICE_CONTROL_ENABLED`. Movement codes are an allow-list;
|
|
39
|
+
`SetPreset`, `ClearPreset`, tours, patterns, `configManager` writes and reboot are
|
|
40
|
+
absent.
|
|
41
|
+
|
|
42
|
+
Capability probing is read-only, cached, budget-aware, never throws, and happens
|
|
43
|
+
only on a deliberate single-camera status request - never as a side effect of a
|
|
44
|
+
list.
|
|
45
|
+
|
|
46
|
+
`host` is now returned for `type: "ip"` cameras on the wall response. It is the
|
|
47
|
+
video relay's player-page URL, not a device address and not a credential, and
|
|
48
|
+
`GET /site-cameras` already returns it to every authenticated caller. `anpr`
|
|
49
|
+
records, whose `host` is a real device endpoint, are excluded by the allow-list
|
|
50
|
+
itself.
|
|
51
|
+
|
|
52
|
+
New configuration, all optional and all off by default: `CAMERA_DEVICE_HTTP`
|
|
53
|
+
(JSON keyed by relay authority, credential referenced by environment variable
|
|
54
|
+
name), `CAMERA_DEVICE_HTTP_ENABLED`, `CAMERA_DEVICE_CONTROL_ENABLED`,
|
|
55
|
+
`CAMERA_DEVICE_HTTP_TIMEOUT_MS` (8000),
|
|
56
|
+
`CAMERA_DEVICE_HTTP_PROBE_TTL_SECONDS` (900). See
|
|
57
|
+
`docs/camera-integration-config.md`.
|
|
58
|
+
|
|
59
|
+
Existing responses keep every field they had, with the same wording, so current
|
|
60
|
+
consumers are unaffected.
|
package/dist/index.d.ts
CHANGED
|
@@ -2867,18 +2867,31 @@ declare const CAMERA_SNAPSHOT_CACHE_SECONDS = 2;
|
|
|
2867
2867
|
/**
|
|
2868
2868
|
* Fields of a camera record that may cross the wire.
|
|
2869
2869
|
*
|
|
2870
|
-
*
|
|
2870
|
+
* Still an allow-list, not a delete-list: `username` and `password` must never
|
|
2871
2871
|
* reach a client or a log, and a future field added to the model must be opted
|
|
2872
2872
|
* IN rather than remembered about.
|
|
2873
|
+
*
|
|
2874
|
+
* ## Why `host` is now in it, for `ip` cameras only
|
|
2875
|
+
*
|
|
2876
|
+
* For a `type: "ip"` camera the stored `host` is **not** a device address and
|
|
2877
|
+
* **not** a credential — it is the video relay's own player-page URL, and
|
|
2878
|
+
* putting it in a WebView is how the live security app has shown motion video
|
|
2879
|
+
* for months (traced end to end, 2026-08-10). Stripping it here is what stops a
|
|
2880
|
+
* client from rendering the one path that demonstrably works.
|
|
2881
|
+
*
|
|
2882
|
+
* **It is not a new disclosure.** `GET /site-cameras` already returns `host` to
|
|
2883
|
+
* every authenticated caller — `site-camera.repo.ts` projects `{ password: 0 }`
|
|
2884
|
+
* and nothing else — which is exactly where the legacy app reads it from. This
|
|
2885
|
+
* makes the wall consistent with the endpoint next to it rather than widening
|
|
2886
|
+
* anything.
|
|
2887
|
+
*
|
|
2888
|
+
* **`anpr` is excluded and that is the whole reason this is conditional.** An
|
|
2889
|
+
* ANPR record's `host` IS a real device endpoint, on a unit that also has a real
|
|
2890
|
+
* `username` beside it, so handing one to a client would be a genuine leak. No
|
|
2891
|
+
* patrol or CCTV path ever loads an ANPR record — but the allow-list must hold
|
|
2892
|
+
* on its own, not because of a filter somewhere else.
|
|
2873
2893
|
*/
|
|
2874
|
-
declare function publicCameraFields(camera: Record<string, any>):
|
|
2875
|
-
_id: any;
|
|
2876
|
-
name: any;
|
|
2877
|
-
type: any;
|
|
2878
|
-
status: any;
|
|
2879
|
-
guardPost: any;
|
|
2880
|
-
siteName: any;
|
|
2881
|
-
};
|
|
2894
|
+
declare function publicCameraFields(camera: Record<string, any>): Record<string, any>;
|
|
2882
2895
|
/**
|
|
2883
2896
|
* Tuning for a multi-camera wall, read from the environment.
|
|
2884
2897
|
*
|
|
@@ -2919,6 +2932,290 @@ declare function wallConfig(env?: Record<string, string | undefined>): {
|
|
|
2919
2932
|
*/
|
|
2920
2933
|
declare function mapWithLimit<T, R>(items: Array<T>, limit: number, worker: (item: T) => Promise<R>): Promise<Array<R>>;
|
|
2921
2934
|
|
|
2935
|
+
/**
|
|
2936
|
+
* What a camera can actually do RIGHT NOW, and which transport would do it.
|
|
2937
|
+
*
|
|
2938
|
+
* ## Why this file exists
|
|
2939
|
+
*
|
|
2940
|
+
* The estate has three different ways to reach a camera and they do not overlap:
|
|
2941
|
+
*
|
|
2942
|
+
* | Transport | What it carries | Proven today? |
|
|
2943
|
+
* |---|---|---|
|
|
2944
|
+
* | `RELAY_PLAYER` | the stored player-page URL, rendered in a WebView — one-way MPEG1 over a WebSocket | **YES** — this is how the live product has shown CCTV for months |
|
|
2945
|
+
* | `RTSP_FRAME` | one `ffmpeg` still off the recorder's RTSP stream | **YES** — measured against the live recorder, 2026-08-10 |
|
|
2946
|
+
* | `DEVICE_HTTP` | the camera's own CGI API — PTZ, presets, recordings, events, device info | **NO** — written, disabled, and unreachable from our hosts today (80/443/37777 time out; only 554 answers) |
|
|
2947
|
+
*
|
|
2948
|
+
* A client cannot be expected to know any of that. So the server computes it,
|
|
2949
|
+
* per camera, per capability, and hands back a descriptor the UI renders itself
|
|
2950
|
+
* from — with a machine-readable reason whenever the answer is no. **That
|
|
2951
|
+
* descriptor is the contract that lets a capability light up later by
|
|
2952
|
+
* configuration instead of by a code change.**
|
|
2953
|
+
*
|
|
2954
|
+
* ## Three states, never two
|
|
2955
|
+
*
|
|
2956
|
+
* `supported` / `unsupported` / `unknown`. `unknown` is load-bearing: a camera
|
|
2957
|
+
* whose control interface we have never been allowed to ask is NOT the same as a
|
|
2958
|
+
* camera that has told us it cannot pan. Collapsing the two is how a UI ends up
|
|
2959
|
+
* hiding a feature that works, or offering one that does not.
|
|
2960
|
+
*
|
|
2961
|
+
* Nothing in this file performs I/O, so the whole rule set is assertable in a
|
|
2962
|
+
* test without a camera, a recorder, a network or a database.
|
|
2963
|
+
*
|
|
2964
|
+
* Section references are to Dahua HTTP API V3.37.
|
|
2965
|
+
*/
|
|
2966
|
+
|
|
2967
|
+
/**
|
|
2968
|
+
* Every capability the UI may ask about.
|
|
2969
|
+
*
|
|
2970
|
+
* A fixed list rather than an open string, because a client that renders itself
|
|
2971
|
+
* from this descriptor has to be able to exhaust it. Adding one is a deliberate
|
|
2972
|
+
* change here plus a transport that declares it.
|
|
2973
|
+
*/
|
|
2974
|
+
declare const CAMERA_CAPABILITIES: readonly ["liveVideo", "stillFrame", "digitalZoom", "ptz", "presets", "playback", "events", "audio", "deviceInfo"];
|
|
2975
|
+
type CameraCapability = (typeof CAMERA_CAPABILITIES)[number];
|
|
2976
|
+
type CameraCapabilityState = "supported" | "unsupported" | "unknown";
|
|
2977
|
+
/** Transport ids. Strings, not an enum, so a new one can be registered. */
|
|
2978
|
+
declare const TRANSPORT_RELAY_PLAYER = "RELAY_PLAYER";
|
|
2979
|
+
declare const TRANSPORT_RTSP_FRAME = "RTSP_FRAME";
|
|
2980
|
+
declare const TRANSPORT_DEVICE_HTTP = "DEVICE_HTTP";
|
|
2981
|
+
/**
|
|
2982
|
+
* Machine-readable reasons, each with the one sentence a UI may show.
|
|
2983
|
+
*
|
|
2984
|
+
* The CODE is the contract — a client switches on it and never parses prose.
|
|
2985
|
+
* The sentence is here so that a client which has nothing better to show has
|
|
2986
|
+
* something honest to show, and so the same wording cannot drift between two
|
|
2987
|
+
* screens.
|
|
2988
|
+
*
|
|
2989
|
+
* Four of these are worded identically to `camera-view.util`'s refusal
|
|
2990
|
+
* sentences, on purpose: the mobile app already displays those strings, and a
|
|
2991
|
+
* camera must not explain itself two different ways depending on which field
|
|
2992
|
+
* was read. A test pins them equal.
|
|
2993
|
+
*/
|
|
2994
|
+
declare const CAMERA_CAPABILITY_REASONS: {
|
|
2995
|
+
readonly "not-patrol-cctv-camera": "This is an ANPR unit. ANPR belongs to visitor and vehicle management; Virtual Patrol and CCTV use IP cameras only.";
|
|
2996
|
+
readonly "camera-inactive": "This camera is not active.";
|
|
2997
|
+
readonly "no-address": "This camera has no address configured.";
|
|
2998
|
+
readonly "invalid-address": "This camera's address is not a valid address.";
|
|
2999
|
+
readonly "not-a-relay-player-url": "This camera's address is not a live-video page address.";
|
|
3000
|
+
readonly "no-recorder-configured": "No recorder is configured for this camera's relay.";
|
|
3001
|
+
readonly "no-channel-in-address": "This camera's address has no channel, so we cannot tell which stream it is.";
|
|
3002
|
+
readonly "device-http-not-configured": "No direct connection to this camera's recorder is configured on this server.";
|
|
3003
|
+
readonly "device-http-disabled": "Direct camera access is switched off on this server.";
|
|
3004
|
+
readonly "device-http-unreachable": "The camera's own control interface did not answer.";
|
|
3005
|
+
readonly "device-http-locked-out": "Too many rejected sign-ins: further attempts are being held back so the recorder's account is not locked.";
|
|
3006
|
+
readonly "device-not-probed": "This camera has not been asked what it can do yet.";
|
|
3007
|
+
readonly "device-no-ptz": "This camera does not move.";
|
|
3008
|
+
readonly "control-not-enabled": "Camera control is switched off on this server.";
|
|
3009
|
+
readonly "no-transport": "Nothing on this server can do that yet.";
|
|
3010
|
+
};
|
|
3011
|
+
type CameraCapabilityReason = keyof typeof CAMERA_CAPABILITY_REASONS;
|
|
3012
|
+
/** One capability's answer. `transport` is `null` whenever nothing can serve it. */
|
|
3013
|
+
type CameraCapabilityEntry = {
|
|
3014
|
+
state: CameraCapabilityState;
|
|
3015
|
+
transport: string | null;
|
|
3016
|
+
reason: CameraCapabilityReason | null;
|
|
3017
|
+
/** The sentence for `reason`, so a client never has to hold the table. */
|
|
3018
|
+
detail: string | null;
|
|
3019
|
+
};
|
|
3020
|
+
type CameraCapabilityDescriptor = Record<CameraCapability, CameraCapabilityEntry>;
|
|
3021
|
+
/**
|
|
3022
|
+
* A recorder's own HTTP interface, resolved from configuration.
|
|
3023
|
+
*
|
|
3024
|
+
* **Keyed by the same relay authority as `CAMERA_RTSP_DEVICES`**, because that
|
|
3025
|
+
* is the only stable identifier a camera record carries (`site.cameras.host` is
|
|
3026
|
+
* the relay's player page; its authority names the deployment and its last path
|
|
3027
|
+
* segment is the channel — see `camera-view.util`).
|
|
3028
|
+
*
|
|
3029
|
+
* The credential is **referenced, never embedded**: `credentialRef` names an
|
|
3030
|
+
* environment variable holding `username:password`. So the configuration that
|
|
3031
|
+
* enables device access can be reviewed, diffed and pasted into a PR
|
|
3032
|
+
* description without carrying a secret, and the secret itself lives where
|
|
3033
|
+
* every other secret on the host lives.
|
|
3034
|
+
*/
|
|
3035
|
+
type DeviceHttpTarget = {
|
|
3036
|
+
authority: string;
|
|
3037
|
+
/** Origin only — scheme, host, optional port. No path, no query. */
|
|
3038
|
+
baseUrl: string;
|
|
3039
|
+
username: string;
|
|
3040
|
+
password: string;
|
|
3041
|
+
/** `CAMERA_DEVICE_HTTP_ENABLED`. Nothing contacts a device while this is off. */
|
|
3042
|
+
enabled: boolean;
|
|
3043
|
+
/** `CAMERA_DEVICE_CONTROL_ENABLED`. Mutating operations only. */
|
|
3044
|
+
controlEnabled: boolean;
|
|
3045
|
+
timeoutMs: number;
|
|
3046
|
+
probeTtlSeconds: number;
|
|
3047
|
+
};
|
|
3048
|
+
type Env = Record<string, string | undefined>;
|
|
3049
|
+
/** Both flags are opt-IN. An unset or misspelt value is OFF, never on. */
|
|
3050
|
+
declare function deviceHttpEnabled(source?: Env): boolean;
|
|
3051
|
+
/**
|
|
3052
|
+
* The mutating switch, and it is deliberately separate from the one above.
|
|
3053
|
+
*
|
|
3054
|
+
* Reading a device (version, snapshot, recording list, events) and moving a
|
|
3055
|
+
* device (PTZ, preset recall) are different decisions with different blast
|
|
3056
|
+
* radii, so they are different variables. Turning reads on must not arm motors.
|
|
3057
|
+
*
|
|
3058
|
+
* It also cannot be on by itself: control requires device access as well.
|
|
3059
|
+
*/
|
|
3060
|
+
declare function deviceControlEnabled(source?: Env): boolean;
|
|
3061
|
+
declare function deviceHttpTimeoutMs(source?: Env): number;
|
|
3062
|
+
/**
|
|
3063
|
+
* How long a capability probe is trusted for.
|
|
3064
|
+
*
|
|
3065
|
+
* Long by the standards of this file — 15 minutes — because what it answers
|
|
3066
|
+
* ("is this a PTZ unit, what firmware, does it answer at all") changes when an
|
|
3067
|
+
* installer visits, not when a guard looks at a screen. A short TTL here buys
|
|
3068
|
+
* nothing and spends requests against a device with a 3-failures lockout.
|
|
3069
|
+
*/
|
|
3070
|
+
declare function deviceProbeTtlSeconds(source?: Env): number;
|
|
3071
|
+
/**
|
|
3072
|
+
* `CAMERA_DEVICE_HTTP` — a JSON object keyed by relay authority:
|
|
3073
|
+
*
|
|
3074
|
+
* ```
|
|
3075
|
+
* {"<relay-authority>":{"baseUrl":"https://<recorder-host>:443",
|
|
3076
|
+
* "credentialRef":"CAMERA_DEVICE_CRED_MAIN"}}
|
|
3077
|
+
* ```
|
|
3078
|
+
*
|
|
3079
|
+
* …plus `CAMERA_DEVICE_CRED_MAIN=<user>:<password>` set separately.
|
|
3080
|
+
*
|
|
3081
|
+
* Returns the valid entries AND the reasons any entry was rejected, because a
|
|
3082
|
+
* silently-dropped recorder is the failure mode that costs an afternoon: the
|
|
3083
|
+
* caller logs the errors once at startup, and every camera on a rejected entry
|
|
3084
|
+
* then reports `device-http-not-configured` truthfully rather than hanging.
|
|
3085
|
+
*
|
|
3086
|
+
* A malformed variable yields no targets at all — the same posture as
|
|
3087
|
+
* `cameraDevices()`, and far better than a half-parsed device map.
|
|
3088
|
+
*/
|
|
3089
|
+
declare function deviceHttpTargets(source?: Env): {
|
|
3090
|
+
targets: Record<string, DeviceHttpTarget>;
|
|
3091
|
+
errors: Array<string>;
|
|
3092
|
+
};
|
|
3093
|
+
/** The device-HTTP target for one camera record, or `null` when there is none. */
|
|
3094
|
+
declare function resolveDeviceHttp(host: string | undefined, targets?: Record<string, DeviceHttpTarget>): DeviceHttpTarget | null;
|
|
3095
|
+
/**
|
|
3096
|
+
* The cached answer to "we asked the device what it is".
|
|
3097
|
+
*
|
|
3098
|
+
* `ptz: null` and `reachable` are separate facts on purpose — a device can
|
|
3099
|
+
* answer while refusing to say whether it pans (older firmware, or a protocol
|
|
3100
|
+
* with no capability query), and that is an `unknown`, not a `no`.
|
|
3101
|
+
*/
|
|
3102
|
+
type DeviceProbeResult = {
|
|
3103
|
+
reachable: boolean;
|
|
3104
|
+
/** True when the failure budget is spent; nothing was sent. */
|
|
3105
|
+
lockedOut?: boolean;
|
|
3106
|
+
ptz?: boolean | null;
|
|
3107
|
+
presets?: boolean | null;
|
|
3108
|
+
softwareVersion?: string | null;
|
|
3109
|
+
deviceType?: string | null;
|
|
3110
|
+
probedAt?: string;
|
|
3111
|
+
};
|
|
3112
|
+
type CameraCapabilityContext = {
|
|
3113
|
+
camera: {
|
|
3114
|
+
type?: string;
|
|
3115
|
+
status?: string;
|
|
3116
|
+
host?: string;
|
|
3117
|
+
} | null;
|
|
3118
|
+
/** RTSP recorders, from `CAMERA_RTSP_DEVICES`. */
|
|
3119
|
+
rtspDevices?: Record<string, CameraDevice>;
|
|
3120
|
+
/** Resolved device-HTTP target for this camera, or `null`. */
|
|
3121
|
+
deviceHttp?: DeviceHttpTarget | null;
|
|
3122
|
+
/** A CACHED probe. `null`/absent means "never asked" → `unknown`, not `no`. */
|
|
3123
|
+
probe?: DeviceProbeResult | null;
|
|
3124
|
+
};
|
|
3125
|
+
type Decision = {
|
|
3126
|
+
state: CameraCapabilityState;
|
|
3127
|
+
reason: CameraCapabilityReason | null;
|
|
3128
|
+
};
|
|
3129
|
+
/**
|
|
3130
|
+
* A way of reaching a camera, and what it can do through that way.
|
|
3131
|
+
*
|
|
3132
|
+
* `evaluate` is asked once per capability it declares. Registration order is
|
|
3133
|
+
* preference order, so the first transport that says `supported` wins — which
|
|
3134
|
+
* is how one camera ends up serving live video over `RELAY_PLAYER` and evidence
|
|
3135
|
+
* stills over `RTSP_FRAME` at the same time, with nothing choosing between them
|
|
3136
|
+
* by hand.
|
|
3137
|
+
*/
|
|
3138
|
+
type CameraTransport = {
|
|
3139
|
+
id: string;
|
|
3140
|
+
provides: ReadonlyArray<CameraCapability>;
|
|
3141
|
+
evaluate: (capability: CameraCapability, ctx: CameraCapabilityContext) => Decision;
|
|
3142
|
+
};
|
|
3143
|
+
/**
|
|
3144
|
+
* Is this stored address a video-relay player page?
|
|
3145
|
+
*
|
|
3146
|
+
* The admin form ENFORCES `https://<domain>/<one segment>` for a CCTV camera
|
|
3147
|
+
* (`layer-common` `CameraForm.vue`), and all twelve real records match it. The
|
|
3148
|
+
* three that do not are two `example.com` placeholders and one bare authority
|
|
3149
|
+
* with no channel — so this predicate separates "a URL a WebView can render"
|
|
3150
|
+
* from "a record somebody has not finished", without contacting anything.
|
|
3151
|
+
*/
|
|
3152
|
+
declare function isRelayPlayerUrl(host: string | undefined): boolean;
|
|
3153
|
+
/** The registry, read-only to callers. */
|
|
3154
|
+
declare function cameraTransports(): ReadonlyArray<CameraTransport>;
|
|
3155
|
+
/**
|
|
3156
|
+
* Add or replace a transport.
|
|
3157
|
+
*
|
|
3158
|
+
* The point of the registry: an HLS relay, a MediaMTX playback URL or an audio
|
|
3159
|
+
* path is a new entry here and a new `provides` list. **No service, controller
|
|
3160
|
+
* or client changes to add one** — a capability that no transport declares
|
|
3161
|
+
* already answers `no-transport`, and starts answering `supported` the moment
|
|
3162
|
+
* something claims it.
|
|
3163
|
+
*/
|
|
3164
|
+
declare function registerCameraTransport(transport: CameraTransport): void;
|
|
3165
|
+
/** Test seam: restore the built-in registry. */
|
|
3166
|
+
declare function resetCameraTransports(): void;
|
|
3167
|
+
type CameraCapabilityTrace = Array<{
|
|
3168
|
+
capability: CameraCapability;
|
|
3169
|
+
transport: string | null;
|
|
3170
|
+
state: CameraCapabilityState;
|
|
3171
|
+
reason: CameraCapabilityReason | null;
|
|
3172
|
+
}>;
|
|
3173
|
+
/**
|
|
3174
|
+
* The descriptor for one camera, plus the trace of how each answer was reached.
|
|
3175
|
+
*
|
|
3176
|
+
* Selection per capability: ask every transport that declares it, in
|
|
3177
|
+
* registration order, and take the first `supported`. Failing that the first
|
|
3178
|
+
* `unknown` — because "we have not asked" outranks "this way cannot" when
|
|
3179
|
+
* telling someone what to do next. Failing that the first `unsupported`, whose
|
|
3180
|
+
* reason belongs to the most-preferred transport and is therefore the most
|
|
3181
|
+
* actionable one. A capability no transport declares is `no-transport`.
|
|
3182
|
+
*
|
|
3183
|
+
* The trace is for the server's log. It names capabilities, transport ids and
|
|
3184
|
+
* reason codes only — **no host, no credential, no address** — so it is safe to
|
|
3185
|
+
* write down, which is the point of having it at all: "why is PTZ off on this
|
|
3186
|
+
* camera" becomes one grep instead of an afternoon.
|
|
3187
|
+
*/
|
|
3188
|
+
declare function describeCameraCapabilities(ctx: CameraCapabilityContext, registry?: ReadonlyArray<CameraTransport>): {
|
|
3189
|
+
capabilities: CameraCapabilityDescriptor;
|
|
3190
|
+
trace: CameraCapabilityTrace;
|
|
3191
|
+
};
|
|
3192
|
+
/**
|
|
3193
|
+
* The descriptor for a camera record, reading configuration from the
|
|
3194
|
+
* environment. The convenience the service actually calls.
|
|
3195
|
+
*
|
|
3196
|
+
* **`probe` is passed IN, never fetched here.** Nothing in this file may cause
|
|
3197
|
+
* a device request, so a list endpoint cannot start probing by accident — the
|
|
3198
|
+
* single rule that keeps a wall of nine tiles from becoming a burst of
|
|
3199
|
+
* authenticated requests against a device with a lockout policy.
|
|
3200
|
+
*/
|
|
3201
|
+
declare function cameraCapabilitiesFor(params: {
|
|
3202
|
+
camera: {
|
|
3203
|
+
type?: string;
|
|
3204
|
+
status?: string;
|
|
3205
|
+
host?: string;
|
|
3206
|
+
} | null;
|
|
3207
|
+
probe?: DeviceProbeResult | null;
|
|
3208
|
+
rtspDevices?: Record<string, CameraDevice>;
|
|
3209
|
+
deviceHttpTargets?: Record<string, DeviceHttpTarget>;
|
|
3210
|
+
}): {
|
|
3211
|
+
capabilities: CameraCapabilityDescriptor;
|
|
3212
|
+
trace: CameraCapabilityTrace;
|
|
3213
|
+
};
|
|
3214
|
+
/** `true` when a camera has at least one capability that works right now. */
|
|
3215
|
+
declare function hasAnyCapability(descriptor: CameraCapabilityDescriptor): boolean;
|
|
3216
|
+
/** Kept for the wall's log line: `liveVideo=RELAY_PLAYER stillFrame=RTSP_FRAME …`. */
|
|
3217
|
+
declare function formatCapabilityTrace(trace: CameraCapabilityTrace): string;
|
|
3218
|
+
|
|
2922
3219
|
/**
|
|
2923
3220
|
* Camera functions for Virtual Patrol, proxied.
|
|
2924
3221
|
*
|
|
@@ -3002,36 +3299,24 @@ declare function useCameraViewService(): {
|
|
|
3002
3299
|
reachable: boolean;
|
|
3003
3300
|
health: "unsupported";
|
|
3004
3301
|
reason: string;
|
|
3005
|
-
camera:
|
|
3006
|
-
_id: any;
|
|
3007
|
-
name: any;
|
|
3008
|
-
type: any;
|
|
3009
|
-
status: any;
|
|
3010
|
-
guardPost: any;
|
|
3011
|
-
siteName: any;
|
|
3012
|
-
};
|
|
3302
|
+
camera: Record<string, any>;
|
|
3013
3303
|
snapshotSupported: boolean;
|
|
3014
|
-
|
|
3304
|
+
capabilities: CameraCapabilityDescriptor;
|
|
3305
|
+
firmwareVersion: string | null;
|
|
3015
3306
|
deviceTime: null;
|
|
3016
3307
|
driftSeconds: null;
|
|
3017
|
-
detailUnavailableReason: string;
|
|
3308
|
+
detailUnavailableReason: string | null;
|
|
3018
3309
|
} | {
|
|
3019
3310
|
reachable: boolean;
|
|
3020
3311
|
health: "ok" | "drifted" | "unreachable";
|
|
3021
3312
|
reason: string | null;
|
|
3022
|
-
camera:
|
|
3023
|
-
_id: any;
|
|
3024
|
-
name: any;
|
|
3025
|
-
type: any;
|
|
3026
|
-
status: any;
|
|
3027
|
-
guardPost: any;
|
|
3028
|
-
siteName: any;
|
|
3029
|
-
};
|
|
3313
|
+
camera: Record<string, any>;
|
|
3030
3314
|
snapshotSupported: boolean;
|
|
3031
|
-
|
|
3315
|
+
capabilities: CameraCapabilityDescriptor;
|
|
3316
|
+
firmwareVersion: string | null;
|
|
3032
3317
|
deviceTime: null;
|
|
3033
3318
|
driftSeconds: null;
|
|
3034
|
-
detailUnavailableReason: string;
|
|
3319
|
+
detailUnavailableReason: string | null;
|
|
3035
3320
|
}>;
|
|
3036
3321
|
getSiteWall: (params: {
|
|
3037
3322
|
siteId: string;
|
|
@@ -3050,12 +3335,7 @@ declare function useCameraViewService(): {
|
|
|
3050
3335
|
};
|
|
3051
3336
|
cameras: {
|
|
3052
3337
|
unavailableReason: string | null;
|
|
3053
|
-
|
|
3054
|
-
name: any;
|
|
3055
|
-
type: any;
|
|
3056
|
-
status: any;
|
|
3057
|
-
guardPost: any;
|
|
3058
|
-
siteName: any;
|
|
3338
|
+
capabilities: CameraCapabilityDescriptor;
|
|
3059
3339
|
}[];
|
|
3060
3340
|
}>;
|
|
3061
3341
|
getSiteHealth: (params: {
|
|
@@ -3067,34 +3347,24 @@ declare function useCameraViewService(): {
|
|
|
3067
3347
|
reachable: boolean;
|
|
3068
3348
|
health: "unsupported";
|
|
3069
3349
|
reason: string;
|
|
3350
|
+
capabilities: CameraCapabilityDescriptor;
|
|
3070
3351
|
firmwareVersion: null;
|
|
3071
3352
|
deviceTime: null;
|
|
3072
3353
|
driftSeconds: null;
|
|
3073
3354
|
detailUnavailableReason: string;
|
|
3074
3355
|
lastFrameAt: string | null;
|
|
3075
3356
|
unavailableReason: string | null;
|
|
3076
|
-
_id: any;
|
|
3077
|
-
name: any;
|
|
3078
|
-
type: any;
|
|
3079
|
-
status: any;
|
|
3080
|
-
guardPost: any;
|
|
3081
|
-
siteName: any;
|
|
3082
3357
|
} | {
|
|
3083
3358
|
reachable: boolean;
|
|
3084
3359
|
health: "ok" | "drifted" | "unreachable";
|
|
3085
3360
|
reason: string | null;
|
|
3361
|
+
capabilities: CameraCapabilityDescriptor;
|
|
3086
3362
|
firmwareVersion: null;
|
|
3087
3363
|
deviceTime: null;
|
|
3088
3364
|
driftSeconds: null;
|
|
3089
3365
|
detailUnavailableReason: string;
|
|
3090
3366
|
lastFrameAt: string | null;
|
|
3091
3367
|
unavailableReason: string | null;
|
|
3092
|
-
_id: any;
|
|
3093
|
-
name: any;
|
|
3094
|
-
type: any;
|
|
3095
|
-
status: any;
|
|
3096
|
-
guardPost: any;
|
|
3097
|
-
siteName: any;
|
|
3098
3368
|
})[];
|
|
3099
3369
|
}>;
|
|
3100
3370
|
movePtz: (params: {
|
|
@@ -3103,7 +3373,9 @@ declare function useCameraViewService(): {
|
|
|
3103
3373
|
action: string;
|
|
3104
3374
|
code: string;
|
|
3105
3375
|
speed?: number;
|
|
3106
|
-
}) => Promise<
|
|
3376
|
+
}) => Promise<{
|
|
3377
|
+
ok: boolean;
|
|
3378
|
+
}>;
|
|
3107
3379
|
ptzEnabled: boolean;
|
|
3108
3380
|
};
|
|
3109
3381
|
|
|
@@ -8949,4 +9221,4 @@ declare function useNotificationController(): {
|
|
|
8949
9221
|
add: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
8950
9222
|
};
|
|
8951
9223
|
|
|
8952
|
-
export { ANPRMode, AccessTypeProps, AppServiceType, AssignCardConfig, BidStatus, BidType, BuildingLevelStatus, BuildingStatus, BulkCardUpdate, BulletinOrder, BulletinRecipient, BulletinSort, BulletinStatus, BulletinVideoOrder, BulletinVideoSort, CAMERA_NOT_PATROL_OR_CCTV, CAMERA_PTZ_PERMISSIONS, CAMERA_REQUEST_TIMEOUT_MS, CAMERA_RTSP_TIMEOUT_MS, CAMERA_SNAPSHOT_CACHE_SECONDS, CAMERA_SNAPSHOT_MAX_BYTES, CAMERA_TYPE_ANPR, CAMERA_TYPE_IP, CAMERA_VIEW_PERMISSIONS, CLOCK_DRIFT_WARN_SECONDS, CURRENT_TIME_ENDPOINT, Camera, CameraDevice, CameraType, DEVICE_STATUS, DOBStatus, DayOfWeek, DynamicFormFields, EAccessCardTypes, EAccessCardUserTypes, EmailSender, EntryOrder, EntrySort, EventOrder, EventSort, EventStatus, EventType, FacilitySort, FacilityStatus, FormEntryStatus, GuestSort, GuestStatus, HID_PERMISSION_CATEGORIES, IAccessCard, IAccessCardTransaction, MAccessCard, MAccessCardTransaction, MAddress, MAttendance, MAttendanceSettings, MBidPreloved, MBillingConfiguration, MBillingItem, MBuilding, MBuildingLevel, MBuildingUnit, MBulletinBoard, MBulletinVideo, MCategoryPreloved, MChannelPreloved, MChat, MChatPreloved, MCustomer, MCustomerSite, MDocumentManagement, MEntryPassSettings, MEventManagement, MFeedback, MFile, MFormEntry, MGuestManagement, MHidAmicoEvent, MHidAmicoIdentity, MHidAmicoReader, MHidSitePermissions, MIncidentReport, MManpowerDesignations, MManpowerMonitoring, MManpowerRemarks, MManpowerSites, MMember, MNfcPatrolLog, MNfcPatrolRoute, MNfcPatrolSettings, MNfcPatrolSettingsUpdate, MNfcPatrolTag, MNotification, MOccurrenceBook, MOccurrenceEntry, MOccurrenceSubject, MOnlineForm, MOrg, MOvernightParkingApprovalHours, MOvernightParkingRequest, MPatrolLog, MPatrolQuestion, MPatrolRoute, MPerson, MPost, MPostFavorite, MPromoCode, MRobot, MRole, MRoleV2, MServiceProvider, MServiceProviderBilling, MSession, MSite, MSiteCamera, MSiteFacility, MSiteFacilityBooking, MStatementOfAccount, MSubcategoryPreloved, MSubscription, MUnitBilling, MUser, MVehicle, MVehicleTransaction, MVerification, MVerificationV2, MVisitorTransaction, MWorkOrder, NotificationAppSlug, NotificationModule, OrgNature, OvernightParkingRequestSort, OvernightParkingRequestStatus, PATROL_CCTV_CAMERA_FILTER, PERSON_TYPES, PStatus, PTZ_ALLOWED_ACTIONS, PTZ_ALLOWED_CODES, Period, PersonStatus, PersonType, PersonTypes, PostOrder, PostSort, PostStatus, QrTagProps, ResidentAppModuleKey, SOFTWARE_VERSION_ENDPOINT, SiteAddress, SiteCategories, SiteStatus, SortFields, SortOrder, Status, SubjectOrder, SubjectSort, SubscriptionType, TAccessMngmntSettings, TActionStatus, TAddress, TAffectedEntities, TAffectedInjured, TAppServiceType, TApprovedBy, TApprover, TAttendance, TAttendanceCheckIn, TAttendanceCheckOut, TAttendanceCheckTime, TAttendanceLocation, TAttendanceSettings, TAttendanceSettingsGetBySite, TAuthorities, TAuthoritiesCalled, TBidPreloved, TBilling, TBillingConfiguration, TBillingItem, TBuilding, TBuildingLevel, TBuildingUnit, TBulletinBoard, TBulletinVideo, TCamera, TCategoryPreloved, TChannelPreloved, TChat, TChatPreloved, TCheckPoint$1 as TCheckPoint, TComplaintInfo, TComplaintReceivedTo, TCounter, TCreateNfcPatrolLog, TCustomer, TCustomerSite, TDayNumber, TDaySchedule, TDefaultAccessCard, TDesignations, TDocs, TDocumentCreate, TDocumentManagement, TEntryPassSettings, TEventManagement, TFeedback, TFeedbackMetadata, TFeedbackUpdate, TFeedbackUpdateCategory, TFeedbackUpdateServiceProvider, TFeedbackUpdateStatus, TFeedbackUpdateToCompleted, TFile, TFiles, TFolderUpdate, TFormEntry, TGetAttendancesByUserQuery, TGetAttendancesQuery, TGuestManagement, THidAmicoEvent, THidAmicoIdentity, THidAmicoReader, THidPermissionAssignment, THidPermissionCategory, THidSitePermissions, TIncidentInformation, TIncidentReport, TIncidentTypeAndTime, TInvoice, TKeyRef, TManpowerDesignations, TManpowerDesignationsUpdate, TManpowerMonitoring, TManpowerMonitoringUpdate, TManpowerRemarks, TManpowerRemarksStatusUpdate, TManpowerRemarksUpdate, TManpowerSearchFilter, TManpowerSites, TMember, TMemberUpdateStatus, TMessagePreloved, TMiniRole, TNfcPatrolLog, TNfcPatrolRoute, TNfcPatrolRouteEdit, TNfcPatrolSettings, TNfcPatrolSettingsGetBySite, TNfcPatrolSettingsUpdate, TNfcPatrolTag, TNfcPatrolTagConfigureReset, TNfcPatrolTagEdit, TNfcPatrolTagUpdateData, TNotification, TOccurrenceBook, TOccurrenceEntry, TOccurrenceSubject, TOnlineForm, TOrg, TOvernightParkingApprovalHours, TOvernightParkingRequest, TPatrolLog, TPatrolQuestion, TPatrolRoute, TPerson, TPlaceOfIncident, TPlates, TPost, TPostFavorite, TPrice, TPriceType, TPromoCode, TPromoTier, TRecipientOfComplaint, TRemarks, TResident, TResidentAppModules, TRobot, TRobotMetadata, TRole, TRoleV2, TRoute, TSOABillingItem, TSOAStatus, TServiceProvider, TServiceProviderBilling, TSession, TSessionCreate, TShifts, TSignNfcPatrolLog, TSite, TSiteCamera, TSiteFacility, TSiteFacilityBooking, TSiteInfo, TSiteInformation, TSiteMetadata, TSiteUpdateBlock, TStatementOfAccount, TSubcategoryPreloved, TSubmissionForm, TSubscription, TUnitBilling, TUnits, TUpdateFormEntry, TUpdateName, TUser, TUserCreate, TVehicle, TVehicleTransaction, TVehicleUpdate, TVerification, TVerificationMetadata, TVerificationMetadataV2, TVerificationV2, TVisitorTransaction, TWorkOrder, TWorkOrderMetadata, TWorkOrderUpdate, TWorkOrderUpdateStatus, TWorkOrderUpdateToCompleted, TanyoneDamageToProperty, UseAccessManagementRepo, UserStatus, VehicleCategory, VehicleOrder, VehicleSort, VehicleStatus, VehicleType, VerificationLinkType, VerificationStatus, VerificationSubjectType, VerificationType, VisitorSort, VisitorStatus, addressSchema, allowedFieldsSite, allowedNatures, attendanceSchema, attendanceSettingsSchema, building_level_namespace_collection, building_units_namespace_collection, buildings_namespace_collection, bulletin_boards_namespace_collection, cameraBaseUrl, cameraDevices, cameraHealthSummary, chatPrelovedEvents, chatSchema, clampPtzSpeed, clockDriftSeconds, createManpowerRemarksDaily, customerSchema, designationsSchema, events_namespace_collection, facility_bookings_namespace_collection, feedbackSchema, feedbacks2_namespace_collection, feedbacks_namespace_collection, ffmpegFrameArgs, ffmpegPath, formatDahuaDate, guests_namespace_collection, hasAnyPermission, incidentReport, incidentReportLog, incidents_namespace_collection, isCameraEntitled, isPatrolCctvCamera, logCamera, manpowerDesignationsSchema, manpowerEvents, manpowerMonitoringSchema, manpowerRemarksSchema, manpowerSitesSchema, mapWithLimit, nfcPatrolSettingsSchema, nfcPatrolSettingsSchemaUpdate, occurrence_book_namespace_collection, online_forms_namespace_collection, orgSchema, overnight_parking_requests_namespace_collection, parseCameraHost, parseDahuaFind, parseDeviceTime, parseSoftwareVersion, promoCodeSchema, ptzEndpoint, publicCameraFields, remarksSchema, residentAppModuleKeys, residentFormEntry, resolutionRefusalReason, resolveCamera, robotSchema, rtspUrl, schema, schemaAppSlugNotification, schemaApprovedBy, schemaApprover, schemaBidPreloved, schemaBilling, schemaBillingConfiguration, schemaBillingItem, schemaBuilding, schemaBuildingLevel, schemaBuildingUnit, schemaBuildingUpdateOptions, schemaBulletinBoard, schemaBulletinVideo, schemaCategoryPreloved, schemaChannelPreloved, schemaChatPreloved, schemaCreateHidAmicoIdentity, schemaCreateNfcPatrolLog, schemaCreateNotification, schemaCustomerSite, schemaDocumentManagement, schemaEntryPassSettings, schemaEventManagement, schemaFiles, schemaFormEntry, schemaGuestManagement, schemaHidAmicoConfiguration, schemaHidAmicoEvent, schemaHidAmicoExecuteActions, schemaHidAmicoIdentity, schemaHidAmicoIdentityIdParams, schemaHidAmicoIdentityQuery, schemaHidAmicoIntercomCall, schemaHidAmicoLogQuery, schemaHidAmicoNotificationParams, schemaHidAmicoObjectOperation, schemaHidAmicoReader, schemaHidAmicoReaderIdParams, schemaHidAmicoReaderListQuery, schemaHidAmicoSetConfiguration, schemaHidAmicoSiteIdParams, schemaHidAmicoSync, schemaHidAmicoUserImageParams, schemaHidAmicoVisitorQr, schemaHidPermissionCandidateQuery, schemaIncidentReport, schemaListNotification, schemaMultipleDocumentManagement, schemaNfcPatrolLog, schemaNfcPatrolRoute, schemaNfcPatrolTag, schemaNfcPatrolTagUpdateData, schemaNotification, schemaOccurrenceBook, schemaOccurrenceEntry, schemaOccurrenceSubject, schemaOnlineForm, schemaOvernightParkingApprovalHours, schemaOvernightParkingRequest, schemaPatrolLog, schemaPatrolQuestion, schemaPatrolRoute, schemaPerson, schemaPlate, schemaPost, schemaPostFavorite, schemaServiceProvider, schemaServiceProviderBilling, schemaSignNfcPatrolLog, schemaSiteCamera, schemaSiteFacility, schemaSiteFacilityBooking, schemaStatementOfAccount, schemaSubcategoryPreloved, schemaUnitBilling, schemaUpdateBidPreloved, schemaUpdateBuildingLevel, schemaUpdateBulletinBoard, schemaUpdateBulletinVideo, schemaUpdateCategoryPreloved, schemaUpdateChatPreloved, schemaUpdateDocumentManagement, schemaUpdateEntryPassSettings, schemaUpdateEventManagement, schemaUpdateFolderManagement, schemaUpdateFormEntry, schemaUpdateGuestManagement, schemaUpdateHidAmicoIdentity, schemaUpdateHidAmicoReader, schemaUpdateHidSitePermissions, schemaUpdateIncidentReport, schemaUpdateNotification, schemaUpdateOccurrenceBook, schemaUpdateOccurrenceEntry, schemaUpdateOccurrenceSubject, schemaUpdateOnlineForm, schemaUpdateOptions, schemaUpdateOvernightParkingRequest, schemaUpdatePatrolLog, schemaUpdatePatrolQuestion, schemaUpdatePatrolRoute, schemaUpdatePerson, schemaUpdatePost, schemaUpdatePostFavorite, schemaUpdateServiceProviderBilling, schemaUpdateSiteBillingConfiguration, schemaUpdateSiteBillingItem, schemaUpdateSiteCamera, schemaUpdateSiteFacility, schemaUpdateSiteFacilityBooking, schemaUpdateSiteUnitBilling, schemaUpdateStatementOfAccount, schemaUpdateSubcategoryPreloved, schemaUpdateVisTrans, schemaVehicleTransaction, schemaVisitorTransaction, schemeCamera, schemeLogCamera, sessionSchema, shiftSchema, siteSchema, site_people_namespace_collection, snapshotEndpoint, snapshotRefusalReason, updateRemarksStatusEod, updateRemarksisAcknowledged, updateSiteSchema, useAccessManagementController, useAddressRepo, useAttendanceController, useAttendanceRepository, useAttendanceSettingsController, useAttendanceSettingsRepository, useAttendanceSettingsService, useAuthController, useAuthControllerV2, useAuthService, useAuthServiceV2, useBidPrelovedController, useBidPrelovedRepo, useBidPrelovedService, useBuildingController, useBuildingLevelController, useBuildingLevelRepo, useBuildingLevelService, useBuildingRepo, useBuildingService, useBuildingUnitController, useBuildingUnitRepo, useBuildingUnitService, useBulletinBoardController, useBulletinBoardRepo, useBulletinBoardService, useBulletinVideoController, useBulletinVideoRepo, useBulletinVideoService, useCameraViewController, useCameraViewService, useCategoryPrelovedController, useCategoryPrelovedRepo, useChannelPrelovedController, useChannelPrelovedRepo, useChatController, useChatPrelovedController, useChatPrelovedRepo, useChatPrelovedService, useChatRepo, useCounterModel, useCounterRepo, useCustomerController, useCustomerRepo, useCustomerSiteController, useCustomerSiteRepo, useCustomerSiteService, useDahuaService, useDashboardController, useDashboardRepo, useDocumentManagementController, useDocumentManagementRepo, useDocumentManagementService, useEntryPassSettingsController, useEntryPassSettingsRepo, useEventManagementController, useEventManagementRepo, useEventManagementService, useFeedbackController, useFeedbackRepo, useFeedbackService, useFileController, useFileRepo, useFileService, useFormEntryController, useFormEntryRepo, useGuestManagementController, useGuestManagementRepo, useGuestManagementService, useHidAmicoController, useHidAmicoRepo, useHidAmicoService, useHrmLabsAttendanceCtrl, useHrmLabsAttendanceSrvc, useIncidentReportController, useIncidentReportRepo, useIncidentReportService, useInvoiceController, useInvoiceModel, useInvoiceRepo, useManpowerDesignationCtrl, useManpowerDesignationRepo, useManpowerMonitoringCtrl, useManpowerMonitoringRepo, useManpowerMonitoringSrvc, useManpowerRemarkCtrl, useManpowerRemarksRepo, useManpowerSitesCtrl, useManpowerSitesRepo, useManpowerSitesSrvc, useMemberController, useMemberRepo, useMemberService, useNewDashboardController, useNewDashboardRepo, useNfcPatrolLogController, useNfcPatrolLogRepo, useNfcPatrolLogService, useNfcPatrolRouteController, useNfcPatrolRouteRepo, useNfcPatrolRouteService, useNfcPatrolSettingsController, useNfcPatrolSettingsRepository, useNfcPatrolSettingsService, useNfcPatrolTagController, useNfcPatrolTagRepo, useNfcPatrolTagService, useNotificationController, useNotificationRepo, useOccurrenceBookController, useOccurrenceBookRepo, useOccurrenceBookService, useOccurrenceEntryController, useOccurrenceEntryRepo, useOccurrenceEntryService, useOccurrenceSubjectController, useOccurrenceSubjectRepo, useOccurrenceSubjectService, useOnlineFormController, useOnlineFormRepo, useOrgController, useOrgControllerV2, useOrgRepo, useOvernightParkingController, useOvernightParkingRepo, useOvernightParkingRequestController, useOvernightParkingRequestRepo, useOvernightParkingRequestService, usePatrolLogController, usePatrolLogRepo, usePatrolQuestionController, usePatrolQuestionRepo, usePatrolRouteController, usePatrolRouteRepo, usePersonController, usePersonRepo, usePostFavoriteController, usePostFavoriteRepo, usePostFavoriteService, usePostPrelovedController, usePostPrelovedRepo, usePriceController, usePriceModel, usePriceRepo, usePromoCodeController, usePromoCodeRepo, useRedDotPaymentController, useRedDotPaymentRepo, useRedDotPaymentSvc, useRobotController, useRobotRepo, useRobotService, useRoleController, useRoleControllerV2, useRoleRepo, useRoleRepoV2, useRoleServiceV2, useServiceProviderBillingController, useServiceProviderBillingRepo, useServiceProviderBillingService, useServiceProviderController, useServiceProviderRepo, useSessionRepo, useSiteBillingConfigurationController, useSiteBillingConfigurationRepo, useSiteBillingItemController, useSiteBillingItemRepo, useSiteCameraController, useSiteCameraRepo, useSiteCameraService, useSiteController, useSiteFacilityBookingController, useSiteFacilityBookingRepo, useSiteFacilityBookingService, useSiteFacilityController, useSiteFacilityRepo, useSiteFacilityService, useSiteRepo, useSiteService, useSiteUnitBillingController, useSiteUnitBillingRepo, useSiteUnitBillingService, useStatementOfAccountController, useStatementOfAccountRepo, useSubcategoryPrelovedController, useSubcategoryPrelovedRepo, useSubscriptionController, useSubscriptionRepo, useSubscriptionService, useUserController, useUserControllerV2, useUserRepo, useUserRepoV2, useUserService, useUserServiceV2, useVehicleController, useVehicleRepo, useVehicleService, useVerificationController, useVerificationControllerV2, useVerificationRepo, useVerificationRepoV2, useVerificationService, useVerificationServiceV2, useVisitorTransactionController, useVisitorTransactionRepo, useVisitorTransactionService, useWorkOrderController, useWorkOrderRepo, useWorkOrderService, userSchema, vehicleSchema, vehicles_namespace_collection, visitorPersonRepo, visitorPersonService, visitorType, visitors_namespace_collection, wallConfig, workOrderSchema, work_orders2_namespace_collection, work_orders_namespace_collection };
|
|
9224
|
+
export { ANPRMode, AccessTypeProps, AppServiceType, AssignCardConfig, BidStatus, BidType, BuildingLevelStatus, BuildingStatus, BulkCardUpdate, BulletinOrder, BulletinRecipient, BulletinSort, BulletinStatus, BulletinVideoOrder, BulletinVideoSort, CAMERA_CAPABILITIES, CAMERA_CAPABILITY_REASONS, CAMERA_NOT_PATROL_OR_CCTV, CAMERA_PTZ_PERMISSIONS, CAMERA_REQUEST_TIMEOUT_MS, CAMERA_RTSP_TIMEOUT_MS, CAMERA_SNAPSHOT_CACHE_SECONDS, CAMERA_SNAPSHOT_MAX_BYTES, CAMERA_TYPE_ANPR, CAMERA_TYPE_IP, CAMERA_VIEW_PERMISSIONS, CLOCK_DRIFT_WARN_SECONDS, CURRENT_TIME_ENDPOINT, Camera, CameraCapability, CameraCapabilityContext, CameraCapabilityDescriptor, CameraCapabilityEntry, CameraCapabilityReason, CameraCapabilityState, CameraCapabilityTrace, CameraDevice, CameraTransport, CameraType, DEVICE_STATUS, DOBStatus, DayOfWeek, DeviceHttpTarget, DeviceProbeResult, DynamicFormFields, EAccessCardTypes, EAccessCardUserTypes, EmailSender, EntryOrder, EntrySort, EventOrder, EventSort, EventStatus, EventType, FacilitySort, FacilityStatus, FormEntryStatus, GuestSort, GuestStatus, HID_PERMISSION_CATEGORIES, IAccessCard, IAccessCardTransaction, MAccessCard, MAccessCardTransaction, MAddress, MAttendance, MAttendanceSettings, MBidPreloved, MBillingConfiguration, MBillingItem, MBuilding, MBuildingLevel, MBuildingUnit, MBulletinBoard, MBulletinVideo, MCategoryPreloved, MChannelPreloved, MChat, MChatPreloved, MCustomer, MCustomerSite, MDocumentManagement, MEntryPassSettings, MEventManagement, MFeedback, MFile, MFormEntry, MGuestManagement, MHidAmicoEvent, MHidAmicoIdentity, MHidAmicoReader, MHidSitePermissions, MIncidentReport, MManpowerDesignations, MManpowerMonitoring, MManpowerRemarks, MManpowerSites, MMember, MNfcPatrolLog, MNfcPatrolRoute, MNfcPatrolSettings, MNfcPatrolSettingsUpdate, MNfcPatrolTag, MNotification, MOccurrenceBook, MOccurrenceEntry, MOccurrenceSubject, MOnlineForm, MOrg, MOvernightParkingApprovalHours, MOvernightParkingRequest, MPatrolLog, MPatrolQuestion, MPatrolRoute, MPerson, MPost, MPostFavorite, MPromoCode, MRobot, MRole, MRoleV2, MServiceProvider, MServiceProviderBilling, MSession, MSite, MSiteCamera, MSiteFacility, MSiteFacilityBooking, MStatementOfAccount, MSubcategoryPreloved, MSubscription, MUnitBilling, MUser, MVehicle, MVehicleTransaction, MVerification, MVerificationV2, MVisitorTransaction, MWorkOrder, NotificationAppSlug, NotificationModule, OrgNature, OvernightParkingRequestSort, OvernightParkingRequestStatus, PATROL_CCTV_CAMERA_FILTER, PERSON_TYPES, PStatus, PTZ_ALLOWED_ACTIONS, PTZ_ALLOWED_CODES, Period, PersonStatus, PersonType, PersonTypes, PostOrder, PostSort, PostStatus, QrTagProps, ResidentAppModuleKey, SOFTWARE_VERSION_ENDPOINT, SiteAddress, SiteCategories, SiteStatus, SortFields, SortOrder, Status, SubjectOrder, SubjectSort, SubscriptionType, TAccessMngmntSettings, TActionStatus, TAddress, TAffectedEntities, TAffectedInjured, TAppServiceType, TApprovedBy, TApprover, TAttendance, TAttendanceCheckIn, TAttendanceCheckOut, TAttendanceCheckTime, TAttendanceLocation, TAttendanceSettings, TAttendanceSettingsGetBySite, TAuthorities, TAuthoritiesCalled, TBidPreloved, TBilling, TBillingConfiguration, TBillingItem, TBuilding, TBuildingLevel, TBuildingUnit, TBulletinBoard, TBulletinVideo, TCamera, TCategoryPreloved, TChannelPreloved, TChat, TChatPreloved, TCheckPoint$1 as TCheckPoint, TComplaintInfo, TComplaintReceivedTo, TCounter, TCreateNfcPatrolLog, TCustomer, TCustomerSite, TDayNumber, TDaySchedule, TDefaultAccessCard, TDesignations, TDocs, TDocumentCreate, TDocumentManagement, TEntryPassSettings, TEventManagement, TFeedback, TFeedbackMetadata, TFeedbackUpdate, TFeedbackUpdateCategory, TFeedbackUpdateServiceProvider, TFeedbackUpdateStatus, TFeedbackUpdateToCompleted, TFile, TFiles, TFolderUpdate, TFormEntry, TGetAttendancesByUserQuery, TGetAttendancesQuery, TGuestManagement, THidAmicoEvent, THidAmicoIdentity, THidAmicoReader, THidPermissionAssignment, THidPermissionCategory, THidSitePermissions, TIncidentInformation, TIncidentReport, TIncidentTypeAndTime, TInvoice, TKeyRef, TManpowerDesignations, TManpowerDesignationsUpdate, TManpowerMonitoring, TManpowerMonitoringUpdate, TManpowerRemarks, TManpowerRemarksStatusUpdate, TManpowerRemarksUpdate, TManpowerSearchFilter, TManpowerSites, TMember, TMemberUpdateStatus, TMessagePreloved, TMiniRole, TNfcPatrolLog, TNfcPatrolRoute, TNfcPatrolRouteEdit, TNfcPatrolSettings, TNfcPatrolSettingsGetBySite, TNfcPatrolSettingsUpdate, TNfcPatrolTag, TNfcPatrolTagConfigureReset, TNfcPatrolTagEdit, TNfcPatrolTagUpdateData, TNotification, TOccurrenceBook, TOccurrenceEntry, TOccurrenceSubject, TOnlineForm, TOrg, TOvernightParkingApprovalHours, TOvernightParkingRequest, TPatrolLog, TPatrolQuestion, TPatrolRoute, TPerson, TPlaceOfIncident, TPlates, TPost, TPostFavorite, TPrice, TPriceType, TPromoCode, TPromoTier, TRANSPORT_DEVICE_HTTP, TRANSPORT_RELAY_PLAYER, TRANSPORT_RTSP_FRAME, TRecipientOfComplaint, TRemarks, TResident, TResidentAppModules, TRobot, TRobotMetadata, TRole, TRoleV2, TRoute, TSOABillingItem, TSOAStatus, TServiceProvider, TServiceProviderBilling, TSession, TSessionCreate, TShifts, TSignNfcPatrolLog, TSite, TSiteCamera, TSiteFacility, TSiteFacilityBooking, TSiteInfo, TSiteInformation, TSiteMetadata, TSiteUpdateBlock, TStatementOfAccount, TSubcategoryPreloved, TSubmissionForm, TSubscription, TUnitBilling, TUnits, TUpdateFormEntry, TUpdateName, TUser, TUserCreate, TVehicle, TVehicleTransaction, TVehicleUpdate, TVerification, TVerificationMetadata, TVerificationMetadataV2, TVerificationV2, TVisitorTransaction, TWorkOrder, TWorkOrderMetadata, TWorkOrderUpdate, TWorkOrderUpdateStatus, TWorkOrderUpdateToCompleted, TanyoneDamageToProperty, UseAccessManagementRepo, UserStatus, VehicleCategory, VehicleOrder, VehicleSort, VehicleStatus, VehicleType, VerificationLinkType, VerificationStatus, VerificationSubjectType, VerificationType, VisitorSort, VisitorStatus, addressSchema, allowedFieldsSite, allowedNatures, attendanceSchema, attendanceSettingsSchema, building_level_namespace_collection, building_units_namespace_collection, buildings_namespace_collection, bulletin_boards_namespace_collection, cameraBaseUrl, cameraCapabilitiesFor, cameraDevices, cameraHealthSummary, cameraTransports, chatPrelovedEvents, chatSchema, clampPtzSpeed, clockDriftSeconds, createManpowerRemarksDaily, customerSchema, describeCameraCapabilities, designationsSchema, deviceControlEnabled, deviceHttpEnabled, deviceHttpTargets, deviceHttpTimeoutMs, deviceProbeTtlSeconds, events_namespace_collection, facility_bookings_namespace_collection, feedbackSchema, feedbacks2_namespace_collection, feedbacks_namespace_collection, ffmpegFrameArgs, ffmpegPath, formatCapabilityTrace, formatDahuaDate, guests_namespace_collection, hasAnyCapability, hasAnyPermission, incidentReport, incidentReportLog, incidents_namespace_collection, isCameraEntitled, isPatrolCctvCamera, isRelayPlayerUrl, logCamera, manpowerDesignationsSchema, manpowerEvents, manpowerMonitoringSchema, manpowerRemarksSchema, manpowerSitesSchema, mapWithLimit, nfcPatrolSettingsSchema, nfcPatrolSettingsSchemaUpdate, occurrence_book_namespace_collection, online_forms_namespace_collection, orgSchema, overnight_parking_requests_namespace_collection, parseCameraHost, parseDahuaFind, parseDeviceTime, parseSoftwareVersion, promoCodeSchema, ptzEndpoint, publicCameraFields, registerCameraTransport, remarksSchema, resetCameraTransports, residentAppModuleKeys, residentFormEntry, resolutionRefusalReason, resolveCamera, resolveDeviceHttp, robotSchema, rtspUrl, schema, schemaAppSlugNotification, schemaApprovedBy, schemaApprover, schemaBidPreloved, schemaBilling, schemaBillingConfiguration, schemaBillingItem, schemaBuilding, schemaBuildingLevel, schemaBuildingUnit, schemaBuildingUpdateOptions, schemaBulletinBoard, schemaBulletinVideo, schemaCategoryPreloved, schemaChannelPreloved, schemaChatPreloved, schemaCreateHidAmicoIdentity, schemaCreateNfcPatrolLog, schemaCreateNotification, schemaCustomerSite, schemaDocumentManagement, schemaEntryPassSettings, schemaEventManagement, schemaFiles, schemaFormEntry, schemaGuestManagement, schemaHidAmicoConfiguration, schemaHidAmicoEvent, schemaHidAmicoExecuteActions, schemaHidAmicoIdentity, schemaHidAmicoIdentityIdParams, schemaHidAmicoIdentityQuery, schemaHidAmicoIntercomCall, schemaHidAmicoLogQuery, schemaHidAmicoNotificationParams, schemaHidAmicoObjectOperation, schemaHidAmicoReader, schemaHidAmicoReaderIdParams, schemaHidAmicoReaderListQuery, schemaHidAmicoSetConfiguration, schemaHidAmicoSiteIdParams, schemaHidAmicoSync, schemaHidAmicoUserImageParams, schemaHidAmicoVisitorQr, schemaHidPermissionCandidateQuery, schemaIncidentReport, schemaListNotification, schemaMultipleDocumentManagement, schemaNfcPatrolLog, schemaNfcPatrolRoute, schemaNfcPatrolTag, schemaNfcPatrolTagUpdateData, schemaNotification, schemaOccurrenceBook, schemaOccurrenceEntry, schemaOccurrenceSubject, schemaOnlineForm, schemaOvernightParkingApprovalHours, schemaOvernightParkingRequest, schemaPatrolLog, schemaPatrolQuestion, schemaPatrolRoute, schemaPerson, schemaPlate, schemaPost, schemaPostFavorite, schemaServiceProvider, schemaServiceProviderBilling, schemaSignNfcPatrolLog, schemaSiteCamera, schemaSiteFacility, schemaSiteFacilityBooking, schemaStatementOfAccount, schemaSubcategoryPreloved, schemaUnitBilling, schemaUpdateBidPreloved, schemaUpdateBuildingLevel, schemaUpdateBulletinBoard, schemaUpdateBulletinVideo, schemaUpdateCategoryPreloved, schemaUpdateChatPreloved, schemaUpdateDocumentManagement, schemaUpdateEntryPassSettings, schemaUpdateEventManagement, schemaUpdateFolderManagement, schemaUpdateFormEntry, schemaUpdateGuestManagement, schemaUpdateHidAmicoIdentity, schemaUpdateHidAmicoReader, schemaUpdateHidSitePermissions, schemaUpdateIncidentReport, schemaUpdateNotification, schemaUpdateOccurrenceBook, schemaUpdateOccurrenceEntry, schemaUpdateOccurrenceSubject, schemaUpdateOnlineForm, schemaUpdateOptions, schemaUpdateOvernightParkingRequest, schemaUpdatePatrolLog, schemaUpdatePatrolQuestion, schemaUpdatePatrolRoute, schemaUpdatePerson, schemaUpdatePost, schemaUpdatePostFavorite, schemaUpdateServiceProviderBilling, schemaUpdateSiteBillingConfiguration, schemaUpdateSiteBillingItem, schemaUpdateSiteCamera, schemaUpdateSiteFacility, schemaUpdateSiteFacilityBooking, schemaUpdateSiteUnitBilling, schemaUpdateStatementOfAccount, schemaUpdateSubcategoryPreloved, schemaUpdateVisTrans, schemaVehicleTransaction, schemaVisitorTransaction, schemeCamera, schemeLogCamera, sessionSchema, shiftSchema, siteSchema, site_people_namespace_collection, snapshotEndpoint, snapshotRefusalReason, updateRemarksStatusEod, updateRemarksisAcknowledged, updateSiteSchema, useAccessManagementController, useAddressRepo, useAttendanceController, useAttendanceRepository, useAttendanceSettingsController, useAttendanceSettingsRepository, useAttendanceSettingsService, useAuthController, useAuthControllerV2, useAuthService, useAuthServiceV2, useBidPrelovedController, useBidPrelovedRepo, useBidPrelovedService, useBuildingController, useBuildingLevelController, useBuildingLevelRepo, useBuildingLevelService, useBuildingRepo, useBuildingService, useBuildingUnitController, useBuildingUnitRepo, useBuildingUnitService, useBulletinBoardController, useBulletinBoardRepo, useBulletinBoardService, useBulletinVideoController, useBulletinVideoRepo, useBulletinVideoService, useCameraViewController, useCameraViewService, useCategoryPrelovedController, useCategoryPrelovedRepo, useChannelPrelovedController, useChannelPrelovedRepo, useChatController, useChatPrelovedController, useChatPrelovedRepo, useChatPrelovedService, useChatRepo, useCounterModel, useCounterRepo, useCustomerController, useCustomerRepo, useCustomerSiteController, useCustomerSiteRepo, useCustomerSiteService, useDahuaService, useDashboardController, useDashboardRepo, useDocumentManagementController, useDocumentManagementRepo, useDocumentManagementService, useEntryPassSettingsController, useEntryPassSettingsRepo, useEventManagementController, useEventManagementRepo, useEventManagementService, useFeedbackController, useFeedbackRepo, useFeedbackService, useFileController, useFileRepo, useFileService, useFormEntryController, useFormEntryRepo, useGuestManagementController, useGuestManagementRepo, useGuestManagementService, useHidAmicoController, useHidAmicoRepo, useHidAmicoService, useHrmLabsAttendanceCtrl, useHrmLabsAttendanceSrvc, useIncidentReportController, useIncidentReportRepo, useIncidentReportService, useInvoiceController, useInvoiceModel, useInvoiceRepo, useManpowerDesignationCtrl, useManpowerDesignationRepo, useManpowerMonitoringCtrl, useManpowerMonitoringRepo, useManpowerMonitoringSrvc, useManpowerRemarkCtrl, useManpowerRemarksRepo, useManpowerSitesCtrl, useManpowerSitesRepo, useManpowerSitesSrvc, useMemberController, useMemberRepo, useMemberService, useNewDashboardController, useNewDashboardRepo, useNfcPatrolLogController, useNfcPatrolLogRepo, useNfcPatrolLogService, useNfcPatrolRouteController, useNfcPatrolRouteRepo, useNfcPatrolRouteService, useNfcPatrolSettingsController, useNfcPatrolSettingsRepository, useNfcPatrolSettingsService, useNfcPatrolTagController, useNfcPatrolTagRepo, useNfcPatrolTagService, useNotificationController, useNotificationRepo, useOccurrenceBookController, useOccurrenceBookRepo, useOccurrenceBookService, useOccurrenceEntryController, useOccurrenceEntryRepo, useOccurrenceEntryService, useOccurrenceSubjectController, useOccurrenceSubjectRepo, useOccurrenceSubjectService, useOnlineFormController, useOnlineFormRepo, useOrgController, useOrgControllerV2, useOrgRepo, useOvernightParkingController, useOvernightParkingRepo, useOvernightParkingRequestController, useOvernightParkingRequestRepo, useOvernightParkingRequestService, usePatrolLogController, usePatrolLogRepo, usePatrolQuestionController, usePatrolQuestionRepo, usePatrolRouteController, usePatrolRouteRepo, usePersonController, usePersonRepo, usePostFavoriteController, usePostFavoriteRepo, usePostFavoriteService, usePostPrelovedController, usePostPrelovedRepo, usePriceController, usePriceModel, usePriceRepo, usePromoCodeController, usePromoCodeRepo, useRedDotPaymentController, useRedDotPaymentRepo, useRedDotPaymentSvc, useRobotController, useRobotRepo, useRobotService, useRoleController, useRoleControllerV2, useRoleRepo, useRoleRepoV2, useRoleServiceV2, useServiceProviderBillingController, useServiceProviderBillingRepo, useServiceProviderBillingService, useServiceProviderController, useServiceProviderRepo, useSessionRepo, useSiteBillingConfigurationController, useSiteBillingConfigurationRepo, useSiteBillingItemController, useSiteBillingItemRepo, useSiteCameraController, useSiteCameraRepo, useSiteCameraService, useSiteController, useSiteFacilityBookingController, useSiteFacilityBookingRepo, useSiteFacilityBookingService, useSiteFacilityController, useSiteFacilityRepo, useSiteFacilityService, useSiteRepo, useSiteService, useSiteUnitBillingController, useSiteUnitBillingRepo, useSiteUnitBillingService, useStatementOfAccountController, useStatementOfAccountRepo, useSubcategoryPrelovedController, useSubcategoryPrelovedRepo, useSubscriptionController, useSubscriptionRepo, useSubscriptionService, useUserController, useUserControllerV2, useUserRepo, useUserRepoV2, useUserService, useUserServiceV2, useVehicleController, useVehicleRepo, useVehicleService, useVerificationController, useVerificationControllerV2, useVerificationRepo, useVerificationRepoV2, useVerificationService, useVerificationServiceV2, useVisitorTransactionController, useVisitorTransactionRepo, useVisitorTransactionService, useWorkOrderController, useWorkOrderRepo, useWorkOrderService, userSchema, vehicleSchema, vehicles_namespace_collection, visitorPersonRepo, visitorPersonService, visitorType, visitors_namespace_collection, wallConfig, workOrderSchema, work_orders2_namespace_collection, work_orders_namespace_collection };
|