@camstack/addon-smtp-nodemailer 1.2.21 → 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.
@@ -24256,9 +24256,21 @@ var RecordingLocationUsageSchema = object({
24256
24256
  * previously rendered as two identical "disks" with a nonsensical used
24257
24257
  * split — hydrate attribution across aliases is arbitrary by nature. */
24258
24258
  locationIds: array(string()).optional(),
24259
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
24259
+ /**
24260
+ * Filesystem root of the physical volume this row accounts — the only
24261
+ * operator-legible identity when a location has no `displayName` yet, and
24262
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
24263
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
24264
+ * it, and this schema must keep validating that older provider's payload.
24265
+ */
24266
+ root: string().optional(),
24267
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
24268
+ * the footage's SHARE of the volume, not how full the volume is — the disk
24269
+ * also holds everything that is not recordings. Volume fill is
24270
+ * `(totalBytes - availableBytes) / totalBytes`. */
24260
24271
  usedBytes: number(),
24261
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
24272
+ /** Free bytes on the location's volume; null when capacity is unknown
24273
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
24262
24274
  availableBytes: number().nullable(),
24263
24275
  /** Total bytes of the location's volume; null when unknown. */
24264
24276
  totalBytes: number().nullable()
@@ -24270,7 +24282,15 @@ var RecordingStorageUsageSchema = object({
24270
24282
  nodeId: string(),
24271
24283
  totalUsedBytes: number(),
24272
24284
  devices: array(RecordingDeviceUsageSchema),
24273
- locations: array(RecordingLocationUsageSchema)
24285
+ /**
24286
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
24287
+ * of the payload without it: the hub serves this method through a BAKED
24288
+ * router, so a hub whose framework train predates a change to this array
24289
+ * strips it out of an answer a newer recorder happily produced. A UI that
24290
+ * dereferences it unconditionally crashes the whole Storage page over a
24291
+ * missing disk bar.
24292
+ */
24293
+ locations: array(RecordingLocationUsageSchema).optional()
24274
24294
  });
24275
24295
  /**
24276
24296
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -33386,8 +33406,14 @@ Object.freeze({
33386
33406
  "network-access": "ingress",
33387
33407
  "smtp-provider": "email"
33388
33408
  });
33409
+ /** Schema defaults — an untouched sub-field must author exactly these. */
33410
+ var NC_AUDIO_DEFAULTS = {
33411
+ hitPercent: 60,
33412
+ samplingSeconds: 10
33413
+ };
33389
33414
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
33390
33415
  new Set(["devices", "classes"]);
33416
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
33391
33417
  /**
33392
33418
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
33393
33419
  *
@@ -24254,9 +24254,21 @@ var RecordingLocationUsageSchema = object({
24254
24254
  * previously rendered as two identical "disks" with a nonsensical used
24255
24255
  * split — hydrate attribution across aliases is arbitrary by nature. */
24256
24256
  locationIds: array(string()).optional(),
24257
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
24257
+ /**
24258
+ * Filesystem root of the physical volume this row accounts — the only
24259
+ * operator-legible identity when a location has no `displayName` yet, and
24260
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
24261
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
24262
+ * it, and this schema must keep validating that older provider's payload.
24263
+ */
24264
+ root: string().optional(),
24265
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
24266
+ * the footage's SHARE of the volume, not how full the volume is — the disk
24267
+ * also holds everything that is not recordings. Volume fill is
24268
+ * `(totalBytes - availableBytes) / totalBytes`. */
24258
24269
  usedBytes: number(),
24259
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
24270
+ /** Free bytes on the location's volume; null when capacity is unknown
24271
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
24260
24272
  availableBytes: number().nullable(),
24261
24273
  /** Total bytes of the location's volume; null when unknown. */
24262
24274
  totalBytes: number().nullable()
@@ -24268,7 +24280,15 @@ var RecordingStorageUsageSchema = object({
24268
24280
  nodeId: string(),
24269
24281
  totalUsedBytes: number(),
24270
24282
  devices: array(RecordingDeviceUsageSchema),
24271
- locations: array(RecordingLocationUsageSchema)
24283
+ /**
24284
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
24285
+ * of the payload without it: the hub serves this method through a BAKED
24286
+ * router, so a hub whose framework train predates a change to this array
24287
+ * strips it out of an answer a newer recorder happily produced. A UI that
24288
+ * dereferences it unconditionally crashes the whole Storage page over a
24289
+ * missing disk bar.
24290
+ */
24291
+ locations: array(RecordingLocationUsageSchema).optional()
24272
24292
  });
24273
24293
  /**
24274
24294
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -33384,8 +33404,14 @@ Object.freeze({
33384
33404
  "network-access": "ingress",
33385
33405
  "smtp-provider": "email"
33386
33406
  });
33407
+ /** Schema defaults — an untouched sub-field must author exactly these. */
33408
+ var NC_AUDIO_DEFAULTS = {
33409
+ hitPercent: 60,
33410
+ samplingSeconds: 10
33411
+ };
33387
33412
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
33388
33413
  new Set(["devices", "classes"]);
33414
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
33389
33415
  /**
33390
33416
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
33391
33417
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-smtp-nodemailer",
3
- "version": "1.2.21",
3
+ "version": "1.2.22",
4
4
  "description": "SMTP email provider addon for CamStack — wraps `nodemailer` and registers a `smtp-provider` cap collection entry. Used by magic-link login + notifier addons.",
5
5
  "keywords": [
6
6
  "camstack",