@camstack/addon-provider-amcrest 0.2.23 → 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
@@ -26437,9 +26437,21 @@ var RecordingLocationUsageSchema = object({
26437
26437
  * previously rendered as two identical "disks" with a nonsensical used
26438
26438
  * split — hydrate attribution across aliases is arbitrary by nature. */
26439
26439
  locationIds: array(string()).optional(),
26440
- /** 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`. */
26441
26452
  usedBytes: number(),
26442
- /** 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). */
26443
26455
  availableBytes: number().nullable(),
26444
26456
  /** Total bytes of the location's volume; null when unknown. */
26445
26457
  totalBytes: number().nullable()
@@ -26451,7 +26463,15 @@ var RecordingStorageUsageSchema = object({
26451
26463
  nodeId: string(),
26452
26464
  totalUsedBytes: number(),
26453
26465
  devices: array(RecordingDeviceUsageSchema),
26454
- 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()
26455
26475
  });
26456
26476
  /**
26457
26477
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -37565,8 +37585,14 @@ Object.freeze({
37565
37585
  "network-access": "ingress",
37566
37586
  "smtp-provider": "email"
37567
37587
  });
37588
+ /** Schema defaults — an untouched sub-field must author exactly these. */
37589
+ var NC_AUDIO_DEFAULTS = {
37590
+ hitPercent: 60,
37591
+ samplingSeconds: 10
37592
+ };
37568
37593
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
37569
37594
  new Set(["devices", "classes"]);
37595
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
37570
37596
  /**
37571
37597
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
37572
37598
  *
package/dist/addon.mjs CHANGED
@@ -26438,9 +26438,21 @@ var RecordingLocationUsageSchema = object({
26438
26438
  * previously rendered as two identical "disks" with a nonsensical used
26439
26439
  * split — hydrate attribution across aliases is arbitrary by nature. */
26440
26440
  locationIds: array(string()).optional(),
26441
- /** 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`. */
26442
26453
  usedBytes: number(),
26443
- /** 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). */
26444
26456
  availableBytes: number().nullable(),
26445
26457
  /** Total bytes of the location's volume; null when unknown. */
26446
26458
  totalBytes: number().nullable()
@@ -26452,7 +26464,15 @@ var RecordingStorageUsageSchema = object({
26452
26464
  nodeId: string(),
26453
26465
  totalUsedBytes: number(),
26454
26466
  devices: array(RecordingDeviceUsageSchema),
26455
- 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()
26456
26476
  });
26457
26477
  /**
26458
26478
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -37566,8 +37586,14 @@ Object.freeze({
37566
37586
  "network-access": "ingress",
37567
37587
  "smtp-provider": "email"
37568
37588
  });
37589
+ /** Schema defaults — an untouched sub-field must author exactly these. */
37590
+ var NC_AUDIO_DEFAULTS = {
37591
+ hitPercent: 60,
37592
+ samplingSeconds: 10
37593
+ };
37569
37594
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
37570
37595
  new Set(["devices", "classes"]);
37596
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
37571
37597
  /**
37572
37598
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
37573
37599
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-amcrest",
3
- "version": "0.2.23",
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",