@camstack/addon-provider-dreo 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
@@ -12087,6 +12087,9 @@ var QueryFilterSchema = object({
12087
12087
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12088
12088
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12089
12089
  whereNot: record(string(), unknown()).optional(),
12090
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12091
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12092
+ whereNotIn: record(string(), array(unknown())).optional(),
12090
12093
  orderBy: object({
12091
12094
  field: string(),
12092
12095
  direction: _enum(["asc", "desc"])
@@ -12107,7 +12110,8 @@ var MutationFilterSchema = object({
12107
12110
  where: record(string(), unknown()).optional(),
12108
12111
  whereIn: record(string(), array(unknown())).optional(),
12109
12112
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12110
- whereNot: record(string(), unknown()).optional()
12113
+ whereNot: record(string(), unknown()).optional(),
12114
+ whereNotIn: record(string(), array(unknown())).optional()
12111
12115
  });
12112
12116
  /**
12113
12117
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18880,10 +18884,12 @@ var TrackSourceSchema = _enum([
18880
18884
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18881
18885
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18882
18886
  *
18883
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18884
- * the store's filter language has only positive equality and `whereIn` — no
18885
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
18886
- * would make the entire pre-column history immortal in one deploy.
18887
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18888
+ * every row is selectable by a positive predicate. (The filter language has
18889
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18890
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18891
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18892
+ * column was designed, and a NOT NULL column is still the better shape.)
18887
18893
  */
18888
18894
  var RetrainStatusSchema = _enum([
18889
18895
  "none",
@@ -19619,7 +19625,9 @@ var RecentTracksQueryInput = object({
19619
19625
  * whose class list is unreadable are kept, and the client's rule stays the
19620
19626
  * exact one.
19621
19627
  */
19622
- classes: array(string()).optional()
19628
+ classes: array(string()).optional(),
19629
+ /** See {@link ExcludeSourcesDoc}. */
19630
+ excludeSources: array(TrackSourceSchema).optional()
19623
19631
  });
19624
19632
  /**
19625
19633
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -20047,7 +20055,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20047
20055
  * selected is an operator who has not narrowed anything, and an empty
20048
20056
  * timeline would read as a camera that saw nothing.
20049
20057
  */
20050
- classes: array(string()).optional()
20058
+ classes: array(string()).optional(),
20059
+ /** See {@link ExcludeSourcesDoc}. */
20060
+ excludeSources: array(TrackSourceSchema).optional()
20051
20061
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
20052
20062
  kind: "mutation",
20053
20063
  auth: "admin"
@@ -29245,8 +29255,27 @@ var PrivacyMaskRegionSchema = object({
29245
29255
  /** Current on-camera privacy state — mask master enable + zones + microphone. */
29246
29256
  var PrivacyMaskStatusSchema = object({
29247
29257
  enabled: boolean(),
29248
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
29249
- regions: array(PrivacyMaskRegionSchema),
29258
+ /**
29259
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
29260
+ *
29261
+ * `null` means "no answer" — the provider has never reached this camera
29262
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
29263
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
29264
+ * has no zones": those two look identical to an operator right up to the
29265
+ * moment one of them is acted on, and acting on them differs completely.
29266
+ * The switch group turned an unanswered read into *"nothing is set up for
29267
+ * it to act on"* — an instruction to go and draw a zone that already
29268
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
29269
+ * from deleting the mask it could not read.
29270
+ *
29271
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
29272
+ * has no zones. The distinction is the same one {@link
29273
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
29274
+ * microphone, on the very same payload — both planes come from ONE refresh,
29275
+ * so it was never coherent for one of them to be able to say "unknown"
29276
+ * while the other could not.
29277
+ */
29278
+ regions: array(PrivacyMaskRegionSchema).nullable(),
29250
29279
  /**
29251
29280
  * Is the camera capturing sound right now? Read from the camera, never from
29252
29281
  * a server-side mirror.
package/dist/addon.mjs CHANGED
@@ -12088,6 +12088,9 @@ var QueryFilterSchema = object({
12088
12088
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12089
12089
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12090
12090
  whereNot: record(string(), unknown()).optional(),
12091
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12092
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12093
+ whereNotIn: record(string(), array(unknown())).optional(),
12091
12094
  orderBy: object({
12092
12095
  field: string(),
12093
12096
  direction: _enum(["asc", "desc"])
@@ -12108,7 +12111,8 @@ var MutationFilterSchema = object({
12108
12111
  where: record(string(), unknown()).optional(),
12109
12112
  whereIn: record(string(), array(unknown())).optional(),
12110
12113
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12111
- whereNot: record(string(), unknown()).optional()
12114
+ whereNot: record(string(), unknown()).optional(),
12115
+ whereNotIn: record(string(), array(unknown())).optional()
12112
12116
  });
12113
12117
  /**
12114
12118
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18881,10 +18885,12 @@ var TrackSourceSchema = _enum([
18881
18885
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18882
18886
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18883
18887
  *
18884
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18885
- * the store's filter language has only positive equality and `whereIn` — no
18886
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
18887
- * would make the entire pre-column history immortal in one deploy.
18888
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18889
+ * every row is selectable by a positive predicate. (The filter language has
18890
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18891
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18892
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18893
+ * column was designed, and a NOT NULL column is still the better shape.)
18888
18894
  */
18889
18895
  var RetrainStatusSchema = _enum([
18890
18896
  "none",
@@ -19620,7 +19626,9 @@ var RecentTracksQueryInput = object({
19620
19626
  * whose class list is unreadable are kept, and the client's rule stays the
19621
19627
  * exact one.
19622
19628
  */
19623
- classes: array(string()).optional()
19629
+ classes: array(string()).optional(),
19630
+ /** See {@link ExcludeSourcesDoc}. */
19631
+ excludeSources: array(TrackSourceSchema).optional()
19624
19632
  });
19625
19633
  /**
19626
19634
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -20048,7 +20056,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20048
20056
  * selected is an operator who has not narrowed anything, and an empty
20049
20057
  * timeline would read as a camera that saw nothing.
20050
20058
  */
20051
- classes: array(string()).optional()
20059
+ classes: array(string()).optional(),
20060
+ /** See {@link ExcludeSourcesDoc}. */
20061
+ excludeSources: array(TrackSourceSchema).optional()
20052
20062
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
20053
20063
  kind: "mutation",
20054
20064
  auth: "admin"
@@ -29246,8 +29256,27 @@ var PrivacyMaskRegionSchema = object({
29246
29256
  /** Current on-camera privacy state — mask master enable + zones + microphone. */
29247
29257
  var PrivacyMaskStatusSchema = object({
29248
29258
  enabled: boolean(),
29249
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
29250
- regions: array(PrivacyMaskRegionSchema),
29259
+ /**
29260
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
29261
+ *
29262
+ * `null` means "no answer" — the provider has never reached this camera
29263
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
29264
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
29265
+ * has no zones": those two look identical to an operator right up to the
29266
+ * moment one of them is acted on, and acting on them differs completely.
29267
+ * The switch group turned an unanswered read into *"nothing is set up for
29268
+ * it to act on"* — an instruction to go and draw a zone that already
29269
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
29270
+ * from deleting the mask it could not read.
29271
+ *
29272
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
29273
+ * has no zones. The distinction is the same one {@link
29274
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
29275
+ * microphone, on the very same payload — both planes come from ONE refresh,
29276
+ * so it was never coherent for one of them to be able to say "unknown"
29277
+ * while the other could not.
29278
+ */
29279
+ regions: array(PrivacyMaskRegionSchema).nullable(),
29251
29280
  /**
29252
29281
  * Is the camera capturing sound right now? Read from the camera, never from
29253
29282
  * a server-side mirror.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-dreo",
3
- "version": "0.2.81",
3
+ "version": "0.2.83",
4
4
  "description": "Dreo smart-device (fan / air-circulator / purifier / heater / humidifier) device-provider addon for CamStack — wraps the @apocaliss92/nodedreo Dreo cloud client (REST + WebSocket)",
5
5
  "keywords": [
6
6
  "camstack",