camstack 1.2.118 → 1.2.120

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.
@@ -19618,6 +19618,9 @@ var QueryFilterSchema = external_exports.object({
19618
19618
  whereBetween: external_exports.record(external_exports.string(), external_exports.tuple([external_exports.unknown(), external_exports.unknown()])).optional(),
19619
19619
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
19620
19620
  whereNot: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
19621
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
19622
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
19623
+ whereNotIn: external_exports.record(external_exports.string(), external_exports.array(external_exports.unknown())).optional(),
19621
19624
  orderBy: external_exports.object({
19622
19625
  field: external_exports.string(),
19623
19626
  direction: external_exports.enum(["asc", "desc"])
@@ -19629,7 +19632,8 @@ var MutationFilterSchema = external_exports.object({
19629
19632
  where: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
19630
19633
  whereIn: external_exports.record(external_exports.string(), external_exports.array(external_exports.unknown())).optional(),
19631
19634
  whereBetween: external_exports.record(external_exports.string(), external_exports.tuple([external_exports.unknown(), external_exports.unknown()])).optional(),
19632
- whereNot: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
19635
+ whereNot: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
19636
+ whereNotIn: external_exports.record(external_exports.string(), external_exports.array(external_exports.unknown())).optional()
19633
19637
  });
19634
19638
  var AggregateFieldSchema = external_exports.object({
19635
19639
  /** Result key. */
@@ -26801,7 +26805,9 @@ var RecentTracksQueryInput = external_exports.object({
26801
26805
  * whose class list is unreadable are kept, and the client's rule stays the
26802
26806
  * exact one.
26803
26807
  */
26804
- classes: external_exports.array(external_exports.string()).optional()
26808
+ classes: external_exports.array(external_exports.string()).optional(),
26809
+ /** See {@link ExcludeSourcesDoc}. */
26810
+ excludeSources: external_exports.array(TrackSourceSchema).optional()
26805
26811
  });
26806
26812
  var SummarySchema = external_exports.object({
26807
26813
  id: external_exports.string(),
@@ -27147,7 +27153,9 @@ var pipelineAnalyticsCapability = {
27147
27153
  * selected is an operator who has not narrowed anything, and an empty
27148
27154
  * timeline would read as a camera that saw nothing.
27149
27155
  */
27150
- classes: external_exports.array(external_exports.string()).optional()
27156
+ classes: external_exports.array(external_exports.string()).optional(),
27157
+ /** See {@link ExcludeSourcesDoc}. */
27158
+ excludeSources: external_exports.array(TrackSourceSchema).optional()
27151
27159
  }), external_exports.array(TrackSchema).readonly()),
27152
27160
  /**
27153
27161
  * Batched cluster-wide track listing — ONE call for the events page /
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runDiscover
4
- } from "./chunk-TTXLCMS6.js";
4
+ } from "./chunk-WS7MOCV6.js";
5
5
  import "./chunk-LMMQX4CK.js";
6
6
 
7
7
  // src/cli.ts
@@ -38,7 +38,7 @@ async function runServe(args) {
38
38
  ...typeof values.data === "string" ? { data: values.data } : {}
39
39
  };
40
40
  Object.assign(process.env, buildServeEnv(opts));
41
- await import("./launcher-ZPBN2VWD.js");
41
+ await import("./launcher-2RTV67R7.js");
42
42
  }
43
43
 
44
44
  // src/commands/agent.ts
@@ -83,7 +83,7 @@ async function runAgent(args) {
83
83
  ...typeof values.port === "string" ? { port: values.port } : {}
84
84
  };
85
85
  Object.assign(process.env, buildAgentEnv(opts));
86
- await import("./launcher-ZPBN2VWD.js");
86
+ await import("./launcher-2RTV67R7.js");
87
87
  }
88
88
 
89
89
  // src/commands/setup.ts
@@ -1130,7 +1130,7 @@ function isUnknown(_value) {
1130
1130
  return true;
1131
1131
  }
1132
1132
  async function resolveServerInteractive(presetNamespace) {
1133
- const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-BDIQXDHH.js");
1133
+ const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-TX6JSFY5.js");
1134
1134
  if (presetNamespace) {
1135
1135
  const spinner4 = clack.spinner();
1136
1136
  spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
@@ -5,7 +5,7 @@ import {
5
5
  filterHubNodes,
6
6
  resolveHubFromDiscovered,
7
7
  runDiscover
8
- } from "./chunk-TTXLCMS6.js";
8
+ } from "./chunk-WS7MOCV6.js";
9
9
  import "./chunk-LMMQX4CK.js";
10
10
  export {
11
11
  DEFAULT_HUB_HTTPS_PORT,
@@ -23633,9 +23633,9 @@ var require_zod = __commonJS({
23633
23633
  }
23634
23634
  });
23635
23635
 
23636
- // ../system/dist/dist-BD7M9-5N.js
23637
- var require_dist_BD7M9_5N = __commonJS({
23638
- "../system/dist/dist-BD7M9-5N.js"(exports) {
23636
+ // ../system/dist/dist-DBpT4R7u.js
23637
+ var require_dist_DBpT4R7u = __commonJS({
23638
+ "../system/dist/dist-DBpT4R7u.js"(exports) {
23639
23639
  "use strict";
23640
23640
  var zod = require_zod();
23641
23641
  var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
@@ -30361,6 +30361,9 @@ var require_dist_BD7M9_5N = __commonJS({
30361
30361
  whereBetween: zod.z.record(zod.z.string(), zod.z.tuple([zod.z.unknown(), zod.z.unknown()])).optional(),
30362
30362
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
30363
30363
  whereNot: zod.z.record(zod.z.string(), zod.z.unknown()).optional(),
30364
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
30365
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
30366
+ whereNotIn: zod.z.record(zod.z.string(), zod.z.array(zod.z.unknown())).optional(),
30364
30367
  orderBy: zod.z.object({
30365
30368
  field: zod.z.string(),
30366
30369
  direction: zod.z.enum(["asc", "desc"])
@@ -30372,7 +30375,8 @@ var require_dist_BD7M9_5N = __commonJS({
30372
30375
  where: zod.z.record(zod.z.string(), zod.z.unknown()).optional(),
30373
30376
  whereIn: zod.z.record(zod.z.string(), zod.z.array(zod.z.unknown())).optional(),
30374
30377
  whereBetween: zod.z.record(zod.z.string(), zod.z.tuple([zod.z.unknown(), zod.z.unknown()])).optional(),
30375
- whereNot: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
30378
+ whereNot: zod.z.record(zod.z.string(), zod.z.unknown()).optional(),
30379
+ whereNotIn: zod.z.record(zod.z.string(), zod.z.array(zod.z.unknown())).optional()
30376
30380
  });
30377
30381
  var AggregateFieldSchema = zod.z.object({
30378
30382
  /** Result key. */
@@ -37570,7 +37574,9 @@ var require_dist_BD7M9_5N = __commonJS({
37570
37574
  * whose class list is unreadable are kept, and the client's rule stays the
37571
37575
  * exact one.
37572
37576
  */
37573
- classes: zod.z.array(zod.z.string()).optional()
37577
+ classes: zod.z.array(zod.z.string()).optional(),
37578
+ /** See {@link ExcludeSourcesDoc}. */
37579
+ excludeSources: zod.z.array(TrackSourceSchema).optional()
37574
37580
  });
37575
37581
  var SummarySchema = zod.z.object({
37576
37582
  id: zod.z.string(),
@@ -37916,7 +37922,9 @@ var require_dist_BD7M9_5N = __commonJS({
37916
37922
  * selected is an operator who has not narrowed anything, and an empty
37917
37923
  * timeline would read as a camera that saw nothing.
37918
37924
  */
37919
- classes: zod.z.array(zod.z.string()).optional()
37925
+ classes: zod.z.array(zod.z.string()).optional(),
37926
+ /** See {@link ExcludeSourcesDoc}. */
37927
+ excludeSources: zod.z.array(TrackSourceSchema).optional()
37920
37928
  }), zod.z.array(TrackSchema).readonly()),
37921
37929
  /**
37922
37930
  * Batched cluster-wide track listing — ONE call for the events page /
@@ -60931,7 +60939,7 @@ var require_alerts_addon = __commonJS({
60931
60939
  [Symbol.toStringTag]: { value: "Module" }
60932
60940
  });
60933
60941
  require_chunk_Cek0wNdY();
60934
- var require_dist10 = require_dist_BD7M9_5N();
60942
+ var require_dist10 = require_dist_DBpT4R7u();
60935
60943
  function selectExpired(alerts, cutoffMs) {
60936
60944
  return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
60937
60945
  }
@@ -61750,7 +61758,7 @@ var require_console_logging = __commonJS({
61750
61758
  [Symbol.toStringTag]: { value: "Module" }
61751
61759
  });
61752
61760
  require_chunk_Cek0wNdY();
61753
- var require_dist10 = require_dist_BD7M9_5N();
61761
+ var require_dist10 = require_dist_DBpT4R7u();
61754
61762
  var require_formatter = require_formatter_DqAKDlvN();
61755
61763
  var LEVEL_RANK = {
61756
61764
  debug: 0,
@@ -61844,7 +61852,7 @@ var require_core_blocks_addon = __commonJS({
61844
61852
  "use strict";
61845
61853
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
61846
61854
  var require_chunk = require_chunk_Cek0wNdY();
61847
- var require_dist10 = require_dist_BD7M9_5N();
61855
+ var require_dist10 = require_dist_DBpT4R7u();
61848
61856
  var node_crypto = __require("crypto");
61849
61857
  var node_fs_promises = __require("fs/promises");
61850
61858
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -62741,11 +62749,11 @@ var require_core_blocks = __commonJS({
62741
62749
  }
62742
62750
  });
62743
62751
 
62744
- // ../system/dist/retired-settings-keys-h7YxHNjB.js
62745
- var require_retired_settings_keys_h7YxHNjB = __commonJS({
62746
- "../system/dist/retired-settings-keys-h7YxHNjB.js"(exports) {
62752
+ // ../system/dist/retired-settings-keys-OLPjsG6e.js
62753
+ var require_retired_settings_keys_OLPjsG6e = __commonJS({
62754
+ "../system/dist/retired-settings-keys-OLPjsG6e.js"(exports) {
62747
62755
  "use strict";
62748
- var require_dist10 = require_dist_BD7M9_5N();
62756
+ var require_dist10 = require_dist_DBpT4R7u();
62749
62757
  function settingsStoreIsAuthoritativeHere(env) {
62750
62758
  const raw = (env["CAMSTACK_ROLE"] ?? "").trim().toLowerCase();
62751
62759
  return raw === "" || raw === "hub";
@@ -64980,8 +64988,8 @@ var require_device_manager_addon = __commonJS({
64980
64988
  [Symbol.toStringTag]: { value: "Module" }
64981
64989
  });
64982
64990
  require_chunk_Cek0wNdY();
64983
- var require_dist10 = require_dist_BD7M9_5N();
64984
- var require_retired_settings_keys = require_retired_settings_keys_h7YxHNjB();
64991
+ var require_dist10 = require_dist_DBpT4R7u();
64992
+ var require_retired_settings_keys = require_retired_settings_keys_OLPjsG6e();
64985
64993
  var node_crypto = __require("crypto");
64986
64994
  var _camstack_types_node = require_node();
64987
64995
  var JOB_HISTORY = 20;
@@ -70606,7 +70614,7 @@ var require_hub_forwarder = __commonJS({
70606
70614
  [Symbol.toStringTag]: { value: "Module" }
70607
70615
  });
70608
70616
  require_chunk_Cek0wNdY();
70609
- var require_dist10 = require_dist_BD7M9_5N();
70617
+ var require_dist10 = require_dist_DBpT4R7u();
70610
70618
  var require_formatter = require_formatter_DqAKDlvN();
70611
70619
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
70612
70620
  var HubForwarderDestination = class {
@@ -70743,7 +70751,7 @@ var require_liveness_monitor_addon = __commonJS({
70743
70751
  "use strict";
70744
70752
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
70745
70753
  require_chunk_Cek0wNdY();
70746
- var require_dist10 = require_dist_BD7M9_5N();
70754
+ var require_dist10 = require_dist_DBpT4R7u();
70747
70755
  var NO_DEVICES = "liveness:no-devices";
70748
70756
  var ALL_OFFLINE = "liveness:all-devices-offline";
70749
70757
  var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
@@ -70939,7 +70947,7 @@ var require_local_auth_addon = __commonJS({
70939
70947
  [Symbol.toStringTag]: { value: "Module" }
70940
70948
  });
70941
70949
  var require_chunk = require_chunk_Cek0wNdY();
70942
- var require_dist10 = require_dist_BD7M9_5N();
70950
+ var require_dist10 = require_dist_DBpT4R7u();
70943
70951
  var node_crypto = __require("crypto");
70944
70952
  node_crypto = require_chunk.__toESM(node_crypto);
70945
70953
  var crypto$1 = __require("crypto");
@@ -78752,7 +78760,7 @@ var require_loki_logging = __commonJS({
78752
78760
  [Symbol.toStringTag]: { value: "Module" }
78753
78761
  });
78754
78762
  require_chunk_Cek0wNdY();
78755
- var require_dist10 = require_dist_BD7M9_5N();
78763
+ var require_dist10 = require_dist_DBpT4R7u();
78756
78764
  function sanitizeLabelName(raw) {
78757
78765
  const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
78758
78766
  return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
@@ -79317,7 +79325,7 @@ var require_native_metrics_addon = __commonJS({
79317
79325
  [Symbol.toStringTag]: { value: "Module" }
79318
79326
  });
79319
79327
  var require_chunk = require_chunk_Cek0wNdY();
79320
- var require_dist10 = require_dist_BD7M9_5N();
79328
+ var require_dist10 = require_dist_DBpT4R7u();
79321
79329
  var node_fs_promises = __require("fs/promises");
79322
79330
  var node_child_process = __require("child_process");
79323
79331
  var node_util = __require("util");
@@ -81901,7 +81909,7 @@ var require_filesystem_storage_addon = __commonJS({
81901
81909
  [Symbol.toStringTag]: { value: "Module" }
81902
81910
  });
81903
81911
  var require_chunk = require_chunk_Cek0wNdY();
81904
- var require_dist10 = require_dist_BD7M9_5N();
81912
+ var require_dist10 = require_dist_DBpT4R7u();
81905
81913
  var node_crypto = __require("crypto");
81906
81914
  var node_fs_promises = __require("fs/promises");
81907
81915
  var node_path = __require("path");
@@ -83017,8 +83025,8 @@ var require_sqlite_settings_addon = __commonJS({
83017
83025
  [Symbol.toStringTag]: { value: "Module" }
83018
83026
  });
83019
83027
  var require_chunk = require_chunk_Cek0wNdY();
83020
- var require_dist10 = require_dist_BD7M9_5N();
83021
- var require_retired_settings_keys = require_retired_settings_keys_h7YxHNjB();
83028
+ var require_dist10 = require_dist_DBpT4R7u();
83029
+ var require_retired_settings_keys = require_retired_settings_keys_OLPjsG6e();
83022
83030
  var node_crypto = __require("crypto");
83023
83031
  var node_fs = __require("fs");
83024
83032
  var node_module = __require("module");
@@ -83435,6 +83443,20 @@ var require_sqlite_settings_addon = __commonJS({
83435
83443
  clauses.push(`(${expr} IS NULL OR ${expr} != ?)`);
83436
83444
  params.push(serialize2(value));
83437
83445
  }
83446
+ for (const [field, values] of Object.entries(filter?.whereNotIn ?? {})) {
83447
+ const expr = resolve(field);
83448
+ if (expr === null) continue;
83449
+ if (values.length === 0) continue;
83450
+ const hasNull = values.some((v) => v === null);
83451
+ const rest = values.filter((v) => v !== null);
83452
+ if (rest.length === 0) {
83453
+ clauses.push(`${expr} IS NOT NULL`);
83454
+ continue;
83455
+ }
83456
+ const placeholders = rest.map(() => "?").join(", ");
83457
+ clauses.push(hasNull ? `(${expr} IS NOT NULL AND ${expr} NOT IN (${placeholders}))` : `(${expr} IS NULL OR ${expr} NOT IN (${placeholders}))`);
83458
+ for (const v of rest) params.push(serialize2(v));
83459
+ }
83438
83460
  if (clauses.length === 0 && mode === "mutate") throw new UnsafeFilterError("filter compiled to no predicate \u2014 that would affect every row in the collection; use the explicit clear operation if that is the intent");
83439
83461
  return {
83440
83462
  whereSql: clauses.length > 0 ? ` WHERE ${clauses.join(" AND ")}` : "",
@@ -85508,7 +85530,7 @@ var require_storage_orchestrator_addon = __commonJS({
85508
85530
  [Symbol.toStringTag]: { value: "Module" }
85509
85531
  });
85510
85532
  var require_chunk = require_chunk_Cek0wNdY();
85511
- var require_dist10 = require_dist_BD7M9_5N();
85533
+ var require_dist10 = require_dist_DBpT4R7u();
85512
85534
  var require_hub_cap_forward = require_hub_cap_forward_DmHNjbB0();
85513
85535
  var zod = require_zod();
85514
85536
  var node_crypto = __require("crypto");
@@ -89064,7 +89086,7 @@ var require_system_config_addon = __commonJS({
89064
89086
  [Symbol.toStringTag]: { value: "Module" }
89065
89087
  });
89066
89088
  require_chunk_Cek0wNdY();
89067
- var require_dist10 = require_dist_BD7M9_5N();
89089
+ var require_dist10 = require_dist_DBpT4R7u();
89068
89090
  var SECTION_TITLES = {
89069
89091
  server: "Server",
89070
89092
  auth: "Authentication"
@@ -107125,7 +107147,7 @@ var require_winston_logging = __commonJS({
107125
107147
  [Symbol.toStringTag]: { value: "Module" }
107126
107148
  });
107127
107149
  var require_chunk = require_chunk_Cek0wNdY();
107128
- var require_dist10 = require_dist_BD7M9_5N();
107150
+ var require_dist10 = require_dist_DBpT4R7u();
107129
107151
  var require_formatter = require_formatter_DqAKDlvN();
107130
107152
  var node_path = __require("path");
107131
107153
  node_path = require_chunk.__toESM(node_path);
@@ -131735,7 +131757,7 @@ var require_dist3 = __commonJS({
131735
131757
  "use strict";
131736
131758
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
131737
131759
  var require_chunk = require_chunk_Cek0wNdY();
131738
- var require_dist10 = require_dist_BD7M9_5N();
131760
+ var require_dist10 = require_dist_DBpT4R7u();
131739
131761
  var require_builtins_alerts_alerts_addon = require_alerts_addon();
131740
131762
  require_alerts();
131741
131763
  var require_formatter = require_formatter_DqAKDlvN();
@@ -219420,6 +219442,9 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
219420
219442
  whereBetween: zod.z.record(zod.z.string(), zod.z.tuple([zod.z.unknown(), zod.z.unknown()])).optional(),
219421
219443
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
219422
219444
  whereNot: zod.z.record(zod.z.string(), zod.z.unknown()).optional(),
219445
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
219446
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
219447
+ whereNotIn: zod.z.record(zod.z.string(), zod.z.array(zod.z.unknown())).optional(),
219423
219448
  orderBy: zod.z.object({
219424
219449
  field: zod.z.string(),
219425
219450
  direction: zod.z.enum(["asc", "desc"])
@@ -219431,7 +219456,8 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
219431
219456
  where: zod.z.record(zod.z.string(), zod.z.unknown()).optional(),
219432
219457
  whereIn: zod.z.record(zod.z.string(), zod.z.array(zod.z.unknown())).optional(),
219433
219458
  whereBetween: zod.z.record(zod.z.string(), zod.z.tuple([zod.z.unknown(), zod.z.unknown()])).optional(),
219434
- whereNot: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
219459
+ whereNot: zod.z.record(zod.z.string(), zod.z.unknown()).optional(),
219460
+ whereNotIn: zod.z.record(zod.z.string(), zod.z.array(zod.z.unknown())).optional()
219435
219461
  });
219436
219462
  var AggregateFieldSchema = zod.z.object({
219437
219463
  /** Result key. */
@@ -227527,7 +227553,9 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
227527
227553
  * whose class list is unreadable are kept, and the client's rule stays the
227528
227554
  * exact one.
227529
227555
  */
227530
- classes: zod.z.array(zod.z.string()).optional()
227556
+ classes: zod.z.array(zod.z.string()).optional(),
227557
+ /** See {@link ExcludeSourcesDoc}. */
227558
+ excludeSources: zod.z.array(TrackSourceSchema).optional()
227531
227559
  });
227532
227560
  var SummarySchema = zod.z.object({
227533
227561
  id: zod.z.string(),
@@ -227876,7 +227904,9 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
227876
227904
  * selected is an operator who has not narrowed anything, and an empty
227877
227905
  * timeline would read as a camera that saw nothing.
227878
227906
  */
227879
- classes: zod.z.array(zod.z.string()).optional()
227907
+ classes: zod.z.array(zod.z.string()).optional(),
227908
+ /** See {@link ExcludeSourcesDoc}. */
227909
+ excludeSources: zod.z.array(TrackSourceSchema).optional()
227880
227910
  }), zod.z.array(TrackSchema).readonly()),
227881
227911
  /**
227882
227912
  * Batched cluster-wide track listing — ONE call for the events page /
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "camstack",
3
- "version": "1.2.118",
3
+ "version": "1.2.120",
4
4
  "description": "CLI tool for managing and running CamStack server",
5
5
  "keywords": [
6
6
  "camstack",