@camstack/addon-notifiers 1.2.72 → 1.2.74
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 +86 -2
- package/dist/addon.mjs +86 -2
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -29,7 +29,7 @@ let node_fs = require("node:fs");
|
|
|
29
29
|
let node_path = require("node:path");
|
|
30
30
|
node_path = __toESM(node_path);
|
|
31
31
|
let node_url = require("node:url");
|
|
32
|
-
//#region ../types/dist/event-category-
|
|
32
|
+
//#region ../types/dist/event-category-zAv7pMUz.mjs
|
|
33
33
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
34
34
|
EventCategory["SystemBoot"] = "system.boot";
|
|
35
35
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -401,6 +401,13 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
401
401
|
*/
|
|
402
402
|
EventCategory["BatteryOnStatusChanged"] = "battery.onStatusChanged";
|
|
403
403
|
/**
|
|
404
|
+
* Cap event fired by every device that registers the `network-link`
|
|
405
|
+
* capability. Mirrors the cap definition's `onStatusChanged`. Carries
|
|
406
|
+
* `{ deviceId, status: NetworkLinkStatus }` — a link switch or a signal
|
|
407
|
+
* reading that moved.
|
|
408
|
+
*/
|
|
409
|
+
EventCategory["NetworkLinkOnStatusChanged"] = "network-link.onStatusChanged";
|
|
410
|
+
/**
|
|
404
411
|
* Emitted by the battery cap provider WHEN `wakeForStream` enters the
|
|
405
412
|
* "wake in progress" window — between the Baichuan wake-up issue and
|
|
406
413
|
* the camera's first dialed-back RTP packet. The stream-broker
|
|
@@ -19209,6 +19216,33 @@ var RecentTracksQueryInput = object({
|
|
|
19209
19216
|
*/
|
|
19210
19217
|
classes: array(string()).optional()
|
|
19211
19218
|
});
|
|
19219
|
+
/**
|
|
19220
|
+
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
19221
|
+
* `groupShotKey` is the media key of its group shot (`ownerKind: 'summary'`,
|
|
19222
|
+
* served by the event-media plane by key), null until the first frame with a
|
|
19223
|
+
* member visible has been materialised.
|
|
19224
|
+
*/
|
|
19225
|
+
var SummarySchema = object({
|
|
19226
|
+
id: string(),
|
|
19227
|
+
deviceId: number(),
|
|
19228
|
+
openedAt: number(),
|
|
19229
|
+
lastActiveAt: number(),
|
|
19230
|
+
sealedAt: number().nullable(),
|
|
19231
|
+
memberCount: number().int().nonnegative(),
|
|
19232
|
+
groupShotKey: string().nullable()
|
|
19233
|
+
});
|
|
19234
|
+
var SummariesQueryInput = object({
|
|
19235
|
+
deviceIds: array(number()).min(1),
|
|
19236
|
+
since: number().optional(),
|
|
19237
|
+
until: number().optional(),
|
|
19238
|
+
limit: number().int().min(1).max(200).default(50)
|
|
19239
|
+
});
|
|
19240
|
+
var SummariesPageSchema = object({ summaries: array(SummarySchema).readonly() });
|
|
19241
|
+
var SummaryDetailSchema = object({
|
|
19242
|
+
summary: SummarySchema,
|
|
19243
|
+
/** Member track ids, in absorption order. */
|
|
19244
|
+
trackIds: array(string()).readonly()
|
|
19245
|
+
});
|
|
19212
19246
|
var RecentTracksPageSchema = object({
|
|
19213
19247
|
/** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
|
|
19214
19248
|
tracks: array(TrackSchema).readonly(),
|
|
@@ -19609,7 +19643,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19609
19643
|
* timeline would read as a camera that saw nothing.
|
|
19610
19644
|
*/
|
|
19611
19645
|
classes: array(string()).optional()
|
|
19612
|
-
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
|
|
19646
|
+
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
|
|
19613
19647
|
kind: "mutation",
|
|
19614
19648
|
auth: "admin"
|
|
19615
19649
|
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(object({ deviceId: number() }), array(EventKindDescriptorSchema).readonly()), method(object({ deviceIds: array(number()).min(1).max(200) }), array(EventKindsForDeviceSchema).readonly()), method(object({
|
|
@@ -23342,6 +23376,39 @@ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, meth
|
|
|
23342
23376
|
deviceId: number(),
|
|
23343
23377
|
status: BatteryStatusSchema
|
|
23344
23378
|
});
|
|
23379
|
+
/**
|
|
23380
|
+
* Network-link snapshot. Same shape for every provider (a Reolink wifi
|
|
23381
|
+
* camera, a Home Assistant device with a signal-strength sensor, a Tapo
|
|
23382
|
+
* plug): one slice under `device.runtimeState['network-link']`, one badge,
|
|
23383
|
+
* one Home Assistant projection.
|
|
23384
|
+
*/
|
|
23385
|
+
var NetworkLinkStatusSchema = object({
|
|
23386
|
+
/** The link the device is on. `'unknown'` = not read yet, not "no link". */
|
|
23387
|
+
type: _enum([
|
|
23388
|
+
"wifi",
|
|
23389
|
+
"ethernet",
|
|
23390
|
+
"cellular",
|
|
23391
|
+
"unknown"
|
|
23392
|
+
]),
|
|
23393
|
+
/**
|
|
23394
|
+
* Link quality, 0..100 inclusive, normalised by the provider from whatever
|
|
23395
|
+
* the firmware reports (bars, RSSI, a vendor scale). **`null` means NOT
|
|
23396
|
+
* KNOWN or NOT APPLICABLE** — a wired link has no signal, and a wireless
|
|
23397
|
+
* one whose reading has not landed must not be drawn at 0 %. Consumers
|
|
23398
|
+
* SKIP a null rather than coerce it.
|
|
23399
|
+
*/
|
|
23400
|
+
signalPercent: number().min(0).max(100).nullable(),
|
|
23401
|
+
/** Raw received signal strength in dBm, when the firmware reports one. */
|
|
23402
|
+
rssiDbm: number().optional(),
|
|
23403
|
+
/** Network name of a wireless link, when the firmware reports it. */
|
|
23404
|
+
ssid: string().optional(),
|
|
23405
|
+
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
23406
|
+
lastUpdated: number()
|
|
23407
|
+
});
|
|
23408
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.Light, DeviceType.Lock, DeviceType.Siren, object({
|
|
23409
|
+
deviceId: number(),
|
|
23410
|
+
status: NetworkLinkStatusSchema
|
|
23411
|
+
});
|
|
23345
23412
|
object({
|
|
23346
23413
|
on: boolean(),
|
|
23347
23414
|
/** Ms epoch of the last transition. 0 if never observed. */
|
|
@@ -32564,6 +32631,12 @@ Object.freeze({
|
|
|
32564
32631
|
addonId: null,
|
|
32565
32632
|
access: "view"
|
|
32566
32633
|
},
|
|
32634
|
+
"pipelineAnalytics.getSummary": {
|
|
32635
|
+
capName: "pipeline-analytics",
|
|
32636
|
+
capScope: "device",
|
|
32637
|
+
addonId: null,
|
|
32638
|
+
access: "view"
|
|
32639
|
+
},
|
|
32567
32640
|
"pipelineAnalytics.getTrack": {
|
|
32568
32641
|
capName: "pipeline-analytics",
|
|
32569
32642
|
capScope: "device",
|
|
@@ -32642,6 +32715,12 @@ Object.freeze({
|
|
|
32642
32715
|
addonId: null,
|
|
32643
32716
|
access: "view"
|
|
32644
32717
|
},
|
|
32718
|
+
"pipelineAnalytics.listSummaries": {
|
|
32719
|
+
capName: "pipeline-analytics",
|
|
32720
|
+
capScope: "device",
|
|
32721
|
+
addonId: null,
|
|
32722
|
+
access: "view"
|
|
32723
|
+
},
|
|
32645
32724
|
"pipelineAnalytics.listTrackMedia": {
|
|
32646
32725
|
capName: "pipeline-analytics",
|
|
32647
32726
|
capScope: "device",
|
|
@@ -36337,6 +36416,11 @@ Object.freeze({
|
|
|
36337
36416
|
form: "array",
|
|
36338
36417
|
optional: true
|
|
36339
36418
|
}],
|
|
36419
|
+
"pipelineAnalytics.listSummaries": [{
|
|
36420
|
+
name: "deviceIds",
|
|
36421
|
+
form: "array",
|
|
36422
|
+
optional: false
|
|
36423
|
+
}],
|
|
36340
36424
|
"pipelineAnalytics.listTrackMedia": [{
|
|
36341
36425
|
name: "deviceId",
|
|
36342
36426
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -2,7 +2,7 @@ import { brotliCompressSync, deflateSync, gzipSync } from "node:zlib";
|
|
|
2
2
|
import { readFileSync } from "node:fs";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
|
-
//#region ../types/dist/event-category-
|
|
5
|
+
//#region ../types/dist/event-category-zAv7pMUz.mjs
|
|
6
6
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
7
7
|
EventCategory["SystemBoot"] = "system.boot";
|
|
8
8
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -374,6 +374,13 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
374
374
|
*/
|
|
375
375
|
EventCategory["BatteryOnStatusChanged"] = "battery.onStatusChanged";
|
|
376
376
|
/**
|
|
377
|
+
* Cap event fired by every device that registers the `network-link`
|
|
378
|
+
* capability. Mirrors the cap definition's `onStatusChanged`. Carries
|
|
379
|
+
* `{ deviceId, status: NetworkLinkStatus }` — a link switch or a signal
|
|
380
|
+
* reading that moved.
|
|
381
|
+
*/
|
|
382
|
+
EventCategory["NetworkLinkOnStatusChanged"] = "network-link.onStatusChanged";
|
|
383
|
+
/**
|
|
377
384
|
* Emitted by the battery cap provider WHEN `wakeForStream` enters the
|
|
378
385
|
* "wake in progress" window — between the Baichuan wake-up issue and
|
|
379
386
|
* the camera's first dialed-back RTP packet. The stream-broker
|
|
@@ -19182,6 +19189,33 @@ var RecentTracksQueryInput = object({
|
|
|
19182
19189
|
*/
|
|
19183
19190
|
classes: array(string()).optional()
|
|
19184
19191
|
});
|
|
19192
|
+
/**
|
|
19193
|
+
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
19194
|
+
* `groupShotKey` is the media key of its group shot (`ownerKind: 'summary'`,
|
|
19195
|
+
* served by the event-media plane by key), null until the first frame with a
|
|
19196
|
+
* member visible has been materialised.
|
|
19197
|
+
*/
|
|
19198
|
+
var SummarySchema = object({
|
|
19199
|
+
id: string(),
|
|
19200
|
+
deviceId: number(),
|
|
19201
|
+
openedAt: number(),
|
|
19202
|
+
lastActiveAt: number(),
|
|
19203
|
+
sealedAt: number().nullable(),
|
|
19204
|
+
memberCount: number().int().nonnegative(),
|
|
19205
|
+
groupShotKey: string().nullable()
|
|
19206
|
+
});
|
|
19207
|
+
var SummariesQueryInput = object({
|
|
19208
|
+
deviceIds: array(number()).min(1),
|
|
19209
|
+
since: number().optional(),
|
|
19210
|
+
until: number().optional(),
|
|
19211
|
+
limit: number().int().min(1).max(200).default(50)
|
|
19212
|
+
});
|
|
19213
|
+
var SummariesPageSchema = object({ summaries: array(SummarySchema).readonly() });
|
|
19214
|
+
var SummaryDetailSchema = object({
|
|
19215
|
+
summary: SummarySchema,
|
|
19216
|
+
/** Member track ids, in absorption order. */
|
|
19217
|
+
trackIds: array(string()).readonly()
|
|
19218
|
+
});
|
|
19185
19219
|
var RecentTracksPageSchema = object({
|
|
19186
19220
|
/** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
|
|
19187
19221
|
tracks: array(TrackSchema).readonly(),
|
|
@@ -19582,7 +19616,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19582
19616
|
* timeline would read as a camera that saw nothing.
|
|
19583
19617
|
*/
|
|
19584
19618
|
classes: array(string()).optional()
|
|
19585
|
-
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
|
|
19619
|
+
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
|
|
19586
19620
|
kind: "mutation",
|
|
19587
19621
|
auth: "admin"
|
|
19588
19622
|
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(object({ deviceId: number() }), array(EventKindDescriptorSchema).readonly()), method(object({ deviceIds: array(number()).min(1).max(200) }), array(EventKindsForDeviceSchema).readonly()), method(object({
|
|
@@ -23315,6 +23349,39 @@ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, meth
|
|
|
23315
23349
|
deviceId: number(),
|
|
23316
23350
|
status: BatteryStatusSchema
|
|
23317
23351
|
});
|
|
23352
|
+
/**
|
|
23353
|
+
* Network-link snapshot. Same shape for every provider (a Reolink wifi
|
|
23354
|
+
* camera, a Home Assistant device with a signal-strength sensor, a Tapo
|
|
23355
|
+
* plug): one slice under `device.runtimeState['network-link']`, one badge,
|
|
23356
|
+
* one Home Assistant projection.
|
|
23357
|
+
*/
|
|
23358
|
+
var NetworkLinkStatusSchema = object({
|
|
23359
|
+
/** The link the device is on. `'unknown'` = not read yet, not "no link". */
|
|
23360
|
+
type: _enum([
|
|
23361
|
+
"wifi",
|
|
23362
|
+
"ethernet",
|
|
23363
|
+
"cellular",
|
|
23364
|
+
"unknown"
|
|
23365
|
+
]),
|
|
23366
|
+
/**
|
|
23367
|
+
* Link quality, 0..100 inclusive, normalised by the provider from whatever
|
|
23368
|
+
* the firmware reports (bars, RSSI, a vendor scale). **`null` means NOT
|
|
23369
|
+
* KNOWN or NOT APPLICABLE** — a wired link has no signal, and a wireless
|
|
23370
|
+
* one whose reading has not landed must not be drawn at 0 %. Consumers
|
|
23371
|
+
* SKIP a null rather than coerce it.
|
|
23372
|
+
*/
|
|
23373
|
+
signalPercent: number().min(0).max(100).nullable(),
|
|
23374
|
+
/** Raw received signal strength in dBm, when the firmware reports one. */
|
|
23375
|
+
rssiDbm: number().optional(),
|
|
23376
|
+
/** Network name of a wireless link, when the firmware reports it. */
|
|
23377
|
+
ssid: string().optional(),
|
|
23378
|
+
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
23379
|
+
lastUpdated: number()
|
|
23380
|
+
});
|
|
23381
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.Light, DeviceType.Lock, DeviceType.Siren, object({
|
|
23382
|
+
deviceId: number(),
|
|
23383
|
+
status: NetworkLinkStatusSchema
|
|
23384
|
+
});
|
|
23318
23385
|
object({
|
|
23319
23386
|
on: boolean(),
|
|
23320
23387
|
/** Ms epoch of the last transition. 0 if never observed. */
|
|
@@ -32537,6 +32604,12 @@ Object.freeze({
|
|
|
32537
32604
|
addonId: null,
|
|
32538
32605
|
access: "view"
|
|
32539
32606
|
},
|
|
32607
|
+
"pipelineAnalytics.getSummary": {
|
|
32608
|
+
capName: "pipeline-analytics",
|
|
32609
|
+
capScope: "device",
|
|
32610
|
+
addonId: null,
|
|
32611
|
+
access: "view"
|
|
32612
|
+
},
|
|
32540
32613
|
"pipelineAnalytics.getTrack": {
|
|
32541
32614
|
capName: "pipeline-analytics",
|
|
32542
32615
|
capScope: "device",
|
|
@@ -32615,6 +32688,12 @@ Object.freeze({
|
|
|
32615
32688
|
addonId: null,
|
|
32616
32689
|
access: "view"
|
|
32617
32690
|
},
|
|
32691
|
+
"pipelineAnalytics.listSummaries": {
|
|
32692
|
+
capName: "pipeline-analytics",
|
|
32693
|
+
capScope: "device",
|
|
32694
|
+
addonId: null,
|
|
32695
|
+
access: "view"
|
|
32696
|
+
},
|
|
32618
32697
|
"pipelineAnalytics.listTrackMedia": {
|
|
32619
32698
|
capName: "pipeline-analytics",
|
|
32620
32699
|
capScope: "device",
|
|
@@ -36310,6 +36389,11 @@ Object.freeze({
|
|
|
36310
36389
|
form: "array",
|
|
36311
36390
|
optional: true
|
|
36312
36391
|
}],
|
|
36392
|
+
"pipelineAnalytics.listSummaries": [{
|
|
36393
|
+
name: "deviceIds",
|
|
36394
|
+
form: "array",
|
|
36395
|
+
optional: false
|
|
36396
|
+
}],
|
|
36313
36397
|
"pipelineAnalytics.listTrackMedia": [{
|
|
36314
36398
|
name: "deviceId",
|
|
36315
36399
|
form: "single",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-notifiers",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.74",
|
|
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",
|