@camstack/addon-mqtt-broker 1.2.50 → 1.2.52
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/mqtt-broker.addon.js +117 -6
- package/dist/mqtt-broker.addon.mjs +117 -6
- package/package.json +1 -1
|
@@ -15670,6 +15670,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
15670
15670
|
"device-offline",
|
|
15671
15671
|
"device-disabled",
|
|
15672
15672
|
"device-enabled",
|
|
15673
|
+
"device-battery-low",
|
|
15674
|
+
"device-battery-normal",
|
|
15673
15675
|
"stream-online",
|
|
15674
15676
|
"stream-offline",
|
|
15675
15677
|
"node-online",
|
|
@@ -18944,6 +18946,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
18944
18946
|
deviceId: number(),
|
|
18945
18947
|
events: array(KeyEventSchema).readonly()
|
|
18946
18948
|
});
|
|
18949
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
18950
|
+
var EventDensityBucketSchema = object({
|
|
18951
|
+
bucketStart: number(),
|
|
18952
|
+
motion: number().int(),
|
|
18953
|
+
object: number().int(),
|
|
18954
|
+
audio: number().int()
|
|
18955
|
+
});
|
|
18956
|
+
/**
|
|
18957
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
18958
|
+
*
|
|
18959
|
+
* TWO facts, and the timeline draws them differently:
|
|
18960
|
+
*
|
|
18961
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
18962
|
+
* claim: read, and nothing happened in the window.
|
|
18963
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
18964
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
18965
|
+
* not quiet.
|
|
18966
|
+
*
|
|
18967
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
18968
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
18969
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
18970
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
18971
|
+
*/
|
|
18972
|
+
var EventDensityForDeviceSchema = object({
|
|
18973
|
+
deviceId: number(),
|
|
18974
|
+
read: _enum(["read", "unreadable"]),
|
|
18975
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
18976
|
+
});
|
|
18947
18977
|
object({
|
|
18948
18978
|
trackId: string(),
|
|
18949
18979
|
className: string(),
|
|
@@ -19254,12 +19284,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19254
19284
|
since: number(),
|
|
19255
19285
|
until: number(),
|
|
19256
19286
|
bucketMs: number().int().positive()
|
|
19257
|
-
}), array(object({
|
|
19258
|
-
|
|
19259
|
-
|
|
19260
|
-
|
|
19261
|
-
|
|
19262
|
-
})).readonly()), method(object({
|
|
19287
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19288
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19289
|
+
since: number(),
|
|
19290
|
+
until: number(),
|
|
19291
|
+
bucketMs: number().int().positive()
|
|
19292
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19263
19293
|
deviceId: number(),
|
|
19264
19294
|
cutoffMs: number()
|
|
19265
19295
|
}), object({
|
|
@@ -26569,6 +26599,39 @@ var RecordingDaysSchema = object({
|
|
|
26569
26599
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26570
26600
|
days: array(number())
|
|
26571
26601
|
});
|
|
26602
|
+
/**
|
|
26603
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
26604
|
+
*
|
|
26605
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
26606
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
26607
|
+
* method never had to say:
|
|
26608
|
+
*
|
|
26609
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
26610
|
+
* no footage in the window", which is a real claim.
|
|
26611
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
26612
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
26613
|
+
* that emptiness means NOTHING.
|
|
26614
|
+
*
|
|
26615
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
26616
|
+
* footage when the truth is that nobody looked.
|
|
26617
|
+
*/
|
|
26618
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
26619
|
+
deviceId: number(),
|
|
26620
|
+
read: _enum(["read", "unreadable"]),
|
|
26621
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
26622
|
+
});
|
|
26623
|
+
/**
|
|
26624
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
26625
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
26626
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
26627
|
+
* the date-picker's day dots must not spell them the same.
|
|
26628
|
+
*/
|
|
26629
|
+
var RecordingDaysForDeviceSchema = object({
|
|
26630
|
+
deviceId: number(),
|
|
26631
|
+
read: _enum(["read", "unreadable"]),
|
|
26632
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26633
|
+
days: array(number()).readonly()
|
|
26634
|
+
});
|
|
26572
26635
|
var RecordingManifestSchema = object({
|
|
26573
26636
|
deviceId: number(),
|
|
26574
26637
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -26803,6 +26866,13 @@ method(object({
|
|
|
26803
26866
|
}), RecordingAvailabilitySchema, {
|
|
26804
26867
|
kind: "query",
|
|
26805
26868
|
auth: "protected"
|
|
26869
|
+
}), method(object({
|
|
26870
|
+
deviceIds: array(number()).min(1).max(200),
|
|
26871
|
+
fromMs: number(),
|
|
26872
|
+
toMs: number()
|
|
26873
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
26874
|
+
kind: "query",
|
|
26875
|
+
auth: "protected"
|
|
26806
26876
|
}), method(object({
|
|
26807
26877
|
deviceId: number(),
|
|
26808
26878
|
fromMs: number(),
|
|
@@ -26811,6 +26881,14 @@ method(object({
|
|
|
26811
26881
|
}), RecordingDaysSchema, {
|
|
26812
26882
|
kind: "query",
|
|
26813
26883
|
auth: "protected"
|
|
26884
|
+
}), method(object({
|
|
26885
|
+
deviceIds: array(number()).min(1).max(200),
|
|
26886
|
+
fromMs: number(),
|
|
26887
|
+
toMs: number(),
|
|
26888
|
+
tzOffsetMinutes: number()
|
|
26889
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
26890
|
+
kind: "query",
|
|
26891
|
+
auth: "protected"
|
|
26814
26892
|
}), method(object({
|
|
26815
26893
|
deviceId: number(),
|
|
26816
26894
|
fromMs: number(),
|
|
@@ -32008,6 +32086,12 @@ Object.freeze({
|
|
|
32008
32086
|
addonId: null,
|
|
32009
32087
|
access: "view"
|
|
32010
32088
|
},
|
|
32089
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
32090
|
+
capName: "pipeline-analytics",
|
|
32091
|
+
capScope: "device",
|
|
32092
|
+
addonId: null,
|
|
32093
|
+
access: "view"
|
|
32094
|
+
},
|
|
32011
32095
|
"pipelineAnalytics.getEventMedia": {
|
|
32012
32096
|
capName: "pipeline-analytics",
|
|
32013
32097
|
capScope: "device",
|
|
@@ -33130,12 +33214,24 @@ Object.freeze({
|
|
|
33130
33214
|
addonId: null,
|
|
33131
33215
|
access: "view"
|
|
33132
33216
|
},
|
|
33217
|
+
"recording.getAvailabilityBatch": {
|
|
33218
|
+
capName: "recording",
|
|
33219
|
+
capScope: "system",
|
|
33220
|
+
addonId: null,
|
|
33221
|
+
access: "view"
|
|
33222
|
+
},
|
|
33133
33223
|
"recording.getDaysWithRecordings": {
|
|
33134
33224
|
capName: "recording",
|
|
33135
33225
|
capScope: "system",
|
|
33136
33226
|
addonId: null,
|
|
33137
33227
|
access: "view"
|
|
33138
33228
|
},
|
|
33229
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
33230
|
+
capName: "recording",
|
|
33231
|
+
capScope: "system",
|
|
33232
|
+
addonId: null,
|
|
33233
|
+
access: "view"
|
|
33234
|
+
},
|
|
33139
33235
|
"recording.getDeviceConfig": {
|
|
33140
33236
|
capName: "recording",
|
|
33141
33237
|
capScope: "system",
|
|
@@ -35740,6 +35836,11 @@ Object.freeze({
|
|
|
35740
35836
|
form: "single",
|
|
35741
35837
|
optional: false
|
|
35742
35838
|
}],
|
|
35839
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
35840
|
+
name: "deviceIds",
|
|
35841
|
+
form: "array",
|
|
35842
|
+
optional: false
|
|
35843
|
+
}],
|
|
35743
35844
|
"pipelineAnalytics.getEventMedia": [{
|
|
35744
35845
|
name: "deviceId",
|
|
35745
35846
|
form: "single",
|
|
@@ -36155,11 +36256,21 @@ Object.freeze({
|
|
|
36155
36256
|
form: "single",
|
|
36156
36257
|
optional: false
|
|
36157
36258
|
}],
|
|
36259
|
+
"recording.getAvailabilityBatch": [{
|
|
36260
|
+
name: "deviceIds",
|
|
36261
|
+
form: "array",
|
|
36262
|
+
optional: false
|
|
36263
|
+
}],
|
|
36158
36264
|
"recording.getDaysWithRecordings": [{
|
|
36159
36265
|
name: "deviceId",
|
|
36160
36266
|
form: "single",
|
|
36161
36267
|
optional: false
|
|
36162
36268
|
}],
|
|
36269
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
36270
|
+
name: "deviceIds",
|
|
36271
|
+
form: "array",
|
|
36272
|
+
optional: false
|
|
36273
|
+
}],
|
|
36163
36274
|
"recording.getDeviceConfig": [{
|
|
36164
36275
|
name: "deviceId",
|
|
36165
36276
|
form: "single",
|
|
@@ -15665,6 +15665,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
15665
15665
|
"device-offline",
|
|
15666
15666
|
"device-disabled",
|
|
15667
15667
|
"device-enabled",
|
|
15668
|
+
"device-battery-low",
|
|
15669
|
+
"device-battery-normal",
|
|
15668
15670
|
"stream-online",
|
|
15669
15671
|
"stream-offline",
|
|
15670
15672
|
"node-online",
|
|
@@ -18939,6 +18941,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
18939
18941
|
deviceId: number(),
|
|
18940
18942
|
events: array(KeyEventSchema).readonly()
|
|
18941
18943
|
});
|
|
18944
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
18945
|
+
var EventDensityBucketSchema = object({
|
|
18946
|
+
bucketStart: number(),
|
|
18947
|
+
motion: number().int(),
|
|
18948
|
+
object: number().int(),
|
|
18949
|
+
audio: number().int()
|
|
18950
|
+
});
|
|
18951
|
+
/**
|
|
18952
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
18953
|
+
*
|
|
18954
|
+
* TWO facts, and the timeline draws them differently:
|
|
18955
|
+
*
|
|
18956
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
18957
|
+
* claim: read, and nothing happened in the window.
|
|
18958
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
18959
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
18960
|
+
* not quiet.
|
|
18961
|
+
*
|
|
18962
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
18963
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
18964
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
18965
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
18966
|
+
*/
|
|
18967
|
+
var EventDensityForDeviceSchema = object({
|
|
18968
|
+
deviceId: number(),
|
|
18969
|
+
read: _enum(["read", "unreadable"]),
|
|
18970
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
18971
|
+
});
|
|
18942
18972
|
object({
|
|
18943
18973
|
trackId: string(),
|
|
18944
18974
|
className: string(),
|
|
@@ -19249,12 +19279,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19249
19279
|
since: number(),
|
|
19250
19280
|
until: number(),
|
|
19251
19281
|
bucketMs: number().int().positive()
|
|
19252
|
-
}), array(object({
|
|
19253
|
-
|
|
19254
|
-
|
|
19255
|
-
|
|
19256
|
-
|
|
19257
|
-
})).readonly()), method(object({
|
|
19282
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19283
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19284
|
+
since: number(),
|
|
19285
|
+
until: number(),
|
|
19286
|
+
bucketMs: number().int().positive()
|
|
19287
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19258
19288
|
deviceId: number(),
|
|
19259
19289
|
cutoffMs: number()
|
|
19260
19290
|
}), object({
|
|
@@ -26564,6 +26594,39 @@ var RecordingDaysSchema = object({
|
|
|
26564
26594
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26565
26595
|
days: array(number())
|
|
26566
26596
|
});
|
|
26597
|
+
/**
|
|
26598
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
26599
|
+
*
|
|
26600
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
26601
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
26602
|
+
* method never had to say:
|
|
26603
|
+
*
|
|
26604
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
26605
|
+
* no footage in the window", which is a real claim.
|
|
26606
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
26607
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
26608
|
+
* that emptiness means NOTHING.
|
|
26609
|
+
*
|
|
26610
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
26611
|
+
* footage when the truth is that nobody looked.
|
|
26612
|
+
*/
|
|
26613
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
26614
|
+
deviceId: number(),
|
|
26615
|
+
read: _enum(["read", "unreadable"]),
|
|
26616
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
26617
|
+
});
|
|
26618
|
+
/**
|
|
26619
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
26620
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
26621
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
26622
|
+
* the date-picker's day dots must not spell them the same.
|
|
26623
|
+
*/
|
|
26624
|
+
var RecordingDaysForDeviceSchema = object({
|
|
26625
|
+
deviceId: number(),
|
|
26626
|
+
read: _enum(["read", "unreadable"]),
|
|
26627
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26628
|
+
days: array(number()).readonly()
|
|
26629
|
+
});
|
|
26567
26630
|
var RecordingManifestSchema = object({
|
|
26568
26631
|
deviceId: number(),
|
|
26569
26632
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -26798,6 +26861,13 @@ method(object({
|
|
|
26798
26861
|
}), RecordingAvailabilitySchema, {
|
|
26799
26862
|
kind: "query",
|
|
26800
26863
|
auth: "protected"
|
|
26864
|
+
}), method(object({
|
|
26865
|
+
deviceIds: array(number()).min(1).max(200),
|
|
26866
|
+
fromMs: number(),
|
|
26867
|
+
toMs: number()
|
|
26868
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
26869
|
+
kind: "query",
|
|
26870
|
+
auth: "protected"
|
|
26801
26871
|
}), method(object({
|
|
26802
26872
|
deviceId: number(),
|
|
26803
26873
|
fromMs: number(),
|
|
@@ -26806,6 +26876,14 @@ method(object({
|
|
|
26806
26876
|
}), RecordingDaysSchema, {
|
|
26807
26877
|
kind: "query",
|
|
26808
26878
|
auth: "protected"
|
|
26879
|
+
}), method(object({
|
|
26880
|
+
deviceIds: array(number()).min(1).max(200),
|
|
26881
|
+
fromMs: number(),
|
|
26882
|
+
toMs: number(),
|
|
26883
|
+
tzOffsetMinutes: number()
|
|
26884
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
26885
|
+
kind: "query",
|
|
26886
|
+
auth: "protected"
|
|
26809
26887
|
}), method(object({
|
|
26810
26888
|
deviceId: number(),
|
|
26811
26889
|
fromMs: number(),
|
|
@@ -32003,6 +32081,12 @@ Object.freeze({
|
|
|
32003
32081
|
addonId: null,
|
|
32004
32082
|
access: "view"
|
|
32005
32083
|
},
|
|
32084
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
32085
|
+
capName: "pipeline-analytics",
|
|
32086
|
+
capScope: "device",
|
|
32087
|
+
addonId: null,
|
|
32088
|
+
access: "view"
|
|
32089
|
+
},
|
|
32006
32090
|
"pipelineAnalytics.getEventMedia": {
|
|
32007
32091
|
capName: "pipeline-analytics",
|
|
32008
32092
|
capScope: "device",
|
|
@@ -33125,12 +33209,24 @@ Object.freeze({
|
|
|
33125
33209
|
addonId: null,
|
|
33126
33210
|
access: "view"
|
|
33127
33211
|
},
|
|
33212
|
+
"recording.getAvailabilityBatch": {
|
|
33213
|
+
capName: "recording",
|
|
33214
|
+
capScope: "system",
|
|
33215
|
+
addonId: null,
|
|
33216
|
+
access: "view"
|
|
33217
|
+
},
|
|
33128
33218
|
"recording.getDaysWithRecordings": {
|
|
33129
33219
|
capName: "recording",
|
|
33130
33220
|
capScope: "system",
|
|
33131
33221
|
addonId: null,
|
|
33132
33222
|
access: "view"
|
|
33133
33223
|
},
|
|
33224
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
33225
|
+
capName: "recording",
|
|
33226
|
+
capScope: "system",
|
|
33227
|
+
addonId: null,
|
|
33228
|
+
access: "view"
|
|
33229
|
+
},
|
|
33134
33230
|
"recording.getDeviceConfig": {
|
|
33135
33231
|
capName: "recording",
|
|
33136
33232
|
capScope: "system",
|
|
@@ -35735,6 +35831,11 @@ Object.freeze({
|
|
|
35735
35831
|
form: "single",
|
|
35736
35832
|
optional: false
|
|
35737
35833
|
}],
|
|
35834
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
35835
|
+
name: "deviceIds",
|
|
35836
|
+
form: "array",
|
|
35837
|
+
optional: false
|
|
35838
|
+
}],
|
|
35738
35839
|
"pipelineAnalytics.getEventMedia": [{
|
|
35739
35840
|
name: "deviceId",
|
|
35740
35841
|
form: "single",
|
|
@@ -36150,11 +36251,21 @@ Object.freeze({
|
|
|
36150
36251
|
form: "single",
|
|
36151
36252
|
optional: false
|
|
36152
36253
|
}],
|
|
36254
|
+
"recording.getAvailabilityBatch": [{
|
|
36255
|
+
name: "deviceIds",
|
|
36256
|
+
form: "array",
|
|
36257
|
+
optional: false
|
|
36258
|
+
}],
|
|
36153
36259
|
"recording.getDaysWithRecordings": [{
|
|
36154
36260
|
name: "deviceId",
|
|
36155
36261
|
form: "single",
|
|
36156
36262
|
optional: false
|
|
36157
36263
|
}],
|
|
36264
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
36265
|
+
name: "deviceIds",
|
|
36266
|
+
form: "array",
|
|
36267
|
+
optional: false
|
|
36268
|
+
}],
|
|
36158
36269
|
"recording.getDeviceConfig": [{
|
|
36159
36270
|
name: "deviceId",
|
|
36160
36271
|
form: "single",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-mqtt-broker",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.52",
|
|
4
4
|
"description": "MQTT broker registry addon for CamStack — manages external broker entries + an optional embedded aedes broker. Consumers spin up their own `mqtt.js` clients via the `mqtt-broker` cap.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|