@camstack/addon-remote-storage 1.1.17 → 1.1.19
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/s3.addon.js +1 -1
- package/dist/s3.addon.mjs +1 -1
- package/dist/sftp.addon.js +1 -1
- package/dist/sftp.addon.mjs +1 -1
- package/dist/{shared-CWESrfMQ.js → shared-0Dh9YQkm.js} +250 -4
- package/dist/{shared-D9Aw9Suk.mjs → shared-DcfuY6nT.mjs} +250 -4
- package/dist/webdav.addon.js +1 -1
- package/dist/webdav.addon.mjs +1 -1
- package/package.json +1 -1
package/dist/s3.addon.js
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_shared = require("./shared-
|
|
5
|
+
const require_shared = require("./shared-0Dh9YQkm.js");
|
|
6
6
|
let node_stream = require("node:stream");
|
|
7
7
|
let _aws_sdk_client_s3 = require("@aws-sdk/client-s3");
|
|
8
8
|
let _aws_sdk_lib_storage = require("@aws-sdk/lib-storage");
|
package/dist/s3.addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as BaseAddon, i as rearmIdleAbort, n as getOptionalBasePath, o as scheduleIdleAbort, s as storageProviderCapability, t as createSessionId } from "./shared-
|
|
1
|
+
import { c as BaseAddon, i as rearmIdleAbort, n as getOptionalBasePath, o as scheduleIdleAbort, s as storageProviderCapability, t as createSessionId } from "./shared-DcfuY6nT.mjs";
|
|
2
2
|
import { PassThrough } from "node:stream";
|
|
3
3
|
import { DeleteObjectCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectsV2Command, PutObjectCommand, S3Client } from "@aws-sdk/client-s3";
|
|
4
4
|
import { Upload } from "@aws-sdk/lib-storage";
|
package/dist/sftp.addon.js
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_shared = require("./shared-
|
|
5
|
+
const require_shared = require("./shared-0Dh9YQkm.js");
|
|
6
6
|
let ssh2 = require("ssh2");
|
|
7
7
|
let node_path = require("node:path");
|
|
8
8
|
node_path = require_shared.__toESM(node_path);
|
package/dist/sftp.addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-
|
|
1
|
+
import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-DcfuY6nT.mjs";
|
|
2
2
|
import { Client } from "ssh2";
|
|
3
3
|
import * as path from "node:path";
|
|
4
4
|
//#region src/providers/sftp/sftp-config-schema.ts
|
|
@@ -4652,7 +4652,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4652
4652
|
return inst;
|
|
4653
4653
|
}
|
|
4654
4654
|
//#endregion
|
|
4655
|
-
//#region ../types/dist/sleep-
|
|
4655
|
+
//#region ../types/dist/sleep-CZDdRBua.mjs
|
|
4656
4656
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4657
4657
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4658
4658
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -7247,7 +7247,16 @@ var DecoderStatsSchema = object({
|
|
|
7247
7247
|
inputFps: number(),
|
|
7248
7248
|
outputFps: number(),
|
|
7249
7249
|
avgDecodeTimeMs: number(),
|
|
7250
|
-
droppedFrames: number()
|
|
7250
|
+
droppedFrames: number(),
|
|
7251
|
+
/**
|
|
7252
|
+
* Pull-mode adaptive-fps telemetry (optional — only pull sessions run the
|
|
7253
|
+
* lag-driven controller; push sessions omit these). `lagMs` is the EWMA of
|
|
7254
|
+
* the decoder's real-time drift (rising = falling behind live); `adaptiveFps`
|
|
7255
|
+
* is the current lag-throttled emit rate (≤ `effectiveFps` ceiling).
|
|
7256
|
+
*/
|
|
7257
|
+
lagMs: number().optional(),
|
|
7258
|
+
effectiveFps: number().optional(),
|
|
7259
|
+
adaptiveFps: number().optional()
|
|
7251
7260
|
});
|
|
7252
7261
|
var DecoderSessionConfigSchema = object({
|
|
7253
7262
|
codec: string(),
|
|
@@ -7288,7 +7297,15 @@ var DecoderSessionConfigSchema = object({
|
|
|
7288
7297
|
* other — `pullFrames` returns nothing for an `'shm'` session and
|
|
7289
7298
|
* `pullHandles` returns nothing for a `'callback'` session.
|
|
7290
7299
|
*/
|
|
7291
|
-
frameSink: _enum(["callback", "shm"]).default("callback")
|
|
7300
|
+
frameSink: _enum(["callback", "shm"]).default("callback"),
|
|
7301
|
+
/**
|
|
7302
|
+
* Per-camera decoder DEBUG facility. When `true`, a pull-mode session emits
|
|
7303
|
+
* a throttled (~1Hz) structured `decoder debug` line (effective/adaptive fps,
|
|
7304
|
+
* real-time lag, dropped-frame delta, avg decode time, hwaccel). Mirrors the
|
|
7305
|
+
* stream-broker's `streamingDebug` gate — off by default so production logs
|
|
7306
|
+
* stay quiet and the emit path pays zero per-frame cost when disabled.
|
|
7307
|
+
*/
|
|
7308
|
+
debug: boolean().optional()
|
|
7292
7309
|
});
|
|
7293
7310
|
var EncodeProfileSchema = object({
|
|
7294
7311
|
video: object({
|
|
@@ -9446,6 +9463,75 @@ DeviceType.Cover, method(object({ deviceId: number().int().nonnegative() }), _vo
|
|
|
9446
9463
|
auth: "admin"
|
|
9447
9464
|
});
|
|
9448
9465
|
/**
|
|
9466
|
+
* Vendor-neutral day/night (IR-cut) control — the per-camera config cap
|
|
9467
|
+
* shared by reolink / hikvision / amcrest. Models the common firmware
|
|
9468
|
+
* surface: the IR-cut switching MODE plus the two knobs that gate it
|
|
9469
|
+
* (photocell `sensitivity` + `switchDelaySec`). Each vendor maps these
|
|
9470
|
+
* onto its own ISAPI / Baichuan / Dahua-CGI fields; the cap standardises
|
|
9471
|
+
* the shape so ONE derived-form renders every camera.
|
|
9472
|
+
*
|
|
9473
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
9474
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
9475
|
+
* injected from `status`) reports the live values, and a single
|
|
9476
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
9477
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
9478
|
+
* routing from this surface.
|
|
9479
|
+
*/
|
|
9480
|
+
/** IR-cut switching mode. `schedule` = time-of-day table configured on the camera. */
|
|
9481
|
+
var DayNightModeSchema = _enum([
|
|
9482
|
+
"auto",
|
|
9483
|
+
"day",
|
|
9484
|
+
"night",
|
|
9485
|
+
"schedule"
|
|
9486
|
+
]);
|
|
9487
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
9488
|
+
* getOptions availability convention. Normalized values are 0–100. */
|
|
9489
|
+
var NormalizedRangeSchema$1 = object({
|
|
9490
|
+
min: number(),
|
|
9491
|
+
max: number(),
|
|
9492
|
+
step: number()
|
|
9493
|
+
});
|
|
9494
|
+
object({
|
|
9495
|
+
mode: DayNightModeSchema,
|
|
9496
|
+
/** IR-cut trigger sensitivity, NORMALIZED 0–100 (higher = switches to night sooner). */
|
|
9497
|
+
sensitivity: number().optional(),
|
|
9498
|
+
/** Delay before the IR-cut filter flips, in seconds. */
|
|
9499
|
+
switchDelaySec: number().optional(),
|
|
9500
|
+
lastFetchedAt: number()
|
|
9501
|
+
});
|
|
9502
|
+
/**
|
|
9503
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
9504
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
9505
|
+
* (normalized 0–100); the mode choice-set as an array. A provider returns
|
|
9506
|
+
* honest, camera-probed values — never hardcoded.
|
|
9507
|
+
*/
|
|
9508
|
+
var DayNightOptionsSchema = object({
|
|
9509
|
+
/** Modes this camera accepts. Empty → the camera has no configurable day/night mode. */
|
|
9510
|
+
modes: array(DayNightModeSchema),
|
|
9511
|
+
supportsSensitivity: boolean(),
|
|
9512
|
+
/** Present when `supportsSensitivity` — the normalized 0–100 range. */
|
|
9513
|
+
sensitivity: NormalizedRangeSchema$1.optional(),
|
|
9514
|
+
supportsSwitchDelay: boolean(),
|
|
9515
|
+
/** Present when `supportsSwitchDelay` — the allowed delay range in seconds. */
|
|
9516
|
+
switchDelaySec: NormalizedRangeSchema$1.optional()
|
|
9517
|
+
});
|
|
9518
|
+
/**
|
|
9519
|
+
* Partial change to the day/night config — every field optional. A
|
|
9520
|
+
* provider ignores fields it does not support.
|
|
9521
|
+
*/
|
|
9522
|
+
var DayNightSettingsPatchSchema = object({
|
|
9523
|
+
mode: DayNightModeSchema.optional(),
|
|
9524
|
+
sensitivity: number().optional(),
|
|
9525
|
+
switchDelaySec: number().optional()
|
|
9526
|
+
});
|
|
9527
|
+
DeviceType.Camera, method(object({ deviceId: number() }), DayNightOptionsSchema), method(object({
|
|
9528
|
+
deviceId: number(),
|
|
9529
|
+
settings: DayNightSettingsPatchSchema
|
|
9530
|
+
}), _void(), {
|
|
9531
|
+
kind: "mutation",
|
|
9532
|
+
auth: "admin"
|
|
9533
|
+
});
|
|
9534
|
+
/**
|
|
9449
9535
|
* Identity envelope for a device's upstream-system metadata.
|
|
9450
9536
|
*
|
|
9451
9537
|
* Two jobs:
|
|
@@ -9801,6 +9887,130 @@ object({
|
|
|
9801
9887
|
});
|
|
9802
9888
|
DeviceType.Image;
|
|
9803
9889
|
/**
|
|
9890
|
+
* Vendor-neutral image / picture-adjustment cap — the per-camera config
|
|
9891
|
+
* cap shared by reolink / hikvision / amcrest. Models the common ISP
|
|
9892
|
+
* surface: the four picture sliders (brightness / contrast / saturation /
|
|
9893
|
+
* sharpness), orientation (mirror / flip / rotate), white-balance,
|
|
9894
|
+
* exposure and backlight-compensation modes.
|
|
9895
|
+
*
|
|
9896
|
+
* NORMALIZATION: every slider is a normalized int 0–100. Vendors expose
|
|
9897
|
+
* these natively as 0–100 or 0–255 (or other ranges); each provider maps
|
|
9898
|
+
* its native range to/from this normalized 0–100 space so the cap surface
|
|
9899
|
+
* (and the derived form) is identical across cameras. `warmth` (manual
|
|
9900
|
+
* white-balance) is likewise normalized 0–100.
|
|
9901
|
+
*
|
|
9902
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
9903
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
9904
|
+
* injected from `status`) reports the live values, and a single
|
|
9905
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
9906
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
9907
|
+
* routing from this surface.
|
|
9908
|
+
*/
|
|
9909
|
+
/** Sensor/image rotation, degrees clockwise. */
|
|
9910
|
+
var ImageRotateSchema = _enum([
|
|
9911
|
+
"0",
|
|
9912
|
+
"90",
|
|
9913
|
+
"180",
|
|
9914
|
+
"270"
|
|
9915
|
+
]);
|
|
9916
|
+
/** White-balance mode. `manual` unlocks the normalized `warmth` knob. */
|
|
9917
|
+
var WhiteBalanceModeSchema = _enum(["auto", "manual"]);
|
|
9918
|
+
/** Exposure mode. */
|
|
9919
|
+
var ExposureModeSchema = _enum(["auto", "manual"]);
|
|
9920
|
+
/**
|
|
9921
|
+
* Backlight-compensation mode:
|
|
9922
|
+
* - `off` — disabled
|
|
9923
|
+
* - `blc` — backlight compensation
|
|
9924
|
+
* - `wdr` — wide dynamic range
|
|
9925
|
+
* - `hlc` — highlight compensation
|
|
9926
|
+
*/
|
|
9927
|
+
var BacklightModeSchema = _enum([
|
|
9928
|
+
"off",
|
|
9929
|
+
"blc",
|
|
9930
|
+
"wdr",
|
|
9931
|
+
"hlc"
|
|
9932
|
+
]);
|
|
9933
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
9934
|
+
* getOptions availability convention. Slider values are normalized 0–100. */
|
|
9935
|
+
var NormalizedRangeSchema = object({
|
|
9936
|
+
min: number(),
|
|
9937
|
+
max: number(),
|
|
9938
|
+
step: number()
|
|
9939
|
+
});
|
|
9940
|
+
object({
|
|
9941
|
+
/** Normalized 0–100. */
|
|
9942
|
+
brightness: number().optional(),
|
|
9943
|
+
/** Normalized 0–100. */
|
|
9944
|
+
contrast: number().optional(),
|
|
9945
|
+
/** Normalized 0–100. */
|
|
9946
|
+
saturation: number().optional(),
|
|
9947
|
+
/** Normalized 0–100. */
|
|
9948
|
+
sharpness: number().optional(),
|
|
9949
|
+
mirror: boolean().optional(),
|
|
9950
|
+
flip: boolean().optional(),
|
|
9951
|
+
rotate: ImageRotateSchema.optional(),
|
|
9952
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
9953
|
+
/** Manual white-balance warmth, NORMALIZED 0–100. Meaningful only when `whiteBalance === 'manual'`. */
|
|
9954
|
+
warmth: number().optional(),
|
|
9955
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
9956
|
+
backlightMode: BacklightModeSchema.optional(),
|
|
9957
|
+
lastFetchedAt: number()
|
|
9958
|
+
});
|
|
9959
|
+
/**
|
|
9960
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
9961
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
9962
|
+
* (the normalized 0–100 range); enums as arrays of supported values (empty
|
|
9963
|
+
* array → control hidden). A provider returns honest, camera-probed values
|
|
9964
|
+
* — never hardcoded.
|
|
9965
|
+
*/
|
|
9966
|
+
var ImageSettingsOptionsSchema = object({
|
|
9967
|
+
supportsBrightness: boolean(),
|
|
9968
|
+
brightness: NormalizedRangeSchema.optional(),
|
|
9969
|
+
supportsContrast: boolean(),
|
|
9970
|
+
contrast: NormalizedRangeSchema.optional(),
|
|
9971
|
+
supportsSaturation: boolean(),
|
|
9972
|
+
saturation: NormalizedRangeSchema.optional(),
|
|
9973
|
+
supportsSharpness: boolean(),
|
|
9974
|
+
sharpness: NormalizedRangeSchema.optional(),
|
|
9975
|
+
supportsMirror: boolean(),
|
|
9976
|
+
supportsFlip: boolean(),
|
|
9977
|
+
/** Supported rotation values. Empty → rotation not configurable. */
|
|
9978
|
+
rotateOptions: array(ImageRotateSchema),
|
|
9979
|
+
/** Supported white-balance modes. Empty → white-balance not configurable. */
|
|
9980
|
+
whiteBalanceModes: array(WhiteBalanceModeSchema),
|
|
9981
|
+
supportsWarmth: boolean(),
|
|
9982
|
+
/** Present when `supportsWarmth` — the normalized 0–100 range. */
|
|
9983
|
+
warmth: NormalizedRangeSchema.optional(),
|
|
9984
|
+
/** Supported exposure modes. Empty → exposure not configurable. */
|
|
9985
|
+
exposureModes: array(ExposureModeSchema),
|
|
9986
|
+
/** Supported backlight modes. Empty → backlight-compensation not configurable. */
|
|
9987
|
+
backlightModes: array(BacklightModeSchema)
|
|
9988
|
+
});
|
|
9989
|
+
/**
|
|
9990
|
+
* Partial change to the image config — every field optional. Slider values
|
|
9991
|
+
* are normalized 0–100. A provider ignores fields it does not support.
|
|
9992
|
+
*/
|
|
9993
|
+
var ImageSettingsPatchSchema = object({
|
|
9994
|
+
brightness: number().optional(),
|
|
9995
|
+
contrast: number().optional(),
|
|
9996
|
+
saturation: number().optional(),
|
|
9997
|
+
sharpness: number().optional(),
|
|
9998
|
+
mirror: boolean().optional(),
|
|
9999
|
+
flip: boolean().optional(),
|
|
10000
|
+
rotate: ImageRotateSchema.optional(),
|
|
10001
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
10002
|
+
warmth: number().optional(),
|
|
10003
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
10004
|
+
backlightMode: BacklightModeSchema.optional()
|
|
10005
|
+
});
|
|
10006
|
+
DeviceType.Camera, method(object({ deviceId: number() }), ImageSettingsOptionsSchema), method(object({
|
|
10007
|
+
deviceId: number(),
|
|
10008
|
+
settings: ImageSettingsPatchSchema
|
|
10009
|
+
}), _void(), {
|
|
10010
|
+
kind: "mutation",
|
|
10011
|
+
auth: "admin"
|
|
10012
|
+
});
|
|
10013
|
+
/**
|
|
9804
10014
|
* Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
|
|
9805
10015
|
* with a mowing lifecycle plus a dock action.
|
|
9806
10016
|
*
|
|
@@ -10695,6 +10905,16 @@ var RunnerCameraConfigSchema = object({
|
|
|
10695
10905
|
* this gate is bypassed.
|
|
10696
10906
|
*/
|
|
10697
10907
|
onboardMotionDrivesAnalyzer: boolean().default(true),
|
|
10908
|
+
/**
|
|
10909
|
+
* Master toggle for the occupancy re-check. When `false` (DEFAULT) the runner
|
|
10910
|
+
* never arms the periodic recheck timer, regardless of `occupancyRecheckSec` —
|
|
10911
|
+
* this is off by default because the recheck re-subscribes a detection session
|
|
10912
|
+
* every N seconds while `watching`, a major source of pull-decoder re-dial
|
|
10913
|
+
* churn (each cycle creates+tears a session → RTSP re-dial → latency). The
|
|
10914
|
+
* `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
|
|
10915
|
+
* (and only render) when this is enabled.
|
|
10916
|
+
*/
|
|
10917
|
+
occupancyRecheckEnabled: boolean().default(false),
|
|
10698
10918
|
occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
|
|
10699
10919
|
occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
|
|
10700
10920
|
/**
|
|
@@ -12991,7 +13211,9 @@ method(object({ codec: string() }), boolean()), method(_void(), object({
|
|
|
12991
13211
|
id: string(),
|
|
12992
13212
|
name: string(),
|
|
12993
13213
|
isPullMode: boolean().optional(),
|
|
12994
|
-
priority: number().optional()
|
|
13214
|
+
priority: number().optional(),
|
|
13215
|
+
hwaccel: string().optional(),
|
|
13216
|
+
probedBestHwaccel: string().optional()
|
|
12995
13217
|
})), method(DecoderSessionConfigSchema, object({
|
|
12996
13218
|
sessionId: string(),
|
|
12997
13219
|
nodeId: string()
|
|
@@ -19028,6 +19250,18 @@ Object.freeze({
|
|
|
19028
19250
|
addonId: null,
|
|
19029
19251
|
access: "view"
|
|
19030
19252
|
},
|
|
19253
|
+
"dayNight.getOptions": {
|
|
19254
|
+
capName: "day-night",
|
|
19255
|
+
capScope: "device",
|
|
19256
|
+
addonId: null,
|
|
19257
|
+
access: "view"
|
|
19258
|
+
},
|
|
19259
|
+
"dayNight.setSettings": {
|
|
19260
|
+
capName: "day-night",
|
|
19261
|
+
capScope: "device",
|
|
19262
|
+
addonId: null,
|
|
19263
|
+
access: "create"
|
|
19264
|
+
},
|
|
19031
19265
|
"decoder.createSession": {
|
|
19032
19266
|
capName: "decoder",
|
|
19033
19267
|
capScope: "system",
|
|
@@ -19958,6 +20192,18 @@ Object.freeze({
|
|
|
19958
20192
|
addonId: null,
|
|
19959
20193
|
access: "create"
|
|
19960
20194
|
},
|
|
20195
|
+
"imageSettings.getOptions": {
|
|
20196
|
+
capName: "image-settings",
|
|
20197
|
+
capScope: "device",
|
|
20198
|
+
addonId: null,
|
|
20199
|
+
access: "view"
|
|
20200
|
+
},
|
|
20201
|
+
"imageSettings.setSettings": {
|
|
20202
|
+
capName: "image-settings",
|
|
20203
|
+
capScope: "device",
|
|
20204
|
+
addonId: null,
|
|
20205
|
+
access: "create"
|
|
20206
|
+
},
|
|
19961
20207
|
"integrations.create": {
|
|
19962
20208
|
capName: "integrations",
|
|
19963
20209
|
capScope: "system",
|
|
@@ -4629,7 +4629,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4629
4629
|
return inst;
|
|
4630
4630
|
}
|
|
4631
4631
|
//#endregion
|
|
4632
|
-
//#region ../types/dist/sleep-
|
|
4632
|
+
//#region ../types/dist/sleep-CZDdRBua.mjs
|
|
4633
4633
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4634
4634
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4635
4635
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -7224,7 +7224,16 @@ var DecoderStatsSchema = object({
|
|
|
7224
7224
|
inputFps: number(),
|
|
7225
7225
|
outputFps: number(),
|
|
7226
7226
|
avgDecodeTimeMs: number(),
|
|
7227
|
-
droppedFrames: number()
|
|
7227
|
+
droppedFrames: number(),
|
|
7228
|
+
/**
|
|
7229
|
+
* Pull-mode adaptive-fps telemetry (optional — only pull sessions run the
|
|
7230
|
+
* lag-driven controller; push sessions omit these). `lagMs` is the EWMA of
|
|
7231
|
+
* the decoder's real-time drift (rising = falling behind live); `adaptiveFps`
|
|
7232
|
+
* is the current lag-throttled emit rate (≤ `effectiveFps` ceiling).
|
|
7233
|
+
*/
|
|
7234
|
+
lagMs: number().optional(),
|
|
7235
|
+
effectiveFps: number().optional(),
|
|
7236
|
+
adaptiveFps: number().optional()
|
|
7228
7237
|
});
|
|
7229
7238
|
var DecoderSessionConfigSchema = object({
|
|
7230
7239
|
codec: string(),
|
|
@@ -7265,7 +7274,15 @@ var DecoderSessionConfigSchema = object({
|
|
|
7265
7274
|
* other — `pullFrames` returns nothing for an `'shm'` session and
|
|
7266
7275
|
* `pullHandles` returns nothing for a `'callback'` session.
|
|
7267
7276
|
*/
|
|
7268
|
-
frameSink: _enum(["callback", "shm"]).default("callback")
|
|
7277
|
+
frameSink: _enum(["callback", "shm"]).default("callback"),
|
|
7278
|
+
/**
|
|
7279
|
+
* Per-camera decoder DEBUG facility. When `true`, a pull-mode session emits
|
|
7280
|
+
* a throttled (~1Hz) structured `decoder debug` line (effective/adaptive fps,
|
|
7281
|
+
* real-time lag, dropped-frame delta, avg decode time, hwaccel). Mirrors the
|
|
7282
|
+
* stream-broker's `streamingDebug` gate — off by default so production logs
|
|
7283
|
+
* stay quiet and the emit path pays zero per-frame cost when disabled.
|
|
7284
|
+
*/
|
|
7285
|
+
debug: boolean().optional()
|
|
7269
7286
|
});
|
|
7270
7287
|
var EncodeProfileSchema = object({
|
|
7271
7288
|
video: object({
|
|
@@ -9423,6 +9440,75 @@ DeviceType.Cover, method(object({ deviceId: number().int().nonnegative() }), _vo
|
|
|
9423
9440
|
auth: "admin"
|
|
9424
9441
|
});
|
|
9425
9442
|
/**
|
|
9443
|
+
* Vendor-neutral day/night (IR-cut) control — the per-camera config cap
|
|
9444
|
+
* shared by reolink / hikvision / amcrest. Models the common firmware
|
|
9445
|
+
* surface: the IR-cut switching MODE plus the two knobs that gate it
|
|
9446
|
+
* (photocell `sensitivity` + `switchDelaySec`). Each vendor maps these
|
|
9447
|
+
* onto its own ISAPI / Baichuan / Dahua-CGI fields; the cap standardises
|
|
9448
|
+
* the shape so ONE derived-form renders every camera.
|
|
9449
|
+
*
|
|
9450
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
9451
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
9452
|
+
* injected from `status`) reports the live values, and a single
|
|
9453
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
9454
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
9455
|
+
* routing from this surface.
|
|
9456
|
+
*/
|
|
9457
|
+
/** IR-cut switching mode. `schedule` = time-of-day table configured on the camera. */
|
|
9458
|
+
var DayNightModeSchema = _enum([
|
|
9459
|
+
"auto",
|
|
9460
|
+
"day",
|
|
9461
|
+
"night",
|
|
9462
|
+
"schedule"
|
|
9463
|
+
]);
|
|
9464
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
9465
|
+
* getOptions availability convention. Normalized values are 0–100. */
|
|
9466
|
+
var NormalizedRangeSchema$1 = object({
|
|
9467
|
+
min: number(),
|
|
9468
|
+
max: number(),
|
|
9469
|
+
step: number()
|
|
9470
|
+
});
|
|
9471
|
+
object({
|
|
9472
|
+
mode: DayNightModeSchema,
|
|
9473
|
+
/** IR-cut trigger sensitivity, NORMALIZED 0–100 (higher = switches to night sooner). */
|
|
9474
|
+
sensitivity: number().optional(),
|
|
9475
|
+
/** Delay before the IR-cut filter flips, in seconds. */
|
|
9476
|
+
switchDelaySec: number().optional(),
|
|
9477
|
+
lastFetchedAt: number()
|
|
9478
|
+
});
|
|
9479
|
+
/**
|
|
9480
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
9481
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
9482
|
+
* (normalized 0–100); the mode choice-set as an array. A provider returns
|
|
9483
|
+
* honest, camera-probed values — never hardcoded.
|
|
9484
|
+
*/
|
|
9485
|
+
var DayNightOptionsSchema = object({
|
|
9486
|
+
/** Modes this camera accepts. Empty → the camera has no configurable day/night mode. */
|
|
9487
|
+
modes: array(DayNightModeSchema),
|
|
9488
|
+
supportsSensitivity: boolean(),
|
|
9489
|
+
/** Present when `supportsSensitivity` — the normalized 0–100 range. */
|
|
9490
|
+
sensitivity: NormalizedRangeSchema$1.optional(),
|
|
9491
|
+
supportsSwitchDelay: boolean(),
|
|
9492
|
+
/** Present when `supportsSwitchDelay` — the allowed delay range in seconds. */
|
|
9493
|
+
switchDelaySec: NormalizedRangeSchema$1.optional()
|
|
9494
|
+
});
|
|
9495
|
+
/**
|
|
9496
|
+
* Partial change to the day/night config — every field optional. A
|
|
9497
|
+
* provider ignores fields it does not support.
|
|
9498
|
+
*/
|
|
9499
|
+
var DayNightSettingsPatchSchema = object({
|
|
9500
|
+
mode: DayNightModeSchema.optional(),
|
|
9501
|
+
sensitivity: number().optional(),
|
|
9502
|
+
switchDelaySec: number().optional()
|
|
9503
|
+
});
|
|
9504
|
+
DeviceType.Camera, method(object({ deviceId: number() }), DayNightOptionsSchema), method(object({
|
|
9505
|
+
deviceId: number(),
|
|
9506
|
+
settings: DayNightSettingsPatchSchema
|
|
9507
|
+
}), _void(), {
|
|
9508
|
+
kind: "mutation",
|
|
9509
|
+
auth: "admin"
|
|
9510
|
+
});
|
|
9511
|
+
/**
|
|
9426
9512
|
* Identity envelope for a device's upstream-system metadata.
|
|
9427
9513
|
*
|
|
9428
9514
|
* Two jobs:
|
|
@@ -9778,6 +9864,130 @@ object({
|
|
|
9778
9864
|
});
|
|
9779
9865
|
DeviceType.Image;
|
|
9780
9866
|
/**
|
|
9867
|
+
* Vendor-neutral image / picture-adjustment cap — the per-camera config
|
|
9868
|
+
* cap shared by reolink / hikvision / amcrest. Models the common ISP
|
|
9869
|
+
* surface: the four picture sliders (brightness / contrast / saturation /
|
|
9870
|
+
* sharpness), orientation (mirror / flip / rotate), white-balance,
|
|
9871
|
+
* exposure and backlight-compensation modes.
|
|
9872
|
+
*
|
|
9873
|
+
* NORMALIZATION: every slider is a normalized int 0–100. Vendors expose
|
|
9874
|
+
* these natively as 0–100 or 0–255 (or other ranges); each provider maps
|
|
9875
|
+
* its native range to/from this normalized 0–100 space so the cap surface
|
|
9876
|
+
* (and the derived form) is identical across cameras. `warmth` (manual
|
|
9877
|
+
* white-balance) is likewise normalized 0–100.
|
|
9878
|
+
*
|
|
9879
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
9880
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
9881
|
+
* injected from `status`) reports the live values, and a single
|
|
9882
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
9883
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
9884
|
+
* routing from this surface.
|
|
9885
|
+
*/
|
|
9886
|
+
/** Sensor/image rotation, degrees clockwise. */
|
|
9887
|
+
var ImageRotateSchema = _enum([
|
|
9888
|
+
"0",
|
|
9889
|
+
"90",
|
|
9890
|
+
"180",
|
|
9891
|
+
"270"
|
|
9892
|
+
]);
|
|
9893
|
+
/** White-balance mode. `manual` unlocks the normalized `warmth` knob. */
|
|
9894
|
+
var WhiteBalanceModeSchema = _enum(["auto", "manual"]);
|
|
9895
|
+
/** Exposure mode. */
|
|
9896
|
+
var ExposureModeSchema = _enum(["auto", "manual"]);
|
|
9897
|
+
/**
|
|
9898
|
+
* Backlight-compensation mode:
|
|
9899
|
+
* - `off` — disabled
|
|
9900
|
+
* - `blc` — backlight compensation
|
|
9901
|
+
* - `wdr` — wide dynamic range
|
|
9902
|
+
* - `hlc` — highlight compensation
|
|
9903
|
+
*/
|
|
9904
|
+
var BacklightModeSchema = _enum([
|
|
9905
|
+
"off",
|
|
9906
|
+
"blc",
|
|
9907
|
+
"wdr",
|
|
9908
|
+
"hlc"
|
|
9909
|
+
]);
|
|
9910
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
9911
|
+
* getOptions availability convention. Slider values are normalized 0–100. */
|
|
9912
|
+
var NormalizedRangeSchema = object({
|
|
9913
|
+
min: number(),
|
|
9914
|
+
max: number(),
|
|
9915
|
+
step: number()
|
|
9916
|
+
});
|
|
9917
|
+
object({
|
|
9918
|
+
/** Normalized 0–100. */
|
|
9919
|
+
brightness: number().optional(),
|
|
9920
|
+
/** Normalized 0–100. */
|
|
9921
|
+
contrast: number().optional(),
|
|
9922
|
+
/** Normalized 0–100. */
|
|
9923
|
+
saturation: number().optional(),
|
|
9924
|
+
/** Normalized 0–100. */
|
|
9925
|
+
sharpness: number().optional(),
|
|
9926
|
+
mirror: boolean().optional(),
|
|
9927
|
+
flip: boolean().optional(),
|
|
9928
|
+
rotate: ImageRotateSchema.optional(),
|
|
9929
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
9930
|
+
/** Manual white-balance warmth, NORMALIZED 0–100. Meaningful only when `whiteBalance === 'manual'`. */
|
|
9931
|
+
warmth: number().optional(),
|
|
9932
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
9933
|
+
backlightMode: BacklightModeSchema.optional(),
|
|
9934
|
+
lastFetchedAt: number()
|
|
9935
|
+
});
|
|
9936
|
+
/**
|
|
9937
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
9938
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
9939
|
+
* (the normalized 0–100 range); enums as arrays of supported values (empty
|
|
9940
|
+
* array → control hidden). A provider returns honest, camera-probed values
|
|
9941
|
+
* — never hardcoded.
|
|
9942
|
+
*/
|
|
9943
|
+
var ImageSettingsOptionsSchema = object({
|
|
9944
|
+
supportsBrightness: boolean(),
|
|
9945
|
+
brightness: NormalizedRangeSchema.optional(),
|
|
9946
|
+
supportsContrast: boolean(),
|
|
9947
|
+
contrast: NormalizedRangeSchema.optional(),
|
|
9948
|
+
supportsSaturation: boolean(),
|
|
9949
|
+
saturation: NormalizedRangeSchema.optional(),
|
|
9950
|
+
supportsSharpness: boolean(),
|
|
9951
|
+
sharpness: NormalizedRangeSchema.optional(),
|
|
9952
|
+
supportsMirror: boolean(),
|
|
9953
|
+
supportsFlip: boolean(),
|
|
9954
|
+
/** Supported rotation values. Empty → rotation not configurable. */
|
|
9955
|
+
rotateOptions: array(ImageRotateSchema),
|
|
9956
|
+
/** Supported white-balance modes. Empty → white-balance not configurable. */
|
|
9957
|
+
whiteBalanceModes: array(WhiteBalanceModeSchema),
|
|
9958
|
+
supportsWarmth: boolean(),
|
|
9959
|
+
/** Present when `supportsWarmth` — the normalized 0–100 range. */
|
|
9960
|
+
warmth: NormalizedRangeSchema.optional(),
|
|
9961
|
+
/** Supported exposure modes. Empty → exposure not configurable. */
|
|
9962
|
+
exposureModes: array(ExposureModeSchema),
|
|
9963
|
+
/** Supported backlight modes. Empty → backlight-compensation not configurable. */
|
|
9964
|
+
backlightModes: array(BacklightModeSchema)
|
|
9965
|
+
});
|
|
9966
|
+
/**
|
|
9967
|
+
* Partial change to the image config — every field optional. Slider values
|
|
9968
|
+
* are normalized 0–100. A provider ignores fields it does not support.
|
|
9969
|
+
*/
|
|
9970
|
+
var ImageSettingsPatchSchema = object({
|
|
9971
|
+
brightness: number().optional(),
|
|
9972
|
+
contrast: number().optional(),
|
|
9973
|
+
saturation: number().optional(),
|
|
9974
|
+
sharpness: number().optional(),
|
|
9975
|
+
mirror: boolean().optional(),
|
|
9976
|
+
flip: boolean().optional(),
|
|
9977
|
+
rotate: ImageRotateSchema.optional(),
|
|
9978
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
9979
|
+
warmth: number().optional(),
|
|
9980
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
9981
|
+
backlightMode: BacklightModeSchema.optional()
|
|
9982
|
+
});
|
|
9983
|
+
DeviceType.Camera, method(object({ deviceId: number() }), ImageSettingsOptionsSchema), method(object({
|
|
9984
|
+
deviceId: number(),
|
|
9985
|
+
settings: ImageSettingsPatchSchema
|
|
9986
|
+
}), _void(), {
|
|
9987
|
+
kind: "mutation",
|
|
9988
|
+
auth: "admin"
|
|
9989
|
+
});
|
|
9990
|
+
/**
|
|
9781
9991
|
* Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
|
|
9782
9992
|
* with a mowing lifecycle plus a dock action.
|
|
9783
9993
|
*
|
|
@@ -10672,6 +10882,16 @@ var RunnerCameraConfigSchema = object({
|
|
|
10672
10882
|
* this gate is bypassed.
|
|
10673
10883
|
*/
|
|
10674
10884
|
onboardMotionDrivesAnalyzer: boolean().default(true),
|
|
10885
|
+
/**
|
|
10886
|
+
* Master toggle for the occupancy re-check. When `false` (DEFAULT) the runner
|
|
10887
|
+
* never arms the periodic recheck timer, regardless of `occupancyRecheckSec` —
|
|
10888
|
+
* this is off by default because the recheck re-subscribes a detection session
|
|
10889
|
+
* every N seconds while `watching`, a major source of pull-decoder re-dial
|
|
10890
|
+
* churn (each cycle creates+tears a session → RTSP re-dial → latency). The
|
|
10891
|
+
* `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
|
|
10892
|
+
* (and only render) when this is enabled.
|
|
10893
|
+
*/
|
|
10894
|
+
occupancyRecheckEnabled: boolean().default(false),
|
|
10675
10895
|
occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
|
|
10676
10896
|
occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
|
|
10677
10897
|
/**
|
|
@@ -12968,7 +13188,9 @@ method(object({ codec: string() }), boolean()), method(_void(), object({
|
|
|
12968
13188
|
id: string(),
|
|
12969
13189
|
name: string(),
|
|
12970
13190
|
isPullMode: boolean().optional(),
|
|
12971
|
-
priority: number().optional()
|
|
13191
|
+
priority: number().optional(),
|
|
13192
|
+
hwaccel: string().optional(),
|
|
13193
|
+
probedBestHwaccel: string().optional()
|
|
12972
13194
|
})), method(DecoderSessionConfigSchema, object({
|
|
12973
13195
|
sessionId: string(),
|
|
12974
13196
|
nodeId: string()
|
|
@@ -19005,6 +19227,18 @@ Object.freeze({
|
|
|
19005
19227
|
addonId: null,
|
|
19006
19228
|
access: "view"
|
|
19007
19229
|
},
|
|
19230
|
+
"dayNight.getOptions": {
|
|
19231
|
+
capName: "day-night",
|
|
19232
|
+
capScope: "device",
|
|
19233
|
+
addonId: null,
|
|
19234
|
+
access: "view"
|
|
19235
|
+
},
|
|
19236
|
+
"dayNight.setSettings": {
|
|
19237
|
+
capName: "day-night",
|
|
19238
|
+
capScope: "device",
|
|
19239
|
+
addonId: null,
|
|
19240
|
+
access: "create"
|
|
19241
|
+
},
|
|
19008
19242
|
"decoder.createSession": {
|
|
19009
19243
|
capName: "decoder",
|
|
19010
19244
|
capScope: "system",
|
|
@@ -19935,6 +20169,18 @@ Object.freeze({
|
|
|
19935
20169
|
addonId: null,
|
|
19936
20170
|
access: "create"
|
|
19937
20171
|
},
|
|
20172
|
+
"imageSettings.getOptions": {
|
|
20173
|
+
capName: "image-settings",
|
|
20174
|
+
capScope: "device",
|
|
20175
|
+
addonId: null,
|
|
20176
|
+
access: "view"
|
|
20177
|
+
},
|
|
20178
|
+
"imageSettings.setSettings": {
|
|
20179
|
+
capName: "image-settings",
|
|
20180
|
+
capScope: "device",
|
|
20181
|
+
addonId: null,
|
|
20182
|
+
access: "create"
|
|
20183
|
+
},
|
|
19938
20184
|
"integrations.create": {
|
|
19939
20185
|
capName: "integrations",
|
|
19940
20186
|
capScope: "system",
|
package/dist/webdav.addon.js
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_shared = require("./shared-
|
|
5
|
+
const require_shared = require("./shared-0Dh9YQkm.js");
|
|
6
6
|
let node_stream = require("node:stream");
|
|
7
7
|
let webdav = require("webdav");
|
|
8
8
|
//#region src/providers/webdav/webdav-config-schema.ts
|
package/dist/webdav.addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-
|
|
1
|
+
import { a as safeJoinRemotePath, c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, r as getRequiredBasePath, s as storageProviderCapability, t as createSessionId } from "./shared-DcfuY6nT.mjs";
|
|
2
2
|
import { PassThrough } from "node:stream";
|
|
3
3
|
import { AuthType, createClient } from "webdav";
|
|
4
4
|
//#region src/providers/webdav/webdav-config-schema.ts
|
package/package.json
CHANGED