@camstack/addon-decoder-nodeav 1.2.92 → 1.2.93

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/index.js CHANGED
@@ -19677,7 +19677,17 @@ var EventDensityBucketSchema = object({
19677
19677
  bucketStart: number(),
19678
19678
  motion: number().int(),
19679
19679
  object: number().int(),
19680
- audio: number().int()
19680
+ audio: number().int(),
19681
+ /**
19682
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
19683
+ * as opposed to `audio`, which is their COUNT (D431).
19684
+ *
19685
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
19686
+ * measured", which is not the same claim as silence, and a lane that cannot
19687
+ * tell them apart paints a quiet hour at full scale — which is exactly what
19688
+ * the count-on-a-level-meter did.
19689
+ */
19690
+ audioDbfs: number().optional()
19681
19691
  });
19682
19692
  /**
19683
19693
  * One camera's row in a `getEventDensityBatch` answer.
@@ -27844,7 +27854,23 @@ var RecordingRangeSchema = object({
27844
27854
  });
27845
27855
  var RecordingAvailabilitySchema = object({
27846
27856
  deviceId: number(),
27847
- ranges: array(RecordingRangeSchema)
27857
+ ranges: array(RecordingRangeSchema),
27858
+ /**
27859
+ * Every profile this camera has footage in — not only the one `ranges`
27860
+ * describes (D433).
27861
+ *
27862
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
27863
+ * and enumerating all of them triples the directory reads for a bar that
27864
+ * would look identical. But the answer used to say nothing about that, so a
27865
+ * caller asking "what can I export?" read the single preferred profile as
27866
+ * the only one that exists — on this deployment every camera records `high`
27867
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
27868
+ * UI could not see it.
27869
+ *
27870
+ * Cheap: it is the same shallow directory read the profile CHOICE already
27871
+ * makes. Ask for a specific profile's ranges with the `profile` input.
27872
+ */
27873
+ profilesWithFootage: array(string())
27848
27874
  });
27849
27875
  var RecordingDaysSchema = object({
27850
27876
  deviceId: number(),
@@ -27870,7 +27896,11 @@ var RecordingDaysSchema = object({
27870
27896
  var RecordingAvailabilityForDeviceSchema = object({
27871
27897
  deviceId: number(),
27872
27898
  read: _enum(["read", "unreadable"]),
27873
- ranges: array(RecordingRangeSchema).readonly()
27899
+ ranges: array(RecordingRangeSchema).readonly(),
27900
+ /** Same field, same meaning, as the singular answer (D433). A row that
27901
+ * dropped it would tell a grid caller the archive holds one profile.
27902
+ * Empty on an `'unreadable'` row: nobody looked. */
27903
+ profilesWithFootage: array(string()).readonly()
27874
27904
  });
27875
27905
  /**
27876
27906
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -28160,7 +28190,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
28160
28190
  method(object({
28161
28191
  deviceId: number(),
28162
28192
  fromMs: number(),
28163
- toMs: number()
28193
+ toMs: number(),
28194
+ /**
28195
+ * Answer for THIS profile instead of the preferred one (D433). Absent
28196
+ * keeps the timeline's behaviour — one bar, one profile, one set of
28197
+ * reads. `profilesWithFootage` on the answer says what may be asked
28198
+ * for.
28199
+ */
28200
+ profile: string().optional()
28164
28201
  }), RecordingAvailabilitySchema, {
28165
28202
  kind: "query",
28166
28203
  auth: "protected"
package/dist/index.mjs CHANGED
@@ -19673,7 +19673,17 @@ var EventDensityBucketSchema = object({
19673
19673
  bucketStart: number(),
19674
19674
  motion: number().int(),
19675
19675
  object: number().int(),
19676
- audio: number().int()
19676
+ audio: number().int(),
19677
+ /**
19678
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
19679
+ * as opposed to `audio`, which is their COUNT (D431).
19680
+ *
19681
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
19682
+ * measured", which is not the same claim as silence, and a lane that cannot
19683
+ * tell them apart paints a quiet hour at full scale — which is exactly what
19684
+ * the count-on-a-level-meter did.
19685
+ */
19686
+ audioDbfs: number().optional()
19677
19687
  });
19678
19688
  /**
19679
19689
  * One camera's row in a `getEventDensityBatch` answer.
@@ -27840,7 +27850,23 @@ var RecordingRangeSchema = object({
27840
27850
  });
27841
27851
  var RecordingAvailabilitySchema = object({
27842
27852
  deviceId: number(),
27843
- ranges: array(RecordingRangeSchema)
27853
+ ranges: array(RecordingRangeSchema),
27854
+ /**
27855
+ * Every profile this camera has footage in — not only the one `ranges`
27856
+ * describes (D433).
27857
+ *
27858
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
27859
+ * and enumerating all of them triples the directory reads for a bar that
27860
+ * would look identical. But the answer used to say nothing about that, so a
27861
+ * caller asking "what can I export?" read the single preferred profile as
27862
+ * the only one that exists — on this deployment every camera records `high`
27863
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
27864
+ * UI could not see it.
27865
+ *
27866
+ * Cheap: it is the same shallow directory read the profile CHOICE already
27867
+ * makes. Ask for a specific profile's ranges with the `profile` input.
27868
+ */
27869
+ profilesWithFootage: array(string())
27844
27870
  });
27845
27871
  var RecordingDaysSchema = object({
27846
27872
  deviceId: number(),
@@ -27866,7 +27892,11 @@ var RecordingDaysSchema = object({
27866
27892
  var RecordingAvailabilityForDeviceSchema = object({
27867
27893
  deviceId: number(),
27868
27894
  read: _enum(["read", "unreadable"]),
27869
- ranges: array(RecordingRangeSchema).readonly()
27895
+ ranges: array(RecordingRangeSchema).readonly(),
27896
+ /** Same field, same meaning, as the singular answer (D433). A row that
27897
+ * dropped it would tell a grid caller the archive holds one profile.
27898
+ * Empty on an `'unreadable'` row: nobody looked. */
27899
+ profilesWithFootage: array(string()).readonly()
27870
27900
  });
27871
27901
  /**
27872
27902
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -28156,7 +28186,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
28156
28186
  method(object({
28157
28187
  deviceId: number(),
28158
28188
  fromMs: number(),
28159
- toMs: number()
28189
+ toMs: number(),
28190
+ /**
28191
+ * Answer for THIS profile instead of the preferred one (D433). Absent
28192
+ * keeps the timeline's behaviour — one bar, one profile, one set of
28193
+ * reads. `profilesWithFootage` on the answer says what may be asked
28194
+ * for.
28195
+ */
28196
+ profile: string().optional()
28160
28197
  }), RecordingAvailabilitySchema, {
28161
28198
  kind: "query",
28162
28199
  auth: "protected"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-decoder-nodeav",
3
- "version": "1.2.92",
3
+ "version": "1.2.93",
4
4
  "description": "Standalone in-process node-av decoder addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",