@camstack/addon-provider-amcrest 0.2.108 → 0.2.109

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
@@ -13511,6 +13511,70 @@ var LocationIconAssignmentSchema = object({
13511
13511
  locationKey: string(),
13512
13512
  icon: LocationIconIdSchema
13513
13513
  });
13514
+ /**
13515
+ * One (location, description) assignment as it travels.
13516
+ *
13517
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
13518
+ * reason: this lived for a while in the post-analysis addon's own settings,
13519
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
13520
+ * the Locations page carried the icon and silently orphaned the description —
13521
+ * two authorities for one thing, joined by two different rules. Now both hang
13522
+ * off the location itself, on `locationIconKey`.
13523
+ */
13524
+ var LocationDescriptionAssignmentSchema = object({
13525
+ locationKey: string(),
13526
+ description: string()
13527
+ });
13528
+ /**
13529
+ * A SITE ZONE — a named part of the property that several locations belong to.
13530
+ *
13531
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
13532
+ * kitchen. A camera belongs to exactly one location, and a location to at most
13533
+ * one zone, so a camera's zone is derived and never stored on the device: the
13534
+ * whole point of this entity is that grouping rooms touches no device row.
13535
+ *
13536
+ * ## Why not `zone`
13537
+ *
13538
+ * Because `zone` is already the most loaded word in this product: 612 source
13539
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
13540
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
13541
+ * set of rooms — and a reader who confuses them will look for a camera's
13542
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
13543
+ * word by calling the drawn one what it actually is: a detection zone.
13544
+ *
13545
+ * ## The key
13546
+ *
13547
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
13548
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
13549
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
13550
+ * silently-dropped location description.
13551
+ *
13552
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
13553
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
13554
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
13555
+ */
13556
+ /**
13557
+ * One zone as it travels: its key, the label the operator typed, its icon and
13558
+ * the locations inside it.
13559
+ *
13560
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
13561
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
13562
+ * here, rather than left to a second call, because every consumer wants both
13563
+ * at once and a viewer that asked twice could render a zone whose membership
13564
+ * it has not fetched yet.
13565
+ *
13566
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
13567
+ * of those two is a choice, and a picker has to draw them differently.
13568
+ */
13569
+ var SiteZoneSchema = object({
13570
+ zoneKey: string(),
13571
+ label: string(),
13572
+ icon: LocationIconIdSchema.nullable(),
13573
+ /** Folded location keys, sorted. A location listed here need not be
13574
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
13575
+ * the ones that most want grouping. */
13576
+ locationKeys: array(string())
13577
+ });
13514
13578
  var ProviderStatusSchema = object({
13515
13579
  connected: boolean(),
13516
13580
  deviceCount: number(),
@@ -14109,6 +14173,33 @@ method(object({
14109
14173
  }), _void(), {
14110
14174
  kind: "mutation",
14111
14175
  auth: "admin"
14176
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
14177
+ location: string(),
14178
+ description: string().max(400).nullable()
14179
+ }), _void(), {
14180
+ kind: "mutation",
14181
+ auth: "admin"
14182
+ }), method(_void(), array(SiteZoneSchema)), method(object({
14183
+ name: string(),
14184
+ icon: LocationIconIdSchema.nullable().optional()
14185
+ }), _void(), {
14186
+ kind: "mutation",
14187
+ auth: "admin"
14188
+ }), method(object({ name: string() }), _void(), {
14189
+ kind: "mutation",
14190
+ auth: "admin"
14191
+ }), method(object({
14192
+ from: string(),
14193
+ to: string()
14194
+ }), _void(), {
14195
+ kind: "mutation",
14196
+ auth: "admin"
14197
+ }), method(object({
14198
+ location: string(),
14199
+ zone: string().nullable()
14200
+ }), _void(), {
14201
+ kind: "mutation",
14202
+ auth: "admin"
14112
14203
  }), method(object({
14113
14204
  deviceId: number(),
14114
14205
  disabled: boolean()
@@ -37660,6 +37751,12 @@ Object.freeze({
37660
37751
  addonId: null,
37661
37752
  access: "view"
37662
37753
  },
37754
+ "deviceManager.listLocationDescriptions": {
37755
+ capName: "device-manager",
37756
+ capScope: "system",
37757
+ addonId: null,
37758
+ access: "view"
37759
+ },
37663
37760
  "deviceManager.listLocationIcons": {
37664
37761
  capName: "device-manager",
37665
37762
  capScope: "system",
@@ -37678,6 +37775,12 @@ Object.freeze({
37678
37775
  addonId: null,
37679
37776
  access: "view"
37680
37777
  },
37778
+ "deviceManager.listSiteZones": {
37779
+ capName: "device-manager",
37780
+ capScope: "system",
37781
+ addonId: null,
37782
+ access: "view"
37783
+ },
37681
37784
  "deviceManager.listWrappersForCap": {
37682
37785
  capName: "device-manager",
37683
37786
  capScope: "system",
@@ -37762,12 +37865,24 @@ Object.freeze({
37762
37865
  addonId: null,
37763
37866
  access: "delete"
37764
37867
  },
37868
+ "deviceManager.removeSiteZone": {
37869
+ capName: "device-manager",
37870
+ capScope: "system",
37871
+ addonId: null,
37872
+ access: "delete"
37873
+ },
37765
37874
  "deviceManager.renameLocation": {
37766
37875
  capName: "device-manager",
37767
37876
  capScope: "system",
37768
37877
  addonId: null,
37769
37878
  access: "create"
37770
37879
  },
37880
+ "deviceManager.renameSiteZone": {
37881
+ capName: "device-manager",
37882
+ capScope: "system",
37883
+ addonId: null,
37884
+ access: "create"
37885
+ },
37771
37886
  "deviceManager.runDeviceAction": {
37772
37887
  capName: "device-manager",
37773
37888
  capScope: "system",
@@ -37810,12 +37925,24 @@ Object.freeze({
37810
37925
  addonId: null,
37811
37926
  access: "create"
37812
37927
  },
37928
+ "deviceManager.setLocationDescription": {
37929
+ capName: "device-manager",
37930
+ capScope: "system",
37931
+ addonId: null,
37932
+ access: "create"
37933
+ },
37813
37934
  "deviceManager.setLocationIcon": {
37814
37935
  capName: "device-manager",
37815
37936
  capScope: "system",
37816
37937
  addonId: null,
37817
37938
  access: "create"
37818
37939
  },
37940
+ "deviceManager.setLocationZone": {
37941
+ capName: "device-manager",
37942
+ capScope: "system",
37943
+ addonId: null,
37944
+ access: "create"
37945
+ },
37819
37946
  "deviceManager.setMetadata": {
37820
37947
  capName: "device-manager",
37821
37948
  capScope: "system",
@@ -37846,6 +37973,12 @@ Object.freeze({
37846
37973
  addonId: null,
37847
37974
  access: "create"
37848
37975
  },
37976
+ "deviceManager.setSiteZone": {
37977
+ capName: "device-manager",
37978
+ capScope: "system",
37979
+ addonId: null,
37980
+ access: "create"
37981
+ },
37849
37982
  "deviceManager.setStreamProfileMap": {
37850
37983
  capName: "device-manager",
37851
37984
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -13512,6 +13512,70 @@ var LocationIconAssignmentSchema = object({
13512
13512
  locationKey: string(),
13513
13513
  icon: LocationIconIdSchema
13514
13514
  });
13515
+ /**
13516
+ * One (location, description) assignment as it travels.
13517
+ *
13518
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
13519
+ * reason: this lived for a while in the post-analysis addon's own settings,
13520
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
13521
+ * the Locations page carried the icon and silently orphaned the description —
13522
+ * two authorities for one thing, joined by two different rules. Now both hang
13523
+ * off the location itself, on `locationIconKey`.
13524
+ */
13525
+ var LocationDescriptionAssignmentSchema = object({
13526
+ locationKey: string(),
13527
+ description: string()
13528
+ });
13529
+ /**
13530
+ * A SITE ZONE — a named part of the property that several locations belong to.
13531
+ *
13532
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
13533
+ * kitchen. A camera belongs to exactly one location, and a location to at most
13534
+ * one zone, so a camera's zone is derived and never stored on the device: the
13535
+ * whole point of this entity is that grouping rooms touches no device row.
13536
+ *
13537
+ * ## Why not `zone`
13538
+ *
13539
+ * Because `zone` is already the most loaded word in this product: 612 source
13540
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
13541
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
13542
+ * set of rooms — and a reader who confuses them will look for a camera's
13543
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
13544
+ * word by calling the drawn one what it actually is: a detection zone.
13545
+ *
13546
+ * ## The key
13547
+ *
13548
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
13549
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
13550
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
13551
+ * silently-dropped location description.
13552
+ *
13553
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
13554
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
13555
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
13556
+ */
13557
+ /**
13558
+ * One zone as it travels: its key, the label the operator typed, its icon and
13559
+ * the locations inside it.
13560
+ *
13561
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
13562
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
13563
+ * here, rather than left to a second call, because every consumer wants both
13564
+ * at once and a viewer that asked twice could render a zone whose membership
13565
+ * it has not fetched yet.
13566
+ *
13567
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
13568
+ * of those two is a choice, and a picker has to draw them differently.
13569
+ */
13570
+ var SiteZoneSchema = object({
13571
+ zoneKey: string(),
13572
+ label: string(),
13573
+ icon: LocationIconIdSchema.nullable(),
13574
+ /** Folded location keys, sorted. A location listed here need not be
13575
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
13576
+ * the ones that most want grouping. */
13577
+ locationKeys: array(string())
13578
+ });
13515
13579
  var ProviderStatusSchema = object({
13516
13580
  connected: boolean(),
13517
13581
  deviceCount: number(),
@@ -14110,6 +14174,33 @@ method(object({
14110
14174
  }), _void(), {
14111
14175
  kind: "mutation",
14112
14176
  auth: "admin"
14177
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
14178
+ location: string(),
14179
+ description: string().max(400).nullable()
14180
+ }), _void(), {
14181
+ kind: "mutation",
14182
+ auth: "admin"
14183
+ }), method(_void(), array(SiteZoneSchema)), method(object({
14184
+ name: string(),
14185
+ icon: LocationIconIdSchema.nullable().optional()
14186
+ }), _void(), {
14187
+ kind: "mutation",
14188
+ auth: "admin"
14189
+ }), method(object({ name: string() }), _void(), {
14190
+ kind: "mutation",
14191
+ auth: "admin"
14192
+ }), method(object({
14193
+ from: string(),
14194
+ to: string()
14195
+ }), _void(), {
14196
+ kind: "mutation",
14197
+ auth: "admin"
14198
+ }), method(object({
14199
+ location: string(),
14200
+ zone: string().nullable()
14201
+ }), _void(), {
14202
+ kind: "mutation",
14203
+ auth: "admin"
14113
14204
  }), method(object({
14114
14205
  deviceId: number(),
14115
14206
  disabled: boolean()
@@ -37661,6 +37752,12 @@ Object.freeze({
37661
37752
  addonId: null,
37662
37753
  access: "view"
37663
37754
  },
37755
+ "deviceManager.listLocationDescriptions": {
37756
+ capName: "device-manager",
37757
+ capScope: "system",
37758
+ addonId: null,
37759
+ access: "view"
37760
+ },
37664
37761
  "deviceManager.listLocationIcons": {
37665
37762
  capName: "device-manager",
37666
37763
  capScope: "system",
@@ -37679,6 +37776,12 @@ Object.freeze({
37679
37776
  addonId: null,
37680
37777
  access: "view"
37681
37778
  },
37779
+ "deviceManager.listSiteZones": {
37780
+ capName: "device-manager",
37781
+ capScope: "system",
37782
+ addonId: null,
37783
+ access: "view"
37784
+ },
37682
37785
  "deviceManager.listWrappersForCap": {
37683
37786
  capName: "device-manager",
37684
37787
  capScope: "system",
@@ -37763,12 +37866,24 @@ Object.freeze({
37763
37866
  addonId: null,
37764
37867
  access: "delete"
37765
37868
  },
37869
+ "deviceManager.removeSiteZone": {
37870
+ capName: "device-manager",
37871
+ capScope: "system",
37872
+ addonId: null,
37873
+ access: "delete"
37874
+ },
37766
37875
  "deviceManager.renameLocation": {
37767
37876
  capName: "device-manager",
37768
37877
  capScope: "system",
37769
37878
  addonId: null,
37770
37879
  access: "create"
37771
37880
  },
37881
+ "deviceManager.renameSiteZone": {
37882
+ capName: "device-manager",
37883
+ capScope: "system",
37884
+ addonId: null,
37885
+ access: "create"
37886
+ },
37772
37887
  "deviceManager.runDeviceAction": {
37773
37888
  capName: "device-manager",
37774
37889
  capScope: "system",
@@ -37811,12 +37926,24 @@ Object.freeze({
37811
37926
  addonId: null,
37812
37927
  access: "create"
37813
37928
  },
37929
+ "deviceManager.setLocationDescription": {
37930
+ capName: "device-manager",
37931
+ capScope: "system",
37932
+ addonId: null,
37933
+ access: "create"
37934
+ },
37814
37935
  "deviceManager.setLocationIcon": {
37815
37936
  capName: "device-manager",
37816
37937
  capScope: "system",
37817
37938
  addonId: null,
37818
37939
  access: "create"
37819
37940
  },
37941
+ "deviceManager.setLocationZone": {
37942
+ capName: "device-manager",
37943
+ capScope: "system",
37944
+ addonId: null,
37945
+ access: "create"
37946
+ },
37820
37947
  "deviceManager.setMetadata": {
37821
37948
  capName: "device-manager",
37822
37949
  capScope: "system",
@@ -37847,6 +37974,12 @@ Object.freeze({
37847
37974
  addonId: null,
37848
37975
  access: "create"
37849
37976
  },
37977
+ "deviceManager.setSiteZone": {
37978
+ capName: "device-manager",
37979
+ capScope: "system",
37980
+ addonId: null,
37981
+ access: "create"
37982
+ },
37850
37983
  "deviceManager.setStreamProfileMap": {
37851
37984
  capName: "device-manager",
37852
37985
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-amcrest",
3
- "version": "0.2.108",
3
+ "version": "0.2.109",
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",