@camstack/addon-provider-dreame 0.2.80 → 0.2.82

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"
@@ -73189,8 +73199,25 @@ var occupancyRecheckFramesField = {
73189
73199
  * (analyzer attaches detected `regions[]`; onboard does not — the
73190
73200
  * camera typically only reports a binary signal plus an optional
73191
73201
  * channel/AI class which lives in dedicated event channels).
73192
- */
73193
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
73202
+ *
73203
+ * - `onboard` — the camera's firmware said something moved.
73204
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
73205
+ * - `device-activity` — the DEVICE said it is doing its job: the
73206
+ * `recording-signal` LEVEL the same device raises for the recorder
73207
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
73208
+ * republished as a motion source. It attaches **nothing** — no regions, no
73209
+ * class: the only fact it carries is that the device is active, and a robot
73210
+ * vacuum that is itself the moving object has no region worth sending. It is
73211
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
73212
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
73213
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
73214
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
73215
+ */
73216
+ var MotionSourceEnum = _enum([
73217
+ "onboard",
73218
+ "analyzer",
73219
+ "device-activity"
73220
+ ]);
73194
73221
  /**
73195
73222
  * List of motion sources active on a camera. Empty array is valid:
73196
73223
  * "no source" — happens for battery cams without firmware motion when
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"
@@ -73186,8 +73196,25 @@ var occupancyRecheckFramesField = {
73186
73196
  * (analyzer attaches detected `regions[]`; onboard does not — the
73187
73197
  * camera typically only reports a binary signal plus an optional
73188
73198
  * channel/AI class which lives in dedicated event channels).
73189
- */
73190
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
73199
+ *
73200
+ * - `onboard` — the camera's firmware said something moved.
73201
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
73202
+ * - `device-activity` — the DEVICE said it is doing its job: the
73203
+ * `recording-signal` LEVEL the same device raises for the recorder
73204
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
73205
+ * republished as a motion source. It attaches **nothing** — no regions, no
73206
+ * class: the only fact it carries is that the device is active, and a robot
73207
+ * vacuum that is itself the moving object has no region worth sending. It is
73208
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
73209
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
73210
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
73211
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
73212
+ */
73213
+ var MotionSourceEnum = _enum([
73214
+ "onboard",
73215
+ "analyzer",
73216
+ "device-activity"
73217
+ ]);
73191
73218
  /**
73192
73219
  * List of motion sources active on a camera. Empty array is valid:
73193
73220
  * "no source" — happens for battery cams without firmware motion when
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-dreame",
3
- "version": "0.2.80",
3
+ "version": "0.2.82",
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",