@camstack/addon-provider-reolink 1.2.73 → 1.2.75

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
@@ -16498,6 +16498,8 @@ var NcSystemEventKindSchema = _enum([
16498
16498
  "device-offline",
16499
16499
  "device-disabled",
16500
16500
  "device-enabled",
16501
+ "device-battery-low",
16502
+ "device-battery-normal",
16501
16503
  "stream-online",
16502
16504
  "stream-offline",
16503
16505
  "node-online",
@@ -19812,6 +19814,34 @@ var KeyEventsForDeviceSchema = object({
19812
19814
  deviceId: number(),
19813
19815
  events: array(KeyEventSchema).readonly()
19814
19816
  });
19817
+ /** One non-empty bucket of the timeline histogram. */
19818
+ var EventDensityBucketSchema = object({
19819
+ bucketStart: number(),
19820
+ motion: number().int(),
19821
+ object: number().int(),
19822
+ audio: number().int()
19823
+ });
19824
+ /**
19825
+ * One camera's row in a `getEventDensityBatch` answer.
19826
+ *
19827
+ * TWO facts, and the timeline draws them differently:
19828
+ *
19829
+ * - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
19830
+ * claim: read, and nothing happened in the window.
19831
+ * - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
19832
+ * empty and that emptiness means NOTHING; the timeline must render unknown,
19833
+ * not quiet.
19834
+ *
19835
+ * Fanned out per camera the difference was free — one query rejected while the
19836
+ * others resolved — and collapsing to a batch is the exact moment it is lost
19837
+ * silently. Every requested id gets a row: a caller that asked for twelve and
19838
+ * got eleven cannot tell which one is missing, or that any is.
19839
+ */
19840
+ var EventDensityForDeviceSchema = object({
19841
+ deviceId: number(),
19842
+ read: _enum(["read", "unreadable"]),
19843
+ buckets: array(EventDensityBucketSchema).readonly()
19844
+ });
19815
19845
  object({
19816
19846
  trackId: string(),
19817
19847
  className: string(),
@@ -20122,12 +20152,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20122
20152
  since: number(),
20123
20153
  until: number(),
20124
20154
  bucketMs: number().int().positive()
20125
- }), array(object({
20126
- bucketStart: number(),
20127
- motion: number().int(),
20128
- object: number().int(),
20129
- audio: number().int()
20130
- })).readonly()), method(object({
20155
+ }), array(EventDensityBucketSchema).readonly()), method(object({
20156
+ deviceIds: array(number()).min(1).max(200),
20157
+ since: number(),
20158
+ until: number(),
20159
+ bucketMs: number().int().positive()
20160
+ }), array(EventDensityForDeviceSchema).readonly()), method(object({
20131
20161
  deviceId: number(),
20132
20162
  cutoffMs: number()
20133
20163
  }), object({
@@ -29343,6 +29373,39 @@ var RecordingDaysSchema = object({
29343
29373
  /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
29344
29374
  days: array(number())
29345
29375
  });
29376
+ /**
29377
+ * One camera's row in a `getAvailabilityBatch` answer.
29378
+ *
29379
+ * `ranges` is EXACTLY what `getAvailability` returns for that camera — the
29380
+ * batch collapses the transport, not the work — plus the one thing the singular
29381
+ * method never had to say:
29382
+ *
29383
+ * - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
29384
+ * no footage in the window", which is a real claim.
29385
+ * - `read: 'unreadable'` — the recorder could not answer for this camera (its
29386
+ * calendar rung threw, its location is unmounted). `ranges` is empty and
29387
+ * that emptiness means NOTHING.
29388
+ *
29389
+ * A timeline that renders the second as the first tells an operator there is no
29390
+ * footage when the truth is that nobody looked.
29391
+ */
29392
+ var RecordingAvailabilityForDeviceSchema = object({
29393
+ deviceId: number(),
29394
+ read: _enum(["read", "unreadable"]),
29395
+ ranges: array(RecordingRangeSchema).readonly()
29396
+ });
29397
+ /**
29398
+ * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
29399
+ * {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
29400
+ * "no footage in this month", `read: 'unreadable'` is "nobody could look", and
29401
+ * the date-picker's day dots must not spell them the same.
29402
+ */
29403
+ var RecordingDaysForDeviceSchema = object({
29404
+ deviceId: number(),
29405
+ read: _enum(["read", "unreadable"]),
29406
+ /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
29407
+ days: array(number()).readonly()
29408
+ });
29346
29409
  var RecordingManifestSchema = object({
29347
29410
  deviceId: number(),
29348
29411
  /** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
@@ -29577,6 +29640,13 @@ method(object({
29577
29640
  }), RecordingAvailabilitySchema, {
29578
29641
  kind: "query",
29579
29642
  auth: "protected"
29643
+ }), method(object({
29644
+ deviceIds: array(number()).min(1).max(200),
29645
+ fromMs: number(),
29646
+ toMs: number()
29647
+ }), array(RecordingAvailabilityForDeviceSchema).readonly(), {
29648
+ kind: "query",
29649
+ auth: "protected"
29580
29650
  }), method(object({
29581
29651
  deviceId: number(),
29582
29652
  fromMs: number(),
@@ -29585,6 +29655,14 @@ method(object({
29585
29655
  }), RecordingDaysSchema, {
29586
29656
  kind: "query",
29587
29657
  auth: "protected"
29658
+ }), method(object({
29659
+ deviceIds: array(number()).min(1).max(200),
29660
+ fromMs: number(),
29661
+ toMs: number(),
29662
+ tzOffsetMinutes: number()
29663
+ }), array(RecordingDaysForDeviceSchema).readonly(), {
29664
+ kind: "query",
29665
+ auth: "protected"
29588
29666
  }), method(object({
29589
29667
  deviceId: number(),
29590
29668
  fromMs: number(),
@@ -36846,6 +36924,12 @@ Object.freeze({
36846
36924
  addonId: null,
36847
36925
  access: "view"
36848
36926
  },
36927
+ "pipelineAnalytics.getEventDensityBatch": {
36928
+ capName: "pipeline-analytics",
36929
+ capScope: "device",
36930
+ addonId: null,
36931
+ access: "view"
36932
+ },
36849
36933
  "pipelineAnalytics.getEventMedia": {
36850
36934
  capName: "pipeline-analytics",
36851
36935
  capScope: "device",
@@ -37968,12 +38052,24 @@ Object.freeze({
37968
38052
  addonId: null,
37969
38053
  access: "view"
37970
38054
  },
38055
+ "recording.getAvailabilityBatch": {
38056
+ capName: "recording",
38057
+ capScope: "system",
38058
+ addonId: null,
38059
+ access: "view"
38060
+ },
37971
38061
  "recording.getDaysWithRecordings": {
37972
38062
  capName: "recording",
37973
38063
  capScope: "system",
37974
38064
  addonId: null,
37975
38065
  access: "view"
37976
38066
  },
38067
+ "recording.getDaysWithRecordingsBatch": {
38068
+ capName: "recording",
38069
+ capScope: "system",
38070
+ addonId: null,
38071
+ access: "view"
38072
+ },
37977
38073
  "recording.getDeviceConfig": {
37978
38074
  capName: "recording",
37979
38075
  capScope: "system",
@@ -40578,6 +40674,11 @@ Object.freeze({
40578
40674
  form: "single",
40579
40675
  optional: false
40580
40676
  }],
40677
+ "pipelineAnalytics.getEventDensityBatch": [{
40678
+ name: "deviceIds",
40679
+ form: "array",
40680
+ optional: false
40681
+ }],
40581
40682
  "pipelineAnalytics.getEventMedia": [{
40582
40683
  name: "deviceId",
40583
40684
  form: "single",
@@ -40993,11 +41094,21 @@ Object.freeze({
40993
41094
  form: "single",
40994
41095
  optional: false
40995
41096
  }],
41097
+ "recording.getAvailabilityBatch": [{
41098
+ name: "deviceIds",
41099
+ form: "array",
41100
+ optional: false
41101
+ }],
40996
41102
  "recording.getDaysWithRecordings": [{
40997
41103
  name: "deviceId",
40998
41104
  form: "single",
40999
41105
  optional: false
41000
41106
  }],
41107
+ "recording.getDaysWithRecordingsBatch": [{
41108
+ name: "deviceIds",
41109
+ form: "array",
41110
+ optional: false
41111
+ }],
41001
41112
  "recording.getDeviceConfig": [{
41002
41113
  name: "deviceId",
41003
41114
  form: "single",
package/dist/addon.mjs CHANGED
@@ -16493,6 +16493,8 @@ var NcSystemEventKindSchema = _enum([
16493
16493
  "device-offline",
16494
16494
  "device-disabled",
16495
16495
  "device-enabled",
16496
+ "device-battery-low",
16497
+ "device-battery-normal",
16496
16498
  "stream-online",
16497
16499
  "stream-offline",
16498
16500
  "node-online",
@@ -19807,6 +19809,34 @@ var KeyEventsForDeviceSchema = object({
19807
19809
  deviceId: number(),
19808
19810
  events: array(KeyEventSchema).readonly()
19809
19811
  });
19812
+ /** One non-empty bucket of the timeline histogram. */
19813
+ var EventDensityBucketSchema = object({
19814
+ bucketStart: number(),
19815
+ motion: number().int(),
19816
+ object: number().int(),
19817
+ audio: number().int()
19818
+ });
19819
+ /**
19820
+ * One camera's row in a `getEventDensityBatch` answer.
19821
+ *
19822
+ * TWO facts, and the timeline draws them differently:
19823
+ *
19824
+ * - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
19825
+ * claim: read, and nothing happened in the window.
19826
+ * - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
19827
+ * empty and that emptiness means NOTHING; the timeline must render unknown,
19828
+ * not quiet.
19829
+ *
19830
+ * Fanned out per camera the difference was free — one query rejected while the
19831
+ * others resolved — and collapsing to a batch is the exact moment it is lost
19832
+ * silently. Every requested id gets a row: a caller that asked for twelve and
19833
+ * got eleven cannot tell which one is missing, or that any is.
19834
+ */
19835
+ var EventDensityForDeviceSchema = object({
19836
+ deviceId: number(),
19837
+ read: _enum(["read", "unreadable"]),
19838
+ buckets: array(EventDensityBucketSchema).readonly()
19839
+ });
19810
19840
  object({
19811
19841
  trackId: string(),
19812
19842
  className: string(),
@@ -20117,12 +20147,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20117
20147
  since: number(),
20118
20148
  until: number(),
20119
20149
  bucketMs: number().int().positive()
20120
- }), array(object({
20121
- bucketStart: number(),
20122
- motion: number().int(),
20123
- object: number().int(),
20124
- audio: number().int()
20125
- })).readonly()), method(object({
20150
+ }), array(EventDensityBucketSchema).readonly()), method(object({
20151
+ deviceIds: array(number()).min(1).max(200),
20152
+ since: number(),
20153
+ until: number(),
20154
+ bucketMs: number().int().positive()
20155
+ }), array(EventDensityForDeviceSchema).readonly()), method(object({
20126
20156
  deviceId: number(),
20127
20157
  cutoffMs: number()
20128
20158
  }), object({
@@ -29338,6 +29368,39 @@ var RecordingDaysSchema = object({
29338
29368
  /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
29339
29369
  days: array(number())
29340
29370
  });
29371
+ /**
29372
+ * One camera's row in a `getAvailabilityBatch` answer.
29373
+ *
29374
+ * `ranges` is EXACTLY what `getAvailability` returns for that camera — the
29375
+ * batch collapses the transport, not the work — plus the one thing the singular
29376
+ * method never had to say:
29377
+ *
29378
+ * - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
29379
+ * no footage in the window", which is a real claim.
29380
+ * - `read: 'unreadable'` — the recorder could not answer for this camera (its
29381
+ * calendar rung threw, its location is unmounted). `ranges` is empty and
29382
+ * that emptiness means NOTHING.
29383
+ *
29384
+ * A timeline that renders the second as the first tells an operator there is no
29385
+ * footage when the truth is that nobody looked.
29386
+ */
29387
+ var RecordingAvailabilityForDeviceSchema = object({
29388
+ deviceId: number(),
29389
+ read: _enum(["read", "unreadable"]),
29390
+ ranges: array(RecordingRangeSchema).readonly()
29391
+ });
29392
+ /**
29393
+ * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
29394
+ * {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
29395
+ * "no footage in this month", `read: 'unreadable'` is "nobody could look", and
29396
+ * the date-picker's day dots must not spell them the same.
29397
+ */
29398
+ var RecordingDaysForDeviceSchema = object({
29399
+ deviceId: number(),
29400
+ read: _enum(["read", "unreadable"]),
29401
+ /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
29402
+ days: array(number()).readonly()
29403
+ });
29341
29404
  var RecordingManifestSchema = object({
29342
29405
  deviceId: number(),
29343
29406
  /** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
@@ -29572,6 +29635,13 @@ method(object({
29572
29635
  }), RecordingAvailabilitySchema, {
29573
29636
  kind: "query",
29574
29637
  auth: "protected"
29638
+ }), method(object({
29639
+ deviceIds: array(number()).min(1).max(200),
29640
+ fromMs: number(),
29641
+ toMs: number()
29642
+ }), array(RecordingAvailabilityForDeviceSchema).readonly(), {
29643
+ kind: "query",
29644
+ auth: "protected"
29575
29645
  }), method(object({
29576
29646
  deviceId: number(),
29577
29647
  fromMs: number(),
@@ -29580,6 +29650,14 @@ method(object({
29580
29650
  }), RecordingDaysSchema, {
29581
29651
  kind: "query",
29582
29652
  auth: "protected"
29653
+ }), method(object({
29654
+ deviceIds: array(number()).min(1).max(200),
29655
+ fromMs: number(),
29656
+ toMs: number(),
29657
+ tzOffsetMinutes: number()
29658
+ }), array(RecordingDaysForDeviceSchema).readonly(), {
29659
+ kind: "query",
29660
+ auth: "protected"
29583
29661
  }), method(object({
29584
29662
  deviceId: number(),
29585
29663
  fromMs: number(),
@@ -36841,6 +36919,12 @@ Object.freeze({
36841
36919
  addonId: null,
36842
36920
  access: "view"
36843
36921
  },
36922
+ "pipelineAnalytics.getEventDensityBatch": {
36923
+ capName: "pipeline-analytics",
36924
+ capScope: "device",
36925
+ addonId: null,
36926
+ access: "view"
36927
+ },
36844
36928
  "pipelineAnalytics.getEventMedia": {
36845
36929
  capName: "pipeline-analytics",
36846
36930
  capScope: "device",
@@ -37963,12 +38047,24 @@ Object.freeze({
37963
38047
  addonId: null,
37964
38048
  access: "view"
37965
38049
  },
38050
+ "recording.getAvailabilityBatch": {
38051
+ capName: "recording",
38052
+ capScope: "system",
38053
+ addonId: null,
38054
+ access: "view"
38055
+ },
37966
38056
  "recording.getDaysWithRecordings": {
37967
38057
  capName: "recording",
37968
38058
  capScope: "system",
37969
38059
  addonId: null,
37970
38060
  access: "view"
37971
38061
  },
38062
+ "recording.getDaysWithRecordingsBatch": {
38063
+ capName: "recording",
38064
+ capScope: "system",
38065
+ addonId: null,
38066
+ access: "view"
38067
+ },
37972
38068
  "recording.getDeviceConfig": {
37973
38069
  capName: "recording",
37974
38070
  capScope: "system",
@@ -40573,6 +40669,11 @@ Object.freeze({
40573
40669
  form: "single",
40574
40670
  optional: false
40575
40671
  }],
40672
+ "pipelineAnalytics.getEventDensityBatch": [{
40673
+ name: "deviceIds",
40674
+ form: "array",
40675
+ optional: false
40676
+ }],
40576
40677
  "pipelineAnalytics.getEventMedia": [{
40577
40678
  name: "deviceId",
40578
40679
  form: "single",
@@ -40988,11 +41089,21 @@ Object.freeze({
40988
41089
  form: "single",
40989
41090
  optional: false
40990
41091
  }],
41092
+ "recording.getAvailabilityBatch": [{
41093
+ name: "deviceIds",
41094
+ form: "array",
41095
+ optional: false
41096
+ }],
40991
41097
  "recording.getDaysWithRecordings": [{
40992
41098
  name: "deviceId",
40993
41099
  form: "single",
40994
41100
  optional: false
40995
41101
  }],
41102
+ "recording.getDaysWithRecordingsBatch": [{
41103
+ name: "deviceIds",
41104
+ form: "array",
41105
+ optional: false
41106
+ }],
40996
41107
  "recording.getDeviceConfig": [{
40997
41108
  name: "deviceId",
40998
41109
  form: "single",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-reolink",
3
- "version": "1.2.73",
3
+ "version": "1.2.75",
4
4
  "description": "Reolink camera device provider addon for CamStack — native Baichuan protocol",
5
5
  "keywords": [
6
6
  "camstack",