@camstack/addon-provider-rtsp 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/addon.js CHANGED
@@ -13572,6 +13572,70 @@ var LocationIconAssignmentSchema = object({
13572
13572
  locationKey: string(),
13573
13573
  icon: LocationIconIdSchema
13574
13574
  });
13575
+ /**
13576
+ * One (location, description) assignment as it travels.
13577
+ *
13578
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
13579
+ * reason: this lived for a while in the post-analysis addon's own settings,
13580
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
13581
+ * the Locations page carried the icon and silently orphaned the description —
13582
+ * two authorities for one thing, joined by two different rules. Now both hang
13583
+ * off the location itself, on `locationIconKey`.
13584
+ */
13585
+ var LocationDescriptionAssignmentSchema = object({
13586
+ locationKey: string(),
13587
+ description: string()
13588
+ });
13589
+ /**
13590
+ * A SITE ZONE — a named part of the property that several locations belong to.
13591
+ *
13592
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
13593
+ * kitchen. A camera belongs to exactly one location, and a location to at most
13594
+ * one zone, so a camera's zone is derived and never stored on the device: the
13595
+ * whole point of this entity is that grouping rooms touches no device row.
13596
+ *
13597
+ * ## Why not `zone`
13598
+ *
13599
+ * Because `zone` is already the most loaded word in this product: 612 source
13600
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
13601
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
13602
+ * set of rooms — and a reader who confuses them will look for a camera's
13603
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
13604
+ * word by calling the drawn one what it actually is: a detection zone.
13605
+ *
13606
+ * ## The key
13607
+ *
13608
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
13609
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
13610
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
13611
+ * silently-dropped location description.
13612
+ *
13613
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
13614
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
13615
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
13616
+ */
13617
+ /**
13618
+ * One zone as it travels: its key, the label the operator typed, its icon and
13619
+ * the locations inside it.
13620
+ *
13621
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
13622
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
13623
+ * here, rather than left to a second call, because every consumer wants both
13624
+ * at once and a viewer that asked twice could render a zone whose membership
13625
+ * it has not fetched yet.
13626
+ *
13627
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
13628
+ * of those two is a choice, and a picker has to draw them differently.
13629
+ */
13630
+ var SiteZoneSchema = object({
13631
+ zoneKey: string(),
13632
+ label: string(),
13633
+ icon: LocationIconIdSchema.nullable(),
13634
+ /** Folded location keys, sorted. A location listed here need not be
13635
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
13636
+ * the ones that most want grouping. */
13637
+ locationKeys: array(string())
13638
+ });
13575
13639
  var ProviderStatusSchema = object({
13576
13640
  connected: boolean(),
13577
13641
  deviceCount: number(),
@@ -14170,6 +14234,33 @@ method(object({
14170
14234
  }), _void(), {
14171
14235
  kind: "mutation",
14172
14236
  auth: "admin"
14237
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
14238
+ location: string(),
14239
+ description: string().max(400).nullable()
14240
+ }), _void(), {
14241
+ kind: "mutation",
14242
+ auth: "admin"
14243
+ }), method(_void(), array(SiteZoneSchema)), method(object({
14244
+ name: string(),
14245
+ icon: LocationIconIdSchema.nullable().optional()
14246
+ }), _void(), {
14247
+ kind: "mutation",
14248
+ auth: "admin"
14249
+ }), method(object({ name: string() }), _void(), {
14250
+ kind: "mutation",
14251
+ auth: "admin"
14252
+ }), method(object({
14253
+ from: string(),
14254
+ to: string()
14255
+ }), _void(), {
14256
+ kind: "mutation",
14257
+ auth: "admin"
14258
+ }), method(object({
14259
+ location: string(),
14260
+ zone: string().nullable()
14261
+ }), _void(), {
14262
+ kind: "mutation",
14263
+ auth: "admin"
14173
14264
  }), method(object({
14174
14265
  deviceId: number(),
14175
14266
  disabled: boolean()
@@ -37258,6 +37349,12 @@ Object.freeze({
37258
37349
  addonId: null,
37259
37350
  access: "view"
37260
37351
  },
37352
+ "deviceManager.listLocationDescriptions": {
37353
+ capName: "device-manager",
37354
+ capScope: "system",
37355
+ addonId: null,
37356
+ access: "view"
37357
+ },
37261
37358
  "deviceManager.listLocationIcons": {
37262
37359
  capName: "device-manager",
37263
37360
  capScope: "system",
@@ -37276,6 +37373,12 @@ Object.freeze({
37276
37373
  addonId: null,
37277
37374
  access: "view"
37278
37375
  },
37376
+ "deviceManager.listSiteZones": {
37377
+ capName: "device-manager",
37378
+ capScope: "system",
37379
+ addonId: null,
37380
+ access: "view"
37381
+ },
37279
37382
  "deviceManager.listWrappersForCap": {
37280
37383
  capName: "device-manager",
37281
37384
  capScope: "system",
@@ -37360,12 +37463,24 @@ Object.freeze({
37360
37463
  addonId: null,
37361
37464
  access: "delete"
37362
37465
  },
37466
+ "deviceManager.removeSiteZone": {
37467
+ capName: "device-manager",
37468
+ capScope: "system",
37469
+ addonId: null,
37470
+ access: "delete"
37471
+ },
37363
37472
  "deviceManager.renameLocation": {
37364
37473
  capName: "device-manager",
37365
37474
  capScope: "system",
37366
37475
  addonId: null,
37367
37476
  access: "create"
37368
37477
  },
37478
+ "deviceManager.renameSiteZone": {
37479
+ capName: "device-manager",
37480
+ capScope: "system",
37481
+ addonId: null,
37482
+ access: "create"
37483
+ },
37369
37484
  "deviceManager.runDeviceAction": {
37370
37485
  capName: "device-manager",
37371
37486
  capScope: "system",
@@ -37408,12 +37523,24 @@ Object.freeze({
37408
37523
  addonId: null,
37409
37524
  access: "create"
37410
37525
  },
37526
+ "deviceManager.setLocationDescription": {
37527
+ capName: "device-manager",
37528
+ capScope: "system",
37529
+ addonId: null,
37530
+ access: "create"
37531
+ },
37411
37532
  "deviceManager.setLocationIcon": {
37412
37533
  capName: "device-manager",
37413
37534
  capScope: "system",
37414
37535
  addonId: null,
37415
37536
  access: "create"
37416
37537
  },
37538
+ "deviceManager.setLocationZone": {
37539
+ capName: "device-manager",
37540
+ capScope: "system",
37541
+ addonId: null,
37542
+ access: "create"
37543
+ },
37417
37544
  "deviceManager.setMetadata": {
37418
37545
  capName: "device-manager",
37419
37546
  capScope: "system",
@@ -37444,6 +37571,12 @@ Object.freeze({
37444
37571
  addonId: null,
37445
37572
  access: "create"
37446
37573
  },
37574
+ "deviceManager.setSiteZone": {
37575
+ capName: "device-manager",
37576
+ capScope: "system",
37577
+ addonId: null,
37578
+ access: "create"
37579
+ },
37447
37580
  "deviceManager.setStreamProfileMap": {
37448
37581
  capName: "device-manager",
37449
37582
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -13548,6 +13548,70 @@ var LocationIconAssignmentSchema = object({
13548
13548
  locationKey: string(),
13549
13549
  icon: LocationIconIdSchema
13550
13550
  });
13551
+ /**
13552
+ * One (location, description) assignment as it travels.
13553
+ *
13554
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
13555
+ * reason: this lived for a while in the post-analysis addon's own settings,
13556
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
13557
+ * the Locations page carried the icon and silently orphaned the description —
13558
+ * two authorities for one thing, joined by two different rules. Now both hang
13559
+ * off the location itself, on `locationIconKey`.
13560
+ */
13561
+ var LocationDescriptionAssignmentSchema = object({
13562
+ locationKey: string(),
13563
+ description: string()
13564
+ });
13565
+ /**
13566
+ * A SITE ZONE — a named part of the property that several locations belong to.
13567
+ *
13568
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
13569
+ * kitchen. A camera belongs to exactly one location, and a location to at most
13570
+ * one zone, so a camera's zone is derived and never stored on the device: the
13571
+ * whole point of this entity is that grouping rooms touches no device row.
13572
+ *
13573
+ * ## Why not `zone`
13574
+ *
13575
+ * Because `zone` is already the most loaded word in this product: 612 source
13576
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
13577
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
13578
+ * set of rooms — and a reader who confuses them will look for a camera's
13579
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
13580
+ * word by calling the drawn one what it actually is: a detection zone.
13581
+ *
13582
+ * ## The key
13583
+ *
13584
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
13585
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
13586
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
13587
+ * silently-dropped location description.
13588
+ *
13589
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
13590
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
13591
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
13592
+ */
13593
+ /**
13594
+ * One zone as it travels: its key, the label the operator typed, its icon and
13595
+ * the locations inside it.
13596
+ *
13597
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
13598
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
13599
+ * here, rather than left to a second call, because every consumer wants both
13600
+ * at once and a viewer that asked twice could render a zone whose membership
13601
+ * it has not fetched yet.
13602
+ *
13603
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
13604
+ * of those two is a choice, and a picker has to draw them differently.
13605
+ */
13606
+ var SiteZoneSchema = object({
13607
+ zoneKey: string(),
13608
+ label: string(),
13609
+ icon: LocationIconIdSchema.nullable(),
13610
+ /** Folded location keys, sorted. A location listed here need not be
13611
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
13612
+ * the ones that most want grouping. */
13613
+ locationKeys: array(string())
13614
+ });
13551
13615
  var ProviderStatusSchema = object({
13552
13616
  connected: boolean(),
13553
13617
  deviceCount: number(),
@@ -14146,6 +14210,33 @@ method(object({
14146
14210
  }), _void(), {
14147
14211
  kind: "mutation",
14148
14212
  auth: "admin"
14213
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
14214
+ location: string(),
14215
+ description: string().max(400).nullable()
14216
+ }), _void(), {
14217
+ kind: "mutation",
14218
+ auth: "admin"
14219
+ }), method(_void(), array(SiteZoneSchema)), method(object({
14220
+ name: string(),
14221
+ icon: LocationIconIdSchema.nullable().optional()
14222
+ }), _void(), {
14223
+ kind: "mutation",
14224
+ auth: "admin"
14225
+ }), method(object({ name: string() }), _void(), {
14226
+ kind: "mutation",
14227
+ auth: "admin"
14228
+ }), method(object({
14229
+ from: string(),
14230
+ to: string()
14231
+ }), _void(), {
14232
+ kind: "mutation",
14233
+ auth: "admin"
14234
+ }), method(object({
14235
+ location: string(),
14236
+ zone: string().nullable()
14237
+ }), _void(), {
14238
+ kind: "mutation",
14239
+ auth: "admin"
14149
14240
  }), method(object({
14150
14241
  deviceId: number(),
14151
14242
  disabled: boolean()
@@ -37234,6 +37325,12 @@ Object.freeze({
37234
37325
  addonId: null,
37235
37326
  access: "view"
37236
37327
  },
37328
+ "deviceManager.listLocationDescriptions": {
37329
+ capName: "device-manager",
37330
+ capScope: "system",
37331
+ addonId: null,
37332
+ access: "view"
37333
+ },
37237
37334
  "deviceManager.listLocationIcons": {
37238
37335
  capName: "device-manager",
37239
37336
  capScope: "system",
@@ -37252,6 +37349,12 @@ Object.freeze({
37252
37349
  addonId: null,
37253
37350
  access: "view"
37254
37351
  },
37352
+ "deviceManager.listSiteZones": {
37353
+ capName: "device-manager",
37354
+ capScope: "system",
37355
+ addonId: null,
37356
+ access: "view"
37357
+ },
37255
37358
  "deviceManager.listWrappersForCap": {
37256
37359
  capName: "device-manager",
37257
37360
  capScope: "system",
@@ -37336,12 +37439,24 @@ Object.freeze({
37336
37439
  addonId: null,
37337
37440
  access: "delete"
37338
37441
  },
37442
+ "deviceManager.removeSiteZone": {
37443
+ capName: "device-manager",
37444
+ capScope: "system",
37445
+ addonId: null,
37446
+ access: "delete"
37447
+ },
37339
37448
  "deviceManager.renameLocation": {
37340
37449
  capName: "device-manager",
37341
37450
  capScope: "system",
37342
37451
  addonId: null,
37343
37452
  access: "create"
37344
37453
  },
37454
+ "deviceManager.renameSiteZone": {
37455
+ capName: "device-manager",
37456
+ capScope: "system",
37457
+ addonId: null,
37458
+ access: "create"
37459
+ },
37345
37460
  "deviceManager.runDeviceAction": {
37346
37461
  capName: "device-manager",
37347
37462
  capScope: "system",
@@ -37384,12 +37499,24 @@ Object.freeze({
37384
37499
  addonId: null,
37385
37500
  access: "create"
37386
37501
  },
37502
+ "deviceManager.setLocationDescription": {
37503
+ capName: "device-manager",
37504
+ capScope: "system",
37505
+ addonId: null,
37506
+ access: "create"
37507
+ },
37387
37508
  "deviceManager.setLocationIcon": {
37388
37509
  capName: "device-manager",
37389
37510
  capScope: "system",
37390
37511
  addonId: null,
37391
37512
  access: "create"
37392
37513
  },
37514
+ "deviceManager.setLocationZone": {
37515
+ capName: "device-manager",
37516
+ capScope: "system",
37517
+ addonId: null,
37518
+ access: "create"
37519
+ },
37393
37520
  "deviceManager.setMetadata": {
37394
37521
  capName: "device-manager",
37395
37522
  capScope: "system",
@@ -37420,6 +37547,12 @@ Object.freeze({
37420
37547
  addonId: null,
37421
37548
  access: "create"
37422
37549
  },
37550
+ "deviceManager.setSiteZone": {
37551
+ capName: "device-manager",
37552
+ capScope: "system",
37553
+ addonId: null,
37554
+ access: "create"
37555
+ },
37423
37556
  "deviceManager.setStreamProfileMap": {
37424
37557
  capName: "device-manager",
37425
37558
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-rtsp",
3
- "version": "1.2.106",
3
+ "version": "1.2.107",
4
4
  "description": "Generic RTSP camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",