@camstack/addon-remote-storage 1.2.80 → 1.2.82

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/s3.addon.js CHANGED
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_shared = require("./shared-Wvm6a1Wq.js");
5
+ const require_shared = require("./shared-CCTASNJI.js");
6
6
  let node_stream = require("node:stream");
7
7
  let _aws_sdk_client_s3 = require("@aws-sdk/client-s3");
8
8
  let _aws_sdk_lib_storage = require("@aws-sdk/lib-storage");
package/dist/s3.addon.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { c as BaseAddon, i as rearmIdleAbort, n as getOptionalBasePath, o as scheduleIdleAbort, s as storageProviderCapability, t as createSessionId } from "./shared-d3aGfIaq.mjs";
1
+ import { c as BaseAddon, i as rearmIdleAbort, n as getOptionalBasePath, o as scheduleIdleAbort, s as storageProviderCapability, t as createSessionId } from "./shared-B5I6yx9T.mjs";
2
2
  import { PassThrough } from "node:stream";
3
3
  import { DeleteObjectCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectsV2Command, PutObjectCommand, S3Client } from "@aws-sdk/client-s3";
4
4
  import { Upload } from "@aws-sdk/lib-storage";
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_shared = require("./shared-Wvm6a1Wq.js");
5
+ const require_shared = require("./shared-CCTASNJI.js");
6
6
  let ssh2 = require("ssh2");
7
7
  let node_path = require("node:path");
8
8
  node_path = require_shared.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-d3aGfIaq.mjs";
1
+ import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-B5I6yx9T.mjs";
2
2
  import { Client } from "ssh2";
3
3
  import * as path from "node:path";
4
4
  //#region src/providers/sftp/sftp-config-schema.ts
