@camstack/addon-smtp-nodemailer 1.2.80 → 1.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.
@@ -11970,6 +11970,9 @@ var QueryFilterSchema = object({
11970
11970
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
11971
11971
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
11972
11972
  whereNot: record(string(), unknown()).optional(),
11973
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
11974
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
11975
+ whereNotIn: record(string(), array(unknown())).optional(),
11973
11976
  orderBy: object({
11974
11977
  field: string(),
11975
11978
  direction: _enum(["asc", "desc"])
@@ -11990,7 +11993,8 @@ var MutationFilterSchema = object({
11990
11993
  where: record(string(), unknown()).optional(),
11991
11994
  whereIn: record(string(), array(unknown())).optional(),
11992
11995
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
11993
- whereNot: record(string(), unknown()).optional()
11996
+ whereNot: record(string(), unknown()).optional(),
11997
+ whereNotIn: record(string(), array(unknown())).optional()
11994
11998
  });
11995
11999
  /**
11996
12000
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18480,10 +18484,12 @@ var TrackSourceSchema = _enum([
18480
18484
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18481
18485
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18482
18486
  *
18483
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18484
- * the store's filter language has only positive equality and `whereIn` no
18485
- * negation, no IS NULL so a NULL would be unselectable by ANY predicate and
18486
- * would make the entire pre-column history immortal in one deploy.
18487
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18488
+ * every row is selectable by a positive predicate. (The filter language has
18489
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18490
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18491
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18492
+ * column was designed, and a NOT NULL column is still the better shape.)
18487
18493
  */
18488
18494
  var RetrainStatusSchema = _enum([
18489
18495
  "none",
@@ -19219,7 +19225,9 @@ var RecentTracksQueryInput = object({
19219
19225
  * whose class list is unreadable are kept, and the client's rule stays the
19220
19226
  * exact one.
19221
19227
  */
19222
- classes: array(string()).optional()
19228
+ classes: array(string()).optional(),
19229
+ /** See {@link ExcludeSourcesDoc}. */
19230
+ excludeSources: array(TrackSourceSchema).optional()
19223
19231
  });
19224
19232
  /**
19225
19233
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19647,7 +19655,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19647
19655
  * selected is an operator who has not narrowed anything, and an empty
19648
19656
  * timeline would read as a camera that saw nothing.
19649
19657
  */
19650
- classes: array(string()).optional()
19658
+ classes: array(string()).optional(),
19659
+ /** See {@link ExcludeSourcesDoc}. */
19660
+ excludeSources: array(TrackSourceSchema).optional()
19651
19661
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19652
19662
  kind: "mutation",
19653
19663
  auth: "admin"
@@ -27121,8 +27131,27 @@ var PrivacyMaskRegionSchema = object({
27121
27131
  });
27122
27132
  object({
27123
27133
  enabled: boolean(),
27124
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
27125
- regions: array(PrivacyMaskRegionSchema),
27134
+ /**
27135
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
27136
+ *
27137
+ * `null` means "no answer" — the provider has never reached this camera
27138
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
27139
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
27140
+ * has no zones": those two look identical to an operator right up to the
27141
+ * moment one of them is acted on, and acting on them differs completely.
27142
+ * The switch group turned an unanswered read into *"nothing is set up for
27143
+ * it to act on"* — an instruction to go and draw a zone that already
27144
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
27145
+ * from deleting the mask it could not read.
27146
+ *
27147
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
27148
+ * has no zones. The distinction is the same one {@link
27149
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
27150
+ * microphone, on the very same payload — both planes come from ONE refresh,
27151
+ * so it was never coherent for one of them to be able to say "unknown"
27152
+ * while the other could not.
27153
+ */
27154
+ regions: array(PrivacyMaskRegionSchema).nullable(),
27126
27155
  /**
27127
27156
  * Is the camera capturing sound right now? Read from the camera, never from
27128
27157
  * a server-side mirror.
@@ -11968,6 +11968,9 @@ var QueryFilterSchema = object({
11968
11968
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
11969
11969
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
11970
11970
  whereNot: record(string(), unknown()).optional(),
11971
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
11972
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
11973
+ whereNotIn: record(string(), array(unknown())).optional(),
11971
11974
  orderBy: object({
11972
11975
  field: string(),
11973
11976
  direction: _enum(["asc", "desc"])
@@ -11988,7 +11991,8 @@ var MutationFilterSchema = object({
11988
11991
  where: record(string(), unknown()).optional(),
11989
11992
  whereIn: record(string(), array(unknown())).optional(),
11990
11993
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
11991
- whereNot: record(string(), unknown()).optional()
11994
+ whereNot: record(string(), unknown()).optional(),
11995
+ whereNotIn: record(string(), array(unknown())).optional()
11992
11996
  });
11993
11997
  /**
11994
11998
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18478,10 +18482,12 @@ var TrackSourceSchema = _enum([
18478
18482
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18479
18483
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18480
18484
  *
18481
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18482
- * the store's filter language has only positive equality and `whereIn` no
18483
- * negation, no IS NULL so a NULL would be unselectable by ANY predicate and
18484
- * would make the entire pre-column history immortal in one deploy.
18485
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18486
+ * every row is selectable by a positive predicate. (The filter language has
18487
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18488
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18489
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18490
+ * column was designed, and a NOT NULL column is still the better shape.)
18485
18491
  */
18486
18492
  var RetrainStatusSchema = _enum([
18487
18493
  "none",
@@ -19217,7 +19223,9 @@ var RecentTracksQueryInput = object({
19217
19223
  * whose class list is unreadable are kept, and the client's rule stays the
19218
19224
  * exact one.
19219
19225
  */
19220
- classes: array(string()).optional()
19226
+ classes: array(string()).optional(),
19227
+ /** See {@link ExcludeSourcesDoc}. */
19228
+ excludeSources: array(TrackSourceSchema).optional()
19221
19229
  });
19222
19230
  /**
19223
19231
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19645,7 +19653,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19645
19653
  * selected is an operator who has not narrowed anything, and an empty
19646
19654
  * timeline would read as a camera that saw nothing.
19647
19655
  */
19648
- classes: array(string()).optional()
19656
+ classes: array(string()).optional(),
19657
+ /** See {@link ExcludeSourcesDoc}. */
19658
+ excludeSources: array(TrackSourceSchema).optional()
19649
19659
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19650
19660
  kind: "mutation",
19651
19661
  auth: "admin"
@@ -27119,8 +27129,27 @@ var PrivacyMaskRegionSchema = object({
27119
27129
  });
27120
27130
  object({
27121
27131
  enabled: boolean(),
27122
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
27123
- regions: array(PrivacyMaskRegionSchema),
27132
+ /**
27133
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
27134
+ *
27135
+ * `null` means "no answer" — the provider has never reached this camera
27136
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
27137
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
27138
+ * has no zones": those two look identical to an operator right up to the
27139
+ * moment one of them is acted on, and acting on them differs completely.
27140
+ * The switch group turned an unanswered read into *"nothing is set up for
27141
+ * it to act on"* — an instruction to go and draw a zone that already
27142
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
27143
+ * from deleting the mask it could not read.
27144
+ *
27145
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
27146
+ * has no zones. The distinction is the same one {@link
27147
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
27148
+ * microphone, on the very same payload — both planes come from ONE refresh,
27149
+ * so it was never coherent for one of them to be able to say "unknown"
27150
+ * while the other could not.
27151
+ */
27152
+ regions: array(PrivacyMaskRegionSchema).nullable(),
27124
27153
  /**
27125
27154
  * Is the camera capturing sound right now? Read from the camera, never from
27126
27155
  * a server-side mirror.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-smtp-nodemailer",
3
- "version": "1.2.80",
3
+ "version": "1.2.82",
4
4
  "description": "SMTP email provider addon for CamStack — wraps `nodemailer` and registers a `smtp-provider` cap collection entry. Used by magic-link login + notifier addons.",
5
5
  "keywords": [
6
6
  "camstack",