@camstack/addon-provider-reolink 1.2.171 → 1.2.172

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
@@ -11566,7 +11566,16 @@ var AutomationActionSchema = discriminatedUnion("kind", [
11566
11566
  }),
11567
11567
  object({
11568
11568
  kind: literal("cap"),
11569
- deviceId: union([number().int(), object({ $var: string().min(1) })]),
11569
+ /**
11570
+ * One device, several same-family devices (locks / climate family / …),
11571
+ * or `{ $var }` for the device that triggered the run. An array is
11572
+ * fan-out at codegen — each id gets the same cap.method call.
11573
+ */
11574
+ deviceId: union([
11575
+ number().int(),
11576
+ array(number().int()).min(1),
11577
+ object({ $var: string().min(1) })
11578
+ ]),
11570
11579
  cap: string().min(1),
11571
11580
  method: string().min(1),
11572
11581
  /** Values may carry `{{vars.x}}` slots, which SUBSTITUTE and do not
@@ -14821,7 +14830,7 @@ DeviceType.Camera;
14821
14830
  * This matters here more than anywhere else in the repo, because every provider
14822
14831
  * that knows a device's host knows its PASSWORD too: `{ host, port, username,
14823
14832
  * password }` sit in one object on Hikvision, Amcrest, Reolink and ONVIF alike,
14824
- * and `http://admin:hunter2@192.168.50.139/` is a URL a browser accepts. The
14833
+ * and `http://admin:hunter2@192.168.x.x/` is a URL a browser accepts. The
14825
14834
  * camera's own page will ask for its own login. That is correct, and pre-
14826
14835
  * filling it is the operator's business, not ours.
14827
14836
  *
@@ -21118,17 +21127,41 @@ var NC_ALARM_TRIGGERED_MAX_SEC = 3600;
21118
21127
  var NcAlarmDelaySecSchema = number().int().min(0).max(600);
21119
21128
  var NcAlarmTriggeredSecSchema = number().int().min(0).max(NC_ALARM_TRIGGERED_MAX_SEC);
21120
21129
  var uniqueModes = (entries) => new Set(entries.map((e) => e.mode)).size === entries.length;
21130
+ /**
21131
+ * What the panel does when a bounded triggered window ends.
21132
+ * - `rearmAfter` — return to the armed mode
21133
+ * - `disableAfter` — auto-disarm
21134
+ * - `doNothing` — stay triggered until a human disarms
21135
+ */
21136
+ var NcAlarmPostTriggeredActionSchema = _enum([
21137
+ "rearmAfter",
21138
+ "disableAfter",
21139
+ "doNothing"
21140
+ ]);
21121
21141
  var NcAlarmModeDelaysListSchema = array(object({
21122
21142
  mode: AlarmArmModeSchema,
21123
21143
  exitDelaySec: NcAlarmDelaySecSchema.optional(),
21124
21144
  entryDelaySec: NcAlarmDelaySecSchema.optional(),
21125
- triggeredDurationSec: NcAlarmTriggeredSecSchema.optional()
21145
+ /**
21146
+ * Duration of `triggered` before {@link postTriggeredAction}. Kept as the
21147
+ * historical field name so older clients still read/write a number.
21148
+ */
21149
+ triggeredDurationSec: NcAlarmTriggeredSecSchema.optional(),
21150
+ postTriggeredAction: NcAlarmPostTriggeredActionSchema.optional(),
21151
+ /**
21152
+ * When this mode may be armed. Absent / null = always allowed (same as a
21153
+ * rule with no `schedule`). Evaluated with {@link isScheduleActive}.
21154
+ */
21155
+ schedule: NcScheduleSchema.optional()
21126
21156
  })).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
21127
21157
  var NcAlarmModeDelaysEditListSchema = array(object({
21128
21158
  mode: AlarmArmModeSchema,
21129
21159
  exitDelaySec: NcAlarmDelaySecSchema.nullable().optional(),
21130
21160
  entryDelaySec: NcAlarmDelaySecSchema.nullable().optional(),
21131
- triggeredDurationSec: NcAlarmTriggeredSecSchema.nullable().optional()
21161
+ triggeredDurationSec: NcAlarmTriggeredSecSchema.nullable().optional(),
21162
+ postTriggeredAction: NcAlarmPostTriggeredActionSchema.nullable().optional(),
21163
+ /** Set a schedule, or `null` to clear (mode always allowed again). */
21164
+ schedule: NcScheduleSchema.nullable().optional()
21132
21165
  })).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
21133
21166
  /** One switch of the alarm table: put ONE device on, or take it off, ONE mode's list. */
21134
21167
  var NcAlarmNonBlockingEditSchema = object({
@@ -21200,12 +21233,18 @@ var NcAlarmSettingsSchema = object({
21200
21233
  /** Grace period between a trigger and the alarm firing. 0 = immediate. */
21201
21234
  entryDelaySec: NcAlarmDelaySecSchema,
21202
21235
  /**
21203
- * How long `triggered` lasts before the panel re-arms itself.
21204
- * **0 = until an operator disarms it** — the behaviour before this field
21205
- * existed, and therefore what an untouched install keeps doing.
21236
+ * How long `triggered` lasts before {@link postTriggeredAction} runs.
21237
+ * Ignored when the action is `doNothing`. Historical name kept so older
21238
+ * clients still round-trip a number.
21206
21239
  */
21207
21240
  triggeredDurationSec: NcAlarmTriggeredSecSchema,
21208
21241
  /**
21242
+ * What happens when the triggered window ends. Absent on a blob older than
21243
+ * this field → derived from {@link triggeredDurationSec} (`>0` ⇒ rearmAfter,
21244
+ * else doNothing).
21245
+ */
21246
+ postTriggeredAction: NcAlarmPostTriggeredActionSchema.optional(),
21247
+ /**
21209
21248
  * Deprecated by D630 — every transition is announced. Parsed, never read;
21210
21249
  * remove after one release. Optional so an older admin's patch (which still
21211
21250
  * sends it) parses rather than failing the whole save.
@@ -33164,7 +33203,7 @@ var LocalInterfaceSchema = object({
33164
33203
  name: string(),
33165
33204
  family: _enum(["IPv4", "IPv6"]),
33166
33205
  address: string(),
33167
- /** CIDR shorthand (e.g. `192.168.1.10/24`). Empty when OS doesn't expose. */
33206
+ /** CIDR shorthand (e.g. `192.168.x.x/24`). Empty when OS doesn't expose. */
33168
33207
  cidr: string(),
33169
33208
  /** OS netmask. Stable across calls so the SDK can hash on it. */
33170
33209
  netmask: string(),
@@ -33678,7 +33717,7 @@ var MeshPeerSchema = object({
33678
33717
  tags: array(string()).readonly(),
33679
33718
  /** True when the peer advertises itself as an exit-node candidate. */
33680
33719
  exitNodeOption: boolean(),
33681
- /** Subnet routes the peer advertises (e.g. `["192.168.1.0/24"]`). */
33720
+ /** Subnet routes the peer advertises (e.g. `["192.168.x.x/24"]`). */
33682
33721
  advertisedRoutes: array(string()).readonly(),
33683
33722
  /** Owner account login (e.g. `foo@example.com`). Null for tagged peers. */
33684
33723
  userLogin: string().nullable(),
@@ -49845,6 +49884,7 @@ Object.freeze({
49845
49884
  access: "create"
49846
49885
  }
49847
49886
  });
49887
+ DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
49848
49888
  DeviceFeature.BatteryOperated;
49849
49889
  /**
49850
49890
  * The vocabulary, in the order a picker offers it.
@@ -172265,7 +172305,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
172265
172305
  key: "host",
172266
172306
  label: "Camera IP",
172267
172307
  required: true,
172268
- placeholder: "192.168.1.100"
172308
+ placeholder: "192.168.x.x"
172269
172309
  },
172270
172310
  {
172271
172311
  type: "number",
@@ -174471,7 +174511,7 @@ var ReolinkHub = class ReolinkHub extends BaseDevice {
174471
174511
  key: "host",
174472
174512
  label: "Hub IP",
174473
174513
  required: true,
174474
- placeholder: "192.168.1.100"
174514
+ placeholder: "192.168.x.x"
174475
174515
  },
174476
174516
  {
174477
174517
  type: "number",
@@ -175305,7 +175345,7 @@ function buildDiscoveryParamsFormSchema() {
175305
175345
  }, {
175306
175346
  id: "scan",
175307
175347
  title: "Scan options",
175308
- description: "Leave the network blank to scan the local subnet. To find cameras on a different subnet, enter its CIDR (e.g. 192.168.20.0/24).",
175348
+ description: "Leave the network blank to scan the local subnet. To find cameras on a different subnet, enter its CIDR (e.g. 192.168.x.x/24).",
175309
175349
  columns: 1,
175310
175350
  fields: [
175311
175351
  {
@@ -175313,7 +175353,7 @@ function buildDiscoveryParamsFormSchema() {
175313
175353
  key: "networkCidr",
175314
175354
  label: "Network (CIDR)",
175315
175355
  required: false,
175316
- placeholder: "192.168.20.0/24"
175356
+ placeholder: "192.168.x.x/24"
175317
175357
  },
175318
175358
  {
175319
175359
  type: "boolean",
@@ -175397,7 +175437,7 @@ function buildCreationFormSchema() {
175397
175437
  key: "host",
175398
175438
  label: "Host (IP / hostname / UID)",
175399
175439
  required: true,
175400
- placeholder: "192.168.1.100",
175440
+ placeholder: "192.168.x.x",
175401
175441
  description: "For UDP-only mode you can leave the host blank and supply the camera UID below — the library will discover it on the network.",
175402
175442
  inputType: "text"
175403
175443
  },
package/dist/addon.mjs CHANGED
@@ -11558,7 +11558,16 @@ var AutomationActionSchema = discriminatedUnion("kind", [
11558
11558
  }),
11559
11559
  object({
11560
11560
  kind: literal("cap"),
11561
- deviceId: union([number().int(), object({ $var: string().min(1) })]),
11561
+ /**
11562
+ * One device, several same-family devices (locks / climate family / …),
11563
+ * or `{ $var }` for the device that triggered the run. An array is
11564
+ * fan-out at codegen — each id gets the same cap.method call.
11565
+ */
11566
+ deviceId: union([
11567
+ number().int(),
11568
+ array(number().int()).min(1),
11569
+ object({ $var: string().min(1) })
11570
+ ]),
11562
11571
  cap: string().min(1),
11563
11572
  method: string().min(1),
11564
11573
  /** Values may carry `{{vars.x}}` slots, which SUBSTITUTE and do not
@@ -14813,7 +14822,7 @@ DeviceType.Camera;
14813
14822
  * This matters here more than anywhere else in the repo, because every provider
14814
14823
  * that knows a device's host knows its PASSWORD too: `{ host, port, username,
14815
14824
  * password }` sit in one object on Hikvision, Amcrest, Reolink and ONVIF alike,
14816
- * and `http://admin:hunter2@192.168.50.139/` is a URL a browser accepts. The
14825
+ * and `http://admin:hunter2@192.168.x.x/` is a URL a browser accepts. The
14817
14826
  * camera's own page will ask for its own login. That is correct, and pre-
14818
14827
  * filling it is the operator's business, not ours.
14819
14828
  *
@@ -21110,17 +21119,41 @@ var NC_ALARM_TRIGGERED_MAX_SEC = 3600;
21110
21119
  var NcAlarmDelaySecSchema = number().int().min(0).max(600);
21111
21120
  var NcAlarmTriggeredSecSchema = number().int().min(0).max(NC_ALARM_TRIGGERED_MAX_SEC);
21112
21121
  var uniqueModes = (entries) => new Set(entries.map((e) => e.mode)).size === entries.length;
21122
+ /**
21123
+ * What the panel does when a bounded triggered window ends.
21124
+ * - `rearmAfter` — return to the armed mode
21125
+ * - `disableAfter` — auto-disarm
21126
+ * - `doNothing` — stay triggered until a human disarms
21127
+ */
21128
+ var NcAlarmPostTriggeredActionSchema = _enum([
21129
+ "rearmAfter",
21130
+ "disableAfter",
21131
+ "doNothing"
21132
+ ]);
21113
21133
  var NcAlarmModeDelaysListSchema = array(object({
21114
21134
  mode: AlarmArmModeSchema,
21115
21135
  exitDelaySec: NcAlarmDelaySecSchema.optional(),
21116
21136
  entryDelaySec: NcAlarmDelaySecSchema.optional(),
21117
- triggeredDurationSec: NcAlarmTriggeredSecSchema.optional()
21137
+ /**
21138
+ * Duration of `triggered` before {@link postTriggeredAction}. Kept as the
21139
+ * historical field name so older clients still read/write a number.
21140
+ */
21141
+ triggeredDurationSec: NcAlarmTriggeredSecSchema.optional(),
21142
+ postTriggeredAction: NcAlarmPostTriggeredActionSchema.optional(),
21143
+ /**
21144
+ * When this mode may be armed. Absent / null = always allowed (same as a
21145
+ * rule with no `schedule`). Evaluated with {@link isScheduleActive}.
21146
+ */
21147
+ schedule: NcScheduleSchema.optional()
21118
21148
  })).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
21119
21149
  var NcAlarmModeDelaysEditListSchema = array(object({
21120
21150
  mode: AlarmArmModeSchema,
21121
21151
  exitDelaySec: NcAlarmDelaySecSchema.nullable().optional(),
21122
21152
  entryDelaySec: NcAlarmDelaySecSchema.nullable().optional(),
21123
- triggeredDurationSec: NcAlarmTriggeredSecSchema.nullable().optional()
21153
+ triggeredDurationSec: NcAlarmTriggeredSecSchema.nullable().optional(),
21154
+ postTriggeredAction: NcAlarmPostTriggeredActionSchema.nullable().optional(),
21155
+ /** Set a schedule, or `null` to clear (mode always allowed again). */
21156
+ schedule: NcScheduleSchema.nullable().optional()
21124
21157
  })).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
21125
21158
  /** One switch of the alarm table: put ONE device on, or take it off, ONE mode's list. */
21126
21159
  var NcAlarmNonBlockingEditSchema = object({
@@ -21192,12 +21225,18 @@ var NcAlarmSettingsSchema = object({
21192
21225
  /** Grace period between a trigger and the alarm firing. 0 = immediate. */
21193
21226
  entryDelaySec: NcAlarmDelaySecSchema,
21194
21227
  /**
21195
- * How long `triggered` lasts before the panel re-arms itself.
21196
- * **0 = until an operator disarms it** — the behaviour before this field
21197
- * existed, and therefore what an untouched install keeps doing.
21228
+ * How long `triggered` lasts before {@link postTriggeredAction} runs.
21229
+ * Ignored when the action is `doNothing`. Historical name kept so older
21230
+ * clients still round-trip a number.
21198
21231
  */
21199
21232
  triggeredDurationSec: NcAlarmTriggeredSecSchema,
21200
21233
  /**
21234
+ * What happens when the triggered window ends. Absent on a blob older than
21235
+ * this field → derived from {@link triggeredDurationSec} (`>0` ⇒ rearmAfter,
21236
+ * else doNothing).
21237
+ */
21238
+ postTriggeredAction: NcAlarmPostTriggeredActionSchema.optional(),
21239
+ /**
21201
21240
  * Deprecated by D630 — every transition is announced. Parsed, never read;
21202
21241
  * remove after one release. Optional so an older admin's patch (which still
21203
21242
  * sends it) parses rather than failing the whole save.
@@ -33156,7 +33195,7 @@ var LocalInterfaceSchema = object({
33156
33195
  name: string(),
33157
33196
  family: _enum(["IPv4", "IPv6"]),
33158
33197
  address: string(),
33159
- /** CIDR shorthand (e.g. `192.168.1.10/24`). Empty when OS doesn't expose. */
33198
+ /** CIDR shorthand (e.g. `192.168.x.x/24`). Empty when OS doesn't expose. */
33160
33199
  cidr: string(),
33161
33200
  /** OS netmask. Stable across calls so the SDK can hash on it. */
33162
33201
  netmask: string(),
@@ -33670,7 +33709,7 @@ var MeshPeerSchema = object({
33670
33709
  tags: array(string()).readonly(),
33671
33710
  /** True when the peer advertises itself as an exit-node candidate. */
33672
33711
  exitNodeOption: boolean(),
33673
- /** Subnet routes the peer advertises (e.g. `["192.168.1.0/24"]`). */
33712
+ /** Subnet routes the peer advertises (e.g. `["192.168.x.x/24"]`). */
33674
33713
  advertisedRoutes: array(string()).readonly(),
33675
33714
  /** Owner account login (e.g. `foo@example.com`). Null for tagged peers. */
33676
33715
  userLogin: string().nullable(),
@@ -49837,6 +49876,7 @@ Object.freeze({
49837
49876
  access: "create"
49838
49877
  }
49839
49878
  });
49879
+ DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
49840
49880
  DeviceFeature.BatteryOperated;
49841
49881
  /**
49842
49882
  * The vocabulary, in the order a picker offers it.
@@ -172257,7 +172297,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
172257
172297
  key: "host",
172258
172298
  label: "Camera IP",
172259
172299
  required: true,
172260
- placeholder: "192.168.1.100"
172300
+ placeholder: "192.168.x.x"
172261
172301
  },
172262
172302
  {
172263
172303
  type: "number",
@@ -174463,7 +174503,7 @@ var ReolinkHub = class ReolinkHub extends BaseDevice {
174463
174503
  key: "host",
174464
174504
  label: "Hub IP",
174465
174505
  required: true,
174466
- placeholder: "192.168.1.100"
174506
+ placeholder: "192.168.x.x"
174467
174507
  },
174468
174508
  {
174469
174509
  type: "number",
@@ -175297,7 +175337,7 @@ function buildDiscoveryParamsFormSchema() {
175297
175337
  }, {
175298
175338
  id: "scan",
175299
175339
  title: "Scan options",
175300
- description: "Leave the network blank to scan the local subnet. To find cameras on a different subnet, enter its CIDR (e.g. 192.168.20.0/24).",
175340
+ description: "Leave the network blank to scan the local subnet. To find cameras on a different subnet, enter its CIDR (e.g. 192.168.x.x/24).",
175301
175341
  columns: 1,
175302
175342
  fields: [
175303
175343
  {
@@ -175305,7 +175345,7 @@ function buildDiscoveryParamsFormSchema() {
175305
175345
  key: "networkCidr",
175306
175346
  label: "Network (CIDR)",
175307
175347
  required: false,
175308
- placeholder: "192.168.20.0/24"
175348
+ placeholder: "192.168.x.x/24"
175309
175349
  },
175310
175350
  {
175311
175351
  type: "boolean",
@@ -175389,7 +175429,7 @@ function buildCreationFormSchema() {
175389
175429
  key: "host",
175390
175430
  label: "Host (IP / hostname / UID)",
175391
175431
  required: true,
175392
- placeholder: "192.168.1.100",
175432
+ placeholder: "192.168.x.x",
175393
175433
  description: "For UDP-only mode you can leave the host blank and supply the camera UID below — the library will discover it on the network.",
175394
175434
  inputType: "text"
175395
175435
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-reolink",
3
- "version": "1.2.171",
3
+ "version": "1.2.172",
4
4
  "description": "Reolink camera device provider addon for CamStack — native Baichuan protocol",
5
5
  "keywords": [
6
6
  "camstack",