@@ -11934,6 +11934,9 @@ var QueryFilterSchema = object({
11934
11934
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
11935
11935
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
11936
11936
  whereNot: record(string(), unknown()).optional(),
11937
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
11938
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
11939
+ whereNotIn: record(string(), array(unknown())).optional(),
11937
11940
  orderBy: object({
11938
11941
  field: string(),
11939
11942
  direction: _enum(["asc", "desc"])
@@ -11954,7 +11957,8 @@ var MutationFilterSchema = object({
11954
11957
  where: record(string(), unknown()).optional(),
11955
11958
  whereIn: record(string(), array(unknown())).optional(),
11956
11959
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
11957
- whereNot: record(string(), unknown()).optional()
11960
+ whereNot: record(string(), unknown()).optional(),
11961
+ whereNotIn: record(string(), array(unknown())).optional()
11958
11962
  });
11959
11963
  /**
11960
11964
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18444,10 +18448,12 @@ var TrackSourceSchema = _enum([
18444
18448
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18445
18449
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18446
18450
  *
18447
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18448
- * the store's filter language has only positive equality and `whereIn` no
18449
- * negation, no IS NULL so a NULL would be unselectable by ANY predicate and
18450
- * would make the entire pre-column history immortal in one deploy.
18451
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18452
+ * every row is selectable by a positive predicate. (The filter language has
18453
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18454
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18455
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18456
+ * column was designed, and a NOT NULL column is still the better shape.)
18451
18457
  */
18452
18458
  var RetrainStatusSchema = _enum([
18453
18459
  "none",
@@ -19183,7 +19189,9 @@ var RecentTracksQueryInput = object({
19183
19189
  * whose class list is unreadable are kept, and the client's rule stays the
19184
19190
  * exact one.
19185
19191
  */
19186
- classes: array(string()).optional()
19192
+ classes: array(string()).optional(),
19193
+ /** See {@link ExcludeSourcesDoc}. */
19194
+ excludeSources: array(TrackSourceSchema).optional()
19187
19195
  });
19188
19196
  /**
19189
19197
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19611,7 +19619,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19611
19619
  * selected is an operator who has not narrowed anything, and an empty
19612
19620
  * timeline would read as a camera that saw nothing.
19613
19621
  */
19614
- classes: array(string()).optional()
19622
+ classes: array(string()).optional(),
19623
+ /** See {@link ExcludeSourcesDoc}. */
19624
+ excludeSources: array(TrackSourceSchema).optional()
19615
19625
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19616
19626
  kind: "mutation",
19617
19627
  auth: "admin"
@@ -27132,8 +27142,27 @@ var PrivacyMaskRegionSchema = object({
27132
27142
  });
27133
27143
  object({
27134
27144
  enabled: boolean(),
27135
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
27136
- regions: array(PrivacyMaskRegionSchema),
27145
+ /**
27146
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
27147
+ *
27148
+ * `null` means "no answer" — the provider has never reached this camera
27149
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
27150
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
27151
+ * has no zones": those two look identical to an operator right up to the
27152
+ * moment one of them is acted on, and acting on them differs completely.
27153
+ * The switch group turned an unanswered read into *"nothing is set up for
27154
+ * it to act on"* — an instruction to go and draw a zone that already
27155
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
27156
+ * from deleting the mask it could not read.
27157
+ *
27158
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
27159
+ * has no zones. The distinction is the same one {@link
27160
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
27161
+ * microphone, on the very same payload — both planes come from ONE refresh,
27162
+ * so it was never coherent for one of them to be able to say "unknown"
27163
+ * while the other could not.
27164
+ */
27165
+ regions: array(PrivacyMaskRegionSchema).nullable(),
27137
27166
  /**
27138
27167
  * Is the camera capturing sound right now? Read from the camera, never from
27139
27168
  * a server-side mirror.
@@ -11957,6 +11957,9 @@ var QueryFilterSchema = object({
11957
11957
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
11958
11958
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
11959
11959
  whereNot: record(string(), unknown()).optional(),
11960
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
11961
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
11962
+ whereNotIn: record(string(), array(unknown())).optional(),
11960
11963
  orderBy: object({
11961
11964
  field: string(),
11962
11965
  direction: _enum(["asc", "desc"])
@@ -11977,7 +11980,8 @@ var MutationFilterSchema = object({
11977
11980
  where: record(string(), unknown()).optional(),
11978
11981
  whereIn: record(string(), array(unknown())).optional(),
11979
11982
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
11980
- whereNot: record(string(), unknown()).optional()
11983
+ whereNot: record(string(), unknown()).optional(),
11984
+ whereNotIn: record(string(), array(unknown())).optional()
11981
11985
  });
11982
11986
  /**
11983
11987
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18467,10 +18471,12 @@ var TrackSourceSchema = _enum([
18467
18471
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18468
18472
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18469
18473
  *
18470
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18471
- * the store's filter language has only positive equality and `whereIn` no
18472
- * negation, no IS NULL so a NULL would be unselectable by ANY predicate and
18473
- * would make the entire pre-column history immortal in one deploy.
18474
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18475
+ * every row is selectable by a positive predicate. (The filter language has
18476
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18477
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18478
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18479
+ * column was designed, and a NOT NULL column is still the better shape.)
18474
18480
  */
18475
18481
  var RetrainStatusSchema = _enum([
18476
18482
  "none",
@@ -19206,7 +19212,9 @@ var RecentTracksQueryInput = object({
19206
19212
  * whose class list is unreadable are kept, and the client's rule stays the
19207
19213
  * exact one.
19208
19214
  */
19209
- classes: array(string()).optional()
19215
+ classes: array(string()).optional(),
19216
+ /** See {@link ExcludeSourcesDoc}. */
19217
+ excludeSources: array(TrackSourceSchema).optional()
19210
19218
  });
19211
19219
  /**
19212
19220
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19634,7 +19642,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19634
19642
  * selected is an operator who has not narrowed anything, and an empty
19635
19643
  * timeline would read as a camera that saw nothing.
19636
19644
  */
19637
- classes: array(string()).optional()
19645
+ classes: array(string()).optional(),
19646
+ /** See {@link ExcludeSourcesDoc}. */
19647
+ excludeSources: array(TrackSourceSchema).optional()
19638
19648
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19639
19649
  kind: "mutation",
19640
19650
  auth: "admin"
@@ -27155,8 +27165,27 @@ var PrivacyMaskRegionSchema = object({
27155
27165
  });
27156
27166
  object({
27157
27167
  enabled: boolean(),
27158
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
27159
- regions: array(PrivacyMaskRegionSchema),
27168
+ /**
27169
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
27170
+ *
27171
+ * `null` means "no answer" — the provider has never reached this camera
27172
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
27173
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
27174
+ * has no zones": those two look identical to an operator right up to the
27175
+ * moment one of them is acted on, and acting on them differs completely.
27176
+ * The switch group turned an unanswered read into *"nothing is set up for
27177
+ * it to act on"* — an instruction to go and draw a zone that already
27178
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
27179
+ * from deleting the mask it could not read.
27180
+ *
27181
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
27182
+ * has no zones. The distinction is the same one {@link
27183
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
27184
+ * microphone, on the very same payload — both planes come from ONE refresh,
27185
+ * so it was never coherent for one of them to be able to say "unknown"
27186
+ * while the other could not.
27187
+ */
27188
+ regions: array(PrivacyMaskRegionSchema).nullable(),
27160
27189
  /**
27161
27190
  * Is the camera capturing sound right now? Read from the camera, never from
27162
27191
  * a server-side mirror.
package/dist/smb.addon.js CHANGED
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_shared = require("./shared-Wvm6a1Wq.js");
5
+ const require_shared = require("./shared-CCTASNJI.js");
6
6
  let node_crypto = require("node:crypto");
7
7
  let node_path = require("node:path");
8
8
  node_path = require_shared.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, s as storageProviderCapability } from "./shared-d3aGfIaq.mjs";
1
+ import { c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, s as storageProviderCapability } from "./shared-B5I6yx9T.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import * as path from "node:path";
4
4
  import * as fsp from "node:fs/promises";
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_shared = require("./shared-Wvm6a1Wq.js");
5
+ const require_shared = require("./shared-CCTASNJI.js");
6
6
  let node_stream = require("node:stream");
7
7
  let webdav = require("webdav");
8
8
  //#region src/providers/webdav/webdav-config-schema.ts
@@ -1,4 +1,4 @@
1
- import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-d3aGfIaq.mjs";
1
+ import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-B5I6yx9T.mjs";
2
2
  import { PassThrough } from "node:stream";
3
3
  import { AuthType, createClient } from "webdav";
4
4
  //#region src/providers/webdav/webdav-config-schema.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-remote-storage",
3
- "version": "1.2.80",
3
+ "version": "1.2.82",
4
4
  "description": "Remote storage providers (SFTP, S3, WebDAV, SMB) — unifies remote backends behind the storage-provider cap",
5
5
  "keywords": [
6
6
  "camstack",