@camstack/addon-provider-wyze 0.2.110 → 0.2.111

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
@@ -13565,6 +13565,70 @@ var LocationIconAssignmentSchema = object({
13565
13565
  locationKey: string(),
13566
13566
  icon: LocationIconIdSchema
13567
13567
  });
13568
+ /**
13569
+ * One (location, description) assignment as it travels.
13570
+ *
13571
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
13572
+ * reason: this lived for a while in the post-analysis addon's own settings,
13573
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
13574
+ * the Locations page carried the icon and silently orphaned the description —
13575
+ * two authorities for one thing, joined by two different rules. Now both hang
13576
+ * off the location itself, on `locationIconKey`.
13577
+ */
13578
+ var LocationDescriptionAssignmentSchema = object({
13579
+ locationKey: string(),
13580
+ description: string()
13581
+ });
13582
+ /**
13583
+ * A SITE ZONE — a named part of the property that several locations belong to.
13584
+ *
13585
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
13586
+ * kitchen. A camera belongs to exactly one location, and a location to at most
13587
+ * one zone, so a camera's zone is derived and never stored on the device: the
13588
+ * whole point of this entity is that grouping rooms touches no device row.
13589
+ *
13590
+ * ## Why not `zone`
13591
+ *
13592
+ * Because `zone` is already the most loaded word in this product: 612 source
13593
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
13594
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
13595
+ * set of rooms — and a reader who confuses them will look for a camera's
13596
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
13597
+ * word by calling the drawn one what it actually is: a detection zone.
13598
+ *
13599
+ * ## The key
13600
+ *
13601
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
13602
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
13603
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
13604
+ * silently-dropped location description.
13605
+ *
13606
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
13607
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
13608
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
13609
+ */
13610
+ /**
13611
+ * One zone as it travels: its key, the label the operator typed, its icon and
13612
+ * the locations inside it.
13613
+ *
13614
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
13615
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
13616
+ * here, rather than left to a second call, because every consumer wants both
13617
+ * at once and a viewer that asked twice could render a zone whose membership
13618
+ * it has not fetched yet.
13619
+ *
13620
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
13621
+ * of those two is a choice, and a picker has to draw them differently.
13622
+ */
13623
+ var SiteZoneSchema = object({
13624
+ zoneKey: string(),
13625
+ label: string(),
13626
+ icon: LocationIconIdSchema.nullable(),
13627
+ /** Folded location keys, sorted. A location listed here need not be
13628
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
13629
+ * the ones that most want grouping. */
13630
+ locationKeys: array(string())
13631
+ });
13568
13632
  var ProviderStatusSchema = object({
13569
13633
  connected: boolean(),
13570
13634
  deviceCount: number(),
@@ -14163,6 +14227,33 @@ method(object({
14163
14227
  }), _void(), {
14164
14228
  kind: "mutation",
14165
14229
  auth: "admin"
14230
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
14231
+ location: string(),
14232
+ description: string().max(400).nullable()
14233
+ }), _void(), {
14234
+ kind: "mutation",
14235
+ auth: "admin"
14236
+ }), method(_void(), array(SiteZoneSchema)), method(object({
14237
+ name: string(),
14238
+ icon: LocationIconIdSchema.nullable().optional()
14239
+ }), _void(), {
14240
+ kind: "mutation",
14241
+ auth: "admin"
14242
+ }), method(object({ name: string() }), _void(), {
14243
+ kind: "mutation",
14244
+ auth: "admin"
14245
+ }), method(object({
14246
+ from: string(),
14247
+ to: string()
14248
+ }), _void(), {
14249
+ kind: "mutation",
14250
+ auth: "admin"
14251
+ }), method(object({
14252
+ location: string(),
14253
+ zone: string().nullable()
14254
+ }), _void(), {
14255
+ kind: "mutation",
14256
+ auth: "admin"
14166
14257
  }), method(object({
14167
14258
  deviceId: number(),
14168
14259
  disabled: boolean()
@@ -37185,6 +37276,12 @@ Object.freeze({
37185
37276
  addonId: null,
37186
37277
  access: "view"
37187
37278
  },
37279
+ "deviceManager.listLocationDescriptions": {
37280
+ capName: "device-manager",
37281
+ capScope: "system",
37282
+ addonId: null,
37283
+ access: "view"
37284
+ },
37188
37285
  "deviceManager.listLocationIcons": {
37189
37286
  capName: "device-manager",
37190
37287
  capScope: "system",
@@ -37203,6 +37300,12 @@ Object.freeze({
37203
37300
  addonId: null,
37204
37301
  access: "view"
37205
37302
  },
37303
+ "deviceManager.listSiteZones": {
37304
+ capName: "device-manager",
37305
+ capScope: "system",
37306
+ addonId: null,
37307
+ access: "view"
37308
+ },
37206
37309
  "deviceManager.listWrappersForCap": {
37207
37310
  capName: "device-manager",
37208
37311
  capScope: "system",
@@ -37287,12 +37390,24 @@ Object.freeze({
37287
37390
  addonId: null,
37288
37391
  access: "delete"
37289
37392
  },
37393
+ "deviceManager.removeSiteZone": {
37394
+ capName: "device-manager",
37395
+ capScope: "system",
37396
+ addonId: null,
37397
+ access: "delete"
37398
+ },
37290
37399
  "deviceManager.renameLocation": {
37291
37400
  capName: "device-manager",
37292
37401
  capScope: "system",
37293
37402
  addonId: null,
37294
37403
  access: "create"
37295
37404
  },
37405
+ "deviceManager.renameSiteZone": {
37406
+ capName: "device-manager",
37407
+ capScope: "system",
37408
+ addonId: null,
37409
+ access: "create"
37410
+ },
37296
37411
  "deviceManager.runDeviceAction": {
37297
37412
  capName: "device-manager",
37298
37413
  capScope: "system",
@@ -37335,12 +37450,24 @@ Object.freeze({
37335
37450
  addonId: null,
37336
37451
  access: "create"
37337
37452
  },
37453
+ "deviceManager.setLocationDescription": {
37454
+ capName: "device-manager",
37455
+ capScope: "system",
37456
+ addonId: null,
37457
+ access: "create"
37458
+ },
37338
37459
  "deviceManager.setLocationIcon": {
37339
37460
  capName: "device-manager",
37340
37461
  capScope: "system",
37341
37462
  addonId: null,
37342
37463
  access: "create"
37343
37464
  },
37465
+ "deviceManager.setLocationZone": {
37466
+ capName: "device-manager",
37467
+ capScope: "system",
37468
+ addonId: null,
37469
+ access: "create"
37470
+ },
37344
37471
  "deviceManager.setMetadata": {
37345
37472
  capName: "device-manager",
37346
37473
  capScope: "system",
@@ -37371,6 +37498,12 @@ Object.freeze({
37371
37498
  addonId: null,
37372
37499
  access: "create"
37373
37500
  },
37501
+ "deviceManager.setSiteZone": {
37502
+ capName: "device-manager",
37503
+ capScope: "system",
37504
+ addonId: null,
37505
+ access: "create"
37506
+ },
37374
37507
  "deviceManager.setStreamProfileMap": {
37375
37508
  capName: "device-manager",
37376
37509
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -13544,6 +13544,70 @@ var LocationIconAssignmentSchema = object({
13544
13544
  locationKey: string(),
13545
13545
  icon: LocationIconIdSchema
13546
13546
  });
13547
+ /**
13548
+ * One (location, description) assignment as it travels.
13549
+ *
13550
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
13551
+ * reason: this lived for a while in the post-analysis addon's own settings,
13552
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
13553
+ * the Locations page carried the icon and silently orphaned the description —
13554
+ * two authorities for one thing, joined by two different rules. Now both hang
13555
+ * off the location itself, on `locationIconKey`.
13556
+ */
13557
+ var LocationDescriptionAssignmentSchema = object({
13558
+ locationKey: string(),
13559
+ description: string()
13560
+ });
13561
+ /**
13562
+ * A SITE ZONE — a named part of the property that several locations belong to.
13563
+ *
13564
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
13565
+ * kitchen. A camera belongs to exactly one location, and a location to at most
13566
+ * one zone, so a camera's zone is derived and never stored on the device: the
13567
+ * whole point of this entity is that grouping rooms touches no device row.
13568
+ *
13569
+ * ## Why not `zone`
13570
+ *
13571
+ * Because `zone` is already the most loaded word in this product: 612 source
13572
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
13573
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
13574
+ * set of rooms — and a reader who confuses them will look for a camera's
13575
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
13576
+ * word by calling the drawn one what it actually is: a detection zone.
13577
+ *
13578
+ * ## The key
13579
+ *
13580
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
13581
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
13582
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
13583
+ * silently-dropped location description.
13584
+ *
13585
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
13586
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
13587
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
13588
+ */
13589
+ /**
13590
+ * One zone as it travels: its key, the label the operator typed, its icon and
13591
+ * the locations inside it.
13592
+ *
13593
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
13594
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
13595
+ * here, rather than left to a second call, because every consumer wants both
13596
+ * at once and a viewer that asked twice could render a zone whose membership
13597
+ * it has not fetched yet.
13598
+ *
13599
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
13600
+ * of those two is a choice, and a picker has to draw them differently.
13601
+ */
13602
+ var SiteZoneSchema = object({
13603
+ zoneKey: string(),
13604
+ label: string(),
13605
+ icon: LocationIconIdSchema.nullable(),
13606
+ /** Folded location keys, sorted. A location listed here need not be
13607
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
13608
+ * the ones that most want grouping. */
13609
+ locationKeys: array(string())
13610
+ });
13547
13611
  var ProviderStatusSchema = object({
13548
13612
  connected: boolean(),
13549
13613
  deviceCount: number(),
@@ -14142,6 +14206,33 @@ method(object({
14142
14206
  }), _void(), {
14143
14207
  kind: "mutation",
14144
14208
  auth: "admin"
14209
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
14210
+ location: string(),
14211
+ description: string().max(400).nullable()
14212
+ }), _void(), {
14213
+ kind: "mutation",
14214
+ auth: "admin"
14215
+ }), method(_void(), array(SiteZoneSchema)), method(object({
14216
+ name: string(),
14217
+ icon: LocationIconIdSchema.nullable().optional()
14218
+ }), _void(), {
14219
+ kind: "mutation",
14220
+ auth: "admin"
14221
+ }), method(object({ name: string() }), _void(), {
14222
+ kind: "mutation",
14223
+ auth: "admin"
14224
+ }), method(object({
14225
+ from: string(),
14226
+ to: string()
14227
+ }), _void(), {
14228
+ kind: "mutation",
14229
+ auth: "admin"
14230
+ }), method(object({
14231
+ location: string(),
14232
+ zone: string().nullable()
14233
+ }), _void(), {
14234
+ kind: "mutation",
14235
+ auth: "admin"
14145
14236
  }), method(object({
14146
14237
  deviceId: number(),
14147
14238
  disabled: boolean()
@@ -37164,6 +37255,12 @@ Object.freeze({
37164
37255
  addonId: null,
37165
37256
  access: "view"
37166
37257
  },
37258
+ "deviceManager.listLocationDescriptions": {
37259
+ capName: "device-manager",
37260
+ capScope: "system",
37261
+ addonId: null,
37262
+ access: "view"
37263
+ },
37167
37264
  "deviceManager.listLocationIcons": {
37168
37265
  capName: "device-manager",
37169
37266
  capScope: "system",
@@ -37182,6 +37279,12 @@ Object.freeze({
37182
37279
  addonId: null,
37183
37280
  access: "view"
37184
37281
  },
37282
+ "deviceManager.listSiteZones": {
37283
+ capName: "device-manager",
37284
+ capScope: "system",
37285
+ addonId: null,
37286
+ access: "view"
37287
+ },
37185
37288
  "deviceManager.listWrappersForCap": {
37186
37289
  capName: "device-manager",
37187
37290
  capScope: "system",
@@ -37266,12 +37369,24 @@ Object.freeze({
37266
37369
  addonId: null,
37267
37370
  access: "delete"
37268
37371
  },
37372
+ "deviceManager.removeSiteZone": {
37373
+ capName: "device-manager",
37374
+ capScope: "system",
37375
+ addonId: null,
37376
+ access: "delete"
37377
+ },
37269
37378
  "deviceManager.renameLocation": {
37270
37379
  capName: "device-manager",
37271
37380
  capScope: "system",
37272
37381
  addonId: null,
37273
37382
  access: "create"
37274
37383
  },
37384
+ "deviceManager.renameSiteZone": {
37385
+ capName: "device-manager",
37386
+ capScope: "system",
37387
+ addonId: null,
37388
+ access: "create"
37389
+ },
37275
37390
  "deviceManager.runDeviceAction": {
37276
37391
  capName: "device-manager",
37277
37392
  capScope: "system",
@@ -37314,12 +37429,24 @@ Object.freeze({
37314
37429
  addonId: null,
37315
37430
  access: "create"
37316
37431
  },
37432
+ "deviceManager.setLocationDescription": {
37433
+ capName: "device-manager",
37434
+ capScope: "system",
37435
+ addonId: null,
37436
+ access: "create"
37437
+ },
37317
37438
  "deviceManager.setLocationIcon": {
37318
37439
  capName: "device-manager",
37319
37440
  capScope: "system",
37320
37441
  addonId: null,
37321
37442
  access: "create"
37322
37443
  },
37444
+ "deviceManager.setLocationZone": {
37445
+ capName: "device-manager",
37446
+ capScope: "system",
37447
+ addonId: null,
37448
+ access: "create"
37449
+ },
37323
37450
  "deviceManager.setMetadata": {
37324
37451
  capName: "device-manager",
37325
37452
  capScope: "system",
@@ -37350,6 +37477,12 @@ Object.freeze({
37350
37477
  addonId: null,
37351
37478
  access: "create"
37352
37479
  },
37480
+ "deviceManager.setSiteZone": {
37481
+ capName: "device-manager",
37482
+ capScope: "system",
37483
+ addonId: null,
37484
+ access: "create"
37485
+ },
37353
37486
  "deviceManager.setStreamProfileMap": {
37354
37487
  capName: "device-manager",
37355
37488
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-wyze",
3
- "version": "0.2.110",
3
+ "version": "0.2.111",
4
4
  "description": "Wyze camera device-provider addon for CamStack — wraps the @apocaliss92/wyze-bridge-js P2P/DTLS client, feeding the stream-broker via the pull-rfc4571 lazy-publish path (a structural twin of addon-provider-reolink)",
5
5
  "keywords": [
6
6
  "camstack",