@camstack/addon-provider-amcrest 0.2.22 → 0.2.24

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
@@ -20319,6 +20319,14 @@ var ClipSchema = object({
20319
20319
  endMs: number()
20320
20320
  }),
20321
20321
  /**
20322
+ * Distinct object classes attached to this visit (`person`, `car`, …),
20323
+ * dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
20324
+ * instead of the bare kind — "Object" tells the operator nothing a colour bar
20325
+ * did not. Absent (never empty) when the visit attached no classified object
20326
+ * event, so a motion/audio-only visit keeps its kind label.
20327
+ */
20328
+ labels: array(string()).max(3).optional(),
20329
+ /**
20322
20330
  * Lazy thumbnail URL, never inlined.
20323
20331
  *
20324
20332
  * Recording-derived clips (events-mode keep-window, and the prepared
@@ -26429,9 +26437,21 @@ var RecordingLocationUsageSchema = object({
26429
26437
  * previously rendered as two identical "disks" with a nonsensical used
26430
26438
  * split — hydrate attribution across aliases is arbitrary by nature. */
26431
26439
  locationIds: array(string()).optional(),
26432
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
26440
+ /**
26441
+ * Filesystem root of the physical volume this row accounts — the only
26442
+ * operator-legible identity when a location has no `displayName` yet, and
26443
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
26444
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
26445
+ * it, and this schema must keep validating that older provider's payload.
26446
+ */
26447
+ root: string().optional(),
26448
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
26449
+ * the footage's SHARE of the volume, not how full the volume is — the disk
26450
+ * also holds everything that is not recordings. Volume fill is
26451
+ * `(totalBytes - availableBytes) / totalBytes`. */
26433
26452
  usedBytes: number(),
26434
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
26453
+ /** Free bytes on the location's volume; null when capacity is unknown
26454
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
26435
26455
  availableBytes: number().nullable(),
26436
26456
  /** Total bytes of the location's volume; null when unknown. */
26437
26457
  totalBytes: number().nullable()
@@ -26443,7 +26463,15 @@ var RecordingStorageUsageSchema = object({
26443
26463
  nodeId: string(),
26444
26464
  totalUsedBytes: number(),
26445
26465
  devices: array(RecordingDeviceUsageSchema),
26446
- locations: array(RecordingLocationUsageSchema)
26466
+ /**
26467
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
26468
+ * of the payload without it: the hub serves this method through a BAKED
26469
+ * router, so a hub whose framework train predates a change to this array
26470
+ * strips it out of an answer a newer recorder happily produced. A UI that
26471
+ * dereferences it unconditionally crashes the whole Storage page over a
26472
+ * missing disk bar.
26473
+ */
26474
+ locations: array(RecordingLocationUsageSchema).optional()
26447
26475
  });
26448
26476
  /**
26449
26477
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -37557,8 +37585,14 @@ Object.freeze({
37557
37585
  "network-access": "ingress",
37558
37586
  "smtp-provider": "email"
37559
37587
  });
37588
+ /** Schema defaults — an untouched sub-field must author exactly these. */
37589
+ var NC_AUDIO_DEFAULTS = {
37590
+ hitPercent: 60,
37591
+ samplingSeconds: 10
37592
+ };
37560
37593
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
37561
37594
  new Set(["devices", "classes"]);
37595
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
37562
37596
  /**
37563
37597
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
37564
37598
  *
package/dist/addon.mjs CHANGED
@@ -20320,6 +20320,14 @@ var ClipSchema = object({
20320
20320
  endMs: number()
20321
20321
  }),
20322
20322
  /**
20323
+ * Distinct object classes attached to this visit (`person`, `car`, …),
20324
+ * dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
20325
+ * instead of the bare kind — "Object" tells the operator nothing a colour bar
20326
+ * did not. Absent (never empty) when the visit attached no classified object
20327
+ * event, so a motion/audio-only visit keeps its kind label.
20328
+ */
20329
+ labels: array(string()).max(3).optional(),
20330
+ /**
20323
20331
  * Lazy thumbnail URL, never inlined.
20324
20332
  *
20325
20333
  * Recording-derived clips (events-mode keep-window, and the prepared
@@ -26430,9 +26438,21 @@ var RecordingLocationUsageSchema = object({
26430
26438
  * previously rendered as two identical "disks" with a nonsensical used
26431
26439
  * split — hydrate attribution across aliases is arbitrary by nature. */
26432
26440
  locationIds: array(string()).optional(),
26433
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
26441
+ /**
26442
+ * Filesystem root of the physical volume this row accounts — the only
26443
+ * operator-legible identity when a location has no `displayName` yet, and
26444
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
26445
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
26446
+ * it, and this schema must keep validating that older provider's payload.
26447
+ */
26448
+ root: string().optional(),
26449
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
26450
+ * the footage's SHARE of the volume, not how full the volume is — the disk
26451
+ * also holds everything that is not recordings. Volume fill is
26452
+ * `(totalBytes - availableBytes) / totalBytes`. */
26434
26453
  usedBytes: number(),
26435
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
26454
+ /** Free bytes on the location's volume; null when capacity is unknown
26455
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
26436
26456
  availableBytes: number().nullable(),
26437
26457
  /** Total bytes of the location's volume; null when unknown. */
26438
26458
  totalBytes: number().nullable()
@@ -26444,7 +26464,15 @@ var RecordingStorageUsageSchema = object({
26444
26464
  nodeId: string(),
26445
26465
  totalUsedBytes: number(),
26446
26466
  devices: array(RecordingDeviceUsageSchema),
26447
- locations: array(RecordingLocationUsageSchema)
26467
+ /**
26468
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
26469
+ * of the payload without it: the hub serves this method through a BAKED
26470
+ * router, so a hub whose framework train predates a change to this array
26471
+ * strips it out of an answer a newer recorder happily produced. A UI that
26472
+ * dereferences it unconditionally crashes the whole Storage page over a
26473
+ * missing disk bar.
26474
+ */
26475
+ locations: array(RecordingLocationUsageSchema).optional()
26448
26476
  });
26449
26477
  /**
26450
26478
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -37558,8 +37586,14 @@ Object.freeze({
37558
37586
  "network-access": "ingress",
37559
37587
  "smtp-provider": "email"
37560
37588
  });
37589
+ /** Schema defaults — an untouched sub-field must author exactly these. */
37590
+ var NC_AUDIO_DEFAULTS = {
37591
+ hitPercent: 60,
37592
+ samplingSeconds: 10
37593
+ };
37561
37594
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
37562
37595
  new Set(["devices", "classes"]);
37596
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
37563
37597
  /**
37564
37598
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
37565
37599
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-amcrest",
3
- "version": "0.2.22",
3
+ "version": "0.2.24",
4
4
  "description": "Amcrest/Dahua camera device provider addon for CamStack — Dahua CGI over HTTP(S) with digest auth (snapshot, RTSP catalog, PTZ, image/day-night config)",
5
5
  "keywords": [
6
6
  "camstack",