@camstack/addon-provider-velux 0.2.50 → 0.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 +117 -6
- package/dist/addon.mjs +117 -6
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -15875,6 +15875,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
15875
15875
|
"device-offline",
|
|
15876
15876
|
"device-disabled",
|
|
15877
15877
|
"device-enabled",
|
|
15878
|
+
"device-battery-low",
|
|
15879
|
+
"device-battery-normal",
|
|
15878
15880
|
"stream-online",
|
|
15879
15881
|
"stream-offline",
|
|
15880
15882
|
"node-online",
|
|
@@ -19189,6 +19191,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19189
19191
|
deviceId: number(),
|
|
19190
19192
|
events: array(KeyEventSchema).readonly()
|
|
19191
19193
|
});
|
|
19194
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19195
|
+
var EventDensityBucketSchema = object({
|
|
19196
|
+
bucketStart: number(),
|
|
19197
|
+
motion: number().int(),
|
|
19198
|
+
object: number().int(),
|
|
19199
|
+
audio: number().int()
|
|
19200
|
+
});
|
|
19201
|
+
/**
|
|
19202
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19203
|
+
*
|
|
19204
|
+
* TWO facts, and the timeline draws them differently:
|
|
19205
|
+
*
|
|
19206
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19207
|
+
* claim: read, and nothing happened in the window.
|
|
19208
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19209
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19210
|
+
* not quiet.
|
|
19211
|
+
*
|
|
19212
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19213
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19214
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19215
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19216
|
+
*/
|
|
19217
|
+
var EventDensityForDeviceSchema = object({
|
|
19218
|
+
deviceId: number(),
|
|
19219
|
+
read: _enum(["read", "unreadable"]),
|
|
19220
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19221
|
+
});
|
|
19192
19222
|
object({
|
|
19193
19223
|
trackId: string(),
|
|
19194
19224
|
className: string(),
|
|
@@ -19499,12 +19529,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19499
19529
|
since: number(),
|
|
19500
19530
|
until: number(),
|
|
19501
19531
|
bucketMs: number().int().positive()
|
|
19502
|
-
}), array(object({
|
|
19503
|
-
|
|
19504
|
-
|
|
19505
|
-
|
|
19506
|
-
|
|
19507
|
-
})).readonly()), method(object({
|
|
19532
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19533
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19534
|
+
since: number(),
|
|
19535
|
+
until: number(),
|
|
19536
|
+
bucketMs: number().int().positive()
|
|
19537
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19508
19538
|
deviceId: number(),
|
|
19509
19539
|
cutoffMs: number()
|
|
19510
19540
|
}), object({
|
|
@@ -28529,6 +28559,39 @@ var RecordingDaysSchema = object({
|
|
|
28529
28559
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28530
28560
|
days: array(number())
|
|
28531
28561
|
});
|
|
28562
|
+
/**
|
|
28563
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
28564
|
+
*
|
|
28565
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
28566
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
28567
|
+
* method never had to say:
|
|
28568
|
+
*
|
|
28569
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
28570
|
+
* no footage in the window", which is a real claim.
|
|
28571
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
28572
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
28573
|
+
* that emptiness means NOTHING.
|
|
28574
|
+
*
|
|
28575
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
28576
|
+
* footage when the truth is that nobody looked.
|
|
28577
|
+
*/
|
|
28578
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
28579
|
+
deviceId: number(),
|
|
28580
|
+
read: _enum(["read", "unreadable"]),
|
|
28581
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
28582
|
+
});
|
|
28583
|
+
/**
|
|
28584
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
28585
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
28586
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
28587
|
+
* the date-picker's day dots must not spell them the same.
|
|
28588
|
+
*/
|
|
28589
|
+
var RecordingDaysForDeviceSchema = object({
|
|
28590
|
+
deviceId: number(),
|
|
28591
|
+
read: _enum(["read", "unreadable"]),
|
|
28592
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28593
|
+
days: array(number()).readonly()
|
|
28594
|
+
});
|
|
28532
28595
|
var RecordingManifestSchema = object({
|
|
28533
28596
|
deviceId: number(),
|
|
28534
28597
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28763,6 +28826,13 @@ method(object({
|
|
|
28763
28826
|
}), RecordingAvailabilitySchema, {
|
|
28764
28827
|
kind: "query",
|
|
28765
28828
|
auth: "protected"
|
|
28829
|
+
}), method(object({
|
|
28830
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28831
|
+
fromMs: number(),
|
|
28832
|
+
toMs: number()
|
|
28833
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
28834
|
+
kind: "query",
|
|
28835
|
+
auth: "protected"
|
|
28766
28836
|
}), method(object({
|
|
28767
28837
|
deviceId: number(),
|
|
28768
28838
|
fromMs: number(),
|
|
@@ -28771,6 +28841,14 @@ method(object({
|
|
|
28771
28841
|
}), RecordingDaysSchema, {
|
|
28772
28842
|
kind: "query",
|
|
28773
28843
|
auth: "protected"
|
|
28844
|
+
}), method(object({
|
|
28845
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28846
|
+
fromMs: number(),
|
|
28847
|
+
toMs: number(),
|
|
28848
|
+
tzOffsetMinutes: number()
|
|
28849
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
28850
|
+
kind: "query",
|
|
28851
|
+
auth: "protected"
|
|
28774
28852
|
}), method(object({
|
|
28775
28853
|
deviceId: number(),
|
|
28776
28854
|
fromMs: number(),
|
|
@@ -35667,6 +35745,12 @@ Object.freeze({
|
|
|
35667
35745
|
addonId: null,
|
|
35668
35746
|
access: "view"
|
|
35669
35747
|
},
|
|
35748
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35749
|
+
capName: "pipeline-analytics",
|
|
35750
|
+
capScope: "device",
|
|
35751
|
+
addonId: null,
|
|
35752
|
+
access: "view"
|
|
35753
|
+
},
|
|
35670
35754
|
"pipelineAnalytics.getEventMedia": {
|
|
35671
35755
|
capName: "pipeline-analytics",
|
|
35672
35756
|
capScope: "device",
|
|
@@ -36789,12 +36873,24 @@ Object.freeze({
|
|
|
36789
36873
|
addonId: null,
|
|
36790
36874
|
access: "view"
|
|
36791
36875
|
},
|
|
36876
|
+
"recording.getAvailabilityBatch": {
|
|
36877
|
+
capName: "recording",
|
|
36878
|
+
capScope: "system",
|
|
36879
|
+
addonId: null,
|
|
36880
|
+
access: "view"
|
|
36881
|
+
},
|
|
36792
36882
|
"recording.getDaysWithRecordings": {
|
|
36793
36883
|
capName: "recording",
|
|
36794
36884
|
capScope: "system",
|
|
36795
36885
|
addonId: null,
|
|
36796
36886
|
access: "view"
|
|
36797
36887
|
},
|
|
36888
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36889
|
+
capName: "recording",
|
|
36890
|
+
capScope: "system",
|
|
36891
|
+
addonId: null,
|
|
36892
|
+
access: "view"
|
|
36893
|
+
},
|
|
36798
36894
|
"recording.getDeviceConfig": {
|
|
36799
36895
|
capName: "recording",
|
|
36800
36896
|
capScope: "system",
|
|
@@ -39399,6 +39495,11 @@ Object.freeze({
|
|
|
39399
39495
|
form: "single",
|
|
39400
39496
|
optional: false
|
|
39401
39497
|
}],
|
|
39498
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39499
|
+
name: "deviceIds",
|
|
39500
|
+
form: "array",
|
|
39501
|
+
optional: false
|
|
39502
|
+
}],
|
|
39402
39503
|
"pipelineAnalytics.getEventMedia": [{
|
|
39403
39504
|
name: "deviceId",
|
|
39404
39505
|
form: "single",
|
|
@@ -39814,11 +39915,21 @@ Object.freeze({
|
|
|
39814
39915
|
form: "single",
|
|
39815
39916
|
optional: false
|
|
39816
39917
|
}],
|
|
39918
|
+
"recording.getAvailabilityBatch": [{
|
|
39919
|
+
name: "deviceIds",
|
|
39920
|
+
form: "array",
|
|
39921
|
+
optional: false
|
|
39922
|
+
}],
|
|
39817
39923
|
"recording.getDaysWithRecordings": [{
|
|
39818
39924
|
name: "deviceId",
|
|
39819
39925
|
form: "single",
|
|
39820
39926
|
optional: false
|
|
39821
39927
|
}],
|
|
39928
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
39929
|
+
name: "deviceIds",
|
|
39930
|
+
form: "array",
|
|
39931
|
+
optional: false
|
|
39932
|
+
}],
|
|
39822
39933
|
"recording.getDeviceConfig": [{
|
|
39823
39934
|
name: "deviceId",
|
|
39824
39935
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -15874,6 +15874,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
15874
15874
|
"device-offline",
|
|
15875
15875
|
"device-disabled",
|
|
15876
15876
|
"device-enabled",
|
|
15877
|
+
"device-battery-low",
|
|
15878
|
+
"device-battery-normal",
|
|
15877
15879
|
"stream-online",
|
|
15878
15880
|
"stream-offline",
|
|
15879
15881
|
"node-online",
|
|
@@ -19188,6 +19190,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19188
19190
|
deviceId: number(),
|
|
19189
19191
|
events: array(KeyEventSchema).readonly()
|
|
19190
19192
|
});
|
|
19193
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19194
|
+
var EventDensityBucketSchema = object({
|
|
19195
|
+
bucketStart: number(),
|
|
19196
|
+
motion: number().int(),
|
|
19197
|
+
object: number().int(),
|
|
19198
|
+
audio: number().int()
|
|
19199
|
+
});
|
|
19200
|
+
/**
|
|
19201
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19202
|
+
*
|
|
19203
|
+
* TWO facts, and the timeline draws them differently:
|
|
19204
|
+
*
|
|
19205
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19206
|
+
* claim: read, and nothing happened in the window.
|
|
19207
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19208
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19209
|
+
* not quiet.
|
|
19210
|
+
*
|
|
19211
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19212
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19213
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19214
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19215
|
+
*/
|
|
19216
|
+
var EventDensityForDeviceSchema = object({
|
|
19217
|
+
deviceId: number(),
|
|
19218
|
+
read: _enum(["read", "unreadable"]),
|
|
19219
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19220
|
+
});
|
|
19191
19221
|
object({
|
|
19192
19222
|
trackId: string(),
|
|
19193
19223
|
className: string(),
|
|
@@ -19498,12 +19528,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19498
19528
|
since: number(),
|
|
19499
19529
|
until: number(),
|
|
19500
19530
|
bucketMs: number().int().positive()
|
|
19501
|
-
}), array(object({
|
|
19502
|
-
|
|
19503
|
-
|
|
19504
|
-
|
|
19505
|
-
|
|
19506
|
-
})).readonly()), method(object({
|
|
19531
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19532
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19533
|
+
since: number(),
|
|
19534
|
+
until: number(),
|
|
19535
|
+
bucketMs: number().int().positive()
|
|
19536
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19507
19537
|
deviceId: number(),
|
|
19508
19538
|
cutoffMs: number()
|
|
19509
19539
|
}), object({
|
|
@@ -28528,6 +28558,39 @@ var RecordingDaysSchema = object({
|
|
|
28528
28558
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28529
28559
|
days: array(number())
|
|
28530
28560
|
});
|
|
28561
|
+
/**
|
|
28562
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
28563
|
+
*
|
|
28564
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
28565
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
28566
|
+
* method never had to say:
|
|
28567
|
+
*
|
|
28568
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
28569
|
+
* no footage in the window", which is a real claim.
|
|
28570
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
28571
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
28572
|
+
* that emptiness means NOTHING.
|
|
28573
|
+
*
|
|
28574
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
28575
|
+
* footage when the truth is that nobody looked.
|
|
28576
|
+
*/
|
|
28577
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
28578
|
+
deviceId: number(),
|
|
28579
|
+
read: _enum(["read", "unreadable"]),
|
|
28580
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
28581
|
+
});
|
|
28582
|
+
/**
|
|
28583
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
28584
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
28585
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
28586
|
+
* the date-picker's day dots must not spell them the same.
|
|
28587
|
+
*/
|
|
28588
|
+
var RecordingDaysForDeviceSchema = object({
|
|
28589
|
+
deviceId: number(),
|
|
28590
|
+
read: _enum(["read", "unreadable"]),
|
|
28591
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28592
|
+
days: array(number()).readonly()
|
|
28593
|
+
});
|
|
28531
28594
|
var RecordingManifestSchema = object({
|
|
28532
28595
|
deviceId: number(),
|
|
28533
28596
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28762,6 +28825,13 @@ method(object({
|
|
|
28762
28825
|
}), RecordingAvailabilitySchema, {
|
|
28763
28826
|
kind: "query",
|
|
28764
28827
|
auth: "protected"
|
|
28828
|
+
}), method(object({
|
|
28829
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28830
|
+
fromMs: number(),
|
|
28831
|
+
toMs: number()
|
|
28832
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
28833
|
+
kind: "query",
|
|
28834
|
+
auth: "protected"
|
|
28765
28835
|
}), method(object({
|
|
28766
28836
|
deviceId: number(),
|
|
28767
28837
|
fromMs: number(),
|
|
@@ -28770,6 +28840,14 @@ method(object({
|
|
|
28770
28840
|
}), RecordingDaysSchema, {
|
|
28771
28841
|
kind: "query",
|
|
28772
28842
|
auth: "protected"
|
|
28843
|
+
}), method(object({
|
|
28844
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28845
|
+
fromMs: number(),
|
|
28846
|
+
toMs: number(),
|
|
28847
|
+
tzOffsetMinutes: number()
|
|
28848
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
28849
|
+
kind: "query",
|
|
28850
|
+
auth: "protected"
|
|
28773
28851
|
}), method(object({
|
|
28774
28852
|
deviceId: number(),
|
|
28775
28853
|
fromMs: number(),
|
|
@@ -35666,6 +35744,12 @@ Object.freeze({
|
|
|
35666
35744
|
addonId: null,
|
|
35667
35745
|
access: "view"
|
|
35668
35746
|
},
|
|
35747
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35748
|
+
capName: "pipeline-analytics",
|
|
35749
|
+
capScope: "device",
|
|
35750
|
+
addonId: null,
|
|
35751
|
+
access: "view"
|
|
35752
|
+
},
|
|
35669
35753
|
"pipelineAnalytics.getEventMedia": {
|
|
35670
35754
|
capName: "pipeline-analytics",
|
|
35671
35755
|
capScope: "device",
|
|
@@ -36788,12 +36872,24 @@ Object.freeze({
|
|
|
36788
36872
|
addonId: null,
|
|
36789
36873
|
access: "view"
|
|
36790
36874
|
},
|
|
36875
|
+
"recording.getAvailabilityBatch": {
|
|
36876
|
+
capName: "recording",
|
|
36877
|
+
capScope: "system",
|
|
36878
|
+
addonId: null,
|
|
36879
|
+
access: "view"
|
|
36880
|
+
},
|
|
36791
36881
|
"recording.getDaysWithRecordings": {
|
|
36792
36882
|
capName: "recording",
|
|
36793
36883
|
capScope: "system",
|
|
36794
36884
|
addonId: null,
|
|
36795
36885
|
access: "view"
|
|
36796
36886
|
},
|
|
36887
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36888
|
+
capName: "recording",
|
|
36889
|
+
capScope: "system",
|
|
36890
|
+
addonId: null,
|
|
36891
|
+
access: "view"
|
|
36892
|
+
},
|
|
36797
36893
|
"recording.getDeviceConfig": {
|
|
36798
36894
|
capName: "recording",
|
|
36799
36895
|
capScope: "system",
|
|
@@ -39398,6 +39494,11 @@ Object.freeze({
|
|
|
39398
39494
|
form: "single",
|
|
39399
39495
|
optional: false
|
|
39400
39496
|
}],
|
|
39497
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39498
|
+
name: "deviceIds",
|
|
39499
|
+
form: "array",
|
|
39500
|
+
optional: false
|
|
39501
|
+
}],
|
|
39401
39502
|
"pipelineAnalytics.getEventMedia": [{
|
|
39402
39503
|
name: "deviceId",
|
|
39403
39504
|
form: "single",
|
|
@@ -39813,11 +39914,21 @@ Object.freeze({
|
|
|
39813
39914
|
form: "single",
|
|
39814
39915
|
optional: false
|
|
39815
39916
|
}],
|
|
39917
|
+
"recording.getAvailabilityBatch": [{
|
|
39918
|
+
name: "deviceIds",
|
|
39919
|
+
form: "array",
|
|
39920
|
+
optional: false
|
|
39921
|
+
}],
|
|
39816
39922
|
"recording.getDaysWithRecordings": [{
|
|
39817
39923
|
name: "deviceId",
|
|
39818
39924
|
form: "single",
|
|
39819
39925
|
optional: false
|
|
39820
39926
|
}],
|
|
39927
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
39928
|
+
name: "deviceIds",
|
|
39929
|
+
form: "array",
|
|
39930
|
+
optional: false
|
|
39931
|
+
}],
|
|
39821
39932
|
"recording.getDeviceConfig": [{
|
|
39822
39933
|
name: "deviceId",
|
|
39823
39934
|
form: "single",
|
package/package.json
CHANGED