@camstack/addon-remote-storage 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.
package/dist/s3.addon.js CHANGED
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_shared = require("./shared-CrotCkhF.js");
5
+ const require_shared = require("./shared-BJAy3oN8.js");
6
6
  let node_stream = require("node:stream");
7
7
  let _aws_sdk_client_s3 = require("@aws-sdk/client-s3");
8
8
  let _aws_sdk_lib_storage = require("@aws-sdk/lib-storage");
package/dist/s3.addon.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { c as BaseAddon, i as rearmIdleAbort, n as getOptionalBasePath, o as scheduleIdleAbort, s as storageProviderCapability, t as createSessionId } from "./shared-Toqenw3n.mjs";
1
+ import { c as BaseAddon, i as rearmIdleAbort, n as getOptionalBasePath, o as scheduleIdleAbort, s as storageProviderCapability, t as createSessionId } from "./shared-BRLPgCy4.mjs";
2
2
  import { PassThrough } from "node:stream";
3
3
  import { DeleteObjectCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectsV2Command, PutObjectCommand, S3Client } from "@aws-sdk/client-s3";
4
4
  import { Upload } from "@aws-sdk/lib-storage";
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_shared = require("./shared-CrotCkhF.js");
5
+ const require_shared = require("./shared-BJAy3oN8.js");
6
6
  let ssh2 = require("ssh2");
7
7
  let node_path = require("node:path");
8
8
  node_path = require_shared.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-Toqenw3n.mjs";
1
+ import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-BRLPgCy4.mjs";
2
2
  import { Client } from "ssh2";
3
3
  import * as path from "node:path";
4
4
  //#region src/providers/sftp/sftp-config-schema.ts
@@ -24275,9 +24275,21 @@ var RecordingLocationUsageSchema = object({
24275
24275
  * previously rendered as two identical "disks" with a nonsensical used
24276
24276
  * split — hydrate attribution across aliases is arbitrary by nature. */
24277
24277
  locationIds: array(string()).optional(),
24278
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
24278
+ /**
24279
+ * Filesystem root of the physical volume this row accounts — the only
24280
+ * operator-legible identity when a location has no `displayName` yet, and
24281
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
24282
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
24283
+ * it, and this schema must keep validating that older provider's payload.
24284
+ */
24285
+ root: string().optional(),
24286
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
24287
+ * the footage's SHARE of the volume, not how full the volume is — the disk
24288
+ * also holds everything that is not recordings. Volume fill is
24289
+ * `(totalBytes - availableBytes) / totalBytes`. */
24279
24290
  usedBytes: number(),
24280
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
24291
+ /** Free bytes on the location's volume; null when capacity is unknown
24292
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
24281
24293
  availableBytes: number().nullable(),
24282
24294
  /** Total bytes of the location's volume; null when unknown. */
24283
24295
  totalBytes: number().nullable()
@@ -24289,7 +24301,15 @@ var RecordingStorageUsageSchema = object({
24289
24301
  nodeId: string(),
24290
24302
  totalUsedBytes: number(),
24291
24303
  devices: array(RecordingDeviceUsageSchema),
24292
- locations: array(RecordingLocationUsageSchema)
24304
+ /**
24305
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
24306
+ * of the payload without it: the hub serves this method through a BAKED
24307
+ * router, so a hub whose framework train predates a change to this array
24308
+ * strips it out of an answer a newer recorder happily produced. A UI that
24309
+ * dereferences it unconditionally crashes the whole Storage page over a
24310
+ * missing disk bar.
24311
+ */
24312
+ locations: array(RecordingLocationUsageSchema).optional()
24293
24313
  });
24294
24314
  /**
24295
24315
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -33405,8 +33425,14 @@ Object.freeze({
33405
33425
  "network-access": "ingress",
33406
33426
  "smtp-provider": "email"
33407
33427
  });
33428
+ /** Schema defaults — an untouched sub-field must author exactly these. */
33429
+ var NC_AUDIO_DEFAULTS = {
33430
+ hitPercent: 60,
33431
+ samplingSeconds: 10
33432
+ };
33408
33433
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
33409
33434
  new Set(["devices", "classes"]);
33435
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
33410
33436
  /**
33411
33437
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
33412
33438
  *
@@ -24252,9 +24252,21 @@ var RecordingLocationUsageSchema = object({
24252
24252
  * previously rendered as two identical "disks" with a nonsensical used
24253
24253
  * split — hydrate attribution across aliases is arbitrary by nature. */
24254
24254
  locationIds: array(string()).optional(),
24255
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
24255
+ /**
24256
+ * Filesystem root of the physical volume this row accounts — the only
24257
+ * operator-legible identity when a location has no `displayName` yet, and
24258
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
24259
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
24260
+ * it, and this schema must keep validating that older provider's payload.
24261
+ */
24262
+ root: string().optional(),
24263
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
24264
+ * the footage's SHARE of the volume, not how full the volume is — the disk
24265
+ * also holds everything that is not recordings. Volume fill is
24266
+ * `(totalBytes - availableBytes) / totalBytes`. */
24256
24267
  usedBytes: number(),
24257
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
24268
+ /** Free bytes on the location's volume; null when capacity is unknown
24269
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
24258
24270
  availableBytes: number().nullable(),
24259
24271
  /** Total bytes of the location's volume; null when unknown. */
24260
24272
  totalBytes: number().nullable()
@@ -24266,7 +24278,15 @@ var RecordingStorageUsageSchema = object({
24266
24278
  nodeId: string(),
24267
24279
  totalUsedBytes: number(),
24268
24280
  devices: array(RecordingDeviceUsageSchema),
24269
- locations: array(RecordingLocationUsageSchema)
24281
+ /**
24282
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
24283
+ * of the payload without it: the hub serves this method through a BAKED
24284
+ * router, so a hub whose framework train predates a change to this array
24285
+ * strips it out of an answer a newer recorder happily produced. A UI that
24286
+ * dereferences it unconditionally crashes the whole Storage page over a
24287
+ * missing disk bar.
24288
+ */
24289
+ locations: array(RecordingLocationUsageSchema).optional()
24270
24290
  });
24271
24291
  /**
24272
24292
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -33382,8 +33402,14 @@ Object.freeze({
33382
33402
  "network-access": "ingress",
33383
33403
  "smtp-provider": "email"
33384
33404
  });
33405
+ /** Schema defaults — an untouched sub-field must author exactly these. */
33406
+ var NC_AUDIO_DEFAULTS = {
33407
+ hitPercent: 60,
33408
+ samplingSeconds: 10
33409
+ };
33385
33410
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
33386
33411
  new Set(["devices", "classes"]);
33412
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
33387
33413
  /**
33388
33414
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
33389
33415
  *
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_shared = require("./shared-CrotCkhF.js");
5
+ const require_shared = require("./shared-BJAy3oN8.js");
6
6
  let node_stream = require("node:stream");
7
7
  let webdav = require("webdav");
8
8
  //#region src/providers/webdav/webdav-config-schema.ts
@@ -1,4 +1,4 @@
1
- import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-Toqenw3n.mjs";
1
+ import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-BRLPgCy4.mjs";
2
2
  import { PassThrough } from "node:stream";
3
3
  import { AuthType, createClient } from "webdav";
4
4
  //#region src/providers/webdav/webdav-config-schema.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-remote-storage",
3
- "version": "1.2.21",
3
+ "version": "1.2.22",
4
4
  "description": "Remote storage providers (SFTP, S3, WebDAV) — unifies remote backends behind the storage-provider cap",
5
5
  "keywords": [
6
6
  "camstack",