@camstack/addon-import-alexa 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
|
@@ -19434,6 +19434,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19434
19434
|
deviceId: number(),
|
|
19435
19435
|
events: array(KeyEventSchema).readonly()
|
|
19436
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
|
+
});
|
|
19437
19465
|
object({
|
|
19438
19466
|
trackId: string(),
|
|
19439
19467
|
className: string(),
|
|
@@ -19744,12 +19772,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19744
19772
|
since: number(),
|
|
19745
19773
|
until: number(),
|
|
19746
19774
|
bucketMs: number().int().positive()
|
|
19747
|
-
}), array(object({
|
|
19748
|
-
|
|
19749
|
-
|
|
19750
|
-
|
|
19751
|
-
|
|
19752
|
-
})).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({
|
|
19753
19781
|
deviceId: number(),
|
|
19754
19782
|
cutoffMs: number()
|
|
19755
19783
|
}), object({
|
|
@@ -28791,6 +28819,39 @@ var RecordingDaysSchema = object({
|
|
|
28791
28819
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28792
28820
|
days: array(number())
|
|
28793
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
|
+
});
|
|
28794
28855
|
var RecordingManifestSchema = object({
|
|
28795
28856
|
deviceId: number(),
|
|
28796
28857
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -29025,6 +29086,13 @@ method(object({
|
|
|
29025
29086
|
}), RecordingAvailabilitySchema, {
|
|
29026
29087
|
kind: "query",
|
|
29027
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"
|
|
29028
29096
|
}), method(object({
|
|
29029
29097
|
deviceId: number(),
|
|
29030
29098
|
fromMs: number(),
|
|
@@ -29033,6 +29101,14 @@ method(object({
|
|
|
29033
29101
|
}), RecordingDaysSchema, {
|
|
29034
29102
|
kind: "query",
|
|
29035
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"
|
|
29036
29112
|
}), method(object({
|
|
29037
29113
|
deviceId: number(),
|
|
29038
29114
|
fromMs: number(),
|
|
@@ -35929,6 +36005,12 @@ Object.freeze({
|
|
|
35929
36005
|
addonId: null,
|
|
35930
36006
|
access: "view"
|
|
35931
36007
|
},
|
|
36008
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
36009
|
+
capName: "pipeline-analytics",
|
|
36010
|
+
capScope: "device",
|
|
36011
|
+
addonId: null,
|
|
36012
|
+
access: "view"
|
|
36013
|
+
},
|
|
35932
36014
|
"pipelineAnalytics.getEventMedia": {
|
|
35933
36015
|
capName: "pipeline-analytics",
|
|
35934
36016
|
capScope: "device",
|
|
@@ -37051,12 +37133,24 @@ Object.freeze({
|
|
|
37051
37133
|
addonId: null,
|
|
37052
37134
|
access: "view"
|
|
37053
37135
|
},
|
|
37136
|
+
"recording.getAvailabilityBatch": {
|
|
37137
|
+
capName: "recording",
|
|
37138
|
+
capScope: "system",
|
|
37139
|
+
addonId: null,
|
|
37140
|
+
access: "view"
|
|
37141
|
+
},
|
|
37054
37142
|
"recording.getDaysWithRecordings": {
|
|
37055
37143
|
capName: "recording",
|
|
37056
37144
|
capScope: "system",
|
|
37057
37145
|
addonId: null,
|
|
37058
37146
|
access: "view"
|
|
37059
37147
|
},
|
|
37148
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
37149
|
+
capName: "recording",
|
|
37150
|
+
capScope: "system",
|
|
37151
|
+
addonId: null,
|
|
37152
|
+
access: "view"
|
|
37153
|
+
},
|
|
37060
37154
|
"recording.getDeviceConfig": {
|
|
37061
37155
|
capName: "recording",
|
|
37062
37156
|
capScope: "system",
|
|
@@ -39661,6 +39755,11 @@ Object.freeze({
|
|
|
39661
39755
|
form: "single",
|
|
39662
39756
|
optional: false
|
|
39663
39757
|
}],
|
|
39758
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39759
|
+
name: "deviceIds",
|
|
39760
|
+
form: "array",
|
|
39761
|
+
optional: false
|
|
39762
|
+
}],
|
|
39664
39763
|
"pipelineAnalytics.getEventMedia": [{
|
|
39665
39764
|
name: "deviceId",
|
|
39666
39765
|
form: "single",
|
|
@@ -40076,11 +40175,21 @@ Object.freeze({
|
|
|
40076
40175
|
form: "single",
|
|
40077
40176
|
optional: false
|
|
40078
40177
|
}],
|
|
40178
|
+
"recording.getAvailabilityBatch": [{
|
|
40179
|
+
name: "deviceIds",
|
|
40180
|
+
form: "array",
|
|
40181
|
+
optional: false
|
|
40182
|
+
}],
|
|
40079
40183
|
"recording.getDaysWithRecordings": [{
|
|
40080
40184
|
name: "deviceId",
|
|
40081
40185
|
form: "single",
|
|
40082
40186
|
optional: false
|
|
40083
40187
|
}],
|
|
40188
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40189
|
+
name: "deviceIds",
|
|
40190
|
+
form: "array",
|
|
40191
|
+
optional: false
|
|
40192
|
+
}],
|
|
40084
40193
|
"recording.getDeviceConfig": [{
|
|
40085
40194
|
name: "deviceId",
|
|
40086
40195
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -19434,6 +19434,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19434
19434
|
deviceId: number(),
|
|
19435
19435
|
events: array(KeyEventSchema).readonly()
|
|
19436
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
|
+
});
|
|
19437
19465
|
object({
|
|
19438
19466
|
trackId: string(),
|
|
19439
19467
|
className: string(),
|
|
@@ -19744,12 +19772,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19744
19772
|
since: number(),
|
|
19745
19773
|
until: number(),
|
|
19746
19774
|
bucketMs: number().int().positive()
|
|
19747
|
-
}), array(object({
|
|
19748
|
-
|
|
19749
|
-
|
|
19750
|
-
|
|
19751
|
-
|
|
19752
|
-
})).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({
|
|
19753
19781
|
deviceId: number(),
|
|
19754
19782
|
cutoffMs: number()
|
|
19755
19783
|
}), object({
|
|
@@ -28791,6 +28819,39 @@ var RecordingDaysSchema = object({
|
|
|
28791
28819
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28792
28820
|
days: array(number())
|
|
28793
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
|
+
});
|
|
28794
28855
|
var RecordingManifestSchema = object({
|
|
28795
28856
|
deviceId: number(),
|
|
28796
28857
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -29025,6 +29086,13 @@ method(object({
|
|
|
29025
29086
|
}), RecordingAvailabilitySchema, {
|
|
29026
29087
|
kind: "query",
|
|
29027
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"
|
|
29028
29096
|
}), method(object({
|
|
29029
29097
|
deviceId: number(),
|
|
29030
29098
|
fromMs: number(),
|
|
@@ -29033,6 +29101,14 @@ method(object({
|
|
|
29033
29101
|
}), RecordingDaysSchema, {
|
|
29034
29102
|
kind: "query",
|
|
29035
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"
|
|
29036
29112
|
}), method(object({
|
|
29037
29113
|
deviceId: number(),
|
|
29038
29114
|
fromMs: number(),
|
|
@@ -35929,6 +36005,12 @@ Object.freeze({
|
|
|
35929
36005
|
addonId: null,
|
|
35930
36006
|
access: "view"
|
|
35931
36007
|
},
|
|
36008
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
36009
|
+
capName: "pipeline-analytics",
|
|
36010
|
+
capScope: "device",
|
|
36011
|
+
addonId: null,
|
|
36012
|
+
access: "view"
|
|
36013
|
+
},
|
|
35932
36014
|
"pipelineAnalytics.getEventMedia": {
|
|
35933
36015
|
capName: "pipeline-analytics",
|
|
35934
36016
|
capScope: "device",
|
|
@@ -37051,12 +37133,24 @@ Object.freeze({
|
|
|
37051
37133
|
addonId: null,
|
|
37052
37134
|
access: "view"
|
|
37053
37135
|
},
|
|
37136
|
+
"recording.getAvailabilityBatch": {
|
|
37137
|
+
capName: "recording",
|
|
37138
|
+
capScope: "system",
|
|
37139
|
+
addonId: null,
|
|
37140
|
+
access: "view"
|
|
37141
|
+
},
|
|
37054
37142
|
"recording.getDaysWithRecordings": {
|
|
37055
37143
|
capName: "recording",
|
|
37056
37144
|
capScope: "system",
|
|
37057
37145
|
addonId: null,
|
|
37058
37146
|
access: "view"
|
|
37059
37147
|
},
|
|
37148
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
37149
|
+
capName: "recording",
|
|
37150
|
+
capScope: "system",
|
|
37151
|
+
addonId: null,
|
|
37152
|
+
access: "view"
|
|
37153
|
+
},
|
|
37060
37154
|
"recording.getDeviceConfig": {
|
|
37061
37155
|
capName: "recording",
|
|
37062
37156
|
capScope: "system",
|
|
@@ -39661,6 +39755,11 @@ Object.freeze({
|
|
|
39661
39755
|
form: "single",
|
|
39662
39756
|
optional: false
|
|
39663
39757
|
}],
|
|
39758
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39759
|
+
name: "deviceIds",
|
|
39760
|
+
form: "array",
|
|
39761
|
+
optional: false
|
|
39762
|
+
}],
|
|
39664
39763
|
"pipelineAnalytics.getEventMedia": [{
|
|
39665
39764
|
name: "deviceId",
|
|
39666
39765
|
form: "single",
|
|
@@ -40076,11 +40175,21 @@ Object.freeze({
|
|
|
40076
40175
|
form: "single",
|
|
40077
40176
|
optional: false
|
|
40078
40177
|
}],
|
|
40178
|
+
"recording.getAvailabilityBatch": [{
|
|
40179
|
+
name: "deviceIds",
|
|
40180
|
+
form: "array",
|
|
40181
|
+
optional: false
|
|
40182
|
+
}],
|
|
40079
40183
|
"recording.getDaysWithRecordings": [{
|
|
40080
40184
|
name: "deviceId",
|
|
40081
40185
|
form: "single",
|
|
40082
40186
|
optional: false
|
|
40083
40187
|
}],
|
|
40188
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
40189
|
+
name: "deviceIds",
|
|
40190
|
+
form: "array",
|
|
40191
|
+
optional: false
|
|
40192
|
+
}],
|
|
40084
40193
|
"recording.getDeviceConfig": [{
|
|
40085
40194
|
name: "deviceId",
|
|
40086
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",
|