@camstack/addon-mqtt-broker 1.2.81 → 1.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.
@@ -12027,6 +12027,9 @@ var QueryFilterSchema = object({
12027
12027
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12028
12028
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12029
12029
  whereNot: record(string(), unknown()).optional(),
12030
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12031
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12032
+ whereNotIn: record(string(), array(unknown())).optional(),
12030
12033
  orderBy: object({
12031
12034
  field: string(),
12032
12035
  direction: _enum(["asc", "desc"])
@@ -12047,7 +12050,8 @@ var MutationFilterSchema = object({
12047
12050
  where: record(string(), unknown()).optional(),
12048
12051
  whereIn: record(string(), array(unknown())).optional(),
12049
12052
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12050
- whereNot: record(string(), unknown()).optional()
12053
+ whereNot: record(string(), unknown()).optional(),
12054
+ whereNotIn: record(string(), array(unknown())).optional()
12051
12055
  });
12052
12056
  /**
12053
12057
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18556,10 +18560,12 @@ var TrackSourceSchema = _enum([
18556
18560
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18557
18561
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18558
18562
  *
18559
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18560
- * the store's filter language has only positive equality and `whereIn` — no
18561
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
18562
- * would make the entire pre-column history immortal in one deploy.
18563
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18564
+ * every row is selectable by a positive predicate. (The filter language has
18565
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18566
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18567
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18568
+ * column was designed, and a NOT NULL column is still the better shape.)
18563
18569
  */
18564
18570
  var RetrainStatusSchema = _enum([
18565
18571
  "none",
@@ -19295,7 +19301,9 @@ var RecentTracksQueryInput = object({
19295
19301
  * whose class list is unreadable are kept, and the client's rule stays the
19296
19302
  * exact one.
19297
19303
  */
19298
- classes: array(string()).optional()
19304
+ classes: array(string()).optional(),
19305
+ /** See {@link ExcludeSourcesDoc}. */
19306
+ excludeSources: array(TrackSourceSchema).optional()
19299
19307
  });
19300
19308
  /**
19301
19309
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19723,7 +19731,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19723
19731
  * selected is an operator who has not narrowed anything, and an empty
19724
19732
  * timeline would read as a camera that saw nothing.
19725
19733
  */
19726
- classes: array(string()).optional()
19734
+ classes: array(string()).optional(),
19735
+ /** See {@link ExcludeSourcesDoc}. */
19736
+ excludeSources: array(TrackSourceSchema).optional()
19727
19737
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19728
19738
  kind: "mutation",
19729
19739
  auth: "admin"
@@ -27184,8 +27194,27 @@ var PrivacyMaskRegionSchema = object({
27184
27194
  });
27185
27195
  object({
27186
27196
  enabled: boolean(),
27187
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
27188
- regions: array(PrivacyMaskRegionSchema),
27197
+ /**
27198
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
27199
+ *
27200
+ * `null` means "no answer" — the provider has never reached this camera
27201
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
27202
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
27203
+ * has no zones": those two look identical to an operator right up to the
27204
+ * moment one of them is acted on, and acting on them differs completely.
27205
+ * The switch group turned an unanswered read into *"nothing is set up for
27206
+ * it to act on"* — an instruction to go and draw a zone that already
27207
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
27208
+ * from deleting the mask it could not read.
27209
+ *
27210
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
27211
+ * has no zones. The distinction is the same one {@link
27212
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
27213
+ * microphone, on the very same payload — both planes come from ONE refresh,
27214
+ * so it was never coherent for one of them to be able to say "unknown"
27215
+ * while the other could not.
27216
+ */
27217
+ regions: array(PrivacyMaskRegionSchema).nullable(),
27189
27218
  /**
27190
27219
  * Is the camera capturing sound right now? Read from the camera, never from
27191
27220
  * a server-side mirror.
@@ -12022,6 +12022,9 @@ var QueryFilterSchema = object({
12022
12022
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12023
12023
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12024
12024
  whereNot: record(string(), unknown()).optional(),
12025
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12026
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12027
+ whereNotIn: record(string(), array(unknown())).optional(),
12025
12028
  orderBy: object({
12026
12029
  field: string(),
12027
12030
  direction: _enum(["asc", "desc"])
@@ -12042,7 +12045,8 @@ var MutationFilterSchema = object({
12042
12045
  where: record(string(), unknown()).optional(),
12043
12046
  whereIn: record(string(), array(unknown())).optional(),
12044
12047
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12045
- whereNot: record(string(), unknown()).optional()
12048
+ whereNot: record(string(), unknown()).optional(),
12049
+ whereNotIn: record(string(), array(unknown())).optional()
12046
12050
  });
12047
12051
  /**
12048
12052
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18551,10 +18555,12 @@ var TrackSourceSchema = _enum([
18551
18555
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18552
18556
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18553
18557
  *
18554
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18555
- * the store's filter language has only positive equality and `whereIn` — no
18556
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
18557
- * would make the entire pre-column history immortal in one deploy.
18558
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18559
+ * every row is selectable by a positive predicate. (The filter language has
18560
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18561
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18562
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18563
+ * column was designed, and a NOT NULL column is still the better shape.)
18558
18564
  */
18559
18565
  var RetrainStatusSchema = _enum([
18560
18566
  "none",
@@ -19290,7 +19296,9 @@ var RecentTracksQueryInput = object({
19290
19296
  * whose class list is unreadable are kept, and the client's rule stays the
19291
19297
  * exact one.
19292
19298
  */
19293
- classes: array(string()).optional()
19299
+ classes: array(string()).optional(),
19300
+ /** See {@link ExcludeSourcesDoc}. */
19301
+ excludeSources: array(TrackSourceSchema).optional()
19294
19302
  });
19295
19303
  /**
19296
19304
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19718,7 +19726,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19718
19726
  * selected is an operator who has not narrowed anything, and an empty
19719
19727
  * timeline would read as a camera that saw nothing.
19720
19728
  */
19721
- classes: array(string()).optional()
19729
+ classes: array(string()).optional(),
19730
+ /** See {@link ExcludeSourcesDoc}. */
19731
+ excludeSources: array(TrackSourceSchema).optional()
19722
19732
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19723
19733
  kind: "mutation",
19724
19734
  auth: "admin"
@@ -27179,8 +27189,27 @@ var PrivacyMaskRegionSchema = object({
27179
27189
  });
27180
27190
  object({
27181
27191
  enabled: boolean(),
27182
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
27183
- regions: array(PrivacyMaskRegionSchema),
27192
+ /**
27193
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
27194
+ *
27195
+ * `null` means "no answer" — the provider has never reached this camera
27196
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
27197
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
27198
+ * has no zones": those two look identical to an operator right up to the
27199
+ * moment one of them is acted on, and acting on them differs completely.
27200
+ * The switch group turned an unanswered read into *"nothing is set up for
27201
+ * it to act on"* — an instruction to go and draw a zone that already
27202
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
27203
+ * from deleting the mask it could not read.
27204
+ *
27205
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
27206
+ * has no zones. The distinction is the same one {@link
27207
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
27208
+ * microphone, on the very same payload — both planes come from ONE refresh,
27209
+ * so it was never coherent for one of them to be able to say "unknown"
27210
+ * while the other could not.
27211
+ */
27212
+ regions: array(PrivacyMaskRegionSchema).nullable(),
27184
27213
  /**
27185
27214
  * Is the camera capturing sound right now? Read from the camera, never from
27186
27215
  * a server-side mirror.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-mqtt-broker",
3
- "version": "1.2.81",
3
+ "version": "1.2.83",
4
4
  "description": "MQTT broker registry addon for CamStack — manages external broker entries + an optional embedded aedes broker. Consumers spin up their own `mqtt.js` clients via the `mqtt-broker` cap.",
5
5
  "keywords": [
6
6
  "camstack",