@camstack/addon-import-alexa 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
|
@@ -16118,6 +16118,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
16118
16118
|
"device-offline",
|
|
16119
16119
|
"device-disabled",
|
|
16120
16120
|
"device-enabled",
|
|
16121
|
+
"device-battery-low",
|
|
16122
|
+
"device-battery-normal",
|
|
16121
16123
|
"stream-online",
|
|
16122
16124
|
"stream-offline",
|
|
16123
16125
|
"node-online",
|
|
@@ -19432,6 +19434,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19432
19434
|
deviceId: number(),
|
|
19433
19435
|
events: array(KeyEventSchema).readonly()
|
|
19434
19436
|
});
|
|
19437
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19438
|
+
var EventDensityBucketSchema = object({
|
|
19439
|
+
bucketStart: number(),
|
|
19440
|
+
motion: number().int(),
|
|
19441
|
+
object: number().int(),
|
|
19442
|
+
audio: number().int()
|
|
19443
|
+
});
|
|
19444
|
+
/**
|
|
19445
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19446
|
+
*
|
|
19447
|
+
* TWO facts, and the timeline draws them differently:
|
|
19448
|
+
*
|
|
19449
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19450
|
+
* claim: read, and nothing happened in the window.
|
|
19451
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19452
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19453
|
+
* not quiet.
|
|
19454
|
+
*
|
|
19455
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19456
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19457
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19458
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19459
|
+
*/
|
|
19460
|
+
var EventDensityForDeviceSchema = object({
|
|
19461
|
+
deviceId: number(),
|
|
19462
|
+
read: _enum(["read", "unreadable"]),
|
|
19463
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19464
|
+
});
|
|
19435
19465
|
object({
|
|
19436
19466
|
trackId: string(),
|
|
19437
19467
|
className: string(),
|
|
@@ -19742,12 +19772,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19742
19772
|
since: number(),
|
|
19743
19773
|
until: number(),
|
|
19744
19774
|
bucketMs: number().int().positive()
|
|
19745
|
-
}), array(object({
|
|
19746
|
-
|
|
19747
|
-
|
|
19748
|
-
|
|
19749
|
-
|
|
19750
|
-
})).readonly()), method(object({
|
|
19775
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19776
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19777
|
+
since: number(),
|
|
19778
|
+
until: number(),
|
|
19779
|
+
bucketMs: number().int().positive()
|
|
19780
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19751
19781
|
deviceId: number(),
|
|
19752
19782
|
cutoffMs: number()
|
|
19753
19783
|
}), object({
|
|
@@ -28789,6 +28819,39 @@ var RecordingDaysSchema = object({
|
|
|
28789
28819
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28790
28820
|
days: array(number())
|
|
28791
28821
|
});
|
|
28822
|
+
/**
|
|
28823
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
28824
|
+
*
|
|
28825
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
28826
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
28827
|
+
* method never had to say:
|
|
28828
|
+
*
|
|
28829
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
28830
|
+
* no footage in the window", which is a real claim.
|
|
28831
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
28832
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
28833
|
+
* that emptiness means NOTHING.
|
|
28834
|
+
*
|
|
28835
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
28836
|
+
* footage when the truth is that nobody looked.
|
|
28837
|
+
*/
|
|
28838
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
28839
|
+
deviceId: number(),
|
|
28840
|
+
read: _enum(["read", "unreadable"]),
|
|
28841
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
28842
|
+
});
|
|
28843
|
+
/**
|
|
28844
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
28845
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
28846
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
28847
|
+
* the date-picker's day dots must not spell them the same.
|
|
28848
|
+
*/
|
|
28849
|
+
var RecordingDaysForDeviceSchema = object({
|
|
28850
|
+
deviceId: number(),
|
|
28851
|
+
read: _enum(["read", "unreadable"]),
|
|
28852
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28853
|
+
days: array(number()).readonly()
|
|
28854
|
+
});
|
|
28792
28855
|
var RecordingManifestSchema = object({
|
|
28793
28856
|
deviceId: number(),
|
|
28794
28857
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -29023,6 +29086,13 @@ method(object({
|
|
|
29023
29086
|
}), RecordingAvailabilitySchema, {
|
|
29024
29087
|
kind: "query",
|
|
29025
29088
|
auth: "protected"
|
|
29089
|
+
}), method(object({
|
|
29090
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29091
|
+
fromMs: number(),
|
|
29092
|
+
toMs: number()
|
|
29093
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
29094
|
+
kind: "query",
|
|
29095
|
+
auth: "protected"
|
|
29026
29096
|
}), method(object({
|
|
29027
29097
|
deviceId: number(),
|
|
29028
29098
|
fromMs: number(),
|
|
@@ -29031,6 +29101,14 @@ method(object({
|
|
|
29031
29101
|
}), RecordingDaysSchema, {
|
|
29032
29102
|
kind: "query",
|
|
29033
29103
|
auth: "protected"
|
|
29104
|
+
}), method(object({
|
|
29105
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29106
|
+
fromMs: number(),
|
|
29107
|
+
toMs: number(),
|
|
29108
|
+
tzOffsetMinutes: number()
|
|
29109
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
29110
|
+
kind: "query",
|
|
29111
|
+
auth: "protected"
|
|
29034
29112
|
}), method(object({
|
|
29035
29113
|
deviceId: number(),
|
|
29036
29114
|
fromMs: number(),
|
|
@@ -35927,6 +36005,12 @@ Object.freeze({
|
|
|
35927
36005
|
addonId: null,
|
|
35928
36006
|
access: "view"
|
|
35929
36007
|
},
|
|
36008
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
36009
|
+
capName: "pipeline-analytics",
|
|
36010
|
+
capScope: "device",
|
|
36011
|
+
addonId: null,
|
|
36012
|
+
access: "view"
|
|
36013
|
+
},
|
|
35930
36014
|
"pipelineAnalytics.getEventMedia": {
|
|
35931
36015
|
capName: "pipeline-analytics",
|
|
35932
36016
|
capScope: "device",
|
|
@@ -37049,12 +37133,24 @@ Object.freeze({
|
|
|
37049
37133
|
addonId: null,
|
|
37050
37134
|
access: "view"
|
|
37051
37135
|
},
|
|
37136
|
+
"recording.getAvailabilityBatch": {
|
|
37137
|
+
capName: "recording",
|
|
37138
|
+
capScope: "system",
|
|
37139
|
+
addonId: null,
|
|
37140
|
+
access: "view"
|
|
37141
|
+
},
|
|
37052
37142
|
"recording.getDaysWithRecordings": {
|
|
37053
37143
|
capName: "recording",
|
|
37054
37144
|
capScope: "system",
|
|
37055
37145
|
addonId: null,
|
|
37056
37146
|
access: "view"
|
|
37057
37147
|
},
|
|
37148
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
37149
|
+
capName: "recording",
|
|
37150
|
+
capScope: "system",
|
|
37151
|
+
addonId: null,
|
|
37152
|
+
access: "view"
|
|
37153
|
+
},
|
|
37058
37154
|
"recording.getDeviceConfig": {
|
|
37059
37155
|
capName: "recording",
|
|
37060
37156
|
capScope: "system",
|
|
@@ -39659,6 +39755,11 @@ Object.freeze({
|
|
|
39659
39755
|
form: "single",
|
|
39660
39756
|
optional: false
|
|
39661
39757
|
}],
|
|
39758
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39759
|
+
name: "deviceIds",
|
|
39760
|
+
form: "array",
|
|
39761
|
+
optional: false
|
|
39762
|
+
}],
|
|
39662
39763
|
"pipelineAnalytics.getEventMedia": [{
|
|
39663
39764
|
name: "deviceId",
|
|
39664
39765
|
form: "single",
|
|
@@ -40074,11 +40175,21 @@ Object.freeze({
|
|
|
40074
40175
|
form: "single",
|
|
40075
40176
|
optional: false
|
|
40076
40177
|
}],
|
|
40178
|
+
"recording.getAvailabilityBatch": [{
|
|
40179
|
+
name: "deviceIds",
|
|
40180
|
+
form: "array",
|
|
40181
|
+
optional: false
|
|
40182
|
+
}],
|
|
40077
40183
|
"recording.getDaysWithRecordings": [{
|
|
40078
40184
|
name: "deviceId",
|
|
40079
40185
|
form: "single",
|
|
40080
40186
|
optional: false
|
|
40081
40187
|
}],
|
|
40188
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40189
|
+
name: "deviceIds",
|
|
40190
|
+
form: "array",
|
|
40191
|
+
optional: false
|
|
40192
|
+
}],
|
|
40082
40193
|
"recording.getDeviceConfig": [{
|
|
40083
40194
|
name: "deviceId",
|
|
40084
40195
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -16118,6 +16118,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
16118
16118
|
"device-offline",
|
|
16119
16119
|
"device-disabled",
|
|
16120
16120
|
"device-enabled",
|
|
16121
|
+
"device-battery-low",
|
|
16122
|
+
"device-battery-normal",
|
|
16121
16123
|
"stream-online",
|
|
16122
16124
|
"stream-offline",
|
|
16123
16125
|
"node-online",
|
|
@@ -19432,6 +19434,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19432
19434
|
deviceId: number(),
|
|
19433
19435
|
events: array(KeyEventSchema).readonly()
|
|
19434
19436
|
});
|
|
19437
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19438
|
+
var EventDensityBucketSchema = object({
|
|
19439
|
+
bucketStart: number(),
|
|
19440
|
+
motion: number().int(),
|
|
19441
|
+
object: number().int(),
|
|
19442
|
+
audio: number().int()
|
|
19443
|
+
});
|
|
19444
|
+
/**
|
|
19445
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19446
|
+
*
|
|
19447
|
+
* TWO facts, and the timeline draws them differently:
|
|
19448
|
+
*
|
|
19449
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19450
|
+
* claim: read, and nothing happened in the window.
|
|
19451
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19452
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19453
|
+
* not quiet.
|
|
19454
|
+
*
|
|
19455
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19456
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19457
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19458
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19459
|
+
*/
|
|
19460
|
+
var EventDensityForDeviceSchema = object({
|
|
19461
|
+
deviceId: number(),
|
|
19462
|
+
read: _enum(["read", "unreadable"]),
|
|
19463
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19464
|
+
});
|
|
19435
19465
|
object({
|
|
19436
19466
|
trackId: string(),
|
|
19437
19467
|
className: string(),
|
|
@@ -19742,12 +19772,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19742
19772
|
since: number(),
|
|
19743
19773
|
until: number(),
|
|
19744
19774
|
bucketMs: number().int().positive()
|
|
19745
|
-
}), array(object({
|
|
19746
|
-
|
|
19747
|
-
|
|
19748
|
-
|
|
19749
|
-
|
|
19750
|
-
})).readonly()), method(object({
|
|
19775
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19776
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19777
|
+
since: number(),
|
|
19778
|
+
until: number(),
|
|
19779
|
+
bucketMs: number().int().positive()
|
|
19780
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19751
19781
|
deviceId: number(),
|
|
19752
19782
|
cutoffMs: number()
|
|
19753
19783
|
}), object({
|
|
@@ -28789,6 +28819,39 @@ var RecordingDaysSchema = object({
|
|
|
28789
28819
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28790
28820
|
days: array(number())
|
|
28791
28821
|
});
|
|
28822
|
+
/**
|
|
28823
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
28824
|
+
*
|
|
28825
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
28826
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
28827
|
+
* method never had to say:
|
|
28828
|
+
*
|
|
28829
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
28830
|
+
* no footage in the window", which is a real claim.
|
|
28831
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
28832
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
28833
|
+
* that emptiness means NOTHING.
|
|
28834
|
+
*
|
|
28835
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
28836
|
+
* footage when the truth is that nobody looked.
|
|
28837
|
+
*/
|
|
28838
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
28839
|
+
deviceId: number(),
|
|
28840
|
+
read: _enum(["read", "unreadable"]),
|
|
28841
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
28842
|
+
});
|
|
28843
|
+
/**
|
|
28844
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
28845
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
28846
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
28847
|
+
* the date-picker's day dots must not spell them the same.
|
|
28848
|
+
*/
|
|
28849
|
+
var RecordingDaysForDeviceSchema = object({
|
|
28850
|
+
deviceId: number(),
|
|
28851
|
+
read: _enum(["read", "unreadable"]),
|
|
28852
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28853
|
+
days: array(number()).readonly()
|
|
28854
|
+
});
|
|
28792
28855
|
var RecordingManifestSchema = object({
|
|
28793
28856
|
deviceId: number(),
|
|
28794
28857
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -29023,6 +29086,13 @@ method(object({
|
|
|
29023
29086
|
}), RecordingAvailabilitySchema, {
|
|
29024
29087
|
kind: "query",
|
|
29025
29088
|
auth: "protected"
|
|
29089
|
+
}), method(object({
|
|
29090
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29091
|
+
fromMs: number(),
|
|
29092
|
+
toMs: number()
|
|
29093
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
29094
|
+
kind: "query",
|
|
29095
|
+
auth: "protected"
|
|
29026
29096
|
}), method(object({
|
|
29027
29097
|
deviceId: number(),
|
|
29028
29098
|
fromMs: number(),
|
|
@@ -29031,6 +29101,14 @@ method(object({
|
|
|
29031
29101
|
}), RecordingDaysSchema, {
|
|
29032
29102
|
kind: "query",
|
|
29033
29103
|
auth: "protected"
|
|
29104
|
+
}), method(object({
|
|
29105
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29106
|
+
fromMs: number(),
|
|
29107
|
+
toMs: number(),
|
|
29108
|
+
tzOffsetMinutes: number()
|
|
29109
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
29110
|
+
kind: "query",
|
|
29111
|
+
auth: "protected"
|
|
29034
29112
|
}), method(object({
|
|
29035
29113
|
deviceId: number(),
|
|
29036
29114
|
fromMs: number(),
|
|
@@ -35927,6 +36005,12 @@ Object.freeze({
|
|
|
35927
36005
|
addonId: null,
|
|
35928
36006
|
access: "view"
|
|
35929
36007
|
},
|
|
36008
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
36009
|
+
capName: "pipeline-analytics",
|
|
36010
|
+
capScope: "device",
|
|
36011
|
+
addonId: null,
|
|
36012
|
+
access: "view"
|
|
36013
|
+
},
|
|
35930
36014
|
"pipelineAnalytics.getEventMedia": {
|
|
35931
36015
|
capName: "pipeline-analytics",
|
|
35932
36016
|
capScope: "device",
|
|
@@ -37049,12 +37133,24 @@ Object.freeze({
|
|
|
37049
37133
|
addonId: null,
|
|
37050
37134
|
access: "view"
|
|
37051
37135
|
},
|
|
37136
|
+
"recording.getAvailabilityBatch": {
|
|
37137
|
+
capName: "recording",
|
|
37138
|
+
capScope: "system",
|
|
37139
|
+
addonId: null,
|
|
37140
|
+
access: "view"
|
|
37141
|
+
},
|
|
37052
37142
|
"recording.getDaysWithRecordings": {
|
|
37053
37143
|
capName: "recording",
|
|
37054
37144
|
capScope: "system",
|
|
37055
37145
|
addonId: null,
|
|
37056
37146
|
access: "view"
|
|
37057
37147
|
},
|
|
37148
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
37149
|
+
capName: "recording",
|
|
37150
|
+
capScope: "system",
|
|
37151
|
+
addonId: null,
|
|
37152
|
+
access: "view"
|
|
37153
|
+
},
|
|
37058
37154
|
"recording.getDeviceConfig": {
|
|
37059
37155
|
capName: "recording",
|
|
37060
37156
|
capScope: "system",
|
|
@@ -39659,6 +39755,11 @@ Object.freeze({
|
|
|
39659
39755
|
form: "single",
|
|
39660
39756
|
optional: false
|
|
39661
39757
|
}],
|
|
39758
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39759
|
+
name: "deviceIds",
|
|
39760
|
+
form: "array",
|
|
39761
|
+
optional: false
|
|
39762
|
+
}],
|
|
39662
39763
|
"pipelineAnalytics.getEventMedia": [{
|
|
39663
39764
|
name: "deviceId",
|
|
39664
39765
|
form: "single",
|
|
@@ -40074,11 +40175,21 @@ Object.freeze({
|
|
|
40074
40175
|
form: "single",
|
|
40075
40176
|
optional: false
|
|
40076
40177
|
}],
|
|
40178
|
+
"recording.getAvailabilityBatch": [{
|
|
40179
|
+
name: "deviceIds",
|
|
40180
|
+
form: "array",
|
|
40181
|
+
optional: false
|
|
40182
|
+
}],
|
|
40077
40183
|
"recording.getDaysWithRecordings": [{
|
|
40078
40184
|
name: "deviceId",
|
|
40079
40185
|
form: "single",
|
|
40080
40186
|
optional: false
|
|
40081
40187
|
}],
|
|
40188
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40189
|
+
name: "deviceIds",
|
|
40190
|
+
form: "array",
|
|
40191
|
+
optional: false
|
|
40192
|
+
}],
|
|
40082
40193
|
"recording.getDeviceConfig": [{
|
|
40083
40194
|
name: "deviceId",
|
|
40084
40195
|
form: "single",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-import-alexa",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.51",
|
|
4
4
|
"description": "Alexa device-import provider for CamStack — imports the smart-home devices in a user's Alexa account via the unofficial alexa-remote2 cookie/token client (the inverse of the Alexa exporter)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|