@camstack/addon-provider-hikvision 1.2.88 → 1.2.90

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
@@ -12339,6 +12339,9 @@ var QueryFilterSchema = object({
12339
12339
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12340
12340
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12341
12341
  whereNot: record(string(), unknown()).optional(),
12342
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12343
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12344
+ whereNotIn: record(string(), array(unknown())).optional(),
12342
12345
  orderBy: object({
12343
12346
  field: string(),
12344
12347
  direction: _enum(["asc", "desc"])
@@ -12359,7 +12362,8 @@ var MutationFilterSchema = object({
12359
12362
  where: record(string(), unknown()).optional(),
12360
12363
  whereIn: record(string(), array(unknown())).optional(),
12361
12364
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12362
- whereNot: record(string(), unknown()).optional()
12365
+ whereNot: record(string(), unknown()).optional(),
12366
+ whereNotIn: record(string(), array(unknown())).optional()
12363
12367
  });
12364
12368
  /**
12365
12369
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -19134,10 +19138,12 @@ var TrackSourceSchema = _enum([
19134
19138
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
19135
19139
  * a deliberate action of the retrain page, not a side effect of a checkbox.
19136
19140
  *
19137
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
19138
- * the store's filter language has only positive equality and `whereIn` — no
19139
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
19140
- * would make the entire pre-column history immortal in one deploy.
19141
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
19142
+ * every row is selectable by a positive predicate. (The filter language has
19143
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
19144
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
19145
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
19146
+ * column was designed, and a NOT NULL column is still the better shape.)
19141
19147
  */
19142
19148
  var RetrainStatusSchema = _enum([
19143
19149
  "none",
@@ -19873,7 +19879,9 @@ var RecentTracksQueryInput = object({
19873
19879
  * whose class list is unreadable are kept, and the client's rule stays the
19874
19880
  * exact one.
19875
19881
  */
19876
- classes: array(string()).optional()
19882
+ classes: array(string()).optional(),
19883
+ /** See {@link ExcludeSourcesDoc}. */
19884
+ excludeSources: array(TrackSourceSchema).optional()
19877
19885
  });
19878
19886
  /**
19879
19887
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -20301,7 +20309,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20301
20309
  * selected is an operator who has not narrowed anything, and an empty
20302
20310
  * timeline would read as a camera that saw nothing.
20303
20311
  */
20304
- classes: array(string()).optional()
20312
+ classes: array(string()).optional(),
20313
+ /** See {@link ExcludeSourcesDoc}. */
20314
+ excludeSources: array(TrackSourceSchema).optional()
20305
20315
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
20306
20316
  kind: "mutation",
20307
20317
  auth: "admin"
@@ -20806,8 +20816,25 @@ var occupancyRecheckFramesField = {
20806
20816
  * (analyzer attaches detected `regions[]`; onboard does not — the
20807
20817
  * camera typically only reports a binary signal plus an optional
20808
20818
  * channel/AI class which lives in dedicated event channels).
20809
- */
20810
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
20819
+ *
20820
+ * - `onboard` — the camera's firmware said something moved.
20821
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
20822
+ * - `device-activity` — the DEVICE said it is doing its job: the
20823
+ * `recording-signal` LEVEL the same device raises for the recorder
20824
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
20825
+ * republished as a motion source. It attaches **nothing** — no regions, no
20826
+ * class: the only fact it carries is that the device is active, and a robot
20827
+ * vacuum that is itself the moving object has no region worth sending. It is
20828
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
20829
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
20830
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
20831
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
20832
+ */
20833
+ var MotionSourceEnum = _enum([
20834
+ "onboard",
20835
+ "analyzer",
20836
+ "device-activity"
20837
+ ]);
20811
20838
  /**
20812
20839
  * List of motion sources active on a camera. Empty array is valid:
20813
20840
  * "no source" — happens for battery cams without firmware motion when
package/dist/addon.mjs CHANGED
@@ -12340,6 +12340,9 @@ var QueryFilterSchema = object({
12340
12340
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12341
12341
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12342
12342
  whereNot: record(string(), unknown()).optional(),
12343
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12344
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12345
+ whereNotIn: record(string(), array(unknown())).optional(),
12343
12346
  orderBy: object({
12344
12347
  field: string(),
12345
12348
  direction: _enum(["asc", "desc"])
@@ -12360,7 +12363,8 @@ var MutationFilterSchema = object({
12360
12363
  where: record(string(), unknown()).optional(),
12361
12364
  whereIn: record(string(), array(unknown())).optional(),
12362
12365
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12363
- whereNot: record(string(), unknown()).optional()
12366
+ whereNot: record(string(), unknown()).optional(),
12367
+ whereNotIn: record(string(), array(unknown())).optional()
12364
12368
  });
12365
12369
  /**
12366
12370
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -19135,10 +19139,12 @@ var TrackSourceSchema = _enum([
19135
19139
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
19136
19140
  * a deliberate action of the retrain page, not a side effect of a checkbox.
19137
19141
  *
19138
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
19139
- * the store's filter language has only positive equality and `whereIn` — no
19140
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
19141
- * would make the entire pre-column history immortal in one deploy.
19142
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
19143
+ * every row is selectable by a positive predicate. (The filter language has
19144
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
19145
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
19146
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
19147
+ * column was designed, and a NOT NULL column is still the better shape.)
19142
19148
  */
19143
19149
  var RetrainStatusSchema = _enum([
19144
19150
  "none",
@@ -19874,7 +19880,9 @@ var RecentTracksQueryInput = object({
19874
19880
  * whose class list is unreadable are kept, and the client's rule stays the
19875
19881
  * exact one.
19876
19882
  */
19877
- classes: array(string()).optional()
19883
+ classes: array(string()).optional(),
19884
+ /** See {@link ExcludeSourcesDoc}. */
19885
+ excludeSources: array(TrackSourceSchema).optional()
19878
19886
  });
19879
19887
  /**
19880
19888
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -20302,7 +20310,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20302
20310
  * selected is an operator who has not narrowed anything, and an empty
20303
20311
  * timeline would read as a camera that saw nothing.
20304
20312
  */
20305
- classes: array(string()).optional()
20313
+ classes: array(string()).optional(),
20314
+ /** See {@link ExcludeSourcesDoc}. */
20315
+ excludeSources: array(TrackSourceSchema).optional()
20306
20316
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
20307
20317
  kind: "mutation",
20308
20318
  auth: "admin"
@@ -20807,8 +20817,25 @@ var occupancyRecheckFramesField = {
20807
20817
  * (analyzer attaches detected `regions[]`; onboard does not — the
20808
20818
  * camera typically only reports a binary signal plus an optional
20809
20819
  * channel/AI class which lives in dedicated event channels).
20810
- */
20811
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
20820
+ *
20821
+ * - `onboard` — the camera's firmware said something moved.
20822
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
20823
+ * - `device-activity` — the DEVICE said it is doing its job: the
20824
+ * `recording-signal` LEVEL the same device raises for the recorder
20825
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
20826
+ * republished as a motion source. It attaches **nothing** — no regions, no
20827
+ * class: the only fact it carries is that the device is active, and a robot
20828
+ * vacuum that is itself the moving object has no region worth sending. It is
20829
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
20830
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
20831
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
20832
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
20833
+ */
20834
+ var MotionSourceEnum = _enum([
20835
+ "onboard",
20836
+ "analyzer",
20837
+ "device-activity"
20838
+ ]);
20812
20839
  /**
20813
20840
  * List of motion sources active on a camera. Empty array is valid:
20814
20841
  * "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-hikvision",
3
- "version": "1.2.88",
3
+ "version": "1.2.90",
4
4
  "description": "Hikvision camera device provider addon for CamStack — ISAPI over HTTP(S) with digest auth (snapshot, alarm stream, RTSP discovery)",
5
5
  "keywords": [
6
6
  "camstack",