@camstack/addon-decoder-nodeav 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.
package/dist/index.js CHANGED
@@ -13408,6 +13408,70 @@ var LocationIconAssignmentSchema = object({
13408
13408
  locationKey: string(),
13409
13409
  icon: LocationIconIdSchema
13410
13410
  });
13411
+ /**
13412
+ * One (location, description) assignment as it travels.
13413
+ *
13414
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
13415
+ * reason: this lived for a while in the post-analysis addon's own settings,
13416
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
13417
+ * the Locations page carried the icon and silently orphaned the description —
13418
+ * two authorities for one thing, joined by two different rules. Now both hang
13419
+ * off the location itself, on `locationIconKey`.
13420
+ */
13421
+ var LocationDescriptionAssignmentSchema = object({
13422
+ locationKey: string(),
13423
+ description: string()
13424
+ });
13425
+ /**
13426
+ * A SITE ZONE — a named part of the property that several locations belong to.
13427
+ *
13428
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
13429
+ * kitchen. A camera belongs to exactly one location, and a location to at most
13430
+ * one zone, so a camera's zone is derived and never stored on the device: the
13431
+ * whole point of this entity is that grouping rooms touches no device row.
13432
+ *
13433
+ * ## Why not `zone`
13434
+ *
13435
+ * Because `zone` is already the most loaded word in this product: 612 source
13436
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
13437
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
13438
+ * set of rooms — and a reader who confuses them will look for a camera's
13439
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
13440
+ * word by calling the drawn one what it actually is: a detection zone.
13441
+ *
13442
+ * ## The key
13443
+ *
13444
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
13445
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
13446
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
13447
+ * silently-dropped location description.
13448
+ *
13449
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
13450
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
13451
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
13452
+ */
13453
+ /**
13454
+ * One zone as it travels: its key, the label the operator typed, its icon and
13455
+ * the locations inside it.
13456
+ *
13457
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
13458
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
13459
+ * here, rather than left to a second call, because every consumer wants both
13460
+ * at once and a viewer that asked twice could render a zone whose membership
13461
+ * it has not fetched yet.
13462
+ *
13463
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
13464
+ * of those two is a choice, and a picker has to draw them differently.
13465
+ */
13466
+ var SiteZoneSchema = object({
13467
+ zoneKey: string(),
13468
+ label: string(),
13469
+ icon: LocationIconIdSchema.nullable(),
13470
+ /** Folded location keys, sorted. A location listed here need not be
13471
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
13472
+ * the ones that most want grouping. */
13473
+ locationKeys: array(string())
13474
+ });
13411
13475
  var ProviderStatusSchema = object({
13412
13476
  connected: boolean(),
13413
13477
  deviceCount: number(),
@@ -13925,6 +13989,33 @@ method(object({
13925
13989
  }), _void(), {
13926
13990
  kind: "mutation",
13927
13991
  auth: "admin"
13992
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
13993
+ location: string(),
13994
+ description: string().max(400).nullable()
13995
+ }), _void(), {
13996
+ kind: "mutation",
13997
+ auth: "admin"
13998
+ }), method(_void(), array(SiteZoneSchema)), method(object({
13999
+ name: string(),
14000
+ icon: LocationIconIdSchema.nullable().optional()
14001
+ }), _void(), {
14002
+ kind: "mutation",
14003
+ auth: "admin"
14004
+ }), method(object({ name: string() }), _void(), {
14005
+ kind: "mutation",
14006
+ auth: "admin"
14007
+ }), method(object({
14008
+ from: string(),
14009
+ to: string()
14010
+ }), _void(), {
14011
+ kind: "mutation",
14012
+ auth: "admin"
14013
+ }), method(object({
14014
+ location: string(),
14015
+ zone: string().nullable()
14016
+ }), _void(), {
14017
+ kind: "mutation",
14018
+ auth: "admin"
13928
14019
  }), method(object({
13929
14020
  deviceId: number(),
13930
14021
  disabled: boolean()
@@ -32748,6 +32839,12 @@ Object.freeze({
32748
32839
  addonId: null,
32749
32840
  access: "view"
32750
32841
  },
32842
+ "deviceManager.listLocationDescriptions": {
32843
+ capName: "device-manager",
32844
+ capScope: "system",
32845
+ addonId: null,
32846
+ access: "view"
32847
+ },
32751
32848
  "deviceManager.listLocationIcons": {
32752
32849
  capName: "device-manager",
32753
32850
  capScope: "system",
@@ -32766,6 +32863,12 @@ Object.freeze({
32766
32863
  addonId: null,
32767
32864
  access: "view"
32768
32865
  },
32866
+ "deviceManager.listSiteZones": {
32867
+ capName: "device-manager",
32868
+ capScope: "system",
32869
+ addonId: null,
32870
+ access: "view"
32871
+ },
32769
32872
  "deviceManager.listWrappersForCap": {
32770
32873
  capName: "device-manager",
32771
32874
  capScope: "system",
@@ -32850,12 +32953,24 @@ Object.freeze({
32850
32953
  addonId: null,
32851
32954
  access: "delete"
32852
32955
  },
32956
+ "deviceManager.removeSiteZone": {
32957
+ capName: "device-manager",
32958
+ capScope: "system",
32959
+ addonId: null,
32960
+ access: "delete"
32961
+ },
32853
32962
  "deviceManager.renameLocation": {
32854
32963
  capName: "device-manager",
32855
32964
  capScope: "system",
32856
32965
  addonId: null,
32857
32966
  access: "create"
32858
32967
  },
32968
+ "deviceManager.renameSiteZone": {
32969
+ capName: "device-manager",
32970
+ capScope: "system",
32971
+ addonId: null,
32972
+ access: "create"
32973
+ },
32859
32974
  "deviceManager.runDeviceAction": {
32860
32975
  capName: "device-manager",
32861
32976
  capScope: "system",
@@ -32898,12 +33013,24 @@ Object.freeze({
32898
33013
  addonId: null,
32899
33014
  access: "create"
32900
33015
  },
33016
+ "deviceManager.setLocationDescription": {
33017
+ capName: "device-manager",
33018
+ capScope: "system",
33019
+ addonId: null,
33020
+ access: "create"
33021
+ },
32901
33022
  "deviceManager.setLocationIcon": {
32902
33023
  capName: "device-manager",
32903
33024
  capScope: "system",
32904
33025
  addonId: null,
32905
33026
  access: "create"
32906
33027
  },
33028
+ "deviceManager.setLocationZone": {
33029
+ capName: "device-manager",
33030
+ capScope: "system",
33031
+ addonId: null,
33032
+ access: "create"
33033
+ },
32907
33034
  "deviceManager.setMetadata": {
32908
33035
  capName: "device-manager",
32909
33036
  capScope: "system",
@@ -32934,6 +33061,12 @@ Object.freeze({
32934
33061
  addonId: null,
32935
33062
  access: "create"
32936
33063
  },
33064
+ "deviceManager.setSiteZone": {
33065
+ capName: "device-manager",
33066
+ capScope: "system",
33067
+ addonId: null,
33068
+ access: "create"
33069
+ },
32937
33070
  "deviceManager.setStreamProfileMap": {
32938
33071
  capName: "device-manager",
32939
33072
  capScope: "system",
package/dist/index.mjs CHANGED
@@ -13404,6 +13404,70 @@ var LocationIconAssignmentSchema = object({
13404
13404
  locationKey: string(),
13405
13405
  icon: LocationIconIdSchema
13406
13406
  });
13407
+ /**
13408
+ * One (location, description) assignment as it travels.
13409
+ *
13410
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
13411
+ * reason: this lived for a while in the post-analysis addon's own settings,
13412
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
13413
+ * the Locations page carried the icon and silently orphaned the description —
13414
+ * two authorities for one thing, joined by two different rules. Now both hang
13415
+ * off the location itself, on `locationIconKey`.
13416
+ */
13417
+ var LocationDescriptionAssignmentSchema = object({
13418
+ locationKey: string(),
13419
+ description: string()
13420
+ });
13421
+ /**
13422
+ * A SITE ZONE — a named part of the property that several locations belong to.
13423
+ *
13424
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
13425
+ * kitchen. A camera belongs to exactly one location, and a location to at most
13426
+ * one zone, so a camera's zone is derived and never stored on the device: the
13427
+ * whole point of this entity is that grouping rooms touches no device row.
13428
+ *
13429
+ * ## Why not `zone`
13430
+ *
13431
+ * Because `zone` is already the most loaded word in this product: 612 source
13432
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
13433
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
13434
+ * set of rooms — and a reader who confuses them will look for a camera's
13435
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
13436
+ * word by calling the drawn one what it actually is: a detection zone.
13437
+ *
13438
+ * ## The key
13439
+ *
13440
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
13441
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
13442
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
13443
+ * silently-dropped location description.
13444
+ *
13445
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
13446
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
13447
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
13448
+ */
13449
+ /**
13450
+ * One zone as it travels: its key, the label the operator typed, its icon and
13451
+ * the locations inside it.
13452
+ *
13453
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
13454
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
13455
+ * here, rather than left to a second call, because every consumer wants both
13456
+ * at once and a viewer that asked twice could render a zone whose membership
13457
+ * it has not fetched yet.
13458
+ *
13459
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
13460
+ * of those two is a choice, and a picker has to draw them differently.
13461
+ */
13462
+ var SiteZoneSchema = object({
13463
+ zoneKey: string(),
13464
+ label: string(),
13465
+ icon: LocationIconIdSchema.nullable(),
13466
+ /** Folded location keys, sorted. A location listed here need not be
13467
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
13468
+ * the ones that most want grouping. */
13469
+ locationKeys: array(string())
13470
+ });
13407
13471
  var ProviderStatusSchema = object({
13408
13472
  connected: boolean(),
13409
13473
  deviceCount: number(),
@@ -13921,6 +13985,33 @@ method(object({
13921
13985
  }), _void(), {
13922
13986
  kind: "mutation",
13923
13987
  auth: "admin"
13988
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
13989
+ location: string(),
13990
+ description: string().max(400).nullable()
13991
+ }), _void(), {
13992
+ kind: "mutation",
13993
+ auth: "admin"
13994
+ }), method(_void(), array(SiteZoneSchema)), method(object({
13995
+ name: string(),
13996
+ icon: LocationIconIdSchema.nullable().optional()
13997
+ }), _void(), {
13998
+ kind: "mutation",
13999
+ auth: "admin"
14000
+ }), method(object({ name: string() }), _void(), {
14001
+ kind: "mutation",
14002
+ auth: "admin"
14003
+ }), method(object({
14004
+ from: string(),
14005
+ to: string()
14006
+ }), _void(), {
14007
+ kind: "mutation",
14008
+ auth: "admin"
14009
+ }), method(object({
14010
+ location: string(),
14011
+ zone: string().nullable()
14012
+ }), _void(), {
14013
+ kind: "mutation",
14014
+ auth: "admin"
13924
14015
  }), method(object({
13925
14016
  deviceId: number(),
13926
14017
  disabled: boolean()
@@ -32744,6 +32835,12 @@ Object.freeze({
32744
32835
  addonId: null,
32745
32836
  access: "view"
32746
32837
  },
32838
+ "deviceManager.listLocationDescriptions": {
32839
+ capName: "device-manager",
32840
+ capScope: "system",
32841
+ addonId: null,
32842
+ access: "view"
32843
+ },
32747
32844
  "deviceManager.listLocationIcons": {
32748
32845
  capName: "device-manager",
32749
32846
  capScope: "system",
@@ -32762,6 +32859,12 @@ Object.freeze({
32762
32859
  addonId: null,
32763
32860
  access: "view"
32764
32861
  },
32862
+ "deviceManager.listSiteZones": {
32863
+ capName: "device-manager",
32864
+ capScope: "system",
32865
+ addonId: null,
32866
+ access: "view"
32867
+ },
32765
32868
  "deviceManager.listWrappersForCap": {
32766
32869
  capName: "device-manager",
32767
32870
  capScope: "system",
@@ -32846,12 +32949,24 @@ Object.freeze({
32846
32949
  addonId: null,
32847
32950
  access: "delete"
32848
32951
  },
32952
+ "deviceManager.removeSiteZone": {
32953
+ capName: "device-manager",
32954
+ capScope: "system",
32955
+ addonId: null,
32956
+ access: "delete"
32957
+ },
32849
32958
  "deviceManager.renameLocation": {
32850
32959
  capName: "device-manager",
32851
32960
  capScope: "system",
32852
32961
  addonId: null,
32853
32962
  access: "create"
32854
32963
  },
32964
+ "deviceManager.renameSiteZone": {
32965
+ capName: "device-manager",
32966
+ capScope: "system",
32967
+ addonId: null,
32968
+ access: "create"
32969
+ },
32855
32970
  "deviceManager.runDeviceAction": {
32856
32971
  capName: "device-manager",
32857
32972
  capScope: "system",
@@ -32894,12 +33009,24 @@ Object.freeze({
32894
33009
  addonId: null,
32895
33010
  access: "create"
32896
33011
  },
33012
+ "deviceManager.setLocationDescription": {
33013
+ capName: "device-manager",
33014
+ capScope: "system",
33015
+ addonId: null,
33016
+ access: "create"
33017
+ },
32897
33018
  "deviceManager.setLocationIcon": {
32898
33019
  capName: "device-manager",
32899
33020
  capScope: "system",
32900
33021
  addonId: null,
32901
33022
  access: "create"
32902
33023
  },
33024
+ "deviceManager.setLocationZone": {
33025
+ capName: "device-manager",
33026
+ capScope: "system",
33027
+ addonId: null,
33028
+ access: "create"
33029
+ },
32903
33030
  "deviceManager.setMetadata": {
32904
33031
  capName: "device-manager",
32905
33032
  capScope: "system",
@@ -32930,6 +33057,12 @@ Object.freeze({
32930
33057
  addonId: null,
32931
33058
  access: "create"
32932
33059
  },
33060
+ "deviceManager.setSiteZone": {
33061
+ capName: "device-manager",
33062
+ capScope: "system",
33063
+ addonId: null,
33064
+ access: "create"
33065
+ },
32933
33066
  "deviceManager.setStreamProfileMap": {
32934
33067
  capName: "device-manager",
32935
33068
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-decoder-nodeav",
3
- "version": "1.2.106",
3
+ "version": "1.2.107",
4
4
  "description": "Standalone in-process node-av decoder addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",