@camstack/addon-provider-reolink 1.2.133 → 1.2.135

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
@@ -14083,6 +14083,107 @@ var ExposeInputSchema = object({
14083
14083
  });
14084
14084
  var UnexposeInputSchema = object({ deviceId: string() });
14085
14085
  method(_void(), DeviceExportStatusSchema), method(_void(), array(DeviceKindSchema)), method(_void(), array(ExposedDeviceSchema)), method(ExposeInputSchema, _void(), { kind: "mutation" }), method(UnexposeInputSchema, _void(), { kind: "mutation" });
14086
+ /** Wire/storage schema for one icon id. */
14087
+ var LocationIconIdSchema = _enum([
14088
+ "map-pin",
14089
+ "house",
14090
+ "door-open",
14091
+ "sofa",
14092
+ "utensils",
14093
+ "bed-double",
14094
+ "bath",
14095
+ "briefcase",
14096
+ "car",
14097
+ "circle-parking",
14098
+ "route",
14099
+ "trees",
14100
+ "umbrella",
14101
+ "waves-ladder",
14102
+ "fence",
14103
+ "package",
14104
+ "warehouse",
14105
+ "store",
14106
+ "sun",
14107
+ "radar"
14108
+ ]);
14109
+ /**
14110
+ * One (location, icon) assignment as it travels.
14111
+ *
14112
+ * `locationKey` is ALWAYS {@link locationIconKey} of the label — never the
14113
+ * operator's casing. The registry matches labels trimmed + case-insensitively
14114
+ * everywhere (`addLocation`, `removeLocation`, `renameLocation`), and a
14115
+ * case-only rename (`cucina` → `Cucina`) is a real edit this repo supports; a
14116
+ * map keyed on the displayed casing would orphan its entry on exactly that
14117
+ * edit. Consumers join by keying their own label through `locationIconKey`.
14118
+ */
14119
+ var LocationIconAssignmentSchema = object({
14120
+ locationKey: string(),
14121
+ icon: LocationIconIdSchema
14122
+ });
14123
+ /**
14124
+ * One (location, description) assignment as it travels.
14125
+ *
14126
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
14127
+ * reason: this lived for a while in the post-analysis addon's own settings,
14128
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
14129
+ * the Locations page carried the icon and silently orphaned the description —
14130
+ * two authorities for one thing, joined by two different rules. Now both hang
14131
+ * off the location itself, on `locationIconKey`.
14132
+ */
14133
+ var LocationDescriptionAssignmentSchema = object({
14134
+ locationKey: string(),
14135
+ description: string()
14136
+ });
14137
+ /**
14138
+ * A SITE ZONE — a named part of the property that several locations belong to.
14139
+ *
14140
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
14141
+ * kitchen. A camera belongs to exactly one location, and a location to at most
14142
+ * one zone, so a camera's zone is derived and never stored on the device: the
14143
+ * whole point of this entity is that grouping rooms touches no device row.
14144
+ *
14145
+ * ## Why not `zone`
14146
+ *
14147
+ * Because `zone` is already the most loaded word in this product: 612 source
14148
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
14149
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
14150
+ * set of rooms — and a reader who confuses them will look for a camera's
14151
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
14152
+ * word by calling the drawn one what it actually is: a detection zone.
14153
+ *
14154
+ * ## The key
14155
+ *
14156
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
14157
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
14158
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
14159
+ * silently-dropped location description.
14160
+ *
14161
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
14162
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
14163
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
14164
+ */
14165
+ /**
14166
+ * One zone as it travels: its key, the label the operator typed, its icon and
14167
+ * the locations inside it.
14168
+ *
14169
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
14170
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
14171
+ * here, rather than left to a second call, because every consumer wants both
14172
+ * at once and a viewer that asked twice could render a zone whose membership
14173
+ * it has not fetched yet.
14174
+ *
14175
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
14176
+ * of those two is a choice, and a picker has to draw them differently.
14177
+ */
14178
+ var SiteZoneSchema = object({
14179
+ zoneKey: string(),
14180
+ label: string(),
14181
+ icon: LocationIconIdSchema.nullable(),
14182
+ /** Folded location keys, sorted. A location listed here need not be
14183
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
14184
+ * the ones that most want grouping. */
14185
+ locationKeys: array(string())
14186
+ });
14086
14187
  var ProviderStatusSchema = object({
14087
14188
  connected: boolean(),
14088
14189
  deviceCount: number(),
@@ -14675,6 +14776,39 @@ method(object({
14675
14776
  }), object({ moved: number() }), {
14676
14777
  kind: "mutation",
14677
14778
  auth: "admin"
14779
+ }), method(_void(), array(LocationIconAssignmentSchema)), method(object({
14780
+ location: string(),
14781
+ icon: LocationIconIdSchema.nullable()
14782
+ }), _void(), {
14783
+ kind: "mutation",
14784
+ auth: "admin"
14785
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
14786
+ location: string(),
14787
+ description: string().max(400).nullable()
14788
+ }), _void(), {
14789
+ kind: "mutation",
14790
+ auth: "admin"
14791
+ }), method(_void(), array(SiteZoneSchema)), method(object({
14792
+ name: string(),
14793
+ icon: LocationIconIdSchema.nullable().optional()
14794
+ }), _void(), {
14795
+ kind: "mutation",
14796
+ auth: "admin"
14797
+ }), method(object({ name: string() }), _void(), {
14798
+ kind: "mutation",
14799
+ auth: "admin"
14800
+ }), method(object({
14801
+ from: string(),
14802
+ to: string()
14803
+ }), _void(), {
14804
+ kind: "mutation",
14805
+ auth: "admin"
14806
+ }), method(object({
14807
+ location: string(),
14808
+ zone: string().nullable()
14809
+ }), _void(), {
14810
+ kind: "mutation",
14811
+ auth: "admin"
14678
14812
  }), method(object({
14679
14813
  deviceId: number(),
14680
14814
  disabled: boolean()
@@ -38212,6 +38346,18 @@ Object.freeze({
38212
38346
  addonId: null,
38213
38347
  access: "view"
38214
38348
  },
38349
+ "deviceManager.listLocationDescriptions": {
38350
+ capName: "device-manager",
38351
+ capScope: "system",
38352
+ addonId: null,
38353
+ access: "view"
38354
+ },
38355
+ "deviceManager.listLocationIcons": {
38356
+ capName: "device-manager",
38357
+ capScope: "system",
38358
+ addonId: null,
38359
+ access: "view"
38360
+ },
38215
38361
  "deviceManager.listLocations": {
38216
38362
  capName: "device-manager",
38217
38363
  capScope: "system",
@@ -38224,6 +38370,12 @@ Object.freeze({
38224
38370
  addonId: null,
38225
38371
  access: "view"
38226
38372
  },
38373
+ "deviceManager.listSiteZones": {
38374
+ capName: "device-manager",
38375
+ capScope: "system",
38376
+ addonId: null,
38377
+ access: "view"
38378
+ },
38227
38379
  "deviceManager.listWrappersForCap": {
38228
38380
  capName: "device-manager",
38229
38381
  capScope: "system",
@@ -38308,12 +38460,24 @@ Object.freeze({
38308
38460
  addonId: null,
38309
38461
  access: "delete"
38310
38462
  },
38463
+ "deviceManager.removeSiteZone": {
38464
+ capName: "device-manager",
38465
+ capScope: "system",
38466
+ addonId: null,
38467
+ access: "delete"
38468
+ },
38311
38469
  "deviceManager.renameLocation": {
38312
38470
  capName: "device-manager",
38313
38471
  capScope: "system",
38314
38472
  addonId: null,
38315
38473
  access: "create"
38316
38474
  },
38475
+ "deviceManager.renameSiteZone": {
38476
+ capName: "device-manager",
38477
+ capScope: "system",
38478
+ addonId: null,
38479
+ access: "create"
38480
+ },
38317
38481
  "deviceManager.runDeviceAction": {
38318
38482
  capName: "device-manager",
38319
38483
  capScope: "system",
@@ -38356,6 +38520,24 @@ Object.freeze({
38356
38520
  addonId: null,
38357
38521
  access: "create"
38358
38522
  },
38523
+ "deviceManager.setLocationDescription": {
38524
+ capName: "device-manager",
38525
+ capScope: "system",
38526
+ addonId: null,
38527
+ access: "create"
38528
+ },
38529
+ "deviceManager.setLocationIcon": {
38530
+ capName: "device-manager",
38531
+ capScope: "system",
38532
+ addonId: null,
38533
+ access: "create"
38534
+ },
38535
+ "deviceManager.setLocationZone": {
38536
+ capName: "device-manager",
38537
+ capScope: "system",
38538
+ addonId: null,
38539
+ access: "create"
38540
+ },
38359
38541
  "deviceManager.setMetadata": {
38360
38542
  capName: "device-manager",
38361
38543
  capScope: "system",
@@ -38386,6 +38568,12 @@ Object.freeze({
38386
38568
  addonId: null,
38387
38569
  access: "create"
38388
38570
  },
38571
+ "deviceManager.setSiteZone": {
38572
+ capName: "device-manager",
38573
+ capScope: "system",
38574
+ addonId: null,
38575
+ access: "create"
38576
+ },
38389
38577
  "deviceManager.setStreamProfileMap": {
38390
38578
  capName: "device-manager",
38391
38579
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -14078,6 +14078,107 @@ var ExposeInputSchema = object({
14078
14078
  });
14079
14079
  var UnexposeInputSchema = object({ deviceId: string() });
14080
14080
  method(_void(), DeviceExportStatusSchema), method(_void(), array(DeviceKindSchema)), method(_void(), array(ExposedDeviceSchema)), method(ExposeInputSchema, _void(), { kind: "mutation" }), method(UnexposeInputSchema, _void(), { kind: "mutation" });
14081
+ /** Wire/storage schema for one icon id. */
14082
+ var LocationIconIdSchema = _enum([
14083
+ "map-pin",
14084
+ "house",
14085
+ "door-open",
14086
+ "sofa",
14087
+ "utensils",
14088
+ "bed-double",
14089
+ "bath",
14090
+ "briefcase",
14091
+ "car",
14092
+ "circle-parking",
14093
+ "route",
14094
+ "trees",
14095
+ "umbrella",
14096
+ "waves-ladder",
14097
+ "fence",
14098
+ "package",
14099
+ "warehouse",
14100
+ "store",
14101
+ "sun",
14102
+ "radar"
14103
+ ]);
14104
+ /**
14105
+ * One (location, icon) assignment as it travels.
14106
+ *
14107
+ * `locationKey` is ALWAYS {@link locationIconKey} of the label — never the
14108
+ * operator's casing. The registry matches labels trimmed + case-insensitively
14109
+ * everywhere (`addLocation`, `removeLocation`, `renameLocation`), and a
14110
+ * case-only rename (`cucina` → `Cucina`) is a real edit this repo supports; a
14111
+ * map keyed on the displayed casing would orphan its entry on exactly that
14112
+ * edit. Consumers join by keying their own label through `locationIconKey`.
14113
+ */
14114
+ var LocationIconAssignmentSchema = object({
14115
+ locationKey: string(),
14116
+ icon: LocationIconIdSchema
14117
+ });
14118
+ /**
14119
+ * One (location, description) assignment as it travels.
14120
+ *
14121
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
14122
+ * reason: this lived for a while in the post-analysis addon's own settings,
14123
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
14124
+ * the Locations page carried the icon and silently orphaned the description —
14125
+ * two authorities for one thing, joined by two different rules. Now both hang
14126
+ * off the location itself, on `locationIconKey`.
14127
+ */
14128
+ var LocationDescriptionAssignmentSchema = object({
14129
+ locationKey: string(),
14130
+ description: string()
14131
+ });
14132
+ /**
14133
+ * A SITE ZONE — a named part of the property that several locations belong to.
14134
+ *
14135
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
14136
+ * kitchen. A camera belongs to exactly one location, and a location to at most
14137
+ * one zone, so a camera's zone is derived and never stored on the device: the
14138
+ * whole point of this entity is that grouping rooms touches no device row.
14139
+ *
14140
+ * ## Why not `zone`
14141
+ *
14142
+ * Because `zone` is already the most loaded word in this product: 612 source
14143
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
14144
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
14145
+ * set of rooms — and a reader who confuses them will look for a camera's
14146
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
14147
+ * word by calling the drawn one what it actually is: a detection zone.
14148
+ *
14149
+ * ## The key
14150
+ *
14151
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
14152
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
14153
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
14154
+ * silently-dropped location description.
14155
+ *
14156
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
14157
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
14158
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
14159
+ */
14160
+ /**
14161
+ * One zone as it travels: its key, the label the operator typed, its icon and
14162
+ * the locations inside it.
14163
+ *
14164
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
14165
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
14166
+ * here, rather than left to a second call, because every consumer wants both
14167
+ * at once and a viewer that asked twice could render a zone whose membership
14168
+ * it has not fetched yet.
14169
+ *
14170
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
14171
+ * of those two is a choice, and a picker has to draw them differently.
14172
+ */
14173
+ var SiteZoneSchema = object({
14174
+ zoneKey: string(),
14175
+ label: string(),
14176
+ icon: LocationIconIdSchema.nullable(),
14177
+ /** Folded location keys, sorted. A location listed here need not be
14178
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
14179
+ * the ones that most want grouping. */
14180
+ locationKeys: array(string())
14181
+ });
14081
14182
  var ProviderStatusSchema = object({
14082
14183
  connected: boolean(),
14083
14184
  deviceCount: number(),
@@ -14670,6 +14771,39 @@ method(object({
14670
14771
  }), object({ moved: number() }), {
14671
14772
  kind: "mutation",
14672
14773
  auth: "admin"
14774
+ }), method(_void(), array(LocationIconAssignmentSchema)), method(object({
14775
+ location: string(),
14776
+ icon: LocationIconIdSchema.nullable()
14777
+ }), _void(), {
14778
+ kind: "mutation",
14779
+ auth: "admin"
14780
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
14781
+ location: string(),
14782
+ description: string().max(400).nullable()
14783
+ }), _void(), {
14784
+ kind: "mutation",
14785
+ auth: "admin"
14786
+ }), method(_void(), array(SiteZoneSchema)), method(object({
14787
+ name: string(),
14788
+ icon: LocationIconIdSchema.nullable().optional()
14789
+ }), _void(), {
14790
+ kind: "mutation",
14791
+ auth: "admin"
14792
+ }), method(object({ name: string() }), _void(), {
14793
+ kind: "mutation",
14794
+ auth: "admin"
14795
+ }), method(object({
14796
+ from: string(),
14797
+ to: string()
14798
+ }), _void(), {
14799
+ kind: "mutation",
14800
+ auth: "admin"
14801
+ }), method(object({
14802
+ location: string(),
14803
+ zone: string().nullable()
14804
+ }), _void(), {
14805
+ kind: "mutation",
14806
+ auth: "admin"
14673
14807
  }), method(object({
14674
14808
  deviceId: number(),
14675
14809
  disabled: boolean()
@@ -38207,6 +38341,18 @@ Object.freeze({
38207
38341
  addonId: null,
38208
38342
  access: "view"
38209
38343
  },
38344
+ "deviceManager.listLocationDescriptions": {
38345
+ capName: "device-manager",
38346
+ capScope: "system",
38347
+ addonId: null,
38348
+ access: "view"
38349
+ },
38350
+ "deviceManager.listLocationIcons": {
38351
+ capName: "device-manager",
38352
+ capScope: "system",
38353
+ addonId: null,
38354
+ access: "view"
38355
+ },
38210
38356
  "deviceManager.listLocations": {
38211
38357
  capName: "device-manager",
38212
38358
  capScope: "system",
@@ -38219,6 +38365,12 @@ Object.freeze({
38219
38365
  addonId: null,
38220
38366
  access: "view"
38221
38367
  },
38368
+ "deviceManager.listSiteZones": {
38369
+ capName: "device-manager",
38370
+ capScope: "system",
38371
+ addonId: null,
38372
+ access: "view"
38373
+ },
38222
38374
  "deviceManager.listWrappersForCap": {
38223
38375
  capName: "device-manager",
38224
38376
  capScope: "system",
@@ -38303,12 +38455,24 @@ Object.freeze({
38303
38455
  addonId: null,
38304
38456
  access: "delete"
38305
38457
  },
38458
+ "deviceManager.removeSiteZone": {
38459
+ capName: "device-manager",
38460
+ capScope: "system",
38461
+ addonId: null,
38462
+ access: "delete"
38463
+ },
38306
38464
  "deviceManager.renameLocation": {
38307
38465
  capName: "device-manager",
38308
38466
  capScope: "system",
38309
38467
  addonId: null,
38310
38468
  access: "create"
38311
38469
  },
38470
+ "deviceManager.renameSiteZone": {
38471
+ capName: "device-manager",
38472
+ capScope: "system",
38473
+ addonId: null,
38474
+ access: "create"
38475
+ },
38312
38476
  "deviceManager.runDeviceAction": {
38313
38477
  capName: "device-manager",
38314
38478
  capScope: "system",
@@ -38351,6 +38515,24 @@ Object.freeze({
38351
38515
  addonId: null,
38352
38516
  access: "create"
38353
38517
  },
38518
+ "deviceManager.setLocationDescription": {
38519
+ capName: "device-manager",
38520
+ capScope: "system",
38521
+ addonId: null,
38522
+ access: "create"
38523
+ },
38524
+ "deviceManager.setLocationIcon": {
38525
+ capName: "device-manager",
38526
+ capScope: "system",
38527
+ addonId: null,
38528
+ access: "create"
38529
+ },
38530
+ "deviceManager.setLocationZone": {
38531
+ capName: "device-manager",
38532
+ capScope: "system",
38533
+ addonId: null,
38534
+ access: "create"
38535
+ },
38354
38536
  "deviceManager.setMetadata": {
38355
38537
  capName: "device-manager",
38356
38538
  capScope: "system",
@@ -38381,6 +38563,12 @@ Object.freeze({
38381
38563
  addonId: null,
38382
38564
  access: "create"
38383
38565
  },
38566
+ "deviceManager.setSiteZone": {
38567
+ capName: "device-manager",
38568
+ capScope: "system",
38569
+ addonId: null,
38570
+ access: "create"
38571
+ },
38384
38572
  "deviceManager.setStreamProfileMap": {
38385
38573
  capName: "device-manager",
38386
38574
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-reolink",
3
- "version": "1.2.133",
3
+ "version": "1.2.135",
4
4
  "description": "Reolink camera device provider addon for CamStack — native Baichuan protocol",
5
5
  "keywords": [
6
6
  "camstack",