@camstack/addon-provider-hikvision 1.2.58 → 1.2.60
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
|
@@ -16182,6 +16182,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
16182
16182
|
"device-offline",
|
|
16183
16183
|
"device-disabled",
|
|
16184
16184
|
"device-enabled",
|
|
16185
|
+
"device-battery-low",
|
|
16186
|
+
"device-battery-normal",
|
|
16185
16187
|
"stream-online",
|
|
16186
16188
|
"stream-offline",
|
|
16187
16189
|
"node-online",
|
|
@@ -19496,6 +19498,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19496
19498
|
deviceId: number(),
|
|
19497
19499
|
events: array(KeyEventSchema).readonly()
|
|
19498
19500
|
});
|
|
19501
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19502
|
+
var EventDensityBucketSchema = object({
|
|
19503
|
+
bucketStart: number(),
|
|
19504
|
+
motion: number().int(),
|
|
19505
|
+
object: number().int(),
|
|
19506
|
+
audio: number().int()
|
|
19507
|
+
});
|
|
19508
|
+
/**
|
|
19509
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19510
|
+
*
|
|
19511
|
+
* TWO facts, and the timeline draws them differently:
|
|
19512
|
+
*
|
|
19513
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19514
|
+
* claim: read, and nothing happened in the window.
|
|
19515
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19516
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19517
|
+
* not quiet.
|
|
19518
|
+
*
|
|
19519
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19520
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19521
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19522
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19523
|
+
*/
|
|
19524
|
+
var EventDensityForDeviceSchema = object({
|
|
19525
|
+
deviceId: number(),
|
|
19526
|
+
read: _enum(["read", "unreadable"]),
|
|
19527
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19528
|
+
});
|
|
19499
19529
|
object({
|
|
19500
19530
|
trackId: string(),
|
|
19501
19531
|
className: string(),
|
|
@@ -19806,12 +19836,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19806
19836
|
since: number(),
|
|
19807
19837
|
until: number(),
|
|
19808
19838
|
bucketMs: number().int().positive()
|
|
19809
|
-
}), array(object({
|
|
19810
|
-
|
|
19811
|
-
|
|
19812
|
-
|
|
19813
|
-
|
|
19814
|
-
})).readonly()), method(object({
|
|
19839
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19840
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19841
|
+
since: number(),
|
|
19842
|
+
until: number(),
|
|
19843
|
+
bucketMs: number().int().positive()
|
|
19844
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19815
19845
|
deviceId: number(),
|
|
19816
19846
|
cutoffMs: number()
|
|
19817
19847
|
}), object({
|
|
@@ -29073,6 +29103,39 @@ var RecordingDaysSchema = object({
|
|
|
29073
29103
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
29074
29104
|
days: array(number())
|
|
29075
29105
|
});
|
|
29106
|
+
/**
|
|
29107
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
29108
|
+
*
|
|
29109
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
29110
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
29111
|
+
* method never had to say:
|
|
29112
|
+
*
|
|
29113
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
29114
|
+
* no footage in the window", which is a real claim.
|
|
29115
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
29116
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
29117
|
+
* that emptiness means NOTHING.
|
|
29118
|
+
*
|
|
29119
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
29120
|
+
* footage when the truth is that nobody looked.
|
|
29121
|
+
*/
|
|
29122
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
29123
|
+
deviceId: number(),
|
|
29124
|
+
read: _enum(["read", "unreadable"]),
|
|
29125
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
29126
|
+
});
|
|
29127
|
+
/**
|
|
29128
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
29129
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
29130
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
29131
|
+
* the date-picker's day dots must not spell them the same.
|
|
29132
|
+
*/
|
|
29133
|
+
var RecordingDaysForDeviceSchema = object({
|
|
29134
|
+
deviceId: number(),
|
|
29135
|
+
read: _enum(["read", "unreadable"]),
|
|
29136
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
29137
|
+
days: array(number()).readonly()
|
|
29138
|
+
});
|
|
29076
29139
|
var RecordingManifestSchema = object({
|
|
29077
29140
|
deviceId: number(),
|
|
29078
29141
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -29307,6 +29370,13 @@ method(object({
|
|
|
29307
29370
|
}), RecordingAvailabilitySchema, {
|
|
29308
29371
|
kind: "query",
|
|
29309
29372
|
auth: "protected"
|
|
29373
|
+
}), method(object({
|
|
29374
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29375
|
+
fromMs: number(),
|
|
29376
|
+
toMs: number()
|
|
29377
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
29378
|
+
kind: "query",
|
|
29379
|
+
auth: "protected"
|
|
29310
29380
|
}), method(object({
|
|
29311
29381
|
deviceId: number(),
|
|
29312
29382
|
fromMs: number(),
|
|
@@ -29315,6 +29385,14 @@ method(object({
|
|
|
29315
29385
|
}), RecordingDaysSchema, {
|
|
29316
29386
|
kind: "query",
|
|
29317
29387
|
auth: "protected"
|
|
29388
|
+
}), method(object({
|
|
29389
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29390
|
+
fromMs: number(),
|
|
29391
|
+
toMs: number(),
|
|
29392
|
+
tzOffsetMinutes: number()
|
|
29393
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
29394
|
+
kind: "query",
|
|
29395
|
+
auth: "protected"
|
|
29318
29396
|
}), method(object({
|
|
29319
29397
|
deviceId: number(),
|
|
29320
29398
|
fromMs: number(),
|
|
@@ -36642,6 +36720,12 @@ Object.freeze({
|
|
|
36642
36720
|
addonId: null,
|
|
36643
36721
|
access: "view"
|
|
36644
36722
|
},
|
|
36723
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
36724
|
+
capName: "pipeline-analytics",
|
|
36725
|
+
capScope: "device",
|
|
36726
|
+
addonId: null,
|
|
36727
|
+
access: "view"
|
|
36728
|
+
},
|
|
36645
36729
|
"pipelineAnalytics.getEventMedia": {
|
|
36646
36730
|
capName: "pipeline-analytics",
|
|
36647
36731
|
capScope: "device",
|
|
@@ -37764,12 +37848,24 @@ Object.freeze({
|
|
|
37764
37848
|
addonId: null,
|
|
37765
37849
|
access: "view"
|
|
37766
37850
|
},
|
|
37851
|
+
"recording.getAvailabilityBatch": {
|
|
37852
|
+
capName: "recording",
|
|
37853
|
+
capScope: "system",
|
|
37854
|
+
addonId: null,
|
|
37855
|
+
access: "view"
|
|
37856
|
+
},
|
|
37767
37857
|
"recording.getDaysWithRecordings": {
|
|
37768
37858
|
capName: "recording",
|
|
37769
37859
|
capScope: "system",
|
|
37770
37860
|
addonId: null,
|
|
37771
37861
|
access: "view"
|
|
37772
37862
|
},
|
|
37863
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
37864
|
+
capName: "recording",
|
|
37865
|
+
capScope: "system",
|
|
37866
|
+
addonId: null,
|
|
37867
|
+
access: "view"
|
|
37868
|
+
},
|
|
37773
37869
|
"recording.getDeviceConfig": {
|
|
37774
37870
|
capName: "recording",
|
|
37775
37871
|
capScope: "system",
|
|
@@ -40374,6 +40470,11 @@ Object.freeze({
|
|
|
40374
40470
|
form: "single",
|
|
40375
40471
|
optional: false
|
|
40376
40472
|
}],
|
|
40473
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
40474
|
+
name: "deviceIds",
|
|
40475
|
+
form: "array",
|
|
40476
|
+
optional: false
|
|
40477
|
+
}],
|
|
40377
40478
|
"pipelineAnalytics.getEventMedia": [{
|
|
40378
40479
|
name: "deviceId",
|
|
40379
40480
|
form: "single",
|
|
@@ -40789,11 +40890,21 @@ Object.freeze({
|
|
|
40789
40890
|
form: "single",
|
|
40790
40891
|
optional: false
|
|
40791
40892
|
}],
|
|
40893
|
+
"recording.getAvailabilityBatch": [{
|
|
40894
|
+
name: "deviceIds",
|
|
40895
|
+
form: "array",
|
|
40896
|
+
optional: false
|
|
40897
|
+
}],
|
|
40792
40898
|
"recording.getDaysWithRecordings": [{
|
|
40793
40899
|
name: "deviceId",
|
|
40794
40900
|
form: "single",
|
|
40795
40901
|
optional: false
|
|
40796
40902
|
}],
|
|
40903
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40904
|
+
name: "deviceIds",
|
|
40905
|
+
form: "array",
|
|
40906
|
+
optional: false
|
|
40907
|
+
}],
|
|
40797
40908
|
"recording.getDeviceConfig": [{
|
|
40798
40909
|
name: "deviceId",
|
|
40799
40910
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -16183,6 +16183,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
16183
16183
|
"device-offline",
|
|
16184
16184
|
"device-disabled",
|
|
16185
16185
|
"device-enabled",
|
|
16186
|
+
"device-battery-low",
|
|
16187
|
+
"device-battery-normal",
|
|
16186
16188
|
"stream-online",
|
|
16187
16189
|
"stream-offline",
|
|
16188
16190
|
"node-online",
|
|
@@ -19497,6 +19499,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19497
19499
|
deviceId: number(),
|
|
19498
19500
|
events: array(KeyEventSchema).readonly()
|
|
19499
19501
|
});
|
|
19502
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19503
|
+
var EventDensityBucketSchema = object({
|
|
19504
|
+
bucketStart: number(),
|
|
19505
|
+
motion: number().int(),
|
|
19506
|
+
object: number().int(),
|
|
19507
|
+
audio: number().int()
|
|
19508
|
+
});
|
|
19509
|
+
/**
|
|
19510
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19511
|
+
*
|
|
19512
|
+
* TWO facts, and the timeline draws them differently:
|
|
19513
|
+
*
|
|
19514
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19515
|
+
* claim: read, and nothing happened in the window.
|
|
19516
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19517
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19518
|
+
* not quiet.
|
|
19519
|
+
*
|
|
19520
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19521
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19522
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19523
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19524
|
+
*/
|
|
19525
|
+
var EventDensityForDeviceSchema = object({
|
|
19526
|
+
deviceId: number(),
|
|
19527
|
+
read: _enum(["read", "unreadable"]),
|
|
19528
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19529
|
+
});
|
|
19500
19530
|
object({
|
|
19501
19531
|
trackId: string(),
|
|
19502
19532
|
className: string(),
|
|
@@ -19807,12 +19837,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19807
19837
|
since: number(),
|
|
19808
19838
|
until: number(),
|
|
19809
19839
|
bucketMs: number().int().positive()
|
|
19810
|
-
}), array(object({
|
|
19811
|
-
|
|
19812
|
-
|
|
19813
|
-
|
|
19814
|
-
|
|
19815
|
-
})).readonly()), method(object({
|
|
19840
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19841
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19842
|
+
since: number(),
|
|
19843
|
+
until: number(),
|
|
19844
|
+
bucketMs: number().int().positive()
|
|
19845
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19816
19846
|
deviceId: number(),
|
|
19817
19847
|
cutoffMs: number()
|
|
19818
19848
|
}), object({
|
|
@@ -29074,6 +29104,39 @@ var RecordingDaysSchema = object({
|
|
|
29074
29104
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
29075
29105
|
days: array(number())
|
|
29076
29106
|
});
|
|
29107
|
+
/**
|
|
29108
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
29109
|
+
*
|
|
29110
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
29111
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
29112
|
+
* method never had to say:
|
|
29113
|
+
*
|
|
29114
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
29115
|
+
* no footage in the window", which is a real claim.
|
|
29116
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
29117
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
29118
|
+
* that emptiness means NOTHING.
|
|
29119
|
+
*
|
|
29120
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
29121
|
+
* footage when the truth is that nobody looked.
|
|
29122
|
+
*/
|
|
29123
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
29124
|
+
deviceId: number(),
|
|
29125
|
+
read: _enum(["read", "unreadable"]),
|
|
29126
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
29127
|
+
});
|
|
29128
|
+
/**
|
|
29129
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
29130
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
29131
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
29132
|
+
* the date-picker's day dots must not spell them the same.
|
|
29133
|
+
*/
|
|
29134
|
+
var RecordingDaysForDeviceSchema = object({
|
|
29135
|
+
deviceId: number(),
|
|
29136
|
+
read: _enum(["read", "unreadable"]),
|
|
29137
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
29138
|
+
days: array(number()).readonly()
|
|
29139
|
+
});
|
|
29077
29140
|
var RecordingManifestSchema = object({
|
|
29078
29141
|
deviceId: number(),
|
|
29079
29142
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -29308,6 +29371,13 @@ method(object({
|
|
|
29308
29371
|
}), RecordingAvailabilitySchema, {
|
|
29309
29372
|
kind: "query",
|
|
29310
29373
|
auth: "protected"
|
|
29374
|
+
}), method(object({
|
|
29375
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29376
|
+
fromMs: number(),
|
|
29377
|
+
toMs: number()
|
|
29378
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
29379
|
+
kind: "query",
|
|
29380
|
+
auth: "protected"
|
|
29311
29381
|
}), method(object({
|
|
29312
29382
|
deviceId: number(),
|
|
29313
29383
|
fromMs: number(),
|
|
@@ -29316,6 +29386,14 @@ method(object({
|
|
|
29316
29386
|
}), RecordingDaysSchema, {
|
|
29317
29387
|
kind: "query",
|
|
29318
29388
|
auth: "protected"
|
|
29389
|
+
}), method(object({
|
|
29390
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29391
|
+
fromMs: number(),
|
|
29392
|
+
toMs: number(),
|
|
29393
|
+
tzOffsetMinutes: number()
|
|
29394
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
29395
|
+
kind: "query",
|
|
29396
|
+
auth: "protected"
|
|
29319
29397
|
}), method(object({
|
|
29320
29398
|
deviceId: number(),
|
|
29321
29399
|
fromMs: number(),
|
|
@@ -36643,6 +36721,12 @@ Object.freeze({
|
|
|
36643
36721
|
addonId: null,
|
|
36644
36722
|
access: "view"
|
|
36645
36723
|
},
|
|
36724
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
36725
|
+
capName: "pipeline-analytics",
|
|
36726
|
+
capScope: "device",
|
|
36727
|
+
addonId: null,
|
|
36728
|
+
access: "view"
|
|
36729
|
+
},
|
|
36646
36730
|
"pipelineAnalytics.getEventMedia": {
|
|
36647
36731
|
capName: "pipeline-analytics",
|
|
36648
36732
|
capScope: "device",
|
|
@@ -37765,12 +37849,24 @@ Object.freeze({
|
|
|
37765
37849
|
addonId: null,
|
|
37766
37850
|
access: "view"
|
|
37767
37851
|
},
|
|
37852
|
+
"recording.getAvailabilityBatch": {
|
|
37853
|
+
capName: "recording",
|
|
37854
|
+
capScope: "system",
|
|
37855
|
+
addonId: null,
|
|
37856
|
+
access: "view"
|
|
37857
|
+
},
|
|
37768
37858
|
"recording.getDaysWithRecordings": {
|
|
37769
37859
|
capName: "recording",
|
|
37770
37860
|
capScope: "system",
|
|
37771
37861
|
addonId: null,
|
|
37772
37862
|
access: "view"
|
|
37773
37863
|
},
|
|
37864
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
37865
|
+
capName: "recording",
|
|
37866
|
+
capScope: "system",
|
|
37867
|
+
addonId: null,
|
|
37868
|
+
access: "view"
|
|
37869
|
+
},
|
|
37774
37870
|
"recording.getDeviceConfig": {
|
|
37775
37871
|
capName: "recording",
|
|
37776
37872
|
capScope: "system",
|
|
@@ -40375,6 +40471,11 @@ Object.freeze({
|
|
|
40375
40471
|
form: "single",
|
|
40376
40472
|
optional: false
|
|
40377
40473
|
}],
|
|
40474
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
40475
|
+
name: "deviceIds",
|
|
40476
|
+
form: "array",
|
|
40477
|
+
optional: false
|
|
40478
|
+
}],
|
|
40378
40479
|
"pipelineAnalytics.getEventMedia": [{
|
|
40379
40480
|
name: "deviceId",
|
|
40380
40481
|
form: "single",
|
|
@@ -40790,11 +40891,21 @@ Object.freeze({
|
|
|
40790
40891
|
form: "single",
|
|
40791
40892
|
optional: false
|
|
40792
40893
|
}],
|
|
40894
|
+
"recording.getAvailabilityBatch": [{
|
|
40895
|
+
name: "deviceIds",
|
|
40896
|
+
form: "array",
|
|
40897
|
+
optional: false
|
|
40898
|
+
}],
|
|
40793
40899
|
"recording.getDaysWithRecordings": [{
|
|
40794
40900
|
name: "deviceId",
|
|
40795
40901
|
form: "single",
|
|
40796
40902
|
optional: false
|
|
40797
40903
|
}],
|
|
40904
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40905
|
+
name: "deviceIds",
|
|
40906
|
+
form: "array",
|
|
40907
|
+
optional: false
|
|
40908
|
+
}],
|
|
40798
40909
|
"recording.getDeviceConfig": [{
|
|
40799
40910
|
name: "deviceId",
|
|
40800
40911
|
form: "single",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-hikvision",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.60",
|
|
4
4
|
"description": "Hikvision camera device provider addon for CamStack — ISAPI over HTTP(S) with digest auth (snapshot, alarm stream, RTSP discovery)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|