@camstack/addon-provider-hikvision 1.2.90 → 1.2.91

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
@@ -29651,8 +29651,27 @@ var PrivacyMaskRegionSchema = object({
29651
29651
  /** Current on-camera privacy state — mask master enable + zones + microphone. */
29652
29652
  var PrivacyMaskStatusSchema = object({
29653
29653
  enabled: boolean(),
29654
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
29655
- regions: array(PrivacyMaskRegionSchema),
29654
+ /**
29655
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
29656
+ *
29657
+ * `null` means "no answer" — the provider has never reached this camera
29658
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
29659
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
29660
+ * has no zones": those two look identical to an operator right up to the
29661
+ * moment one of them is acted on, and acting on them differs completely.
29662
+ * The switch group turned an unanswered read into *"nothing is set up for
29663
+ * it to act on"* — an instruction to go and draw a zone that already
29664
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
29665
+ * from deleting the mask it could not read.
29666
+ *
29667
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
29668
+ * has no zones. The distinction is the same one {@link
29669
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
29670
+ * microphone, on the very same payload — both planes come from ONE refresh,
29671
+ * so it was never coherent for one of them to be able to say "unknown"
29672
+ * while the other could not.
29673
+ */
29674
+ regions: array(PrivacyMaskRegionSchema).nullable(),
29656
29675
  /**
29657
29676
  * Is the camera capturing sound right now? Read from the camera, never from
29658
29677
  * a server-side mirror.
@@ -50081,7 +50100,7 @@ var HikvisionCamera = class HikvisionCamera extends BaseDevice {
50081
50100
  logger: this.ctx.logger,
50082
50101
  empty: () => ({
50083
50102
  enabled: false,
50084
- regions: [],
50103
+ regions: null,
50085
50104
  audioEnabled: null,
50086
50105
  lastFetchedAt: 0
50087
50106
  })
package/dist/addon.mjs CHANGED
@@ -29652,8 +29652,27 @@ var PrivacyMaskRegionSchema = object({
29652
29652
  /** Current on-camera privacy state — mask master enable + zones + microphone. */
29653
29653
  var PrivacyMaskStatusSchema = object({
29654
29654
  enabled: boolean(),
29655
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
29656
- regions: array(PrivacyMaskRegionSchema),
29655
+ /**
29656
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
29657
+ *
29658
+ * `null` means "no answer" — the provider has never reached this camera
29659
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
29660
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
29661
+ * has no zones": those two look identical to an operator right up to the
29662
+ * moment one of them is acted on, and acting on them differs completely.
29663
+ * The switch group turned an unanswered read into *"nothing is set up for
29664
+ * it to act on"* — an instruction to go and draw a zone that already
29665
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
29666
+ * from deleting the mask it could not read.
29667
+ *
29668
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
29669
+ * has no zones. The distinction is the same one {@link
29670
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
29671
+ * microphone, on the very same payload — both planes come from ONE refresh,
29672
+ * so it was never coherent for one of them to be able to say "unknown"
29673
+ * while the other could not.
29674
+ */
29675
+ regions: array(PrivacyMaskRegionSchema).nullable(),
29657
29676
  /**
29658
29677
  * Is the camera capturing sound right now? Read from the camera, never from
29659
29678
  * a server-side mirror.
@@ -50082,7 +50101,7 @@ var HikvisionCamera = class HikvisionCamera extends BaseDevice {
50082
50101
  logger: this.ctx.logger,
50083
50102
  empty: () => ({
50084
50103
  enabled: false,
50085
- regions: [],
50104
+ regions: null,
50086
50105
  audioEnabled: null,
50087
50106
  lastFetchedAt: 0
50088
50107
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-hikvision",
3
- "version": "1.2.90",
3
+ "version": "1.2.91",
4
4
  "description": "Hikvision camera device provider addon for CamStack — ISAPI over HTTP(S) with digest auth (snapshot, alarm stream, RTSP discovery)",
5
5
  "keywords": [
6
6
  "camstack",