@camstack/addon-provider-rtsp 1.2.21 → 1.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 CHANGED
@@ -20382,6 +20382,14 @@ var ClipSchema = object({
20382
20382
  endMs: number()
20383
20383
  }),
20384
20384
  /**
20385
+ * Distinct object classes attached to this visit (`person`, `car`, …),
20386
+ * dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
20387
+ * instead of the bare kind — "Object" tells the operator nothing a colour bar
20388
+ * did not. Absent (never empty) when the visit attached no classified object
20389
+ * event, so a motion/audio-only visit keeps its kind label.
20390
+ */
20391
+ labels: array(string()).max(3).optional(),
20392
+ /**
20385
20393
  * Lazy thumbnail URL, never inlined.
20386
20394
  *
20387
20395
  * Recording-derived clips (events-mode keep-window, and the prepared
@@ -26412,9 +26420,21 @@ var RecordingLocationUsageSchema = object({
26412
26420
  * previously rendered as two identical "disks" with a nonsensical used
26413
26421
  * split — hydrate attribution across aliases is arbitrary by nature. */
26414
26422
  locationIds: array(string()).optional(),
26415
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
26423
+ /**
26424
+ * Filesystem root of the physical volume this row accounts — the only
26425
+ * operator-legible identity when a location has no `displayName` yet, and
26426
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
26427
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
26428
+ * it, and this schema must keep validating that older provider's payload.
26429
+ */
26430
+ root: string().optional(),
26431
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
26432
+ * the footage's SHARE of the volume, not how full the volume is — the disk
26433
+ * also holds everything that is not recordings. Volume fill is
26434
+ * `(totalBytes - availableBytes) / totalBytes`. */
26416
26435
  usedBytes: number(),
26417
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
26436
+ /** Free bytes on the location's volume; null when capacity is unknown
26437
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
26418
26438
  availableBytes: number().nullable(),
26419
26439
  /** Total bytes of the location's volume; null when unknown. */
26420
26440
  totalBytes: number().nullable()
@@ -26426,7 +26446,15 @@ var RecordingStorageUsageSchema = object({
26426
26446
  nodeId: string(),
26427
26447
  totalUsedBytes: number(),
26428
26448
  devices: array(RecordingDeviceUsageSchema),
26429
- locations: array(RecordingLocationUsageSchema)
26449
+ /**
26450
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
26451
+ * of the payload without it: the hub serves this method through a BAKED
26452
+ * router, so a hub whose framework train predates a change to this array
26453
+ * strips it out of an answer a newer recorder happily produced. A UI that
26454
+ * dereferences it unconditionally crashes the whole Storage page over a
26455
+ * missing disk bar.
26456
+ */
26457
+ locations: array(RecordingLocationUsageSchema).optional()
26430
26458
  });
26431
26459
  /**
26432
26460
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -37277,8 +37305,14 @@ Object.freeze({
37277
37305
  "network-access": "ingress",
37278
37306
  "smtp-provider": "email"
37279
37307
  });
37308
+ /** Schema defaults — an untouched sub-field must author exactly these. */
37309
+ var NC_AUDIO_DEFAULTS = {
37310
+ hitPercent: 60,
37311
+ samplingSeconds: 10
37312
+ };
37280
37313
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
37281
37314
  new Set(["devices", "classes"]);
37315
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
37282
37316
  /**
37283
37317
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
37284
37318
  *
package/dist/addon.mjs CHANGED
@@ -20358,6 +20358,14 @@ var ClipSchema = object({
20358
20358
  endMs: number()
20359
20359
  }),
20360
20360
  /**
20361
+ * Distinct object classes attached to this visit (`person`, `car`, …),
20362
+ * dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
20363
+ * instead of the bare kind — "Object" tells the operator nothing a colour bar
20364
+ * did not. Absent (never empty) when the visit attached no classified object
20365
+ * event, so a motion/audio-only visit keeps its kind label.
20366
+ */
20367
+ labels: array(string()).max(3).optional(),
20368
+ /**
20361
20369
  * Lazy thumbnail URL, never inlined.
20362
20370
  *
20363
20371
  * Recording-derived clips (events-mode keep-window, and the prepared
@@ -26388,9 +26396,21 @@ var RecordingLocationUsageSchema = object({
26388
26396
  * previously rendered as two identical "disks" with a nonsensical used
26389
26397
  * split — hydrate attribution across aliases is arbitrary by nature. */
26390
26398
  locationIds: array(string()).optional(),
26391
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
26399
+ /**
26400
+ * Filesystem root of the physical volume this row accounts — the only
26401
+ * operator-legible identity when a location has no `displayName` yet, and
26402
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
26403
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
26404
+ * it, and this schema must keep validating that older provider's payload.
26405
+ */
26406
+ root: string().optional(),
26407
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
26408
+ * the footage's SHARE of the volume, not how full the volume is — the disk
26409
+ * also holds everything that is not recordings. Volume fill is
26410
+ * `(totalBytes - availableBytes) / totalBytes`. */
26392
26411
  usedBytes: number(),
26393
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
26412
+ /** Free bytes on the location's volume; null when capacity is unknown
26413
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
26394
26414
  availableBytes: number().nullable(),
26395
26415
  /** Total bytes of the location's volume; null when unknown. */
26396
26416
  totalBytes: number().nullable()
@@ -26402,7 +26422,15 @@ var RecordingStorageUsageSchema = object({
26402
26422
  nodeId: string(),
26403
26423
  totalUsedBytes: number(),
26404
26424
  devices: array(RecordingDeviceUsageSchema),
26405
- locations: array(RecordingLocationUsageSchema)
26425
+ /**
26426
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
26427
+ * of the payload without it: the hub serves this method through a BAKED
26428
+ * router, so a hub whose framework train predates a change to this array
26429
+ * strips it out of an answer a newer recorder happily produced. A UI that
26430
+ * dereferences it unconditionally crashes the whole Storage page over a
26431
+ * missing disk bar.
26432
+ */
26433
+ locations: array(RecordingLocationUsageSchema).optional()
26406
26434
  });
26407
26435
  /**
26408
26436
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -37253,8 +37281,14 @@ Object.freeze({
37253
37281
  "network-access": "ingress",
37254
37282
  "smtp-provider": "email"
37255
37283
  });
37284
+ /** Schema defaults — an untouched sub-field must author exactly these. */
37285
+ var NC_AUDIO_DEFAULTS = {
37286
+ hitPercent: 60,
37287
+ samplingSeconds: 10
37288
+ };
37256
37289
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
37257
37290
  new Set(["devices", "classes"]);
37291
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
37258
37292
  /**
37259
37293
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
37260
37294
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-rtsp",
3
- "version": "1.2.21",
3
+ "version": "1.2.23",
4
4
  "description": "Generic RTSP camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",