@camstack/addon-remote-storage 1.2.56 → 1.2.58

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-BEUEkXEj.js");
5
+ const require_shared = require("./shared-ncQEWVrH.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-DpPZpjEi.mjs";
1
+ import { c as BaseAddon, i as rearmIdleAbort, n as getOptionalBasePath, o as scheduleIdleAbort, s as storageProviderCapability, t as createSessionId } from "./shared-C5bN6WhL.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-BEUEkXEj.js");
5
+ const require_shared = require("./shared-ncQEWVrH.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-DpPZpjEi.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-C5bN6WhL.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
@@ -10512,6 +10512,89 @@ var LocationStatSchema = object({
10512
10512
  fileCount: number(),
10513
10513
  present: boolean()
10514
10514
  });
10515
+ /** Lifecycle of a backup run. Terminal states: succeeded / failed / cancelled. */
10516
+ var BackupRunStateSchema = _enum([
10517
+ "queued",
10518
+ "running",
10519
+ "succeeded",
10520
+ "failed",
10521
+ "cancelled"
10522
+ ]);
10523
+ /**
10524
+ * Where a running backup currently is. `queued` before it starts,
10525
+ * `building` while the tar.gz is being staged, `uploading` during the
10526
+ * per-destination fan-out, `done` once terminal.
10527
+ */
10528
+ var BackupRunPhaseSchema = _enum([
10529
+ "queued",
10530
+ "building",
10531
+ "uploading",
10532
+ "done"
10533
+ ]);
10534
+ /**
10535
+ * Observable state of one backup run — readable WHILE it runs via
10536
+ * `backup.listRuns`. This is what makes the execution queue and
10537
+ * `backup.cancel` usable: the 2026-09-04 incident (two concurrent
10538
+ * multi-GB builds, staging 5.1 GB → 18 GB, load 62) was only
10539
+ * diagnosable with `du` because nothing reported that runs existed or
10540
+ * how large the staged archive had grown.
10541
+ */
10542
+ var BackupRunSchema = object({
10543
+ /** Stable run id — the handle `backup.cancel` takes. */
10544
+ id: string(),
10545
+ state: BackupRunStateSchema,
10546
+ phase: BackupRunPhaseSchema,
10547
+ /**
10548
+ * Resolved destination location ids. Empty while queued (targets are
10549
+ * resolved when the run starts, against the then-current policies).
10550
+ */
10551
+ destinationIds: array(string()).readonly(),
10552
+ label: string().optional(),
10553
+ /** ms-epoch when the run was submitted (trigger call / schedule fire). */
10554
+ requestedAt: number(),
10555
+ /** ms-epoch when the run left the queue and started building. */
10556
+ startedAt: number().optional(),
10557
+ /** ms-epoch when the run reached a terminal state. */
10558
+ finishedAt: number().optional(),
10559
+ /** Compressed bytes of the staging archive written so far. */
10560
+ stagedBytes: number(),
10561
+ /** Final staged archive size, once the build phase completes. */
10562
+ archiveSizeBytes: number().optional(),
10563
+ /** Bytes pushed to the destination currently uploading. */
10564
+ uploadedBytes: number(),
10565
+ /** Destinations where the archive fully landed (uploaded + indexed). */
10566
+ completedDestinationIds: array(string()).readonly(),
10567
+ /** Destinations that failed during the fan-out. */
10568
+ failedDestinationIds: array(string()).readonly(),
10569
+ /** Failure message when `state === 'failed'`. */
10570
+ error: string().optional(),
10571
+ /**
10572
+ * 1-based place in the execution queue — 1 = runs next. Present only
10573
+ * while `state === 'queued'`. Stamped by the orchestrator from the
10574
+ * queue's OWN pending order, never derived from timestamps, so the
10575
+ * UI cannot show an order the executor will not honour.
10576
+ */
10577
+ queuePosition: number().int().min(1).optional()
10578
+ });
10579
+ /**
10580
+ * Result of `backup.trigger`. The call still resolves when the run
10581
+ * terminates (compat with schedule-driven runs and the admin UI), but
10582
+ * it now names the run and says whether it had to WAIT: a trigger that
10583
+ * arrives while another run is in flight is enqueued (or joined onto
10584
+ * an identical already-queued run), never started concurrently.
10585
+ */
10586
+ var BackupTriggerResultSchema = object({
10587
+ /** The run this trigger mapped to — poll it via `listRuns`, stop it via `cancel`. */
10588
+ runId: string(),
10589
+ /** True when the run waited behind an in-flight run instead of starting immediately. */
10590
+ queued: boolean(),
10591
+ /** True when this trigger was coalesced onto an identical already-queued run. */
10592
+ joined: boolean(),
10593
+ /** True when the run was cancelled before completing every destination. */
10594
+ cancelled: boolean(),
10595
+ /** One entry per destination the archive landed at (partial on cancel). */
10596
+ entries: array(BackupEntrySchema).readonly()
10597
+ });
10515
10598
  /**
10516
10599
  * A backup schedule — the N:M "entry" that binds one cron cadence to a
10517
10600
  * SET of destination locations. Supersedes the per-location cron on
@@ -10559,7 +10642,10 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
10559
10642
  * retention (manual runs).
10560
10643
  */
10561
10644
  retentionCount: number().int().min(1).max(1e3).optional()
10562
- }).optional(), array(BackupEntrySchema).readonly(), {
10645
+ }).optional(), BackupTriggerResultSchema, {
10646
+ kind: "mutation",
10647
+ auth: "admin"
10648
+ }), method(_void(), array(BackupRunSchema).readonly(), { auth: "admin" }), method(object({ runId: string() }), object({ cancelled: boolean() }), {
10563
10649
  kind: "mutation",
10564
10650
  auth: "admin"
10565
10651
  }), method(_void(), array(BackupEntrySchema).readonly(), { auth: "admin" }), method(_void(), array(LocationStatSchema).readonly(), { auth: "admin" }), method(object({
@@ -11276,6 +11362,14 @@ method(object({
11276
11362
  }), object({ success: literal(true) }), {
11277
11363
  kind: "mutation",
11278
11364
  auth: "admin"
11365
+ }), method(object({ deviceId: number().int().nonnegative() }), object({
11366
+ derivedStreamsDeleted: array(string()).readonly(),
11367
+ assignmentsPurged: boolean(),
11368
+ probeSnapshotsDropped: number().int().nonnegative(),
11369
+ rtspTokenRowsDeleted: number().int().nonnegative()
11370
+ }), {
11371
+ kind: "mutation",
11372
+ auth: "admin"
11279
11373
  }), method(object({
11280
11374
  deviceId: number(),
11281
11375
  /** Absent = the LOWEST assigned profile — a notification attachment is
@@ -18826,7 +18920,20 @@ var RecentTracksQueryInput = object({
18826
18920
  projection: TrackProjectionSchema.optional(),
18827
18921
  /** Include stationary-promoted rows (parked objects). Default false: the
18828
18922
  * feed lists passages; parking records live on the stationary registry. */
18829
- includeStationary: boolean().optional()
18923
+ includeStationary: boolean().optional(),
18924
+ /**
18925
+ * Restrict to these track classes. ABSENT or EMPTY means no filter.
18926
+ *
18927
+ * The same filter `listTracks` takes, because the timeline's class chips must
18928
+ * mean the same thing whether the scope is one camera or twelve. Until this
18929
+ * existed the scoped feed downloaded a page and narrowed it on the phone
18930
+ * while the single-camera path narrowed the read — one filter, two costs.
18931
+ *
18932
+ * A SUPERSET prefilter on `classes[]`, like its single-camera twin: rows
18933
+ * whose class list is unreadable are kept, and the client's rule stays the
18934
+ * exact one.
18935
+ */
18936
+ classes: array(string()).optional()
18830
18937
  });
18831
18938
  var RecentTracksPageSchema = object({
18832
18939
  /** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
@@ -22924,8 +23031,22 @@ DeviceType.Automation, method(object({ deviceId: number().int().nonnegative() })
22924
23031
  * threshold.
22925
23032
  */
22926
23033
  var BatteryStatusSchema = object({
22927
- /** 0..100 inclusive. Firmware-reported. */
22928
- percentage: number().min(0).max(100),
23034
+ /**
23035
+ * 0..100 inclusive, firmware-reported. **`null` means NOT YET KNOWN** — the
23036
+ * provider has registered the capability but no reading has landed.
23037
+ *
23038
+ * It is nullable because it was not, and the only value a provider could
23039
+ * seed with was `0`. A battery camera behind an NVR therefore announced
23040
+ * itself at 0% on every start and corrected itself a moment later, which is
23041
+ * indistinguishable from a real flat battery: it fires the low-battery alert
23042
+ * every time the hub restarts. Unknown is not empty (D315), and on a battery
23043
+ * reading the difference is an alarm.
23044
+ *
23045
+ * `vacuum-control` and `lawn-mower-control` already model it this way.
23046
+ * Consumers must SKIP a null rather than coerce it — `battery-band` already
23047
+ * declines to band a non-finite reading, which is the correct shape.
23048
+ */
23049
+ percentage: number().min(0).max(100).nullable(),
22929
23050
  /**
22930
23051
  * Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
22931
23052
  * Reolink-specific for the Solar Panel 2 accessory (will become
@@ -29404,6 +29525,12 @@ Object.freeze({
29404
29525
  addonId: null,
29405
29526
  access: "create"
29406
29527
  },
29528
+ "backup.cancel": {
29529
+ capName: "backup",
29530
+ capScope: "system",
29531
+ addonId: null,
29532
+ access: "create"
29533
+ },
29407
29534
  "backup.delete": {
29408
29535
  capName: "backup",
29409
29536
  capScope: "system",
@@ -29446,6 +29573,12 @@ Object.freeze({
29446
29573
  addonId: null,
29447
29574
  access: "view"
29448
29575
  },
29576
+ "backup.listRuns": {
29577
+ capName: "backup",
29578
+ capScope: "system",
29579
+ addonId: null,
29580
+ access: "view"
29581
+ },
29449
29582
  "backup.listSchedules": {
29450
29583
  capName: "backup",
29451
29584
  capScope: "system",
@@ -34012,6 +34145,12 @@ Object.freeze({
34012
34145
  addonId: null,
34013
34146
  access: "create"
34014
34147
  },
34148
+ "streamBroker.forgetDeviceHardware": {
34149
+ capName: "stream-broker",
34150
+ capScope: "system",
34151
+ addonId: null,
34152
+ access: "delete"
34153
+ },
34015
34154
  "streamBroker.getAllRtspEntries": {
34016
34155
  capName: "stream-broker",
34017
34156
  capScope: "system",
@@ -36470,6 +36609,11 @@ Object.freeze({
36470
36609
  form: "single",
36471
36610
  optional: false
36472
36611
  }],
36612
+ "streamBroker.forgetDeviceHardware": [{
36613
+ name: "deviceId",
36614
+ form: "single",
36615
+ optional: false
36616
+ }],
36473
36617
  "streamBroker.getDeviceAudioMute": [{
36474
36618
  name: "deviceId",
36475
36619
  form: "single",
@@ -10535,6 +10535,89 @@ var LocationStatSchema = object({
10535
10535
  fileCount: number(),
10536
10536
  present: boolean()
10537
10537
  });
10538
+ /** Lifecycle of a backup run. Terminal states: succeeded / failed / cancelled. */
10539
+ var BackupRunStateSchema = _enum([
10540
+ "queued",
10541
+ "running",
10542
+ "succeeded",
10543
+ "failed",
10544
+ "cancelled"
10545
+ ]);
10546
+ /**
10547
+ * Where a running backup currently is. `queued` before it starts,
10548
+ * `building` while the tar.gz is being staged, `uploading` during the
10549
+ * per-destination fan-out, `done` once terminal.
10550
+ */
10551
+ var BackupRunPhaseSchema = _enum([
10552
+ "queued",
10553
+ "building",
10554
+ "uploading",
10555
+ "done"
10556
+ ]);
10557
+ /**
10558
+ * Observable state of one backup run — readable WHILE it runs via
10559
+ * `backup.listRuns`. This is what makes the execution queue and
10560
+ * `backup.cancel` usable: the 2026-09-04 incident (two concurrent
10561
+ * multi-GB builds, staging 5.1 GB → 18 GB, load 62) was only
10562
+ * diagnosable with `du` because nothing reported that runs existed or
10563
+ * how large the staged archive had grown.
10564
+ */
10565
+ var BackupRunSchema = object({
10566
+ /** Stable run id — the handle `backup.cancel` takes. */
10567
+ id: string(),
10568
+ state: BackupRunStateSchema,
10569
+ phase: BackupRunPhaseSchema,
10570
+ /**
10571
+ * Resolved destination location ids. Empty while queued (targets are
10572
+ * resolved when the run starts, against the then-current policies).
10573
+ */
10574
+ destinationIds: array(string()).readonly(),
10575
+ label: string().optional(),
10576
+ /** ms-epoch when the run was submitted (trigger call / schedule fire). */
10577
+ requestedAt: number(),
10578
+ /** ms-epoch when the run left the queue and started building. */
10579
+ startedAt: number().optional(),
10580
+ /** ms-epoch when the run reached a terminal state. */
10581
+ finishedAt: number().optional(),
10582
+ /** Compressed bytes of the staging archive written so far. */
10583
+ stagedBytes: number(),
10584
+ /** Final staged archive size, once the build phase completes. */
10585
+ archiveSizeBytes: number().optional(),
10586
+ /** Bytes pushed to the destination currently uploading. */
10587
+ uploadedBytes: number(),
10588
+ /** Destinations where the archive fully landed (uploaded + indexed). */
10589
+ completedDestinationIds: array(string()).readonly(),
10590
+ /** Destinations that failed during the fan-out. */
10591
+ failedDestinationIds: array(string()).readonly(),
10592
+ /** Failure message when `state === 'failed'`. */
10593
+ error: string().optional(),
10594
+ /**
10595
+ * 1-based place in the execution queue — 1 = runs next. Present only
10596
+ * while `state === 'queued'`. Stamped by the orchestrator from the
10597
+ * queue's OWN pending order, never derived from timestamps, so the
10598
+ * UI cannot show an order the executor will not honour.
10599
+ */
10600
+ queuePosition: number().int().min(1).optional()
10601
+ });
10602
+ /**
10603
+ * Result of `backup.trigger`. The call still resolves when the run
10604
+ * terminates (compat with schedule-driven runs and the admin UI), but
10605
+ * it now names the run and says whether it had to WAIT: a trigger that
10606
+ * arrives while another run is in flight is enqueued (or joined onto
10607
+ * an identical already-queued run), never started concurrently.
10608
+ */
10609
+ var BackupTriggerResultSchema = object({
10610
+ /** The run this trigger mapped to — poll it via `listRuns`, stop it via `cancel`. */
10611
+ runId: string(),
10612
+ /** True when the run waited behind an in-flight run instead of starting immediately. */
10613
+ queued: boolean(),
10614
+ /** True when this trigger was coalesced onto an identical already-queued run. */
10615
+ joined: boolean(),
10616
+ /** True when the run was cancelled before completing every destination. */
10617
+ cancelled: boolean(),
10618
+ /** One entry per destination the archive landed at (partial on cancel). */
10619
+ entries: array(BackupEntrySchema).readonly()
10620
+ });
10538
10621
  /**
10539
10622
  * A backup schedule — the N:M "entry" that binds one cron cadence to a
10540
10623
  * SET of destination locations. Supersedes the per-location cron on
@@ -10582,7 +10665,10 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
10582
10665
  * retention (manual runs).
10583
10666
  */
10584
10667
  retentionCount: number().int().min(1).max(1e3).optional()
10585
- }).optional(), array(BackupEntrySchema).readonly(), {
10668
+ }).optional(), BackupTriggerResultSchema, {
10669
+ kind: "mutation",
10670
+ auth: "admin"
10671
+ }), method(_void(), array(BackupRunSchema).readonly(), { auth: "admin" }), method(object({ runId: string() }), object({ cancelled: boolean() }), {
10586
10672
  kind: "mutation",
10587
10673
  auth: "admin"
10588
10674
  }), method(_void(), array(BackupEntrySchema).readonly(), { auth: "admin" }), method(_void(), array(LocationStatSchema).readonly(), { auth: "admin" }), method(object({
@@ -11299,6 +11385,14 @@ method(object({
11299
11385
  }), object({ success: literal(true) }), {
11300
11386
  kind: "mutation",
11301
11387
  auth: "admin"
11388
+ }), method(object({ deviceId: number().int().nonnegative() }), object({
11389
+ derivedStreamsDeleted: array(string()).readonly(),
11390
+ assignmentsPurged: boolean(),
11391
+ probeSnapshotsDropped: number().int().nonnegative(),
11392
+ rtspTokenRowsDeleted: number().int().nonnegative()
11393
+ }), {
11394
+ kind: "mutation",
11395
+ auth: "admin"
11302
11396
  }), method(object({
11303
11397
  deviceId: number(),
11304
11398
  /** Absent = the LOWEST assigned profile — a notification attachment is
@@ -18849,7 +18943,20 @@ var RecentTracksQueryInput = object({
18849
18943
  projection: TrackProjectionSchema.optional(),
18850
18944
  /** Include stationary-promoted rows (parked objects). Default false: the
18851
18945
  * feed lists passages; parking records live on the stationary registry. */
18852
- includeStationary: boolean().optional()
18946
+ includeStationary: boolean().optional(),
18947
+ /**
18948
+ * Restrict to these track classes. ABSENT or EMPTY means no filter.
18949
+ *
18950
+ * The same filter `listTracks` takes, because the timeline's class chips must
18951
+ * mean the same thing whether the scope is one camera or twelve. Until this
18952
+ * existed the scoped feed downloaded a page and narrowed it on the phone
18953
+ * while the single-camera path narrowed the read — one filter, two costs.
18954
+ *
18955
+ * A SUPERSET prefilter on `classes[]`, like its single-camera twin: rows
18956
+ * whose class list is unreadable are kept, and the client's rule stays the
18957
+ * exact one.
18958
+ */
18959
+ classes: array(string()).optional()
18853
18960
  });
18854
18961
  var RecentTracksPageSchema = object({
18855
18962
  /** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
@@ -22947,8 +23054,22 @@ DeviceType.Automation, method(object({ deviceId: number().int().nonnegative() })
22947
23054
  * threshold.
22948
23055
  */
22949
23056
  var BatteryStatusSchema = object({
22950
- /** 0..100 inclusive. Firmware-reported. */
22951
- percentage: number().min(0).max(100),
23057
+ /**
23058
+ * 0..100 inclusive, firmware-reported. **`null` means NOT YET KNOWN** — the
23059
+ * provider has registered the capability but no reading has landed.
23060
+ *
23061
+ * It is nullable because it was not, and the only value a provider could
23062
+ * seed with was `0`. A battery camera behind an NVR therefore announced
23063
+ * itself at 0% on every start and corrected itself a moment later, which is
23064
+ * indistinguishable from a real flat battery: it fires the low-battery alert
23065
+ * every time the hub restarts. Unknown is not empty (D315), and on a battery
23066
+ * reading the difference is an alarm.
23067
+ *
23068
+ * `vacuum-control` and `lawn-mower-control` already model it this way.
23069
+ * Consumers must SKIP a null rather than coerce it — `battery-band` already
23070
+ * declines to band a non-finite reading, which is the correct shape.
23071
+ */
23072
+ percentage: number().min(0).max(100).nullable(),
22952
23073
  /**
22953
23074
  * Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
22954
23075
  * Reolink-specific for the Solar Panel 2 accessory (will become
@@ -29427,6 +29548,12 @@ Object.freeze({
29427
29548
  addonId: null,
29428
29549
  access: "create"
29429
29550
  },
29551
+ "backup.cancel": {
29552
+ capName: "backup",
29553
+ capScope: "system",
29554
+ addonId: null,
29555
+ access: "create"
29556
+ },
29430
29557
  "backup.delete": {
29431
29558
  capName: "backup",
29432
29559
  capScope: "system",
@@ -29469,6 +29596,12 @@ Object.freeze({
29469
29596
  addonId: null,
29470
29597
  access: "view"
29471
29598
  },
29599
+ "backup.listRuns": {
29600
+ capName: "backup",
29601
+ capScope: "system",
29602
+ addonId: null,
29603
+ access: "view"
29604
+ },
29472
29605
  "backup.listSchedules": {
29473
29606
  capName: "backup",
29474
29607
  capScope: "system",
@@ -34035,6 +34168,12 @@ Object.freeze({
34035
34168
  addonId: null,
34036
34169
  access: "create"
34037
34170
  },
34171
+ "streamBroker.forgetDeviceHardware": {
34172
+ capName: "stream-broker",
34173
+ capScope: "system",
34174
+ addonId: null,
34175
+ access: "delete"
34176
+ },
34038
34177
  "streamBroker.getAllRtspEntries": {
34039
34178
  capName: "stream-broker",
34040
34179
  capScope: "system",
@@ -36493,6 +36632,11 @@ Object.freeze({
36493
36632
  form: "single",
36494
36633
  optional: false
36495
36634
  }],
36635
+ "streamBroker.forgetDeviceHardware": [{
36636
+ name: "deviceId",
36637
+ form: "single",
36638
+ optional: false
36639
+ }],
36496
36640
  "streamBroker.getDeviceAudioMute": [{
36497
36641
  name: "deviceId",
36498
36642
  form: "single",
package/dist/smb.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-BEUEkXEj.js");
5
+ const require_shared = require("./shared-ncQEWVrH.js");
6
6
  let node_crypto = require("node:crypto");
7
7
  let node_path = require("node:path");
8
8
  node_path = require_shared.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, s as storageProviderCapability } from "./shared-DpPZpjEi.mjs";
1
+ import { c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, s as storageProviderCapability } from "./shared-C5bN6WhL.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import * as path from "node:path";
4
4
  import * as fsp from "node:fs/promises";
@@ -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-BEUEkXEj.js");
5
+ const require_shared = require("./shared-ncQEWVrH.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-DpPZpjEi.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-C5bN6WhL.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.56",
3
+ "version": "1.2.58",
4
4
  "description": "Remote storage providers (SFTP, S3, WebDAV, SMB) — unifies remote backends behind the storage-provider cap",
5
5
  "keywords": [
6
6
  "camstack",