@camstack/addon-provider-ecowitt 0.2.152 → 0.2.153
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/CHANGELOG.md +7 -0
- package/dist/addon.js +89 -10
- package/dist/addon.mjs +89 -10
- package/package.json +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.2.153] - 2026-11-01
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Built against the server that now carries the framework itself; requires a matching @camstack/server.
|
|
15
|
+
- Declares the minimum CamStack server it needs; the Addons page shows a held update as requires server >= X
|
|
16
|
+
|
|
10
17
|
## [0.2.152] - 2026-11-01
|
|
11
18
|
|
|
12
19
|
### Changed
|
package/dist/addon.js
CHANGED
|
@@ -5834,7 +5834,7 @@ var ZodIssueCode$1 = {
|
|
|
5834
5834
|
var ZodFirstPartyTypeKind$1;
|
|
5835
5835
|
ZodFirstPartyTypeKind$1 || (ZodFirstPartyTypeKind$1 = {});
|
|
5836
5836
|
//#endregion
|
|
5837
|
-
//#region ../types/dist/sleep-
|
|
5837
|
+
//#region ../types/dist/sleep-CSYuxssh.mjs
|
|
5838
5838
|
/**
|
|
5839
5839
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5840
5840
|
* window to float samples (D455).
|
|
@@ -9164,7 +9164,7 @@ var ProfileRtspEntrySchema = object({
|
|
|
9164
9164
|
/**
|
|
9165
9165
|
* The model weight formats a catalog entry can ship. Schema-free on purpose:
|
|
9166
9166
|
* `types/models.ts` builds Zod schemas from it, but a runner-closure consumer
|
|
9167
|
-
* (the model downloader in `@camstack/system`) needs only the list and must
|
|
9167
|
+
* (the model downloader in `@camstack/server/system`) needs only the list and must
|
|
9168
9168
|
* reach it through `@camstack/types/addon` without building the cap schema
|
|
9169
9169
|
* graph (D28).
|
|
9170
9170
|
*/
|
|
@@ -12553,6 +12553,71 @@ var EventOwnerTypeSchema = _enum(EVENT_OWNER_TYPES);
|
|
|
12553
12553
|
var MediaPresenceOwnerKindSchema = _enum([...EVENT_OWNER_TYPES, "track"]);
|
|
12554
12554
|
new Set(EVENT_OWNER_TYPES);
|
|
12555
12555
|
/**
|
|
12556
|
+
* What a published package needs from the rest of the install (D989).
|
|
12557
|
+
*
|
|
12558
|
+
* One published framework package (`@camstack/server`) carries the kernel, the
|
|
12559
|
+
* builtins and the capability contracts, so "which addon runs on which
|
|
12560
|
+
* framework" is a question of version, and the answer is DECLARED by the
|
|
12561
|
+
* package that knows it:
|
|
12562
|
+
*
|
|
12563
|
+
* - an addon says the oldest server it runs on (`requires.server: ">=X"`);
|
|
12564
|
+
* - the server says the oldest addon it works with
|
|
12565
|
+
* (`requires.addons: { "@camstack/addon-x": ">=Y" }`) and the oldest shell
|
|
12566
|
+
* around it (`requires.wrapper: { desktop, image }`);
|
|
12567
|
+
* - a wrapper (the desktop app, the container starter) says which server
|
|
12568
|
+
* range it can host, and reports its own kind and version.
|
|
12569
|
+
*
|
|
12570
|
+
* The publish workflow STAMPS these after the version bump
|
|
12571
|
+
* (`scripts/ci/stamp-requires.mjs`); nobody types a number by hand.
|
|
12572
|
+
*
|
|
12573
|
+
* A requirement that cannot be checked is NOT met: a shell that reports no
|
|
12574
|
+
* version counts as below the minimum, and an unreadable running version is
|
|
12575
|
+
* named in the result (a failed read is never a pass).
|
|
12576
|
+
*/
|
|
12577
|
+
/** `>=MAJOR.MINOR.PATCH[-prerelease]` — the only range shape a requirement uses. */
|
|
12578
|
+
var MinVersionSchema = string().regex(/^>=\d+\.\d+\.\d+(-[0-9A-Za-z.-]+)?$/, "a minimum is written \">=X.Y.Z\"");
|
|
12579
|
+
object({
|
|
12580
|
+
/** The oldest `@camstack/server` this package runs on. */
|
|
12581
|
+
server: MinVersionSchema.optional(),
|
|
12582
|
+
/** The oldest installed version of each named addon package. */
|
|
12583
|
+
addons: record(string(), MinVersionSchema).optional(),
|
|
12584
|
+
/** The oldest shell around the server, per shell kind. */
|
|
12585
|
+
wrapper: object({
|
|
12586
|
+
desktop: MinVersionSchema.optional(),
|
|
12587
|
+
image: MinVersionSchema.optional()
|
|
12588
|
+
}).optional()
|
|
12589
|
+
});
|
|
12590
|
+
/** One unmet requirement; each names the versions on both sides. */
|
|
12591
|
+
var UnmetRequirementSchema = discriminatedUnion("kind", [
|
|
12592
|
+
object({
|
|
12593
|
+
kind: literal("server-too-old"),
|
|
12594
|
+
required: string(),
|
|
12595
|
+
/** `null` — the running server version could not be read. */
|
|
12596
|
+
running: string().nullable()
|
|
12597
|
+
}),
|
|
12598
|
+
object({
|
|
12599
|
+
kind: literal("addon-too-old"),
|
|
12600
|
+
packageName: string(),
|
|
12601
|
+
required: string(),
|
|
12602
|
+
/** `null` — the addon is not installed (or its version is unreadable). */
|
|
12603
|
+
running: string().nullable()
|
|
12604
|
+
}),
|
|
12605
|
+
object({
|
|
12606
|
+
kind: literal("wrapper-too-old"),
|
|
12607
|
+
wrapper: _enum(["desktop", "image"]),
|
|
12608
|
+
required: string(),
|
|
12609
|
+
/** `null` — the wrapper reported no version. */
|
|
12610
|
+
running: string().nullable()
|
|
12611
|
+
})
|
|
12612
|
+
]);
|
|
12613
|
+
var RequiredAddonUpdateSchema = object({
|
|
12614
|
+
packageName: string(),
|
|
12615
|
+
/** The minimum the target server declares. */
|
|
12616
|
+
required: string(),
|
|
12617
|
+
/** What this node has; `null` when the addon is not installed. */
|
|
12618
|
+
installed: string().nullable()
|
|
12619
|
+
});
|
|
12620
|
+
/**
|
|
12556
12621
|
* Which integration instance a settings form is for. An addon that serves several instances
|
|
12557
12622
|
* (`instanceMode: multiple`) can show a different form per instance — an NVR integration
|
|
12558
12623
|
* needs its connection, the default integration needs the addon's own sections.
|
|
@@ -40827,7 +40892,8 @@ function normalizeUnit(raw) {
|
|
|
40827
40892
|
if (lower === "dbm") return "dBm";
|
|
40828
40893
|
if (lower === "dbfs") return "dBFS";
|
|
40829
40894
|
if (lower === "inhg") return "inHg";
|
|
40830
|
-
if (lower === "mm/h") return "mm/h";
|
|
40895
|
+
if (lower === "mm/h" || lower === "mm/hr") return "mm/h";
|
|
40896
|
+
if (lower === "in/h" || lower === "in/hr") return "in/h";
|
|
40831
40897
|
if (lower === "w/m²" || lower === "w/m2") return "W/m²";
|
|
40832
40898
|
if (lower === "°" || lower === "deg" || lower === "degree" || lower === "degrees") return "°";
|
|
40833
40899
|
if (lower === "kbps") return "kbps";
|
|
@@ -43046,7 +43112,7 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
43046
43112
|
* rebuilds without manual reload.
|
|
43047
43113
|
*
|
|
43048
43114
|
* The hub-local builtin `addon-pages-aggregator` (see
|
|
43049
|
-
* `@camstack/system/builtins/addon-pages-aggregator`) registers the
|
|
43115
|
+
* `@camstack/server/system/builtins/addon-pages-aggregator`) registers the
|
|
43050
43116
|
* provider. Splitting the public aggregator from the raw collection
|
|
43051
43117
|
* keeps both ends in codegen — there's no hand-written
|
|
43052
43118
|
* `addon-pages.router.ts` wrapper anymore.
|
|
@@ -43346,7 +43412,7 @@ method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
|
43346
43412
|
* manual reload — same scheme used by `addon-pages`.
|
|
43347
43413
|
*
|
|
43348
43414
|
* The hub-local builtin `addon-widgets-aggregator` (see
|
|
43349
|
-
* `@camstack/system/builtins/addon-widgets-aggregator`) registers the
|
|
43415
|
+
* `@camstack/server/system/builtins/addon-widgets-aggregator`) registers the
|
|
43350
43416
|
* provider. Splitting the public aggregator from the raw collection
|
|
43351
43417
|
* keeps both ends in codegen — there's no hand-written wrapper.
|
|
43352
43418
|
*/
|
|
@@ -61546,7 +61612,18 @@ var ServerUpdateActionResultSchema = object({
|
|
|
61546
61612
|
* store (D877), present when the pre-flight refused the update
|
|
61547
61613
|
* (`reason: 'addon-would-refuse'`). Optional for version skew.
|
|
61548
61614
|
*/
|
|
61549
|
-
blockers: array(UpdateBlockerSchema).optional()
|
|
61615
|
+
blockers: array(UpdateBlockerSchema).optional(),
|
|
61616
|
+
/**
|
|
61617
|
+
* The minimums the target server declares and this node does not meet
|
|
61618
|
+
* (D989), present when the update was refused with
|
|
61619
|
+
* `reason: 'requirements-unmet'`. Each names the versions on both sides.
|
|
61620
|
+
*/
|
|
61621
|
+
unmet: array(UnmetRequirementSchema).optional(),
|
|
61622
|
+
/**
|
|
61623
|
+
* The addons this node has below the minimum the staged server declares —
|
|
61624
|
+
* the ones to update WITH the server. Present on an accepted update.
|
|
61625
|
+
*/
|
|
61626
|
+
requiredAddonUpdates: array(RequiredAddonUpdateSchema).optional()
|
|
61550
61627
|
});
|
|
61551
61628
|
var LaunchOverridesSchema = object({
|
|
61552
61629
|
/** The persisted heap ceiling in MB, or `null` when none is set. */
|
|
@@ -64090,7 +64167,9 @@ var PackageUpdateSchema = object({
|
|
|
64090
64167
|
latestVersion: string(),
|
|
64091
64168
|
category: _enum(["addon", "core"]),
|
|
64092
64169
|
requiresRestart: boolean(),
|
|
64093
|
-
isSystem: boolean()
|
|
64170
|
+
isSystem: boolean(),
|
|
64171
|
+
/** Held: what the newer version needs and this node does not meet (D989). */
|
|
64172
|
+
blockedBy: array(UnmetRequirementSchema).readonly().optional()
|
|
64094
64173
|
});
|
|
64095
64174
|
var PackageVersionInfoSchema = object({
|
|
64096
64175
|
version: string(),
|
|
@@ -69373,7 +69452,7 @@ var lawnMowerControlCapability = {
|
|
|
69373
69452
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
69374
69453
|
* via the same surface would leak internal topology with no upside.
|
|
69375
69454
|
*
|
|
69376
|
-
* Implementation in `@camstack/system/builtins/local-network/`.
|
|
69455
|
+
* Implementation in `@camstack/server/system/builtins/local-network/`.
|
|
69377
69456
|
*/
|
|
69378
69457
|
/** Coarse classification derived from the interface name + IP range. */
|
|
69379
69458
|
var InterfaceKindEnum = _enum([
|
|
@@ -71261,7 +71340,7 @@ onStatusChanged: { data: object({
|
|
|
71261
71340
|
* jitter, and observed/peak bandwidth per device + per client.
|
|
71262
71341
|
*
|
|
71263
71342
|
* Implementation lives in the server's `NetworkQualityService` (thin
|
|
71264
|
-
* wrapper over the shared `NetworkQualityTracker` from `@camstack/system`).
|
|
71343
|
+
* wrapper over the shared `NetworkQualityTracker` from `@camstack/server/system`).
|
|
71265
71344
|
* The provider is registered from `trpc.router.ts` against the existing
|
|
71266
71345
|
* service instance — no addon owns this state.
|
|
71267
71346
|
*
|
|
@@ -73412,7 +73491,7 @@ var ptzAutotrackCapability = {
|
|
|
73412
73491
|
* - **Native**: the camera's own firmware autotrack, registered per device by
|
|
73413
73492
|
* the driver when the probe says it exists (Reolink: yes; Hikvision:
|
|
73414
73493
|
* model-dependent).
|
|
73415
|
-
* - **Wrapper**: the emulated implementation (`@camstack/system`'s `autotrack` builtin),
|
|
73494
|
+
* - **Wrapper**: the emulated implementation (`@camstack/server/system`'s `autotrack` builtin),
|
|
73416
73495
|
* which follows a subject with `ptz.move` pulses driven by the detection
|
|
73417
73496
|
* pipeline. `defaultActive: false` — the operator binds it per camera in
|
|
73418
73497
|
* the bindings UI.
|
package/dist/addon.mjs
CHANGED
|
@@ -5833,7 +5833,7 @@ var ZodIssueCode$1 = {
|
|
|
5833
5833
|
var ZodFirstPartyTypeKind$1;
|
|
5834
5834
|
ZodFirstPartyTypeKind$1 || (ZodFirstPartyTypeKind$1 = {});
|
|
5835
5835
|
//#endregion
|
|
5836
|
-
//#region ../types/dist/sleep-
|
|
5836
|
+
//#region ../types/dist/sleep-CSYuxssh.mjs
|
|
5837
5837
|
/**
|
|
5838
5838
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5839
5839
|
* window to float samples (D455).
|
|
@@ -9163,7 +9163,7 @@ var ProfileRtspEntrySchema = object({
|
|
|
9163
9163
|
/**
|
|
9164
9164
|
* The model weight formats a catalog entry can ship. Schema-free on purpose:
|
|
9165
9165
|
* `types/models.ts` builds Zod schemas from it, but a runner-closure consumer
|
|
9166
|
-
* (the model downloader in `@camstack/system`) needs only the list and must
|
|
9166
|
+
* (the model downloader in `@camstack/server/system`) needs only the list and must
|
|
9167
9167
|
* reach it through `@camstack/types/addon` without building the cap schema
|
|
9168
9168
|
* graph (D28).
|
|
9169
9169
|
*/
|
|
@@ -12552,6 +12552,71 @@ var EventOwnerTypeSchema = _enum(EVENT_OWNER_TYPES);
|
|
|
12552
12552
|
var MediaPresenceOwnerKindSchema = _enum([...EVENT_OWNER_TYPES, "track"]);
|
|
12553
12553
|
new Set(EVENT_OWNER_TYPES);
|
|
12554
12554
|
/**
|
|
12555
|
+
* What a published package needs from the rest of the install (D989).
|
|
12556
|
+
*
|
|
12557
|
+
* One published framework package (`@camstack/server`) carries the kernel, the
|
|
12558
|
+
* builtins and the capability contracts, so "which addon runs on which
|
|
12559
|
+
* framework" is a question of version, and the answer is DECLARED by the
|
|
12560
|
+
* package that knows it:
|
|
12561
|
+
*
|
|
12562
|
+
* - an addon says the oldest server it runs on (`requires.server: ">=X"`);
|
|
12563
|
+
* - the server says the oldest addon it works with
|
|
12564
|
+
* (`requires.addons: { "@camstack/addon-x": ">=Y" }`) and the oldest shell
|
|
12565
|
+
* around it (`requires.wrapper: { desktop, image }`);
|
|
12566
|
+
* - a wrapper (the desktop app, the container starter) says which server
|
|
12567
|
+
* range it can host, and reports its own kind and version.
|
|
12568
|
+
*
|
|
12569
|
+
* The publish workflow STAMPS these after the version bump
|
|
12570
|
+
* (`scripts/ci/stamp-requires.mjs`); nobody types a number by hand.
|
|
12571
|
+
*
|
|
12572
|
+
* A requirement that cannot be checked is NOT met: a shell that reports no
|
|
12573
|
+
* version counts as below the minimum, and an unreadable running version is
|
|
12574
|
+
* named in the result (a failed read is never a pass).
|
|
12575
|
+
*/
|
|
12576
|
+
/** `>=MAJOR.MINOR.PATCH[-prerelease]` — the only range shape a requirement uses. */
|
|
12577
|
+
var MinVersionSchema = string().regex(/^>=\d+\.\d+\.\d+(-[0-9A-Za-z.-]+)?$/, "a minimum is written \">=X.Y.Z\"");
|
|
12578
|
+
object({
|
|
12579
|
+
/** The oldest `@camstack/server` this package runs on. */
|
|
12580
|
+
server: MinVersionSchema.optional(),
|
|
12581
|
+
/** The oldest installed version of each named addon package. */
|
|
12582
|
+
addons: record(string(), MinVersionSchema).optional(),
|
|
12583
|
+
/** The oldest shell around the server, per shell kind. */
|
|
12584
|
+
wrapper: object({
|
|
12585
|
+
desktop: MinVersionSchema.optional(),
|
|
12586
|
+
image: MinVersionSchema.optional()
|
|
12587
|
+
}).optional()
|
|
12588
|
+
});
|
|
12589
|
+
/** One unmet requirement; each names the versions on both sides. */
|
|
12590
|
+
var UnmetRequirementSchema = discriminatedUnion("kind", [
|
|
12591
|
+
object({
|
|
12592
|
+
kind: literal("server-too-old"),
|
|
12593
|
+
required: string(),
|
|
12594
|
+
/** `null` — the running server version could not be read. */
|
|
12595
|
+
running: string().nullable()
|
|
12596
|
+
}),
|
|
12597
|
+
object({
|
|
12598
|
+
kind: literal("addon-too-old"),
|
|
12599
|
+
packageName: string(),
|
|
12600
|
+
required: string(),
|
|
12601
|
+
/** `null` — the addon is not installed (or its version is unreadable). */
|
|
12602
|
+
running: string().nullable()
|
|
12603
|
+
}),
|
|
12604
|
+
object({
|
|
12605
|
+
kind: literal("wrapper-too-old"),
|
|
12606
|
+
wrapper: _enum(["desktop", "image"]),
|
|
12607
|
+
required: string(),
|
|
12608
|
+
/** `null` — the wrapper reported no version. */
|
|
12609
|
+
running: string().nullable()
|
|
12610
|
+
})
|
|
12611
|
+
]);
|
|
12612
|
+
var RequiredAddonUpdateSchema = object({
|
|
12613
|
+
packageName: string(),
|
|
12614
|
+
/** The minimum the target server declares. */
|
|
12615
|
+
required: string(),
|
|
12616
|
+
/** What this node has; `null` when the addon is not installed. */
|
|
12617
|
+
installed: string().nullable()
|
|
12618
|
+
});
|
|
12619
|
+
/**
|
|
12555
12620
|
* Which integration instance a settings form is for. An addon that serves several instances
|
|
12556
12621
|
* (`instanceMode: multiple`) can show a different form per instance — an NVR integration
|
|
12557
12622
|
* needs its connection, the default integration needs the addon's own sections.
|
|
@@ -40826,7 +40891,8 @@ function normalizeUnit(raw) {
|
|
|
40826
40891
|
if (lower === "dbm") return "dBm";
|
|
40827
40892
|
if (lower === "dbfs") return "dBFS";
|
|
40828
40893
|
if (lower === "inhg") return "inHg";
|
|
40829
|
-
if (lower === "mm/h") return "mm/h";
|
|
40894
|
+
if (lower === "mm/h" || lower === "mm/hr") return "mm/h";
|
|
40895
|
+
if (lower === "in/h" || lower === "in/hr") return "in/h";
|
|
40830
40896
|
if (lower === "w/m²" || lower === "w/m2") return "W/m²";
|
|
40831
40897
|
if (lower === "°" || lower === "deg" || lower === "degree" || lower === "degrees") return "°";
|
|
40832
40898
|
if (lower === "kbps") return "kbps";
|
|
@@ -43045,7 +43111,7 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
43045
43111
|
* rebuilds without manual reload.
|
|
43046
43112
|
*
|
|
43047
43113
|
* The hub-local builtin `addon-pages-aggregator` (see
|
|
43048
|
-
* `@camstack/system/builtins/addon-pages-aggregator`) registers the
|
|
43114
|
+
* `@camstack/server/system/builtins/addon-pages-aggregator`) registers the
|
|
43049
43115
|
* provider. Splitting the public aggregator from the raw collection
|
|
43050
43116
|
* keeps both ends in codegen — there's no hand-written
|
|
43051
43117
|
* `addon-pages.router.ts` wrapper anymore.
|
|
@@ -43345,7 +43411,7 @@ method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
|
43345
43411
|
* manual reload — same scheme used by `addon-pages`.
|
|
43346
43412
|
*
|
|
43347
43413
|
* The hub-local builtin `addon-widgets-aggregator` (see
|
|
43348
|
-
* `@camstack/system/builtins/addon-widgets-aggregator`) registers the
|
|
43414
|
+
* `@camstack/server/system/builtins/addon-widgets-aggregator`) registers the
|
|
43349
43415
|
* provider. Splitting the public aggregator from the raw collection
|
|
43350
43416
|
* keeps both ends in codegen — there's no hand-written wrapper.
|
|
43351
43417
|
*/
|
|
@@ -61545,7 +61611,18 @@ var ServerUpdateActionResultSchema = object({
|
|
|
61545
61611
|
* store (D877), present when the pre-flight refused the update
|
|
61546
61612
|
* (`reason: 'addon-would-refuse'`). Optional for version skew.
|
|
61547
61613
|
*/
|
|
61548
|
-
blockers: array(UpdateBlockerSchema).optional()
|
|
61614
|
+
blockers: array(UpdateBlockerSchema).optional(),
|
|
61615
|
+
/**
|
|
61616
|
+
* The minimums the target server declares and this node does not meet
|
|
61617
|
+
* (D989), present when the update was refused with
|
|
61618
|
+
* `reason: 'requirements-unmet'`. Each names the versions on both sides.
|
|
61619
|
+
*/
|
|
61620
|
+
unmet: array(UnmetRequirementSchema).optional(),
|
|
61621
|
+
/**
|
|
61622
|
+
* The addons this node has below the minimum the staged server declares —
|
|
61623
|
+
* the ones to update WITH the server. Present on an accepted update.
|
|
61624
|
+
*/
|
|
61625
|
+
requiredAddonUpdates: array(RequiredAddonUpdateSchema).optional()
|
|
61549
61626
|
});
|
|
61550
61627
|
var LaunchOverridesSchema = object({
|
|
61551
61628
|
/** The persisted heap ceiling in MB, or `null` when none is set. */
|
|
@@ -64089,7 +64166,9 @@ var PackageUpdateSchema = object({
|
|
|
64089
64166
|
latestVersion: string(),
|
|
64090
64167
|
category: _enum(["addon", "core"]),
|
|
64091
64168
|
requiresRestart: boolean(),
|
|
64092
|
-
isSystem: boolean()
|
|
64169
|
+
isSystem: boolean(),
|
|
64170
|
+
/** Held: what the newer version needs and this node does not meet (D989). */
|
|
64171
|
+
blockedBy: array(UnmetRequirementSchema).readonly().optional()
|
|
64093
64172
|
});
|
|
64094
64173
|
var PackageVersionInfoSchema = object({
|
|
64095
64174
|
version: string(),
|
|
@@ -69372,7 +69451,7 @@ var lawnMowerControlCapability = {
|
|
|
69372
69451
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
69373
69452
|
* via the same surface would leak internal topology with no upside.
|
|
69374
69453
|
*
|
|
69375
|
-
* Implementation in `@camstack/system/builtins/local-network/`.
|
|
69454
|
+
* Implementation in `@camstack/server/system/builtins/local-network/`.
|
|
69376
69455
|
*/
|
|
69377
69456
|
/** Coarse classification derived from the interface name + IP range. */
|
|
69378
69457
|
var InterfaceKindEnum = _enum([
|
|
@@ -71260,7 +71339,7 @@ onStatusChanged: { data: object({
|
|
|
71260
71339
|
* jitter, and observed/peak bandwidth per device + per client.
|
|
71261
71340
|
*
|
|
71262
71341
|
* Implementation lives in the server's `NetworkQualityService` (thin
|
|
71263
|
-
* wrapper over the shared `NetworkQualityTracker` from `@camstack/system`).
|
|
71342
|
+
* wrapper over the shared `NetworkQualityTracker` from `@camstack/server/system`).
|
|
71264
71343
|
* The provider is registered from `trpc.router.ts` against the existing
|
|
71265
71344
|
* service instance — no addon owns this state.
|
|
71266
71345
|
*
|
|
@@ -73411,7 +73490,7 @@ var ptzAutotrackCapability = {
|
|
|
73411
73490
|
* - **Native**: the camera's own firmware autotrack, registered per device by
|
|
73412
73491
|
* the driver when the probe says it exists (Reolink: yes; Hikvision:
|
|
73413
73492
|
* model-dependent).
|
|
73414
|
-
* - **Wrapper**: the emulated implementation (`@camstack/system`'s `autotrack` builtin),
|
|
73493
|
+
* - **Wrapper**: the emulated implementation (`@camstack/server/system`'s `autotrack` builtin),
|
|
73415
73494
|
* which follows a subject with `ptz.move` pulses driven by the detection
|
|
73416
73495
|
* pipeline. `defaultActive: false` — the operator binds it per camera in
|
|
73417
73496
|
* the bindings UI.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-ecowitt",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.153",
|
|
4
4
|
"description": "Ecowitt weather-station device-provider addon for CamStack — wraps the @apocaliss92/nodewitt local-poll / push client",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|
|
@@ -57,7 +57,10 @@
|
|
|
57
57
|
}
|
|
58
58
|
]
|
|
59
59
|
}
|
|
60
|
-
]
|
|
60
|
+
],
|
|
61
|
+
"requires": {
|
|
62
|
+
"server": ">=1.2.719"
|
|
63
|
+
}
|
|
61
64
|
},
|
|
62
65
|
"files": [
|
|
63
66
|
"dist",
|