@camstack/addon-static-turn 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.
@@ -19887,6 +19887,14 @@ var ClipSchema = object({
19887
19887
  endMs: number()
19888
19888
  }),
19889
19889
  /**
19890
+ * Distinct object classes attached to this visit (`person`, `car`, …),
19891
+ * dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
19892
+ * instead of the bare kind — "Object" tells the operator nothing a colour bar
19893
+ * did not. Absent (never empty) when the visit attached no classified object
19894
+ * event, so a motion/audio-only visit keeps its kind label.
19895
+ */
19896
+ labels: array(string()).max(3).optional(),
19897
+ /**
19890
19898
  * Lazy thumbnail URL, never inlined.
19891
19899
  *
19892
19900
  * Recording-derived clips (events-mode keep-window, and the prepared
@@ -24221,9 +24229,21 @@ var RecordingLocationUsageSchema = object({
24221
24229
  * previously rendered as two identical "disks" with a nonsensical used
24222
24230
  * split — hydrate attribution across aliases is arbitrary by nature. */
24223
24231
  locationIds: array(string()).optional(),
24224
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
24232
+ /**
24233
+ * Filesystem root of the physical volume this row accounts — the only
24234
+ * operator-legible identity when a location has no `displayName` yet, and
24235
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
24236
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
24237
+ * it, and this schema must keep validating that older provider's payload.
24238
+ */
24239
+ root: string().optional(),
24240
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
24241
+ * the footage's SHARE of the volume, not how full the volume is — the disk
24242
+ * also holds everything that is not recordings. Volume fill is
24243
+ * `(totalBytes - availableBytes) / totalBytes`. */
24225
24244
  usedBytes: number(),
24226
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
24245
+ /** Free bytes on the location's volume; null when capacity is unknown
24246
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
24227
24247
  availableBytes: number().nullable(),
24228
24248
  /** Total bytes of the location's volume; null when unknown. */
24229
24249
  totalBytes: number().nullable()
@@ -24235,7 +24255,15 @@ var RecordingStorageUsageSchema = object({
24235
24255
  nodeId: string(),
24236
24256
  totalUsedBytes: number(),
24237
24257
  devices: array(RecordingDeviceUsageSchema),
24238
- locations: array(RecordingLocationUsageSchema)
24258
+ /**
24259
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
24260
+ * of the payload without it: the hub serves this method through a BAKED
24261
+ * router, so a hub whose framework train predates a change to this array
24262
+ * strips it out of an answer a newer recorder happily produced. A UI that
24263
+ * dereferences it unconditionally crashes the whole Storage page over a
24264
+ * missing disk bar.
24265
+ */
24266
+ locations: array(RecordingLocationUsageSchema).optional()
24239
24267
  });
24240
24268
  /**
24241
24269
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -33351,8 +33379,14 @@ Object.freeze({
33351
33379
  "network-access": "ingress",
33352
33380
  "smtp-provider": "email"
33353
33381
  });
33382
+ /** Schema defaults — an untouched sub-field must author exactly these. */
33383
+ var NC_AUDIO_DEFAULTS = {
33384
+ hitPercent: 60,
33385
+ samplingSeconds: 10
33386
+ };
33354
33387
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
33355
33388
  new Set(["devices", "classes"]);
33389
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
33356
33390
  /**
33357
33391
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
33358
33392
  *
@@ -19886,6 +19886,14 @@ var ClipSchema = object({
19886
19886
  endMs: number()
19887
19887
  }),
19888
19888
  /**
19889
+ * Distinct object classes attached to this visit (`person`, `car`, …),
19890
+ * dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
19891
+ * instead of the bare kind — "Object" tells the operator nothing a colour bar
19892
+ * did not. Absent (never empty) when the visit attached no classified object
19893
+ * event, so a motion/audio-only visit keeps its kind label.
19894
+ */
19895
+ labels: array(string()).max(3).optional(),
19896
+ /**
19889
19897
  * Lazy thumbnail URL, never inlined.
19890
19898
  *
19891
19899
  * Recording-derived clips (events-mode keep-window, and the prepared
@@ -24220,9 +24228,21 @@ var RecordingLocationUsageSchema = object({
24220
24228
  * previously rendered as two identical "disks" with a nonsensical used
24221
24229
  * split — hydrate attribution across aliases is arbitrary by nature. */
24222
24230
  locationIds: array(string()).optional(),
24223
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
24231
+ /**
24232
+ * Filesystem root of the physical volume this row accounts — the only
24233
+ * operator-legible identity when a location has no `displayName` yet, and
24234
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
24235
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
24236
+ * it, and this schema must keep validating that older provider's payload.
24237
+ */
24238
+ root: string().optional(),
24239
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
24240
+ * the footage's SHARE of the volume, not how full the volume is — the disk
24241
+ * also holds everything that is not recordings. Volume fill is
24242
+ * `(totalBytes - availableBytes) / totalBytes`. */
24224
24243
  usedBytes: number(),
24225
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
24244
+ /** Free bytes on the location's volume; null when capacity is unknown
24245
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
24226
24246
  availableBytes: number().nullable(),
24227
24247
  /** Total bytes of the location's volume; null when unknown. */
24228
24248
  totalBytes: number().nullable()
@@ -24234,7 +24254,15 @@ var RecordingStorageUsageSchema = object({
24234
24254
  nodeId: string(),
24235
24255
  totalUsedBytes: number(),
24236
24256
  devices: array(RecordingDeviceUsageSchema),
24237
- locations: array(RecordingLocationUsageSchema)
24257
+ /**
24258
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
24259
+ * of the payload without it: the hub serves this method through a BAKED
24260
+ * router, so a hub whose framework train predates a change to this array
24261
+ * strips it out of an answer a newer recorder happily produced. A UI that
24262
+ * dereferences it unconditionally crashes the whole Storage page over a
24263
+ * missing disk bar.
24264
+ */
24265
+ locations: array(RecordingLocationUsageSchema).optional()
24238
24266
  });
24239
24267
  /**
24240
24268
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -33350,8 +33378,14 @@ Object.freeze({
33350
33378
  "network-access": "ingress",
33351
33379
  "smtp-provider": "email"
33352
33380
  });
33381
+ /** Schema defaults — an untouched sub-field must author exactly these. */
33382
+ var NC_AUDIO_DEFAULTS = {
33383
+ hitPercent: 60,
33384
+ samplingSeconds: 10
33385
+ };
33353
33386
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
33354
33387
  new Set(["devices", "classes"]);
33388
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
33355
33389
  /**
33356
33390
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
33357
33391
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-static-turn",
3
- "version": "1.2.20",
3
+ "version": "1.2.22",
4
4
  "description": "Static / self-hosted (coturn) TURN provider for CamStack",
5
5
  "keywords": [
6
6
  "camstack",