@camstack/addon-provider-petkit 0.2.22 → 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 CHANGED
@@ -27379,9 +27379,21 @@ var RecordingLocationUsageSchema = object({
27379
27379
  * previously rendered as two identical "disks" with a nonsensical used
27380
27380
  * split — hydrate attribution across aliases is arbitrary by nature. */
27381
27381
  locationIds: array(string()).optional(),
27382
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
27382
+ /**
27383
+ * Filesystem root of the physical volume this row accounts — the only
27384
+ * operator-legible identity when a location has no `displayName` yet, and
27385
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
27386
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
27387
+ * it, and this schema must keep validating that older provider's payload.
27388
+ */
27389
+ root: string().optional(),
27390
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
27391
+ * the footage's SHARE of the volume, not how full the volume is — the disk
27392
+ * also holds everything that is not recordings. Volume fill is
27393
+ * `(totalBytes - availableBytes) / totalBytes`. */
27383
27394
  usedBytes: number(),
27384
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
27395
+ /** Free bytes on the location's volume; null when capacity is unknown
27396
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
27385
27397
  availableBytes: number().nullable(),
27386
27398
  /** Total bytes of the location's volume; null when unknown. */
27387
27399
  totalBytes: number().nullable()
@@ -27393,7 +27405,15 @@ var RecordingStorageUsageSchema = object({
27393
27405
  nodeId: string(),
27394
27406
  totalUsedBytes: number(),
27395
27407
  devices: array(RecordingDeviceUsageSchema),
27396
- locations: array(RecordingLocationUsageSchema)
27408
+ /**
27409
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
27410
+ * of the payload without it: the hub serves this method through a BAKED
27411
+ * router, so a hub whose framework train predates a change to this array
27412
+ * strips it out of an answer a newer recorder happily produced. A UI that
27413
+ * dereferences it unconditionally crashes the whole Storage page over a
27414
+ * missing disk bar.
27415
+ */
27416
+ locations: array(RecordingLocationUsageSchema).optional()
27397
27417
  });
27398
27418
  /**
27399
27419
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -38178,8 +38198,14 @@ Object.freeze({
38178
38198
  "network-access": "ingress",
38179
38199
  "smtp-provider": "email"
38180
38200
  });
38201
+ /** Schema defaults — an untouched sub-field must author exactly these. */
38202
+ var NC_AUDIO_DEFAULTS = {
38203
+ hitPercent: 60,
38204
+ samplingSeconds: 10
38205
+ };
38181
38206
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
38182
38207
  new Set(["devices", "classes"]);
38208
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
38183
38209
  /**
38184
38210
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
38185
38211
  *
package/dist/addon.mjs CHANGED
@@ -27378,9 +27378,21 @@ var RecordingLocationUsageSchema = object({
27378
27378
  * previously rendered as two identical "disks" with a nonsensical used
27379
27379
  * split — hydrate attribution across aliases is arbitrary by nature. */
27380
27380
  locationIds: array(string()).optional(),
27381
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
27381
+ /**
27382
+ * Filesystem root of the physical volume this row accounts — the only
27383
+ * operator-legible identity when a location has no `displayName` yet, and
27384
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
27385
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
27386
+ * it, and this schema must keep validating that older provider's payload.
27387
+ */
27388
+ root: string().optional(),
27389
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
27390
+ * the footage's SHARE of the volume, not how full the volume is — the disk
27391
+ * also holds everything that is not recordings. Volume fill is
27392
+ * `(totalBytes - availableBytes) / totalBytes`. */
27382
27393
  usedBytes: number(),
27383
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
27394
+ /** Free bytes on the location's volume; null when capacity is unknown
27395
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
27384
27396
  availableBytes: number().nullable(),
27385
27397
  /** Total bytes of the location's volume; null when unknown. */
27386
27398
  totalBytes: number().nullable()
@@ -27392,7 +27404,15 @@ var RecordingStorageUsageSchema = object({
27392
27404
  nodeId: string(),
27393
27405
  totalUsedBytes: number(),
27394
27406
  devices: array(RecordingDeviceUsageSchema),
27395
- locations: array(RecordingLocationUsageSchema)
27407
+ /**
27408
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
27409
+ * of the payload without it: the hub serves this method through a BAKED
27410
+ * router, so a hub whose framework train predates a change to this array
27411
+ * strips it out of an answer a newer recorder happily produced. A UI that
27412
+ * dereferences it unconditionally crashes the whole Storage page over a
27413
+ * missing disk bar.
27414
+ */
27415
+ locations: array(RecordingLocationUsageSchema).optional()
27396
27416
  });
27397
27417
  /**
27398
27418
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -38177,8 +38197,14 @@ Object.freeze({
38177
38197
  "network-access": "ingress",
38178
38198
  "smtp-provider": "email"
38179
38199
  });
38200
+ /** Schema defaults — an untouched sub-field must author exactly these. */
38201
+ var NC_AUDIO_DEFAULTS = {
38202
+ hitPercent: 60,
38203
+ samplingSeconds: 10
38204
+ };
38180
38205
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
38181
38206
  new Set(["devices", "classes"]);
38207
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
38182
38208
  /**
38183
38209
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
38184
38210
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-petkit",
3
- "version": "0.2.22",
3
+ "version": "0.2.23",
4
4
  "description": "PetKit smart-feeder device-provider addon for CamStack — wraps the @apocaliss92/nodepetkit PetKit cloud client",
5
5
  "keywords": [
6
6
  "camstack",