@camstack/addon-export-alexa 1.2.56 → 1.2.58
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/export-alexa.addon.js +117 -6
- package/dist/export-alexa.addon.mjs +117 -6
- package/package.json +1 -1
|
@@ -15868,6 +15868,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
15868
15868
|
"device-offline",
|
|
15869
15869
|
"device-disabled",
|
|
15870
15870
|
"device-enabled",
|
|
15871
|
+
"device-battery-low",
|
|
15872
|
+
"device-battery-normal",
|
|
15871
15873
|
"stream-online",
|
|
15872
15874
|
"stream-offline",
|
|
15873
15875
|
"node-online",
|
|
@@ -19158,6 +19160,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19158
19160
|
deviceId: number(),
|
|
19159
19161
|
events: array(KeyEventSchema).readonly()
|
|
19160
19162
|
});
|
|
19163
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19164
|
+
var EventDensityBucketSchema = object({
|
|
19165
|
+
bucketStart: number(),
|
|
19166
|
+
motion: number().int(),
|
|
19167
|
+
object: number().int(),
|
|
19168
|
+
audio: number().int()
|
|
19169
|
+
});
|
|
19170
|
+
/**
|
|
19171
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19172
|
+
*
|
|
19173
|
+
* TWO facts, and the timeline draws them differently:
|
|
19174
|
+
*
|
|
19175
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19176
|
+
* claim: read, and nothing happened in the window.
|
|
19177
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19178
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19179
|
+
* not quiet.
|
|
19180
|
+
*
|
|
19181
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19182
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19183
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19184
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19185
|
+
*/
|
|
19186
|
+
var EventDensityForDeviceSchema = object({
|
|
19187
|
+
deviceId: number(),
|
|
19188
|
+
read: _enum(["read", "unreadable"]),
|
|
19189
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19190
|
+
});
|
|
19161
19191
|
object({
|
|
19162
19192
|
trackId: string(),
|
|
19163
19193
|
className: string(),
|
|
@@ -19468,12 +19498,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19468
19498
|
since: number(),
|
|
19469
19499
|
until: number(),
|
|
19470
19500
|
bucketMs: number().int().positive()
|
|
19471
|
-
}), array(object({
|
|
19472
|
-
|
|
19473
|
-
|
|
19474
|
-
|
|
19475
|
-
|
|
19476
|
-
})).readonly()), method(object({
|
|
19501
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19502
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19503
|
+
since: number(),
|
|
19504
|
+
until: number(),
|
|
19505
|
+
bucketMs: number().int().positive()
|
|
19506
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19477
19507
|
deviceId: number(),
|
|
19478
19508
|
cutoffMs: number()
|
|
19479
19509
|
}), object({
|
|
@@ -26783,6 +26813,39 @@ var RecordingDaysSchema = object({
|
|
|
26783
26813
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26784
26814
|
days: array(number())
|
|
26785
26815
|
});
|
|
26816
|
+
/**
|
|
26817
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
26818
|
+
*
|
|
26819
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
26820
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
26821
|
+
* method never had to say:
|
|
26822
|
+
*
|
|
26823
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
26824
|
+
* no footage in the window", which is a real claim.
|
|
26825
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
26826
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
26827
|
+
* that emptiness means NOTHING.
|
|
26828
|
+
*
|
|
26829
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
26830
|
+
* footage when the truth is that nobody looked.
|
|
26831
|
+
*/
|
|
26832
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
26833
|
+
deviceId: number(),
|
|
26834
|
+
read: _enum(["read", "unreadable"]),
|
|
26835
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
26836
|
+
});
|
|
26837
|
+
/**
|
|
26838
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
26839
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
26840
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
26841
|
+
* the date-picker's day dots must not spell them the same.
|
|
26842
|
+
*/
|
|
26843
|
+
var RecordingDaysForDeviceSchema = object({
|
|
26844
|
+
deviceId: number(),
|
|
26845
|
+
read: _enum(["read", "unreadable"]),
|
|
26846
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26847
|
+
days: array(number()).readonly()
|
|
26848
|
+
});
|
|
26786
26849
|
var RecordingManifestSchema = object({
|
|
26787
26850
|
deviceId: number(),
|
|
26788
26851
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -27017,6 +27080,13 @@ method(object({
|
|
|
27017
27080
|
}), RecordingAvailabilitySchema, {
|
|
27018
27081
|
kind: "query",
|
|
27019
27082
|
auth: "protected"
|
|
27083
|
+
}), method(object({
|
|
27084
|
+
deviceIds: array(number()).min(1).max(200),
|
|
27085
|
+
fromMs: number(),
|
|
27086
|
+
toMs: number()
|
|
27087
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
27088
|
+
kind: "query",
|
|
27089
|
+
auth: "protected"
|
|
27020
27090
|
}), method(object({
|
|
27021
27091
|
deviceId: number(),
|
|
27022
27092
|
fromMs: number(),
|
|
@@ -27025,6 +27095,14 @@ method(object({
|
|
|
27025
27095
|
}), RecordingDaysSchema, {
|
|
27026
27096
|
kind: "query",
|
|
27027
27097
|
auth: "protected"
|
|
27098
|
+
}), method(object({
|
|
27099
|
+
deviceIds: array(number()).min(1).max(200),
|
|
27100
|
+
fromMs: number(),
|
|
27101
|
+
toMs: number(),
|
|
27102
|
+
tzOffsetMinutes: number()
|
|
27103
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
27104
|
+
kind: "query",
|
|
27105
|
+
auth: "protected"
|
|
27028
27106
|
}), method(object({
|
|
27029
27107
|
deviceId: number(),
|
|
27030
27108
|
fromMs: number(),
|
|
@@ -32222,6 +32300,12 @@ Object.freeze({
|
|
|
32222
32300
|
addonId: null,
|
|
32223
32301
|
access: "view"
|
|
32224
32302
|
},
|
|
32303
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
32304
|
+
capName: "pipeline-analytics",
|
|
32305
|
+
capScope: "device",
|
|
32306
|
+
addonId: null,
|
|
32307
|
+
access: "view"
|
|
32308
|
+
},
|
|
32225
32309
|
"pipelineAnalytics.getEventMedia": {
|
|
32226
32310
|
capName: "pipeline-analytics",
|
|
32227
32311
|
capScope: "device",
|
|
@@ -33344,12 +33428,24 @@ Object.freeze({
|
|
|
33344
33428
|
addonId: null,
|
|
33345
33429
|
access: "view"
|
|
33346
33430
|
},
|
|
33431
|
+
"recording.getAvailabilityBatch": {
|
|
33432
|
+
capName: "recording",
|
|
33433
|
+
capScope: "system",
|
|
33434
|
+
addonId: null,
|
|
33435
|
+
access: "view"
|
|
33436
|
+
},
|
|
33347
33437
|
"recording.getDaysWithRecordings": {
|
|
33348
33438
|
capName: "recording",
|
|
33349
33439
|
capScope: "system",
|
|
33350
33440
|
addonId: null,
|
|
33351
33441
|
access: "view"
|
|
33352
33442
|
},
|
|
33443
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
33444
|
+
capName: "recording",
|
|
33445
|
+
capScope: "system",
|
|
33446
|
+
addonId: null,
|
|
33447
|
+
access: "view"
|
|
33448
|
+
},
|
|
33353
33449
|
"recording.getDeviceConfig": {
|
|
33354
33450
|
capName: "recording",
|
|
33355
33451
|
capScope: "system",
|
|
@@ -35954,6 +36050,11 @@ Object.freeze({
|
|
|
35954
36050
|
form: "single",
|
|
35955
36051
|
optional: false
|
|
35956
36052
|
}],
|
|
36053
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
36054
|
+
name: "deviceIds",
|
|
36055
|
+
form: "array",
|
|
36056
|
+
optional: false
|
|
36057
|
+
}],
|
|
35957
36058
|
"pipelineAnalytics.getEventMedia": [{
|
|
35958
36059
|
name: "deviceId",
|
|
35959
36060
|
form: "single",
|
|
@@ -36369,11 +36470,21 @@ Object.freeze({
|
|
|
36369
36470
|
form: "single",
|
|
36370
36471
|
optional: false
|
|
36371
36472
|
}],
|
|
36473
|
+
"recording.getAvailabilityBatch": [{
|
|
36474
|
+
name: "deviceIds",
|
|
36475
|
+
form: "array",
|
|
36476
|
+
optional: false
|
|
36477
|
+
}],
|
|
36372
36478
|
"recording.getDaysWithRecordings": [{
|
|
36373
36479
|
name: "deviceId",
|
|
36374
36480
|
form: "single",
|
|
36375
36481
|
optional: false
|
|
36376
36482
|
}],
|
|
36483
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
36484
|
+
name: "deviceIds",
|
|
36485
|
+
form: "array",
|
|
36486
|
+
optional: false
|
|
36487
|
+
}],
|
|
36377
36488
|
"recording.getDeviceConfig": [{
|
|
36378
36489
|
name: "deviceId",
|
|
36379
36490
|
form: "single",
|
|
@@ -15841,6 +15841,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
15841
15841
|
"device-offline",
|
|
15842
15842
|
"device-disabled",
|
|
15843
15843
|
"device-enabled",
|
|
15844
|
+
"device-battery-low",
|
|
15845
|
+
"device-battery-normal",
|
|
15844
15846
|
"stream-online",
|
|
15845
15847
|
"stream-offline",
|
|
15846
15848
|
"node-online",
|
|
@@ -19131,6 +19133,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19131
19133
|
deviceId: number(),
|
|
19132
19134
|
events: array(KeyEventSchema).readonly()
|
|
19133
19135
|
});
|
|
19136
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19137
|
+
var EventDensityBucketSchema = object({
|
|
19138
|
+
bucketStart: number(),
|
|
19139
|
+
motion: number().int(),
|
|
19140
|
+
object: number().int(),
|
|
19141
|
+
audio: number().int()
|
|
19142
|
+
});
|
|
19143
|
+
/**
|
|
19144
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19145
|
+
*
|
|
19146
|
+
* TWO facts, and the timeline draws them differently:
|
|
19147
|
+
*
|
|
19148
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19149
|
+
* claim: read, and nothing happened in the window.
|
|
19150
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19151
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19152
|
+
* not quiet.
|
|
19153
|
+
*
|
|
19154
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19155
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19156
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19157
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19158
|
+
*/
|
|
19159
|
+
var EventDensityForDeviceSchema = object({
|
|
19160
|
+
deviceId: number(),
|
|
19161
|
+
read: _enum(["read", "unreadable"]),
|
|
19162
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19163
|
+
});
|
|
19134
19164
|
object({
|
|
19135
19165
|
trackId: string(),
|
|
19136
19166
|
className: string(),
|
|
@@ -19441,12 +19471,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19441
19471
|
since: number(),
|
|
19442
19472
|
until: number(),
|
|
19443
19473
|
bucketMs: number().int().positive()
|
|
19444
|
-
}), array(object({
|
|
19445
|
-
|
|
19446
|
-
|
|
19447
|
-
|
|
19448
|
-
|
|
19449
|
-
})).readonly()), method(object({
|
|
19474
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19475
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19476
|
+
since: number(),
|
|
19477
|
+
until: number(),
|
|
19478
|
+
bucketMs: number().int().positive()
|
|
19479
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19450
19480
|
deviceId: number(),
|
|
19451
19481
|
cutoffMs: number()
|
|
19452
19482
|
}), object({
|
|
@@ -26756,6 +26786,39 @@ var RecordingDaysSchema = object({
|
|
|
26756
26786
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26757
26787
|
days: array(number())
|
|
26758
26788
|
});
|
|
26789
|
+
/**
|
|
26790
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
26791
|
+
*
|
|
26792
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
26793
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
26794
|
+
* method never had to say:
|
|
26795
|
+
*
|
|
26796
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
26797
|
+
* no footage in the window", which is a real claim.
|
|
26798
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
26799
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
26800
|
+
* that emptiness means NOTHING.
|
|
26801
|
+
*
|
|
26802
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
26803
|
+
* footage when the truth is that nobody looked.
|
|
26804
|
+
*/
|
|
26805
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
26806
|
+
deviceId: number(),
|
|
26807
|
+
read: _enum(["read", "unreadable"]),
|
|
26808
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
26809
|
+
});
|
|
26810
|
+
/**
|
|
26811
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
26812
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
26813
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
26814
|
+
* the date-picker's day dots must not spell them the same.
|
|
26815
|
+
*/
|
|
26816
|
+
var RecordingDaysForDeviceSchema = object({
|
|
26817
|
+
deviceId: number(),
|
|
26818
|
+
read: _enum(["read", "unreadable"]),
|
|
26819
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26820
|
+
days: array(number()).readonly()
|
|
26821
|
+
});
|
|
26759
26822
|
var RecordingManifestSchema = object({
|
|
26760
26823
|
deviceId: number(),
|
|
26761
26824
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -26990,6 +27053,13 @@ method(object({
|
|
|
26990
27053
|
}), RecordingAvailabilitySchema, {
|
|
26991
27054
|
kind: "query",
|
|
26992
27055
|
auth: "protected"
|
|
27056
|
+
}), method(object({
|
|
27057
|
+
deviceIds: array(number()).min(1).max(200),
|
|
27058
|
+
fromMs: number(),
|
|
27059
|
+
toMs: number()
|
|
27060
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
27061
|
+
kind: "query",
|
|
27062
|
+
auth: "protected"
|
|
26993
27063
|
}), method(object({
|
|
26994
27064
|
deviceId: number(),
|
|
26995
27065
|
fromMs: number(),
|
|
@@ -26998,6 +27068,14 @@ method(object({
|
|
|
26998
27068
|
}), RecordingDaysSchema, {
|
|
26999
27069
|
kind: "query",
|
|
27000
27070
|
auth: "protected"
|
|
27071
|
+
}), method(object({
|
|
27072
|
+
deviceIds: array(number()).min(1).max(200),
|
|
27073
|
+
fromMs: number(),
|
|
27074
|
+
toMs: number(),
|
|
27075
|
+
tzOffsetMinutes: number()
|
|
27076
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
27077
|
+
kind: "query",
|
|
27078
|
+
auth: "protected"
|
|
27001
27079
|
}), method(object({
|
|
27002
27080
|
deviceId: number(),
|
|
27003
27081
|
fromMs: number(),
|
|
@@ -32195,6 +32273,12 @@ Object.freeze({
|
|
|
32195
32273
|
addonId: null,
|
|
32196
32274
|
access: "view"
|
|
32197
32275
|
},
|
|
32276
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
32277
|
+
capName: "pipeline-analytics",
|
|
32278
|
+
capScope: "device",
|
|
32279
|
+
addonId: null,
|
|
32280
|
+
access: "view"
|
|
32281
|
+
},
|
|
32198
32282
|
"pipelineAnalytics.getEventMedia": {
|
|
32199
32283
|
capName: "pipeline-analytics",
|
|
32200
32284
|
capScope: "device",
|
|
@@ -33317,12 +33401,24 @@ Object.freeze({
|
|
|
33317
33401
|
addonId: null,
|
|
33318
33402
|
access: "view"
|
|
33319
33403
|
},
|
|
33404
|
+
"recording.getAvailabilityBatch": {
|
|
33405
|
+
capName: "recording",
|
|
33406
|
+
capScope: "system",
|
|
33407
|
+
addonId: null,
|
|
33408
|
+
access: "view"
|
|
33409
|
+
},
|
|
33320
33410
|
"recording.getDaysWithRecordings": {
|
|
33321
33411
|
capName: "recording",
|
|
33322
33412
|
capScope: "system",
|
|
33323
33413
|
addonId: null,
|
|
33324
33414
|
access: "view"
|
|
33325
33415
|
},
|
|
33416
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
33417
|
+
capName: "recording",
|
|
33418
|
+
capScope: "system",
|
|
33419
|
+
addonId: null,
|
|
33420
|
+
access: "view"
|
|
33421
|
+
},
|
|
33326
33422
|
"recording.getDeviceConfig": {
|
|
33327
33423
|
capName: "recording",
|
|
33328
33424
|
capScope: "system",
|
|
@@ -35927,6 +36023,11 @@ Object.freeze({
|
|
|
35927
36023
|
form: "single",
|
|
35928
36024
|
optional: false
|
|
35929
36025
|
}],
|
|
36026
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
36027
|
+
name: "deviceIds",
|
|
36028
|
+
form: "array",
|
|
36029
|
+
optional: false
|
|
36030
|
+
}],
|
|
35930
36031
|
"pipelineAnalytics.getEventMedia": [{
|
|
35931
36032
|
name: "deviceId",
|
|
35932
36033
|
form: "single",
|
|
@@ -36342,11 +36443,21 @@ Object.freeze({
|
|
|
36342
36443
|
form: "single",
|
|
36343
36444
|
optional: false
|
|
36344
36445
|
}],
|
|
36446
|
+
"recording.getAvailabilityBatch": [{
|
|
36447
|
+
name: "deviceIds",
|
|
36448
|
+
form: "array",
|
|
36449
|
+
optional: false
|
|
36450
|
+
}],
|
|
36345
36451
|
"recording.getDaysWithRecordings": [{
|
|
36346
36452
|
name: "deviceId",
|
|
36347
36453
|
form: "single",
|
|
36348
36454
|
optional: false
|
|
36349
36455
|
}],
|
|
36456
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
36457
|
+
name: "deviceIds",
|
|
36458
|
+
form: "array",
|
|
36459
|
+
optional: false
|
|
36460
|
+
}],
|
|
36350
36461
|
"recording.getDeviceConfig": [{
|
|
36351
36462
|
name: "deviceId",
|
|
36352
36463
|
form: "single",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-export-alexa",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.58",
|
|
4
4
|
"description": "Alexa Smart Home Skill export — hub-side OAuth provider + directive handler. The companion AWS Lambda forwards Alexa directives to this addon's /addon/export-alexa/directive endpoint.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|