@camstack/addon-provider-onvif 1.2.20 → 1.2.22

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 CHANGED
@@ -20038,6 +20038,14 @@ var ClipSchema = object({
20038
20038
  endMs: number()
20039
20039
  }),
20040
20040
  /**
20041
+ * Distinct object classes attached to this visit (`person`, `car`, …),
20042
+ * dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
20043
+ * instead of the bare kind — "Object" tells the operator nothing a colour bar
20044
+ * did not. Absent (never empty) when the visit attached no classified object
20045
+ * event, so a motion/audio-only visit keeps its kind label.
20046
+ */
20047
+ labels: array(string()).max(3).optional(),
20048
+ /**
20041
20049
  * Lazy thumbnail URL, never inlined.
20042
20050
  *
20043
20051
  * Recording-derived clips (events-mode keep-window, and the prepared
@@ -24414,9 +24422,21 @@ var RecordingLocationUsageSchema = object({
24414
24422
  * previously rendered as two identical "disks" with a nonsensical used
24415
24423
  * split — hydrate attribution across aliases is arbitrary by nature. */
24416
24424
  locationIds: array(string()).optional(),
24417
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
24425
+ /**
24426
+ * Filesystem root of the physical volume this row accounts — the only
24427
+ * operator-legible identity when a location has no `displayName` yet, and
24428
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
24429
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
24430
+ * it, and this schema must keep validating that older provider's payload.
24431
+ */
24432
+ root: string().optional(),
24433
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
24434
+ * the footage's SHARE of the volume, not how full the volume is — the disk
24435
+ * also holds everything that is not recordings. Volume fill is
24436
+ * `(totalBytes - availableBytes) / totalBytes`. */
24418
24437
  usedBytes: number(),
24419
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
24438
+ /** Free bytes on the location's volume; null when capacity is unknown
24439
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
24420
24440
  availableBytes: number().nullable(),
24421
24441
  /** Total bytes of the location's volume; null when unknown. */
24422
24442
  totalBytes: number().nullable()
@@ -24428,7 +24448,15 @@ var RecordingStorageUsageSchema = object({
24428
24448
  nodeId: string(),
24429
24449
  totalUsedBytes: number(),
24430
24450
  devices: array(RecordingDeviceUsageSchema),
24431
- locations: array(RecordingLocationUsageSchema)
24451
+ /**
24452
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
24453
+ * of the payload without it: the hub serves this method through a BAKED
24454
+ * router, so a hub whose framework train predates a change to this array
24455
+ * strips it out of an answer a newer recorder happily produced. A UI that
24456
+ * dereferences it unconditionally crashes the whole Storage page over a
24457
+ * missing disk bar.
24458
+ */
24459
+ locations: array(RecordingLocationUsageSchema).optional()
24432
24460
  });
24433
24461
  /**
24434
24462
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -33954,8 +33982,14 @@ Object.freeze({
33954
33982
  "network-access": "ingress",
33955
33983
  "smtp-provider": "email"
33956
33984
  });
33985
+ /** Schema defaults — an untouched sub-field must author exactly these. */
33986
+ var NC_AUDIO_DEFAULTS = {
33987
+ hitPercent: 60,
33988
+ samplingSeconds: 10
33989
+ };
33957
33990
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
33958
33991
  new Set(["devices", "classes"]);
33992
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
33959
33993
  /**
33960
33994
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
33961
33995
  *
package/dist/addon.mjs CHANGED
@@ -20039,6 +20039,14 @@ var ClipSchema = object({
20039
20039
  endMs: number()
20040
20040
  }),
20041
20041
  /**
20042
+ * Distinct object classes attached to this visit (`person`, `car`, …),
20043
+ * dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
20044
+ * instead of the bare kind — "Object" tells the operator nothing a colour bar
20045
+ * did not. Absent (never empty) when the visit attached no classified object
20046
+ * event, so a motion/audio-only visit keeps its kind label.
20047
+ */
20048
+ labels: array(string()).max(3).optional(),
20049
+ /**
20042
20050
  * Lazy thumbnail URL, never inlined.
20043
20051
  *
20044
20052
  * Recording-derived clips (events-mode keep-window, and the prepared
@@ -24415,9 +24423,21 @@ var RecordingLocationUsageSchema = object({
24415
24423
  * previously rendered as two identical "disks" with a nonsensical used
24416
24424
  * split — hydrate attribution across aliases is arbitrary by nature. */
24417
24425
  locationIds: array(string()).optional(),
24418
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
24426
+ /**
24427
+ * Filesystem root of the physical volume this row accounts — the only
24428
+ * operator-legible identity when a location has no `displayName` yet, and
24429
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
24430
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
24431
+ * it, and this schema must keep validating that older provider's payload.
24432
+ */
24433
+ root: string().optional(),
24434
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
24435
+ * the footage's SHARE of the volume, not how full the volume is — the disk
24436
+ * also holds everything that is not recordings. Volume fill is
24437
+ * `(totalBytes - availableBytes) / totalBytes`. */
24419
24438
  usedBytes: number(),
24420
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
24439
+ /** Free bytes on the location's volume; null when capacity is unknown
24440
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
24421
24441
  availableBytes: number().nullable(),
24422
24442
  /** Total bytes of the location's volume; null when unknown. */
24423
24443
  totalBytes: number().nullable()
@@ -24429,7 +24449,15 @@ var RecordingStorageUsageSchema = object({
24429
24449
  nodeId: string(),
24430
24450
  totalUsedBytes: number(),
24431
24451
  devices: array(RecordingDeviceUsageSchema),
24432
- locations: array(RecordingLocationUsageSchema)
24452
+ /**
24453
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
24454
+ * of the payload without it: the hub serves this method through a BAKED
24455
+ * router, so a hub whose framework train predates a change to this array
24456
+ * strips it out of an answer a newer recorder happily produced. A UI that
24457
+ * dereferences it unconditionally crashes the whole Storage page over a
24458
+ * missing disk bar.
24459
+ */
24460
+ locations: array(RecordingLocationUsageSchema).optional()
24433
24461
  });
24434
24462
  /**
24435
24463
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -33955,8 +33983,14 @@ Object.freeze({
33955
33983
  "network-access": "ingress",
33956
33984
  "smtp-provider": "email"
33957
33985
  });
33986
+ /** Schema defaults — an untouched sub-field must author exactly these. */
33987
+ var NC_AUDIO_DEFAULTS = {
33988
+ hitPercent: 60,
33989
+ samplingSeconds: 10
33990
+ };
33958
33991
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
33959
33992
  new Set(["devices", "classes"]);
33993
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
33960
33994
  /**
33961
33995
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
33962
33996
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-onvif",
3
- "version": "1.2.20",
3
+ "version": "1.2.22",
4
4
  "description": "ONVIF camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",