@camstack/addon-provider-rademacher 0.2.50 → 0.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
|
@@ -20176,6 +20176,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
20176
20176
|
deviceId: number(),
|
|
20177
20177
|
events: array(KeyEventSchema).readonly()
|
|
20178
20178
|
});
|
|
20179
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
20180
|
+
var EventDensityBucketSchema = object({
|
|
20181
|
+
bucketStart: number(),
|
|
20182
|
+
motion: number().int(),
|
|
20183
|
+
object: number().int(),
|
|
20184
|
+
audio: number().int()
|
|
20185
|
+
});
|
|
20186
|
+
/**
|
|
20187
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
20188
|
+
*
|
|
20189
|
+
* TWO facts, and the timeline draws them differently:
|
|
20190
|
+
*
|
|
20191
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
20192
|
+
* claim: read, and nothing happened in the window.
|
|
20193
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
20194
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
20195
|
+
* not quiet.
|
|
20196
|
+
*
|
|
20197
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
20198
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
20199
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
20200
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
20201
|
+
*/
|
|
20202
|
+
var EventDensityForDeviceSchema = object({
|
|
20203
|
+
deviceId: number(),
|
|
20204
|
+
read: _enum(["read", "unreadable"]),
|
|
20205
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
20206
|
+
});
|
|
20179
20207
|
object({
|
|
20180
20208
|
trackId: string(),
|
|
20181
20209
|
className: string(),
|
|
@@ -20486,12 +20514,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
20486
20514
|
since: number(),
|
|
20487
20515
|
until: number(),
|
|
20488
20516
|
bucketMs: number().int().positive()
|
|
20489
|
-
}), array(object({
|
|
20490
|
-
|
|
20491
|
-
|
|
20492
|
-
|
|
20493
|
-
|
|
20494
|
-
})).readonly()), method(object({
|
|
20517
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
20518
|
+
deviceIds: array(number()).min(1).max(200),
|
|
20519
|
+
since: number(),
|
|
20520
|
+
until: number(),
|
|
20521
|
+
bucketMs: number().int().positive()
|
|
20522
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
20495
20523
|
deviceId: number(),
|
|
20496
20524
|
cutoffMs: number()
|
|
20497
20525
|
}), object({
|
|
@@ -29516,6 +29544,39 @@ var RecordingDaysSchema = object({
|
|
|
29516
29544
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
29517
29545
|
days: array(number())
|
|
29518
29546
|
});
|
|
29547
|
+
/**
|
|
29548
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
29549
|
+
*
|
|
29550
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
29551
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
29552
|
+
* method never had to say:
|
|
29553
|
+
*
|
|
29554
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
29555
|
+
* no footage in the window", which is a real claim.
|
|
29556
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
29557
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
29558
|
+
* that emptiness means NOTHING.
|
|
29559
|
+
*
|
|
29560
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
29561
|
+
* footage when the truth is that nobody looked.
|
|
29562
|
+
*/
|
|
29563
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
29564
|
+
deviceId: number(),
|
|
29565
|
+
read: _enum(["read", "unreadable"]),
|
|
29566
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
29567
|
+
});
|
|
29568
|
+
/**
|
|
29569
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
29570
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
29571
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
29572
|
+
* the date-picker's day dots must not spell them the same.
|
|
29573
|
+
*/
|
|
29574
|
+
var RecordingDaysForDeviceSchema = object({
|
|
29575
|
+
deviceId: number(),
|
|
29576
|
+
read: _enum(["read", "unreadable"]),
|
|
29577
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
29578
|
+
days: array(number()).readonly()
|
|
29579
|
+
});
|
|
29519
29580
|
var RecordingManifestSchema = object({
|
|
29520
29581
|
deviceId: number(),
|
|
29521
29582
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -29750,6 +29811,13 @@ method(object({
|
|
|
29750
29811
|
}), RecordingAvailabilitySchema, {
|
|
29751
29812
|
kind: "query",
|
|
29752
29813
|
auth: "protected"
|
|
29814
|
+
}), method(object({
|
|
29815
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29816
|
+
fromMs: number(),
|
|
29817
|
+
toMs: number()
|
|
29818
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
29819
|
+
kind: "query",
|
|
29820
|
+
auth: "protected"
|
|
29753
29821
|
}), method(object({
|
|
29754
29822
|
deviceId: number(),
|
|
29755
29823
|
fromMs: number(),
|
|
@@ -29758,6 +29826,14 @@ method(object({
|
|
|
29758
29826
|
}), RecordingDaysSchema, {
|
|
29759
29827
|
kind: "query",
|
|
29760
29828
|
auth: "protected"
|
|
29829
|
+
}), method(object({
|
|
29830
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29831
|
+
fromMs: number(),
|
|
29832
|
+
toMs: number(),
|
|
29833
|
+
tzOffsetMinutes: number()
|
|
29834
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
29835
|
+
kind: "query",
|
|
29836
|
+
auth: "protected"
|
|
29761
29837
|
}), method(object({
|
|
29762
29838
|
deviceId: number(),
|
|
29763
29839
|
fromMs: number(),
|
|
@@ -36654,6 +36730,12 @@ Object.freeze({
|
|
|
36654
36730
|
addonId: null,
|
|
36655
36731
|
access: "view"
|
|
36656
36732
|
},
|
|
36733
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
36734
|
+
capName: "pipeline-analytics",
|
|
36735
|
+
capScope: "device",
|
|
36736
|
+
addonId: null,
|
|
36737
|
+
access: "view"
|
|
36738
|
+
},
|
|
36657
36739
|
"pipelineAnalytics.getEventMedia": {
|
|
36658
36740
|
capName: "pipeline-analytics",
|
|
36659
36741
|
capScope: "device",
|
|
@@ -37776,12 +37858,24 @@ Object.freeze({
|
|
|
37776
37858
|
addonId: null,
|
|
37777
37859
|
access: "view"
|
|
37778
37860
|
},
|
|
37861
|
+
"recording.getAvailabilityBatch": {
|
|
37862
|
+
capName: "recording",
|
|
37863
|
+
capScope: "system",
|
|
37864
|
+
addonId: null,
|
|
37865
|
+
access: "view"
|
|
37866
|
+
},
|
|
37779
37867
|
"recording.getDaysWithRecordings": {
|
|
37780
37868
|
capName: "recording",
|
|
37781
37869
|
capScope: "system",
|
|
37782
37870
|
addonId: null,
|
|
37783
37871
|
access: "view"
|
|
37784
37872
|
},
|
|
37873
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
37874
|
+
capName: "recording",
|
|
37875
|
+
capScope: "system",
|
|
37876
|
+
addonId: null,
|
|
37877
|
+
access: "view"
|
|
37878
|
+
},
|
|
37785
37879
|
"recording.getDeviceConfig": {
|
|
37786
37880
|
capName: "recording",
|
|
37787
37881
|
capScope: "system",
|
|
@@ -40386,6 +40480,11 @@ Object.freeze({
|
|
|
40386
40480
|
form: "single",
|
|
40387
40481
|
optional: false
|
|
40388
40482
|
}],
|
|
40483
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
40484
|
+
name: "deviceIds",
|
|
40485
|
+
form: "array",
|
|
40486
|
+
optional: false
|
|
40487
|
+
}],
|
|
40389
40488
|
"pipelineAnalytics.getEventMedia": [{
|
|
40390
40489
|
name: "deviceId",
|
|
40391
40490
|
form: "single",
|
|
@@ -40801,11 +40900,21 @@ Object.freeze({
|
|
|
40801
40900
|
form: "single",
|
|
40802
40901
|
optional: false
|
|
40803
40902
|
}],
|
|
40903
|
+
"recording.getAvailabilityBatch": [{
|
|
40904
|
+
name: "deviceIds",
|
|
40905
|
+
form: "array",
|
|
40906
|
+
optional: false
|
|
40907
|
+
}],
|
|
40804
40908
|
"recording.getDaysWithRecordings": [{
|
|
40805
40909
|
name: "deviceId",
|
|
40806
40910
|
form: "single",
|
|
40807
40911
|
optional: false
|
|
40808
40912
|
}],
|
|
40913
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40914
|
+
name: "deviceIds",
|
|
40915
|
+
form: "array",
|
|
40916
|
+
optional: false
|
|
40917
|
+
}],
|
|
40809
40918
|
"recording.getDeviceConfig": [{
|
|
40810
40919
|
name: "deviceId",
|
|
40811
40920
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -20175,6 +20175,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
20175
20175
|
deviceId: number(),
|
|
20176
20176
|
events: array(KeyEventSchema).readonly()
|
|
20177
20177
|
});
|
|
20178
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
20179
|
+
var EventDensityBucketSchema = object({
|
|
20180
|
+
bucketStart: number(),
|
|
20181
|
+
motion: number().int(),
|
|
20182
|
+
object: number().int(),
|
|
20183
|
+
audio: number().int()
|
|
20184
|
+
});
|
|
20185
|
+
/**
|
|
20186
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
20187
|
+
*
|
|
20188
|
+
* TWO facts, and the timeline draws them differently:
|
|
20189
|
+
*
|
|
20190
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
20191
|
+
* claim: read, and nothing happened in the window.
|
|
20192
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
20193
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
20194
|
+
* not quiet.
|
|
20195
|
+
*
|
|
20196
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
20197
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
20198
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
20199
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
20200
|
+
*/
|
|
20201
|
+
var EventDensityForDeviceSchema = object({
|
|
20202
|
+
deviceId: number(),
|
|
20203
|
+
read: _enum(["read", "unreadable"]),
|
|
20204
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
20205
|
+
});
|
|
20178
20206
|
object({
|
|
20179
20207
|
trackId: string(),
|
|
20180
20208
|
className: string(),
|
|
@@ -20485,12 +20513,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
20485
20513
|
since: number(),
|
|
20486
20514
|
until: number(),
|
|
20487
20515
|
bucketMs: number().int().positive()
|
|
20488
|
-
}), array(object({
|
|
20489
|
-
|
|
20490
|
-
|
|
20491
|
-
|
|
20492
|
-
|
|
20493
|
-
})).readonly()), method(object({
|
|
20516
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
20517
|
+
deviceIds: array(number()).min(1).max(200),
|
|
20518
|
+
since: number(),
|
|
20519
|
+
until: number(),
|
|
20520
|
+
bucketMs: number().int().positive()
|
|
20521
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
20494
20522
|
deviceId: number(),
|
|
20495
20523
|
cutoffMs: number()
|
|
20496
20524
|
}), object({
|
|
@@ -29515,6 +29543,39 @@ var RecordingDaysSchema = object({
|
|
|
29515
29543
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
29516
29544
|
days: array(number())
|
|
29517
29545
|
});
|
|
29546
|
+
/**
|
|
29547
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
29548
|
+
*
|
|
29549
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
29550
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
29551
|
+
* method never had to say:
|
|
29552
|
+
*
|
|
29553
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
29554
|
+
* no footage in the window", which is a real claim.
|
|
29555
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
29556
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
29557
|
+
* that emptiness means NOTHING.
|
|
29558
|
+
*
|
|
29559
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
29560
|
+
* footage when the truth is that nobody looked.
|
|
29561
|
+
*/
|
|
29562
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
29563
|
+
deviceId: number(),
|
|
29564
|
+
read: _enum(["read", "unreadable"]),
|
|
29565
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
29566
|
+
});
|
|
29567
|
+
/**
|
|
29568
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
29569
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
29570
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
29571
|
+
* the date-picker's day dots must not spell them the same.
|
|
29572
|
+
*/
|
|
29573
|
+
var RecordingDaysForDeviceSchema = object({
|
|
29574
|
+
deviceId: number(),
|
|
29575
|
+
read: _enum(["read", "unreadable"]),
|
|
29576
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
29577
|
+
days: array(number()).readonly()
|
|
29578
|
+
});
|
|
29518
29579
|
var RecordingManifestSchema = object({
|
|
29519
29580
|
deviceId: number(),
|
|
29520
29581
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -29749,6 +29810,13 @@ method(object({
|
|
|
29749
29810
|
}), RecordingAvailabilitySchema, {
|
|
29750
29811
|
kind: "query",
|
|
29751
29812
|
auth: "protected"
|
|
29813
|
+
}), method(object({
|
|
29814
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29815
|
+
fromMs: number(),
|
|
29816
|
+
toMs: number()
|
|
29817
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
29818
|
+
kind: "query",
|
|
29819
|
+
auth: "protected"
|
|
29752
29820
|
}), method(object({
|
|
29753
29821
|
deviceId: number(),
|
|
29754
29822
|
fromMs: number(),
|
|
@@ -29757,6 +29825,14 @@ method(object({
|
|
|
29757
29825
|
}), RecordingDaysSchema, {
|
|
29758
29826
|
kind: "query",
|
|
29759
29827
|
auth: "protected"
|
|
29828
|
+
}), method(object({
|
|
29829
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29830
|
+
fromMs: number(),
|
|
29831
|
+
toMs: number(),
|
|
29832
|
+
tzOffsetMinutes: number()
|
|
29833
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
29834
|
+
kind: "query",
|
|
29835
|
+
auth: "protected"
|
|
29760
29836
|
}), method(object({
|
|
29761
29837
|
deviceId: number(),
|
|
29762
29838
|
fromMs: number(),
|
|
@@ -36653,6 +36729,12 @@ Object.freeze({
|
|
|
36653
36729
|
addonId: null,
|
|
36654
36730
|
access: "view"
|
|
36655
36731
|
},
|
|
36732
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
36733
|
+
capName: "pipeline-analytics",
|
|
36734
|
+
capScope: "device",
|
|
36735
|
+
addonId: null,
|
|
36736
|
+
access: "view"
|
|
36737
|
+
},
|
|
36656
36738
|
"pipelineAnalytics.getEventMedia": {
|
|
36657
36739
|
capName: "pipeline-analytics",
|
|
36658
36740
|
capScope: "device",
|
|
@@ -37775,12 +37857,24 @@ Object.freeze({
|
|
|
37775
37857
|
addonId: null,
|
|
37776
37858
|
access: "view"
|
|
37777
37859
|
},
|
|
37860
|
+
"recording.getAvailabilityBatch": {
|
|
37861
|
+
capName: "recording",
|
|
37862
|
+
capScope: "system",
|
|
37863
|
+
addonId: null,
|
|
37864
|
+
access: "view"
|
|
37865
|
+
},
|
|
37778
37866
|
"recording.getDaysWithRecordings": {
|
|
37779
37867
|
capName: "recording",
|
|
37780
37868
|
capScope: "system",
|
|
37781
37869
|
addonId: null,
|
|
37782
37870
|
access: "view"
|
|
37783
37871
|
},
|
|
37872
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
37873
|
+
capName: "recording",
|
|
37874
|
+
capScope: "system",
|
|
37875
|
+
addonId: null,
|
|
37876
|
+
access: "view"
|
|
37877
|
+
},
|
|
37784
37878
|
"recording.getDeviceConfig": {
|
|
37785
37879
|
capName: "recording",
|
|
37786
37880
|
capScope: "system",
|
|
@@ -40385,6 +40479,11 @@ Object.freeze({
|
|
|
40385
40479
|
form: "single",
|
|
40386
40480
|
optional: false
|
|
40387
40481
|
}],
|
|
40482
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
40483
|
+
name: "deviceIds",
|
|
40484
|
+
form: "array",
|
|
40485
|
+
optional: false
|
|
40486
|
+
}],
|
|
40388
40487
|
"pipelineAnalytics.getEventMedia": [{
|
|
40389
40488
|
name: "deviceId",
|
|
40390
40489
|
form: "single",
|
|
@@ -40800,11 +40899,21 @@ Object.freeze({
|
|
|
40800
40899
|
form: "single",
|
|
40801
40900
|
optional: false
|
|
40802
40901
|
}],
|
|
40902
|
+
"recording.getAvailabilityBatch": [{
|
|
40903
|
+
name: "deviceIds",
|
|
40904
|
+
form: "array",
|
|
40905
|
+
optional: false
|
|
40906
|
+
}],
|
|
40803
40907
|
"recording.getDaysWithRecordings": [{
|
|
40804
40908
|
name: "deviceId",
|
|
40805
40909
|
form: "single",
|
|
40806
40910
|
optional: false
|
|
40807
40911
|
}],
|
|
40912
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40913
|
+
name: "deviceIds",
|
|
40914
|
+
form: "array",
|
|
40915
|
+
optional: false
|
|
40916
|
+
}],
|
|
40808
40917
|
"recording.getDeviceConfig": [{
|
|
40809
40918
|
name: "deviceId",
|
|
40810
40919
|
form: "single",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-rademacher",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.51",
|
|
4
4
|
"description": "Rademacher HomePilot device-provider addon for CamStack — wraps the @apocaliss92/noderademacher local-hub client (roller shutters over the cover cap)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|