@camstack/addon-notifiers 1.2.84 → 1.2.86

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
@@ -12123,6 +12123,9 @@ var QueryFilterSchema = object({
12123
12123
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12124
12124
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12125
12125
  whereNot: record(string(), unknown()).optional(),
12126
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12127
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12128
+ whereNotIn: record(string(), array(unknown())).optional(),
12126
12129
  orderBy: object({
12127
12130
  field: string(),
12128
12131
  direction: _enum(["asc", "desc"])
@@ -12143,7 +12146,8 @@ var MutationFilterSchema = object({
12143
12146
  where: record(string(), unknown()).optional(),
12144
12147
  whereIn: record(string(), array(unknown())).optional(),
12145
12148
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12146
- whereNot: record(string(), unknown()).optional()
12149
+ whereNot: record(string(), unknown()).optional(),
12150
+ whereNotIn: record(string(), array(unknown())).optional()
12147
12151
  });
12148
12152
  /**
12149
12153
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18647,10 +18651,12 @@ var TrackSourceSchema = _enum([
18647
18651
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18648
18652
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18649
18653
  *
18650
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18651
- * the store's filter language has only positive equality and `whereIn` — no
18652
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
18653
- * would make the entire pre-column history immortal in one deploy.
18654
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18655
+ * every row is selectable by a positive predicate. (The filter language has
18656
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18657
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18658
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18659
+ * column was designed, and a NOT NULL column is still the better shape.)
18654
18660
  */
18655
18661
  var RetrainStatusSchema = _enum([
18656
18662
  "none",
@@ -19386,7 +19392,9 @@ var RecentTracksQueryInput = object({
19386
19392
  * whose class list is unreadable are kept, and the client's rule stays the
19387
19393
  * exact one.
19388
19394
  */
19389
- classes: array(string()).optional()
19395
+ classes: array(string()).optional(),
19396
+ /** See {@link ExcludeSourcesDoc}. */
19397
+ excludeSources: array(TrackSourceSchema).optional()
19390
19398
  });
19391
19399
  /**
19392
19400
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19814,7 +19822,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19814
19822
  * selected is an operator who has not narrowed anything, and an empty
19815
19823
  * timeline would read as a camera that saw nothing.
19816
19824
  */
19817
- classes: array(string()).optional()
19825
+ classes: array(string()).optional(),
19826
+ /** See {@link ExcludeSourcesDoc}. */
19827
+ excludeSources: array(TrackSourceSchema).optional()
19818
19828
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19819
19829
  kind: "mutation",
19820
19830
  auth: "admin"
@@ -20319,8 +20329,25 @@ var occupancyRecheckFramesField = {
20319
20329
  * (analyzer attaches detected `regions[]`; onboard does not — the
20320
20330
  * camera typically only reports a binary signal plus an optional
20321
20331
  * channel/AI class which lives in dedicated event channels).
20322
- */
20323
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
20332
+ *
20333
+ * - `onboard` — the camera's firmware said something moved.
20334
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
20335
+ * - `device-activity` — the DEVICE said it is doing its job: the
20336
+ * `recording-signal` LEVEL the same device raises for the recorder
20337
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
20338
+ * republished as a motion source. It attaches **nothing** — no regions, no
20339
+ * class: the only fact it carries is that the device is active, and a robot
20340
+ * vacuum that is itself the moving object has no region worth sending. It is
20341
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
20342
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
20343
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
20344
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
20345
+ */
20346
+ var MotionSourceEnum = _enum([
20347
+ "onboard",
20348
+ "analyzer",
20349
+ "device-activity"
20350
+ ]);
20324
20351
  /**
20325
20352
  * List of motion sources active on a camera. Empty array is valid:
20326
20353
  * "no source" — happens for battery cams without firmware motion when
package/dist/addon.mjs CHANGED
@@ -12096,6 +12096,9 @@ var QueryFilterSchema = object({
12096
12096
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12097
12097
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12098
12098
  whereNot: record(string(), unknown()).optional(),
12099
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12100
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12101
+ whereNotIn: record(string(), array(unknown())).optional(),
12099
12102
  orderBy: object({
12100
12103
  field: string(),
12101
12104
  direction: _enum(["asc", "desc"])
@@ -12116,7 +12119,8 @@ var MutationFilterSchema = object({
12116
12119
  where: record(string(), unknown()).optional(),
12117
12120
  whereIn: record(string(), array(unknown())).optional(),
12118
12121
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12119
- whereNot: record(string(), unknown()).optional()
12122
+ whereNot: record(string(), unknown()).optional(),
12123
+ whereNotIn: record(string(), array(unknown())).optional()
12120
12124
  });
12121
12125
  /**
12122
12126
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18620,10 +18624,12 @@ var TrackSourceSchema = _enum([
18620
18624
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18621
18625
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18622
18626
  *
18623
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18624
- * the store's filter language has only positive equality and `whereIn` — no
18625
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
18626
- * would make the entire pre-column history immortal in one deploy.
18627
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18628
+ * every row is selectable by a positive predicate. (The filter language has
18629
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18630
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18631
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18632
+ * column was designed, and a NOT NULL column is still the better shape.)
18627
18633
  */
18628
18634
  var RetrainStatusSchema = _enum([
18629
18635
  "none",
@@ -19359,7 +19365,9 @@ var RecentTracksQueryInput = object({
19359
19365
  * whose class list is unreadable are kept, and the client's rule stays the
19360
19366
  * exact one.
19361
19367
  */
19362
- classes: array(string()).optional()
19368
+ classes: array(string()).optional(),
19369
+ /** See {@link ExcludeSourcesDoc}. */
19370
+ excludeSources: array(TrackSourceSchema).optional()
19363
19371
  });
19364
19372
  /**
19365
19373
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19787,7 +19795,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19787
19795
  * selected is an operator who has not narrowed anything, and an empty
19788
19796
  * timeline would read as a camera that saw nothing.
19789
19797
  */
19790
- classes: array(string()).optional()
19798
+ classes: array(string()).optional(),
19799
+ /** See {@link ExcludeSourcesDoc}. */
19800
+ excludeSources: array(TrackSourceSchema).optional()
19791
19801
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19792
19802
  kind: "mutation",
19793
19803
  auth: "admin"
@@ -20292,8 +20302,25 @@ var occupancyRecheckFramesField = {
20292
20302
  * (analyzer attaches detected `regions[]`; onboard does not — the
20293
20303
  * camera typically only reports a binary signal plus an optional
20294
20304
  * channel/AI class which lives in dedicated event channels).
20295
- */
20296
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
20305
+ *
20306
+ * - `onboard` — the camera's firmware said something moved.
20307
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
20308
+ * - `device-activity` — the DEVICE said it is doing its job: the
20309
+ * `recording-signal` LEVEL the same device raises for the recorder
20310
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
20311
+ * republished as a motion source. It attaches **nothing** — no regions, no
20312
+ * class: the only fact it carries is that the device is active, and a robot
20313
+ * vacuum that is itself the moving object has no region worth sending. It is
20314
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
20315
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
20316
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
20317
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
20318
+ */
20319
+ var MotionSourceEnum = _enum([
20320
+ "onboard",
20321
+ "analyzer",
20322
+ "device-activity"
20323
+ ]);
20297
20324
  /**
20298
20325
  * List of motion sources active on a camera. Empty array is valid:
20299
20326
  * "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-notifiers",
3
- "version": "1.2.84",
3
+ "version": "1.2.86",
4
4
  "description": "System notifiers addon for CamStack — a `notification-output` collection provider hosting per-kind notifier adapters (ntfy, pushover, gotify, telegram, discord, webhook, zentik).",
5
5
  "keywords": [
6
6
  "camstack",