@camstack/addon-matter-broker 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
|
@@ -15955,6 +15955,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
15955
15955
|
"device-offline",
|
|
15956
15956
|
"device-disabled",
|
|
15957
15957
|
"device-enabled",
|
|
15958
|
+
"device-battery-low",
|
|
15959
|
+
"device-battery-normal",
|
|
15958
15960
|
"stream-online",
|
|
15959
15961
|
"stream-offline",
|
|
15960
15962
|
"node-online",
|
|
@@ -19269,6 +19271,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19269
19271
|
deviceId: number(),
|
|
19270
19272
|
events: array(KeyEventSchema).readonly()
|
|
19271
19273
|
});
|
|
19274
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19275
|
+
var EventDensityBucketSchema = object({
|
|
19276
|
+
bucketStart: number(),
|
|
19277
|
+
motion: number().int(),
|
|
19278
|
+
object: number().int(),
|
|
19279
|
+
audio: number().int()
|
|
19280
|
+
});
|
|
19281
|
+
/**
|
|
19282
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19283
|
+
*
|
|
19284
|
+
* TWO facts, and the timeline draws them differently:
|
|
19285
|
+
*
|
|
19286
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19287
|
+
* claim: read, and nothing happened in the window.
|
|
19288
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19289
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19290
|
+
* not quiet.
|
|
19291
|
+
*
|
|
19292
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19293
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19294
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19295
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19296
|
+
*/
|
|
19297
|
+
var EventDensityForDeviceSchema = object({
|
|
19298
|
+
deviceId: number(),
|
|
19299
|
+
read: _enum(["read", "unreadable"]),
|
|
19300
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19301
|
+
});
|
|
19272
19302
|
object({
|
|
19273
19303
|
trackId: string$2(),
|
|
19274
19304
|
className: string$2(),
|
|
@@ -19579,12 +19609,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19579
19609
|
since: number(),
|
|
19580
19610
|
until: number(),
|
|
19581
19611
|
bucketMs: number().int().positive()
|
|
19582
|
-
}), array(object({
|
|
19583
|
-
|
|
19584
|
-
|
|
19585
|
-
|
|
19586
|
-
|
|
19587
|
-
})).readonly()), method(object({
|
|
19612
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19613
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19614
|
+
since: number(),
|
|
19615
|
+
until: number(),
|
|
19616
|
+
bucketMs: number().int().positive()
|
|
19617
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19588
19618
|
deviceId: number(),
|
|
19589
19619
|
cutoffMs: number()
|
|
19590
19620
|
}), object({
|
|
@@ -28626,6 +28656,39 @@ var RecordingDaysSchema = object({
|
|
|
28626
28656
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28627
28657
|
days: array(number())
|
|
28628
28658
|
});
|
|
28659
|
+
/**
|
|
28660
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
28661
|
+
*
|
|
28662
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
28663
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
28664
|
+
* method never had to say:
|
|
28665
|
+
*
|
|
28666
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
28667
|
+
* no footage in the window", which is a real claim.
|
|
28668
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
28669
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
28670
|
+
* that emptiness means NOTHING.
|
|
28671
|
+
*
|
|
28672
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
28673
|
+
* footage when the truth is that nobody looked.
|
|
28674
|
+
*/
|
|
28675
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
28676
|
+
deviceId: number(),
|
|
28677
|
+
read: _enum(["read", "unreadable"]),
|
|
28678
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
28679
|
+
});
|
|
28680
|
+
/**
|
|
28681
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
28682
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
28683
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
28684
|
+
* the date-picker's day dots must not spell them the same.
|
|
28685
|
+
*/
|
|
28686
|
+
var RecordingDaysForDeviceSchema = object({
|
|
28687
|
+
deviceId: number(),
|
|
28688
|
+
read: _enum(["read", "unreadable"]),
|
|
28689
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28690
|
+
days: array(number()).readonly()
|
|
28691
|
+
});
|
|
28629
28692
|
var RecordingManifestSchema = object({
|
|
28630
28693
|
deviceId: number(),
|
|
28631
28694
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28860,6 +28923,13 @@ method(object({
|
|
|
28860
28923
|
}), RecordingAvailabilitySchema, {
|
|
28861
28924
|
kind: "query",
|
|
28862
28925
|
auth: "protected"
|
|
28926
|
+
}), method(object({
|
|
28927
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28928
|
+
fromMs: number(),
|
|
28929
|
+
toMs: number()
|
|
28930
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
28931
|
+
kind: "query",
|
|
28932
|
+
auth: "protected"
|
|
28863
28933
|
}), method(object({
|
|
28864
28934
|
deviceId: number(),
|
|
28865
28935
|
fromMs: number(),
|
|
@@ -28868,6 +28938,14 @@ method(object({
|
|
|
28868
28938
|
}), RecordingDaysSchema, {
|
|
28869
28939
|
kind: "query",
|
|
28870
28940
|
auth: "protected"
|
|
28941
|
+
}), method(object({
|
|
28942
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28943
|
+
fromMs: number(),
|
|
28944
|
+
toMs: number(),
|
|
28945
|
+
tzOffsetMinutes: number()
|
|
28946
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
28947
|
+
kind: "query",
|
|
28948
|
+
auth: "protected"
|
|
28871
28949
|
}), method(object({
|
|
28872
28950
|
deviceId: number(),
|
|
28873
28951
|
fromMs: number(),
|
|
@@ -35764,6 +35842,12 @@ Object.freeze({
|
|
|
35764
35842
|
addonId: null,
|
|
35765
35843
|
access: "view"
|
|
35766
35844
|
},
|
|
35845
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35846
|
+
capName: "pipeline-analytics",
|
|
35847
|
+
capScope: "device",
|
|
35848
|
+
addonId: null,
|
|
35849
|
+
access: "view"
|
|
35850
|
+
},
|
|
35767
35851
|
"pipelineAnalytics.getEventMedia": {
|
|
35768
35852
|
capName: "pipeline-analytics",
|
|
35769
35853
|
capScope: "device",
|
|
@@ -36886,12 +36970,24 @@ Object.freeze({
|
|
|
36886
36970
|
addonId: null,
|
|
36887
36971
|
access: "view"
|
|
36888
36972
|
},
|
|
36973
|
+
"recording.getAvailabilityBatch": {
|
|
36974
|
+
capName: "recording",
|
|
36975
|
+
capScope: "system",
|
|
36976
|
+
addonId: null,
|
|
36977
|
+
access: "view"
|
|
36978
|
+
},
|
|
36889
36979
|
"recording.getDaysWithRecordings": {
|
|
36890
36980
|
capName: "recording",
|
|
36891
36981
|
capScope: "system",
|
|
36892
36982
|
addonId: null,
|
|
36893
36983
|
access: "view"
|
|
36894
36984
|
},
|
|
36985
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36986
|
+
capName: "recording",
|
|
36987
|
+
capScope: "system",
|
|
36988
|
+
addonId: null,
|
|
36989
|
+
access: "view"
|
|
36990
|
+
},
|
|
36895
36991
|
"recording.getDeviceConfig": {
|
|
36896
36992
|
capName: "recording",
|
|
36897
36993
|
capScope: "system",
|
|
@@ -39496,6 +39592,11 @@ Object.freeze({
|
|
|
39496
39592
|
form: "single",
|
|
39497
39593
|
optional: false
|
|
39498
39594
|
}],
|
|
39595
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39596
|
+
name: "deviceIds",
|
|
39597
|
+
form: "array",
|
|
39598
|
+
optional: false
|
|
39599
|
+
}],
|
|
39499
39600
|
"pipelineAnalytics.getEventMedia": [{
|
|
39500
39601
|
name: "deviceId",
|
|
39501
39602
|
form: "single",
|
|
@@ -39911,11 +40012,21 @@ Object.freeze({
|
|
|
39911
40012
|
form: "single",
|
|
39912
40013
|
optional: false
|
|
39913
40014
|
}],
|
|
40015
|
+
"recording.getAvailabilityBatch": [{
|
|
40016
|
+
name: "deviceIds",
|
|
40017
|
+
form: "array",
|
|
40018
|
+
optional: false
|
|
40019
|
+
}],
|
|
39914
40020
|
"recording.getDaysWithRecordings": [{
|
|
39915
40021
|
name: "deviceId",
|
|
39916
40022
|
form: "single",
|
|
39917
40023
|
optional: false
|
|
39918
40024
|
}],
|
|
40025
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40026
|
+
name: "deviceIds",
|
|
40027
|
+
form: "array",
|
|
40028
|
+
optional: false
|
|
40029
|
+
}],
|
|
39919
40030
|
"recording.getDeviceConfig": [{
|
|
39920
40031
|
name: "deviceId",
|
|
39921
40032
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -15953,6 +15953,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
15953
15953
|
"device-offline",
|
|
15954
15954
|
"device-disabled",
|
|
15955
15955
|
"device-enabled",
|
|
15956
|
+
"device-battery-low",
|
|
15957
|
+
"device-battery-normal",
|
|
15956
15958
|
"stream-online",
|
|
15957
15959
|
"stream-offline",
|
|
15958
15960
|
"node-online",
|
|
@@ -19267,6 +19269,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19267
19269
|
deviceId: number(),
|
|
19268
19270
|
events: array(KeyEventSchema).readonly()
|
|
19269
19271
|
});
|
|
19272
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19273
|
+
var EventDensityBucketSchema = object({
|
|
19274
|
+
bucketStart: number(),
|
|
19275
|
+
motion: number().int(),
|
|
19276
|
+
object: number().int(),
|
|
19277
|
+
audio: number().int()
|
|
19278
|
+
});
|
|
19279
|
+
/**
|
|
19280
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19281
|
+
*
|
|
19282
|
+
* TWO facts, and the timeline draws them differently:
|
|
19283
|
+
*
|
|
19284
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19285
|
+
* claim: read, and nothing happened in the window.
|
|
19286
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19287
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19288
|
+
* not quiet.
|
|
19289
|
+
*
|
|
19290
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19291
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19292
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19293
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19294
|
+
*/
|
|
19295
|
+
var EventDensityForDeviceSchema = object({
|
|
19296
|
+
deviceId: number(),
|
|
19297
|
+
read: _enum(["read", "unreadable"]),
|
|
19298
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19299
|
+
});
|
|
19270
19300
|
object({
|
|
19271
19301
|
trackId: string$2(),
|
|
19272
19302
|
className: string$2(),
|
|
@@ -19577,12 +19607,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19577
19607
|
since: number(),
|
|
19578
19608
|
until: number(),
|
|
19579
19609
|
bucketMs: number().int().positive()
|
|
19580
|
-
}), array(object({
|
|
19581
|
-
|
|
19582
|
-
|
|
19583
|
-
|
|
19584
|
-
|
|
19585
|
-
})).readonly()), method(object({
|
|
19610
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19611
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19612
|
+
since: number(),
|
|
19613
|
+
until: number(),
|
|
19614
|
+
bucketMs: number().int().positive()
|
|
19615
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19586
19616
|
deviceId: number(),
|
|
19587
19617
|
cutoffMs: number()
|
|
19588
19618
|
}), object({
|
|
@@ -28624,6 +28654,39 @@ var RecordingDaysSchema = object({
|
|
|
28624
28654
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28625
28655
|
days: array(number())
|
|
28626
28656
|
});
|
|
28657
|
+
/**
|
|
28658
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
28659
|
+
*
|
|
28660
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
28661
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
28662
|
+
* method never had to say:
|
|
28663
|
+
*
|
|
28664
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
28665
|
+
* no footage in the window", which is a real claim.
|
|
28666
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
28667
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
28668
|
+
* that emptiness means NOTHING.
|
|
28669
|
+
*
|
|
28670
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
28671
|
+
* footage when the truth is that nobody looked.
|
|
28672
|
+
*/
|
|
28673
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
28674
|
+
deviceId: number(),
|
|
28675
|
+
read: _enum(["read", "unreadable"]),
|
|
28676
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
28677
|
+
});
|
|
28678
|
+
/**
|
|
28679
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
28680
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
28681
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
28682
|
+
* the date-picker's day dots must not spell them the same.
|
|
28683
|
+
*/
|
|
28684
|
+
var RecordingDaysForDeviceSchema = object({
|
|
28685
|
+
deviceId: number(),
|
|
28686
|
+
read: _enum(["read", "unreadable"]),
|
|
28687
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28688
|
+
days: array(number()).readonly()
|
|
28689
|
+
});
|
|
28627
28690
|
var RecordingManifestSchema = object({
|
|
28628
28691
|
deviceId: number(),
|
|
28629
28692
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28858,6 +28921,13 @@ method(object({
|
|
|
28858
28921
|
}), RecordingAvailabilitySchema, {
|
|
28859
28922
|
kind: "query",
|
|
28860
28923
|
auth: "protected"
|
|
28924
|
+
}), method(object({
|
|
28925
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28926
|
+
fromMs: number(),
|
|
28927
|
+
toMs: number()
|
|
28928
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
28929
|
+
kind: "query",
|
|
28930
|
+
auth: "protected"
|
|
28861
28931
|
}), method(object({
|
|
28862
28932
|
deviceId: number(),
|
|
28863
28933
|
fromMs: number(),
|
|
@@ -28866,6 +28936,14 @@ method(object({
|
|
|
28866
28936
|
}), RecordingDaysSchema, {
|
|
28867
28937
|
kind: "query",
|
|
28868
28938
|
auth: "protected"
|
|
28939
|
+
}), method(object({
|
|
28940
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28941
|
+
fromMs: number(),
|
|
28942
|
+
toMs: number(),
|
|
28943
|
+
tzOffsetMinutes: number()
|
|
28944
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
28945
|
+
kind: "query",
|
|
28946
|
+
auth: "protected"
|
|
28869
28947
|
}), method(object({
|
|
28870
28948
|
deviceId: number(),
|
|
28871
28949
|
fromMs: number(),
|
|
@@ -35762,6 +35840,12 @@ Object.freeze({
|
|
|
35762
35840
|
addonId: null,
|
|
35763
35841
|
access: "view"
|
|
35764
35842
|
},
|
|
35843
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35844
|
+
capName: "pipeline-analytics",
|
|
35845
|
+
capScope: "device",
|
|
35846
|
+
addonId: null,
|
|
35847
|
+
access: "view"
|
|
35848
|
+
},
|
|
35765
35849
|
"pipelineAnalytics.getEventMedia": {
|
|
35766
35850
|
capName: "pipeline-analytics",
|
|
35767
35851
|
capScope: "device",
|
|
@@ -36884,12 +36968,24 @@ Object.freeze({
|
|
|
36884
36968
|
addonId: null,
|
|
36885
36969
|
access: "view"
|
|
36886
36970
|
},
|
|
36971
|
+
"recording.getAvailabilityBatch": {
|
|
36972
|
+
capName: "recording",
|
|
36973
|
+
capScope: "system",
|
|
36974
|
+
addonId: null,
|
|
36975
|
+
access: "view"
|
|
36976
|
+
},
|
|
36887
36977
|
"recording.getDaysWithRecordings": {
|
|
36888
36978
|
capName: "recording",
|
|
36889
36979
|
capScope: "system",
|
|
36890
36980
|
addonId: null,
|
|
36891
36981
|
access: "view"
|
|
36892
36982
|
},
|
|
36983
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36984
|
+
capName: "recording",
|
|
36985
|
+
capScope: "system",
|
|
36986
|
+
addonId: null,
|
|
36987
|
+
access: "view"
|
|
36988
|
+
},
|
|
36893
36989
|
"recording.getDeviceConfig": {
|
|
36894
36990
|
capName: "recording",
|
|
36895
36991
|
capScope: "system",
|
|
@@ -39494,6 +39590,11 @@ Object.freeze({
|
|
|
39494
39590
|
form: "single",
|
|
39495
39591
|
optional: false
|
|
39496
39592
|
}],
|
|
39593
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39594
|
+
name: "deviceIds",
|
|
39595
|
+
form: "array",
|
|
39596
|
+
optional: false
|
|
39597
|
+
}],
|
|
39497
39598
|
"pipelineAnalytics.getEventMedia": [{
|
|
39498
39599
|
name: "deviceId",
|
|
39499
39600
|
form: "single",
|
|
@@ -39909,11 +40010,21 @@ Object.freeze({
|
|
|
39909
40010
|
form: "single",
|
|
39910
40011
|
optional: false
|
|
39911
40012
|
}],
|
|
40013
|
+
"recording.getAvailabilityBatch": [{
|
|
40014
|
+
name: "deviceIds",
|
|
40015
|
+
form: "array",
|
|
40016
|
+
optional: false
|
|
40017
|
+
}],
|
|
39912
40018
|
"recording.getDaysWithRecordings": [{
|
|
39913
40019
|
name: "deviceId",
|
|
39914
40020
|
form: "single",
|
|
39915
40021
|
optional: false
|
|
39916
40022
|
}],
|
|
40023
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40024
|
+
name: "deviceIds",
|
|
40025
|
+
form: "array",
|
|
40026
|
+
optional: false
|
|
40027
|
+
}],
|
|
39917
40028
|
"recording.getDeviceConfig": [{
|
|
39918
40029
|
name: "deviceId",
|
|
39919
40030
|
form: "single",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-matter-broker",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.51",
|
|
4
4
|
"description": "Matter broker addon for CamStack — owns a Matter fabric (commissioning + the long-lived controller) via the matter.js controller and brokers commissioned Matter nodes into CamStack",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|