@camstack/addon-decoder-nodeav 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/index.js +117 -6
- package/dist/index.mjs +117 -6
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -15703,6 +15703,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
15703
15703
|
"device-offline",
|
|
15704
15704
|
"device-disabled",
|
|
15705
15705
|
"device-enabled",
|
|
15706
|
+
"device-battery-low",
|
|
15707
|
+
"device-battery-normal",
|
|
15706
15708
|
"stream-online",
|
|
15707
15709
|
"stream-offline",
|
|
15708
15710
|
"node-online",
|
|
@@ -18977,6 +18979,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
18977
18979
|
deviceId: number(),
|
|
18978
18980
|
events: array(KeyEventSchema).readonly()
|
|
18979
18981
|
});
|
|
18982
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
18983
|
+
var EventDensityBucketSchema = object({
|
|
18984
|
+
bucketStart: number(),
|
|
18985
|
+
motion: number().int(),
|
|
18986
|
+
object: number().int(),
|
|
18987
|
+
audio: number().int()
|
|
18988
|
+
});
|
|
18989
|
+
/**
|
|
18990
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
18991
|
+
*
|
|
18992
|
+
* TWO facts, and the timeline draws them differently:
|
|
18993
|
+
*
|
|
18994
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
18995
|
+
* claim: read, and nothing happened in the window.
|
|
18996
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
18997
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
18998
|
+
* not quiet.
|
|
18999
|
+
*
|
|
19000
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19001
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19002
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19003
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19004
|
+
*/
|
|
19005
|
+
var EventDensityForDeviceSchema = object({
|
|
19006
|
+
deviceId: number(),
|
|
19007
|
+
read: _enum(["read", "unreadable"]),
|
|
19008
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19009
|
+
});
|
|
18980
19010
|
object({
|
|
18981
19011
|
trackId: string(),
|
|
18982
19012
|
className: string(),
|
|
@@ -19287,12 +19317,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19287
19317
|
since: number(),
|
|
19288
19318
|
until: number(),
|
|
19289
19319
|
bucketMs: number().int().positive()
|
|
19290
|
-
}), array(object({
|
|
19291
|
-
|
|
19292
|
-
|
|
19293
|
-
|
|
19294
|
-
|
|
19295
|
-
})).readonly()), method(object({
|
|
19320
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19321
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19322
|
+
since: number(),
|
|
19323
|
+
until: number(),
|
|
19324
|
+
bucketMs: number().int().positive()
|
|
19325
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19296
19326
|
deviceId: number(),
|
|
19297
19327
|
cutoffMs: number()
|
|
19298
19328
|
}), object({
|
|
@@ -26602,6 +26632,39 @@ var RecordingDaysSchema = object({
|
|
|
26602
26632
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26603
26633
|
days: array(number())
|
|
26604
26634
|
});
|
|
26635
|
+
/**
|
|
26636
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
26637
|
+
*
|
|
26638
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
26639
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
26640
|
+
* method never had to say:
|
|
26641
|
+
*
|
|
26642
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
26643
|
+
* no footage in the window", which is a real claim.
|
|
26644
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
26645
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
26646
|
+
* that emptiness means NOTHING.
|
|
26647
|
+
*
|
|
26648
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
26649
|
+
* footage when the truth is that nobody looked.
|
|
26650
|
+
*/
|
|
26651
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
26652
|
+
deviceId: number(),
|
|
26653
|
+
read: _enum(["read", "unreadable"]),
|
|
26654
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
26655
|
+
});
|
|
26656
|
+
/**
|
|
26657
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
26658
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
26659
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
26660
|
+
* the date-picker's day dots must not spell them the same.
|
|
26661
|
+
*/
|
|
26662
|
+
var RecordingDaysForDeviceSchema = object({
|
|
26663
|
+
deviceId: number(),
|
|
26664
|
+
read: _enum(["read", "unreadable"]),
|
|
26665
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26666
|
+
days: array(number()).readonly()
|
|
26667
|
+
});
|
|
26605
26668
|
var RecordingManifestSchema = object({
|
|
26606
26669
|
deviceId: number(),
|
|
26607
26670
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -26836,6 +26899,13 @@ method(object({
|
|
|
26836
26899
|
}), RecordingAvailabilitySchema, {
|
|
26837
26900
|
kind: "query",
|
|
26838
26901
|
auth: "protected"
|
|
26902
|
+
}), method(object({
|
|
26903
|
+
deviceIds: array(number()).min(1).max(200),
|
|
26904
|
+
fromMs: number(),
|
|
26905
|
+
toMs: number()
|
|
26906
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
26907
|
+
kind: "query",
|
|
26908
|
+
auth: "protected"
|
|
26839
26909
|
}), method(object({
|
|
26840
26910
|
deviceId: number(),
|
|
26841
26911
|
fromMs: number(),
|
|
@@ -26844,6 +26914,14 @@ method(object({
|
|
|
26844
26914
|
}), RecordingDaysSchema, {
|
|
26845
26915
|
kind: "query",
|
|
26846
26916
|
auth: "protected"
|
|
26917
|
+
}), method(object({
|
|
26918
|
+
deviceIds: array(number()).min(1).max(200),
|
|
26919
|
+
fromMs: number(),
|
|
26920
|
+
toMs: number(),
|
|
26921
|
+
tzOffsetMinutes: number()
|
|
26922
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
26923
|
+
kind: "query",
|
|
26924
|
+
auth: "protected"
|
|
26847
26925
|
}), method(object({
|
|
26848
26926
|
deviceId: number(),
|
|
26849
26927
|
fromMs: number(),
|
|
@@ -32041,6 +32119,12 @@ Object.freeze({
|
|
|
32041
32119
|
addonId: null,
|
|
32042
32120
|
access: "view"
|
|
32043
32121
|
},
|
|
32122
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
32123
|
+
capName: "pipeline-analytics",
|
|
32124
|
+
capScope: "device",
|
|
32125
|
+
addonId: null,
|
|
32126
|
+
access: "view"
|
|
32127
|
+
},
|
|
32044
32128
|
"pipelineAnalytics.getEventMedia": {
|
|
32045
32129
|
capName: "pipeline-analytics",
|
|
32046
32130
|
capScope: "device",
|
|
@@ -33163,12 +33247,24 @@ Object.freeze({
|
|
|
33163
33247
|
addonId: null,
|
|
33164
33248
|
access: "view"
|
|
33165
33249
|
},
|
|
33250
|
+
"recording.getAvailabilityBatch": {
|
|
33251
|
+
capName: "recording",
|
|
33252
|
+
capScope: "system",
|
|
33253
|
+
addonId: null,
|
|
33254
|
+
access: "view"
|
|
33255
|
+
},
|
|
33166
33256
|
"recording.getDaysWithRecordings": {
|
|
33167
33257
|
capName: "recording",
|
|
33168
33258
|
capScope: "system",
|
|
33169
33259
|
addonId: null,
|
|
33170
33260
|
access: "view"
|
|
33171
33261
|
},
|
|
33262
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
33263
|
+
capName: "recording",
|
|
33264
|
+
capScope: "system",
|
|
33265
|
+
addonId: null,
|
|
33266
|
+
access: "view"
|
|
33267
|
+
},
|
|
33172
33268
|
"recording.getDeviceConfig": {
|
|
33173
33269
|
capName: "recording",
|
|
33174
33270
|
capScope: "system",
|
|
@@ -35773,6 +35869,11 @@ Object.freeze({
|
|
|
35773
35869
|
form: "single",
|
|
35774
35870
|
optional: false
|
|
35775
35871
|
}],
|
|
35872
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
35873
|
+
name: "deviceIds",
|
|
35874
|
+
form: "array",
|
|
35875
|
+
optional: false
|
|
35876
|
+
}],
|
|
35776
35877
|
"pipelineAnalytics.getEventMedia": [{
|
|
35777
35878
|
name: "deviceId",
|
|
35778
35879
|
form: "single",
|
|
@@ -36188,11 +36289,21 @@ Object.freeze({
|
|
|
36188
36289
|
form: "single",
|
|
36189
36290
|
optional: false
|
|
36190
36291
|
}],
|
|
36292
|
+
"recording.getAvailabilityBatch": [{
|
|
36293
|
+
name: "deviceIds",
|
|
36294
|
+
form: "array",
|
|
36295
|
+
optional: false
|
|
36296
|
+
}],
|
|
36191
36297
|
"recording.getDaysWithRecordings": [{
|
|
36192
36298
|
name: "deviceId",
|
|
36193
36299
|
form: "single",
|
|
36194
36300
|
optional: false
|
|
36195
36301
|
}],
|
|
36302
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
36303
|
+
name: "deviceIds",
|
|
36304
|
+
form: "array",
|
|
36305
|
+
optional: false
|
|
36306
|
+
}],
|
|
36196
36307
|
"recording.getDeviceConfig": [{
|
|
36197
36308
|
name: "deviceId",
|
|
36198
36309
|
form: "single",
|
package/dist/index.mjs
CHANGED
|
@@ -15699,6 +15699,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
15699
15699
|
"device-offline",
|
|
15700
15700
|
"device-disabled",
|
|
15701
15701
|
"device-enabled",
|
|
15702
|
+
"device-battery-low",
|
|
15703
|
+
"device-battery-normal",
|
|
15702
15704
|
"stream-online",
|
|
15703
15705
|
"stream-offline",
|
|
15704
15706
|
"node-online",
|
|
@@ -18973,6 +18975,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
18973
18975
|
deviceId: number(),
|
|
18974
18976
|
events: array(KeyEventSchema).readonly()
|
|
18975
18977
|
});
|
|
18978
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
18979
|
+
var EventDensityBucketSchema = object({
|
|
18980
|
+
bucketStart: number(),
|
|
18981
|
+
motion: number().int(),
|
|
18982
|
+
object: number().int(),
|
|
18983
|
+
audio: number().int()
|
|
18984
|
+
});
|
|
18985
|
+
/**
|
|
18986
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
18987
|
+
*
|
|
18988
|
+
* TWO facts, and the timeline draws them differently:
|
|
18989
|
+
*
|
|
18990
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
18991
|
+
* claim: read, and nothing happened in the window.
|
|
18992
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
18993
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
18994
|
+
* not quiet.
|
|
18995
|
+
*
|
|
18996
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
18997
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
18998
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
18999
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19000
|
+
*/
|
|
19001
|
+
var EventDensityForDeviceSchema = object({
|
|
19002
|
+
deviceId: number(),
|
|
19003
|
+
read: _enum(["read", "unreadable"]),
|
|
19004
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19005
|
+
});
|
|
18976
19006
|
object({
|
|
18977
19007
|
trackId: string(),
|
|
18978
19008
|
className: string(),
|
|
@@ -19283,12 +19313,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19283
19313
|
since: number(),
|
|
19284
19314
|
until: number(),
|
|
19285
19315
|
bucketMs: number().int().positive()
|
|
19286
|
-
}), array(object({
|
|
19287
|
-
|
|
19288
|
-
|
|
19289
|
-
|
|
19290
|
-
|
|
19291
|
-
})).readonly()), method(object({
|
|
19316
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19317
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19318
|
+
since: number(),
|
|
19319
|
+
until: number(),
|
|
19320
|
+
bucketMs: number().int().positive()
|
|
19321
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19292
19322
|
deviceId: number(),
|
|
19293
19323
|
cutoffMs: number()
|
|
19294
19324
|
}), object({
|
|
@@ -26598,6 +26628,39 @@ var RecordingDaysSchema = object({
|
|
|
26598
26628
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26599
26629
|
days: array(number())
|
|
26600
26630
|
});
|
|
26631
|
+
/**
|
|
26632
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
26633
|
+
*
|
|
26634
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
26635
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
26636
|
+
* method never had to say:
|
|
26637
|
+
*
|
|
26638
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
26639
|
+
* no footage in the window", which is a real claim.
|
|
26640
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
26641
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
26642
|
+
* that emptiness means NOTHING.
|
|
26643
|
+
*
|
|
26644
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
26645
|
+
* footage when the truth is that nobody looked.
|
|
26646
|
+
*/
|
|
26647
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
26648
|
+
deviceId: number(),
|
|
26649
|
+
read: _enum(["read", "unreadable"]),
|
|
26650
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
26651
|
+
});
|
|
26652
|
+
/**
|
|
26653
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
26654
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
26655
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
26656
|
+
* the date-picker's day dots must not spell them the same.
|
|
26657
|
+
*/
|
|
26658
|
+
var RecordingDaysForDeviceSchema = object({
|
|
26659
|
+
deviceId: number(),
|
|
26660
|
+
read: _enum(["read", "unreadable"]),
|
|
26661
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26662
|
+
days: array(number()).readonly()
|
|
26663
|
+
});
|
|
26601
26664
|
var RecordingManifestSchema = object({
|
|
26602
26665
|
deviceId: number(),
|
|
26603
26666
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -26832,6 +26895,13 @@ method(object({
|
|
|
26832
26895
|
}), RecordingAvailabilitySchema, {
|
|
26833
26896
|
kind: "query",
|
|
26834
26897
|
auth: "protected"
|
|
26898
|
+
}), method(object({
|
|
26899
|
+
deviceIds: array(number()).min(1).max(200),
|
|
26900
|
+
fromMs: number(),
|
|
26901
|
+
toMs: number()
|
|
26902
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
26903
|
+
kind: "query",
|
|
26904
|
+
auth: "protected"
|
|
26835
26905
|
}), method(object({
|
|
26836
26906
|
deviceId: number(),
|
|
26837
26907
|
fromMs: number(),
|
|
@@ -26840,6 +26910,14 @@ method(object({
|
|
|
26840
26910
|
}), RecordingDaysSchema, {
|
|
26841
26911
|
kind: "query",
|
|
26842
26912
|
auth: "protected"
|
|
26913
|
+
}), method(object({
|
|
26914
|
+
deviceIds: array(number()).min(1).max(200),
|
|
26915
|
+
fromMs: number(),
|
|
26916
|
+
toMs: number(),
|
|
26917
|
+
tzOffsetMinutes: number()
|
|
26918
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
26919
|
+
kind: "query",
|
|
26920
|
+
auth: "protected"
|
|
26843
26921
|
}), method(object({
|
|
26844
26922
|
deviceId: number(),
|
|
26845
26923
|
fromMs: number(),
|
|
@@ -32037,6 +32115,12 @@ Object.freeze({
|
|
|
32037
32115
|
addonId: null,
|
|
32038
32116
|
access: "view"
|
|
32039
32117
|
},
|
|
32118
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
32119
|
+
capName: "pipeline-analytics",
|
|
32120
|
+
capScope: "device",
|
|
32121
|
+
addonId: null,
|
|
32122
|
+
access: "view"
|
|
32123
|
+
},
|
|
32040
32124
|
"pipelineAnalytics.getEventMedia": {
|
|
32041
32125
|
capName: "pipeline-analytics",
|
|
32042
32126
|
capScope: "device",
|
|
@@ -33159,12 +33243,24 @@ Object.freeze({
|
|
|
33159
33243
|
addonId: null,
|
|
33160
33244
|
access: "view"
|
|
33161
33245
|
},
|
|
33246
|
+
"recording.getAvailabilityBatch": {
|
|
33247
|
+
capName: "recording",
|
|
33248
|
+
capScope: "system",
|
|
33249
|
+
addonId: null,
|
|
33250
|
+
access: "view"
|
|
33251
|
+
},
|
|
33162
33252
|
"recording.getDaysWithRecordings": {
|
|
33163
33253
|
capName: "recording",
|
|
33164
33254
|
capScope: "system",
|
|
33165
33255
|
addonId: null,
|
|
33166
33256
|
access: "view"
|
|
33167
33257
|
},
|
|
33258
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
33259
|
+
capName: "recording",
|
|
33260
|
+
capScope: "system",
|
|
33261
|
+
addonId: null,
|
|
33262
|
+
access: "view"
|
|
33263
|
+
},
|
|
33168
33264
|
"recording.getDeviceConfig": {
|
|
33169
33265
|
capName: "recording",
|
|
33170
33266
|
capScope: "system",
|
|
@@ -35769,6 +35865,11 @@ Object.freeze({
|
|
|
35769
35865
|
form: "single",
|
|
35770
35866
|
optional: false
|
|
35771
35867
|
}],
|
|
35868
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
35869
|
+
name: "deviceIds",
|
|
35870
|
+
form: "array",
|
|
35871
|
+
optional: false
|
|
35872
|
+
}],
|
|
35772
35873
|
"pipelineAnalytics.getEventMedia": [{
|
|
35773
35874
|
name: "deviceId",
|
|
35774
35875
|
form: "single",
|
|
@@ -36184,11 +36285,21 @@ Object.freeze({
|
|
|
36184
36285
|
form: "single",
|
|
36185
36286
|
optional: false
|
|
36186
36287
|
}],
|
|
36288
|
+
"recording.getAvailabilityBatch": [{
|
|
36289
|
+
name: "deviceIds",
|
|
36290
|
+
form: "array",
|
|
36291
|
+
optional: false
|
|
36292
|
+
}],
|
|
36187
36293
|
"recording.getDaysWithRecordings": [{
|
|
36188
36294
|
name: "deviceId",
|
|
36189
36295
|
form: "single",
|
|
36190
36296
|
optional: false
|
|
36191
36297
|
}],
|
|
36298
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
36299
|
+
name: "deviceIds",
|
|
36300
|
+
form: "array",
|
|
36301
|
+
optional: false
|
|
36302
|
+
}],
|
|
36192
36303
|
"recording.getDeviceConfig": [{
|
|
36193
36304
|
name: "deviceId",
|
|
36194
36305
|
form: "single",
|