@camstack/addon-provider-wyze 0.2.54 → 0.2.56
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
|
@@ -15924,6 +15924,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
15924
15924
|
"device-offline",
|
|
15925
15925
|
"device-disabled",
|
|
15926
15926
|
"device-enabled",
|
|
15927
|
+
"device-battery-low",
|
|
15928
|
+
"device-battery-normal",
|
|
15927
15929
|
"stream-online",
|
|
15928
15930
|
"stream-offline",
|
|
15929
15931
|
"node-online",
|
|
@@ -19238,6 +19240,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19238
19240
|
deviceId: number(),
|
|
19239
19241
|
events: array(KeyEventSchema).readonly()
|
|
19240
19242
|
});
|
|
19243
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19244
|
+
var EventDensityBucketSchema = object({
|
|
19245
|
+
bucketStart: number(),
|
|
19246
|
+
motion: number().int(),
|
|
19247
|
+
object: number().int(),
|
|
19248
|
+
audio: number().int()
|
|
19249
|
+
});
|
|
19250
|
+
/**
|
|
19251
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19252
|
+
*
|
|
19253
|
+
* TWO facts, and the timeline draws them differently:
|
|
19254
|
+
*
|
|
19255
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19256
|
+
* claim: read, and nothing happened in the window.
|
|
19257
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19258
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19259
|
+
* not quiet.
|
|
19260
|
+
*
|
|
19261
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19262
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19263
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19264
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19265
|
+
*/
|
|
19266
|
+
var EventDensityForDeviceSchema = object({
|
|
19267
|
+
deviceId: number(),
|
|
19268
|
+
read: _enum(["read", "unreadable"]),
|
|
19269
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19270
|
+
});
|
|
19241
19271
|
object({
|
|
19242
19272
|
trackId: string(),
|
|
19243
19273
|
className: string(),
|
|
@@ -19548,12 +19578,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19548
19578
|
since: number(),
|
|
19549
19579
|
until: number(),
|
|
19550
19580
|
bucketMs: number().int().positive()
|
|
19551
|
-
}), array(object({
|
|
19552
|
-
|
|
19553
|
-
|
|
19554
|
-
|
|
19555
|
-
|
|
19556
|
-
})).readonly()), method(object({
|
|
19581
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19582
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19583
|
+
since: number(),
|
|
19584
|
+
until: number(),
|
|
19585
|
+
bucketMs: number().int().positive()
|
|
19586
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19557
19587
|
deviceId: number(),
|
|
19558
19588
|
cutoffMs: number()
|
|
19559
19589
|
}), object({
|
|
@@ -28690,6 +28720,39 @@ var RecordingDaysSchema = object({
|
|
|
28690
28720
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28691
28721
|
days: array(number())
|
|
28692
28722
|
});
|
|
28723
|
+
/**
|
|
28724
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
28725
|
+
*
|
|
28726
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
28727
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
28728
|
+
* method never had to say:
|
|
28729
|
+
*
|
|
28730
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
28731
|
+
* no footage in the window", which is a real claim.
|
|
28732
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
28733
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
28734
|
+
* that emptiness means NOTHING.
|
|
28735
|
+
*
|
|
28736
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
28737
|
+
* footage when the truth is that nobody looked.
|
|
28738
|
+
*/
|
|
28739
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
28740
|
+
deviceId: number(),
|
|
28741
|
+
read: _enum(["read", "unreadable"]),
|
|
28742
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
28743
|
+
});
|
|
28744
|
+
/**
|
|
28745
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
28746
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
28747
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
28748
|
+
* the date-picker's day dots must not spell them the same.
|
|
28749
|
+
*/
|
|
28750
|
+
var RecordingDaysForDeviceSchema = object({
|
|
28751
|
+
deviceId: number(),
|
|
28752
|
+
read: _enum(["read", "unreadable"]),
|
|
28753
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28754
|
+
days: array(number()).readonly()
|
|
28755
|
+
});
|
|
28693
28756
|
var RecordingManifestSchema = object({
|
|
28694
28757
|
deviceId: number(),
|
|
28695
28758
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28924,6 +28987,13 @@ method(object({
|
|
|
28924
28987
|
}), RecordingAvailabilitySchema, {
|
|
28925
28988
|
kind: "query",
|
|
28926
28989
|
auth: "protected"
|
|
28990
|
+
}), method(object({
|
|
28991
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28992
|
+
fromMs: number(),
|
|
28993
|
+
toMs: number()
|
|
28994
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
28995
|
+
kind: "query",
|
|
28996
|
+
auth: "protected"
|
|
28927
28997
|
}), method(object({
|
|
28928
28998
|
deviceId: number(),
|
|
28929
28999
|
fromMs: number(),
|
|
@@ -28932,6 +29002,14 @@ method(object({
|
|
|
28932
29002
|
}), RecordingDaysSchema, {
|
|
28933
29003
|
kind: "query",
|
|
28934
29004
|
auth: "protected"
|
|
29005
|
+
}), method(object({
|
|
29006
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29007
|
+
fromMs: number(),
|
|
29008
|
+
toMs: number(),
|
|
29009
|
+
tzOffsetMinutes: number()
|
|
29010
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
29011
|
+
kind: "query",
|
|
29012
|
+
auth: "protected"
|
|
28935
29013
|
}), method(object({
|
|
28936
29014
|
deviceId: number(),
|
|
28937
29015
|
fromMs: number(),
|
|
@@ -35828,6 +35906,12 @@ Object.freeze({
|
|
|
35828
35906
|
addonId: null,
|
|
35829
35907
|
access: "view"
|
|
35830
35908
|
},
|
|
35909
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35910
|
+
capName: "pipeline-analytics",
|
|
35911
|
+
capScope: "device",
|
|
35912
|
+
addonId: null,
|
|
35913
|
+
access: "view"
|
|
35914
|
+
},
|
|
35831
35915
|
"pipelineAnalytics.getEventMedia": {
|
|
35832
35916
|
capName: "pipeline-analytics",
|
|
35833
35917
|
capScope: "device",
|
|
@@ -36950,12 +37034,24 @@ Object.freeze({
|
|
|
36950
37034
|
addonId: null,
|
|
36951
37035
|
access: "view"
|
|
36952
37036
|
},
|
|
37037
|
+
"recording.getAvailabilityBatch": {
|
|
37038
|
+
capName: "recording",
|
|
37039
|
+
capScope: "system",
|
|
37040
|
+
addonId: null,
|
|
37041
|
+
access: "view"
|
|
37042
|
+
},
|
|
36953
37043
|
"recording.getDaysWithRecordings": {
|
|
36954
37044
|
capName: "recording",
|
|
36955
37045
|
capScope: "system",
|
|
36956
37046
|
addonId: null,
|
|
36957
37047
|
access: "view"
|
|
36958
37048
|
},
|
|
37049
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
37050
|
+
capName: "recording",
|
|
37051
|
+
capScope: "system",
|
|
37052
|
+
addonId: null,
|
|
37053
|
+
access: "view"
|
|
37054
|
+
},
|
|
36959
37055
|
"recording.getDeviceConfig": {
|
|
36960
37056
|
capName: "recording",
|
|
36961
37057
|
capScope: "system",
|
|
@@ -39560,6 +39656,11 @@ Object.freeze({
|
|
|
39560
39656
|
form: "single",
|
|
39561
39657
|
optional: false
|
|
39562
39658
|
}],
|
|
39659
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39660
|
+
name: "deviceIds",
|
|
39661
|
+
form: "array",
|
|
39662
|
+
optional: false
|
|
39663
|
+
}],
|
|
39563
39664
|
"pipelineAnalytics.getEventMedia": [{
|
|
39564
39665
|
name: "deviceId",
|
|
39565
39666
|
form: "single",
|
|
@@ -39975,11 +40076,21 @@ Object.freeze({
|
|
|
39975
40076
|
form: "single",
|
|
39976
40077
|
optional: false
|
|
39977
40078
|
}],
|
|
40079
|
+
"recording.getAvailabilityBatch": [{
|
|
40080
|
+
name: "deviceIds",
|
|
40081
|
+
form: "array",
|
|
40082
|
+
optional: false
|
|
40083
|
+
}],
|
|
39978
40084
|
"recording.getDaysWithRecordings": [{
|
|
39979
40085
|
name: "deviceId",
|
|
39980
40086
|
form: "single",
|
|
39981
40087
|
optional: false
|
|
39982
40088
|
}],
|
|
40089
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40090
|
+
name: "deviceIds",
|
|
40091
|
+
form: "array",
|
|
40092
|
+
optional: false
|
|
40093
|
+
}],
|
|
39983
40094
|
"recording.getDeviceConfig": [{
|
|
39984
40095
|
name: "deviceId",
|
|
39985
40096
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -15903,6 +15903,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
15903
15903
|
"device-offline",
|
|
15904
15904
|
"device-disabled",
|
|
15905
15905
|
"device-enabled",
|
|
15906
|
+
"device-battery-low",
|
|
15907
|
+
"device-battery-normal",
|
|
15906
15908
|
"stream-online",
|
|
15907
15909
|
"stream-offline",
|
|
15908
15910
|
"node-online",
|
|
@@ -19217,6 +19219,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19217
19219
|
deviceId: number(),
|
|
19218
19220
|
events: array(KeyEventSchema).readonly()
|
|
19219
19221
|
});
|
|
19222
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19223
|
+
var EventDensityBucketSchema = object({
|
|
19224
|
+
bucketStart: number(),
|
|
19225
|
+
motion: number().int(),
|
|
19226
|
+
object: number().int(),
|
|
19227
|
+
audio: number().int()
|
|
19228
|
+
});
|
|
19229
|
+
/**
|
|
19230
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19231
|
+
*
|
|
19232
|
+
* TWO facts, and the timeline draws them differently:
|
|
19233
|
+
*
|
|
19234
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19235
|
+
* claim: read, and nothing happened in the window.
|
|
19236
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19237
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19238
|
+
* not quiet.
|
|
19239
|
+
*
|
|
19240
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19241
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19242
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19243
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19244
|
+
*/
|
|
19245
|
+
var EventDensityForDeviceSchema = object({
|
|
19246
|
+
deviceId: number(),
|
|
19247
|
+
read: _enum(["read", "unreadable"]),
|
|
19248
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19249
|
+
});
|
|
19220
19250
|
object({
|
|
19221
19251
|
trackId: string(),
|
|
19222
19252
|
className: string(),
|
|
@@ -19527,12 +19557,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19527
19557
|
since: number(),
|
|
19528
19558
|
until: number(),
|
|
19529
19559
|
bucketMs: number().int().positive()
|
|
19530
|
-
}), array(object({
|
|
19531
|
-
|
|
19532
|
-
|
|
19533
|
-
|
|
19534
|
-
|
|
19535
|
-
})).readonly()), method(object({
|
|
19560
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19561
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19562
|
+
since: number(),
|
|
19563
|
+
until: number(),
|
|
19564
|
+
bucketMs: number().int().positive()
|
|
19565
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19536
19566
|
deviceId: number(),
|
|
19537
19567
|
cutoffMs: number()
|
|
19538
19568
|
}), object({
|
|
@@ -28669,6 +28699,39 @@ var RecordingDaysSchema = object({
|
|
|
28669
28699
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28670
28700
|
days: array(number())
|
|
28671
28701
|
});
|
|
28702
|
+
/**
|
|
28703
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
28704
|
+
*
|
|
28705
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
28706
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
28707
|
+
* method never had to say:
|
|
28708
|
+
*
|
|
28709
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
28710
|
+
* no footage in the window", which is a real claim.
|
|
28711
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
28712
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
28713
|
+
* that emptiness means NOTHING.
|
|
28714
|
+
*
|
|
28715
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
28716
|
+
* footage when the truth is that nobody looked.
|
|
28717
|
+
*/
|
|
28718
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
28719
|
+
deviceId: number(),
|
|
28720
|
+
read: _enum(["read", "unreadable"]),
|
|
28721
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
28722
|
+
});
|
|
28723
|
+
/**
|
|
28724
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
28725
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
28726
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
28727
|
+
* the date-picker's day dots must not spell them the same.
|
|
28728
|
+
*/
|
|
28729
|
+
var RecordingDaysForDeviceSchema = object({
|
|
28730
|
+
deviceId: number(),
|
|
28731
|
+
read: _enum(["read", "unreadable"]),
|
|
28732
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28733
|
+
days: array(number()).readonly()
|
|
28734
|
+
});
|
|
28672
28735
|
var RecordingManifestSchema = object({
|
|
28673
28736
|
deviceId: number(),
|
|
28674
28737
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28903,6 +28966,13 @@ method(object({
|
|
|
28903
28966
|
}), RecordingAvailabilitySchema, {
|
|
28904
28967
|
kind: "query",
|
|
28905
28968
|
auth: "protected"
|
|
28969
|
+
}), method(object({
|
|
28970
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28971
|
+
fromMs: number(),
|
|
28972
|
+
toMs: number()
|
|
28973
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
28974
|
+
kind: "query",
|
|
28975
|
+
auth: "protected"
|
|
28906
28976
|
}), method(object({
|
|
28907
28977
|
deviceId: number(),
|
|
28908
28978
|
fromMs: number(),
|
|
@@ -28911,6 +28981,14 @@ method(object({
|
|
|
28911
28981
|
}), RecordingDaysSchema, {
|
|
28912
28982
|
kind: "query",
|
|
28913
28983
|
auth: "protected"
|
|
28984
|
+
}), method(object({
|
|
28985
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28986
|
+
fromMs: number(),
|
|
28987
|
+
toMs: number(),
|
|
28988
|
+
tzOffsetMinutes: number()
|
|
28989
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
28990
|
+
kind: "query",
|
|
28991
|
+
auth: "protected"
|
|
28914
28992
|
}), method(object({
|
|
28915
28993
|
deviceId: number(),
|
|
28916
28994
|
fromMs: number(),
|
|
@@ -35807,6 +35885,12 @@ Object.freeze({
|
|
|
35807
35885
|
addonId: null,
|
|
35808
35886
|
access: "view"
|
|
35809
35887
|
},
|
|
35888
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35889
|
+
capName: "pipeline-analytics",
|
|
35890
|
+
capScope: "device",
|
|
35891
|
+
addonId: null,
|
|
35892
|
+
access: "view"
|
|
35893
|
+
},
|
|
35810
35894
|
"pipelineAnalytics.getEventMedia": {
|
|
35811
35895
|
capName: "pipeline-analytics",
|
|
35812
35896
|
capScope: "device",
|
|
@@ -36929,12 +37013,24 @@ Object.freeze({
|
|
|
36929
37013
|
addonId: null,
|
|
36930
37014
|
access: "view"
|
|
36931
37015
|
},
|
|
37016
|
+
"recording.getAvailabilityBatch": {
|
|
37017
|
+
capName: "recording",
|
|
37018
|
+
capScope: "system",
|
|
37019
|
+
addonId: null,
|
|
37020
|
+
access: "view"
|
|
37021
|
+
},
|
|
36932
37022
|
"recording.getDaysWithRecordings": {
|
|
36933
37023
|
capName: "recording",
|
|
36934
37024
|
capScope: "system",
|
|
36935
37025
|
addonId: null,
|
|
36936
37026
|
access: "view"
|
|
36937
37027
|
},
|
|
37028
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
37029
|
+
capName: "recording",
|
|
37030
|
+
capScope: "system",
|
|
37031
|
+
addonId: null,
|
|
37032
|
+
access: "view"
|
|
37033
|
+
},
|
|
36938
37034
|
"recording.getDeviceConfig": {
|
|
36939
37035
|
capName: "recording",
|
|
36940
37036
|
capScope: "system",
|
|
@@ -39539,6 +39635,11 @@ Object.freeze({
|
|
|
39539
39635
|
form: "single",
|
|
39540
39636
|
optional: false
|
|
39541
39637
|
}],
|
|
39638
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39639
|
+
name: "deviceIds",
|
|
39640
|
+
form: "array",
|
|
39641
|
+
optional: false
|
|
39642
|
+
}],
|
|
39542
39643
|
"pipelineAnalytics.getEventMedia": [{
|
|
39543
39644
|
name: "deviceId",
|
|
39544
39645
|
form: "single",
|
|
@@ -39954,11 +40055,21 @@ Object.freeze({
|
|
|
39954
40055
|
form: "single",
|
|
39955
40056
|
optional: false
|
|
39956
40057
|
}],
|
|
40058
|
+
"recording.getAvailabilityBatch": [{
|
|
40059
|
+
name: "deviceIds",
|
|
40060
|
+
form: "array",
|
|
40061
|
+
optional: false
|
|
40062
|
+
}],
|
|
39957
40063
|
"recording.getDaysWithRecordings": [{
|
|
39958
40064
|
name: "deviceId",
|
|
39959
40065
|
form: "single",
|
|
39960
40066
|
optional: false
|
|
39961
40067
|
}],
|
|
40068
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40069
|
+
name: "deviceIds",
|
|
40070
|
+
form: "array",
|
|
40071
|
+
optional: false
|
|
40072
|
+
}],
|
|
39962
40073
|
"recording.getDeviceConfig": [{
|
|
39963
40074
|
name: "deviceId",
|
|
39964
40075
|
form: "single",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-wyze",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.56",
|
|
4
4
|
"description": "Wyze camera device-provider addon for CamStack — wraps the @apocaliss92/wyze-bridge-js P2P/DTLS client, feeding the stream-broker via the pull-rfc4571 lazy-publish path (a structural twin of addon-provider-reolink)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|