@camstack/addon-notifiers 1.2.124 → 1.2.125

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
@@ -11085,7 +11085,16 @@ var AutomationActionSchema = discriminatedUnion("kind", [
11085
11085
  }),
11086
11086
  object({
11087
11087
  kind: literal("cap"),
11088
- deviceId: union([number().int(), object({ $var: string().min(1) })]),
11088
+ /**
11089
+ * One device, several same-family devices (locks / climate family / …),
11090
+ * or `{ $var }` for the device that triggered the run. An array is
11091
+ * fan-out at codegen — each id gets the same cap.method call.
11092
+ */
11093
+ deviceId: union([
11094
+ number().int(),
11095
+ array(number().int()).min(1),
11096
+ object({ $var: string().min(1) })
11097
+ ]),
11089
11098
  cap: string().min(1),
11090
11099
  method: string().min(1),
11091
11100
  /** Values may carry `{{vars.x}}` slots, which SUBSTITUTE and do not
@@ -14257,7 +14266,7 @@ DeviceType.Camera;
14257
14266
  * This matters here more than anywhere else in the repo, because every provider
14258
14267
  * that knows a device's host knows its PASSWORD too: `{ host, port, username,
14259
14268
  * password }` sit in one object on Hikvision, Amcrest, Reolink and ONVIF alike,
14260
- * and `http://admin:hunter2@192.168.50.139/` is a URL a browser accepts. The
14269
+ * and `http://admin:hunter2@192.168.x.x/` is a URL a browser accepts. The
14261
14270
  * camera's own page will ask for its own login. That is correct, and pre-
14262
14271
  * filling it is the operator's business, not ours.
14263
14272
  *
@@ -20197,17 +20206,41 @@ var NC_ALARM_TRIGGERED_MAX_SEC = 3600;
20197
20206
  var NcAlarmDelaySecSchema = number().int().min(0).max(600);
20198
20207
  var NcAlarmTriggeredSecSchema = number().int().min(0).max(NC_ALARM_TRIGGERED_MAX_SEC);
20199
20208
  var uniqueModes = (entries) => new Set(entries.map((e) => e.mode)).size === entries.length;
20209
+ /**
20210
+ * What the panel does when a bounded triggered window ends.
20211
+ * - `rearmAfter` — return to the armed mode
20212
+ * - `disableAfter` — auto-disarm
20213
+ * - `doNothing` — stay triggered until a human disarms
20214
+ */
20215
+ var NcAlarmPostTriggeredActionSchema = _enum([
20216
+ "rearmAfter",
20217
+ "disableAfter",
20218
+ "doNothing"
20219
+ ]);
20200
20220
  var NcAlarmModeDelaysListSchema = array(object({
20201
20221
  mode: AlarmArmModeSchema,
20202
20222
  exitDelaySec: NcAlarmDelaySecSchema.optional(),
20203
20223
  entryDelaySec: NcAlarmDelaySecSchema.optional(),
20204
- triggeredDurationSec: NcAlarmTriggeredSecSchema.optional()
20224
+ /**
20225
+ * Duration of `triggered` before {@link postTriggeredAction}. Kept as the
20226
+ * historical field name so older clients still read/write a number.
20227
+ */
20228
+ triggeredDurationSec: NcAlarmTriggeredSecSchema.optional(),
20229
+ postTriggeredAction: NcAlarmPostTriggeredActionSchema.optional(),
20230
+ /**
20231
+ * When this mode may be armed. Absent / null = always allowed (same as a
20232
+ * rule with no `schedule`). Evaluated with {@link isScheduleActive}.
20233
+ */
20234
+ schedule: NcScheduleSchema.optional()
20205
20235
  })).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
20206
20236
  var NcAlarmModeDelaysEditListSchema = array(object({
20207
20237
  mode: AlarmArmModeSchema,
20208
20238
  exitDelaySec: NcAlarmDelaySecSchema.nullable().optional(),
20209
20239
  entryDelaySec: NcAlarmDelaySecSchema.nullable().optional(),
20210
- triggeredDurationSec: NcAlarmTriggeredSecSchema.nullable().optional()
20240
+ triggeredDurationSec: NcAlarmTriggeredSecSchema.nullable().optional(),
20241
+ postTriggeredAction: NcAlarmPostTriggeredActionSchema.nullable().optional(),
20242
+ /** Set a schedule, or `null` to clear (mode always allowed again). */
20243
+ schedule: NcScheduleSchema.nullable().optional()
20211
20244
  })).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
20212
20245
  /** One switch of the alarm table: put ONE device on, or take it off, ONE mode's list. */
20213
20246
  var NcAlarmNonBlockingEditSchema = object({
@@ -20279,12 +20312,18 @@ var NcAlarmSettingsSchema = object({
20279
20312
  /** Grace period between a trigger and the alarm firing. 0 = immediate. */
20280
20313
  entryDelaySec: NcAlarmDelaySecSchema,
20281
20314
  /**
20282
- * How long `triggered` lasts before the panel re-arms itself.
20283
- * **0 = until an operator disarms it** — the behaviour before this field
20284
- * existed, and therefore what an untouched install keeps doing.
20315
+ * How long `triggered` lasts before {@link postTriggeredAction} runs.
20316
+ * Ignored when the action is `doNothing`. Historical name kept so older
20317
+ * clients still round-trip a number.
20285
20318
  */
20286
20319
  triggeredDurationSec: NcAlarmTriggeredSecSchema,
20287
20320
  /**
20321
+ * What happens when the triggered window ends. Absent on a blob older than
20322
+ * this field → derived from {@link triggeredDurationSec} (`>0` ⇒ rearmAfter,
20323
+ * else doNothing).
20324
+ */
20325
+ postTriggeredAction: NcAlarmPostTriggeredActionSchema.optional(),
20326
+ /**
20288
20327
  * Deprecated by D630 — every transition is announced. Parsed, never read;
20289
20328
  * remove after one release. Optional so an older admin's patch (which still
20290
20329
  * sends it) parses rather than failing the whole save.
@@ -30516,7 +30555,7 @@ var LocalInterfaceSchema = object({
30516
30555
  name: string(),
30517
30556
  family: _enum(["IPv4", "IPv6"]),
30518
30557
  address: string(),
30519
- /** CIDR shorthand (e.g. `192.168.1.10/24`). Empty when OS doesn't expose. */
30558
+ /** CIDR shorthand (e.g. `192.168.x.x/24`). Empty when OS doesn't expose. */
30520
30559
  cidr: string(),
30521
30560
  /** OS netmask. Stable across calls so the SDK can hash on it. */
30522
30561
  netmask: string(),
@@ -30962,7 +31001,7 @@ var MeshPeerSchema = object({
30962
31001
  tags: array(string()).readonly(),
30963
31002
  /** True when the peer advertises itself as an exit-node candidate. */
30964
31003
  exitNodeOption: boolean(),
30965
- /** Subnet routes the peer advertises (e.g. `["192.168.1.0/24"]`). */
31004
+ /** Subnet routes the peer advertises (e.g. `["192.168.x.x/24"]`). */
30966
31005
  advertisedRoutes: array(string()).readonly(),
30967
31006
  /** Owner account login (e.g. `foo@example.com`). Null for tagged peers. */
30968
31007
  userLogin: string().nullable(),
@@ -43593,6 +43632,7 @@ Object.freeze({
43593
43632
  access: "create"
43594
43633
  }
43595
43634
  });
43635
+ 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;
43596
43636
  DeviceFeature.BatteryOperated;
43597
43637
  /**
43598
43638
  * The vocabulary, in the order a picker offers it.
package/dist/addon.mjs CHANGED
@@ -11058,7 +11058,16 @@ var AutomationActionSchema = discriminatedUnion("kind", [
11058
11058
  }),
11059
11059
  object({
11060
11060
  kind: literal("cap"),
11061
- deviceId: union([number().int(), object({ $var: string().min(1) })]),
11061
+ /**
11062
+ * One device, several same-family devices (locks / climate family / …),
11063
+ * or `{ $var }` for the device that triggered the run. An array is
11064
+ * fan-out at codegen — each id gets the same cap.method call.
11065
+ */
11066
+ deviceId: union([
11067
+ number().int(),
11068
+ array(number().int()).min(1),
11069
+ object({ $var: string().min(1) })
11070
+ ]),
11062
11071
  cap: string().min(1),
11063
11072
  method: string().min(1),
11064
11073
  /** Values may carry `{{vars.x}}` slots, which SUBSTITUTE and do not
@@ -14230,7 +14239,7 @@ DeviceType.Camera;
14230
14239
  * This matters here more than anywhere else in the repo, because every provider
14231
14240
  * that knows a device's host knows its PASSWORD too: `{ host, port, username,
14232
14241
  * password }` sit in one object on Hikvision, Amcrest, Reolink and ONVIF alike,
14233
- * and `http://admin:hunter2@192.168.50.139/` is a URL a browser accepts. The
14242
+ * and `http://admin:hunter2@192.168.x.x/` is a URL a browser accepts. The
14234
14243
  * camera's own page will ask for its own login. That is correct, and pre-
14235
14244
  * filling it is the operator's business, not ours.
14236
14245
  *
@@ -20170,17 +20179,41 @@ var NC_ALARM_TRIGGERED_MAX_SEC = 3600;
20170
20179
  var NcAlarmDelaySecSchema = number().int().min(0).max(600);
20171
20180
  var NcAlarmTriggeredSecSchema = number().int().min(0).max(NC_ALARM_TRIGGERED_MAX_SEC);
20172
20181
  var uniqueModes = (entries) => new Set(entries.map((e) => e.mode)).size === entries.length;
20182
+ /**
20183
+ * What the panel does when a bounded triggered window ends.
20184
+ * - `rearmAfter` — return to the armed mode
20185
+ * - `disableAfter` — auto-disarm
20186
+ * - `doNothing` — stay triggered until a human disarms
20187
+ */
20188
+ var NcAlarmPostTriggeredActionSchema = _enum([
20189
+ "rearmAfter",
20190
+ "disableAfter",
20191
+ "doNothing"
20192
+ ]);
20173
20193
  var NcAlarmModeDelaysListSchema = array(object({
20174
20194
  mode: AlarmArmModeSchema,
20175
20195
  exitDelaySec: NcAlarmDelaySecSchema.optional(),
20176
20196
  entryDelaySec: NcAlarmDelaySecSchema.optional(),
20177
- triggeredDurationSec: NcAlarmTriggeredSecSchema.optional()
20197
+ /**
20198
+ * Duration of `triggered` before {@link postTriggeredAction}. Kept as the
20199
+ * historical field name so older clients still read/write a number.
20200
+ */
20201
+ triggeredDurationSec: NcAlarmTriggeredSecSchema.optional(),
20202
+ postTriggeredAction: NcAlarmPostTriggeredActionSchema.optional(),
20203
+ /**
20204
+ * When this mode may be armed. Absent / null = always allowed (same as a
20205
+ * rule with no `schedule`). Evaluated with {@link isScheduleActive}.
20206
+ */
20207
+ schedule: NcScheduleSchema.optional()
20178
20208
  })).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
20179
20209
  var NcAlarmModeDelaysEditListSchema = array(object({
20180
20210
  mode: AlarmArmModeSchema,
20181
20211
  exitDelaySec: NcAlarmDelaySecSchema.nullable().optional(),
20182
20212
  entryDelaySec: NcAlarmDelaySecSchema.nullable().optional(),
20183
- triggeredDurationSec: NcAlarmTriggeredSecSchema.nullable().optional()
20213
+ triggeredDurationSec: NcAlarmTriggeredSecSchema.nullable().optional(),
20214
+ postTriggeredAction: NcAlarmPostTriggeredActionSchema.nullable().optional(),
20215
+ /** Set a schedule, or `null` to clear (mode always allowed again). */
20216
+ schedule: NcScheduleSchema.nullable().optional()
20184
20217
  })).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
20185
20218
  /** One switch of the alarm table: put ONE device on, or take it off, ONE mode's list. */
20186
20219
  var NcAlarmNonBlockingEditSchema = object({
@@ -20252,12 +20285,18 @@ var NcAlarmSettingsSchema = object({
20252
20285
  /** Grace period between a trigger and the alarm firing. 0 = immediate. */
20253
20286
  entryDelaySec: NcAlarmDelaySecSchema,
20254
20287
  /**
20255
- * How long `triggered` lasts before the panel re-arms itself.
20256
- * **0 = until an operator disarms it** — the behaviour before this field
20257
- * existed, and therefore what an untouched install keeps doing.
20288
+ * How long `triggered` lasts before {@link postTriggeredAction} runs.
20289
+ * Ignored when the action is `doNothing`. Historical name kept so older
20290
+ * clients still round-trip a number.
20258
20291
  */
20259
20292
  triggeredDurationSec: NcAlarmTriggeredSecSchema,
20260
20293
  /**
20294
+ * What happens when the triggered window ends. Absent on a blob older than
20295
+ * this field → derived from {@link triggeredDurationSec} (`>0` ⇒ rearmAfter,
20296
+ * else doNothing).
20297
+ */
20298
+ postTriggeredAction: NcAlarmPostTriggeredActionSchema.optional(),
20299
+ /**
20261
20300
  * Deprecated by D630 — every transition is announced. Parsed, never read;
20262
20301
  * remove after one release. Optional so an older admin's patch (which still
20263
20302
  * sends it) parses rather than failing the whole save.
@@ -30489,7 +30528,7 @@ var LocalInterfaceSchema = object({
30489
30528
  name: string(),
30490
30529
  family: _enum(["IPv4", "IPv6"]),
30491
30530
  address: string(),
30492
- /** CIDR shorthand (e.g. `192.168.1.10/24`). Empty when OS doesn't expose. */
30531
+ /** CIDR shorthand (e.g. `192.168.x.x/24`). Empty when OS doesn't expose. */
30493
30532
  cidr: string(),
30494
30533
  /** OS netmask. Stable across calls so the SDK can hash on it. */
30495
30534
  netmask: string(),
@@ -30935,7 +30974,7 @@ var MeshPeerSchema = object({
30935
30974
  tags: array(string()).readonly(),
30936
30975
  /** True when the peer advertises itself as an exit-node candidate. */
30937
30976
  exitNodeOption: boolean(),
30938
- /** Subnet routes the peer advertises (e.g. `["192.168.1.0/24"]`). */
30977
+ /** Subnet routes the peer advertises (e.g. `["192.168.x.x/24"]`). */
30939
30978
  advertisedRoutes: array(string()).readonly(),
30940
30979
  /** Owner account login (e.g. `foo@example.com`). Null for tagged peers. */
30941
30980
  userLogin: string().nullable(),
@@ -43566,6 +43605,7 @@ Object.freeze({
43566
43605
  access: "create"
43567
43606
  }
43568
43607
  });
43608
+ 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;
43569
43609
  DeviceFeature.BatteryOperated;
43570
43610
  /**
43571
43611
  * The vocabulary, in the order a picker offers it.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-notifiers",
3
- "version": "1.2.124",
3
+ "version": "1.2.125",
4
4
  "description": "System notifiers addon for CamStack — a `notification-output` collection provider hosting per-kind notifier adapters (ntfy, pushover, gotify, telegram, discord, webhook, zentik).",
5
5
  "keywords": [
6
6
  "camstack",