@camstack/addon-auth 1.2.87 → 1.2.89

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.
@@ -12114,6 +12114,9 @@ var QueryFilterSchema = object({
12114
12114
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12115
12115
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12116
12116
  whereNot: record(string(), unknown()).optional(),
12117
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12118
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12119
+ whereNotIn: record(string(), array(unknown())).optional(),
12117
12120
  orderBy: object({
12118
12121
  field: string(),
12119
12122
  direction: _enum(["asc", "desc"])
@@ -12134,7 +12137,8 @@ var MutationFilterSchema = object({
12134
12137
  where: record(string(), unknown()).optional(),
12135
12138
  whereIn: record(string(), array(unknown())).optional(),
12136
12139
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12137
- whereNot: record(string(), unknown()).optional()
12140
+ whereNot: record(string(), unknown()).optional(),
12141
+ whereNotIn: record(string(), array(unknown())).optional()
12138
12142
  });
12139
12143
  /**
12140
12144
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18632,10 +18636,12 @@ var TrackSourceSchema = _enum([
18632
18636
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18633
18637
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18634
18638
  *
18635
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18636
- * the store's filter language has only positive equality and `whereIn` — no
18637
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
18638
- * would make the entire pre-column history immortal in one deploy.
18639
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18640
+ * every row is selectable by a positive predicate. (The filter language has
18641
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18642
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18643
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18644
+ * column was designed, and a NOT NULL column is still the better shape.)
18639
18645
  */
18640
18646
  var RetrainStatusSchema = _enum([
18641
18647
  "none",
@@ -19371,7 +19377,9 @@ var RecentTracksQueryInput = object({
19371
19377
  * whose class list is unreadable are kept, and the client's rule stays the
19372
19378
  * exact one.
19373
19379
  */
19374
- classes: array(string()).optional()
19380
+ classes: array(string()).optional(),
19381
+ /** See {@link ExcludeSourcesDoc}. */
19382
+ excludeSources: array(TrackSourceSchema).optional()
19375
19383
  });
19376
19384
  /**
19377
19385
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19799,7 +19807,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19799
19807
  * selected is an operator who has not narrowed anything, and an empty
19800
19808
  * timeline would read as a camera that saw nothing.
19801
19809
  */
19802
- classes: array(string()).optional()
19810
+ classes: array(string()).optional(),
19811
+ /** See {@link ExcludeSourcesDoc}. */
19812
+ excludeSources: array(TrackSourceSchema).optional()
19803
19813
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19804
19814
  kind: "mutation",
19805
19815
  auth: "admin"
@@ -20304,8 +20314,25 @@ var occupancyRecheckFramesField = {
20304
20314
  * (analyzer attaches detected `regions[]`; onboard does not — the
20305
20315
  * camera typically only reports a binary signal plus an optional
20306
20316
  * channel/AI class which lives in dedicated event channels).
20307
- */
20308
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
20317
+ *
20318
+ * - `onboard` — the camera's firmware said something moved.
20319
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
20320
+ * - `device-activity` — the DEVICE said it is doing its job: the
20321
+ * `recording-signal` LEVEL the same device raises for the recorder
20322
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
20323
+ * republished as a motion source. It attaches **nothing** — no regions, no
20324
+ * class: the only fact it carries is that the device is active, and a robot
20325
+ * vacuum that is itself the moving object has no region worth sending. It is
20326
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
20327
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
20328
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
20329
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
20330
+ */
20331
+ var MotionSourceEnum = _enum([
20332
+ "onboard",
20333
+ "analyzer",
20334
+ "device-activity"
20335
+ ]);
20309
20336
  /**
20310
20337
  * List of motion sources active on a camera. Empty array is valid:
20311
20338
  * "no source" — happens for battery cams without firmware motion when
@@ -12114,6 +12114,9 @@ var QueryFilterSchema = object({
12114
12114
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12115
12115
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12116
12116
  whereNot: record(string(), unknown()).optional(),
12117
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12118
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12119
+ whereNotIn: record(string(), array(unknown())).optional(),
12117
12120
  orderBy: object({
12118
12121
  field: string(),
12119
12122
  direction: _enum(["asc", "desc"])
@@ -12134,7 +12137,8 @@ var MutationFilterSchema = object({
12134
12137
  where: record(string(), unknown()).optional(),
12135
12138
  whereIn: record(string(), array(unknown())).optional(),
12136
12139
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12137
- whereNot: record(string(), unknown()).optional()
12140
+ whereNot: record(string(), unknown()).optional(),
12141
+ whereNotIn: record(string(), array(unknown())).optional()
12138
12142
  });
12139
12143
  /**
12140
12144
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18632,10 +18636,12 @@ var TrackSourceSchema = _enum([
18632
18636
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18633
18637
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18634
18638
  *
18635
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18636
- * the store's filter language has only positive equality and `whereIn` — no
18637
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
18638
- * would make the entire pre-column history immortal in one deploy.
18639
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18640
+ * every row is selectable by a positive predicate. (The filter language has
18641
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18642
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18643
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18644
+ * column was designed, and a NOT NULL column is still the better shape.)
18639
18645
  */
18640
18646
  var RetrainStatusSchema = _enum([
18641
18647
  "none",
@@ -19371,7 +19377,9 @@ var RecentTracksQueryInput = object({
19371
19377
  * whose class list is unreadable are kept, and the client's rule stays the
19372
19378
  * exact one.
19373
19379
  */
19374
- classes: array(string()).optional()
19380
+ classes: array(string()).optional(),
19381
+ /** See {@link ExcludeSourcesDoc}. */
19382
+ excludeSources: array(TrackSourceSchema).optional()
19375
19383
  });
19376
19384
  /**
19377
19385
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19799,7 +19807,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19799
19807
  * selected is an operator who has not narrowed anything, and an empty
19800
19808
  * timeline would read as a camera that saw nothing.
19801
19809
  */
19802
- classes: array(string()).optional()
19810
+ classes: array(string()).optional(),
19811
+ /** See {@link ExcludeSourcesDoc}. */
19812
+ excludeSources: array(TrackSourceSchema).optional()
19803
19813
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19804
19814
  kind: "mutation",
19805
19815
  auth: "admin"
@@ -20304,8 +20314,25 @@ var occupancyRecheckFramesField = {
20304
20314
  * (analyzer attaches detected `regions[]`; onboard does not — the
20305
20315
  * camera typically only reports a binary signal plus an optional
20306
20316
  * channel/AI class which lives in dedicated event channels).
20307
- */
20308
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
20317
+ *
20318
+ * - `onboard` — the camera's firmware said something moved.
20319
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
20320
+ * - `device-activity` — the DEVICE said it is doing its job: the
20321
+ * `recording-signal` LEVEL the same device raises for the recorder
20322
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
20323
+ * republished as a motion source. It attaches **nothing** — no regions, no
20324
+ * class: the only fact it carries is that the device is active, and a robot
20325
+ * vacuum that is itself the moving object has no region worth sending. It is
20326
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
20327
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
20328
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
20329
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
20330
+ */
20331
+ var MotionSourceEnum = _enum([
20332
+ "onboard",
20333
+ "analyzer",
20334
+ "device-activity"
20335
+ ]);
20309
20336
  /**
20310
20337
  * List of motion sources active on a camera. Empty array is valid:
20311
20338
  * "no source" — happens for battery cams without firmware motion when
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../chunk-Cek0wNdY.js");
6
- const require_dist = require("../dist-BiBtU0Wh.js");
6
+ const require_dist = require("../dist-CKMxgF_I.js");
7
7
  //#region src/magic-link/auth-magic-link.addon.ts
8
8
  /**
9
9
  * Magic-link authentication addon.
@@ -1,4 +1,4 @@
1
- import { a as loginMethodCapability, c as BaseAddon, i as buildAddonRouteProvider, r as authProviderCapability, s as errMsg, t as addonRoutesCapability } from "../dist-OqNG3erj.mjs";
1
+ import { a as loginMethodCapability, c as BaseAddon, i as buildAddonRouteProvider, r as authProviderCapability, s as errMsg, t as addonRoutesCapability } from "../dist-BxpblTri.mjs";
2
2
  //#region src/magic-link/auth-magic-link.addon.ts
3
3
  /**
4
4
  * Magic-link authentication addon.
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-Cek0wNdY.js");
6
- const require_dist = require("../dist-BiBtU0Wh.js");
6
+ const require_dist = require("../dist-CKMxgF_I.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  node_crypto = require_chunk.__toESM(node_crypto);
9
9
  //#region node_modules/jose/dist/webapi/lib/buffer_utils.js
@@ -1,4 +1,4 @@
1
- import { a as loginMethodCapability, c as BaseAddon, i as buildAddonRouteProvider, r as authProviderCapability, s as errMsg, t as addonRoutesCapability } from "../dist-OqNG3erj.mjs";
1
+ import { a as loginMethodCapability, c as BaseAddon, i as buildAddonRouteProvider, r as authProviderCapability, s as errMsg, t as addonRoutesCapability } from "../dist-BxpblTri.mjs";
2
2
  import * as crypto$1 from "node:crypto";
3
3
  //#region node_modules/jose/dist/webapi/lib/buffer_utils.js
4
4
  var encoder = new TextEncoder();
@@ -3,7 +3,7 @@ import "./dist-CYZr2fwk.mjs";
3
3
  var e = {
4
4
  "@camstack/sdk": {
5
5
  name: "@camstack/sdk",
6
- version: "1.2.83",
6
+ version: "1.2.85",
7
7
  scope: ["default"],
8
8
  loaded: !1,
9
9
  from: "addon_auth_webauthn_widgets",
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.163",
21
+ version: "1.2.165",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_auth_webauthn_widgets",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.2.131",
36
+ version: "1.2.133",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_auth_webauthn_widgets",
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-Cek0wNdY.js");
6
- const require_dist = require("../dist-BiBtU0Wh.js");
6
+ const require_dist = require("../dist-CKMxgF_I.js");
7
7
  let stream = require("stream");
8
8
  stream = require_chunk.__toESM(stream, 1);
9
9
  let http = require("http");
@@ -1,4 +1,4 @@
1
- import { a as loginMethodCapability, c as BaseAddon, d as number, f as object, l as array, n as addonWidgetsSourceCapability, o as userPasskeysCapability, p as string, u as boolean } from "../dist-OqNG3erj.mjs";
1
+ import { a as loginMethodCapability, c as BaseAddon, d as number, f as object, l as array, n as addonWidgetsSourceCapability, o as userPasskeysCapability, p as string, u as boolean } from "../dist-BxpblTri.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import Stream from "stream";
4
4
  import http from "http";
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.163",
39
+ version: "1.2.165",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  singleton: !0,
@@ -45,7 +45,7 @@ async function r() {
45
45
  }
46
46
  },
47
47
  "@camstack/sdk": {
48
- version: "1.2.83",
48
+ version: "1.2.85",
49
49
  scope: "default",
50
50
  shareConfig: {
51
51
  singleton: !0,
@@ -81,7 +81,7 @@ async function r() {
81
81
  }
82
82
  },
83
83
  "@camstack/ui-library": {
84
- version: "1.2.131",
84
+ version: "1.2.133",
85
85
  scope: "default",
86
86
  shareConfig: {
87
87
  singleton: !0,
@@ -30,7 +30,7 @@ async function d(e) {
30
30
  }
31
31
  }
32
32
  async function f() {
33
- return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_auth_webauthn_widgets-Bb2TiAjE.mjs")).catch((e) => {
33
+ return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_auth_webauthn_widgets-B3y1LFCa.mjs")).catch((e) => {
34
34
  throw l = void 0, e;
35
35
  }), l;
36
36
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-auth",
3
- "version": "1.2.87",
3
+ "version": "1.2.89",
4
4
  "description": "Authentication bundle — magic-link, OIDC, and WebAuthn/passkey. Multi-entry npm package shipping 3 addons under a single bundle; each addon keeps its own id, capabilities, and runner.",
5
5
  "keywords": [
6
6
  "camstack",