@camstack/addon-provider-gree 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
|
@@ -19194,6 +19194,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19194
19194
|
deviceId: number(),
|
|
19195
19195
|
events: array(KeyEventSchema).readonly()
|
|
19196
19196
|
});
|
|
19197
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19198
|
+
var EventDensityBucketSchema = object({
|
|
19199
|
+
bucketStart: number(),
|
|
19200
|
+
motion: number().int(),
|
|
19201
|
+
object: number().int(),
|
|
19202
|
+
audio: number().int()
|
|
19203
|
+
});
|
|
19204
|
+
/**
|
|
19205
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19206
|
+
*
|
|
19207
|
+
* TWO facts, and the timeline draws them differently:
|
|
19208
|
+
*
|
|
19209
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19210
|
+
* claim: read, and nothing happened in the window.
|
|
19211
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19212
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19213
|
+
* not quiet.
|
|
19214
|
+
*
|
|
19215
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19216
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19217
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19218
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19219
|
+
*/
|
|
19220
|
+
var EventDensityForDeviceSchema = object({
|
|
19221
|
+
deviceId: number(),
|
|
19222
|
+
read: _enum(["read", "unreadable"]),
|
|
19223
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19224
|
+
});
|
|
19197
19225
|
object({
|
|
19198
19226
|
trackId: string(),
|
|
19199
19227
|
className: string(),
|
|
@@ -19504,12 +19532,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19504
19532
|
since: number(),
|
|
19505
19533
|
until: number(),
|
|
19506
19534
|
bucketMs: number().int().positive()
|
|
19507
|
-
}), array(object({
|
|
19508
|
-
|
|
19509
|
-
|
|
19510
|
-
|
|
19511
|
-
|
|
19512
|
-
})).readonly()), method(object({
|
|
19535
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19536
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19537
|
+
since: number(),
|
|
19538
|
+
until: number(),
|
|
19539
|
+
bucketMs: number().int().positive()
|
|
19540
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19513
19541
|
deviceId: number(),
|
|
19514
19542
|
cutoffMs: number()
|
|
19515
19543
|
}), object({
|
|
@@ -28534,6 +28562,39 @@ var RecordingDaysSchema = object({
|
|
|
28534
28562
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28535
28563
|
days: array(number())
|
|
28536
28564
|
});
|
|
28565
|
+
/**
|
|
28566
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
28567
|
+
*
|
|
28568
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
28569
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
28570
|
+
* method never had to say:
|
|
28571
|
+
*
|
|
28572
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
28573
|
+
* no footage in the window", which is a real claim.
|
|
28574
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
28575
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
28576
|
+
* that emptiness means NOTHING.
|
|
28577
|
+
*
|
|
28578
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
28579
|
+
* footage when the truth is that nobody looked.
|
|
28580
|
+
*/
|
|
28581
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
28582
|
+
deviceId: number(),
|
|
28583
|
+
read: _enum(["read", "unreadable"]),
|
|
28584
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
28585
|
+
});
|
|
28586
|
+
/**
|
|
28587
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
28588
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
28589
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
28590
|
+
* the date-picker's day dots must not spell them the same.
|
|
28591
|
+
*/
|
|
28592
|
+
var RecordingDaysForDeviceSchema = object({
|
|
28593
|
+
deviceId: number(),
|
|
28594
|
+
read: _enum(["read", "unreadable"]),
|
|
28595
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28596
|
+
days: array(number()).readonly()
|
|
28597
|
+
});
|
|
28537
28598
|
var RecordingManifestSchema = object({
|
|
28538
28599
|
deviceId: number(),
|
|
28539
28600
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28768,6 +28829,13 @@ method(object({
|
|
|
28768
28829
|
}), RecordingAvailabilitySchema, {
|
|
28769
28830
|
kind: "query",
|
|
28770
28831
|
auth: "protected"
|
|
28832
|
+
}), method(object({
|
|
28833
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28834
|
+
fromMs: number(),
|
|
28835
|
+
toMs: number()
|
|
28836
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
28837
|
+
kind: "query",
|
|
28838
|
+
auth: "protected"
|
|
28771
28839
|
}), method(object({
|
|
28772
28840
|
deviceId: number(),
|
|
28773
28841
|
fromMs: number(),
|
|
@@ -28776,6 +28844,14 @@ method(object({
|
|
|
28776
28844
|
}), RecordingDaysSchema, {
|
|
28777
28845
|
kind: "query",
|
|
28778
28846
|
auth: "protected"
|
|
28847
|
+
}), method(object({
|
|
28848
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28849
|
+
fromMs: number(),
|
|
28850
|
+
toMs: number(),
|
|
28851
|
+
tzOffsetMinutes: number()
|
|
28852
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
28853
|
+
kind: "query",
|
|
28854
|
+
auth: "protected"
|
|
28779
28855
|
}), method(object({
|
|
28780
28856
|
deviceId: number(),
|
|
28781
28857
|
fromMs: number(),
|
|
@@ -35672,6 +35748,12 @@ Object.freeze({
|
|
|
35672
35748
|
addonId: null,
|
|
35673
35749
|
access: "view"
|
|
35674
35750
|
},
|
|
35751
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35752
|
+
capName: "pipeline-analytics",
|
|
35753
|
+
capScope: "device",
|
|
35754
|
+
addonId: null,
|
|
35755
|
+
access: "view"
|
|
35756
|
+
},
|
|
35675
35757
|
"pipelineAnalytics.getEventMedia": {
|
|
35676
35758
|
capName: "pipeline-analytics",
|
|
35677
35759
|
capScope: "device",
|
|
@@ -36794,12 +36876,24 @@ Object.freeze({
|
|
|
36794
36876
|
addonId: null,
|
|
36795
36877
|
access: "view"
|
|
36796
36878
|
},
|
|
36879
|
+
"recording.getAvailabilityBatch": {
|
|
36880
|
+
capName: "recording",
|
|
36881
|
+
capScope: "system",
|
|
36882
|
+
addonId: null,
|
|
36883
|
+
access: "view"
|
|
36884
|
+
},
|
|
36797
36885
|
"recording.getDaysWithRecordings": {
|
|
36798
36886
|
capName: "recording",
|
|
36799
36887
|
capScope: "system",
|
|
36800
36888
|
addonId: null,
|
|
36801
36889
|
access: "view"
|
|
36802
36890
|
},
|
|
36891
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36892
|
+
capName: "recording",
|
|
36893
|
+
capScope: "system",
|
|
36894
|
+
addonId: null,
|
|
36895
|
+
access: "view"
|
|
36896
|
+
},
|
|
36803
36897
|
"recording.getDeviceConfig": {
|
|
36804
36898
|
capName: "recording",
|
|
36805
36899
|
capScope: "system",
|
|
@@ -39404,6 +39498,11 @@ Object.freeze({
|
|
|
39404
39498
|
form: "single",
|
|
39405
39499
|
optional: false
|
|
39406
39500
|
}],
|
|
39501
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39502
|
+
name: "deviceIds",
|
|
39503
|
+
form: "array",
|
|
39504
|
+
optional: false
|
|
39505
|
+
}],
|
|
39407
39506
|
"pipelineAnalytics.getEventMedia": [{
|
|
39408
39507
|
name: "deviceId",
|
|
39409
39508
|
form: "single",
|
|
@@ -39819,11 +39918,21 @@ Object.freeze({
|
|
|
39819
39918
|
form: "single",
|
|
39820
39919
|
optional: false
|
|
39821
39920
|
}],
|
|
39921
|
+
"recording.getAvailabilityBatch": [{
|
|
39922
|
+
name: "deviceIds",
|
|
39923
|
+
form: "array",
|
|
39924
|
+
optional: false
|
|
39925
|
+
}],
|
|
39822
39926
|
"recording.getDaysWithRecordings": [{
|
|
39823
39927
|
name: "deviceId",
|
|
39824
39928
|
form: "single",
|
|
39825
39929
|
optional: false
|
|
39826
39930
|
}],
|
|
39931
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
39932
|
+
name: "deviceIds",
|
|
39933
|
+
form: "array",
|
|
39934
|
+
optional: false
|
|
39935
|
+
}],
|
|
39827
39936
|
"recording.getDeviceConfig": [{
|
|
39828
39937
|
name: "deviceId",
|
|
39829
39938
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -19193,6 +19193,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19193
19193
|
deviceId: number(),
|
|
19194
19194
|
events: array(KeyEventSchema).readonly()
|
|
19195
19195
|
});
|
|
19196
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
19197
|
+
var EventDensityBucketSchema = object({
|
|
19198
|
+
bucketStart: number(),
|
|
19199
|
+
motion: number().int(),
|
|
19200
|
+
object: number().int(),
|
|
19201
|
+
audio: number().int()
|
|
19202
|
+
});
|
|
19203
|
+
/**
|
|
19204
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
19205
|
+
*
|
|
19206
|
+
* TWO facts, and the timeline draws them differently:
|
|
19207
|
+
*
|
|
19208
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
19209
|
+
* claim: read, and nothing happened in the window.
|
|
19210
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
19211
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
19212
|
+
* not quiet.
|
|
19213
|
+
*
|
|
19214
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
19215
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
19216
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
19217
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
19218
|
+
*/
|
|
19219
|
+
var EventDensityForDeviceSchema = object({
|
|
19220
|
+
deviceId: number(),
|
|
19221
|
+
read: _enum(["read", "unreadable"]),
|
|
19222
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
19223
|
+
});
|
|
19196
19224
|
object({
|
|
19197
19225
|
trackId: string(),
|
|
19198
19226
|
className: string(),
|
|
@@ -19503,12 +19531,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19503
19531
|
since: number(),
|
|
19504
19532
|
until: number(),
|
|
19505
19533
|
bucketMs: number().int().positive()
|
|
19506
|
-
}), array(object({
|
|
19507
|
-
|
|
19508
|
-
|
|
19509
|
-
|
|
19510
|
-
|
|
19511
|
-
})).readonly()), method(object({
|
|
19534
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19535
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19536
|
+
since: number(),
|
|
19537
|
+
until: number(),
|
|
19538
|
+
bucketMs: number().int().positive()
|
|
19539
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19512
19540
|
deviceId: number(),
|
|
19513
19541
|
cutoffMs: number()
|
|
19514
19542
|
}), object({
|
|
@@ -28533,6 +28561,39 @@ var RecordingDaysSchema = object({
|
|
|
28533
28561
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28534
28562
|
days: array(number())
|
|
28535
28563
|
});
|
|
28564
|
+
/**
|
|
28565
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
28566
|
+
*
|
|
28567
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
28568
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
28569
|
+
* method never had to say:
|
|
28570
|
+
*
|
|
28571
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
28572
|
+
* no footage in the window", which is a real claim.
|
|
28573
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
28574
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
28575
|
+
* that emptiness means NOTHING.
|
|
28576
|
+
*
|
|
28577
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
28578
|
+
* footage when the truth is that nobody looked.
|
|
28579
|
+
*/
|
|
28580
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
28581
|
+
deviceId: number(),
|
|
28582
|
+
read: _enum(["read", "unreadable"]),
|
|
28583
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
28584
|
+
});
|
|
28585
|
+
/**
|
|
28586
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
28587
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
28588
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
28589
|
+
* the date-picker's day dots must not spell them the same.
|
|
28590
|
+
*/
|
|
28591
|
+
var RecordingDaysForDeviceSchema = object({
|
|
28592
|
+
deviceId: number(),
|
|
28593
|
+
read: _enum(["read", "unreadable"]),
|
|
28594
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28595
|
+
days: array(number()).readonly()
|
|
28596
|
+
});
|
|
28536
28597
|
var RecordingManifestSchema = object({
|
|
28537
28598
|
deviceId: number(),
|
|
28538
28599
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28767,6 +28828,13 @@ method(object({
|
|
|
28767
28828
|
}), RecordingAvailabilitySchema, {
|
|
28768
28829
|
kind: "query",
|
|
28769
28830
|
auth: "protected"
|
|
28831
|
+
}), method(object({
|
|
28832
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28833
|
+
fromMs: number(),
|
|
28834
|
+
toMs: number()
|
|
28835
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
28836
|
+
kind: "query",
|
|
28837
|
+
auth: "protected"
|
|
28770
28838
|
}), method(object({
|
|
28771
28839
|
deviceId: number(),
|
|
28772
28840
|
fromMs: number(),
|
|
@@ -28775,6 +28843,14 @@ method(object({
|
|
|
28775
28843
|
}), RecordingDaysSchema, {
|
|
28776
28844
|
kind: "query",
|
|
28777
28845
|
auth: "protected"
|
|
28846
|
+
}), method(object({
|
|
28847
|
+
deviceIds: array(number()).min(1).max(200),
|
|
28848
|
+
fromMs: number(),
|
|
28849
|
+
toMs: number(),
|
|
28850
|
+
tzOffsetMinutes: number()
|
|
28851
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
28852
|
+
kind: "query",
|
|
28853
|
+
auth: "protected"
|
|
28778
28854
|
}), method(object({
|
|
28779
28855
|
deviceId: number(),
|
|
28780
28856
|
fromMs: number(),
|
|
@@ -35671,6 +35747,12 @@ Object.freeze({
|
|
|
35671
35747
|
addonId: null,
|
|
35672
35748
|
access: "view"
|
|
35673
35749
|
},
|
|
35750
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35751
|
+
capName: "pipeline-analytics",
|
|
35752
|
+
capScope: "device",
|
|
35753
|
+
addonId: null,
|
|
35754
|
+
access: "view"
|
|
35755
|
+
},
|
|
35674
35756
|
"pipelineAnalytics.getEventMedia": {
|
|
35675
35757
|
capName: "pipeline-analytics",
|
|
35676
35758
|
capScope: "device",
|
|
@@ -36793,12 +36875,24 @@ Object.freeze({
|
|
|
36793
36875
|
addonId: null,
|
|
36794
36876
|
access: "view"
|
|
36795
36877
|
},
|
|
36878
|
+
"recording.getAvailabilityBatch": {
|
|
36879
|
+
capName: "recording",
|
|
36880
|
+
capScope: "system",
|
|
36881
|
+
addonId: null,
|
|
36882
|
+
access: "view"
|
|
36883
|
+
},
|
|
36796
36884
|
"recording.getDaysWithRecordings": {
|
|
36797
36885
|
capName: "recording",
|
|
36798
36886
|
capScope: "system",
|
|
36799
36887
|
addonId: null,
|
|
36800
36888
|
access: "view"
|
|
36801
36889
|
},
|
|
36890
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36891
|
+
capName: "recording",
|
|
36892
|
+
capScope: "system",
|
|
36893
|
+
addonId: null,
|
|
36894
|
+
access: "view"
|
|
36895
|
+
},
|
|
36802
36896
|
"recording.getDeviceConfig": {
|
|
36803
36897
|
capName: "recording",
|
|
36804
36898
|
capScope: "system",
|
|
@@ -39403,6 +39497,11 @@ Object.freeze({
|
|
|
39403
39497
|
form: "single",
|
|
39404
39498
|
optional: false
|
|
39405
39499
|
}],
|
|
39500
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39501
|
+
name: "deviceIds",
|
|
39502
|
+
form: "array",
|
|
39503
|
+
optional: false
|
|
39504
|
+
}],
|
|
39406
39505
|
"pipelineAnalytics.getEventMedia": [{
|
|
39407
39506
|
name: "deviceId",
|
|
39408
39507
|
form: "single",
|
|
@@ -39818,11 +39917,21 @@ Object.freeze({
|
|
|
39818
39917
|
form: "single",
|
|
39819
39918
|
optional: false
|
|
39820
39919
|
}],
|
|
39920
|
+
"recording.getAvailabilityBatch": [{
|
|
39921
|
+
name: "deviceIds",
|
|
39922
|
+
form: "array",
|
|
39923
|
+
optional: false
|
|
39924
|
+
}],
|
|
39821
39925
|
"recording.getDaysWithRecordings": [{
|
|
39822
39926
|
name: "deviceId",
|
|
39823
39927
|
form: "single",
|
|
39824
39928
|
optional: false
|
|
39825
39929
|
}],
|
|
39930
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
39931
|
+
name: "deviceIds",
|
|
39932
|
+
form: "array",
|
|
39933
|
+
optional: false
|
|
39934
|
+
}],
|
|
39826
39935
|
"recording.getDeviceConfig": [{
|
|
39827
39936
|
name: "deviceId",
|
|
39828
39937
|
form: "single",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-gree",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.51",
|
|
4
4
|
"description": "Gree air-conditioner device-provider addon for CamStack — wraps the @apocaliss92/nodegree local-UDP client (LAN discovery + AES control), exposing climate-control and fan-control",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|