@camstack/addon-provider-gree 0.2.49 → 0.2.51

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
@@ -15878,6 +15878,8 @@ var NcSystemEventKindSchema = _enum([
15878
15878
  "device-offline",
15879
15879
  "device-disabled",
15880
15880
  "device-enabled",
15881
+ "device-battery-low",
15882
+ "device-battery-normal",
15881
15883
  "stream-online",
15882
15884
  "stream-offline",
15883
15885
  "node-online",
@@ -19192,6 +19194,34 @@ var KeyEventsForDeviceSchema = object({
19192
19194
  deviceId: number(),
19193
19195
  events: array(KeyEventSchema).readonly()
19194
19196
  });
19197
+ /** One non-empty bucket of the timeline histogram. */
19198
+ var EventDensityBucketSchema = object({
19199
+ bucketStart: number(),
19200
+ motion: number().int(),
19201
+ object: number().int(),
19202
+ audio: number().int()
19203
+ });
19204
+ /**
19205
+ * One camera's row in a `getEventDensityBatch` answer.
19206
+ *
19207
+ * TWO facts, and the timeline draws them differently:
19208
+ *
19209
+ * - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
19210
+ * claim: read, and nothing happened in the window.
19211
+ * - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
19212
+ * empty and that emptiness means NOTHING; the timeline must render unknown,
19213
+ * not quiet.
19214
+ *
19215
+ * Fanned out per camera the difference was free — one query rejected while the
19216
+ * others resolved — and collapsing to a batch is the exact moment it is lost
19217
+ * silently. Every requested id gets a row: a caller that asked for twelve and
19218
+ * got eleven cannot tell which one is missing, or that any is.
19219
+ */
19220
+ var EventDensityForDeviceSchema = object({
19221
+ deviceId: number(),
19222
+ read: _enum(["read", "unreadable"]),
19223
+ buckets: array(EventDensityBucketSchema).readonly()
19224
+ });
19195
19225
  object({
19196
19226
  trackId: string(),
19197
19227
  className: string(),
@@ -19502,12 +19532,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19502
19532
  since: number(),
19503
19533
  until: number(),
19504
19534
  bucketMs: number().int().positive()
19505
- }), array(object({
19506
- bucketStart: number(),
19507
- motion: number().int(),
19508
- object: number().int(),
19509
- audio: number().int()
19510
- })).readonly()), method(object({
19535
+ }), array(EventDensityBucketSchema).readonly()), method(object({
19536
+ deviceIds: array(number()).min(1).max(200),
19537
+ since: number(),
19538
+ until: number(),
19539
+ bucketMs: number().int().positive()
19540
+ }), array(EventDensityForDeviceSchema).readonly()), method(object({
19511
19541
  deviceId: number(),
19512
19542
  cutoffMs: number()
19513
19543
  }), object({
@@ -28532,6 +28562,39 @@ var RecordingDaysSchema = object({
28532
28562
  /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
28533
28563
  days: array(number())
28534
28564
  });
28565
+ /**
28566
+ * One camera's row in a `getAvailabilityBatch` answer.
28567
+ *
28568
+ * `ranges` is EXACTLY what `getAvailability` returns for that camera — the
28569
+ * batch collapses the transport, not the work — plus the one thing the singular
28570
+ * method never had to say:
28571
+ *
28572
+ * - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
28573
+ * no footage in the window", which is a real claim.
28574
+ * - `read: 'unreadable'` — the recorder could not answer for this camera (its
28575
+ * calendar rung threw, its location is unmounted). `ranges` is empty and
28576
+ * that emptiness means NOTHING.
28577
+ *
28578
+ * A timeline that renders the second as the first tells an operator there is no
28579
+ * footage when the truth is that nobody looked.
28580
+ */
28581
+ var RecordingAvailabilityForDeviceSchema = object({
28582
+ deviceId: number(),
28583
+ read: _enum(["read", "unreadable"]),
28584
+ ranges: array(RecordingRangeSchema).readonly()
28585
+ });
28586
+ /**
28587
+ * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
28588
+ * {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
28589
+ * "no footage in this month", `read: 'unreadable'` is "nobody could look", and
28590
+ * the date-picker's day dots must not spell them the same.
28591
+ */
28592
+ var RecordingDaysForDeviceSchema = object({
28593
+ deviceId: number(),
28594
+ read: _enum(["read", "unreadable"]),
28595
+ /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
28596
+ days: array(number()).readonly()
28597
+ });
28535
28598
  var RecordingManifestSchema = object({
28536
28599
  deviceId: number(),
28537
28600
  /** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
@@ -28766,6 +28829,13 @@ method(object({
28766
28829
  }), RecordingAvailabilitySchema, {
28767
28830
  kind: "query",
28768
28831
  auth: "protected"
28832
+ }), method(object({
28833
+ deviceIds: array(number()).min(1).max(200),
28834
+ fromMs: number(),
28835
+ toMs: number()
28836
+ }), array(RecordingAvailabilityForDeviceSchema).readonly(), {
28837
+ kind: "query",
28838
+ auth: "protected"
28769
28839
  }), method(object({
28770
28840
  deviceId: number(),
28771
28841
  fromMs: number(),
@@ -28774,6 +28844,14 @@ method(object({
28774
28844
  }), RecordingDaysSchema, {
28775
28845
  kind: "query",
28776
28846
  auth: "protected"
28847
+ }), method(object({
28848
+ deviceIds: array(number()).min(1).max(200),
28849
+ fromMs: number(),
28850
+ toMs: number(),
28851
+ tzOffsetMinutes: number()
28852
+ }), array(RecordingDaysForDeviceSchema).readonly(), {
28853
+ kind: "query",
28854
+ auth: "protected"
28777
28855
  }), method(object({
28778
28856
  deviceId: number(),
28779
28857
  fromMs: number(),
@@ -35670,6 +35748,12 @@ Object.freeze({
35670
35748
  addonId: null,
35671
35749
  access: "view"
35672
35750
  },
35751
+ "pipelineAnalytics.getEventDensityBatch": {
35752
+ capName: "pipeline-analytics",
35753
+ capScope: "device",
35754
+ addonId: null,
35755
+ access: "view"
35756
+ },
35673
35757
  "pipelineAnalytics.getEventMedia": {
35674
35758
  capName: "pipeline-analytics",
35675
35759
  capScope: "device",
@@ -36792,12 +36876,24 @@ Object.freeze({
36792
36876
  addonId: null,
36793
36877
  access: "view"
36794
36878
  },
36879
+ "recording.getAvailabilityBatch": {
36880
+ capName: "recording",
36881
+ capScope: "system",
36882
+ addonId: null,
36883
+ access: "view"
36884
+ },
36795
36885
  "recording.getDaysWithRecordings": {
36796
36886
  capName: "recording",
36797
36887
  capScope: "system",
36798
36888
  addonId: null,
36799
36889
  access: "view"
36800
36890
  },
36891
+ "recording.getDaysWithRecordingsBatch": {
36892
+ capName: "recording",
36893
+ capScope: "system",
36894
+ addonId: null,
36895
+ access: "view"
36896
+ },
36801
36897
  "recording.getDeviceConfig": {
36802
36898
  capName: "recording",
36803
36899
  capScope: "system",
@@ -39402,6 +39498,11 @@ Object.freeze({
39402
39498
  form: "single",
39403
39499
  optional: false
39404
39500
  }],
39501
+ "pipelineAnalytics.getEventDensityBatch": [{
39502
+ name: "deviceIds",
39503
+ form: "array",
39504
+ optional: false
39505
+ }],
39405
39506
  "pipelineAnalytics.getEventMedia": [{
39406
39507
  name: "deviceId",
39407
39508
  form: "single",
@@ -39817,11 +39918,21 @@ Object.freeze({
39817
39918
  form: "single",
39818
39919
  optional: false
39819
39920
  }],
39921
+ "recording.getAvailabilityBatch": [{
39922
+ name: "deviceIds",
39923
+ form: "array",
39924
+ optional: false
39925
+ }],
39820
39926
  "recording.getDaysWithRecordings": [{
39821
39927
  name: "deviceId",
39822
39928
  form: "single",
39823
39929
  optional: false
39824
39930
  }],
39931
+ "recording.getDaysWithRecordingsBatch": [{
39932
+ name: "deviceIds",
39933
+ form: "array",
39934
+ optional: false
39935
+ }],
39825
39936
  "recording.getDeviceConfig": [{
39826
39937
  name: "deviceId",
39827
39938
  form: "single",
package/dist/addon.mjs CHANGED
@@ -15877,6 +15877,8 @@ var NcSystemEventKindSchema = _enum([
15877
15877
  "device-offline",
15878
15878
  "device-disabled",
15879
15879
  "device-enabled",
15880
+ "device-battery-low",
15881
+ "device-battery-normal",
15880
15882
  "stream-online",
15881
15883
  "stream-offline",
15882
15884
  "node-online",
@@ -19191,6 +19193,34 @@ var KeyEventsForDeviceSchema = object({
19191
19193
  deviceId: number(),
19192
19194
  events: array(KeyEventSchema).readonly()
19193
19195
  });
19196
+ /** One non-empty bucket of the timeline histogram. */
19197
+ var EventDensityBucketSchema = object({
19198
+ bucketStart: number(),
19199
+ motion: number().int(),
19200
+ object: number().int(),
19201
+ audio: number().int()
19202
+ });
19203
+ /**
19204
+ * One camera's row in a `getEventDensityBatch` answer.
19205
+ *
19206
+ * TWO facts, and the timeline draws them differently:
19207
+ *
19208
+ * - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
19209
+ * claim: read, and nothing happened in the window.
19210
+ * - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
19211
+ * empty and that emptiness means NOTHING; the timeline must render unknown,
19212
+ * not quiet.
19213
+ *
19214
+ * Fanned out per camera the difference was free — one query rejected while the
19215
+ * others resolved — and collapsing to a batch is the exact moment it is lost
19216
+ * silently. Every requested id gets a row: a caller that asked for twelve and
19217
+ * got eleven cannot tell which one is missing, or that any is.
19218
+ */
19219
+ var EventDensityForDeviceSchema = object({
19220
+ deviceId: number(),
19221
+ read: _enum(["read", "unreadable"]),
19222
+ buckets: array(EventDensityBucketSchema).readonly()
19223
+ });
19194
19224
  object({
19195
19225
  trackId: string(),
19196
19226
  className: string(),
@@ -19501,12 +19531,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19501
19531
  since: number(),
19502
19532
  until: number(),
19503
19533
  bucketMs: number().int().positive()
19504
- }), array(object({
19505
- bucketStart: number(),
19506
- motion: number().int(),
19507
- object: number().int(),
19508
- audio: number().int()
19509
- })).readonly()), method(object({
19534
+ }), array(EventDensityBucketSchema).readonly()), method(object({
19535
+ deviceIds: array(number()).min(1).max(200),
19536
+ since: number(),
19537
+ until: number(),
19538
+ bucketMs: number().int().positive()
19539
+ }), array(EventDensityForDeviceSchema).readonly()), method(object({
19510
19540
  deviceId: number(),
19511
19541
  cutoffMs: number()
19512
19542
  }), object({
@@ -28531,6 +28561,39 @@ var RecordingDaysSchema = object({
28531
28561
  /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
28532
28562
  days: array(number())
28533
28563
  });
28564
+ /**
28565
+ * One camera's row in a `getAvailabilityBatch` answer.
28566
+ *
28567
+ * `ranges` is EXACTLY what `getAvailability` returns for that camera — the
28568
+ * batch collapses the transport, not the work — plus the one thing the singular
28569
+ * method never had to say:
28570
+ *
28571
+ * - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
28572
+ * no footage in the window", which is a real claim.
28573
+ * - `read: 'unreadable'` — the recorder could not answer for this camera (its
28574
+ * calendar rung threw, its location is unmounted). `ranges` is empty and
28575
+ * that emptiness means NOTHING.
28576
+ *
28577
+ * A timeline that renders the second as the first tells an operator there is no
28578
+ * footage when the truth is that nobody looked.
28579
+ */
28580
+ var RecordingAvailabilityForDeviceSchema = object({
28581
+ deviceId: number(),
28582
+ read: _enum(["read", "unreadable"]),
28583
+ ranges: array(RecordingRangeSchema).readonly()
28584
+ });
28585
+ /**
28586
+ * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
28587
+ * {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
28588
+ * "no footage in this month", `read: 'unreadable'` is "nobody could look", and
28589
+ * the date-picker's day dots must not spell them the same.
28590
+ */
28591
+ var RecordingDaysForDeviceSchema = object({
28592
+ deviceId: number(),
28593
+ read: _enum(["read", "unreadable"]),
28594
+ /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
28595
+ days: array(number()).readonly()
28596
+ });
28534
28597
  var RecordingManifestSchema = object({
28535
28598
  deviceId: number(),
28536
28599
  /** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
@@ -28765,6 +28828,13 @@ method(object({
28765
28828
  }), RecordingAvailabilitySchema, {
28766
28829
  kind: "query",
28767
28830
  auth: "protected"
28831
+ }), method(object({
28832
+ deviceIds: array(number()).min(1).max(200),
28833
+ fromMs: number(),
28834
+ toMs: number()
28835
+ }), array(RecordingAvailabilityForDeviceSchema).readonly(), {
28836
+ kind: "query",
28837
+ auth: "protected"
28768
28838
  }), method(object({
28769
28839
  deviceId: number(),
28770
28840
  fromMs: number(),
@@ -28773,6 +28843,14 @@ method(object({
28773
28843
  }), RecordingDaysSchema, {
28774
28844
  kind: "query",
28775
28845
  auth: "protected"
28846
+ }), method(object({
28847
+ deviceIds: array(number()).min(1).max(200),
28848
+ fromMs: number(),
28849
+ toMs: number(),
28850
+ tzOffsetMinutes: number()
28851
+ }), array(RecordingDaysForDeviceSchema).readonly(), {
28852
+ kind: "query",
28853
+ auth: "protected"
28776
28854
  }), method(object({
28777
28855
  deviceId: number(),
28778
28856
  fromMs: number(),
@@ -35669,6 +35747,12 @@ Object.freeze({
35669
35747
  addonId: null,
35670
35748
  access: "view"
35671
35749
  },
35750
+ "pipelineAnalytics.getEventDensityBatch": {
35751
+ capName: "pipeline-analytics",
35752
+ capScope: "device",
35753
+ addonId: null,
35754
+ access: "view"
35755
+ },
35672
35756
  "pipelineAnalytics.getEventMedia": {
35673
35757
  capName: "pipeline-analytics",
35674
35758
  capScope: "device",
@@ -36791,12 +36875,24 @@ Object.freeze({
36791
36875
  addonId: null,
36792
36876
  access: "view"
36793
36877
  },
36878
+ "recording.getAvailabilityBatch": {
36879
+ capName: "recording",
36880
+ capScope: "system",
36881
+ addonId: null,
36882
+ access: "view"
36883
+ },
36794
36884
  "recording.getDaysWithRecordings": {
36795
36885
  capName: "recording",
36796
36886
  capScope: "system",
36797
36887
  addonId: null,
36798
36888
  access: "view"
36799
36889
  },
36890
+ "recording.getDaysWithRecordingsBatch": {
36891
+ capName: "recording",
36892
+ capScope: "system",
36893
+ addonId: null,
36894
+ access: "view"
36895
+ },
36800
36896
  "recording.getDeviceConfig": {
36801
36897
  capName: "recording",
36802
36898
  capScope: "system",
@@ -39401,6 +39497,11 @@ Object.freeze({
39401
39497
  form: "single",
39402
39498
  optional: false
39403
39499
  }],
39500
+ "pipelineAnalytics.getEventDensityBatch": [{
39501
+ name: "deviceIds",
39502
+ form: "array",
39503
+ optional: false
39504
+ }],
39404
39505
  "pipelineAnalytics.getEventMedia": [{
39405
39506
  name: "deviceId",
39406
39507
  form: "single",
@@ -39816,11 +39917,21 @@ Object.freeze({
39816
39917
  form: "single",
39817
39918
  optional: false
39818
39919
  }],
39920
+ "recording.getAvailabilityBatch": [{
39921
+ name: "deviceIds",
39922
+ form: "array",
39923
+ optional: false
39924
+ }],
39819
39925
  "recording.getDaysWithRecordings": [{
39820
39926
  name: "deviceId",
39821
39927
  form: "single",
39822
39928
  optional: false
39823
39929
  }],
39930
+ "recording.getDaysWithRecordingsBatch": [{
39931
+ name: "deviceIds",
39932
+ form: "array",
39933
+ optional: false
39934
+ }],
39824
39935
  "recording.getDeviceConfig": [{
39825
39936
  name: "deviceId",
39826
39937
  form: "single",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-gree",
3
- "version": "0.2.49",
3
+ "version": "0.2.51",
4
4
  "description": "Gree air-conditioner device-provider addon for CamStack — wraps the @apocaliss92/nodegree local-UDP client (LAN discovery + AES control), exposing climate-control and fan-control",
5
5
  "keywords": [
6
6
  "camstack",