@camstack/addon-provider-gree 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
|
@@ -15878,6 +15878,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
15878
15878
|
"device-offline",
|
|
15879
15879
|
"device-disabled",
|
|
15880
15880
|
"device-enabled",
|
|
15881
|
+
"device-battery-low",
|
|
15882
|
+
"device-battery-normal",
|
|
15881
15883
|
"stream-online",
|
|
15882
15884
|
"stream-offline",
|
|
15883
15885
|
"node-online",
|
|
@@ -19192,6 +19194,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19192
19194
|
deviceId: number(),
|
|
19193
19195
|
events: array(KeyEventSchema).readonly()
|
|
19194
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
|
+
});
|
|
19195
19225
|
object({
|
|
19196
19226
|
trackId: string(),
|
|
19197
19227
|
className: string(),
|
|
@@ -19502,12 +19532,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19502
19532
|
since: number(),
|
|
19503
19533
|
until: number(),
|
|
19504
19534
|
bucketMs: number().int().positive()
|
|
19505
|
-
}), array(object({
|
|
19506
|
-
|
|
19507
|
-
|
|
19508
|
-
|
|
19509
|
-
|
|
19510
|
-
})).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({
|
|
19511
19541
|
deviceId: number(),
|
|
19512
19542
|
cutoffMs: number()
|
|
19513
19543
|
}), object({
|
|
@@ -28532,6 +28562,39 @@ var RecordingDaysSchema = object({
|
|
|
28532
28562
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28533
28563
|
days: array(number())
|
|
28534
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
|
+
});
|
|
28535
28598
|
var RecordingManifestSchema = object({
|
|
28536
28599
|
deviceId: number(),
|
|
28537
28600
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28766,6 +28829,13 @@ method(object({
|
|
|
28766
28829
|
}), RecordingAvailabilitySchema, {
|
|
28767
28830
|
kind: "query",
|
|
28768
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"
|
|
28769
28839
|
}), method(object({
|
|
28770
28840
|
deviceId: number(),
|
|
28771
28841
|
fromMs: number(),
|
|
@@ -28774,6 +28844,14 @@ method(object({
|
|
|
28774
28844
|
}), RecordingDaysSchema, {
|
|
28775
28845
|
kind: "query",
|
|
28776
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"
|
|
28777
28855
|
}), method(object({
|
|
28778
28856
|
deviceId: number(),
|
|
28779
28857
|
fromMs: number(),
|
|
@@ -35670,6 +35748,12 @@ Object.freeze({
|
|
|
35670
35748
|
addonId: null,
|
|
35671
35749
|
access: "view"
|
|
35672
35750
|
},
|
|
35751
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35752
|
+
capName: "pipeline-analytics",
|
|
35753
|
+
capScope: "device",
|
|
35754
|
+
addonId: null,
|
|
35755
|
+
access: "view"
|
|
35756
|
+
},
|
|
35673
35757
|
"pipelineAnalytics.getEventMedia": {
|
|
35674
35758
|
capName: "pipeline-analytics",
|
|
35675
35759
|
capScope: "device",
|
|
@@ -36792,12 +36876,24 @@ Object.freeze({
|
|
|
36792
36876
|
addonId: null,
|
|
36793
36877
|
access: "view"
|
|
36794
36878
|
},
|
|
36879
|
+
"recording.getAvailabilityBatch": {
|
|
36880
|
+
capName: "recording",
|
|
36881
|
+
capScope: "system",
|
|
36882
|
+
addonId: null,
|
|
36883
|
+
access: "view"
|
|
36884
|
+
},
|
|
36795
36885
|
"recording.getDaysWithRecordings": {
|
|
36796
36886
|
capName: "recording",
|
|
36797
36887
|
capScope: "system",
|
|
36798
36888
|
addonId: null,
|
|
36799
36889
|
access: "view"
|
|
36800
36890
|
},
|
|
36891
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36892
|
+
capName: "recording",
|
|
36893
|
+
capScope: "system",
|
|
36894
|
+
addonId: null,
|
|
36895
|
+
access: "view"
|
|
36896
|
+
},
|
|
36801
36897
|
"recording.getDeviceConfig": {
|
|
36802
36898
|
capName: "recording",
|
|
36803
36899
|
capScope: "system",
|
|
@@ -39402,6 +39498,11 @@ Object.freeze({
|
|
|
39402
39498
|
form: "single",
|
|
39403
39499
|
optional: false
|
|
39404
39500
|
}],
|
|
39501
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39502
|
+
name: "deviceIds",
|
|
39503
|
+
form: "array",
|
|
39504
|
+
optional: false
|
|
39505
|
+
}],
|
|
39405
39506
|
"pipelineAnalytics.getEventMedia": [{
|
|
39406
39507
|
name: "deviceId",
|
|
39407
39508
|
form: "single",
|
|
@@ -39817,11 +39918,21 @@ Object.freeze({
|
|
|
39817
39918
|
form: "single",
|
|
39818
39919
|
optional: false
|
|
39819
39920
|
}],
|
|
39921
|
+
"recording.getAvailabilityBatch": [{
|
|
39922
|
+
name: "deviceIds",
|
|
39923
|
+
form: "array",
|
|
39924
|
+
optional: false
|
|
39925
|
+
}],
|
|
39820
39926
|
"recording.getDaysWithRecordings": [{
|
|
39821
39927
|
name: "deviceId",
|
|
39822
39928
|
form: "single",
|
|
39823
39929
|
optional: false
|
|
39824
39930
|
}],
|
|
39931
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
39932
|
+
name: "deviceIds",
|
|
39933
|
+
form: "array",
|
|
39934
|
+
optional: false
|
|
39935
|
+
}],
|
|
39825
39936
|
"recording.getDeviceConfig": [{
|
|
39826
39937
|
name: "deviceId",
|
|
39827
39938
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -15877,6 +15877,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
15877
15877
|
"device-offline",
|
|
15878
15878
|
"device-disabled",
|
|
15879
15879
|
"device-enabled",
|
|
15880
|
+
"device-battery-low",
|
|
15881
|
+
"device-battery-normal",
|
|
15880
15882
|
"stream-online",
|
|
15881
15883
|
"stream-offline",
|
|
15882
15884
|
"node-online",
|
|
@@ -19191,6 +19193,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
19191
19193
|
deviceId: number(),
|
|
19192
19194
|
events: array(KeyEventSchema).readonly()
|
|
19193
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
|
+
});
|
|
19194
19224
|
object({
|
|
19195
19225
|
trackId: string(),
|
|
19196
19226
|
className: string(),
|
|
@@ -19501,12 +19531,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19501
19531
|
since: number(),
|
|
19502
19532
|
until: number(),
|
|
19503
19533
|
bucketMs: number().int().positive()
|
|
19504
|
-
}), array(object({
|
|
19505
|
-
|
|
19506
|
-
|
|
19507
|
-
|
|
19508
|
-
|
|
19509
|
-
})).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({
|
|
19510
19540
|
deviceId: number(),
|
|
19511
19541
|
cutoffMs: number()
|
|
19512
19542
|
}), object({
|
|
@@ -28531,6 +28561,39 @@ var RecordingDaysSchema = object({
|
|
|
28531
28561
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
28532
28562
|
days: array(number())
|
|
28533
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
|
+
});
|
|
28534
28597
|
var RecordingManifestSchema = object({
|
|
28535
28598
|
deviceId: number(),
|
|
28536
28599
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -28765,6 +28828,13 @@ method(object({
|
|
|
28765
28828
|
}), RecordingAvailabilitySchema, {
|
|
28766
28829
|
kind: "query",
|
|
28767
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"
|
|
28768
28838
|
}), method(object({
|
|
28769
28839
|
deviceId: number(),
|
|
28770
28840
|
fromMs: number(),
|
|
@@ -28773,6 +28843,14 @@ method(object({
|
|
|
28773
28843
|
}), RecordingDaysSchema, {
|
|
28774
28844
|
kind: "query",
|
|
28775
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"
|
|
28776
28854
|
}), method(object({
|
|
28777
28855
|
deviceId: number(),
|
|
28778
28856
|
fromMs: number(),
|
|
@@ -35669,6 +35747,12 @@ Object.freeze({
|
|
|
35669
35747
|
addonId: null,
|
|
35670
35748
|
access: "view"
|
|
35671
35749
|
},
|
|
35750
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35751
|
+
capName: "pipeline-analytics",
|
|
35752
|
+
capScope: "device",
|
|
35753
|
+
addonId: null,
|
|
35754
|
+
access: "view"
|
|
35755
|
+
},
|
|
35672
35756
|
"pipelineAnalytics.getEventMedia": {
|
|
35673
35757
|
capName: "pipeline-analytics",
|
|
35674
35758
|
capScope: "device",
|
|
@@ -36791,12 +36875,24 @@ Object.freeze({
|
|
|
36791
36875
|
addonId: null,
|
|
36792
36876
|
access: "view"
|
|
36793
36877
|
},
|
|
36878
|
+
"recording.getAvailabilityBatch": {
|
|
36879
|
+
capName: "recording",
|
|
36880
|
+
capScope: "system",
|
|
36881
|
+
addonId: null,
|
|
36882
|
+
access: "view"
|
|
36883
|
+
},
|
|
36794
36884
|
"recording.getDaysWithRecordings": {
|
|
36795
36885
|
capName: "recording",
|
|
36796
36886
|
capScope: "system",
|
|
36797
36887
|
addonId: null,
|
|
36798
36888
|
access: "view"
|
|
36799
36889
|
},
|
|
36890
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36891
|
+
capName: "recording",
|
|
36892
|
+
capScope: "system",
|
|
36893
|
+
addonId: null,
|
|
36894
|
+
access: "view"
|
|
36895
|
+
},
|
|
36800
36896
|
"recording.getDeviceConfig": {
|
|
36801
36897
|
capName: "recording",
|
|
36802
36898
|
capScope: "system",
|
|
@@ -39401,6 +39497,11 @@ Object.freeze({
|
|
|
39401
39497
|
form: "single",
|
|
39402
39498
|
optional: false
|
|
39403
39499
|
}],
|
|
39500
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
39501
|
+
name: "deviceIds",
|
|
39502
|
+
form: "array",
|
|
39503
|
+
optional: false
|
|
39504
|
+
}],
|
|
39404
39505
|
"pipelineAnalytics.getEventMedia": [{
|
|
39405
39506
|
name: "deviceId",
|
|
39406
39507
|
form: "single",
|
|
@@ -39816,11 +39917,21 @@ Object.freeze({
|
|
|
39816
39917
|
form: "single",
|
|
39817
39918
|
optional: false
|
|
39818
39919
|
}],
|
|
39920
|
+
"recording.getAvailabilityBatch": [{
|
|
39921
|
+
name: "deviceIds",
|
|
39922
|
+
form: "array",
|
|
39923
|
+
optional: false
|
|
39924
|
+
}],
|
|
39819
39925
|
"recording.getDaysWithRecordings": [{
|
|
39820
39926
|
name: "deviceId",
|
|
39821
39927
|
form: "single",
|
|
39822
39928
|
optional: false
|
|
39823
39929
|
}],
|
|
39930
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
39931
|
+
name: "deviceIds",
|
|
39932
|
+
form: "array",
|
|
39933
|
+
optional: false
|
|
39934
|
+
}],
|
|
39824
39935
|
"recording.getDeviceConfig": [{
|
|
39825
39936
|
name: "deviceId",
|
|
39826
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",
|