@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 +117 -6
- package/dist/addon.mjs +117 -6
- package/package.json +1 -1
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
|
-
|
|
20127
|
-
|
|
20128
|
-
|
|
20129
|
-
|
|
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
|
-
|
|
20122
|
-
|
|
20123
|
-
|
|
20124
|
-
|
|
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",
|