@camstack/addon-provider-amcrest 0.2.84 → 0.2.85

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
@@ -29339,8 +29339,27 @@ var PrivacyMaskRegionSchema = object({
29339
29339
  /** Current on-camera privacy state — mask master enable + zones + microphone. */
29340
29340
  var PrivacyMaskStatusSchema = object({
29341
29341
  enabled: boolean(),
29342
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
29343
- regions: array(PrivacyMaskRegionSchema),
29342
+ /**
29343
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
29344
+ *
29345
+ * `null` means "no answer" — the provider has never reached this camera
29346
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
29347
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
29348
+ * has no zones": those two look identical to an operator right up to the
29349
+ * moment one of them is acted on, and acting on them differs completely.
29350
+ * The switch group turned an unanswered read into *"nothing is set up for
29351
+ * it to act on"* — an instruction to go and draw a zone that already
29352
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
29353
+ * from deleting the mask it could not read.
29354
+ *
29355
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
29356
+ * has no zones. The distinction is the same one {@link
29357
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
29358
+ * microphone, on the very same payload — both planes come from ONE refresh,
29359
+ * so it was never coherent for one of them to be able to say "unknown"
29360
+ * while the other could not.
29361
+ */
29362
+ regions: array(PrivacyMaskRegionSchema).nullable(),
29344
29363
  /**
29345
29364
  * Is the camera capturing sound right now? Read from the camera, never from
29346
29365
  * a server-side mirror.
@@ -45285,7 +45304,7 @@ var AmcrestCamera = class AmcrestCamera extends BaseDevice {
45285
45304
  logger: this.ctx.logger,
45286
45305
  empty: () => ({
45287
45306
  enabled: false,
45288
- regions: [],
45307
+ regions: null,
45289
45308
  audioEnabled: null,
45290
45309
  lastFetchedAt: 0
45291
45310
  })
package/dist/addon.mjs CHANGED
@@ -29340,8 +29340,27 @@ var PrivacyMaskRegionSchema = object({
29340
29340
  /** Current on-camera privacy state — mask master enable + zones + microphone. */
29341
29341
  var PrivacyMaskStatusSchema = object({
29342
29342
  enabled: boolean(),
29343
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
29344
- regions: array(PrivacyMaskRegionSchema),
29343
+ /**
29344
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
29345
+ *
29346
+ * `null` means "no answer" — the provider has never reached this camera
29347
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
29348
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
29349
+ * has no zones": those two look identical to an operator right up to the
29350
+ * moment one of them is acted on, and acting on them differs completely.
29351
+ * The switch group turned an unanswered read into *"nothing is set up for
29352
+ * it to act on"* — an instruction to go and draw a zone that already
29353
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
29354
+ * from deleting the mask it could not read.
29355
+ *
29356
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
29357
+ * has no zones. The distinction is the same one {@link
29358
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
29359
+ * microphone, on the very same payload — both planes come from ONE refresh,
29360
+ * so it was never coherent for one of them to be able to say "unknown"
29361
+ * while the other could not.
29362
+ */
29363
+ regions: array(PrivacyMaskRegionSchema).nullable(),
29345
29364
  /**
29346
29365
  * Is the camera capturing sound right now? Read from the camera, never from
29347
29366
  * a server-side mirror.
@@ -45286,7 +45305,7 @@ var AmcrestCamera = class AmcrestCamera extends BaseDevice {
45286
45305
  logger: this.ctx.logger,
45287
45306
  empty: () => ({
45288
45307
  enabled: false,
45289
- regions: [],
45308
+ regions: null,
45290
45309
  audioEnabled: null,
45291
45310
  lastFetchedAt: 0
45292
45311
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-amcrest",
3
- "version": "0.2.84",
3
+ "version": "0.2.85",
4
4
  "description": "Amcrest/Dahua camera device provider addon for CamStack — Dahua CGI over HTTP(S) with digest auth (snapshot, RTSP catalog, PTZ, image/day-night config)",
5
5
  "keywords": [
6
6
  "camstack",