@camstack/addon-mqtt-broker 1.2.106 → 1.2.107

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.
@@ -13356,6 +13356,70 @@ var LocationIconAssignmentSchema = object({
13356
13356
  locationKey: string(),
13357
13357
  icon: LocationIconIdSchema
13358
13358
  });
13359
+ /**
13360
+ * One (location, description) assignment as it travels.
13361
+ *
13362
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
13363
+ * reason: this lived for a while in the post-analysis addon's own settings,
13364
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
13365
+ * the Locations page carried the icon and silently orphaned the description —
13366
+ * two authorities for one thing, joined by two different rules. Now both hang
13367
+ * off the location itself, on `locationIconKey`.
13368
+ */
13369
+ var LocationDescriptionAssignmentSchema = object({
13370
+ locationKey: string(),
13371
+ description: string()
13372
+ });
13373
+ /**
13374
+ * A SITE ZONE — a named part of the property that several locations belong to.
13375
+ *
13376
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
13377
+ * kitchen. A camera belongs to exactly one location, and a location to at most
13378
+ * one zone, so a camera's zone is derived and never stored on the device: the
13379
+ * whole point of this entity is that grouping rooms touches no device row.
13380
+ *
13381
+ * ## Why not `zone`
13382
+ *
13383
+ * Because `zone` is already the most loaded word in this product: 612 source
13384
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
13385
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
13386
+ * set of rooms — and a reader who confuses them will look for a camera's
13387
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
13388
+ * word by calling the drawn one what it actually is: a detection zone.
13389
+ *
13390
+ * ## The key
13391
+ *
13392
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
13393
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
13394
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
13395
+ * silently-dropped location description.
13396
+ *
13397
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
13398
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
13399
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
13400
+ */
13401
+ /**
13402
+ * One zone as it travels: its key, the label the operator typed, its icon and
13403
+ * the locations inside it.
13404
+ *
13405
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
13406
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
13407
+ * here, rather than left to a second call, because every consumer wants both
13408
+ * at once and a viewer that asked twice could render a zone whose membership
13409
+ * it has not fetched yet.
13410
+ *
13411
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
13412
+ * of those two is a choice, and a picker has to draw them differently.
13413
+ */
13414
+ var SiteZoneSchema = object({
13415
+ zoneKey: string(),
13416
+ label: string(),
13417
+ icon: LocationIconIdSchema.nullable(),
13418
+ /** Folded location keys, sorted. A location listed here need not be
13419
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
13420
+ * the ones that most want grouping. */
13421
+ locationKeys: array(string())
13422
+ });
13359
13423
  var ProviderStatusSchema = object({
13360
13424
  connected: boolean(),
13361
13425
  deviceCount: number(),
@@ -13873,6 +13937,33 @@ method(object({
13873
13937
  }), _void(), {
13874
13938
  kind: "mutation",
13875
13939
  auth: "admin"
13940
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
13941
+ location: string(),
13942
+ description: string().max(400).nullable()
13943
+ }), _void(), {
13944
+ kind: "mutation",
13945
+ auth: "admin"
13946
+ }), method(_void(), array(SiteZoneSchema)), method(object({
13947
+ name: string(),
13948
+ icon: LocationIconIdSchema.nullable().optional()
13949
+ }), _void(), {
13950
+ kind: "mutation",
13951
+ auth: "admin"
13952
+ }), method(object({ name: string() }), _void(), {
13953
+ kind: "mutation",
13954
+ auth: "admin"
13955
+ }), method(object({
13956
+ from: string(),
13957
+ to: string()
13958
+ }), _void(), {
13959
+ kind: "mutation",
13960
+ auth: "admin"
13961
+ }), method(object({
13962
+ location: string(),
13963
+ zone: string().nullable()
13964
+ }), _void(), {
13965
+ kind: "mutation",
13966
+ auth: "admin"
13876
13967
  }), method(object({
13877
13968
  deviceId: number(),
13878
13969
  disabled: boolean()
@@ -32715,6 +32806,12 @@ Object.freeze({
32715
32806
  addonId: null,
32716
32807
  access: "view"
32717
32808
  },
32809
+ "deviceManager.listLocationDescriptions": {
32810
+ capName: "device-manager",
32811
+ capScope: "system",
32812
+ addonId: null,
32813
+ access: "view"
32814
+ },
32718
32815
  "deviceManager.listLocationIcons": {
32719
32816
  capName: "device-manager",
32720
32817
  capScope: "system",
@@ -32733,6 +32830,12 @@ Object.freeze({
32733
32830
  addonId: null,
32734
32831
  access: "view"
32735
32832
  },
32833
+ "deviceManager.listSiteZones": {
32834
+ capName: "device-manager",
32835
+ capScope: "system",
32836
+ addonId: null,
32837
+ access: "view"
32838
+ },
32736
32839
  "deviceManager.listWrappersForCap": {
32737
32840
  capName: "device-manager",
32738
32841
  capScope: "system",
@@ -32817,12 +32920,24 @@ Object.freeze({
32817
32920
  addonId: null,
32818
32921
  access: "delete"
32819
32922
  },
32923
+ "deviceManager.removeSiteZone": {
32924
+ capName: "device-manager",
32925
+ capScope: "system",
32926
+ addonId: null,
32927
+ access: "delete"
32928
+ },
32820
32929
  "deviceManager.renameLocation": {
32821
32930
  capName: "device-manager",
32822
32931
  capScope: "system",
32823
32932
  addonId: null,
32824
32933
  access: "create"
32825
32934
  },
32935
+ "deviceManager.renameSiteZone": {
32936
+ capName: "device-manager",
32937
+ capScope: "system",
32938
+ addonId: null,
32939
+ access: "create"
32940
+ },
32826
32941
  "deviceManager.runDeviceAction": {
32827
32942
  capName: "device-manager",
32828
32943
  capScope: "system",
@@ -32865,12 +32980,24 @@ Object.freeze({
32865
32980
  addonId: null,
32866
32981
  access: "create"
32867
32982
  },
32983
+ "deviceManager.setLocationDescription": {
32984
+ capName: "device-manager",
32985
+ capScope: "system",
32986
+ addonId: null,
32987
+ access: "create"
32988
+ },
32868
32989
  "deviceManager.setLocationIcon": {
32869
32990
  capName: "device-manager",
32870
32991
  capScope: "system",
32871
32992
  addonId: null,
32872
32993
  access: "create"
32873
32994
  },
32995
+ "deviceManager.setLocationZone": {
32996
+ capName: "device-manager",
32997
+ capScope: "system",
32998
+ addonId: null,
32999
+ access: "create"
33000
+ },
32874
33001
  "deviceManager.setMetadata": {
32875
33002
  capName: "device-manager",
32876
33003
  capScope: "system",
@@ -32901,6 +33028,12 @@ Object.freeze({
32901
33028
  addonId: null,
32902
33029
  access: "create"
32903
33030
  },
33031
+ "deviceManager.setSiteZone": {
33032
+ capName: "device-manager",
33033
+ capScope: "system",
33034
+ addonId: null,
33035
+ access: "create"
33036
+ },
32904
33037
  "deviceManager.setStreamProfileMap": {
32905
33038
  capName: "device-manager",
32906
33039
  capScope: "system",
@@ -13351,6 +13351,70 @@ var LocationIconAssignmentSchema = object({
13351
13351
  locationKey: string(),
13352
13352
  icon: LocationIconIdSchema
13353
13353
  });
13354
+ /**
13355
+ * One (location, description) assignment as it travels.
13356
+ *
13357
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
13358
+ * reason: this lived for a while in the post-analysis addon's own settings,
13359
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
13360
+ * the Locations page carried the icon and silently orphaned the description —
13361
+ * two authorities for one thing, joined by two different rules. Now both hang
13362
+ * off the location itself, on `locationIconKey`.
13363
+ */
13364
+ var LocationDescriptionAssignmentSchema = object({
13365
+ locationKey: string(),
13366
+ description: string()
13367
+ });
13368
+ /**
13369
+ * A SITE ZONE — a named part of the property that several locations belong to.
13370
+ *
13371
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
13372
+ * kitchen. A camera belongs to exactly one location, and a location to at most
13373
+ * one zone, so a camera's zone is derived and never stored on the device: the
13374
+ * whole point of this entity is that grouping rooms touches no device row.
13375
+ *
13376
+ * ## Why not `zone`
13377
+ *
13378
+ * Because `zone` is already the most loaded word in this product: 612 source
13379
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
13380
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
13381
+ * set of rooms — and a reader who confuses them will look for a camera's
13382
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
13383
+ * word by calling the drawn one what it actually is: a detection zone.
13384
+ *
13385
+ * ## The key
13386
+ *
13387
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
13388
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
13389
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
13390
+ * silently-dropped location description.
13391
+ *
13392
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
13393
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
13394
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
13395
+ */
13396
+ /**
13397
+ * One zone as it travels: its key, the label the operator typed, its icon and
13398
+ * the locations inside it.
13399
+ *
13400
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
13401
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
13402
+ * here, rather than left to a second call, because every consumer wants both
13403
+ * at once and a viewer that asked twice could render a zone whose membership
13404
+ * it has not fetched yet.
13405
+ *
13406
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
13407
+ * of those two is a choice, and a picker has to draw them differently.
13408
+ */
13409
+ var SiteZoneSchema = object({
13410
+ zoneKey: string(),
13411
+ label: string(),
13412
+ icon: LocationIconIdSchema.nullable(),
13413
+ /** Folded location keys, sorted. A location listed here need not be
13414
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
13415
+ * the ones that most want grouping. */
13416
+ locationKeys: array(string())
13417
+ });
13354
13418
  var ProviderStatusSchema = object({
13355
13419
  connected: boolean(),
13356
13420
  deviceCount: number(),
@@ -13868,6 +13932,33 @@ method(object({
13868
13932
  }), _void(), {
13869
13933
  kind: "mutation",
13870
13934
  auth: "admin"
13935
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
13936
+ location: string(),
13937
+ description: string().max(400).nullable()
13938
+ }), _void(), {
13939
+ kind: "mutation",
13940
+ auth: "admin"
13941
+ }), method(_void(), array(SiteZoneSchema)), method(object({
13942
+ name: string(),
13943
+ icon: LocationIconIdSchema.nullable().optional()
13944
+ }), _void(), {
13945
+ kind: "mutation",
13946
+ auth: "admin"
13947
+ }), method(object({ name: string() }), _void(), {
13948
+ kind: "mutation",
13949
+ auth: "admin"
13950
+ }), method(object({
13951
+ from: string(),
13952
+ to: string()
13953
+ }), _void(), {
13954
+ kind: "mutation",
13955
+ auth: "admin"
13956
+ }), method(object({
13957
+ location: string(),
13958
+ zone: string().nullable()
13959
+ }), _void(), {
13960
+ kind: "mutation",
13961
+ auth: "admin"
13871
13962
  }), method(object({
13872
13963
  deviceId: number(),
13873
13964
  disabled: boolean()
@@ -32710,6 +32801,12 @@ Object.freeze({
32710
32801
  addonId: null,
32711
32802
  access: "view"
32712
32803
  },
32804
+ "deviceManager.listLocationDescriptions": {
32805
+ capName: "device-manager",
32806
+ capScope: "system",
32807
+ addonId: null,
32808
+ access: "view"
32809
+ },
32713
32810
  "deviceManager.listLocationIcons": {
32714
32811
  capName: "device-manager",
32715
32812
  capScope: "system",
@@ -32728,6 +32825,12 @@ Object.freeze({
32728
32825
  addonId: null,
32729
32826
  access: "view"
32730
32827
  },
32828
+ "deviceManager.listSiteZones": {
32829
+ capName: "device-manager",
32830
+ capScope: "system",
32831
+ addonId: null,
32832
+ access: "view"
32833
+ },
32731
32834
  "deviceManager.listWrappersForCap": {
32732
32835
  capName: "device-manager",
32733
32836
  capScope: "system",
@@ -32812,12 +32915,24 @@ Object.freeze({
32812
32915
  addonId: null,
32813
32916
  access: "delete"
32814
32917
  },
32918
+ "deviceManager.removeSiteZone": {
32919
+ capName: "device-manager",
32920
+ capScope: "system",
32921
+ addonId: null,
32922
+ access: "delete"
32923
+ },
32815
32924
  "deviceManager.renameLocation": {
32816
32925
  capName: "device-manager",
32817
32926
  capScope: "system",
32818
32927
  addonId: null,
32819
32928
  access: "create"
32820
32929
  },
32930
+ "deviceManager.renameSiteZone": {
32931
+ capName: "device-manager",
32932
+ capScope: "system",
32933
+ addonId: null,
32934
+ access: "create"
32935
+ },
32821
32936
  "deviceManager.runDeviceAction": {
32822
32937
  capName: "device-manager",
32823
32938
  capScope: "system",
@@ -32860,12 +32975,24 @@ Object.freeze({
32860
32975
  addonId: null,
32861
32976
  access: "create"
32862
32977
  },
32978
+ "deviceManager.setLocationDescription": {
32979
+ capName: "device-manager",
32980
+ capScope: "system",
32981
+ addonId: null,
32982
+ access: "create"
32983
+ },
32863
32984
  "deviceManager.setLocationIcon": {
32864
32985
  capName: "device-manager",
32865
32986
  capScope: "system",
32866
32987
  addonId: null,
32867
32988
  access: "create"
32868
32989
  },
32990
+ "deviceManager.setLocationZone": {
32991
+ capName: "device-manager",
32992
+ capScope: "system",
32993
+ addonId: null,
32994
+ access: "create"
32995
+ },
32869
32996
  "deviceManager.setMetadata": {
32870
32997
  capName: "device-manager",
32871
32998
  capScope: "system",
@@ -32896,6 +33023,12 @@ Object.freeze({
32896
33023
  addonId: null,
32897
33024
  access: "create"
32898
33025
  },
33026
+ "deviceManager.setSiteZone": {
33027
+ capName: "device-manager",
33028
+ capScope: "system",
33029
+ addonId: null,
33030
+ access: "create"
33031
+ },
32899
33032
  "deviceManager.setStreamProfileMap": {
32900
33033
  capName: "device-manager",
32901
33034
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-mqtt-broker",
3
- "version": "1.2.106",
3
+ "version": "1.2.107",
4
4
  "description": "MQTT broker registry addon for CamStack — manages external broker entries + an optional embedded aedes broker. Consumers spin up their own `mqtt.js` clients via the `mqtt-broker` cap.",
5
5
  "keywords": [
6
6
  "camstack",