@camstack/addon-tailscale 1.2.68 → 1.2.70
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/client/tailscale.addon.js +1 -1
- package/dist/client/tailscale.addon.mjs +1 -1
- package/dist/{dist-BGX4TYGX.mjs → dist-BI0_HzJ1.mjs} +86 -2
- package/dist/{dist-Bin6Beic.js → dist-BoE-0P-g.js} +86 -2
- package/dist/ingress/tailscale-ingress.addon.js +1 -1
- package/dist/ingress/tailscale-ingress.addon.mjs +1 -1
- package/package.json +1 -1
|
@@ -24,7 +24,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
24
24
|
enumerable: true
|
|
25
25
|
}) : target, mod));
|
|
26
26
|
//#endregion
|
|
27
|
-
const require_dist = require("../dist-
|
|
27
|
+
const require_dist = require("../dist-BoE-0P-g.js");
|
|
28
28
|
let node_child_process = require("node:child_process");
|
|
29
29
|
let node_util = require("node:util");
|
|
30
30
|
let node_fs = require("node:fs");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as EventCategory, i as BaseAddon, n as networkAccessCapability, r as BOOT_RECOVERY_BACKOFF_MS, t as meshNetworkCapability } from "../dist-
|
|
1
|
+
import { a as EventCategory, i as BaseAddon, n as networkAccessCapability, r as BOOT_RECOVERY_BACKOFF_MS, t as meshNetworkCapability } from "../dist-BI0_HzJ1.mjs";
|
|
2
2
|
import { execFile, spawn } from "node:child_process";
|
|
3
3
|
import { promisify } from "node:util";
|
|
4
4
|
import * as fs from "node:fs";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region ../types/dist/event-category-
|
|
1
|
+
//#region ../types/dist/event-category-zAv7pMUz.mjs
|
|
2
2
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
3
3
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4
4
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -370,6 +370,13 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
370
370
|
*/
|
|
371
371
|
EventCategory["BatteryOnStatusChanged"] = "battery.onStatusChanged";
|
|
372
372
|
/**
|
|
373
|
+
* Cap event fired by every device that registers the `network-link`
|
|
374
|
+
* capability. Mirrors the cap definition's `onStatusChanged`. Carries
|
|
375
|
+
* `{ deviceId, status: NetworkLinkStatus }` — a link switch or a signal
|
|
376
|
+
* reading that moved.
|
|
377
|
+
*/
|
|
378
|
+
EventCategory["NetworkLinkOnStatusChanged"] = "network-link.onStatusChanged";
|
|
379
|
+
/**
|
|
373
380
|
* Emitted by the battery cap provider WHEN `wakeForStream` enters the
|
|
374
381
|
* "wake in progress" window — between the Baichuan wake-up issue and
|
|
375
382
|
* the camera's first dialed-back RTP packet. The stream-broker
|
|
@@ -19055,6 +19062,33 @@ var RecentTracksQueryInput = object({
|
|
|
19055
19062
|
*/
|
|
19056
19063
|
classes: array(string()).optional()
|
|
19057
19064
|
});
|
|
19065
|
+
/**
|
|
19066
|
+
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
19067
|
+
* `groupShotKey` is the media key of its group shot (`ownerKind: 'summary'`,
|
|
19068
|
+
* served by the event-media plane by key), null until the first frame with a
|
|
19069
|
+
* member visible has been materialised.
|
|
19070
|
+
*/
|
|
19071
|
+
var SummarySchema = object({
|
|
19072
|
+
id: string(),
|
|
19073
|
+
deviceId: number(),
|
|
19074
|
+
openedAt: number(),
|
|
19075
|
+
lastActiveAt: number(),
|
|
19076
|
+
sealedAt: number().nullable(),
|
|
19077
|
+
memberCount: number().int().nonnegative(),
|
|
19078
|
+
groupShotKey: string().nullable()
|
|
19079
|
+
});
|
|
19080
|
+
var SummariesQueryInput = object({
|
|
19081
|
+
deviceIds: array(number()).min(1),
|
|
19082
|
+
since: number().optional(),
|
|
19083
|
+
until: number().optional(),
|
|
19084
|
+
limit: number().int().min(1).max(200).default(50)
|
|
19085
|
+
});
|
|
19086
|
+
var SummariesPageSchema = object({ summaries: array(SummarySchema).readonly() });
|
|
19087
|
+
var SummaryDetailSchema = object({
|
|
19088
|
+
summary: SummarySchema,
|
|
19089
|
+
/** Member track ids, in absorption order. */
|
|
19090
|
+
trackIds: array(string()).readonly()
|
|
19091
|
+
});
|
|
19058
19092
|
var RecentTracksPageSchema = object({
|
|
19059
19093
|
/** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
|
|
19060
19094
|
tracks: array(TrackSchema).readonly(),
|
|
@@ -19455,7 +19489,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19455
19489
|
* timeline would read as a camera that saw nothing.
|
|
19456
19490
|
*/
|
|
19457
19491
|
classes: array(string()).optional()
|
|
19458
|
-
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
|
|
19492
|
+
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
|
|
19459
19493
|
kind: "mutation",
|
|
19460
19494
|
auth: "admin"
|
|
19461
19495
|
}), 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({
|
|
@@ -23188,6 +23222,39 @@ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, meth
|
|
|
23188
23222
|
deviceId: number(),
|
|
23189
23223
|
status: BatteryStatusSchema
|
|
23190
23224
|
});
|
|
23225
|
+
/**
|
|
23226
|
+
* Network-link snapshot. Same shape for every provider (a Reolink wifi
|
|
23227
|
+
* camera, a Home Assistant device with a signal-strength sensor, a Tapo
|
|
23228
|
+
* plug): one slice under `device.runtimeState['network-link']`, one badge,
|
|
23229
|
+
* one Home Assistant projection.
|
|
23230
|
+
*/
|
|
23231
|
+
var NetworkLinkStatusSchema = object({
|
|
23232
|
+
/** The link the device is on. `'unknown'` = not read yet, not "no link". */
|
|
23233
|
+
type: _enum([
|
|
23234
|
+
"wifi",
|
|
23235
|
+
"ethernet",
|
|
23236
|
+
"cellular",
|
|
23237
|
+
"unknown"
|
|
23238
|
+
]),
|
|
23239
|
+
/**
|
|
23240
|
+
* Link quality, 0..100 inclusive, normalised by the provider from whatever
|
|
23241
|
+
* the firmware reports (bars, RSSI, a vendor scale). **`null` means NOT
|
|
23242
|
+
* KNOWN or NOT APPLICABLE** — a wired link has no signal, and a wireless
|
|
23243
|
+
* one whose reading has not landed must not be drawn at 0 %. Consumers
|
|
23244
|
+
* SKIP a null rather than coerce it.
|
|
23245
|
+
*/
|
|
23246
|
+
signalPercent: number().min(0).max(100).nullable(),
|
|
23247
|
+
/** Raw received signal strength in dBm, when the firmware reports one. */
|
|
23248
|
+
rssiDbm: number().optional(),
|
|
23249
|
+
/** Network name of a wireless link, when the firmware reports it. */
|
|
23250
|
+
ssid: string().optional(),
|
|
23251
|
+
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
23252
|
+
lastUpdated: number()
|
|
23253
|
+
});
|
|
23254
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.Light, DeviceType.Lock, DeviceType.Siren, object({
|
|
23255
|
+
deviceId: number(),
|
|
23256
|
+
status: NetworkLinkStatusSchema
|
|
23257
|
+
});
|
|
23191
23258
|
object({
|
|
23192
23259
|
on: boolean(),
|
|
23193
23260
|
/** Ms epoch of the last transition. 0 if never observed. */
|
|
@@ -32471,6 +32538,12 @@ Object.freeze({
|
|
|
32471
32538
|
addonId: null,
|
|
32472
32539
|
access: "view"
|
|
32473
32540
|
},
|
|
32541
|
+
"pipelineAnalytics.getSummary": {
|
|
32542
|
+
capName: "pipeline-analytics",
|
|
32543
|
+
capScope: "device",
|
|
32544
|
+
addonId: null,
|
|
32545
|
+
access: "view"
|
|
32546
|
+
},
|
|
32474
32547
|
"pipelineAnalytics.getTrack": {
|
|
32475
32548
|
capName: "pipeline-analytics",
|
|
32476
32549
|
capScope: "device",
|
|
@@ -32549,6 +32622,12 @@ Object.freeze({
|
|
|
32549
32622
|
addonId: null,
|
|
32550
32623
|
access: "view"
|
|
32551
32624
|
},
|
|
32625
|
+
"pipelineAnalytics.listSummaries": {
|
|
32626
|
+
capName: "pipeline-analytics",
|
|
32627
|
+
capScope: "device",
|
|
32628
|
+
addonId: null,
|
|
32629
|
+
access: "view"
|
|
32630
|
+
},
|
|
32552
32631
|
"pipelineAnalytics.listTrackMedia": {
|
|
32553
32632
|
capName: "pipeline-analytics",
|
|
32554
32633
|
capScope: "device",
|
|
@@ -36244,6 +36323,11 @@ Object.freeze({
|
|
|
36244
36323
|
form: "array",
|
|
36245
36324
|
optional: true
|
|
36246
36325
|
}],
|
|
36326
|
+
"pipelineAnalytics.listSummaries": [{
|
|
36327
|
+
name: "deviceIds",
|
|
36328
|
+
form: "array",
|
|
36329
|
+
optional: false
|
|
36330
|
+
}],
|
|
36247
36331
|
"pipelineAnalytics.listTrackMedia": [{
|
|
36248
36332
|
name: "deviceId",
|
|
36249
36333
|
form: "single",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region ../types/dist/event-category-
|
|
1
|
+
//#region ../types/dist/event-category-zAv7pMUz.mjs
|
|
2
2
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
3
3
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4
4
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -370,6 +370,13 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
370
370
|
*/
|
|
371
371
|
EventCategory["BatteryOnStatusChanged"] = "battery.onStatusChanged";
|
|
372
372
|
/**
|
|
373
|
+
* Cap event fired by every device that registers the `network-link`
|
|
374
|
+
* capability. Mirrors the cap definition's `onStatusChanged`. Carries
|
|
375
|
+
* `{ deviceId, status: NetworkLinkStatus }` — a link switch or a signal
|
|
376
|
+
* reading that moved.
|
|
377
|
+
*/
|
|
378
|
+
EventCategory["NetworkLinkOnStatusChanged"] = "network-link.onStatusChanged";
|
|
379
|
+
/**
|
|
373
380
|
* Emitted by the battery cap provider WHEN `wakeForStream` enters the
|
|
374
381
|
* "wake in progress" window — between the Baichuan wake-up issue and
|
|
375
382
|
* the camera's first dialed-back RTP packet. The stream-broker
|
|
@@ -19055,6 +19062,33 @@ var RecentTracksQueryInput = object({
|
|
|
19055
19062
|
*/
|
|
19056
19063
|
classes: array(string()).optional()
|
|
19057
19064
|
});
|
|
19065
|
+
/**
|
|
19066
|
+
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
19067
|
+
* `groupShotKey` is the media key of its group shot (`ownerKind: 'summary'`,
|
|
19068
|
+
* served by the event-media plane by key), null until the first frame with a
|
|
19069
|
+
* member visible has been materialised.
|
|
19070
|
+
*/
|
|
19071
|
+
var SummarySchema = object({
|
|
19072
|
+
id: string(),
|
|
19073
|
+
deviceId: number(),
|
|
19074
|
+
openedAt: number(),
|
|
19075
|
+
lastActiveAt: number(),
|
|
19076
|
+
sealedAt: number().nullable(),
|
|
19077
|
+
memberCount: number().int().nonnegative(),
|
|
19078
|
+
groupShotKey: string().nullable()
|
|
19079
|
+
});
|
|
19080
|
+
var SummariesQueryInput = object({
|
|
19081
|
+
deviceIds: array(number()).min(1),
|
|
19082
|
+
since: number().optional(),
|
|
19083
|
+
until: number().optional(),
|
|
19084
|
+
limit: number().int().min(1).max(200).default(50)
|
|
19085
|
+
});
|
|
19086
|
+
var SummariesPageSchema = object({ summaries: array(SummarySchema).readonly() });
|
|
19087
|
+
var SummaryDetailSchema = object({
|
|
19088
|
+
summary: SummarySchema,
|
|
19089
|
+
/** Member track ids, in absorption order. */
|
|
19090
|
+
trackIds: array(string()).readonly()
|
|
19091
|
+
});
|
|
19058
19092
|
var RecentTracksPageSchema = object({
|
|
19059
19093
|
/** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
|
|
19060
19094
|
tracks: array(TrackSchema).readonly(),
|
|
@@ -19455,7 +19489,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19455
19489
|
* timeline would read as a camera that saw nothing.
|
|
19456
19490
|
*/
|
|
19457
19491
|
classes: array(string()).optional()
|
|
19458
|
-
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
|
|
19492
|
+
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
|
|
19459
19493
|
kind: "mutation",
|
|
19460
19494
|
auth: "admin"
|
|
19461
19495
|
}), 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({
|
|
@@ -23188,6 +23222,39 @@ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, meth
|
|
|
23188
23222
|
deviceId: number(),
|
|
23189
23223
|
status: BatteryStatusSchema
|
|
23190
23224
|
});
|
|
23225
|
+
/**
|
|
23226
|
+
* Network-link snapshot. Same shape for every provider (a Reolink wifi
|
|
23227
|
+
* camera, a Home Assistant device with a signal-strength sensor, a Tapo
|
|
23228
|
+
* plug): one slice under `device.runtimeState['network-link']`, one badge,
|
|
23229
|
+
* one Home Assistant projection.
|
|
23230
|
+
*/
|
|
23231
|
+
var NetworkLinkStatusSchema = object({
|
|
23232
|
+
/** The link the device is on. `'unknown'` = not read yet, not "no link". */
|
|
23233
|
+
type: _enum([
|
|
23234
|
+
"wifi",
|
|
23235
|
+
"ethernet",
|
|
23236
|
+
"cellular",
|
|
23237
|
+
"unknown"
|
|
23238
|
+
]),
|
|
23239
|
+
/**
|
|
23240
|
+
* Link quality, 0..100 inclusive, normalised by the provider from whatever
|
|
23241
|
+
* the firmware reports (bars, RSSI, a vendor scale). **`null` means NOT
|
|
23242
|
+
* KNOWN or NOT APPLICABLE** — a wired link has no signal, and a wireless
|
|
23243
|
+
* one whose reading has not landed must not be drawn at 0 %. Consumers
|
|
23244
|
+
* SKIP a null rather than coerce it.
|
|
23245
|
+
*/
|
|
23246
|
+
signalPercent: number().min(0).max(100).nullable(),
|
|
23247
|
+
/** Raw received signal strength in dBm, when the firmware reports one. */
|
|
23248
|
+
rssiDbm: number().optional(),
|
|
23249
|
+
/** Network name of a wireless link, when the firmware reports it. */
|
|
23250
|
+
ssid: string().optional(),
|
|
23251
|
+
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
23252
|
+
lastUpdated: number()
|
|
23253
|
+
});
|
|
23254
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.Light, DeviceType.Lock, DeviceType.Siren, object({
|
|
23255
|
+
deviceId: number(),
|
|
23256
|
+
status: NetworkLinkStatusSchema
|
|
23257
|
+
});
|
|
23191
23258
|
object({
|
|
23192
23259
|
on: boolean(),
|
|
23193
23260
|
/** Ms epoch of the last transition. 0 if never observed. */
|
|
@@ -32471,6 +32538,12 @@ Object.freeze({
|
|
|
32471
32538
|
addonId: null,
|
|
32472
32539
|
access: "view"
|
|
32473
32540
|
},
|
|
32541
|
+
"pipelineAnalytics.getSummary": {
|
|
32542
|
+
capName: "pipeline-analytics",
|
|
32543
|
+
capScope: "device",
|
|
32544
|
+
addonId: null,
|
|
32545
|
+
access: "view"
|
|
32546
|
+
},
|
|
32474
32547
|
"pipelineAnalytics.getTrack": {
|
|
32475
32548
|
capName: "pipeline-analytics",
|
|
32476
32549
|
capScope: "device",
|
|
@@ -32549,6 +32622,12 @@ Object.freeze({
|
|
|
32549
32622
|
addonId: null,
|
|
32550
32623
|
access: "view"
|
|
32551
32624
|
},
|
|
32625
|
+
"pipelineAnalytics.listSummaries": {
|
|
32626
|
+
capName: "pipeline-analytics",
|
|
32627
|
+
capScope: "device",
|
|
32628
|
+
addonId: null,
|
|
32629
|
+
access: "view"
|
|
32630
|
+
},
|
|
32552
32631
|
"pipelineAnalytics.listTrackMedia": {
|
|
32553
32632
|
capName: "pipeline-analytics",
|
|
32554
32633
|
capScope: "device",
|
|
@@ -36244,6 +36323,11 @@ Object.freeze({
|
|
|
36244
36323
|
form: "array",
|
|
36245
36324
|
optional: true
|
|
36246
36325
|
}],
|
|
36326
|
+
"pipelineAnalytics.listSummaries": [{
|
|
36327
|
+
name: "deviceIds",
|
|
36328
|
+
form: "array",
|
|
36329
|
+
optional: false
|
|
36330
|
+
}],
|
|
36247
36331
|
"pipelineAnalytics.listTrackMedia": [{
|
|
36248
36332
|
name: "deviceId",
|
|
36249
36333
|
form: "single",
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
5
|
+
const require_dist = require("../dist-BoE-0P-g.js");
|
|
6
6
|
let node_crypto = require("node:crypto");
|
|
7
7
|
let node_child_process = require("node:child_process");
|
|
8
8
|
//#region src/ingress/tailscale-cli.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as EventCategory, i as BaseAddon, n as networkAccessCapability } from "../dist-
|
|
1
|
+
import { a as EventCategory, i as BaseAddon, n as networkAccessCapability } from "../dist-BI0_HzJ1.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import { execFile } from "node:child_process";
|
|
4
4
|
import { promisify } from "node:util";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-tailscale",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.70",
|
|
4
4
|
"description": "Tailscale bundle for CamStack — joins the host to a tailnet (client) and exposes the hub via Serve/Funnel (ingress). Multi-entry npm package shipping 2 addons under a single bundle.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|