@camstack/addon-provider-dreame 0.2.50 → 0.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/addon.js CHANGED
@@ -66397,6 +66397,8 @@ var NcSystemEventKindSchema = _enum([
66397
66397
  "device-offline",
66398
66398
  "device-disabled",
66399
66399
  "device-enabled",
66400
+ "device-battery-low",
66401
+ "device-battery-normal",
66400
66402
  "stream-online",
66401
66403
  "stream-offline",
66402
66404
  "node-online",
@@ -69711,6 +69713,34 @@ var KeyEventsForDeviceSchema = object({
69711
69713
  deviceId: number(),
69712
69714
  events: array(KeyEventSchema).readonly()
69713
69715
  });
69716
+ /** One non-empty bucket of the timeline histogram. */
69717
+ var EventDensityBucketSchema = object({
69718
+ bucketStart: number(),
69719
+ motion: number().int(),
69720
+ object: number().int(),
69721
+ audio: number().int()
69722
+ });
69723
+ /**
69724
+ * One camera's row in a `getEventDensityBatch` answer.
69725
+ *
69726
+ * TWO facts, and the timeline draws them differently:
69727
+ *
69728
+ * - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
69729
+ * claim: read, and nothing happened in the window.
69730
+ * - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
69731
+ * empty and that emptiness means NOTHING; the timeline must render unknown,
69732
+ * not quiet.
69733
+ *
69734
+ * Fanned out per camera the difference was free — one query rejected while the
69735
+ * others resolved — and collapsing to a batch is the exact moment it is lost
69736
+ * silently. Every requested id gets a row: a caller that asked for twelve and
69737
+ * got eleven cannot tell which one is missing, or that any is.
69738
+ */
69739
+ var EventDensityForDeviceSchema = object({
69740
+ deviceId: number(),
69741
+ read: _enum(["read", "unreadable"]),
69742
+ buckets: array(EventDensityBucketSchema).readonly()
69743
+ });
69714
69744
  object({
69715
69745
  trackId: string(),
69716
69746
  className: string(),
@@ -70021,12 +70051,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
70021
70051
  since: number(),
70022
70052
  until: number(),
70023
70053
  bucketMs: number().int().positive()
70024
- }), array(object({
70025
- bucketStart: number(),
70026
- motion: number().int(),
70027
- object: number().int(),
70028
- audio: number().int()
70029
- })).readonly()), method(object({
70054
+ }), array(EventDensityBucketSchema).readonly()), method(object({
70055
+ deviceIds: array(number()).min(1).max(200),
70056
+ since: number(),
70057
+ until: number(),
70058
+ bucketMs: number().int().positive()
70059
+ }), array(EventDensityForDeviceSchema).readonly()), method(object({
70030
70060
  deviceId: number(),
70031
70061
  cutoffMs: number()
70032
70062
  }), object({
@@ -79076,6 +79106,39 @@ var RecordingDaysSchema = object({
79076
79106
  /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
79077
79107
  days: array(number())
79078
79108
  });
79109
+ /**
79110
+ * One camera's row in a `getAvailabilityBatch` answer.
79111
+ *
79112
+ * `ranges` is EXACTLY what `getAvailability` returns for that camera — the
79113
+ * batch collapses the transport, not the work — plus the one thing the singular
79114
+ * method never had to say:
79115
+ *
79116
+ * - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
79117
+ * no footage in the window", which is a real claim.
79118
+ * - `read: 'unreadable'` — the recorder could not answer for this camera (its
79119
+ * calendar rung threw, its location is unmounted). `ranges` is empty and
79120
+ * that emptiness means NOTHING.
79121
+ *
79122
+ * A timeline that renders the second as the first tells an operator there is no
79123
+ * footage when the truth is that nobody looked.
79124
+ */
79125
+ var RecordingAvailabilityForDeviceSchema = object({
79126
+ deviceId: number(),
79127
+ read: _enum(["read", "unreadable"]),
79128
+ ranges: array(RecordingRangeSchema).readonly()
79129
+ });
79130
+ /**
79131
+ * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
79132
+ * {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
79133
+ * "no footage in this month", `read: 'unreadable'` is "nobody could look", and
79134
+ * the date-picker's day dots must not spell them the same.
79135
+ */
79136
+ var RecordingDaysForDeviceSchema = object({
79137
+ deviceId: number(),
79138
+ read: _enum(["read", "unreadable"]),
79139
+ /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
79140
+ days: array(number()).readonly()
79141
+ });
79079
79142
  var RecordingManifestSchema = object({
79080
79143
  deviceId: number(),
79081
79144
  /** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
@@ -79310,6 +79373,13 @@ method(object({
79310
79373
  }), RecordingAvailabilitySchema, {
79311
79374
  kind: "query",
79312
79375
  auth: "protected"
79376
+ }), method(object({
79377
+ deviceIds: array(number()).min(1).max(200),
79378
+ fromMs: number(),
79379
+ toMs: number()
79380
+ }), array(RecordingAvailabilityForDeviceSchema).readonly(), {
79381
+ kind: "query",
79382
+ auth: "protected"
79313
79383
  }), method(object({
79314
79384
  deviceId: number(),
79315
79385
  fromMs: number(),
@@ -79318,6 +79388,14 @@ method(object({
79318
79388
  }), RecordingDaysSchema, {
79319
79389
  kind: "query",
79320
79390
  auth: "protected"
79391
+ }), method(object({
79392
+ deviceIds: array(number()).min(1).max(200),
79393
+ fromMs: number(),
79394
+ toMs: number(),
79395
+ tzOffsetMinutes: number()
79396
+ }), array(RecordingDaysForDeviceSchema).readonly(), {
79397
+ kind: "query",
79398
+ auth: "protected"
79321
79399
  }), method(object({
79322
79400
  deviceId: number(),
79323
79401
  fromMs: number(),
@@ -86214,6 +86292,12 @@ Object.freeze({
86214
86292
  addonId: null,
86215
86293
  access: "view"
86216
86294
  },
86295
+ "pipelineAnalytics.getEventDensityBatch": {
86296
+ capName: "pipeline-analytics",
86297
+ capScope: "device",
86298
+ addonId: null,
86299
+ access: "view"
86300
+ },
86217
86301
  "pipelineAnalytics.getEventMedia": {
86218
86302
  capName: "pipeline-analytics",
86219
86303
  capScope: "device",
@@ -87336,12 +87420,24 @@ Object.freeze({
87336
87420
  addonId: null,
87337
87421
  access: "view"
87338
87422
  },
87423
+ "recording.getAvailabilityBatch": {
87424
+ capName: "recording",
87425
+ capScope: "system",
87426
+ addonId: null,
87427
+ access: "view"
87428
+ },
87339
87429
  "recording.getDaysWithRecordings": {
87340
87430
  capName: "recording",
87341
87431
  capScope: "system",
87342
87432
  addonId: null,
87343
87433
  access: "view"
87344
87434
  },
87435
+ "recording.getDaysWithRecordingsBatch": {
87436
+ capName: "recording",
87437
+ capScope: "system",
87438
+ addonId: null,
87439
+ access: "view"
87440
+ },
87345
87441
  "recording.getDeviceConfig": {
87346
87442
  capName: "recording",
87347
87443
  capScope: "system",
@@ -89946,6 +90042,11 @@ Object.freeze({
89946
90042
  form: "single",
89947
90043
  optional: false
89948
90044
  }],
90045
+ "pipelineAnalytics.getEventDensityBatch": [{
90046
+ name: "deviceIds",
90047
+ form: "array",
90048
+ optional: false
90049
+ }],
89949
90050
  "pipelineAnalytics.getEventMedia": [{
89950
90051
  name: "deviceId",
89951
90052
  form: "single",
@@ -90361,11 +90462,21 @@ Object.freeze({
90361
90462
  form: "single",
90362
90463
  optional: false
90363
90464
  }],
90465
+ "recording.getAvailabilityBatch": [{
90466
+ name: "deviceIds",
90467
+ form: "array",
90468
+ optional: false
90469
+ }],
90364
90470
  "recording.getDaysWithRecordings": [{
90365
90471
  name: "deviceId",
90366
90472
  form: "single",
90367
90473
  optional: false
90368
90474
  }],
90475
+ "recording.getDaysWithRecordingsBatch": [{
90476
+ name: "deviceIds",
90477
+ form: "array",
90478
+ optional: false
90479
+ }],
90369
90480
  "recording.getDeviceConfig": [{
90370
90481
  name: "deviceId",
90371
90482
  form: "single",
package/dist/addon.mjs CHANGED
@@ -66397,6 +66397,8 @@ var NcSystemEventKindSchema = _enum([
66397
66397
  "device-offline",
66398
66398
  "device-disabled",
66399
66399
  "device-enabled",
66400
+ "device-battery-low",
66401
+ "device-battery-normal",
66400
66402
  "stream-online",
66401
66403
  "stream-offline",
66402
66404
  "node-online",
@@ -69711,6 +69713,34 @@ var KeyEventsForDeviceSchema = object({
69711
69713
  deviceId: number(),
69712
69714
  events: array(KeyEventSchema).readonly()
69713
69715
  });
69716
+ /** One non-empty bucket of the timeline histogram. */
69717
+ var EventDensityBucketSchema = object({
69718
+ bucketStart: number(),
69719
+ motion: number().int(),
69720
+ object: number().int(),
69721
+ audio: number().int()
69722
+ });
69723
+ /**
69724
+ * One camera's row in a `getEventDensityBatch` answer.
69725
+ *
69726
+ * TWO facts, and the timeline draws them differently:
69727
+ *
69728
+ * - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
69729
+ * claim: read, and nothing happened in the window.
69730
+ * - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
69731
+ * empty and that emptiness means NOTHING; the timeline must render unknown,
69732
+ * not quiet.
69733
+ *
69734
+ * Fanned out per camera the difference was free — one query rejected while the
69735
+ * others resolved — and collapsing to a batch is the exact moment it is lost
69736
+ * silently. Every requested id gets a row: a caller that asked for twelve and
69737
+ * got eleven cannot tell which one is missing, or that any is.
69738
+ */
69739
+ var EventDensityForDeviceSchema = object({
69740
+ deviceId: number(),
69741
+ read: _enum(["read", "unreadable"]),
69742
+ buckets: array(EventDensityBucketSchema).readonly()
69743
+ });
69714
69744
  object({
69715
69745
  trackId: string(),
69716
69746
  className: string(),
@@ -70021,12 +70051,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
70021
70051
  since: number(),
70022
70052
  until: number(),
70023
70053
  bucketMs: number().int().positive()
70024
- }), array(object({
70025
- bucketStart: number(),
70026
- motion: number().int(),
70027
- object: number().int(),
70028
- audio: number().int()
70029
- })).readonly()), method(object({
70054
+ }), array(EventDensityBucketSchema).readonly()), method(object({
70055
+ deviceIds: array(number()).min(1).max(200),
70056
+ since: number(),
70057
+ until: number(),
70058
+ bucketMs: number().int().positive()
70059
+ }), array(EventDensityForDeviceSchema).readonly()), method(object({
70030
70060
  deviceId: number(),
70031
70061
  cutoffMs: number()
70032
70062
  }), object({
@@ -79076,6 +79106,39 @@ var RecordingDaysSchema = object({
79076
79106
  /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
79077
79107
  days: array(number())
79078
79108
  });
79109
+ /**
79110
+ * One camera's row in a `getAvailabilityBatch` answer.
79111
+ *
79112
+ * `ranges` is EXACTLY what `getAvailability` returns for that camera — the
79113
+ * batch collapses the transport, not the work — plus the one thing the singular
79114
+ * method never had to say:
79115
+ *
79116
+ * - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
79117
+ * no footage in the window", which is a real claim.
79118
+ * - `read: 'unreadable'` — the recorder could not answer for this camera (its
79119
+ * calendar rung threw, its location is unmounted). `ranges` is empty and
79120
+ * that emptiness means NOTHING.
79121
+ *
79122
+ * A timeline that renders the second as the first tells an operator there is no
79123
+ * footage when the truth is that nobody looked.
79124
+ */
79125
+ var RecordingAvailabilityForDeviceSchema = object({
79126
+ deviceId: number(),
79127
+ read: _enum(["read", "unreadable"]),
79128
+ ranges: array(RecordingRangeSchema).readonly()
79129
+ });
79130
+ /**
79131
+ * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
79132
+ * {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
79133
+ * "no footage in this month", `read: 'unreadable'` is "nobody could look", and
79134
+ * the date-picker's day dots must not spell them the same.
79135
+ */
79136
+ var RecordingDaysForDeviceSchema = object({
79137
+ deviceId: number(),
79138
+ read: _enum(["read", "unreadable"]),
79139
+ /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
79140
+ days: array(number()).readonly()
79141
+ });
79079
79142
  var RecordingManifestSchema = object({
79080
79143
  deviceId: number(),
79081
79144
  /** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
@@ -79310,6 +79373,13 @@ method(object({
79310
79373
  }), RecordingAvailabilitySchema, {
79311
79374
  kind: "query",
79312
79375
  auth: "protected"
79376
+ }), method(object({
79377
+ deviceIds: array(number()).min(1).max(200),
79378
+ fromMs: number(),
79379
+ toMs: number()
79380
+ }), array(RecordingAvailabilityForDeviceSchema).readonly(), {
79381
+ kind: "query",
79382
+ auth: "protected"
79313
79383
  }), method(object({
79314
79384
  deviceId: number(),
79315
79385
  fromMs: number(),
@@ -79318,6 +79388,14 @@ method(object({
79318
79388
  }), RecordingDaysSchema, {
79319
79389
  kind: "query",
79320
79390
  auth: "protected"
79391
+ }), method(object({
79392
+ deviceIds: array(number()).min(1).max(200),
79393
+ fromMs: number(),
79394
+ toMs: number(),
79395
+ tzOffsetMinutes: number()
79396
+ }), array(RecordingDaysForDeviceSchema).readonly(), {
79397
+ kind: "query",
79398
+ auth: "protected"
79321
79399
  }), method(object({
79322
79400
  deviceId: number(),
79323
79401
  fromMs: number(),
@@ -86214,6 +86292,12 @@ Object.freeze({
86214
86292
  addonId: null,
86215
86293
  access: "view"
86216
86294
  },
86295
+ "pipelineAnalytics.getEventDensityBatch": {
86296
+ capName: "pipeline-analytics",
86297
+ capScope: "device",
86298
+ addonId: null,
86299
+ access: "view"
86300
+ },
86217
86301
  "pipelineAnalytics.getEventMedia": {
86218
86302
  capName: "pipeline-analytics",
86219
86303
  capScope: "device",
@@ -87336,12 +87420,24 @@ Object.freeze({
87336
87420
  addonId: null,
87337
87421
  access: "view"
87338
87422
  },
87423
+ "recording.getAvailabilityBatch": {
87424
+ capName: "recording",
87425
+ capScope: "system",
87426
+ addonId: null,
87427
+ access: "view"
87428
+ },
87339
87429
  "recording.getDaysWithRecordings": {
87340
87430
  capName: "recording",
87341
87431
  capScope: "system",
87342
87432
  addonId: null,
87343
87433
  access: "view"
87344
87434
  },
87435
+ "recording.getDaysWithRecordingsBatch": {
87436
+ capName: "recording",
87437
+ capScope: "system",
87438
+ addonId: null,
87439
+ access: "view"
87440
+ },
87345
87441
  "recording.getDeviceConfig": {
87346
87442
  capName: "recording",
87347
87443
  capScope: "system",
@@ -89946,6 +90042,11 @@ Object.freeze({
89946
90042
  form: "single",
89947
90043
  optional: false
89948
90044
  }],
90045
+ "pipelineAnalytics.getEventDensityBatch": [{
90046
+ name: "deviceIds",
90047
+ form: "array",
90048
+ optional: false
90049
+ }],
89949
90050
  "pipelineAnalytics.getEventMedia": [{
89950
90051
  name: "deviceId",
89951
90052
  form: "single",
@@ -90361,11 +90462,21 @@ Object.freeze({
90361
90462
  form: "single",
90362
90463
  optional: false
90363
90464
  }],
90465
+ "recording.getAvailabilityBatch": [{
90466
+ name: "deviceIds",
90467
+ form: "array",
90468
+ optional: false
90469
+ }],
90364
90470
  "recording.getDaysWithRecordings": [{
90365
90471
  name: "deviceId",
90366
90472
  form: "single",
90367
90473
  optional: false
90368
90474
  }],
90475
+ "recording.getDaysWithRecordingsBatch": [{
90476
+ name: "deviceIds",
90477
+ form: "array",
90478
+ optional: false
90479
+ }],
90369
90480
  "recording.getDeviceConfig": [{
90370
90481
  name: "deviceId",
90371
90482
  form: "single",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-dreame",
3
- "version": "0.2.50",
3
+ "version": "0.2.52",
4
4
  "description": "Dreame robot-vacuum / lawn-mower device-provider addon for CamStack — wraps the @apocaliss92/nodedreame Dreamehome cloud client",
5
5
  "keywords": [
6
6
  "camstack",