@camstack/addon-provider-rtsp 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/addon.js CHANGED
@@ -13535,6 +13535,107 @@ var ExposeInputSchema = object({
13535
13535
  });
13536
13536
  var UnexposeInputSchema = object({ deviceId: string() });
13537
13537
  method(_void(), DeviceExportStatusSchema), method(_void(), array(DeviceKindSchema)), method(_void(), array(ExposedDeviceSchema)), method(ExposeInputSchema, _void(), { kind: "mutation" }), method(UnexposeInputSchema, _void(), { kind: "mutation" });
13538
+ /** Wire/storage schema for one icon id. */
13539
+ var LocationIconIdSchema = _enum([
13540
+ "map-pin",
13541
+ "house",
13542
+ "door-open",
13543
+ "sofa",
13544
+ "utensils",
13545
+ "bed-double",
13546
+ "bath",
13547
+ "briefcase",
13548
+ "car",
13549
+ "circle-parking",
13550
+ "route",
13551
+ "trees",
13552
+ "umbrella",
13553
+ "waves-ladder",
13554
+ "fence",
13555
+ "package",
13556
+ "warehouse",
13557
+ "store",
13558
+ "sun",
13559
+ "radar"
13560
+ ]);
13561
+ /**
13562
+ * One (location, icon) assignment as it travels.
13563
+ *
13564
+ * `locationKey` is ALWAYS {@link locationIconKey} of the label — never the
13565
+ * operator's casing. The registry matches labels trimmed + case-insensitively
13566
+ * everywhere (`addLocation`, `removeLocation`, `renameLocation`), and a
13567
+ * case-only rename (`cucina` → `Cucina`) is a real edit this repo supports; a
13568
+ * map keyed on the displayed casing would orphan its entry on exactly that
13569
+ * edit. Consumers join by keying their own label through `locationIconKey`.
13570
+ */
13571
+ var LocationIconAssignmentSchema = object({
13572
+ locationKey: string(),
13573
+ icon: LocationIconIdSchema
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
+ });
13538
13639
  var ProviderStatusSchema = object({
13539
13640
  connected: boolean(),
13540
13641
  deviceCount: number(),
@@ -14127,6 +14228,39 @@ method(object({
14127
14228
  }), object({ moved: number() }), {
14128
14229
  kind: "mutation",
14129
14230
  auth: "admin"
14231
+ }), method(_void(), array(LocationIconAssignmentSchema)), method(object({
14232
+ location: string(),
14233
+ icon: LocationIconIdSchema.nullable()
14234
+ }), _void(), {
14235
+ kind: "mutation",
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"
14130
14264
  }), method(object({
14131
14265
  deviceId: number(),
14132
14266
  disabled: boolean()
@@ -37215,6 +37349,18 @@ Object.freeze({
37215
37349
  addonId: null,
37216
37350
  access: "view"
37217
37351
  },
37352
+ "deviceManager.listLocationDescriptions": {
37353
+ capName: "device-manager",
37354
+ capScope: "system",
37355
+ addonId: null,
37356
+ access: "view"
37357
+ },
37358
+ "deviceManager.listLocationIcons": {
37359
+ capName: "device-manager",
37360
+ capScope: "system",
37361
+ addonId: null,
37362
+ access: "view"
37363
+ },
37218
37364
  "deviceManager.listLocations": {
37219
37365
  capName: "device-manager",
37220
37366
  capScope: "system",
@@ -37227,6 +37373,12 @@ Object.freeze({
37227
37373
  addonId: null,
37228
37374
  access: "view"
37229
37375
  },
37376
+ "deviceManager.listSiteZones": {
37377
+ capName: "device-manager",
37378
+ capScope: "system",
37379
+ addonId: null,
37380
+ access: "view"
37381
+ },
37230
37382
  "deviceManager.listWrappersForCap": {
37231
37383
  capName: "device-manager",
37232
37384
  capScope: "system",
@@ -37311,12 +37463,24 @@ Object.freeze({
37311
37463
  addonId: null,
37312
37464
  access: "delete"
37313
37465
  },
37466
+ "deviceManager.removeSiteZone": {
37467
+ capName: "device-manager",
37468
+ capScope: "system",
37469
+ addonId: null,
37470
+ access: "delete"
37471
+ },
37314
37472
  "deviceManager.renameLocation": {
37315
37473
  capName: "device-manager",
37316
37474
  capScope: "system",
37317
37475
  addonId: null,
37318
37476
  access: "create"
37319
37477
  },
37478
+ "deviceManager.renameSiteZone": {
37479
+ capName: "device-manager",
37480
+ capScope: "system",
37481
+ addonId: null,
37482
+ access: "create"
37483
+ },
37320
37484
  "deviceManager.runDeviceAction": {
37321
37485
  capName: "device-manager",
37322
37486
  capScope: "system",
@@ -37359,6 +37523,24 @@ Object.freeze({
37359
37523
  addonId: null,
37360
37524
  access: "create"
37361
37525
  },
37526
+ "deviceManager.setLocationDescription": {
37527
+ capName: "device-manager",
37528
+ capScope: "system",
37529
+ addonId: null,
37530
+ access: "create"
37531
+ },
37532
+ "deviceManager.setLocationIcon": {
37533
+ capName: "device-manager",
37534
+ capScope: "system",
37535
+ addonId: null,
37536
+ access: "create"
37537
+ },
37538
+ "deviceManager.setLocationZone": {
37539
+ capName: "device-manager",
37540
+ capScope: "system",
37541
+ addonId: null,
37542
+ access: "create"
37543
+ },
37362
37544
  "deviceManager.setMetadata": {
37363
37545
  capName: "device-manager",
37364
37546
  capScope: "system",
@@ -37389,6 +37571,12 @@ Object.freeze({
37389
37571
  addonId: null,
37390
37572
  access: "create"
37391
37573
  },
37574
+ "deviceManager.setSiteZone": {
37575
+ capName: "device-manager",
37576
+ capScope: "system",
37577
+ addonId: null,
37578
+ access: "create"
37579
+ },
37392
37580
  "deviceManager.setStreamProfileMap": {
37393
37581
  capName: "device-manager",
37394
37582
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -13511,6 +13511,107 @@ var ExposeInputSchema = object({
13511
13511
  });
13512
13512
  var UnexposeInputSchema = object({ deviceId: string() });
13513
13513
  method(_void(), DeviceExportStatusSchema), method(_void(), array(DeviceKindSchema)), method(_void(), array(ExposedDeviceSchema)), method(ExposeInputSchema, _void(), { kind: "mutation" }), method(UnexposeInputSchema, _void(), { kind: "mutation" });
13514
+ /** Wire/storage schema for one icon id. */
13515
+ var LocationIconIdSchema = _enum([
13516
+ "map-pin",
13517
+ "house",
13518
+ "door-open",
13519
+ "sofa",
13520
+ "utensils",
13521
+ "bed-double",
13522
+ "bath",
13523
+ "briefcase",
13524
+ "car",
13525
+ "circle-parking",
13526
+ "route",
13527
+ "trees",
13528
+ "umbrella",
13529
+ "waves-ladder",
13530
+ "fence",
13531
+ "package",
13532
+ "warehouse",
13533
+ "store",
13534
+ "sun",
13535
+ "radar"
13536
+ ]);
13537
+ /**
13538
+ * One (location, icon) assignment as it travels.
13539
+ *
13540
+ * `locationKey` is ALWAYS {@link locationIconKey} of the label — never the
13541
+ * operator's casing. The registry matches labels trimmed + case-insensitively
13542
+ * everywhere (`addLocation`, `removeLocation`, `renameLocation`), and a
13543
+ * case-only rename (`cucina` → `Cucina`) is a real edit this repo supports; a
13544
+ * map keyed on the displayed casing would orphan its entry on exactly that
13545
+ * edit. Consumers join by keying their own label through `locationIconKey`.
13546
+ */
13547
+ var LocationIconAssignmentSchema = object({
13548
+ locationKey: string(),
13549
+ icon: LocationIconIdSchema
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
+ });
13514
13615
  var ProviderStatusSchema = object({
13515
13616
  connected: boolean(),
13516
13617
  deviceCount: number(),
@@ -14103,6 +14204,39 @@ method(object({
14103
14204
  }), object({ moved: number() }), {
14104
14205
  kind: "mutation",
14105
14206
  auth: "admin"
14207
+ }), method(_void(), array(LocationIconAssignmentSchema)), method(object({
14208
+ location: string(),
14209
+ icon: LocationIconIdSchema.nullable()
14210
+ }), _void(), {
14211
+ kind: "mutation",
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"
14106
14240
  }), method(object({
14107
14241
  deviceId: number(),
14108
14242
  disabled: boolean()
@@ -37191,6 +37325,18 @@ Object.freeze({
37191
37325
  addonId: null,
37192
37326
  access: "view"
37193
37327
  },
37328
+ "deviceManager.listLocationDescriptions": {
37329
+ capName: "device-manager",
37330
+ capScope: "system",
37331
+ addonId: null,
37332
+ access: "view"
37333
+ },
37334
+ "deviceManager.listLocationIcons": {
37335
+ capName: "device-manager",
37336
+ capScope: "system",
37337
+ addonId: null,
37338
+ access: "view"
37339
+ },
37194
37340
  "deviceManager.listLocations": {
37195
37341
  capName: "device-manager",
37196
37342
  capScope: "system",
@@ -37203,6 +37349,12 @@ Object.freeze({
37203
37349
  addonId: null,
37204
37350
  access: "view"
37205
37351
  },
37352
+ "deviceManager.listSiteZones": {
37353
+ capName: "device-manager",
37354
+ capScope: "system",
37355
+ addonId: null,
37356
+ access: "view"
37357
+ },
37206
37358
  "deviceManager.listWrappersForCap": {
37207
37359
  capName: "device-manager",
37208
37360
  capScope: "system",
@@ -37287,12 +37439,24 @@ Object.freeze({
37287
37439
  addonId: null,
37288
37440
  access: "delete"
37289
37441
  },
37442
+ "deviceManager.removeSiteZone": {
37443
+ capName: "device-manager",
37444
+ capScope: "system",
37445
+ addonId: null,
37446
+ access: "delete"
37447
+ },
37290
37448
  "deviceManager.renameLocation": {
37291
37449
  capName: "device-manager",
37292
37450
  capScope: "system",
37293
37451
  addonId: null,
37294
37452
  access: "create"
37295
37453
  },
37454
+ "deviceManager.renameSiteZone": {
37455
+ capName: "device-manager",
37456
+ capScope: "system",
37457
+ addonId: null,
37458
+ access: "create"
37459
+ },
37296
37460
  "deviceManager.runDeviceAction": {
37297
37461
  capName: "device-manager",
37298
37462
  capScope: "system",
@@ -37335,6 +37499,24 @@ Object.freeze({
37335
37499
  addonId: null,
37336
37500
  access: "create"
37337
37501
  },
37502
+ "deviceManager.setLocationDescription": {
37503
+ capName: "device-manager",
37504
+ capScope: "system",
37505
+ addonId: null,
37506
+ access: "create"
37507
+ },
37508
+ "deviceManager.setLocationIcon": {
37509
+ capName: "device-manager",
37510
+ capScope: "system",
37511
+ addonId: null,
37512
+ access: "create"
37513
+ },
37514
+ "deviceManager.setLocationZone": {
37515
+ capName: "device-manager",
37516
+ capScope: "system",
37517
+ addonId: null,
37518
+ access: "create"
37519
+ },
37338
37520
  "deviceManager.setMetadata": {
37339
37521
  capName: "device-manager",
37340
37522
  capScope: "system",
@@ -37365,6 +37547,12 @@ Object.freeze({
37365
37547
  addonId: null,
37366
37548
  access: "create"
37367
37549
  },
37550
+ "deviceManager.setSiteZone": {
37551
+ capName: "device-manager",
37552
+ capScope: "system",
37553
+ addonId: null,
37554
+ access: "create"
37555
+ },
37368
37556
  "deviceManager.setStreamProfileMap": {
37369
37557
  capName: "device-manager",
37370
37558
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-rtsp",
3
- "version": "1.2.105",
3
+ "version": "1.2.107",
4
4
  "description": "Generic RTSP camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",