@camstack/addon-provider-velux 0.2.51 → 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 +115 -6
- package/dist/addon.mjs +115 -6
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -19191,6 +19191,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19191
19191
|
deviceId: number(),
|
|
19192
19192
|
events: array(KeyEventSchema).readonly()
|
|
19193
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
|
+
});
|
|
19194
19222
|
object({
|
|
19195
19223
|
trackId: string(),
|
|
19196
19224
|
className: string(),
|
|
@@ -19501,12 +19529,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19501
19529
|
since: number(),
|
|
19502
19530
|
until: number(),
|
|
19503
19531
|
bucketMs: number().int().positive()
|
|
19504
|
-
}), array(object({
|
|
19505
|
-
|
|
19506
|
-
|
|
19507
|
-
|
|
19508
|
-
|
|
19509
|
-
})).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({
|
|
19510
19538
|
deviceId: number(),
|
|
19511
19539
|
cutoffMs: number()
|
|
19512
19540
|
}), object({
|
|
@@ -28531,6 +28559,39 @@ var RecordingDaysSchema = object({
|
|
|
28531
28559
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28532
28560
|
days: array(number())
|
|
28533
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
|
+
});
|
|
28534
28595
|
var RecordingManifestSchema = object({
|
|
28535
28596
|
deviceId: number(),
|
|
28536
28597
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28765,6 +28826,13 @@ method(object({
|
|
|
28765
28826
|
}), RecordingAvailabilitySchema, {
|
|
28766
28827
|
kind: "query",
|
|
28767
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"
|
|
28768
28836
|
}), method(object({
|
|
28769
28837
|
deviceId: number(),
|
|
28770
28838
|
fromMs: number(),
|
|
@@ -28773,6 +28841,14 @@ method(object({
|
|
|
28773
28841
|
}), RecordingDaysSchema, {
|
|
28774
28842
|
kind: "query",
|
|
28775
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"
|
|
28776
28852
|
}), method(object({
|
|
28777
28853
|
deviceId: number(),
|
|
28778
28854
|
fromMs: number(),
|
|
@@ -35669,6 +35745,12 @@ Object.freeze({
|
|
|
35669
35745
|
addonId: null,
|
|
35670
35746
|
access: "view"
|
|
35671
35747
|
},
|
|
35748
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35749
|
+
capName: "pipeline-analytics",
|
|
35750
|
+
capScope: "device",
|
|
35751
|
+
addonId: null,
|
|
35752
|
+
access: "view"
|
|
35753
|
+
},
|
|
35672
35754
|
"pipelineAnalytics.getEventMedia": {
|
|
35673
35755
|
capName: "pipeline-analytics",
|
|
35674
35756
|
capScope: "device",
|
|
@@ -36791,12 +36873,24 @@ Object.freeze({
|
|
|
36791
36873
|
addonId: null,
|
|
36792
36874
|
access: "view"
|
|
36793
36875
|
},
|
|
36876
|
+
"recording.getAvailabilityBatch": {
|
|
36877
|
+
capName: "recording",
|
|
36878
|
+
capScope: "system",
|
|
36879
|
+
addonId: null,
|
|
36880
|
+
access: "view"
|
|
36881
|
+
},
|
|
36794
36882
|
"recording.getDaysWithRecordings": {
|
|
36795
36883
|
capName: "recording",
|
|
36796
36884
|
capScope: "system",
|
|
36797
36885
|
addonId: null,
|
|
36798
36886
|
access: "view"
|
|
36799
36887
|
},
|
|
36888
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36889
|
+
capName: "recording",
|
|
36890
|
+
capScope: "system",
|
|
36891
|
+
addonId: null,
|
|
36892
|
+
access: "view"
|
|
36893
|
+
},
|
|
36800
36894
|
"recording.getDeviceConfig": {
|
|
36801
36895
|
capName: "recording",
|
|
36802
36896
|
capScope: "system",
|
|
@@ -39401,6 +39495,11 @@ Object.freeze({
|
|
|
39401
39495
|
form: "single",
|
|
39402
39496
|
optional: false
|
|
39403
39497
|
}],
|
|
39498
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39499
|
+
name: "deviceIds",
|
|
39500
|
+
form: "array",
|
|
39501
|
+
optional: false
|
|
39502
|
+
}],
|
|
39404
39503
|
"pipelineAnalytics.getEventMedia": [{
|
|
39405
39504
|
name: "deviceId",
|
|
39406
39505
|
form: "single",
|
|
@@ -39816,11 +39915,21 @@ Object.freeze({
|
|
|
39816
39915
|
form: "single",
|
|
39817
39916
|
optional: false
|
|
39818
39917
|
}],
|
|
39918
|
+
"recording.getAvailabilityBatch": [{
|
|
39919
|
+
name: "deviceIds",
|
|
39920
|
+
form: "array",
|
|
39921
|
+
optional: false
|
|
39922
|
+
}],
|
|
39819
39923
|
"recording.getDaysWithRecordings": [{
|
|
39820
39924
|
name: "deviceId",
|
|
39821
39925
|
form: "single",
|
|
39822
39926
|
optional: false
|
|
39823
39927
|
}],
|
|
39928
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
39929
|
+
name: "deviceIds",
|
|
39930
|
+
form: "array",
|
|
39931
|
+
optional: false
|
|
39932
|
+
}],
|
|
39824
39933
|
"recording.getDeviceConfig": [{
|
|
39825
39934
|
name: "deviceId",
|
|
39826
39935
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -19190,6 +19190,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19190
19190
|
deviceId: number(),
|
|
19191
19191
|
events: array(KeyEventSchema).readonly()
|
|
19192
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
|
+
});
|
|
19193
19221
|
object({
|
|
19194
19222
|
trackId: string(),
|
|
19195
19223
|
className: string(),
|
|
@@ -19500,12 +19528,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19500
19528
|
since: number(),
|
|
19501
19529
|
until: number(),
|
|
19502
19530
|
bucketMs: number().int().positive()
|
|
19503
|
-
}), array(object({
|
|
19504
|
-
|
|
19505
|
-
|
|
19506
|
-
|
|
19507
|
-
|
|
19508
|
-
})).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({
|
|
19509
19537
|
deviceId: number(),
|
|
19510
19538
|
cutoffMs: number()
|
|
19511
19539
|
}), object({
|
|
@@ -28530,6 +28558,39 @@ var RecordingDaysSchema = object({
|
|
|
28530
28558
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28531
28559
|
days: array(number())
|
|
28532
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
|
+
});
|
|
28533
28594
|
var RecordingManifestSchema = object({
|
|
28534
28595
|
deviceId: number(),
|
|
28535
28596
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28764,6 +28825,13 @@ method(object({
|
|
|
28764
28825
|
}), RecordingAvailabilitySchema, {
|
|
28765
28826
|
kind: "query",
|
|
28766
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"
|
|
28767
28835
|
}), method(object({
|
|
28768
28836
|
deviceId: number(),
|
|
28769
28837
|
fromMs: number(),
|
|
@@ -28772,6 +28840,14 @@ method(object({
|
|
|
28772
28840
|
}), RecordingDaysSchema, {
|
|
28773
28841
|
kind: "query",
|
|
28774
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"
|
|
28775
28851
|
}), method(object({
|
|
28776
28852
|
deviceId: number(),
|
|
28777
28853
|
fromMs: number(),
|
|
@@ -35668,6 +35744,12 @@ Object.freeze({
|
|
|
35668
35744
|
addonId: null,
|
|
35669
35745
|
access: "view"
|
|
35670
35746
|
},
|
|
35747
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35748
|
+
capName: "pipeline-analytics",
|
|
35749
|
+
capScope: "device",
|
|
35750
|
+
addonId: null,
|
|
35751
|
+
access: "view"
|
|
35752
|
+
},
|
|
35671
35753
|
"pipelineAnalytics.getEventMedia": {
|
|
35672
35754
|
capName: "pipeline-analytics",
|
|
35673
35755
|
capScope: "device",
|
|
@@ -36790,12 +36872,24 @@ Object.freeze({
|
|
|
36790
36872
|
addonId: null,
|
|
36791
36873
|
access: "view"
|
|
36792
36874
|
},
|
|
36875
|
+
"recording.getAvailabilityBatch": {
|
|
36876
|
+
capName: "recording",
|
|
36877
|
+
capScope: "system",
|
|
36878
|
+
addonId: null,
|
|
36879
|
+
access: "view"
|
|
36880
|
+
},
|
|
36793
36881
|
"recording.getDaysWithRecordings": {
|
|
36794
36882
|
capName: "recording",
|
|
36795
36883
|
capScope: "system",
|
|
36796
36884
|
addonId: null,
|
|
36797
36885
|
access: "view"
|
|
36798
36886
|
},
|
|
36887
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36888
|
+
capName: "recording",
|
|
36889
|
+
capScope: "system",
|
|
36890
|
+
addonId: null,
|
|
36891
|
+
access: "view"
|
|
36892
|
+
},
|
|
36799
36893
|
"recording.getDeviceConfig": {
|
|
36800
36894
|
capName: "recording",
|
|
36801
36895
|
capScope: "system",
|
|
@@ -39400,6 +39494,11 @@ Object.freeze({
|
|
|
39400
39494
|
form: "single",
|
|
39401
39495
|
optional: false
|
|
39402
39496
|
}],
|
|
39497
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39498
|
+
name: "deviceIds",
|
|
39499
|
+
form: "array",
|
|
39500
|
+
optional: false
|
|
39501
|
+
}],
|
|
39403
39502
|
"pipelineAnalytics.getEventMedia": [{
|
|
39404
39503
|
name: "deviceId",
|
|
39405
39504
|
form: "single",
|
|
@@ -39815,11 +39914,21 @@ Object.freeze({
|
|
|
39815
39914
|
form: "single",
|
|
39816
39915
|
optional: false
|
|
39817
39916
|
}],
|
|
39917
|
+
"recording.getAvailabilityBatch": [{
|
|
39918
|
+
name: "deviceIds",
|
|
39919
|
+
form: "array",
|
|
39920
|
+
optional: false
|
|
39921
|
+
}],
|
|
39818
39922
|
"recording.getDaysWithRecordings": [{
|
|
39819
39923
|
name: "deviceId",
|
|
39820
39924
|
form: "single",
|
|
39821
39925
|
optional: false
|
|
39822
39926
|
}],
|
|
39927
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
39928
|
+
name: "deviceIds",
|
|
39929
|
+
form: "array",
|
|
39930
|
+
optional: false
|
|
39931
|
+
}],
|
|
39823
39932
|
"recording.getDeviceConfig": [{
|
|
39824
39933
|
name: "deviceId",
|
|
39825
39934
|
form: "single",
|
package/package.json
CHANGED