@camstack/addon-provider-hikvision 1.2.114 → 1.2.115

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
@@ -13804,6 +13804,70 @@ var LocationIconAssignmentSchema = object({
13804
13804
  locationKey: string(),
13805
13805
  icon: LocationIconIdSchema
13806
13806
  });
13807
+ /**
13808
+ * One (location, description) assignment as it travels.
13809
+ *
13810
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
13811
+ * reason: this lived for a while in the post-analysis addon's own settings,
13812
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
13813
+ * the Locations page carried the icon and silently orphaned the description —
13814
+ * two authorities for one thing, joined by two different rules. Now both hang
13815
+ * off the location itself, on `locationIconKey`.
13816
+ */
13817
+ var LocationDescriptionAssignmentSchema = object({
13818
+ locationKey: string(),
13819
+ description: string()
13820
+ });
13821
+ /**
13822
+ * A SITE ZONE — a named part of the property that several locations belong to.
13823
+ *
13824
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
13825
+ * kitchen. A camera belongs to exactly one location, and a location to at most
13826
+ * one zone, so a camera's zone is derived and never stored on the device: the
13827
+ * whole point of this entity is that grouping rooms touches no device row.
13828
+ *
13829
+ * ## Why not `zone`
13830
+ *
13831
+ * Because `zone` is already the most loaded word in this product: 612 source
13832
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
13833
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
13834
+ * set of rooms — and a reader who confuses them will look for a camera's
13835
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
13836
+ * word by calling the drawn one what it actually is: a detection zone.
13837
+ *
13838
+ * ## The key
13839
+ *
13840
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
13841
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
13842
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
13843
+ * silently-dropped location description.
13844
+ *
13845
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
13846
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
13847
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
13848
+ */
13849
+ /**
13850
+ * One zone as it travels: its key, the label the operator typed, its icon and
13851
+ * the locations inside it.
13852
+ *
13853
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
13854
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
13855
+ * here, rather than left to a second call, because every consumer wants both
13856
+ * at once and a viewer that asked twice could render a zone whose membership
13857
+ * it has not fetched yet.
13858
+ *
13859
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
13860
+ * of those two is a choice, and a picker has to draw them differently.
13861
+ */
13862
+ var SiteZoneSchema = object({
13863
+ zoneKey: string(),
13864
+ label: string(),
13865
+ icon: LocationIconIdSchema.nullable(),
13866
+ /** Folded location keys, sorted. A location listed here need not be
13867
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
13868
+ * the ones that most want grouping. */
13869
+ locationKeys: array(string())
13870
+ });
13807
13871
  var ProviderStatusSchema = object({
13808
13872
  connected: boolean(),
13809
13873
  deviceCount: number(),
@@ -14402,6 +14466,33 @@ method(object({
14402
14466
  }), _void(), {
14403
14467
  kind: "mutation",
14404
14468
  auth: "admin"
14469
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
14470
+ location: string(),
14471
+ description: string().max(400).nullable()
14472
+ }), _void(), {
14473
+ kind: "mutation",
14474
+ auth: "admin"
14475
+ }), method(_void(), array(SiteZoneSchema)), method(object({
14476
+ name: string(),
14477
+ icon: LocationIconIdSchema.nullable().optional()
14478
+ }), _void(), {
14479
+ kind: "mutation",
14480
+ auth: "admin"
14481
+ }), method(object({ name: string() }), _void(), {
14482
+ kind: "mutation",
14483
+ auth: "admin"
14484
+ }), method(object({
14485
+ from: string(),
14486
+ to: string()
14487
+ }), _void(), {
14488
+ kind: "mutation",
14489
+ auth: "admin"
14490
+ }), method(object({
14491
+ location: string(),
14492
+ zone: string().nullable()
14493
+ }), _void(), {
14494
+ kind: "mutation",
14495
+ auth: "admin"
14405
14496
  }), method(object({
14406
14497
  deviceId: number(),
14407
14498
  disabled: boolean()
@@ -38024,6 +38115,12 @@ Object.freeze({
38024
38115
  addonId: null,
38025
38116
  access: "view"
38026
38117
  },
38118
+ "deviceManager.listLocationDescriptions": {
38119
+ capName: "device-manager",
38120
+ capScope: "system",
38121
+ addonId: null,
38122
+ access: "view"
38123
+ },
38027
38124
  "deviceManager.listLocationIcons": {
38028
38125
  capName: "device-manager",
38029
38126
  capScope: "system",
@@ -38042,6 +38139,12 @@ Object.freeze({
38042
38139
  addonId: null,
38043
38140
  access: "view"
38044
38141
  },
38142
+ "deviceManager.listSiteZones": {
38143
+ capName: "device-manager",
38144
+ capScope: "system",
38145
+ addonId: null,
38146
+ access: "view"
38147
+ },
38045
38148
  "deviceManager.listWrappersForCap": {
38046
38149
  capName: "device-manager",
38047
38150
  capScope: "system",
@@ -38126,12 +38229,24 @@ Object.freeze({
38126
38229
  addonId: null,
38127
38230
  access: "delete"
38128
38231
  },
38232
+ "deviceManager.removeSiteZone": {
38233
+ capName: "device-manager",
38234
+ capScope: "system",
38235
+ addonId: null,
38236
+ access: "delete"
38237
+ },
38129
38238
  "deviceManager.renameLocation": {
38130
38239
  capName: "device-manager",
38131
38240
  capScope: "system",
38132
38241
  addonId: null,
38133
38242
  access: "create"
38134
38243
  },
38244
+ "deviceManager.renameSiteZone": {
38245
+ capName: "device-manager",
38246
+ capScope: "system",
38247
+ addonId: null,
38248
+ access: "create"
38249
+ },
38135
38250
  "deviceManager.runDeviceAction": {
38136
38251
  capName: "device-manager",
38137
38252
  capScope: "system",
@@ -38174,12 +38289,24 @@ Object.freeze({
38174
38289
  addonId: null,
38175
38290
  access: "create"
38176
38291
  },
38292
+ "deviceManager.setLocationDescription": {
38293
+ capName: "device-manager",
38294
+ capScope: "system",
38295
+ addonId: null,
38296
+ access: "create"
38297
+ },
38177
38298
  "deviceManager.setLocationIcon": {
38178
38299
  capName: "device-manager",
38179
38300
  capScope: "system",
38180
38301
  addonId: null,
38181
38302
  access: "create"
38182
38303
  },
38304
+ "deviceManager.setLocationZone": {
38305
+ capName: "device-manager",
38306
+ capScope: "system",
38307
+ addonId: null,
38308
+ access: "create"
38309
+ },
38183
38310
  "deviceManager.setMetadata": {
38184
38311
  capName: "device-manager",
38185
38312
  capScope: "system",
@@ -38210,6 +38337,12 @@ Object.freeze({
38210
38337
  addonId: null,
38211
38338
  access: "create"
38212
38339
  },
38340
+ "deviceManager.setSiteZone": {
38341
+ capName: "device-manager",
38342
+ capScope: "system",
38343
+ addonId: null,
38344
+ access: "create"
38345
+ },
38213
38346
  "deviceManager.setStreamProfileMap": {
38214
38347
  capName: "device-manager",
38215
38348
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -13805,6 +13805,70 @@ var LocationIconAssignmentSchema = object({
13805
13805
  locationKey: string(),
13806
13806
  icon: LocationIconIdSchema
13807
13807
  });
13808
+ /**
13809
+ * One (location, description) assignment as it travels.
13810
+ *
13811
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
13812
+ * reason: this lived for a while in the post-analysis addon's own settings,
13813
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
13814
+ * the Locations page carried the icon and silently orphaned the description —
13815
+ * two authorities for one thing, joined by two different rules. Now both hang
13816
+ * off the location itself, on `locationIconKey`.
13817
+ */
13818
+ var LocationDescriptionAssignmentSchema = object({
13819
+ locationKey: string(),
13820
+ description: string()
13821
+ });
13822
+ /**
13823
+ * A SITE ZONE — a named part of the property that several locations belong to.
13824
+ *
13825
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
13826
+ * kitchen. A camera belongs to exactly one location, and a location to at most
13827
+ * one zone, so a camera's zone is derived and never stored on the device: the
13828
+ * whole point of this entity is that grouping rooms touches no device row.
13829
+ *
13830
+ * ## Why not `zone`
13831
+ *
13832
+ * Because `zone` is already the most loaded word in this product: 612 source
13833
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
13834
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
13835
+ * set of rooms — and a reader who confuses them will look for a camera's
13836
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
13837
+ * word by calling the drawn one what it actually is: a detection zone.
13838
+ *
13839
+ * ## The key
13840
+ *
13841
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
13842
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
13843
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
13844
+ * silently-dropped location description.
13845
+ *
13846
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
13847
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
13848
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
13849
+ */
13850
+ /**
13851
+ * One zone as it travels: its key, the label the operator typed, its icon and
13852
+ * the locations inside it.
13853
+ *
13854
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
13855
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
13856
+ * here, rather than left to a second call, because every consumer wants both
13857
+ * at once and a viewer that asked twice could render a zone whose membership
13858
+ * it has not fetched yet.
13859
+ *
13860
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
13861
+ * of those two is a choice, and a picker has to draw them differently.
13862
+ */
13863
+ var SiteZoneSchema = object({
13864
+ zoneKey: string(),
13865
+ label: string(),
13866
+ icon: LocationIconIdSchema.nullable(),
13867
+ /** Folded location keys, sorted. A location listed here need not be
13868
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
13869
+ * the ones that most want grouping. */
13870
+ locationKeys: array(string())
13871
+ });
13808
13872
  var ProviderStatusSchema = object({
13809
13873
  connected: boolean(),
13810
13874
  deviceCount: number(),
@@ -14403,6 +14467,33 @@ method(object({
14403
14467
  }), _void(), {
14404
14468
  kind: "mutation",
14405
14469
  auth: "admin"
14470
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
14471
+ location: string(),
14472
+ description: string().max(400).nullable()
14473
+ }), _void(), {
14474
+ kind: "mutation",
14475
+ auth: "admin"
14476
+ }), method(_void(), array(SiteZoneSchema)), method(object({
14477
+ name: string(),
14478
+ icon: LocationIconIdSchema.nullable().optional()
14479
+ }), _void(), {
14480
+ kind: "mutation",
14481
+ auth: "admin"
14482
+ }), method(object({ name: string() }), _void(), {
14483
+ kind: "mutation",
14484
+ auth: "admin"
14485
+ }), method(object({
14486
+ from: string(),
14487
+ to: string()
14488
+ }), _void(), {
14489
+ kind: "mutation",
14490
+ auth: "admin"
14491
+ }), method(object({
14492
+ location: string(),
14493
+ zone: string().nullable()
14494
+ }), _void(), {
14495
+ kind: "mutation",
14496
+ auth: "admin"
14406
14497
  }), method(object({
14407
14498
  deviceId: number(),
14408
14499
  disabled: boolean()
@@ -38025,6 +38116,12 @@ Object.freeze({
38025
38116
  addonId: null,
38026
38117
  access: "view"
38027
38118
  },
38119
+ "deviceManager.listLocationDescriptions": {
38120
+ capName: "device-manager",
38121
+ capScope: "system",
38122
+ addonId: null,
38123
+ access: "view"
38124
+ },
38028
38125
  "deviceManager.listLocationIcons": {
38029
38126
  capName: "device-manager",
38030
38127
  capScope: "system",
@@ -38043,6 +38140,12 @@ Object.freeze({
38043
38140
  addonId: null,
38044
38141
  access: "view"
38045
38142
  },
38143
+ "deviceManager.listSiteZones": {
38144
+ capName: "device-manager",
38145
+ capScope: "system",
38146
+ addonId: null,
38147
+ access: "view"
38148
+ },
38046
38149
  "deviceManager.listWrappersForCap": {
38047
38150
  capName: "device-manager",
38048
38151
  capScope: "system",
@@ -38127,12 +38230,24 @@ Object.freeze({
38127
38230
  addonId: null,
38128
38231
  access: "delete"
38129
38232
  },
38233
+ "deviceManager.removeSiteZone": {
38234
+ capName: "device-manager",
38235
+ capScope: "system",
38236
+ addonId: null,
38237
+ access: "delete"
38238
+ },
38130
38239
  "deviceManager.renameLocation": {
38131
38240
  capName: "device-manager",
38132
38241
  capScope: "system",
38133
38242
  addonId: null,
38134
38243
  access: "create"
38135
38244
  },
38245
+ "deviceManager.renameSiteZone": {
38246
+ capName: "device-manager",
38247
+ capScope: "system",
38248
+ addonId: null,
38249
+ access: "create"
38250
+ },
38136
38251
  "deviceManager.runDeviceAction": {
38137
38252
  capName: "device-manager",
38138
38253
  capScope: "system",
@@ -38175,12 +38290,24 @@ Object.freeze({
38175
38290
  addonId: null,
38176
38291
  access: "create"
38177
38292
  },
38293
+ "deviceManager.setLocationDescription": {
38294
+ capName: "device-manager",
38295
+ capScope: "system",
38296
+ addonId: null,
38297
+ access: "create"
38298
+ },
38178
38299
  "deviceManager.setLocationIcon": {
38179
38300
  capName: "device-manager",
38180
38301
  capScope: "system",
38181
38302
  addonId: null,
38182
38303
  access: "create"
38183
38304
  },
38305
+ "deviceManager.setLocationZone": {
38306
+ capName: "device-manager",
38307
+ capScope: "system",
38308
+ addonId: null,
38309
+ access: "create"
38310
+ },
38184
38311
  "deviceManager.setMetadata": {
38185
38312
  capName: "device-manager",
38186
38313
  capScope: "system",
@@ -38211,6 +38338,12 @@ Object.freeze({
38211
38338
  addonId: null,
38212
38339
  access: "create"
38213
38340
  },
38341
+ "deviceManager.setSiteZone": {
38342
+ capName: "device-manager",
38343
+ capScope: "system",
38344
+ addonId: null,
38345
+ access: "create"
38346
+ },
38214
38347
  "deviceManager.setStreamProfileMap": {
38215
38348
  capName: "device-manager",
38216
38349
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-hikvision",
3
- "version": "1.2.114",
3
+ "version": "1.2.115",
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",