@camstack/addon-decoder-nodeav 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/index.js CHANGED
@@ -20010,6 +20010,14 @@ var ClipSchema = object({
20010
20010
  endMs: number()
20011
20011
  }),
20012
20012
  /**
20013
+ * Distinct object classes attached to this visit (`person`, `car`, …),
20014
+ * dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
20015
+ * instead of the bare kind — "Object" tells the operator nothing a colour bar
20016
+ * did not. Absent (never empty) when the visit attached no classified object
20017
+ * event, so a motion/audio-only visit keeps its kind label.
20018
+ */
20019
+ labels: array(string()).max(3).optional(),
20020
+ /**
20013
20021
  * Lazy thumbnail URL, never inlined.
20014
20022
  *
20015
20023
  * Recording-derived clips (events-mode keep-window, and the prepared
@@ -24344,9 +24352,21 @@ var RecordingLocationUsageSchema = object({
24344
24352
  * previously rendered as two identical "disks" with a nonsensical used
24345
24353
  * split — hydrate attribution across aliases is arbitrary by nature. */
24346
24354
  locationIds: array(string()).optional(),
24347
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
24355
+ /**
24356
+ * Filesystem root of the physical volume this row accounts — the only
24357
+ * operator-legible identity when a location has no `displayName` yet, and
24358
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
24359
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
24360
+ * it, and this schema must keep validating that older provider's payload.
24361
+ */
24362
+ root: string().optional(),
24363
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
24364
+ * the footage's SHARE of the volume, not how full the volume is — the disk
24365
+ * also holds everything that is not recordings. Volume fill is
24366
+ * `(totalBytes - availableBytes) / totalBytes`. */
24348
24367
  usedBytes: number(),
24349
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
24368
+ /** Free bytes on the location's volume; null when capacity is unknown
24369
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
24350
24370
  availableBytes: number().nullable(),
24351
24371
  /** Total bytes of the location's volume; null when unknown. */
24352
24372
  totalBytes: number().nullable()
@@ -24358,7 +24378,15 @@ var RecordingStorageUsageSchema = object({
24358
24378
  nodeId: string(),
24359
24379
  totalUsedBytes: number(),
24360
24380
  devices: array(RecordingDeviceUsageSchema),
24361
- locations: array(RecordingLocationUsageSchema)
24381
+ /**
24382
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
24383
+ * of the payload without it: the hub serves this method through a BAKED
24384
+ * router, so a hub whose framework train predates a change to this array
24385
+ * strips it out of an answer a newer recorder happily produced. A UI that
24386
+ * dereferences it unconditionally crashes the whole Storage page over a
24387
+ * missing disk bar.
24388
+ */
24389
+ locations: array(RecordingLocationUsageSchema).optional()
24362
24390
  });
24363
24391
  /**
24364
24392
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -33474,8 +33502,14 @@ Object.freeze({
33474
33502
  "network-access": "ingress",
33475
33503
  "smtp-provider": "email"
33476
33504
  });
33505
+ /** Schema defaults — an untouched sub-field must author exactly these. */
33506
+ var NC_AUDIO_DEFAULTS = {
33507
+ hitPercent: 60,
33508
+ samplingSeconds: 10
33509
+ };
33477
33510
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
33478
33511
  new Set(["devices", "classes"]);
33512
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
33479
33513
  /**
33480
33514
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
33481
33515
  *
package/dist/index.mjs CHANGED
@@ -20006,6 +20006,14 @@ var ClipSchema = object({
20006
20006
  endMs: number()
20007
20007
  }),
20008
20008
  /**
20009
+ * Distinct object classes attached to this visit (`person`, `car`, …),
20010
+ * dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
20011
+ * instead of the bare kind — "Object" tells the operator nothing a colour bar
20012
+ * did not. Absent (never empty) when the visit attached no classified object
20013
+ * event, so a motion/audio-only visit keeps its kind label.
20014
+ */
20015
+ labels: array(string()).max(3).optional(),
20016
+ /**
20009
20017
  * Lazy thumbnail URL, never inlined.
20010
20018
  *
20011
20019
  * Recording-derived clips (events-mode keep-window, and the prepared
@@ -24340,9 +24348,21 @@ var RecordingLocationUsageSchema = object({
24340
24348
  * previously rendered as two identical "disks" with a nonsensical used
24341
24349
  * split — hydrate attribution across aliases is arbitrary by nature. */
24342
24350
  locationIds: array(string()).optional(),
24343
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
24351
+ /**
24352
+ * Filesystem root of the physical volume this row accounts — the only
24353
+ * operator-legible identity when a location has no `displayName` yet, and
24354
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
24355
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
24356
+ * it, and this schema must keep validating that older provider's payload.
24357
+ */
24358
+ root: string().optional(),
24359
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
24360
+ * the footage's SHARE of the volume, not how full the volume is — the disk
24361
+ * also holds everything that is not recordings. Volume fill is
24362
+ * `(totalBytes - availableBytes) / totalBytes`. */
24344
24363
  usedBytes: number(),
24345
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
24364
+ /** Free bytes on the location's volume; null when capacity is unknown
24365
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
24346
24366
  availableBytes: number().nullable(),
24347
24367
  /** Total bytes of the location's volume; null when unknown. */
24348
24368
  totalBytes: number().nullable()
@@ -24354,7 +24374,15 @@ var RecordingStorageUsageSchema = object({
24354
24374
  nodeId: string(),
24355
24375
  totalUsedBytes: number(),
24356
24376
  devices: array(RecordingDeviceUsageSchema),
24357
- locations: array(RecordingLocationUsageSchema)
24377
+ /**
24378
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
24379
+ * of the payload without it: the hub serves this method through a BAKED
24380
+ * router, so a hub whose framework train predates a change to this array
24381
+ * strips it out of an answer a newer recorder happily produced. A UI that
24382
+ * dereferences it unconditionally crashes the whole Storage page over a
24383
+ * missing disk bar.
24384
+ */
24385
+ locations: array(RecordingLocationUsageSchema).optional()
24358
24386
  });
24359
24387
  /**
24360
24388
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -33470,8 +33498,14 @@ Object.freeze({
33470
33498
  "network-access": "ingress",
33471
33499
  "smtp-provider": "email"
33472
33500
  });
33501
+ /** Schema defaults — an untouched sub-field must author exactly these. */
33502
+ var NC_AUDIO_DEFAULTS = {
33503
+ hitPercent: 60,
33504
+ samplingSeconds: 10
33505
+ };
33473
33506
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
33474
33507
  new Set(["devices", "classes"]);
33508
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
33475
33509
  /**
33476
33510
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
33477
33511
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-decoder-nodeav",
3
- "version": "1.2.20",
3
+ "version": "1.2.22",
4
4
  "description": "Standalone in-process node-av decoder addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",