@camstack/addon-remote-storage 1.2.50 → 1.2.52

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-BOy-Ilbo.js");
5
+ const require_shared = require("./shared-C10q8it6.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-BKw72Pim.mjs";
1
+ import { c as BaseAddon, i as rearmIdleAbort, n as getOptionalBasePath, o as scheduleIdleAbort, s as storageProviderCapability, t as createSessionId } from "./shared-DXWSci5Y.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-BOy-Ilbo.js");
5
+ const require_shared = require("./shared-C10q8it6.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-BKw72Pim.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-DXWSci5Y.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
@@ -7726,7 +7726,8 @@ var OpsLogReasonSchema = _enum([
7726
7726
  "quota",
7727
7727
  "manual",
7728
7728
  "operator",
7729
- "maintenance"
7729
+ "maintenance",
7730
+ "orphaned-device"
7730
7731
  ]);
7731
7732
  /** One audit row, shared verbatim by both domains. */
7732
7733
  var OpsLogEntrySchema = object({
@@ -12757,10 +12758,39 @@ var DevicePersistConfigPayloadSchema = object({
12757
12758
  deviceId: number(),
12758
12759
  data: record(string(), unknown())
12759
12760
  });
12761
+ /** What a migration actually did, per switch. `unreachable` is a first-class
12762
+ * answer: a camera that could not be asked is not a camera that was silenced. */
12763
+ var MigrateSwitchOutcomeSchema = _enum([
12764
+ "off",
12765
+ "on",
12766
+ "not-offered",
12767
+ "unreachable"
12768
+ ]);
12769
+ var MigrateSwitchReportSchema = object({
12770
+ deviceId: number(),
12771
+ switchId: CameraSwitchIdSchema,
12772
+ outcome: MigrateSwitchOutcomeSchema,
12773
+ detail: string().optional()
12774
+ });
12775
+ var MigrateDeviceResultSchema = object({
12776
+ sourceId: number(),
12777
+ targetId: number(),
12778
+ switches: array(MigrateSwitchReportSchema).readonly(),
12779
+ /** Switches that could NOT be turned off on the source. Empty is the only
12780
+ * value meaning the replaced hardware is quiet. */
12781
+ sourceStillLive: array(CameraSwitchIdSchema).readonly(),
12782
+ swapped: boolean()
12783
+ });
12760
12784
  method(object({
12761
12785
  addonId: string(),
12762
12786
  stableId: string()
12763
- }), object({ id: number() }), { kind: "mutation" }), method(DeviceRegisterPayloadSchema, _void(), { kind: "mutation" }), method(DeviceRemovePayloadSchema, _void(), { kind: "mutation" }), method(DevicePersistConfigPayloadSchema, _void(), { kind: "mutation" }), method(object({ deviceId: number() }), record(string(), unknown())), method(object({ deviceId: number() }), record(string(), unknown())), method(object({ deviceId: number() }), DeviceMetaSchema.nullable()), method(object({
12787
+ }), object({ id: number() }), { kind: "mutation" }), method(object({
12788
+ sourceId: number(),
12789
+ targetId: number()
12790
+ }), MigrateDeviceResultSchema, {
12791
+ kind: "mutation",
12792
+ auth: "admin"
12793
+ }), method(DeviceRegisterPayloadSchema, _void(), { kind: "mutation" }), method(DeviceRemovePayloadSchema, _void(), { kind: "mutation" }), method(DevicePersistConfigPayloadSchema, _void(), { kind: "mutation" }), method(object({ deviceId: number() }), record(string(), unknown())), method(object({ deviceId: number() }), record(string(), unknown())), method(object({ deviceId: number() }), DeviceMetaSchema.nullable()), method(object({
12764
12794
  deviceId: number(),
12765
12795
  name: string()
12766
12796
  }), _void(), {
@@ -18857,6 +18887,34 @@ var KeyEventsForDeviceSchema = object({
18857
18887
  deviceId: number(),
18858
18888
  events: array(KeyEventSchema).readonly()
18859
18889
  });
18890
+ /** One non-empty bucket of the timeline histogram. */
18891
+ var EventDensityBucketSchema = object({
18892
+ bucketStart: number(),
18893
+ motion: number().int(),
18894
+ object: number().int(),
18895
+ audio: number().int()
18896
+ });
18897
+ /**
18898
+ * One camera's row in a `getEventDensityBatch` answer.
18899
+ *
18900
+ * TWO facts, and the timeline draws them differently:
18901
+ *
18902
+ * - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
18903
+ * claim: read, and nothing happened in the window.
18904
+ * - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
18905
+ * empty and that emptiness means NOTHING; the timeline must render unknown,
18906
+ * not quiet.
18907
+ *
18908
+ * Fanned out per camera the difference was free — one query rejected while the
18909
+ * others resolved — and collapsing to a batch is the exact moment it is lost
18910
+ * silently. Every requested id gets a row: a caller that asked for twelve and
18911
+ * got eleven cannot tell which one is missing, or that any is.
18912
+ */
18913
+ var EventDensityForDeviceSchema = object({
18914
+ deviceId: number(),
18915
+ read: _enum(["read", "unreadable"]),
18916
+ buckets: array(EventDensityBucketSchema).readonly()
18917
+ });
18860
18918
  object({
18861
18919
  trackId: string(),
18862
18920
  className: string(),
@@ -19167,12 +19225,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19167
19225
  since: number(),
19168
19226
  until: number(),
19169
19227
  bucketMs: number().int().positive()
19170
- }), array(object({
19171
- bucketStart: number(),
19172
- motion: number().int(),
19173
- object: number().int(),
19174
- audio: number().int()
19175
- })).readonly()), method(object({
19228
+ }), array(EventDensityBucketSchema).readonly()), method(object({
19229
+ deviceIds: array(number()).min(1).max(200),
19230
+ since: number(),
19231
+ until: number(),
19232
+ bucketMs: number().int().positive()
19233
+ }), array(EventDensityForDeviceSchema).readonly()), method(object({
19176
19234
  deviceId: number(),
19177
19235
  cutoffMs: number()
19178
19236
  }), object({
@@ -26542,6 +26600,39 @@ var RecordingDaysSchema = object({
26542
26600
  /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
26543
26601
  days: array(number())
26544
26602
  });
26603
+ /**
26604
+ * One camera's row in a `getAvailabilityBatch` answer.
26605
+ *
26606
+ * `ranges` is EXACTLY what `getAvailability` returns for that camera — the
26607
+ * batch collapses the transport, not the work — plus the one thing the singular
26608
+ * method never had to say:
26609
+ *
26610
+ * - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
26611
+ * no footage in the window", which is a real claim.
26612
+ * - `read: 'unreadable'` — the recorder could not answer for this camera (its
26613
+ * calendar rung threw, its location is unmounted). `ranges` is empty and
26614
+ * that emptiness means NOTHING.
26615
+ *
26616
+ * A timeline that renders the second as the first tells an operator there is no
26617
+ * footage when the truth is that nobody looked.
26618
+ */
26619
+ var RecordingAvailabilityForDeviceSchema = object({
26620
+ deviceId: number(),
26621
+ read: _enum(["read", "unreadable"]),
26622
+ ranges: array(RecordingRangeSchema).readonly()
26623
+ });
26624
+ /**
26625
+ * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
26626
+ * {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
26627
+ * "no footage in this month", `read: 'unreadable'` is "nobody could look", and
26628
+ * the date-picker's day dots must not spell them the same.
26629
+ */
26630
+ var RecordingDaysForDeviceSchema = object({
26631
+ deviceId: number(),
26632
+ read: _enum(["read", "unreadable"]),
26633
+ /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
26634
+ days: array(number()).readonly()
26635
+ });
26545
26636
  var RecordingManifestSchema = object({
26546
26637
  deviceId: number(),
26547
26638
  /** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
@@ -26776,6 +26867,13 @@ method(object({
26776
26867
  }), RecordingAvailabilitySchema, {
26777
26868
  kind: "query",
26778
26869
  auth: "protected"
26870
+ }), method(object({
26871
+ deviceIds: array(number()).min(1).max(200),
26872
+ fromMs: number(),
26873
+ toMs: number()
26874
+ }), array(RecordingAvailabilityForDeviceSchema).readonly(), {
26875
+ kind: "query",
26876
+ auth: "protected"
26779
26877
  }), method(object({
26780
26878
  deviceId: number(),
26781
26879
  fromMs: number(),
@@ -26784,6 +26882,14 @@ method(object({
26784
26882
  }), RecordingDaysSchema, {
26785
26883
  kind: "query",
26786
26884
  auth: "protected"
26885
+ }), method(object({
26886
+ deviceIds: array(number()).min(1).max(200),
26887
+ fromMs: number(),
26888
+ toMs: number(),
26889
+ tzOffsetMinutes: number()
26890
+ }), array(RecordingDaysForDeviceSchema).readonly(), {
26891
+ kind: "query",
26892
+ auth: "protected"
26787
26893
  }), method(object({
26788
26894
  deviceId: number(),
26789
26895
  fromMs: number(),
@@ -30247,6 +30353,12 @@ Object.freeze({
30247
30353
  addonId: null,
30248
30354
  access: "view"
30249
30355
  },
30356
+ "deviceManager.migrateDevice": {
30357
+ capName: "device-manager",
30358
+ capScope: "system",
30359
+ addonId: null,
30360
+ access: "create"
30361
+ },
30250
30362
  "deviceManager.persistConfig": {
30251
30363
  capName: "device-manager",
30252
30364
  capScope: "system",
@@ -31981,6 +32093,12 @@ Object.freeze({
31981
32093
  addonId: null,
31982
32094
  access: "view"
31983
32095
  },
32096
+ "pipelineAnalytics.getEventDensityBatch": {
32097
+ capName: "pipeline-analytics",
32098
+ capScope: "device",
32099
+ addonId: null,
32100
+ access: "view"
32101
+ },
31984
32102
  "pipelineAnalytics.getEventMedia": {
31985
32103
  capName: "pipeline-analytics",
31986
32104
  capScope: "device",
@@ -33103,12 +33221,24 @@ Object.freeze({
33103
33221
  addonId: null,
33104
33222
  access: "view"
33105
33223
  },
33224
+ "recording.getAvailabilityBatch": {
33225
+ capName: "recording",
33226
+ capScope: "system",
33227
+ addonId: null,
33228
+ access: "view"
33229
+ },
33106
33230
  "recording.getDaysWithRecordings": {
33107
33231
  capName: "recording",
33108
33232
  capScope: "system",
33109
33233
  addonId: null,
33110
33234
  access: "view"
33111
33235
  },
33236
+ "recording.getDaysWithRecordingsBatch": {
33237
+ capName: "recording",
33238
+ capScope: "system",
33239
+ addonId: null,
33240
+ access: "view"
33241
+ },
33112
33242
  "recording.getDeviceConfig": {
33113
33243
  capName: "recording",
33114
33244
  capScope: "system",
@@ -35713,6 +35843,11 @@ Object.freeze({
35713
35843
  form: "single",
35714
35844
  optional: false
35715
35845
  }],
35846
+ "pipelineAnalytics.getEventDensityBatch": [{
35847
+ name: "deviceIds",
35848
+ form: "array",
35849
+ optional: false
35850
+ }],
35716
35851
  "pipelineAnalytics.getEventMedia": [{
35717
35852
  name: "deviceId",
35718
35853
  form: "single",
@@ -36128,11 +36263,21 @@ Object.freeze({
36128
36263
  form: "single",
36129
36264
  optional: false
36130
36265
  }],
36266
+ "recording.getAvailabilityBatch": [{
36267
+ name: "deviceIds",
36268
+ form: "array",
36269
+ optional: false
36270
+ }],
36131
36271
  "recording.getDaysWithRecordings": [{
36132
36272
  name: "deviceId",
36133
36273
  form: "single",
36134
36274
  optional: false
36135
36275
  }],
36276
+ "recording.getDaysWithRecordingsBatch": [{
36277
+ name: "deviceIds",
36278
+ form: "array",
36279
+ optional: false
36280
+ }],
36136
36281
  "recording.getDeviceConfig": [{
36137
36282
  name: "deviceId",
36138
36283
  form: "single",
@@ -7703,7 +7703,8 @@ var OpsLogReasonSchema = _enum([
7703
7703
  "quota",
7704
7704
  "manual",
7705
7705
  "operator",
7706
- "maintenance"
7706
+ "maintenance",
7707
+ "orphaned-device"
7707
7708
  ]);
7708
7709
  /** One audit row, shared verbatim by both domains. */
7709
7710
  var OpsLogEntrySchema = object({
@@ -12734,10 +12735,39 @@ var DevicePersistConfigPayloadSchema = object({
12734
12735
  deviceId: number(),
12735
12736
  data: record(string(), unknown())
12736
12737
  });
12738
+ /** What a migration actually did, per switch. `unreachable` is a first-class
12739
+ * answer: a camera that could not be asked is not a camera that was silenced. */
12740
+ var MigrateSwitchOutcomeSchema = _enum([
12741
+ "off",
12742
+ "on",
12743
+ "not-offered",
12744
+ "unreachable"
12745
+ ]);
12746
+ var MigrateSwitchReportSchema = object({
12747
+ deviceId: number(),
12748
+ switchId: CameraSwitchIdSchema,
12749
+ outcome: MigrateSwitchOutcomeSchema,
12750
+ detail: string().optional()
12751
+ });
12752
+ var MigrateDeviceResultSchema = object({
12753
+ sourceId: number(),
12754
+ targetId: number(),
12755
+ switches: array(MigrateSwitchReportSchema).readonly(),
12756
+ /** Switches that could NOT be turned off on the source. Empty is the only
12757
+ * value meaning the replaced hardware is quiet. */
12758
+ sourceStillLive: array(CameraSwitchIdSchema).readonly(),
12759
+ swapped: boolean()
12760
+ });
12737
12761
  method(object({
12738
12762
  addonId: string(),
12739
12763
  stableId: string()
12740
- }), object({ id: number() }), { kind: "mutation" }), method(DeviceRegisterPayloadSchema, _void(), { kind: "mutation" }), method(DeviceRemovePayloadSchema, _void(), { kind: "mutation" }), method(DevicePersistConfigPayloadSchema, _void(), { kind: "mutation" }), method(object({ deviceId: number() }), record(string(), unknown())), method(object({ deviceId: number() }), record(string(), unknown())), method(object({ deviceId: number() }), DeviceMetaSchema.nullable()), method(object({
12764
+ }), object({ id: number() }), { kind: "mutation" }), method(object({
12765
+ sourceId: number(),
12766
+ targetId: number()
12767
+ }), MigrateDeviceResultSchema, {
12768
+ kind: "mutation",
12769
+ auth: "admin"
12770
+ }), method(DeviceRegisterPayloadSchema, _void(), { kind: "mutation" }), method(DeviceRemovePayloadSchema, _void(), { kind: "mutation" }), method(DevicePersistConfigPayloadSchema, _void(), { kind: "mutation" }), method(object({ deviceId: number() }), record(string(), unknown())), method(object({ deviceId: number() }), record(string(), unknown())), method(object({ deviceId: number() }), DeviceMetaSchema.nullable()), method(object({
12741
12771
  deviceId: number(),
12742
12772
  name: string()
12743
12773
  }), _void(), {
@@ -18834,6 +18864,34 @@ var KeyEventsForDeviceSchema = object({
18834
18864
  deviceId: number(),
18835
18865
  events: array(KeyEventSchema).readonly()
18836
18866
  });
18867
+ /** One non-empty bucket of the timeline histogram. */
18868
+ var EventDensityBucketSchema = object({
18869
+ bucketStart: number(),
18870
+ motion: number().int(),
18871
+ object: number().int(),
18872
+ audio: number().int()
18873
+ });
18874
+ /**
18875
+ * One camera's row in a `getEventDensityBatch` answer.
18876
+ *
18877
+ * TWO facts, and the timeline draws them differently:
18878
+ *
18879
+ * - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
18880
+ * claim: read, and nothing happened in the window.
18881
+ * - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
18882
+ * empty and that emptiness means NOTHING; the timeline must render unknown,
18883
+ * not quiet.
18884
+ *
18885
+ * Fanned out per camera the difference was free — one query rejected while the
18886
+ * others resolved — and collapsing to a batch is the exact moment it is lost
18887
+ * silently. Every requested id gets a row: a caller that asked for twelve and
18888
+ * got eleven cannot tell which one is missing, or that any is.
18889
+ */
18890
+ var EventDensityForDeviceSchema = object({
18891
+ deviceId: number(),
18892
+ read: _enum(["read", "unreadable"]),
18893
+ buckets: array(EventDensityBucketSchema).readonly()
18894
+ });
18837
18895
  object({
18838
18896
  trackId: string(),
18839
18897
  className: string(),
@@ -19144,12 +19202,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19144
19202
  since: number(),
19145
19203
  until: number(),
19146
19204
  bucketMs: number().int().positive()
19147
- }), array(object({
19148
- bucketStart: number(),
19149
- motion: number().int(),
19150
- object: number().int(),
19151
- audio: number().int()
19152
- })).readonly()), method(object({
19205
+ }), array(EventDensityBucketSchema).readonly()), method(object({
19206
+ deviceIds: array(number()).min(1).max(200),
19207
+ since: number(),
19208
+ until: number(),
19209
+ bucketMs: number().int().positive()
19210
+ }), array(EventDensityForDeviceSchema).readonly()), method(object({
19153
19211
  deviceId: number(),
19154
19212
  cutoffMs: number()
19155
19213
  }), object({
@@ -26519,6 +26577,39 @@ var RecordingDaysSchema = object({
26519
26577
  /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
26520
26578
  days: array(number())
26521
26579
  });
26580
+ /**
26581
+ * One camera's row in a `getAvailabilityBatch` answer.
26582
+ *
26583
+ * `ranges` is EXACTLY what `getAvailability` returns for that camera — the
26584
+ * batch collapses the transport, not the work — plus the one thing the singular
26585
+ * method never had to say:
26586
+ *
26587
+ * - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
26588
+ * no footage in the window", which is a real claim.
26589
+ * - `read: 'unreadable'` — the recorder could not answer for this camera (its
26590
+ * calendar rung threw, its location is unmounted). `ranges` is empty and
26591
+ * that emptiness means NOTHING.
26592
+ *
26593
+ * A timeline that renders the second as the first tells an operator there is no
26594
+ * footage when the truth is that nobody looked.
26595
+ */
26596
+ var RecordingAvailabilityForDeviceSchema = object({
26597
+ deviceId: number(),
26598
+ read: _enum(["read", "unreadable"]),
26599
+ ranges: array(RecordingRangeSchema).readonly()
26600
+ });
26601
+ /**
26602
+ * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
26603
+ * {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
26604
+ * "no footage in this month", `read: 'unreadable'` is "nobody could look", and
26605
+ * the date-picker's day dots must not spell them the same.
26606
+ */
26607
+ var RecordingDaysForDeviceSchema = object({
26608
+ deviceId: number(),
26609
+ read: _enum(["read", "unreadable"]),
26610
+ /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
26611
+ days: array(number()).readonly()
26612
+ });
26522
26613
  var RecordingManifestSchema = object({
26523
26614
  deviceId: number(),
26524
26615
  /** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
@@ -26753,6 +26844,13 @@ method(object({
26753
26844
  }), RecordingAvailabilitySchema, {
26754
26845
  kind: "query",
26755
26846
  auth: "protected"
26847
+ }), method(object({
26848
+ deviceIds: array(number()).min(1).max(200),
26849
+ fromMs: number(),
26850
+ toMs: number()
26851
+ }), array(RecordingAvailabilityForDeviceSchema).readonly(), {
26852
+ kind: "query",
26853
+ auth: "protected"
26756
26854
  }), method(object({
26757
26855
  deviceId: number(),
26758
26856
  fromMs: number(),
@@ -26761,6 +26859,14 @@ method(object({
26761
26859
  }), RecordingDaysSchema, {
26762
26860
  kind: "query",
26763
26861
  auth: "protected"
26862
+ }), method(object({
26863
+ deviceIds: array(number()).min(1).max(200),
26864
+ fromMs: number(),
26865
+ toMs: number(),
26866
+ tzOffsetMinutes: number()
26867
+ }), array(RecordingDaysForDeviceSchema).readonly(), {
26868
+ kind: "query",
26869
+ auth: "protected"
26764
26870
  }), method(object({
26765
26871
  deviceId: number(),
26766
26872
  fromMs: number(),
@@ -30224,6 +30330,12 @@ Object.freeze({
30224
30330
  addonId: null,
30225
30331
  access: "view"
30226
30332
  },
30333
+ "deviceManager.migrateDevice": {
30334
+ capName: "device-manager",
30335
+ capScope: "system",
30336
+ addonId: null,
30337
+ access: "create"
30338
+ },
30227
30339
  "deviceManager.persistConfig": {
30228
30340
  capName: "device-manager",
30229
30341
  capScope: "system",
@@ -31958,6 +32070,12 @@ Object.freeze({
31958
32070
  addonId: null,
31959
32071
  access: "view"
31960
32072
  },
32073
+ "pipelineAnalytics.getEventDensityBatch": {
32074
+ capName: "pipeline-analytics",
32075
+ capScope: "device",
32076
+ addonId: null,
32077
+ access: "view"
32078
+ },
31961
32079
  "pipelineAnalytics.getEventMedia": {
31962
32080
  capName: "pipeline-analytics",
31963
32081
  capScope: "device",
@@ -33080,12 +33198,24 @@ Object.freeze({
33080
33198
  addonId: null,
33081
33199
  access: "view"
33082
33200
  },
33201
+ "recording.getAvailabilityBatch": {
33202
+ capName: "recording",
33203
+ capScope: "system",
33204
+ addonId: null,
33205
+ access: "view"
33206
+ },
33083
33207
  "recording.getDaysWithRecordings": {
33084
33208
  capName: "recording",
33085
33209
  capScope: "system",
33086
33210
  addonId: null,
33087
33211
  access: "view"
33088
33212
  },
33213
+ "recording.getDaysWithRecordingsBatch": {
33214
+ capName: "recording",
33215
+ capScope: "system",
33216
+ addonId: null,
33217
+ access: "view"
33218
+ },
33089
33219
  "recording.getDeviceConfig": {
33090
33220
  capName: "recording",
33091
33221
  capScope: "system",
@@ -35690,6 +35820,11 @@ Object.freeze({
35690
35820
  form: "single",
35691
35821
  optional: false
35692
35822
  }],
35823
+ "pipelineAnalytics.getEventDensityBatch": [{
35824
+ name: "deviceIds",
35825
+ form: "array",
35826
+ optional: false
35827
+ }],
35693
35828
  "pipelineAnalytics.getEventMedia": [{
35694
35829
  name: "deviceId",
35695
35830
  form: "single",
@@ -36105,11 +36240,21 @@ Object.freeze({
36105
36240
  form: "single",
36106
36241
  optional: false
36107
36242
  }],
36243
+ "recording.getAvailabilityBatch": [{
36244
+ name: "deviceIds",
36245
+ form: "array",
36246
+ optional: false
36247
+ }],
36108
36248
  "recording.getDaysWithRecordings": [{
36109
36249
  name: "deviceId",
36110
36250
  form: "single",
36111
36251
  optional: false
36112
36252
  }],
36253
+ "recording.getDaysWithRecordingsBatch": [{
36254
+ name: "deviceIds",
36255
+ form: "array",
36256
+ optional: false
36257
+ }],
36113
36258
  "recording.getDeviceConfig": [{
36114
36259
  name: "deviceId",
36115
36260
  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-BOy-Ilbo.js");
5
+ const require_shared = require("./shared-C10q8it6.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-BKw72Pim.mjs";
1
+ import { c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, s as storageProviderCapability } from "./shared-DXWSci5Y.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-BOy-Ilbo.js");
5
+ const require_shared = require("./shared-C10q8it6.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-BKw72Pim.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-DXWSci5Y.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.50",
3
+ "version": "1.2.52",
4
4
  "description": "Remote storage providers (SFTP, S3, WebDAV, SMB) — unifies remote backends behind the storage-provider cap",
5
5
  "keywords": [
6
6
  "camstack",