@camstack/addon-provider-onvif 1.2.50 → 1.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 +115 -6
- package/dist/addon.mjs +115 -6
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -18903,6 +18903,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
18903
18903
|
deviceId: number(),
|
|
18904
18904
|
events: array(KeyEventSchema).readonly()
|
|
18905
18905
|
});
|
|
18906
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
18907
|
+
var EventDensityBucketSchema = object({
|
|
18908
|
+
bucketStart: number(),
|
|
18909
|
+
motion: number().int(),
|
|
18910
|
+
object: number().int(),
|
|
18911
|
+
audio: number().int()
|
|
18912
|
+
});
|
|
18913
|
+
/**
|
|
18914
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
18915
|
+
*
|
|
18916
|
+
* TWO facts, and the timeline draws them differently:
|
|
18917
|
+
*
|
|
18918
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
18919
|
+
* claim: read, and nothing happened in the window.
|
|
18920
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
18921
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
18922
|
+
* not quiet.
|
|
18923
|
+
*
|
|
18924
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
18925
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
18926
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
18927
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
18928
|
+
*/
|
|
18929
|
+
var EventDensityForDeviceSchema = object({
|
|
18930
|
+
deviceId: number(),
|
|
18931
|
+
read: _enum(["read", "unreadable"]),
|
|
18932
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
18933
|
+
});
|
|
18906
18934
|
object({
|
|
18907
18935
|
trackId: string(),
|
|
18908
18936
|
className: string(),
|
|
@@ -19213,12 +19241,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19213
19241
|
since: number(),
|
|
19214
19242
|
until: number(),
|
|
19215
19243
|
bucketMs: number().int().positive()
|
|
19216
|
-
}), array(object({
|
|
19217
|
-
|
|
19218
|
-
|
|
19219
|
-
|
|
19220
|
-
|
|
19221
|
-
})).readonly()), method(object({
|
|
19244
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19245
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19246
|
+
since: number(),
|
|
19247
|
+
until: number(),
|
|
19248
|
+
bucketMs: number().int().positive()
|
|
19249
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19222
19250
|
deviceId: number(),
|
|
19223
19251
|
cutoffMs: number()
|
|
19224
19252
|
}), object({
|
|
@@ -26674,6 +26702,39 @@ var RecordingDaysSchema = object({
|
|
|
26674
26702
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26675
26703
|
days: array(number())
|
|
26676
26704
|
});
|
|
26705
|
+
/**
|
|
26706
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
26707
|
+
*
|
|
26708
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
26709
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
26710
|
+
* method never had to say:
|
|
26711
|
+
*
|
|
26712
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
26713
|
+
* no footage in the window", which is a real claim.
|
|
26714
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
26715
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
26716
|
+
* that emptiness means NOTHING.
|
|
26717
|
+
*
|
|
26718
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
26719
|
+
* footage when the truth is that nobody looked.
|
|
26720
|
+
*/
|
|
26721
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
26722
|
+
deviceId: number(),
|
|
26723
|
+
read: _enum(["read", "unreadable"]),
|
|
26724
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
26725
|
+
});
|
|
26726
|
+
/**
|
|
26727
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
26728
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
26729
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
26730
|
+
* the date-picker's day dots must not spell them the same.
|
|
26731
|
+
*/
|
|
26732
|
+
var RecordingDaysForDeviceSchema = object({
|
|
26733
|
+
deviceId: number(),
|
|
26734
|
+
read: _enum(["read", "unreadable"]),
|
|
26735
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26736
|
+
days: array(number()).readonly()
|
|
26737
|
+
});
|
|
26677
26738
|
var RecordingManifestSchema = object({
|
|
26678
26739
|
deviceId: number(),
|
|
26679
26740
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -26908,6 +26969,13 @@ method(object({
|
|
|
26908
26969
|
}), RecordingAvailabilitySchema, {
|
|
26909
26970
|
kind: "query",
|
|
26910
26971
|
auth: "protected"
|
|
26972
|
+
}), method(object({
|
|
26973
|
+
deviceIds: array(number()).min(1).max(200),
|
|
26974
|
+
fromMs: number(),
|
|
26975
|
+
toMs: number()
|
|
26976
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
26977
|
+
kind: "query",
|
|
26978
|
+
auth: "protected"
|
|
26911
26979
|
}), method(object({
|
|
26912
26980
|
deviceId: number(),
|
|
26913
26981
|
fromMs: number(),
|
|
@@ -26916,6 +26984,14 @@ method(object({
|
|
|
26916
26984
|
}), RecordingDaysSchema, {
|
|
26917
26985
|
kind: "query",
|
|
26918
26986
|
auth: "protected"
|
|
26987
|
+
}), method(object({
|
|
26988
|
+
deviceIds: array(number()).min(1).max(200),
|
|
26989
|
+
fromMs: number(),
|
|
26990
|
+
toMs: number(),
|
|
26991
|
+
tzOffsetMinutes: number()
|
|
26992
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
26993
|
+
kind: "query",
|
|
26994
|
+
auth: "protected"
|
|
26919
26995
|
}), method(object({
|
|
26920
26996
|
deviceId: number(),
|
|
26921
26997
|
fromMs: number(),
|
|
@@ -32523,6 +32599,12 @@ Object.freeze({
|
|
|
32523
32599
|
addonId: null,
|
|
32524
32600
|
access: "view"
|
|
32525
32601
|
},
|
|
32602
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
32603
|
+
capName: "pipeline-analytics",
|
|
32604
|
+
capScope: "device",
|
|
32605
|
+
addonId: null,
|
|
32606
|
+
access: "view"
|
|
32607
|
+
},
|
|
32526
32608
|
"pipelineAnalytics.getEventMedia": {
|
|
32527
32609
|
capName: "pipeline-analytics",
|
|
32528
32610
|
capScope: "device",
|
|
@@ -33645,12 +33727,24 @@ Object.freeze({
|
|
|
33645
33727
|
addonId: null,
|
|
33646
33728
|
access: "view"
|
|
33647
33729
|
},
|
|
33730
|
+
"recording.getAvailabilityBatch": {
|
|
33731
|
+
capName: "recording",
|
|
33732
|
+
capScope: "system",
|
|
33733
|
+
addonId: null,
|
|
33734
|
+
access: "view"
|
|
33735
|
+
},
|
|
33648
33736
|
"recording.getDaysWithRecordings": {
|
|
33649
33737
|
capName: "recording",
|
|
33650
33738
|
capScope: "system",
|
|
33651
33739
|
addonId: null,
|
|
33652
33740
|
access: "view"
|
|
33653
33741
|
},
|
|
33742
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
33743
|
+
capName: "recording",
|
|
33744
|
+
capScope: "system",
|
|
33745
|
+
addonId: null,
|
|
33746
|
+
access: "view"
|
|
33747
|
+
},
|
|
33654
33748
|
"recording.getDeviceConfig": {
|
|
33655
33749
|
capName: "recording",
|
|
33656
33750
|
capScope: "system",
|
|
@@ -36255,6 +36349,11 @@ Object.freeze({
|
|
|
36255
36349
|
form: "single",
|
|
36256
36350
|
optional: false
|
|
36257
36351
|
}],
|
|
36352
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
36353
|
+
name: "deviceIds",
|
|
36354
|
+
form: "array",
|
|
36355
|
+
optional: false
|
|
36356
|
+
}],
|
|
36258
36357
|
"pipelineAnalytics.getEventMedia": [{
|
|
36259
36358
|
name: "deviceId",
|
|
36260
36359
|
form: "single",
|
|
@@ -36670,11 +36769,21 @@ Object.freeze({
|
|
|
36670
36769
|
form: "single",
|
|
36671
36770
|
optional: false
|
|
36672
36771
|
}],
|
|
36772
|
+
"recording.getAvailabilityBatch": [{
|
|
36773
|
+
name: "deviceIds",
|
|
36774
|
+
form: "array",
|
|
36775
|
+
optional: false
|
|
36776
|
+
}],
|
|
36673
36777
|
"recording.getDaysWithRecordings": [{
|
|
36674
36778
|
name: "deviceId",
|
|
36675
36779
|
form: "single",
|
|
36676
36780
|
optional: false
|
|
36677
36781
|
}],
|
|
36782
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
36783
|
+
name: "deviceIds",
|
|
36784
|
+
form: "array",
|
|
36785
|
+
optional: false
|
|
36786
|
+
}],
|
|
36678
36787
|
"recording.getDeviceConfig": [{
|
|
36679
36788
|
name: "deviceId",
|
|
36680
36789
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -18904,6 +18904,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
18904
18904
|
deviceId: number(),
|
|
18905
18905
|
events: array(KeyEventSchema).readonly()
|
|
18906
18906
|
});
|
|
18907
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
18908
|
+
var EventDensityBucketSchema = object({
|
|
18909
|
+
bucketStart: number(),
|
|
18910
|
+
motion: number().int(),
|
|
18911
|
+
object: number().int(),
|
|
18912
|
+
audio: number().int()
|
|
18913
|
+
});
|
|
18914
|
+
/**
|
|
18915
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
18916
|
+
*
|
|
18917
|
+
* TWO facts, and the timeline draws them differently:
|
|
18918
|
+
*
|
|
18919
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
18920
|
+
* claim: read, and nothing happened in the window.
|
|
18921
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
18922
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
18923
|
+
* not quiet.
|
|
18924
|
+
*
|
|
18925
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
18926
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
18927
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
18928
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
18929
|
+
*/
|
|
18930
|
+
var EventDensityForDeviceSchema = object({
|
|
18931
|
+
deviceId: number(),
|
|
18932
|
+
read: _enum(["read", "unreadable"]),
|
|
18933
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
18934
|
+
});
|
|
18907
18935
|
object({
|
|
18908
18936
|
trackId: string(),
|
|
18909
18937
|
className: string(),
|
|
@@ -19214,12 +19242,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19214
19242
|
since: number(),
|
|
19215
19243
|
until: number(),
|
|
19216
19244
|
bucketMs: number().int().positive()
|
|
19217
|
-
}), array(object({
|
|
19218
|
-
|
|
19219
|
-
|
|
19220
|
-
|
|
19221
|
-
|
|
19222
|
-
})).readonly()), method(object({
|
|
19245
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19246
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19247
|
+
since: number(),
|
|
19248
|
+
until: number(),
|
|
19249
|
+
bucketMs: number().int().positive()
|
|
19250
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19223
19251
|
deviceId: number(),
|
|
19224
19252
|
cutoffMs: number()
|
|
19225
19253
|
}), object({
|
|
@@ -26675,6 +26703,39 @@ var RecordingDaysSchema = object({
|
|
|
26675
26703
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26676
26704
|
days: array(number())
|
|
26677
26705
|
});
|
|
26706
|
+
/**
|
|
26707
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
26708
|
+
*
|
|
26709
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
26710
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
26711
|
+
* method never had to say:
|
|
26712
|
+
*
|
|
26713
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
26714
|
+
* no footage in the window", which is a real claim.
|
|
26715
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
26716
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
26717
|
+
* that emptiness means NOTHING.
|
|
26718
|
+
*
|
|
26719
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
26720
|
+
* footage when the truth is that nobody looked.
|
|
26721
|
+
*/
|
|
26722
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
26723
|
+
deviceId: number(),
|
|
26724
|
+
read: _enum(["read", "unreadable"]),
|
|
26725
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
26726
|
+
});
|
|
26727
|
+
/**
|
|
26728
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
26729
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
26730
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
26731
|
+
* the date-picker's day dots must not spell them the same.
|
|
26732
|
+
*/
|
|
26733
|
+
var RecordingDaysForDeviceSchema = object({
|
|
26734
|
+
deviceId: number(),
|
|
26735
|
+
read: _enum(["read", "unreadable"]),
|
|
26736
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26737
|
+
days: array(number()).readonly()
|
|
26738
|
+
});
|
|
26678
26739
|
var RecordingManifestSchema = object({
|
|
26679
26740
|
deviceId: number(),
|
|
26680
26741
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -26909,6 +26970,13 @@ method(object({
|
|
|
26909
26970
|
}), RecordingAvailabilitySchema, {
|
|
26910
26971
|
kind: "query",
|
|
26911
26972
|
auth: "protected"
|
|
26973
|
+
}), method(object({
|
|
26974
|
+
deviceIds: array(number()).min(1).max(200),
|
|
26975
|
+
fromMs: number(),
|
|
26976
|
+
toMs: number()
|
|
26977
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
26978
|
+
kind: "query",
|
|
26979
|
+
auth: "protected"
|
|
26912
26980
|
}), method(object({
|
|
26913
26981
|
deviceId: number(),
|
|
26914
26982
|
fromMs: number(),
|
|
@@ -26917,6 +26985,14 @@ method(object({
|
|
|
26917
26985
|
}), RecordingDaysSchema, {
|
|
26918
26986
|
kind: "query",
|
|
26919
26987
|
auth: "protected"
|
|
26988
|
+
}), method(object({
|
|
26989
|
+
deviceIds: array(number()).min(1).max(200),
|
|
26990
|
+
fromMs: number(),
|
|
26991
|
+
toMs: number(),
|
|
26992
|
+
tzOffsetMinutes: number()
|
|
26993
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
26994
|
+
kind: "query",
|
|
26995
|
+
auth: "protected"
|
|
26920
26996
|
}), method(object({
|
|
26921
26997
|
deviceId: number(),
|
|
26922
26998
|
fromMs: number(),
|
|
@@ -32524,6 +32600,12 @@ Object.freeze({
|
|
|
32524
32600
|
addonId: null,
|
|
32525
32601
|
access: "view"
|
|
32526
32602
|
},
|
|
32603
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
32604
|
+
capName: "pipeline-analytics",
|
|
32605
|
+
capScope: "device",
|
|
32606
|
+
addonId: null,
|
|
32607
|
+
access: "view"
|
|
32608
|
+
},
|
|
32527
32609
|
"pipelineAnalytics.getEventMedia": {
|
|
32528
32610
|
capName: "pipeline-analytics",
|
|
32529
32611
|
capScope: "device",
|
|
@@ -33646,12 +33728,24 @@ Object.freeze({
|
|
|
33646
33728
|
addonId: null,
|
|
33647
33729
|
access: "view"
|
|
33648
33730
|
},
|
|
33731
|
+
"recording.getAvailabilityBatch": {
|
|
33732
|
+
capName: "recording",
|
|
33733
|
+
capScope: "system",
|
|
33734
|
+
addonId: null,
|
|
33735
|
+
access: "view"
|
|
33736
|
+
},
|
|
33649
33737
|
"recording.getDaysWithRecordings": {
|
|
33650
33738
|
capName: "recording",
|
|
33651
33739
|
capScope: "system",
|
|
33652
33740
|
addonId: null,
|
|
33653
33741
|
access: "view"
|
|
33654
33742
|
},
|
|
33743
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
33744
|
+
capName: "recording",
|
|
33745
|
+
capScope: "system",
|
|
33746
|
+
addonId: null,
|
|
33747
|
+
access: "view"
|
|
33748
|
+
},
|
|
33655
33749
|
"recording.getDeviceConfig": {
|
|
33656
33750
|
capName: "recording",
|
|
33657
33751
|
capScope: "system",
|
|
@@ -36256,6 +36350,11 @@ Object.freeze({
|
|
|
36256
36350
|
form: "single",
|
|
36257
36351
|
optional: false
|
|
36258
36352
|
}],
|
|
36353
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
36354
|
+
name: "deviceIds",
|
|
36355
|
+
form: "array",
|
|
36356
|
+
optional: false
|
|
36357
|
+
}],
|
|
36259
36358
|
"pipelineAnalytics.getEventMedia": [{
|
|
36260
36359
|
name: "deviceId",
|
|
36261
36360
|
form: "single",
|
|
@@ -36671,11 +36770,21 @@ Object.freeze({
|
|
|
36671
36770
|
form: "single",
|
|
36672
36771
|
optional: false
|
|
36673
36772
|
}],
|
|
36773
|
+
"recording.getAvailabilityBatch": [{
|
|
36774
|
+
name: "deviceIds",
|
|
36775
|
+
form: "array",
|
|
36776
|
+
optional: false
|
|
36777
|
+
}],
|
|
36674
36778
|
"recording.getDaysWithRecordings": [{
|
|
36675
36779
|
name: "deviceId",
|
|
36676
36780
|
form: "single",
|
|
36677
36781
|
optional: false
|
|
36678
36782
|
}],
|
|
36783
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
36784
|
+
name: "deviceIds",
|
|
36785
|
+
form: "array",
|
|
36786
|
+
optional: false
|
|
36787
|
+
}],
|
|
36679
36788
|
"recording.getDeviceConfig": [{
|
|
36680
36789
|
name: "deviceId",
|
|
36681
36790
|
form: "single",
|