@camstack/addon-provider-dreame 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 CHANGED
@@ -64724,6 +64724,9 @@ var QueryFilterSchema = object({
64724
64724
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
64725
64725
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
64726
64726
  whereNot: record(string(), unknown()).optional(),
64727
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
64728
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
64729
+ whereNotIn: record(string(), array(unknown())).optional(),
64727
64730
  orderBy: object({
64728
64731
  field: string(),
64729
64732
  direction: _enum(["asc", "desc"])
@@ -64744,7 +64747,8 @@ var MutationFilterSchema = object({
64744
64747
  where: record(string(), unknown()).optional(),
64745
64748
  whereIn: record(string(), array(unknown())).optional(),
64746
64749
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
64747
- whereNot: record(string(), unknown()).optional()
64750
+ whereNot: record(string(), unknown()).optional(),
64751
+ whereNotIn: record(string(), array(unknown())).optional()
64748
64752
  });
64749
64753
  /**
64750
64754
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -71517,10 +71521,12 @@ var TrackSourceSchema = _enum([
71517
71521
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
71518
71522
  * a deliberate action of the retrain page, not a side effect of a checkbox.
71519
71523
  *
71520
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
71521
- * the store's filter language has only positive equality and `whereIn` — no
71522
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
71523
- * would make the entire pre-column history immortal in one deploy.
71524
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
71525
+ * every row is selectable by a positive predicate. (The filter language has
71526
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
71527
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
71528
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
71529
+ * column was designed, and a NOT NULL column is still the better shape.)
71524
71530
  */
71525
71531
  var RetrainStatusSchema = _enum([
71526
71532
  "none",
@@ -72256,7 +72262,9 @@ var RecentTracksQueryInput = object({
72256
72262
  * whose class list is unreadable are kept, and the client's rule stays the
72257
72263
  * exact one.
72258
72264
  */
72259
- classes: array(string()).optional()
72265
+ classes: array(string()).optional(),
72266
+ /** See {@link ExcludeSourcesDoc}. */
72267
+ excludeSources: array(TrackSourceSchema).optional()
72260
72268
  });
72261
72269
  /**
72262
72270
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -72684,7 +72692,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
72684
72692
  * selected is an operator who has not narrowed anything, and an empty
72685
72693
  * timeline would read as a camera that saw nothing.
72686
72694
  */
72687
- classes: array(string()).optional()
72695
+ classes: array(string()).optional(),
72696
+ /** See {@link ExcludeSourcesDoc}. */
72697
+ excludeSources: array(TrackSourceSchema).optional()
72688
72698
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
72689
72699
  kind: "mutation",
72690
72700
  auth: "admin"
@@ -82047,8 +82057,27 @@ var PrivacyMaskRegionSchema = object({
82047
82057
  /** Current on-camera privacy state — mask master enable + zones + microphone. */
82048
82058
  var PrivacyMaskStatusSchema = object({
82049
82059
  enabled: boolean(),
82050
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
82051
- regions: array(PrivacyMaskRegionSchema),
82060
+ /**
82061
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
82062
+ *
82063
+ * `null` means "no answer" — the provider has never reached this camera
82064
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
82065
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
82066
+ * has no zones": those two look identical to an operator right up to the
82067
+ * moment one of them is acted on, and acting on them differs completely.
82068
+ * The switch group turned an unanswered read into *"nothing is set up for
82069
+ * it to act on"* — an instruction to go and draw a zone that already
82070
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
82071
+ * from deleting the mask it could not read.
82072
+ *
82073
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
82074
+ * has no zones. The distinction is the same one {@link
82075
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
82076
+ * microphone, on the very same payload — both planes come from ONE refresh,
82077
+ * so it was never coherent for one of them to be able to say "unknown"
82078
+ * while the other could not.
82079
+ */
82080
+ regions: array(PrivacyMaskRegionSchema).nullable(),
82052
82081
  /**
82053
82082
  * Is the camera capturing sound right now? Read from the camera, never from
82054
82083
  * a server-side mirror.
package/dist/addon.mjs CHANGED
@@ -64721,6 +64721,9 @@ var QueryFilterSchema = object({
64721
64721
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
64722
64722
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
64723
64723
  whereNot: record(string(), unknown()).optional(),
64724
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
64725
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
64726
+ whereNotIn: record(string(), array(unknown())).optional(),
64724
64727
  orderBy: object({
64725
64728
  field: string(),
64726
64729
  direction: _enum(["asc", "desc"])
@@ -64741,7 +64744,8 @@ var MutationFilterSchema = object({
64741
64744
  where: record(string(), unknown()).optional(),
64742
64745
  whereIn: record(string(), array(unknown())).optional(),
64743
64746
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
64744
- whereNot: record(string(), unknown()).optional()
64747
+ whereNot: record(string(), unknown()).optional(),
64748
+ whereNotIn: record(string(), array(unknown())).optional()
64745
64749
  });
64746
64750
  /**
64747
64751
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -71514,10 +71518,12 @@ var TrackSourceSchema = _enum([
71514
71518
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
71515
71519
  * a deliberate action of the retrain page, not a side effect of a checkbox.
71516
71520
  *
71517
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
71518
- * the store's filter language has only positive equality and `whereIn` — no
71519
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
71520
- * would make the entire pre-column history immortal in one deploy.
71521
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
71522
+ * every row is selectable by a positive predicate. (The filter language has
71523
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
71524
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
71525
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
71526
+ * column was designed, and a NOT NULL column is still the better shape.)
71521
71527
  */
71522
71528
  var RetrainStatusSchema = _enum([
71523
71529
  "none",
@@ -72253,7 +72259,9 @@ var RecentTracksQueryInput = object({
72253
72259
  * whose class list is unreadable are kept, and the client's rule stays the
72254
72260
  * exact one.
72255
72261
  */
72256
- classes: array(string()).optional()
72262
+ classes: array(string()).optional(),
72263
+ /** See {@link ExcludeSourcesDoc}. */
72264
+ excludeSources: array(TrackSourceSchema).optional()
72257
72265
  });
72258
72266
  /**
72259
72267
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -72681,7 +72689,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
72681
72689
  * selected is an operator who has not narrowed anything, and an empty
72682
72690
  * timeline would read as a camera that saw nothing.
72683
72691
  */
72684
- classes: array(string()).optional()
72692
+ classes: array(string()).optional(),
72693
+ /** See {@link ExcludeSourcesDoc}. */
72694
+ excludeSources: array(TrackSourceSchema).optional()
72685
72695
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
72686
72696
  kind: "mutation",
72687
72697
  auth: "admin"
@@ -82044,8 +82054,27 @@ var PrivacyMaskRegionSchema = object({
82044
82054
  /** Current on-camera privacy state — mask master enable + zones + microphone. */
82045
82055
  var PrivacyMaskStatusSchema = object({
82046
82056
  enabled: boolean(),
82047
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
82048
- regions: array(PrivacyMaskRegionSchema),
82057
+ /**
82058
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
82059
+ *
82060
+ * `null` means "no answer" — the provider has never reached this camera
82061
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
82062
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
82063
+ * has no zones": those two look identical to an operator right up to the
82064
+ * moment one of them is acted on, and acting on them differs completely.
82065
+ * The switch group turned an unanswered read into *"nothing is set up for
82066
+ * it to act on"* — an instruction to go and draw a zone that already
82067
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
82068
+ * from deleting the mask it could not read.
82069
+ *
82070
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
82071
+ * has no zones. The distinction is the same one {@link
82072
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
82073
+ * microphone, on the very same payload — both planes come from ONE refresh,
82074
+ * so it was never coherent for one of them to be able to say "unknown"
82075
+ * while the other could not.
82076
+ */
82077
+ regions: array(PrivacyMaskRegionSchema).nullable(),
82049
82078
  /**
82050
82079
  * Is the camera capturing sound right now? Read from the camera, never from
82051
82080
  * a server-side mirror.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-dreame",
3
- "version": "0.2.81",
3
+ "version": "0.2.83",
4
4
  "description": "Dreame robot-vacuum / lawn-mower device-provider addon for CamStack — wraps the @apocaliss92/nodedreame Dreamehome cloud client",
5
5
  "keywords": [
6
6
  "camstack",