@camstack/addon-provider-onvif 1.2.104 → 1.2.106

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
@@ -13240,6 +13240,107 @@ var ExposeInputSchema = object({
13240
13240
  });
13241
13241
  var UnexposeInputSchema = object({ deviceId: string() });
13242
13242
  method(_void(), DeviceExportStatusSchema), method(_void(), array(DeviceKindSchema)), method(_void(), array(ExposedDeviceSchema)), method(ExposeInputSchema, _void(), { kind: "mutation" }), method(UnexposeInputSchema, _void(), { kind: "mutation" });
13243
+ /** Wire/storage schema for one icon id. */
13244
+ var LocationIconIdSchema = _enum([
13245
+ "map-pin",
13246
+ "house",
13247
+ "door-open",
13248
+ "sofa",
13249
+ "utensils",
13250
+ "bed-double",
13251
+ "bath",
13252
+ "briefcase",
13253
+ "car",
13254
+ "circle-parking",
13255
+ "route",
13256
+ "trees",
13257
+ "umbrella",
13258
+ "waves-ladder",
13259
+ "fence",
13260
+ "package",
13261
+ "warehouse",
13262
+ "store",
13263
+ "sun",
13264
+ "radar"
13265
+ ]);
13266
+ /**
13267
+ * One (location, icon) assignment as it travels.
13268
+ *
13269
+ * `locationKey` is ALWAYS {@link locationIconKey} of the label — never the
13270
+ * operator's casing. The registry matches labels trimmed + case-insensitively
13271
+ * everywhere (`addLocation`, `removeLocation`, `renameLocation`), and a
13272
+ * case-only rename (`cucina` → `Cucina`) is a real edit this repo supports; a
13273
+ * map keyed on the displayed casing would orphan its entry on exactly that
13274
+ * edit. Consumers join by keying their own label through `locationIconKey`.
13275
+ */
13276
+ var LocationIconAssignmentSchema = object({
13277
+ locationKey: string(),
13278
+ icon: LocationIconIdSchema
13279
+ });
13280
+ /**
13281
+ * One (location, description) assignment as it travels.
13282
+ *
13283
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
13284
+ * reason: this lived for a while in the post-analysis addon's own settings,
13285
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
13286
+ * the Locations page carried the icon and silently orphaned the description —
13287
+ * two authorities for one thing, joined by two different rules. Now both hang
13288
+ * off the location itself, on `locationIconKey`.
13289
+ */
13290
+ var LocationDescriptionAssignmentSchema = object({
13291
+ locationKey: string(),
13292
+ description: string()
13293
+ });
13294
+ /**
13295
+ * A SITE ZONE — a named part of the property that several locations belong to.
13296
+ *
13297
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
13298
+ * kitchen. A camera belongs to exactly one location, and a location to at most
13299
+ * one zone, so a camera's zone is derived and never stored on the device: the
13300
+ * whole point of this entity is that grouping rooms touches no device row.
13301
+ *
13302
+ * ## Why not `zone`
13303
+ *
13304
+ * Because `zone` is already the most loaded word in this product: 612 source
13305
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
13306
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
13307
+ * set of rooms — and a reader who confuses them will look for a camera's
13308
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
13309
+ * word by calling the drawn one what it actually is: a detection zone.
13310
+ *
13311
+ * ## The key
13312
+ *
13313
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
13314
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
13315
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
13316
+ * silently-dropped location description.
13317
+ *
13318
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
13319
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
13320
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
13321
+ */
13322
+ /**
13323
+ * One zone as it travels: its key, the label the operator typed, its icon and
13324
+ * the locations inside it.
13325
+ *
13326
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
13327
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
13328
+ * here, rather than left to a second call, because every consumer wants both
13329
+ * at once and a viewer that asked twice could render a zone whose membership
13330
+ * it has not fetched yet.
13331
+ *
13332
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
13333
+ * of those two is a choice, and a picker has to draw them differently.
13334
+ */
13335
+ var SiteZoneSchema = object({
13336
+ zoneKey: string(),
13337
+ label: string(),
13338
+ icon: LocationIconIdSchema.nullable(),
13339
+ /** Folded location keys, sorted. A location listed here need not be
13340
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
13341
+ * the ones that most want grouping. */
13342
+ locationKeys: array(string())
13343
+ });
13243
13344
  var ProviderStatusSchema = object({
13244
13345
  connected: boolean(),
13245
13346
  deviceCount: number(),
@@ -13832,6 +13933,39 @@ method(object({
13832
13933
  }), object({ moved: number() }), {
13833
13934
  kind: "mutation",
13834
13935
  auth: "admin"
13936
+ }), method(_void(), array(LocationIconAssignmentSchema)), method(object({
13937
+ location: string(),
13938
+ icon: LocationIconIdSchema.nullable()
13939
+ }), _void(), {
13940
+ kind: "mutation",
13941
+ auth: "admin"
13942
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
13943
+ location: string(),
13944
+ description: string().max(400).nullable()
13945
+ }), _void(), {
13946
+ kind: "mutation",
13947
+ auth: "admin"
13948
+ }), method(_void(), array(SiteZoneSchema)), method(object({
13949
+ name: string(),
13950
+ icon: LocationIconIdSchema.nullable().optional()
13951
+ }), _void(), {
13952
+ kind: "mutation",
13953
+ auth: "admin"
13954
+ }), method(object({ name: string() }), _void(), {
13955
+ kind: "mutation",
13956
+ auth: "admin"
13957
+ }), method(object({
13958
+ from: string(),
13959
+ to: string()
13960
+ }), _void(), {
13961
+ kind: "mutation",
13962
+ auth: "admin"
13963
+ }), method(object({
13964
+ location: string(),
13965
+ zone: string().nullable()
13966
+ }), _void(), {
13967
+ kind: "mutation",
13968
+ auth: "admin"
13835
13969
  }), method(object({
13836
13970
  deviceId: number(),
13837
13971
  disabled: boolean()
@@ -33627,6 +33761,18 @@ Object.freeze({
33627
33761
  addonId: null,
33628
33762
  access: "view"
33629
33763
  },
33764
+ "deviceManager.listLocationDescriptions": {
33765
+ capName: "device-manager",
33766
+ capScope: "system",
33767
+ addonId: null,
33768
+ access: "view"
33769
+ },
33770
+ "deviceManager.listLocationIcons": {
33771
+ capName: "device-manager",
33772
+ capScope: "system",
33773
+ addonId: null,
33774
+ access: "view"
33775
+ },
33630
33776
  "deviceManager.listLocations": {
33631
33777
  capName: "device-manager",
33632
33778
  capScope: "system",
@@ -33639,6 +33785,12 @@ Object.freeze({
33639
33785
  addonId: null,
33640
33786
  access: "view"
33641
33787
  },
33788
+ "deviceManager.listSiteZones": {
33789
+ capName: "device-manager",
33790
+ capScope: "system",
33791
+ addonId: null,
33792
+ access: "view"
33793
+ },
33642
33794
  "deviceManager.listWrappersForCap": {
33643
33795
  capName: "device-manager",
33644
33796
  capScope: "system",
@@ -33723,12 +33875,24 @@ Object.freeze({
33723
33875
  addonId: null,
33724
33876
  access: "delete"
33725
33877
  },
33878
+ "deviceManager.removeSiteZone": {
33879
+ capName: "device-manager",
33880
+ capScope: "system",
33881
+ addonId: null,
33882
+ access: "delete"
33883
+ },
33726
33884
  "deviceManager.renameLocation": {
33727
33885
  capName: "device-manager",
33728
33886
  capScope: "system",
33729
33887
  addonId: null,
33730
33888
  access: "create"
33731
33889
  },
33890
+ "deviceManager.renameSiteZone": {
33891
+ capName: "device-manager",
33892
+ capScope: "system",
33893
+ addonId: null,
33894
+ access: "create"
33895
+ },
33732
33896
  "deviceManager.runDeviceAction": {
33733
33897
  capName: "device-manager",
33734
33898
  capScope: "system",
@@ -33771,6 +33935,24 @@ Object.freeze({
33771
33935
  addonId: null,
33772
33936
  access: "create"
33773
33937
  },
33938
+ "deviceManager.setLocationDescription": {
33939
+ capName: "device-manager",
33940
+ capScope: "system",
33941
+ addonId: null,
33942
+ access: "create"
33943
+ },
33944
+ "deviceManager.setLocationIcon": {
33945
+ capName: "device-manager",
33946
+ capScope: "system",
33947
+ addonId: null,
33948
+ access: "create"
33949
+ },
33950
+ "deviceManager.setLocationZone": {
33951
+ capName: "device-manager",
33952
+ capScope: "system",
33953
+ addonId: null,
33954
+ access: "create"
33955
+ },
33774
33956
  "deviceManager.setMetadata": {
33775
33957
  capName: "device-manager",
33776
33958
  capScope: "system",
@@ -33801,6 +33983,12 @@ Object.freeze({
33801
33983
  addonId: null,
33802
33984
  access: "create"
33803
33985
  },
33986
+ "deviceManager.setSiteZone": {
33987
+ capName: "device-manager",
33988
+ capScope: "system",
33989
+ addonId: null,
33990
+ access: "create"
33991
+ },
33804
33992
  "deviceManager.setStreamProfileMap": {
33805
33993
  capName: "device-manager",
33806
33994
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -13241,6 +13241,107 @@ var ExposeInputSchema = object({
13241
13241
  });
13242
13242
  var UnexposeInputSchema = object({ deviceId: string() });
13243
13243
  method(_void(), DeviceExportStatusSchema), method(_void(), array(DeviceKindSchema)), method(_void(), array(ExposedDeviceSchema)), method(ExposeInputSchema, _void(), { kind: "mutation" }), method(UnexposeInputSchema, _void(), { kind: "mutation" });
13244
+ /** Wire/storage schema for one icon id. */
13245
+ var LocationIconIdSchema = _enum([
13246
+ "map-pin",
13247
+ "house",
13248
+ "door-open",
13249
+ "sofa",
13250
+ "utensils",
13251
+ "bed-double",
13252
+ "bath",
13253
+ "briefcase",
13254
+ "car",
13255
+ "circle-parking",
13256
+ "route",
13257
+ "trees",
13258
+ "umbrella",
13259
+ "waves-ladder",
13260
+ "fence",
13261
+ "package",
13262
+ "warehouse",
13263
+ "store",
13264
+ "sun",
13265
+ "radar"
13266
+ ]);
13267
+ /**
13268
+ * One (location, icon) assignment as it travels.
13269
+ *
13270
+ * `locationKey` is ALWAYS {@link locationIconKey} of the label — never the
13271
+ * operator's casing. The registry matches labels trimmed + case-insensitively
13272
+ * everywhere (`addLocation`, `removeLocation`, `renameLocation`), and a
13273
+ * case-only rename (`cucina` → `Cucina`) is a real edit this repo supports; a
13274
+ * map keyed on the displayed casing would orphan its entry on exactly that
13275
+ * edit. Consumers join by keying their own label through `locationIconKey`.
13276
+ */
13277
+ var LocationIconAssignmentSchema = object({
13278
+ locationKey: string(),
13279
+ icon: LocationIconIdSchema
13280
+ });
13281
+ /**
13282
+ * One (location, description) assignment as it travels.
13283
+ *
13284
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
13285
+ * reason: this lived for a while in the post-analysis addon's own settings,
13286
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
13287
+ * the Locations page carried the icon and silently orphaned the description —
13288
+ * two authorities for one thing, joined by two different rules. Now both hang
13289
+ * off the location itself, on `locationIconKey`.
13290
+ */
13291
+ var LocationDescriptionAssignmentSchema = object({
13292
+ locationKey: string(),
13293
+ description: string()
13294
+ });
13295
+ /**
13296
+ * A SITE ZONE — a named part of the property that several locations belong to.
13297
+ *
13298
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
13299
+ * kitchen. A camera belongs to exactly one location, and a location to at most
13300
+ * one zone, so a camera's zone is derived and never stored on the device: the
13301
+ * whole point of this entity is that grouping rooms touches no device row.
13302
+ *
13303
+ * ## Why not `zone`
13304
+ *
13305
+ * Because `zone` is already the most loaded word in this product: 612 source
13306
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
13307
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
13308
+ * set of rooms — and a reader who confuses them will look for a camera's
13309
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
13310
+ * word by calling the drawn one what it actually is: a detection zone.
13311
+ *
13312
+ * ## The key
13313
+ *
13314
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
13315
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
13316
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
13317
+ * silently-dropped location description.
13318
+ *
13319
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
13320
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
13321
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
13322
+ */
13323
+ /**
13324
+ * One zone as it travels: its key, the label the operator typed, its icon and
13325
+ * the locations inside it.
13326
+ *
13327
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
13328
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
13329
+ * here, rather than left to a second call, because every consumer wants both
13330
+ * at once and a viewer that asked twice could render a zone whose membership
13331
+ * it has not fetched yet.
13332
+ *
13333
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
13334
+ * of those two is a choice, and a picker has to draw them differently.
13335
+ */
13336
+ var SiteZoneSchema = object({
13337
+ zoneKey: string(),
13338
+ label: string(),
13339
+ icon: LocationIconIdSchema.nullable(),
13340
+ /** Folded location keys, sorted. A location listed here need not be
13341
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
13342
+ * the ones that most want grouping. */
13343
+ locationKeys: array(string())
13344
+ });
13244
13345
  var ProviderStatusSchema = object({
13245
13346
  connected: boolean(),
13246
13347
  deviceCount: number(),
@@ -13833,6 +13934,39 @@ method(object({
13833
13934
  }), object({ moved: number() }), {
13834
13935
  kind: "mutation",
13835
13936
  auth: "admin"
13937
+ }), method(_void(), array(LocationIconAssignmentSchema)), method(object({
13938
+ location: string(),
13939
+ icon: LocationIconIdSchema.nullable()
13940
+ }), _void(), {
13941
+ kind: "mutation",
13942
+ auth: "admin"
13943
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
13944
+ location: string(),
13945
+ description: string().max(400).nullable()
13946
+ }), _void(), {
13947
+ kind: "mutation",
13948
+ auth: "admin"
13949
+ }), method(_void(), array(SiteZoneSchema)), method(object({
13950
+ name: string(),
13951
+ icon: LocationIconIdSchema.nullable().optional()
13952
+ }), _void(), {
13953
+ kind: "mutation",
13954
+ auth: "admin"
13955
+ }), method(object({ name: string() }), _void(), {
13956
+ kind: "mutation",
13957
+ auth: "admin"
13958
+ }), method(object({
13959
+ from: string(),
13960
+ to: string()
13961
+ }), _void(), {
13962
+ kind: "mutation",
13963
+ auth: "admin"
13964
+ }), method(object({
13965
+ location: string(),
13966
+ zone: string().nullable()
13967
+ }), _void(), {
13968
+ kind: "mutation",
13969
+ auth: "admin"
13836
13970
  }), method(object({
13837
13971
  deviceId: number(),
13838
13972
  disabled: boolean()
@@ -33628,6 +33762,18 @@ Object.freeze({
33628
33762
  addonId: null,
33629
33763
  access: "view"
33630
33764
  },
33765
+ "deviceManager.listLocationDescriptions": {
33766
+ capName: "device-manager",
33767
+ capScope: "system",
33768
+ addonId: null,
33769
+ access: "view"
33770
+ },
33771
+ "deviceManager.listLocationIcons": {
33772
+ capName: "device-manager",
33773
+ capScope: "system",
33774
+ addonId: null,
33775
+ access: "view"
33776
+ },
33631
33777
  "deviceManager.listLocations": {
33632
33778
  capName: "device-manager",
33633
33779
  capScope: "system",
@@ -33640,6 +33786,12 @@ Object.freeze({
33640
33786
  addonId: null,
33641
33787
  access: "view"
33642
33788
  },
33789
+ "deviceManager.listSiteZones": {
33790
+ capName: "device-manager",
33791
+ capScope: "system",
33792
+ addonId: null,
33793
+ access: "view"
33794
+ },
33643
33795
  "deviceManager.listWrappersForCap": {
33644
33796
  capName: "device-manager",
33645
33797
  capScope: "system",
@@ -33724,12 +33876,24 @@ Object.freeze({
33724
33876
  addonId: null,
33725
33877
  access: "delete"
33726
33878
  },
33879
+ "deviceManager.removeSiteZone": {
33880
+ capName: "device-manager",
33881
+ capScope: "system",
33882
+ addonId: null,
33883
+ access: "delete"
33884
+ },
33727
33885
  "deviceManager.renameLocation": {
33728
33886
  capName: "device-manager",
33729
33887
  capScope: "system",
33730
33888
  addonId: null,
33731
33889
  access: "create"
33732
33890
  },
33891
+ "deviceManager.renameSiteZone": {
33892
+ capName: "device-manager",
33893
+ capScope: "system",
33894
+ addonId: null,
33895
+ access: "create"
33896
+ },
33733
33897
  "deviceManager.runDeviceAction": {
33734
33898
  capName: "device-manager",
33735
33899
  capScope: "system",
@@ -33772,6 +33936,24 @@ Object.freeze({
33772
33936
  addonId: null,
33773
33937
  access: "create"
33774
33938
  },
33939
+ "deviceManager.setLocationDescription": {
33940
+ capName: "device-manager",
33941
+ capScope: "system",
33942
+ addonId: null,
33943
+ access: "create"
33944
+ },
33945
+ "deviceManager.setLocationIcon": {
33946
+ capName: "device-manager",
33947
+ capScope: "system",
33948
+ addonId: null,
33949
+ access: "create"
33950
+ },
33951
+ "deviceManager.setLocationZone": {
33952
+ capName: "device-manager",
33953
+ capScope: "system",
33954
+ addonId: null,
33955
+ access: "create"
33956
+ },
33775
33957
  "deviceManager.setMetadata": {
33776
33958
  capName: "device-manager",
33777
33959
  capScope: "system",
@@ -33802,6 +33984,12 @@ Object.freeze({
33802
33984
  addonId: null,
33803
33985
  access: "create"
33804
33986
  },
33987
+ "deviceManager.setSiteZone": {
33988
+ capName: "device-manager",
33989
+ capScope: "system",
33990
+ addonId: null,
33991
+ access: "create"
33992
+ },
33805
33993
  "deviceManager.setStreamProfileMap": {
33806
33994
  capName: "device-manager",
33807
33995
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-onvif",
3
- "version": "1.2.104",
3
+ "version": "1.2.106",
4
4
  "description": "ONVIF camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",