@camstack/addon-import-alexa 0.2.91 → 0.2.92

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
@@ -20158,7 +20158,17 @@ var EventDensityBucketSchema = object({
20158
20158
  bucketStart: number(),
20159
20159
  motion: number().int(),
20160
20160
  object: number().int(),
20161
- audio: number().int()
20161
+ audio: number().int(),
20162
+ /**
20163
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
20164
+ * as opposed to `audio`, which is their COUNT (D431).
20165
+ *
20166
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
20167
+ * measured", which is not the same claim as silence, and a lane that cannot
20168
+ * tell them apart paints a quiet hour at full scale — which is exactly what
20169
+ * the count-on-a-level-meter did.
20170
+ */
20171
+ audioDbfs: number().optional()
20162
20172
  });
20163
20173
  /**
20164
20174
  * One camera's row in a `getEventDensityBatch` answer.
@@ -30190,7 +30200,23 @@ var RecordingRangeSchema = object({
30190
30200
  });
30191
30201
  var RecordingAvailabilitySchema = object({
30192
30202
  deviceId: number(),
30193
- ranges: array(RecordingRangeSchema)
30203
+ ranges: array(RecordingRangeSchema),
30204
+ /**
30205
+ * Every profile this camera has footage in — not only the one `ranges`
30206
+ * describes (D433).
30207
+ *
30208
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
30209
+ * and enumerating all of them triples the directory reads for a bar that
30210
+ * would look identical. But the answer used to say nothing about that, so a
30211
+ * caller asking "what can I export?" read the single preferred profile as
30212
+ * the only one that exists — on this deployment every camera records `high`
30213
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
30214
+ * UI could not see it.
30215
+ *
30216
+ * Cheap: it is the same shallow directory read the profile CHOICE already
30217
+ * makes. Ask for a specific profile's ranges with the `profile` input.
30218
+ */
30219
+ profilesWithFootage: array(string())
30194
30220
  });
30195
30221
  var RecordingDaysSchema = object({
30196
30222
  deviceId: number(),
@@ -30216,7 +30242,11 @@ var RecordingDaysSchema = object({
30216
30242
  var RecordingAvailabilityForDeviceSchema = object({
30217
30243
  deviceId: number(),
30218
30244
  read: _enum(["read", "unreadable"]),
30219
- ranges: array(RecordingRangeSchema).readonly()
30245
+ ranges: array(RecordingRangeSchema).readonly(),
30246
+ /** Same field, same meaning, as the singular answer (D433). A row that
30247
+ * dropped it would tell a grid caller the archive holds one profile.
30248
+ * Empty on an `'unreadable'` row: nobody looked. */
30249
+ profilesWithFootage: array(string()).readonly()
30220
30250
  });
30221
30251
  /**
30222
30252
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -30506,7 +30536,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
30506
30536
  method(object({
30507
30537
  deviceId: number(),
30508
30538
  fromMs: number(),
30509
- toMs: number()
30539
+ toMs: number(),
30540
+ /**
30541
+ * Answer for THIS profile instead of the preferred one (D433). Absent
30542
+ * keeps the timeline's behaviour — one bar, one profile, one set of
30543
+ * reads. `profilesWithFootage` on the answer says what may be asked
30544
+ * for.
30545
+ */
30546
+ profile: string().optional()
30510
30547
  }), RecordingAvailabilitySchema, {
30511
30548
  kind: "query",
30512
30549
  auth: "protected"
package/dist/addon.mjs CHANGED
@@ -20158,7 +20158,17 @@ var EventDensityBucketSchema = object({
20158
20158
  bucketStart: number(),
20159
20159
  motion: number().int(),
20160
20160
  object: number().int(),
20161
- audio: number().int()
20161
+ audio: number().int(),
20162
+ /**
20163
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
20164
+ * as opposed to `audio`, which is their COUNT (D431).
20165
+ *
20166
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
20167
+ * measured", which is not the same claim as silence, and a lane that cannot
20168
+ * tell them apart paints a quiet hour at full scale — which is exactly what
20169
+ * the count-on-a-level-meter did.
20170
+ */
20171
+ audioDbfs: number().optional()
20162
20172
  });
20163
20173
  /**
20164
20174
  * One camera's row in a `getEventDensityBatch` answer.
@@ -30190,7 +30200,23 @@ var RecordingRangeSchema = object({
30190
30200
  });
30191
30201
  var RecordingAvailabilitySchema = object({
30192
30202
  deviceId: number(),
30193
- ranges: array(RecordingRangeSchema)
30203
+ ranges: array(RecordingRangeSchema),
30204
+ /**
30205
+ * Every profile this camera has footage in — not only the one `ranges`
30206
+ * describes (D433).
30207
+ *
30208
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
30209
+ * and enumerating all of them triples the directory reads for a bar that
30210
+ * would look identical. But the answer used to say nothing about that, so a
30211
+ * caller asking "what can I export?" read the single preferred profile as
30212
+ * the only one that exists — on this deployment every camera records `high`
30213
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
30214
+ * UI could not see it.
30215
+ *
30216
+ * Cheap: it is the same shallow directory read the profile CHOICE already
30217
+ * makes. Ask for a specific profile's ranges with the `profile` input.
30218
+ */
30219
+ profilesWithFootage: array(string())
30194
30220
  });
30195
30221
  var RecordingDaysSchema = object({
30196
30222
  deviceId: number(),
@@ -30216,7 +30242,11 @@ var RecordingDaysSchema = object({
30216
30242
  var RecordingAvailabilityForDeviceSchema = object({
30217
30243
  deviceId: number(),
30218
30244
  read: _enum(["read", "unreadable"]),
30219
- ranges: array(RecordingRangeSchema).readonly()
30245
+ ranges: array(RecordingRangeSchema).readonly(),
30246
+ /** Same field, same meaning, as the singular answer (D433). A row that
30247
+ * dropped it would tell a grid caller the archive holds one profile.
30248
+ * Empty on an `'unreadable'` row: nobody looked. */
30249
+ profilesWithFootage: array(string()).readonly()
30220
30250
  });
30221
30251
  /**
30222
30252
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -30506,7 +30536,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
30506
30536
  method(object({
30507
30537
  deviceId: number(),
30508
30538
  fromMs: number(),
30509
- toMs: number()
30539
+ toMs: number(),
30540
+ /**
30541
+ * Answer for THIS profile instead of the preferred one (D433). Absent
30542
+ * keeps the timeline's behaviour — one bar, one profile, one set of
30543
+ * reads. `profilesWithFootage` on the answer says what may be asked
30544
+ * for.
30545
+ */
30546
+ profile: string().optional()
30510
30547
  }), RecordingAvailabilitySchema, {
30511
30548
  kind: "query",
30512
30549
  auth: "protected"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-import-alexa",
3
- "version": "0.2.91",
3
+ "version": "0.2.92",
4
4
  "description": "Alexa device-import provider for CamStack — imports the smart-home devices in a user's Alexa account via the unofficial alexa-remote2 cookie/token client (the inverse of the Alexa exporter)",
5
5
  "keywords": [
6
6
  "camstack",