@camstack/addon-provider-rademacher 0.2.49 → 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 +117 -6
- package/dist/addon.mjs +117 -6
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -16860,6 +16860,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
16860
16860
|
"device-offline",
|
|
16861
16861
|
"device-disabled",
|
|
16862
16862
|
"device-enabled",
|
|
16863
|
+
"device-battery-low",
|
|
16864
|
+
"device-battery-normal",
|
|
16863
16865
|
"stream-online",
|
|
16864
16866
|
"stream-offline",
|
|
16865
16867
|
"node-online",
|
|
@@ -20174,6 +20176,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
20174
20176
|
deviceId: number(),
|
|
20175
20177
|
events: array(KeyEventSchema).readonly()
|
|
20176
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
|
+
});
|
|
20177
20207
|
object({
|
|
20178
20208
|
trackId: string(),
|
|
20179
20209
|
className: string(),
|
|
@@ -20484,12 +20514,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
20484
20514
|
since: number(),
|
|
20485
20515
|
until: number(),
|
|
20486
20516
|
bucketMs: number().int().positive()
|
|
20487
|
-
}), array(object({
|
|
20488
|
-
|
|
20489
|
-
|
|
20490
|
-
|
|
20491
|
-
|
|
20492
|
-
})).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({
|
|
20493
20523
|
deviceId: number(),
|
|
20494
20524
|
cutoffMs: number()
|
|
20495
20525
|
}), object({
|
|
@@ -29514,6 +29544,39 @@ var RecordingDaysSchema = object({
|
|
|
29514
29544
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
29515
29545
|
days: array(number())
|
|
29516
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
|
+
});
|
|
29517
29580
|
var RecordingManifestSchema = object({
|
|
29518
29581
|
deviceId: number(),
|
|
29519
29582
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -29748,6 +29811,13 @@ method(object({
|
|
|
29748
29811
|
}), RecordingAvailabilitySchema, {
|
|
29749
29812
|
kind: "query",
|
|
29750
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"
|
|
29751
29821
|
}), method(object({
|
|
29752
29822
|
deviceId: number(),
|
|
29753
29823
|
fromMs: number(),
|
|
@@ -29756,6 +29826,14 @@ method(object({
|
|
|
29756
29826
|
}), RecordingDaysSchema, {
|
|
29757
29827
|
kind: "query",
|
|
29758
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"
|
|
29759
29837
|
}), method(object({
|
|
29760
29838
|
deviceId: number(),
|
|
29761
29839
|
fromMs: number(),
|
|
@@ -36652,6 +36730,12 @@ Object.freeze({
|
|
|
36652
36730
|
addonId: null,
|
|
36653
36731
|
access: "view"
|
|
36654
36732
|
},
|
|
36733
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
36734
|
+
capName: "pipeline-analytics",
|
|
36735
|
+
capScope: "device",
|
|
36736
|
+
addonId: null,
|
|
36737
|
+
access: "view"
|
|
36738
|
+
},
|
|
36655
36739
|
"pipelineAnalytics.getEventMedia": {
|
|
36656
36740
|
capName: "pipeline-analytics",
|
|
36657
36741
|
capScope: "device",
|
|
@@ -37774,12 +37858,24 @@ Object.freeze({
|
|
|
37774
37858
|
addonId: null,
|
|
37775
37859
|
access: "view"
|
|
37776
37860
|
},
|
|
37861
|
+
"recording.getAvailabilityBatch": {
|
|
37862
|
+
capName: "recording",
|
|
37863
|
+
capScope: "system",
|
|
37864
|
+
addonId: null,
|
|
37865
|
+
access: "view"
|
|
37866
|
+
},
|
|
37777
37867
|
"recording.getDaysWithRecordings": {
|
|
37778
37868
|
capName: "recording",
|
|
37779
37869
|
capScope: "system",
|
|
37780
37870
|
addonId: null,
|
|
37781
37871
|
access: "view"
|
|
37782
37872
|
},
|
|
37873
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
37874
|
+
capName: "recording",
|
|
37875
|
+
capScope: "system",
|
|
37876
|
+
addonId: null,
|
|
37877
|
+
access: "view"
|
|
37878
|
+
},
|
|
37783
37879
|
"recording.getDeviceConfig": {
|
|
37784
37880
|
capName: "recording",
|
|
37785
37881
|
capScope: "system",
|
|
@@ -40384,6 +40480,11 @@ Object.freeze({
|
|
|
40384
40480
|
form: "single",
|
|
40385
40481
|
optional: false
|
|
40386
40482
|
}],
|
|
40483
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
40484
|
+
name: "deviceIds",
|
|
40485
|
+
form: "array",
|
|
40486
|
+
optional: false
|
|
40487
|
+
}],
|
|
40387
40488
|
"pipelineAnalytics.getEventMedia": [{
|
|
40388
40489
|
name: "deviceId",
|
|
40389
40490
|
form: "single",
|
|
@@ -40799,11 +40900,21 @@ Object.freeze({
|
|
|
40799
40900
|
form: "single",
|
|
40800
40901
|
optional: false
|
|
40801
40902
|
}],
|
|
40903
|
+
"recording.getAvailabilityBatch": [{
|
|
40904
|
+
name: "deviceIds",
|
|
40905
|
+
form: "array",
|
|
40906
|
+
optional: false
|
|
40907
|
+
}],
|
|
40802
40908
|
"recording.getDaysWithRecordings": [{
|
|
40803
40909
|
name: "deviceId",
|
|
40804
40910
|
form: "single",
|
|
40805
40911
|
optional: false
|
|
40806
40912
|
}],
|
|
40913
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40914
|
+
name: "deviceIds",
|
|
40915
|
+
form: "array",
|
|
40916
|
+
optional: false
|
|
40917
|
+
}],
|
|
40807
40918
|
"recording.getDeviceConfig": [{
|
|
40808
40919
|
name: "deviceId",
|
|
40809
40920
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -16859,6 +16859,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
16859
16859
|
"device-offline",
|
|
16860
16860
|
"device-disabled",
|
|
16861
16861
|
"device-enabled",
|
|
16862
|
+
"device-battery-low",
|
|
16863
|
+
"device-battery-normal",
|
|
16862
16864
|
"stream-online",
|
|
16863
16865
|
"stream-offline",
|
|
16864
16866
|
"node-online",
|
|
@@ -20173,6 +20175,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
20173
20175
|
deviceId: number(),
|
|
20174
20176
|
events: array(KeyEventSchema).readonly()
|
|
20175
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
|
+
});
|
|
20176
20206
|
object({
|
|
20177
20207
|
trackId: string(),
|
|
20178
20208
|
className: string(),
|
|
@@ -20483,12 +20513,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
20483
20513
|
since: number(),
|
|
20484
20514
|
until: number(),
|
|
20485
20515
|
bucketMs: number().int().positive()
|
|
20486
|
-
}), array(object({
|
|
20487
|
-
|
|
20488
|
-
|
|
20489
|
-
|
|
20490
|
-
|
|
20491
|
-
})).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({
|
|
20492
20522
|
deviceId: number(),
|
|
20493
20523
|
cutoffMs: number()
|
|
20494
20524
|
}), object({
|
|
@@ -29513,6 +29543,39 @@ var RecordingDaysSchema = object({
|
|
|
29513
29543
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
29514
29544
|
days: array(number())
|
|
29515
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
|
+
});
|
|
29516
29579
|
var RecordingManifestSchema = object({
|
|
29517
29580
|
deviceId: number(),
|
|
29518
29581
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -29747,6 +29810,13 @@ method(object({
|
|
|
29747
29810
|
}), RecordingAvailabilitySchema, {
|
|
29748
29811
|
kind: "query",
|
|
29749
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"
|
|
29750
29820
|
}), method(object({
|
|
29751
29821
|
deviceId: number(),
|
|
29752
29822
|
fromMs: number(),
|
|
@@ -29755,6 +29825,14 @@ method(object({
|
|
|
29755
29825
|
}), RecordingDaysSchema, {
|
|
29756
29826
|
kind: "query",
|
|
29757
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"
|
|
29758
29836
|
}), method(object({
|
|
29759
29837
|
deviceId: number(),
|
|
29760
29838
|
fromMs: number(),
|
|
@@ -36651,6 +36729,12 @@ Object.freeze({
|
|
|
36651
36729
|
addonId: null,
|
|
36652
36730
|
access: "view"
|
|
36653
36731
|
},
|
|
36732
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
36733
|
+
capName: "pipeline-analytics",
|
|
36734
|
+
capScope: "device",
|
|
36735
|
+
addonId: null,
|
|
36736
|
+
access: "view"
|
|
36737
|
+
},
|
|
36654
36738
|
"pipelineAnalytics.getEventMedia": {
|
|
36655
36739
|
capName: "pipeline-analytics",
|
|
36656
36740
|
capScope: "device",
|
|
@@ -37773,12 +37857,24 @@ Object.freeze({
|
|
|
37773
37857
|
addonId: null,
|
|
37774
37858
|
access: "view"
|
|
37775
37859
|
},
|
|
37860
|
+
"recording.getAvailabilityBatch": {
|
|
37861
|
+
capName: "recording",
|
|
37862
|
+
capScope: "system",
|
|
37863
|
+
addonId: null,
|
|
37864
|
+
access: "view"
|
|
37865
|
+
},
|
|
37776
37866
|
"recording.getDaysWithRecordings": {
|
|
37777
37867
|
capName: "recording",
|
|
37778
37868
|
capScope: "system",
|
|
37779
37869
|
addonId: null,
|
|
37780
37870
|
access: "view"
|
|
37781
37871
|
},
|
|
37872
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
37873
|
+
capName: "recording",
|
|
37874
|
+
capScope: "system",
|
|
37875
|
+
addonId: null,
|
|
37876
|
+
access: "view"
|
|
37877
|
+
},
|
|
37782
37878
|
"recording.getDeviceConfig": {
|
|
37783
37879
|
capName: "recording",
|
|
37784
37880
|
capScope: "system",
|
|
@@ -40383,6 +40479,11 @@ Object.freeze({
|
|
|
40383
40479
|
form: "single",
|
|
40384
40480
|
optional: false
|
|
40385
40481
|
}],
|
|
40482
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
40483
|
+
name: "deviceIds",
|
|
40484
|
+
form: "array",
|
|
40485
|
+
optional: false
|
|
40486
|
+
}],
|
|
40386
40487
|
"pipelineAnalytics.getEventMedia": [{
|
|
40387
40488
|
name: "deviceId",
|
|
40388
40489
|
form: "single",
|
|
@@ -40798,11 +40899,21 @@ Object.freeze({
|
|
|
40798
40899
|
form: "single",
|
|
40799
40900
|
optional: false
|
|
40800
40901
|
}],
|
|
40902
|
+
"recording.getAvailabilityBatch": [{
|
|
40903
|
+
name: "deviceIds",
|
|
40904
|
+
form: "array",
|
|
40905
|
+
optional: false
|
|
40906
|
+
}],
|
|
40801
40907
|
"recording.getDaysWithRecordings": [{
|
|
40802
40908
|
name: "deviceId",
|
|
40803
40909
|
form: "single",
|
|
40804
40910
|
optional: false
|
|
40805
40911
|
}],
|
|
40912
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40913
|
+
name: "deviceIds",
|
|
40914
|
+
form: "array",
|
|
40915
|
+
optional: false
|
|
40916
|
+
}],
|
|
40806
40917
|
"recording.getDeviceConfig": [{
|
|
40807
40918
|
name: "deviceId",
|
|
40808
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",
|