@camstack/addon-provider-tuya 0.2.81 → 0.2.83
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 +38 -9
- package/dist/addon.mjs +38 -9
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -12871,6 +12871,9 @@ var QueryFilterSchema = object({
|
|
|
12871
12871
|
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
12872
12872
|
/** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
|
|
12873
12873
|
whereNot: record(string(), unknown()).optional(),
|
|
12874
|
+
/** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
|
|
12875
|
+
* empty list excludes nothing. See `QueryFilter.whereNotIn`. */
|
|
12876
|
+
whereNotIn: record(string(), array(unknown())).optional(),
|
|
12874
12877
|
orderBy: object({
|
|
12875
12878
|
field: string(),
|
|
12876
12879
|
direction: _enum(["asc", "desc"])
|
|
@@ -12891,7 +12894,8 @@ var MutationFilterSchema = object({
|
|
|
12891
12894
|
where: record(string(), unknown()).optional(),
|
|
12892
12895
|
whereIn: record(string(), array(unknown())).optional(),
|
|
12893
12896
|
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
12894
|
-
whereNot: record(string(), unknown()).optional()
|
|
12897
|
+
whereNot: record(string(), unknown()).optional(),
|
|
12898
|
+
whereNotIn: record(string(), array(unknown())).optional()
|
|
12895
12899
|
});
|
|
12896
12900
|
/**
|
|
12897
12901
|
* One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
|
|
@@ -19664,10 +19668,12 @@ var TrackSourceSchema = _enum([
|
|
|
19664
19668
|
* Terminal for the plain `markForTrain` toggle: returning it to `staging` is
|
|
19665
19669
|
* a deliberate action of the retrain page, not a side effect of a checkbox.
|
|
19666
19670
|
*
|
|
19667
|
-
* There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'`
|
|
19668
|
-
*
|
|
19669
|
-
*
|
|
19670
|
-
*
|
|
19671
|
+
* There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
|
|
19672
|
+
* every row is selectable by a positive predicate. (The filter language has
|
|
19673
|
+
* since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
|
|
19674
|
+
* of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
|
|
19675
|
+
* filtered on a NULLABLE column — see `excludeSources`. It did not when this
|
|
19676
|
+
* column was designed, and a NOT NULL column is still the better shape.)
|
|
19671
19677
|
*/
|
|
19672
19678
|
var RetrainStatusSchema = _enum([
|
|
19673
19679
|
"none",
|
|
@@ -20403,7 +20409,9 @@ var RecentTracksQueryInput = object({
|
|
|
20403
20409
|
* whose class list is unreadable are kept, and the client's rule stays the
|
|
20404
20410
|
* exact one.
|
|
20405
20411
|
*/
|
|
20406
|
-
classes: array(string()).optional()
|
|
20412
|
+
classes: array(string()).optional(),
|
|
20413
|
+
/** See {@link ExcludeSourcesDoc}. */
|
|
20414
|
+
excludeSources: array(TrackSourceSchema).optional()
|
|
20407
20415
|
});
|
|
20408
20416
|
/**
|
|
20409
20417
|
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
@@ -20831,7 +20839,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
20831
20839
|
* selected is an operator who has not narrowed anything, and an empty
|
|
20832
20840
|
* timeline would read as a camera that saw nothing.
|
|
20833
20841
|
*/
|
|
20834
|
-
classes: array(string()).optional()
|
|
20842
|
+
classes: array(string()).optional(),
|
|
20843
|
+
/** See {@link ExcludeSourcesDoc}. */
|
|
20844
|
+
excludeSources: array(TrackSourceSchema).optional()
|
|
20835
20845
|
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
|
|
20836
20846
|
kind: "mutation",
|
|
20837
20847
|
auth: "admin"
|
|
@@ -30029,8 +30039,27 @@ var PrivacyMaskRegionSchema = object({
|
|
|
30029
30039
|
/** Current on-camera privacy state — mask master enable + zones + microphone. */
|
|
30030
30040
|
var PrivacyMaskStatusSchema = object({
|
|
30031
30041
|
enabled: boolean(),
|
|
30032
|
-
/**
|
|
30033
|
-
|
|
30042
|
+
/**
|
|
30043
|
+
* Active zones (normalized 0..1). Length ≤ maxRegions.
|
|
30044
|
+
*
|
|
30045
|
+
* `null` means "no answer" — the provider has never reached this camera
|
|
30046
|
+
* (a cold `runtimeState` slice, a battery camera asleep) or the read
|
|
30047
|
+
* failed. A consumer must render it as UNKNOWN and never as "this camera
|
|
30048
|
+
* has no zones": those two look identical to an operator right up to the
|
|
30049
|
+
* moment one of them is acted on, and acting on them differs completely.
|
|
30050
|
+
* The switch group turned an unanswered read into *"nothing is set up for
|
|
30051
|
+
* it to act on"* — an instruction to go and draw a zone that already
|
|
30052
|
+
* exists — and this editor seeded an EMPTY canvas from it, one Save away
|
|
30053
|
+
* from deleting the mask it could not read.
|
|
30054
|
+
*
|
|
30055
|
+
* Empty-and-answered is `[]` and stays a real answer: this camera genuinely
|
|
30056
|
+
* has no zones. The distinction is the same one {@link
|
|
30057
|
+
* PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
|
|
30058
|
+
* microphone, on the very same payload — both planes come from ONE refresh,
|
|
30059
|
+
* so it was never coherent for one of them to be able to say "unknown"
|
|
30060
|
+
* while the other could not.
|
|
30061
|
+
*/
|
|
30062
|
+
regions: array(PrivacyMaskRegionSchema).nullable(),
|
|
30034
30063
|
/**
|
|
30035
30064
|
* Is the camera capturing sound right now? Read from the camera, never from
|
|
30036
30065
|
* a server-side mirror.
|
package/dist/addon.mjs
CHANGED
|
@@ -12870,6 +12870,9 @@ var QueryFilterSchema = object({
|
|
|
12870
12870
|
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
12871
12871
|
/** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
|
|
12872
12872
|
whereNot: record(string(), unknown()).optional(),
|
|
12873
|
+
/** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
|
|
12874
|
+
* empty list excludes nothing. See `QueryFilter.whereNotIn`. */
|
|
12875
|
+
whereNotIn: record(string(), array(unknown())).optional(),
|
|
12873
12876
|
orderBy: object({
|
|
12874
12877
|
field: string(),
|
|
12875
12878
|
direction: _enum(["asc", "desc"])
|
|
@@ -12890,7 +12893,8 @@ var MutationFilterSchema = object({
|
|
|
12890
12893
|
where: record(string(), unknown()).optional(),
|
|
12891
12894
|
whereIn: record(string(), array(unknown())).optional(),
|
|
12892
12895
|
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
12893
|
-
whereNot: record(string(), unknown()).optional()
|
|
12896
|
+
whereNot: record(string(), unknown()).optional(),
|
|
12897
|
+
whereNotIn: record(string(), array(unknown())).optional()
|
|
12894
12898
|
});
|
|
12895
12899
|
/**
|
|
12896
12900
|
* One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
|
|
@@ -19663,10 +19667,12 @@ var TrackSourceSchema = _enum([
|
|
|
19663
19667
|
* Terminal for the plain `markForTrain` toggle: returning it to `staging` is
|
|
19664
19668
|
* a deliberate action of the retrain page, not a side effect of a checkbox.
|
|
19665
19669
|
*
|
|
19666
|
-
* There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'`
|
|
19667
|
-
*
|
|
19668
|
-
*
|
|
19669
|
-
*
|
|
19670
|
+
* There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
|
|
19671
|
+
* every row is selectable by a positive predicate. (The filter language has
|
|
19672
|
+
* since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
|
|
19673
|
+
* of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
|
|
19674
|
+
* filtered on a NULLABLE column — see `excludeSources`. It did not when this
|
|
19675
|
+
* column was designed, and a NOT NULL column is still the better shape.)
|
|
19670
19676
|
*/
|
|
19671
19677
|
var RetrainStatusSchema = _enum([
|
|
19672
19678
|
"none",
|
|
@@ -20402,7 +20408,9 @@ var RecentTracksQueryInput = object({
|
|
|
20402
20408
|
* whose class list is unreadable are kept, and the client's rule stays the
|
|
20403
20409
|
* exact one.
|
|
20404
20410
|
*/
|
|
20405
|
-
classes: array(string()).optional()
|
|
20411
|
+
classes: array(string()).optional(),
|
|
20412
|
+
/** See {@link ExcludeSourcesDoc}. */
|
|
20413
|
+
excludeSources: array(TrackSourceSchema).optional()
|
|
20406
20414
|
});
|
|
20407
20415
|
/**
|
|
20408
20416
|
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
@@ -20830,7 +20838,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
20830
20838
|
* selected is an operator who has not narrowed anything, and an empty
|
|
20831
20839
|
* timeline would read as a camera that saw nothing.
|
|
20832
20840
|
*/
|
|
20833
|
-
classes: array(string()).optional()
|
|
20841
|
+
classes: array(string()).optional(),
|
|
20842
|
+
/** See {@link ExcludeSourcesDoc}. */
|
|
20843
|
+
excludeSources: array(TrackSourceSchema).optional()
|
|
20834
20844
|
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
|
|
20835
20845
|
kind: "mutation",
|
|
20836
20846
|
auth: "admin"
|
|
@@ -30028,8 +30038,27 @@ var PrivacyMaskRegionSchema = object({
|
|
|
30028
30038
|
/** Current on-camera privacy state — mask master enable + zones + microphone. */
|
|
30029
30039
|
var PrivacyMaskStatusSchema = object({
|
|
30030
30040
|
enabled: boolean(),
|
|
30031
|
-
/**
|
|
30032
|
-
|
|
30041
|
+
/**
|
|
30042
|
+
* Active zones (normalized 0..1). Length ≤ maxRegions.
|
|
30043
|
+
*
|
|
30044
|
+
* `null` means "no answer" — the provider has never reached this camera
|
|
30045
|
+
* (a cold `runtimeState` slice, a battery camera asleep) or the read
|
|
30046
|
+
* failed. A consumer must render it as UNKNOWN and never as "this camera
|
|
30047
|
+
* has no zones": those two look identical to an operator right up to the
|
|
30048
|
+
* moment one of them is acted on, and acting on them differs completely.
|
|
30049
|
+
* The switch group turned an unanswered read into *"nothing is set up for
|
|
30050
|
+
* it to act on"* — an instruction to go and draw a zone that already
|
|
30051
|
+
* exists — and this editor seeded an EMPTY canvas from it, one Save away
|
|
30052
|
+
* from deleting the mask it could not read.
|
|
30053
|
+
*
|
|
30054
|
+
* Empty-and-answered is `[]` and stays a real answer: this camera genuinely
|
|
30055
|
+
* has no zones. The distinction is the same one {@link
|
|
30056
|
+
* PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
|
|
30057
|
+
* microphone, on the very same payload — both planes come from ONE refresh,
|
|
30058
|
+
* so it was never coherent for one of them to be able to say "unknown"
|
|
30059
|
+
* while the other could not.
|
|
30060
|
+
*/
|
|
30061
|
+
regions: array(PrivacyMaskRegionSchema).nullable(),
|
|
30033
30062
|
/**
|
|
30034
30063
|
* Is the camera capturing sound right now? Read from the camera, never from
|
|
30035
30064
|
* a server-side mirror.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-tuya",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.83",
|
|
4
4
|
"description": "Tuya / Smart Life device-provider addon for CamStack — account-onboarded (Tuya IoT cloud fetch of device localKeys) + LOCAL DP control via the @apocaliss92/nodetuya encrypted-LAN client, exposing switch / water-heater-family kettle entities",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|