@camstack/addon-decoder-nodeav 1.2.105 → 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
@@ -13371,6 +13371,107 @@ var ExposeInputSchema = object({
13371
13371
  });
13372
13372
  var UnexposeInputSchema = object({ deviceId: string() });
13373
13373
  method(_void(), DeviceExportStatusSchema), method(_void(), array(DeviceKindSchema)), method(_void(), array(ExposedDeviceSchema)), method(ExposeInputSchema, _void(), { kind: "mutation" }), method(UnexposeInputSchema, _void(), { kind: "mutation" });
13374
+ /** Wire/storage schema for one icon id. */
13375
+ var LocationIconIdSchema = _enum([
13376
+ "map-pin",
13377
+ "house",
13378
+ "door-open",
13379
+ "sofa",
13380
+ "utensils",
13381
+ "bed-double",
13382
+ "bath",
13383
+ "briefcase",
13384
+ "car",
13385
+ "circle-parking",
13386
+ "route",
13387
+ "trees",
13388
+ "umbrella",
13389
+ "waves-ladder",
13390
+ "fence",
13391
+ "package",
13392
+ "warehouse",
13393
+ "store",
13394
+ "sun",
13395
+ "radar"
13396
+ ]);
13397
+ /**
13398
+ * One (location, icon) assignment as it travels.
13399
+ *
13400
+ * `locationKey` is ALWAYS {@link locationIconKey} of the label — never the
13401
+ * operator's casing. The registry matches labels trimmed + case-insensitively
13402
+ * everywhere (`addLocation`, `removeLocation`, `renameLocation`), and a
13403
+ * case-only rename (`cucina` → `Cucina`) is a real edit this repo supports; a
13404
+ * map keyed on the displayed casing would orphan its entry on exactly that
13405
+ * edit. Consumers join by keying their own label through `locationIconKey`.
13406
+ */
13407
+ var LocationIconAssignmentSchema = object({
13408
+ locationKey: string(),
13409
+ icon: LocationIconIdSchema
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
+ });
13374
13475
  var ProviderStatusSchema = object({
13375
13476
  connected: boolean(),
13376
13477
  deviceCount: number(),
@@ -13882,6 +13983,39 @@ method(object({
13882
13983
  }), object({ moved: number() }), {
13883
13984
  kind: "mutation",
13884
13985
  auth: "admin"
13986
+ }), method(_void(), array(LocationIconAssignmentSchema)), method(object({
13987
+ location: string(),
13988
+ icon: LocationIconIdSchema.nullable()
13989
+ }), _void(), {
13990
+ kind: "mutation",
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"
13885
14019
  }), method(object({
13886
14020
  deviceId: number(),
13887
14021
  disabled: boolean()
@@ -32705,6 +32839,18 @@ Object.freeze({
32705
32839
  addonId: null,
32706
32840
  access: "view"
32707
32841
  },
32842
+ "deviceManager.listLocationDescriptions": {
32843
+ capName: "device-manager",
32844
+ capScope: "system",
32845
+ addonId: null,
32846
+ access: "view"
32847
+ },
32848
+ "deviceManager.listLocationIcons": {
32849
+ capName: "device-manager",
32850
+ capScope: "system",
32851
+ addonId: null,
32852
+ access: "view"
32853
+ },
32708
32854
  "deviceManager.listLocations": {
32709
32855
  capName: "device-manager",
32710
32856
  capScope: "system",
@@ -32717,6 +32863,12 @@ Object.freeze({
32717
32863
  addonId: null,
32718
32864
  access: "view"
32719
32865
  },
32866
+ "deviceManager.listSiteZones": {
32867
+ capName: "device-manager",
32868
+ capScope: "system",
32869
+ addonId: null,
32870
+ access: "view"
32871
+ },
32720
32872
  "deviceManager.listWrappersForCap": {
32721
32873
  capName: "device-manager",
32722
32874
  capScope: "system",
@@ -32801,12 +32953,24 @@ Object.freeze({
32801
32953
  addonId: null,
32802
32954
  access: "delete"
32803
32955
  },
32956
+ "deviceManager.removeSiteZone": {
32957
+ capName: "device-manager",
32958
+ capScope: "system",
32959
+ addonId: null,
32960
+ access: "delete"
32961
+ },
32804
32962
  "deviceManager.renameLocation": {
32805
32963
  capName: "device-manager",
32806
32964
  capScope: "system",
32807
32965
  addonId: null,
32808
32966
  access: "create"
32809
32967
  },
32968
+ "deviceManager.renameSiteZone": {
32969
+ capName: "device-manager",
32970
+ capScope: "system",
32971
+ addonId: null,
32972
+ access: "create"
32973
+ },
32810
32974
  "deviceManager.runDeviceAction": {
32811
32975
  capName: "device-manager",
32812
32976
  capScope: "system",
@@ -32849,6 +33013,24 @@ Object.freeze({
32849
33013
  addonId: null,
32850
33014
  access: "create"
32851
33015
  },
33016
+ "deviceManager.setLocationDescription": {
33017
+ capName: "device-manager",
33018
+ capScope: "system",
33019
+ addonId: null,
33020
+ access: "create"
33021
+ },
33022
+ "deviceManager.setLocationIcon": {
33023
+ capName: "device-manager",
33024
+ capScope: "system",
33025
+ addonId: null,
33026
+ access: "create"
33027
+ },
33028
+ "deviceManager.setLocationZone": {
33029
+ capName: "device-manager",
33030
+ capScope: "system",
33031
+ addonId: null,
33032
+ access: "create"
33033
+ },
32852
33034
  "deviceManager.setMetadata": {
32853
33035
  capName: "device-manager",
32854
33036
  capScope: "system",
@@ -32879,6 +33061,12 @@ Object.freeze({
32879
33061
  addonId: null,
32880
33062
  access: "create"
32881
33063
  },
33064
+ "deviceManager.setSiteZone": {
33065
+ capName: "device-manager",
33066
+ capScope: "system",
33067
+ addonId: null,
33068
+ access: "create"
33069
+ },
32882
33070
  "deviceManager.setStreamProfileMap": {
32883
33071
  capName: "device-manager",
32884
33072
  capScope: "system",
package/dist/index.mjs CHANGED
@@ -13367,6 +13367,107 @@ var ExposeInputSchema = object({
13367
13367
  });
13368
13368
  var UnexposeInputSchema = object({ deviceId: string() });
13369
13369
  method(_void(), DeviceExportStatusSchema), method(_void(), array(DeviceKindSchema)), method(_void(), array(ExposedDeviceSchema)), method(ExposeInputSchema, _void(), { kind: "mutation" }), method(UnexposeInputSchema, _void(), { kind: "mutation" });
13370
+ /** Wire/storage schema for one icon id. */
13371
+ var LocationIconIdSchema = _enum([
13372
+ "map-pin",
13373
+ "house",
13374
+ "door-open",
13375
+ "sofa",
13376
+ "utensils",
13377
+ "bed-double",
13378
+ "bath",
13379
+ "briefcase",
13380
+ "car",
13381
+ "circle-parking",
13382
+ "route",
13383
+ "trees",
13384
+ "umbrella",
13385
+ "waves-ladder",
13386
+ "fence",
13387
+ "package",
13388
+ "warehouse",
13389
+ "store",
13390
+ "sun",
13391
+ "radar"
13392
+ ]);
13393
+ /**
13394
+ * One (location, icon) assignment as it travels.
13395
+ *
13396
+ * `locationKey` is ALWAYS {@link locationIconKey} of the label — never the
13397
+ * operator's casing. The registry matches labels trimmed + case-insensitively
13398
+ * everywhere (`addLocation`, `removeLocation`, `renameLocation`), and a
13399
+ * case-only rename (`cucina` → `Cucina`) is a real edit this repo supports; a
13400
+ * map keyed on the displayed casing would orphan its entry on exactly that
13401
+ * edit. Consumers join by keying their own label through `locationIconKey`.
13402
+ */
13403
+ var LocationIconAssignmentSchema = object({
13404
+ locationKey: string(),
13405
+ icon: LocationIconIdSchema
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
+ });
13370
13471
  var ProviderStatusSchema = object({
13371
13472
  connected: boolean(),
13372
13473
  deviceCount: number(),
@@ -13878,6 +13979,39 @@ method(object({
13878
13979
  }), object({ moved: number() }), {
13879
13980
  kind: "mutation",
13880
13981
  auth: "admin"
13982
+ }), method(_void(), array(LocationIconAssignmentSchema)), method(object({
13983
+ location: string(),
13984
+ icon: LocationIconIdSchema.nullable()
13985
+ }), _void(), {
13986
+ kind: "mutation",
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"
13881
14015
  }), method(object({
13882
14016
  deviceId: number(),
13883
14017
  disabled: boolean()
@@ -32701,6 +32835,18 @@ Object.freeze({
32701
32835
  addonId: null,
32702
32836
  access: "view"
32703
32837
  },
32838
+ "deviceManager.listLocationDescriptions": {
32839
+ capName: "device-manager",
32840
+ capScope: "system",
32841
+ addonId: null,
32842
+ access: "view"
32843
+ },
32844
+ "deviceManager.listLocationIcons": {
32845
+ capName: "device-manager",
32846
+ capScope: "system",
32847
+ addonId: null,
32848
+ access: "view"
32849
+ },
32704
32850
  "deviceManager.listLocations": {
32705
32851
  capName: "device-manager",
32706
32852
  capScope: "system",
@@ -32713,6 +32859,12 @@ Object.freeze({
32713
32859
  addonId: null,
32714
32860
  access: "view"
32715
32861
  },
32862
+ "deviceManager.listSiteZones": {
32863
+ capName: "device-manager",
32864
+ capScope: "system",
32865
+ addonId: null,
32866
+ access: "view"
32867
+ },
32716
32868
  "deviceManager.listWrappersForCap": {
32717
32869
  capName: "device-manager",
32718
32870
  capScope: "system",
@@ -32797,12 +32949,24 @@ Object.freeze({
32797
32949
  addonId: null,
32798
32950
  access: "delete"
32799
32951
  },
32952
+ "deviceManager.removeSiteZone": {
32953
+ capName: "device-manager",
32954
+ capScope: "system",
32955
+ addonId: null,
32956
+ access: "delete"
32957
+ },
32800
32958
  "deviceManager.renameLocation": {
32801
32959
  capName: "device-manager",
32802
32960
  capScope: "system",
32803
32961
  addonId: null,
32804
32962
  access: "create"
32805
32963
  },
32964
+ "deviceManager.renameSiteZone": {
32965
+ capName: "device-manager",
32966
+ capScope: "system",
32967
+ addonId: null,
32968
+ access: "create"
32969
+ },
32806
32970
  "deviceManager.runDeviceAction": {
32807
32971
  capName: "device-manager",
32808
32972
  capScope: "system",
@@ -32845,6 +33009,24 @@ Object.freeze({
32845
33009
  addonId: null,
32846
33010
  access: "create"
32847
33011
  },
33012
+ "deviceManager.setLocationDescription": {
33013
+ capName: "device-manager",
33014
+ capScope: "system",
33015
+ addonId: null,
33016
+ access: "create"
33017
+ },
33018
+ "deviceManager.setLocationIcon": {
33019
+ capName: "device-manager",
33020
+ capScope: "system",
33021
+ addonId: null,
33022
+ access: "create"
33023
+ },
33024
+ "deviceManager.setLocationZone": {
33025
+ capName: "device-manager",
33026
+ capScope: "system",
33027
+ addonId: null,
33028
+ access: "create"
33029
+ },
32848
33030
  "deviceManager.setMetadata": {
32849
33031
  capName: "device-manager",
32850
33032
  capScope: "system",
@@ -32875,6 +33057,12 @@ Object.freeze({
32875
33057
  addonId: null,
32876
33058
  access: "create"
32877
33059
  },
33060
+ "deviceManager.setSiteZone": {
33061
+ capName: "device-manager",
33062
+ capScope: "system",
33063
+ addonId: null,
33064
+ access: "create"
33065
+ },
32878
33066
  "deviceManager.setStreamProfileMap": {
32879
33067
  capName: "device-manager",
32880
33068
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-decoder-nodeav",
3
- "version": "1.2.105",
3
+ "version": "1.2.107",
4
4
  "description": "Standalone in-process node-av decoder addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",