@camstack/addon-matter-broker 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
|
@@ -19271,6 +19271,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19271
19271
|
deviceId: number(),
|
|
19272
19272
|
events: array(KeyEventSchema).readonly()
|
|
19273
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
|
+
});
|
|
19274
19302
|
object({
|
|
19275
19303
|
trackId: string$2(),
|
|
19276
19304
|
className: string$2(),
|
|
@@ -19581,12 +19609,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19581
19609
|
since: number(),
|
|
19582
19610
|
until: number(),
|
|
19583
19611
|
bucketMs: number().int().positive()
|
|
19584
|
-
}), array(object({
|
|
19585
|
-
|
|
19586
|
-
|
|
19587
|
-
|
|
19588
|
-
|
|
19589
|
-
})).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({
|
|
19590
19618
|
deviceId: number(),
|
|
19591
19619
|
cutoffMs: number()
|
|
19592
19620
|
}), object({
|
|
@@ -28628,6 +28656,39 @@ var RecordingDaysSchema = object({
|
|
|
28628
28656
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28629
28657
|
days: array(number())
|
|
28630
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
|
+
});
|
|
28631
28692
|
var RecordingManifestSchema = object({
|
|
28632
28693
|
deviceId: number(),
|
|
28633
28694
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28862,6 +28923,13 @@ method(object({
|
|
|
28862
28923
|
}), RecordingAvailabilitySchema, {
|
|
28863
28924
|
kind: "query",
|
|
28864
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"
|
|
28865
28933
|
}), method(object({
|
|
28866
28934
|
deviceId: number(),
|
|
28867
28935
|
fromMs: number(),
|
|
@@ -28870,6 +28938,14 @@ method(object({
|
|
|
28870
28938
|
}), RecordingDaysSchema, {
|
|
28871
28939
|
kind: "query",
|
|
28872
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"
|
|
28873
28949
|
}), method(object({
|
|
28874
28950
|
deviceId: number(),
|
|
28875
28951
|
fromMs: number(),
|
|
@@ -35766,6 +35842,12 @@ Object.freeze({
|
|
|
35766
35842
|
addonId: null,
|
|
35767
35843
|
access: "view"
|
|
35768
35844
|
},
|
|
35845
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35846
|
+
capName: "pipeline-analytics",
|
|
35847
|
+
capScope: "device",
|
|
35848
|
+
addonId: null,
|
|
35849
|
+
access: "view"
|
|
35850
|
+
},
|
|
35769
35851
|
"pipelineAnalytics.getEventMedia": {
|
|
35770
35852
|
capName: "pipeline-analytics",
|
|
35771
35853
|
capScope: "device",
|
|
@@ -36888,12 +36970,24 @@ Object.freeze({
|
|
|
36888
36970
|
addonId: null,
|
|
36889
36971
|
access: "view"
|
|
36890
36972
|
},
|
|
36973
|
+
"recording.getAvailabilityBatch": {
|
|
36974
|
+
capName: "recording",
|
|
36975
|
+
capScope: "system",
|
|
36976
|
+
addonId: null,
|
|
36977
|
+
access: "view"
|
|
36978
|
+
},
|
|
36891
36979
|
"recording.getDaysWithRecordings": {
|
|
36892
36980
|
capName: "recording",
|
|
36893
36981
|
capScope: "system",
|
|
36894
36982
|
addonId: null,
|
|
36895
36983
|
access: "view"
|
|
36896
36984
|
},
|
|
36985
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36986
|
+
capName: "recording",
|
|
36987
|
+
capScope: "system",
|
|
36988
|
+
addonId: null,
|
|
36989
|
+
access: "view"
|
|
36990
|
+
},
|
|
36897
36991
|
"recording.getDeviceConfig": {
|
|
36898
36992
|
capName: "recording",
|
|
36899
36993
|
capScope: "system",
|
|
@@ -39498,6 +39592,11 @@ Object.freeze({
|
|
|
39498
39592
|
form: "single",
|
|
39499
39593
|
optional: false
|
|
39500
39594
|
}],
|
|
39595
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39596
|
+
name: "deviceIds",
|
|
39597
|
+
form: "array",
|
|
39598
|
+
optional: false
|
|
39599
|
+
}],
|
|
39501
39600
|
"pipelineAnalytics.getEventMedia": [{
|
|
39502
39601
|
name: "deviceId",
|
|
39503
39602
|
form: "single",
|
|
@@ -39913,11 +40012,21 @@ Object.freeze({
|
|
|
39913
40012
|
form: "single",
|
|
39914
40013
|
optional: false
|
|
39915
40014
|
}],
|
|
40015
|
+
"recording.getAvailabilityBatch": [{
|
|
40016
|
+
name: "deviceIds",
|
|
40017
|
+
form: "array",
|
|
40018
|
+
optional: false
|
|
40019
|
+
}],
|
|
39916
40020
|
"recording.getDaysWithRecordings": [{
|
|
39917
40021
|
name: "deviceId",
|
|
39918
40022
|
form: "single",
|
|
39919
40023
|
optional: false
|
|
39920
40024
|
}],
|
|
40025
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40026
|
+
name: "deviceIds",
|
|
40027
|
+
form: "array",
|
|
40028
|
+
optional: false
|
|
40029
|
+
}],
|
|
39921
40030
|
"recording.getDeviceConfig": [{
|
|
39922
40031
|
name: "deviceId",
|
|
39923
40032
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -19269,6 +19269,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19269
19269
|
deviceId: number(),
|
|
19270
19270
|
events: array(KeyEventSchema).readonly()
|
|
19271
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
|
+
});
|
|
19272
19300
|
object({
|
|
19273
19301
|
trackId: string$2(),
|
|
19274
19302
|
className: string$2(),
|
|
@@ -19579,12 +19607,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19579
19607
|
since: number(),
|
|
19580
19608
|
until: number(),
|
|
19581
19609
|
bucketMs: number().int().positive()
|
|
19582
|
-
}), array(object({
|
|
19583
|
-
|
|
19584
|
-
|
|
19585
|
-
|
|
19586
|
-
|
|
19587
|
-
})).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({
|
|
19588
19616
|
deviceId: number(),
|
|
19589
19617
|
cutoffMs: number()
|
|
19590
19618
|
}), object({
|
|
@@ -28626,6 +28654,39 @@ var RecordingDaysSchema = object({
|
|
|
28626
28654
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28627
28655
|
days: array(number())
|
|
28628
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
|
+
});
|
|
28629
28690
|
var RecordingManifestSchema = object({
|
|
28630
28691
|
deviceId: number(),
|
|
28631
28692
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28860,6 +28921,13 @@ method(object({
|
|
|
28860
28921
|
}), RecordingAvailabilitySchema, {
|
|
28861
28922
|
kind: "query",
|
|
28862
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"
|
|
28863
28931
|
}), method(object({
|
|
28864
28932
|
deviceId: number(),
|
|
28865
28933
|
fromMs: number(),
|
|
@@ -28868,6 +28936,14 @@ method(object({
|
|
|
28868
28936
|
}), RecordingDaysSchema, {
|
|
28869
28937
|
kind: "query",
|
|
28870
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"
|
|
28871
28947
|
}), method(object({
|
|
28872
28948
|
deviceId: number(),
|
|
28873
28949
|
fromMs: number(),
|
|
@@ -35764,6 +35840,12 @@ Object.freeze({
|
|
|
35764
35840
|
addonId: null,
|
|
35765
35841
|
access: "view"
|
|
35766
35842
|
},
|
|
35843
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35844
|
+
capName: "pipeline-analytics",
|
|
35845
|
+
capScope: "device",
|
|
35846
|
+
addonId: null,
|
|
35847
|
+
access: "view"
|
|
35848
|
+
},
|
|
35767
35849
|
"pipelineAnalytics.getEventMedia": {
|
|
35768
35850
|
capName: "pipeline-analytics",
|
|
35769
35851
|
capScope: "device",
|
|
@@ -36886,12 +36968,24 @@ Object.freeze({
|
|
|
36886
36968
|
addonId: null,
|
|
36887
36969
|
access: "view"
|
|
36888
36970
|
},
|
|
36971
|
+
"recording.getAvailabilityBatch": {
|
|
36972
|
+
capName: "recording",
|
|
36973
|
+
capScope: "system",
|
|
36974
|
+
addonId: null,
|
|
36975
|
+
access: "view"
|
|
36976
|
+
},
|
|
36889
36977
|
"recording.getDaysWithRecordings": {
|
|
36890
36978
|
capName: "recording",
|
|
36891
36979
|
capScope: "system",
|
|
36892
36980
|
addonId: null,
|
|
36893
36981
|
access: "view"
|
|
36894
36982
|
},
|
|
36983
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36984
|
+
capName: "recording",
|
|
36985
|
+
capScope: "system",
|
|
36986
|
+
addonId: null,
|
|
36987
|
+
access: "view"
|
|
36988
|
+
},
|
|
36895
36989
|
"recording.getDeviceConfig": {
|
|
36896
36990
|
capName: "recording",
|
|
36897
36991
|
capScope: "system",
|
|
@@ -39496,6 +39590,11 @@ Object.freeze({
|
|
|
39496
39590
|
form: "single",
|
|
39497
39591
|
optional: false
|
|
39498
39592
|
}],
|
|
39593
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39594
|
+
name: "deviceIds",
|
|
39595
|
+
form: "array",
|
|
39596
|
+
optional: false
|
|
39597
|
+
}],
|
|
39499
39598
|
"pipelineAnalytics.getEventMedia": [{
|
|
39500
39599
|
name: "deviceId",
|
|
39501
39600
|
form: "single",
|
|
@@ -39911,11 +40010,21 @@ Object.freeze({
|
|
|
39911
40010
|
form: "single",
|
|
39912
40011
|
optional: false
|
|
39913
40012
|
}],
|
|
40013
|
+
"recording.getAvailabilityBatch": [{
|
|
40014
|
+
name: "deviceIds",
|
|
40015
|
+
form: "array",
|
|
40016
|
+
optional: false
|
|
40017
|
+
}],
|
|
39914
40018
|
"recording.getDaysWithRecordings": [{
|
|
39915
40019
|
name: "deviceId",
|
|
39916
40020
|
form: "single",
|
|
39917
40021
|
optional: false
|
|
39918
40022
|
}],
|
|
40023
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40024
|
+
name: "deviceIds",
|
|
40025
|
+
form: "array",
|
|
40026
|
+
optional: false
|
|
40027
|
+
}],
|
|
39919
40028
|
"recording.getDeviceConfig": [{
|
|
39920
40029
|
name: "deviceId",
|
|
39921
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",
|