@camstack/addon-provider-unifi 0.2.21 → 0.2.23
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/addon.js +37 -3
- package/dist/addon.mjs +37 -3
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -20222,6 +20222,14 @@ var ClipSchema = object({
|
|
|
20222
20222
|
endMs: number()
|
|
20223
20223
|
}),
|
|
20224
20224
|
/**
|
|
20225
|
+
* Distinct object classes attached to this visit (`person`, `car`, …),
|
|
20226
|
+
* dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
|
|
20227
|
+
* instead of the bare kind — "Object" tells the operator nothing a colour bar
|
|
20228
|
+
* did not. Absent (never empty) when the visit attached no classified object
|
|
20229
|
+
* event, so a motion/audio-only visit keeps its kind label.
|
|
20230
|
+
*/
|
|
20231
|
+
labels: array(string()).max(3).optional(),
|
|
20232
|
+
/**
|
|
20225
20233
|
* Lazy thumbnail URL, never inlined.
|
|
20226
20234
|
*
|
|
20227
20235
|
* Recording-derived clips (events-mode keep-window, and the prepared
|
|
@@ -26261,9 +26269,21 @@ var RecordingLocationUsageSchema = object({
|
|
|
26261
26269
|
* previously rendered as two identical "disks" with a nonsensical used
|
|
26262
26270
|
* split — hydrate attribution across aliases is arbitrary by nature. */
|
|
26263
26271
|
locationIds: array(string()).optional(),
|
|
26264
|
-
/**
|
|
26272
|
+
/**
|
|
26273
|
+
* Filesystem root of the physical volume this row accounts — the only
|
|
26274
|
+
* operator-legible identity when a location has no `displayName` yet, and
|
|
26275
|
+
* what a "which disk is full" alert has to name. OPTIONAL for the same
|
|
26276
|
+
* train-skew reason as `oldestMs`: a recorder that predates the field omits
|
|
26277
|
+
* it, and this schema must keep validating that older provider's payload.
|
|
26278
|
+
*/
|
|
26279
|
+
root: string().optional(),
|
|
26280
|
+
/** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
|
|
26281
|
+
* the footage's SHARE of the volume, not how full the volume is — the disk
|
|
26282
|
+
* also holds everything that is not recordings. Volume fill is
|
|
26283
|
+
* `(totalBytes - availableBytes) / totalBytes`. */
|
|
26265
26284
|
usedBytes: number(),
|
|
26266
|
-
/** Free bytes on the location's volume; null when capacity is unknown
|
|
26285
|
+
/** Free bytes on the location's volume; null when capacity is unknown
|
|
26286
|
+
* (remote/unstattable — the recorder logs the statfs failure with the root). */
|
|
26267
26287
|
availableBytes: number().nullable(),
|
|
26268
26288
|
/** Total bytes of the location's volume; null when unknown. */
|
|
26269
26289
|
totalBytes: number().nullable()
|
|
@@ -26275,7 +26295,15 @@ var RecordingStorageUsageSchema = object({
|
|
|
26275
26295
|
nodeId: string(),
|
|
26276
26296
|
totalUsedBytes: number(),
|
|
26277
26297
|
devices: array(RecordingDeviceUsageSchema),
|
|
26278
|
-
|
|
26298
|
+
/**
|
|
26299
|
+
* Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
|
|
26300
|
+
* of the payload without it: the hub serves this method through a BAKED
|
|
26301
|
+
* router, so a hub whose framework train predates a change to this array
|
|
26302
|
+
* strips it out of an answer a newer recorder happily produced. A UI that
|
|
26303
|
+
* dereferences it unconditionally crashes the whole Storage page over a
|
|
26304
|
+
* missing disk bar.
|
|
26305
|
+
*/
|
|
26306
|
+
locations: array(RecordingLocationUsageSchema).optional()
|
|
26279
26307
|
});
|
|
26280
26308
|
/**
|
|
26281
26309
|
* The OPERATOR-ARMED half of multi-location recordings (D116).
|
|
@@ -37060,8 +37088,14 @@ Object.freeze({
|
|
|
37060
37088
|
"network-access": "ingress",
|
|
37061
37089
|
"smtp-provider": "email"
|
|
37062
37090
|
});
|
|
37091
|
+
/** Schema defaults — an untouched sub-field must author exactly these. */
|
|
37092
|
+
var NC_AUDIO_DEFAULTS = {
|
|
37093
|
+
hitPercent: 60,
|
|
37094
|
+
samplingSeconds: 10
|
|
37095
|
+
};
|
|
37063
37096
|
new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
|
|
37064
37097
|
new Set(["devices", "classes"]);
|
|
37098
|
+
NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
|
|
37065
37099
|
/**
|
|
37066
37100
|
* TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
|
|
37067
37101
|
*
|
package/dist/addon.mjs
CHANGED
|
@@ -20221,6 +20221,14 @@ var ClipSchema = object({
|
|
|
20221
20221
|
endMs: number()
|
|
20222
20222
|
}),
|
|
20223
20223
|
/**
|
|
20224
|
+
* Distinct object classes attached to this visit (`person`, `car`, …),
|
|
20225
|
+
* dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
|
|
20226
|
+
* instead of the bare kind — "Object" tells the operator nothing a colour bar
|
|
20227
|
+
* did not. Absent (never empty) when the visit attached no classified object
|
|
20228
|
+
* event, so a motion/audio-only visit keeps its kind label.
|
|
20229
|
+
*/
|
|
20230
|
+
labels: array(string()).max(3).optional(),
|
|
20231
|
+
/**
|
|
20224
20232
|
* Lazy thumbnail URL, never inlined.
|
|
20225
20233
|
*
|
|
20226
20234
|
* Recording-derived clips (events-mode keep-window, and the prepared
|
|
@@ -26260,9 +26268,21 @@ var RecordingLocationUsageSchema = object({
|
|
|
26260
26268
|
* previously rendered as two identical "disks" with a nonsensical used
|
|
26261
26269
|
* split — hydrate attribution across aliases is arbitrary by nature. */
|
|
26262
26270
|
locationIds: array(string()).optional(),
|
|
26263
|
-
/**
|
|
26271
|
+
/**
|
|
26272
|
+
* Filesystem root of the physical volume this row accounts — the only
|
|
26273
|
+
* operator-legible identity when a location has no `displayName` yet, and
|
|
26274
|
+
* what a "which disk is full" alert has to name. OPTIONAL for the same
|
|
26275
|
+
* train-skew reason as `oldestMs`: a recorder that predates the field omits
|
|
26276
|
+
* it, and this schema must keep validating that older provider's payload.
|
|
26277
|
+
*/
|
|
26278
|
+
root: string().optional(),
|
|
26279
|
+
/** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
|
|
26280
|
+
* the footage's SHARE of the volume, not how full the volume is — the disk
|
|
26281
|
+
* also holds everything that is not recordings. Volume fill is
|
|
26282
|
+
* `(totalBytes - availableBytes) / totalBytes`. */
|
|
26264
26283
|
usedBytes: number(),
|
|
26265
|
-
/** Free bytes on the location's volume; null when capacity is unknown
|
|
26284
|
+
/** Free bytes on the location's volume; null when capacity is unknown
|
|
26285
|
+
* (remote/unstattable — the recorder logs the statfs failure with the root). */
|
|
26266
26286
|
availableBytes: number().nullable(),
|
|
26267
26287
|
/** Total bytes of the location's volume; null when unknown. */
|
|
26268
26288
|
totalBytes: number().nullable()
|
|
@@ -26274,7 +26294,15 @@ var RecordingStorageUsageSchema = object({
|
|
|
26274
26294
|
nodeId: string(),
|
|
26275
26295
|
totalUsedBytes: number(),
|
|
26276
26296
|
devices: array(RecordingDeviceUsageSchema),
|
|
26277
|
-
|
|
26297
|
+
/**
|
|
26298
|
+
* Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
|
|
26299
|
+
* of the payload without it: the hub serves this method through a BAKED
|
|
26300
|
+
* router, so a hub whose framework train predates a change to this array
|
|
26301
|
+
* strips it out of an answer a newer recorder happily produced. A UI that
|
|
26302
|
+
* dereferences it unconditionally crashes the whole Storage page over a
|
|
26303
|
+
* missing disk bar.
|
|
26304
|
+
*/
|
|
26305
|
+
locations: array(RecordingLocationUsageSchema).optional()
|
|
26278
26306
|
});
|
|
26279
26307
|
/**
|
|
26280
26308
|
* The OPERATOR-ARMED half of multi-location recordings (D116).
|
|
@@ -37059,8 +37087,14 @@ Object.freeze({
|
|
|
37059
37087
|
"network-access": "ingress",
|
|
37060
37088
|
"smtp-provider": "email"
|
|
37061
37089
|
});
|
|
37090
|
+
/** Schema defaults — an untouched sub-field must author exactly these. */
|
|
37091
|
+
var NC_AUDIO_DEFAULTS = {
|
|
37092
|
+
hitPercent: 60,
|
|
37093
|
+
samplingSeconds: 10
|
|
37094
|
+
};
|
|
37062
37095
|
new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
|
|
37063
37096
|
new Set(["devices", "classes"]);
|
|
37097
|
+
NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
|
|
37064
37098
|
/**
|
|
37065
37099
|
* TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
|
|
37066
37100
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-unifi",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.23",
|
|
4
4
|
"description": "UniFi Network controller device-provider addon for CamStack — local-controller infra switches/APs (as containers) + network-client presence. NO cameras/Protect.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|