@camstack/addon-provider-reolink 1.2.115 → 1.2.116

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/addon.js CHANGED
@@ -20559,7 +20559,17 @@ var EventDensityBucketSchema = object({
20559
20559
  bucketStart: number(),
20560
20560
  motion: number().int(),
20561
20561
  object: number().int(),
20562
- audio: number().int()
20562
+ audio: number().int(),
20563
+ /**
20564
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
20565
+ * as opposed to `audio`, which is their COUNT (D431).
20566
+ *
20567
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
20568
+ * measured", which is not the same claim as silence, and a lane that cannot
20569
+ * tell them apart paints a quiet hour at full scale — which is exactly what
20570
+ * the count-on-a-level-meter did.
20571
+ */
20572
+ audioDbfs: number().optional()
20563
20573
  });
20564
20574
  /**
20565
20575
  * One camera's row in a `getEventDensityBatch` answer.
@@ -30785,7 +30795,23 @@ var RecordingRangeSchema = object({
30785
30795
  });
30786
30796
  var RecordingAvailabilitySchema = object({
30787
30797
  deviceId: number(),
30788
- ranges: array(RecordingRangeSchema)
30798
+ ranges: array(RecordingRangeSchema),
30799
+ /**
30800
+ * Every profile this camera has footage in — not only the one `ranges`
30801
+ * describes (D433).
30802
+ *
30803
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
30804
+ * and enumerating all of them triples the directory reads for a bar that
30805
+ * would look identical. But the answer used to say nothing about that, so a
30806
+ * caller asking "what can I export?" read the single preferred profile as
30807
+ * the only one that exists — on this deployment every camera records `high`
30808
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
30809
+ * UI could not see it.
30810
+ *
30811
+ * Cheap: it is the same shallow directory read the profile CHOICE already
30812
+ * makes. Ask for a specific profile's ranges with the `profile` input.
30813
+ */
30814
+ profilesWithFootage: array(string())
30789
30815
  });
30790
30816
  var RecordingDaysSchema = object({
30791
30817
  deviceId: number(),
@@ -30811,7 +30837,11 @@ var RecordingDaysSchema = object({
30811
30837
  var RecordingAvailabilityForDeviceSchema = object({
30812
30838
  deviceId: number(),
30813
30839
  read: _enum(["read", "unreadable"]),
30814
- ranges: array(RecordingRangeSchema).readonly()
30840
+ ranges: array(RecordingRangeSchema).readonly(),
30841
+ /** Same field, same meaning, as the singular answer (D433). A row that
30842
+ * dropped it would tell a grid caller the archive holds one profile.
30843
+ * Empty on an `'unreadable'` row: nobody looked. */
30844
+ profilesWithFootage: array(string()).readonly()
30815
30845
  });
30816
30846
  /**
30817
30847
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -31101,7 +31131,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
31101
31131
  method(object({
31102
31132
  deviceId: number(),
31103
31133
  fromMs: number(),
31104
- toMs: number()
31134
+ toMs: number(),
31135
+ /**
31136
+ * Answer for THIS profile instead of the preferred one (D433). Absent
31137
+ * keeps the timeline's behaviour — one bar, one profile, one set of
31138
+ * reads. `profilesWithFootage` on the answer says what may be asked
31139
+ * for.
31140
+ */
31141
+ profile: string().optional()
31105
31142
  }), RecordingAvailabilitySchema, {
31106
31143
  kind: "query",
31107
31144
  auth: "protected"
package/dist/addon.mjs CHANGED
@@ -20554,7 +20554,17 @@ var EventDensityBucketSchema = object({
20554
20554
  bucketStart: number(),
20555
20555
  motion: number().int(),
20556
20556
  object: number().int(),
20557
- audio: number().int()
20557
+ audio: number().int(),
20558
+ /**
20559
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
20560
+ * as opposed to `audio`, which is their COUNT (D431).
20561
+ *
20562
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
20563
+ * measured", which is not the same claim as silence, and a lane that cannot
20564
+ * tell them apart paints a quiet hour at full scale — which is exactly what
20565
+ * the count-on-a-level-meter did.
20566
+ */
20567
+ audioDbfs: number().optional()
20558
20568
  });
20559
20569
  /**
20560
20570
  * One camera's row in a `getEventDensityBatch` answer.
@@ -30780,7 +30790,23 @@ var RecordingRangeSchema = object({
30780
30790
  });
30781
30791
  var RecordingAvailabilitySchema = object({
30782
30792
  deviceId: number(),
30783
- ranges: array(RecordingRangeSchema)
30793
+ ranges: array(RecordingRangeSchema),
30794
+ /**
30795
+ * Every profile this camera has footage in — not only the one `ranges`
30796
+ * describes (D433).
30797
+ *
30798
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
30799
+ * and enumerating all of them triples the directory reads for a bar that
30800
+ * would look identical. But the answer used to say nothing about that, so a
30801
+ * caller asking "what can I export?" read the single preferred profile as
30802
+ * the only one that exists — on this deployment every camera records `high`
30803
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
30804
+ * UI could not see it.
30805
+ *
30806
+ * Cheap: it is the same shallow directory read the profile CHOICE already
30807
+ * makes. Ask for a specific profile's ranges with the `profile` input.
30808
+ */
30809
+ profilesWithFootage: array(string())
30784
30810
  });
30785
30811
  var RecordingDaysSchema = object({
30786
30812
  deviceId: number(),
@@ -30806,7 +30832,11 @@ var RecordingDaysSchema = object({
30806
30832
  var RecordingAvailabilityForDeviceSchema = object({
30807
30833
  deviceId: number(),
30808
30834
  read: _enum(["read", "unreadable"]),
30809
- ranges: array(RecordingRangeSchema).readonly()
30835
+ ranges: array(RecordingRangeSchema).readonly(),
30836
+ /** Same field, same meaning, as the singular answer (D433). A row that
30837
+ * dropped it would tell a grid caller the archive holds one profile.
30838
+ * Empty on an `'unreadable'` row: nobody looked. */
30839
+ profilesWithFootage: array(string()).readonly()
30810
30840
  });
30811
30841
  /**
30812
30842
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -31096,7 +31126,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
31096
31126
  method(object({
31097
31127
  deviceId: number(),
31098
31128
  fromMs: number(),
31099
- toMs: number()
31129
+ toMs: number(),
31130
+ /**
31131
+ * Answer for THIS profile instead of the preferred one (D433). Absent
31132
+ * keeps the timeline's behaviour — one bar, one profile, one set of
31133
+ * reads. `profilesWithFootage` on the answer says what may be asked
31134
+ * for.
31135
+ */
31136
+ profile: string().optional()
31100
31137
  }), RecordingAvailabilitySchema, {
31101
31138
  kind: "query",
31102
31139
  auth: "protected"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-reolink",
3
- "version": "1.2.115",
3
+ "version": "1.2.116",
4
4
  "description": "Reolink camera device provider addon for CamStack — native Baichuan protocol",
5
5
  "keywords": [
6
6
  "camstack",