@camstack/addon-auth 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.
@@ -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"
@@ -27295,8 +27305,27 @@ var PrivacyMaskRegionSchema = object({
27295
27305
  });
27296
27306
  object({
27297
27307
  enabled: boolean(),
27298
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
27299
- regions: array(PrivacyMaskRegionSchema),
27308
+ /**
27309
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
27310
+ *
27311
+ * `null` means "no answer" — the provider has never reached this camera
27312
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
27313
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
27314
+ * has no zones": those two look identical to an operator right up to the
27315
+ * moment one of them is acted on, and acting on them differs completely.
27316
+ * The switch group turned an unanswered read into *"nothing is set up for
27317
+ * it to act on"* — an instruction to go and draw a zone that already
27318
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
27319
+ * from deleting the mask it could not read.
27320
+ *
27321
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
27322
+ * has no zones. The distinction is the same one {@link
27323
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
27324
+ * microphone, on the very same payload — both planes come from ONE refresh,
27325
+ * so it was never coherent for one of them to be able to say "unknown"
27326
+ * while the other could not.
27327
+ */
27328
+ regions: array(PrivacyMaskRegionSchema).nullable(),
27300
27329
  /**
27301
27330
  * Is the camera capturing sound right now? Read from the camera, never from
27302
27331
  * a server-side mirror.
@@ -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"
@@ -27295,8 +27305,27 @@ var PrivacyMaskRegionSchema = object({
27295
27305
  });
27296
27306
  object({
27297
27307
  enabled: boolean(),
27298
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
27299
- regions: array(PrivacyMaskRegionSchema),
27308
+ /**
27309
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
27310
+ *
27311
+ * `null` means "no answer" — the provider has never reached this camera
27312
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
27313
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
27314
+ * has no zones": those two look identical to an operator right up to the
27315
+ * moment one of them is acted on, and acting on them differs completely.
27316
+ * The switch group turned an unanswered read into *"nothing is set up for
27317
+ * it to act on"* — an instruction to go and draw a zone that already
27318
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
27319
+ * from deleting the mask it could not read.
27320
+ *
27321
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
27322
+ * has no zones. The distinction is the same one {@link
27323
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
27324
+ * microphone, on the very same payload — both planes come from ONE refresh,
27325
+ * so it was never coherent for one of them to be able to say "unknown"
27326
+ * while the other could not.
27327
+ */
27328
+ regions: array(PrivacyMaskRegionSchema).nullable(),
27300
27329
  /**
27301
27330
  * Is the camera capturing sound right now? Read from the camera, never from
27302
27331
  * a server-side mirror.
@@ -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-rwOkDYGH.js");
6
+ const require_dist = require("../dist-Bqrg5nKS.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-X6Mer_hb.mjs";
1
+ import { a as loginMethodCapability, c as BaseAddon, i as buildAddonRouteProvider, r as authProviderCapability, s as errMsg, t as addonRoutesCapability } from "../dist-Cn-msAsM.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-rwOkDYGH.js");
6
+ const require_dist = require("../dist-Bqrg5nKS.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-X6Mer_hb.mjs";
1
+ import { a as loginMethodCapability, c as BaseAddon, i as buildAddonRouteProvider, r as authProviderCapability, s as errMsg, t as addonRoutesCapability } from "../dist-Cn-msAsM.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.84",
6
+ version: "1.2.86",
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.164",
21
+ version: "1.2.166",
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.132",
36
+ version: "1.2.134",
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-rwOkDYGH.js");
6
+ const require_dist = require("../dist-Bqrg5nKS.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-X6Mer_hb.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-Cn-msAsM.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.164",
39
+ version: "1.2.166",
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.84",
48
+ version: "1.2.86",
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.132",
84
+ version: "1.2.134",
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-BxJuS3D8.mjs")).catch((e) => {
33
+ return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_auth_webauthn_widgets-l9W-ktqJ.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.88",
3
+ "version": "1.2.90",
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",