@camstack/addon-provider-rtsp 1.2.51 → 1.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 +115 -6
- package/dist/addon.mjs +115 -6
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -19247,6 +19247,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19247
19247
|
deviceId: number(),
|
|
19248
19248
|
events: array(KeyEventSchema).readonly()
|
|
19249
19249
|
});
|
|
19250
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19251
|
+
var EventDensityBucketSchema = object({
|
|
19252
|
+
bucketStart: number(),
|
|
19253
|
+
motion: number().int(),
|
|
19254
|
+
object: number().int(),
|
|
19255
|
+
audio: number().int()
|
|
19256
|
+
});
|
|
19257
|
+
/**
|
|
19258
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19259
|
+
*
|
|
19260
|
+
* TWO facts, and the timeline draws them differently:
|
|
19261
|
+
*
|
|
19262
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19263
|
+
* claim: read, and nothing happened in the window.
|
|
19264
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19265
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19266
|
+
* not quiet.
|
|
19267
|
+
*
|
|
19268
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19269
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19270
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19271
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19272
|
+
*/
|
|
19273
|
+
var EventDensityForDeviceSchema = object({
|
|
19274
|
+
deviceId: number(),
|
|
19275
|
+
read: _enum(["read", "unreadable"]),
|
|
19276
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19277
|
+
});
|
|
19250
19278
|
object({
|
|
19251
19279
|
trackId: string(),
|
|
19252
19280
|
className: string(),
|
|
@@ -19557,12 +19585,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19557
19585
|
since: number(),
|
|
19558
19586
|
until: number(),
|
|
19559
19587
|
bucketMs: number().int().positive()
|
|
19560
|
-
}), array(object({
|
|
19561
|
-
|
|
19562
|
-
|
|
19563
|
-
|
|
19564
|
-
|
|
19565
|
-
})).readonly()), method(object({
|
|
19588
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19589
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19590
|
+
since: number(),
|
|
19591
|
+
until: number(),
|
|
19592
|
+
bucketMs: number().int().positive()
|
|
19593
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19566
19594
|
deviceId: number(),
|
|
19567
19595
|
cutoffMs: number()
|
|
19568
19596
|
}), object({
|
|
@@ -28699,6 +28727,39 @@ var RecordingDaysSchema = object({
|
|
|
28699
28727
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28700
28728
|
days: array(number())
|
|
28701
28729
|
});
|
|
28730
|
+
/**
|
|
28731
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
28732
|
+
*
|
|
28733
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
28734
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
28735
|
+
* method never had to say:
|
|
28736
|
+
*
|
|
28737
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
28738
|
+
* no footage in the window", which is a real claim.
|
|
28739
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
28740
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
28741
|
+
* that emptiness means NOTHING.
|
|
28742
|
+
*
|
|
28743
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
28744
|
+
* footage when the truth is that nobody looked.
|
|
28745
|
+
*/
|
|
28746
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
28747
|
+
deviceId: number(),
|
|
28748
|
+
read: _enum(["read", "unreadable"]),
|
|
28749
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
28750
|
+
});
|
|
28751
|
+
/**
|
|
28752
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
28753
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
28754
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
28755
|
+
* the date-picker's day dots must not spell them the same.
|
|
28756
|
+
*/
|
|
28757
|
+
var RecordingDaysForDeviceSchema = object({
|
|
28758
|
+
deviceId: number(),
|
|
28759
|
+
read: _enum(["read", "unreadable"]),
|
|
28760
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28761
|
+
days: array(number()).readonly()
|
|
28762
|
+
});
|
|
28702
28763
|
var RecordingManifestSchema = object({
|
|
28703
28764
|
deviceId: number(),
|
|
28704
28765
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28933,6 +28994,13 @@ method(object({
|
|
|
28933
28994
|
}), RecordingAvailabilitySchema, {
|
|
28934
28995
|
kind: "query",
|
|
28935
28996
|
auth: "protected"
|
|
28997
|
+
}), method(object({
|
|
28998
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28999
|
+
fromMs: number(),
|
|
29000
|
+
toMs: number()
|
|
29001
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
29002
|
+
kind: "query",
|
|
29003
|
+
auth: "protected"
|
|
28936
29004
|
}), method(object({
|
|
28937
29005
|
deviceId: number(),
|
|
28938
29006
|
fromMs: number(),
|
|
@@ -28941,6 +29009,14 @@ method(object({
|
|
|
28941
29009
|
}), RecordingDaysSchema, {
|
|
28942
29010
|
kind: "query",
|
|
28943
29011
|
auth: "protected"
|
|
29012
|
+
}), method(object({
|
|
29013
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29014
|
+
fromMs: number(),
|
|
29015
|
+
toMs: number(),
|
|
29016
|
+
tzOffsetMinutes: number()
|
|
29017
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
29018
|
+
kind: "query",
|
|
29019
|
+
auth: "protected"
|
|
28944
29020
|
}), method(object({
|
|
28945
29021
|
deviceId: number(),
|
|
28946
29022
|
fromMs: number(),
|
|
@@ -35903,6 +35979,12 @@ Object.freeze({
|
|
|
35903
35979
|
addonId: null,
|
|
35904
35980
|
access: "view"
|
|
35905
35981
|
},
|
|
35982
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35983
|
+
capName: "pipeline-analytics",
|
|
35984
|
+
capScope: "device",
|
|
35985
|
+
addonId: null,
|
|
35986
|
+
access: "view"
|
|
35987
|
+
},
|
|
35906
35988
|
"pipelineAnalytics.getEventMedia": {
|
|
35907
35989
|
capName: "pipeline-analytics",
|
|
35908
35990
|
capScope: "device",
|
|
@@ -37025,12 +37107,24 @@ Object.freeze({
|
|
|
37025
37107
|
addonId: null,
|
|
37026
37108
|
access: "view"
|
|
37027
37109
|
},
|
|
37110
|
+
"recording.getAvailabilityBatch": {
|
|
37111
|
+
capName: "recording",
|
|
37112
|
+
capScope: "system",
|
|
37113
|
+
addonId: null,
|
|
37114
|
+
access: "view"
|
|
37115
|
+
},
|
|
37028
37116
|
"recording.getDaysWithRecordings": {
|
|
37029
37117
|
capName: "recording",
|
|
37030
37118
|
capScope: "system",
|
|
37031
37119
|
addonId: null,
|
|
37032
37120
|
access: "view"
|
|
37033
37121
|
},
|
|
37122
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
37123
|
+
capName: "recording",
|
|
37124
|
+
capScope: "system",
|
|
37125
|
+
addonId: null,
|
|
37126
|
+
access: "view"
|
|
37127
|
+
},
|
|
37034
37128
|
"recording.getDeviceConfig": {
|
|
37035
37129
|
capName: "recording",
|
|
37036
37130
|
capScope: "system",
|
|
@@ -39635,6 +39729,11 @@ Object.freeze({
|
|
|
39635
39729
|
form: "single",
|
|
39636
39730
|
optional: false
|
|
39637
39731
|
}],
|
|
39732
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39733
|
+
name: "deviceIds",
|
|
39734
|
+
form: "array",
|
|
39735
|
+
optional: false
|
|
39736
|
+
}],
|
|
39638
39737
|
"pipelineAnalytics.getEventMedia": [{
|
|
39639
39738
|
name: "deviceId",
|
|
39640
39739
|
form: "single",
|
|
@@ -40050,11 +40149,21 @@ Object.freeze({
|
|
|
40050
40149
|
form: "single",
|
|
40051
40150
|
optional: false
|
|
40052
40151
|
}],
|
|
40152
|
+
"recording.getAvailabilityBatch": [{
|
|
40153
|
+
name: "deviceIds",
|
|
40154
|
+
form: "array",
|
|
40155
|
+
optional: false
|
|
40156
|
+
}],
|
|
40053
40157
|
"recording.getDaysWithRecordings": [{
|
|
40054
40158
|
name: "deviceId",
|
|
40055
40159
|
form: "single",
|
|
40056
40160
|
optional: false
|
|
40057
40161
|
}],
|
|
40162
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40163
|
+
name: "deviceIds",
|
|
40164
|
+
form: "array",
|
|
40165
|
+
optional: false
|
|
40166
|
+
}],
|
|
40058
40167
|
"recording.getDeviceConfig": [{
|
|
40059
40168
|
name: "deviceId",
|
|
40060
40169
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -19223,6 +19223,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19223
19223
|
deviceId: number(),
|
|
19224
19224
|
events: array(KeyEventSchema).readonly()
|
|
19225
19225
|
});
|
|
19226
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19227
|
+
var EventDensityBucketSchema = object({
|
|
19228
|
+
bucketStart: number(),
|
|
19229
|
+
motion: number().int(),
|
|
19230
|
+
object: number().int(),
|
|
19231
|
+
audio: number().int()
|
|
19232
|
+
});
|
|
19233
|
+
/**
|
|
19234
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19235
|
+
*
|
|
19236
|
+
* TWO facts, and the timeline draws them differently:
|
|
19237
|
+
*
|
|
19238
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19239
|
+
* claim: read, and nothing happened in the window.
|
|
19240
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19241
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19242
|
+
* not quiet.
|
|
19243
|
+
*
|
|
19244
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19245
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19246
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19247
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19248
|
+
*/
|
|
19249
|
+
var EventDensityForDeviceSchema = object({
|
|
19250
|
+
deviceId: number(),
|
|
19251
|
+
read: _enum(["read", "unreadable"]),
|
|
19252
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19253
|
+
});
|
|
19226
19254
|
object({
|
|
19227
19255
|
trackId: string(),
|
|
19228
19256
|
className: string(),
|
|
@@ -19533,12 +19561,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19533
19561
|
since: number(),
|
|
19534
19562
|
until: number(),
|
|
19535
19563
|
bucketMs: number().int().positive()
|
|
19536
|
-
}), array(object({
|
|
19537
|
-
|
|
19538
|
-
|
|
19539
|
-
|
|
19540
|
-
|
|
19541
|
-
})).readonly()), method(object({
|
|
19564
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19565
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19566
|
+
since: number(),
|
|
19567
|
+
until: number(),
|
|
19568
|
+
bucketMs: number().int().positive()
|
|
19569
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19542
19570
|
deviceId: number(),
|
|
19543
19571
|
cutoffMs: number()
|
|
19544
19572
|
}), object({
|
|
@@ -28675,6 +28703,39 @@ var RecordingDaysSchema = object({
|
|
|
28675
28703
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28676
28704
|
days: array(number())
|
|
28677
28705
|
});
|
|
28706
|
+
/**
|
|
28707
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
28708
|
+
*
|
|
28709
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
28710
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
28711
|
+
* method never had to say:
|
|
28712
|
+
*
|
|
28713
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
28714
|
+
* no footage in the window", which is a real claim.
|
|
28715
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
28716
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
28717
|
+
* that emptiness means NOTHING.
|
|
28718
|
+
*
|
|
28719
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
28720
|
+
* footage when the truth is that nobody looked.
|
|
28721
|
+
*/
|
|
28722
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
28723
|
+
deviceId: number(),
|
|
28724
|
+
read: _enum(["read", "unreadable"]),
|
|
28725
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
28726
|
+
});
|
|
28727
|
+
/**
|
|
28728
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
28729
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
28730
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
28731
|
+
* the date-picker's day dots must not spell them the same.
|
|
28732
|
+
*/
|
|
28733
|
+
var RecordingDaysForDeviceSchema = object({
|
|
28734
|
+
deviceId: number(),
|
|
28735
|
+
read: _enum(["read", "unreadable"]),
|
|
28736
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28737
|
+
days: array(number()).readonly()
|
|
28738
|
+
});
|
|
28678
28739
|
var RecordingManifestSchema = object({
|
|
28679
28740
|
deviceId: number(),
|
|
28680
28741
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28909,6 +28970,13 @@ method(object({
|
|
|
28909
28970
|
}), RecordingAvailabilitySchema, {
|
|
28910
28971
|
kind: "query",
|
|
28911
28972
|
auth: "protected"
|
|
28973
|
+
}), method(object({
|
|
28974
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28975
|
+
fromMs: number(),
|
|
28976
|
+
toMs: number()
|
|
28977
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
28978
|
+
kind: "query",
|
|
28979
|
+
auth: "protected"
|
|
28912
28980
|
}), method(object({
|
|
28913
28981
|
deviceId: number(),
|
|
28914
28982
|
fromMs: number(),
|
|
@@ -28917,6 +28985,14 @@ method(object({
|
|
|
28917
28985
|
}), RecordingDaysSchema, {
|
|
28918
28986
|
kind: "query",
|
|
28919
28987
|
auth: "protected"
|
|
28988
|
+
}), method(object({
|
|
28989
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28990
|
+
fromMs: number(),
|
|
28991
|
+
toMs: number(),
|
|
28992
|
+
tzOffsetMinutes: number()
|
|
28993
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
28994
|
+
kind: "query",
|
|
28995
|
+
auth: "protected"
|
|
28920
28996
|
}), method(object({
|
|
28921
28997
|
deviceId: number(),
|
|
28922
28998
|
fromMs: number(),
|
|
@@ -35879,6 +35955,12 @@ Object.freeze({
|
|
|
35879
35955
|
addonId: null,
|
|
35880
35956
|
access: "view"
|
|
35881
35957
|
},
|
|
35958
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35959
|
+
capName: "pipeline-analytics",
|
|
35960
|
+
capScope: "device",
|
|
35961
|
+
addonId: null,
|
|
35962
|
+
access: "view"
|
|
35963
|
+
},
|
|
35882
35964
|
"pipelineAnalytics.getEventMedia": {
|
|
35883
35965
|
capName: "pipeline-analytics",
|
|
35884
35966
|
capScope: "device",
|
|
@@ -37001,12 +37083,24 @@ Object.freeze({
|
|
|
37001
37083
|
addonId: null,
|
|
37002
37084
|
access: "view"
|
|
37003
37085
|
},
|
|
37086
|
+
"recording.getAvailabilityBatch": {
|
|
37087
|
+
capName: "recording",
|
|
37088
|
+
capScope: "system",
|
|
37089
|
+
addonId: null,
|
|
37090
|
+
access: "view"
|
|
37091
|
+
},
|
|
37004
37092
|
"recording.getDaysWithRecordings": {
|
|
37005
37093
|
capName: "recording",
|
|
37006
37094
|
capScope: "system",
|
|
37007
37095
|
addonId: null,
|
|
37008
37096
|
access: "view"
|
|
37009
37097
|
},
|
|
37098
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
37099
|
+
capName: "recording",
|
|
37100
|
+
capScope: "system",
|
|
37101
|
+
addonId: null,
|
|
37102
|
+
access: "view"
|
|
37103
|
+
},
|
|
37010
37104
|
"recording.getDeviceConfig": {
|
|
37011
37105
|
capName: "recording",
|
|
37012
37106
|
capScope: "system",
|
|
@@ -39611,6 +39705,11 @@ Object.freeze({
|
|
|
39611
39705
|
form: "single",
|
|
39612
39706
|
optional: false
|
|
39613
39707
|
}],
|
|
39708
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39709
|
+
name: "deviceIds",
|
|
39710
|
+
form: "array",
|
|
39711
|
+
optional: false
|
|
39712
|
+
}],
|
|
39614
39713
|
"pipelineAnalytics.getEventMedia": [{
|
|
39615
39714
|
name: "deviceId",
|
|
39616
39715
|
form: "single",
|
|
@@ -40026,11 +40125,21 @@ Object.freeze({
|
|
|
40026
40125
|
form: "single",
|
|
40027
40126
|
optional: false
|
|
40028
40127
|
}],
|
|
40128
|
+
"recording.getAvailabilityBatch": [{
|
|
40129
|
+
name: "deviceIds",
|
|
40130
|
+
form: "array",
|
|
40131
|
+
optional: false
|
|
40132
|
+
}],
|
|
40029
40133
|
"recording.getDaysWithRecordings": [{
|
|
40030
40134
|
name: "deviceId",
|
|
40031
40135
|
form: "single",
|
|
40032
40136
|
optional: false
|
|
40033
40137
|
}],
|
|
40138
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40139
|
+
name: "deviceIds",
|
|
40140
|
+
form: "array",
|
|
40141
|
+
optional: false
|
|
40142
|
+
}],
|
|
40034
40143
|
"recording.getDeviceConfig": [{
|
|
40035
40144
|
name: "deviceId",
|
|
40036
40145
|
form: "single",
|