camstack 1.2.167 → 1.2.168
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.
|
@@ -14522,7 +14522,7 @@ function date4(params) {
|
|
|
14522
14522
|
// ../../node_modules/zod/v4/classic/external.js
|
|
14523
14523
|
config(en_default());
|
|
14524
14524
|
|
|
14525
|
-
// ../types/dist/sleep-
|
|
14525
|
+
// ../types/dist/sleep-B1y0Fo1U.mjs
|
|
14526
14526
|
var AUDIO_CHUNK_FORMATS = [
|
|
14527
14527
|
"f32le",
|
|
14528
14528
|
"pcmu",
|
|
@@ -15384,7 +15384,7 @@ function sleep(ms) {
|
|
|
15384
15384
|
return new Promise((resolve) => setTimeout(resolve, Math.max(0, ms)));
|
|
15385
15385
|
}
|
|
15386
15386
|
|
|
15387
|
-
// ../types/dist/canonical-hash-
|
|
15387
|
+
// ../types/dist/canonical-hash-DBkl8q6V.mjs
|
|
15388
15388
|
import { createHash } from "crypto";
|
|
15389
15389
|
var DEFAULT_MAX_UNIT_BYTES = 16 * 1024 * 1024;
|
|
15390
15390
|
|
|
@@ -38683,14 +38683,36 @@ var privacyMaskCapability = {
|
|
|
38683
38683
|
* whether persisting is worth a SQLite commit. */
|
|
38684
38684
|
volatileStateFields: ["lastFetchedAt"]
|
|
38685
38685
|
};
|
|
38686
|
+
var PtzPresetFunctionSchema = external_exports.enum([
|
|
38687
|
+
"home",
|
|
38688
|
+
"day-mode",
|
|
38689
|
+
"night-mode",
|
|
38690
|
+
"day-night-auto",
|
|
38691
|
+
"set-limits",
|
|
38692
|
+
"save-limits",
|
|
38693
|
+
"reboot",
|
|
38694
|
+
"osd-menu"
|
|
38695
|
+
]);
|
|
38686
38696
|
var PtzPresetSchema = external_exports.object({
|
|
38687
38697
|
id: external_exports.string(),
|
|
38688
|
-
name: external_exports.string()
|
|
38698
|
+
name: external_exports.string(),
|
|
38699
|
+
/**
|
|
38700
|
+
* The firmware function this id performs, when the provider KNOWS the id is
|
|
38701
|
+
* reserved. `null` = an ordinary stored position, OR a reserved id this
|
|
38702
|
+
* provider does not recognise -- the two are told apart by `writable`.
|
|
38703
|
+
*/
|
|
38704
|
+
fn: PtzPresetFunctionSchema.nullable(),
|
|
38705
|
+
/**
|
|
38706
|
+
* Whether `savePreset` / `deletePreset` may target this id. A provider sets
|
|
38707
|
+
* it false only for a band it KNOWS is reserved; where the firmware is not
|
|
38708
|
+
* documented it stays true and a refusal comes from the camera, named.
|
|
38709
|
+
*/
|
|
38710
|
+
writable: external_exports.boolean()
|
|
38689
38711
|
});
|
|
38690
38712
|
var PtzPositionSchema = external_exports.object({
|
|
38691
|
-
pan: external_exports.number(),
|
|
38692
|
-
tilt: external_exports.number(),
|
|
38693
|
-
zoom: external_exports.number()
|
|
38713
|
+
pan: external_exports.number().nullable(),
|
|
38714
|
+
tilt: external_exports.number().nullable(),
|
|
38715
|
+
zoom: external_exports.number().nullable()
|
|
38694
38716
|
});
|
|
38695
38717
|
var PtzMoveCommandSchema = external_exports.object({
|
|
38696
38718
|
pan: external_exports.number().optional(),
|
|
@@ -38708,7 +38730,42 @@ var PtzOptionsSchema = external_exports.object({
|
|
|
38708
38730
|
maxPresets: external_exports.number().optional(),
|
|
38709
38731
|
/** Whether the camera exposes a controllable autofocus toggle
|
|
38710
38732
|
* (boolean `hasX` per the getOptions availability convention). */
|
|
38711
|
-
hasAutofocus: external_exports.boolean()
|
|
38733
|
+
hasAutofocus: external_exports.boolean(),
|
|
38734
|
+
/**
|
|
38735
|
+
* How many distinct speeds this camera's NATIVE scale offers.
|
|
38736
|
+
*
|
|
38737
|
+
* The cap's `speed` is normalized 0..1 and each provider maps it down --
|
|
38738
|
+
* Baichuan 1..63, Dahua 1..8, ISAPI's percentage -100..100. The normalized
|
|
38739
|
+
* value hides how coarse that really is: asking an amcrest for `0.37` is
|
|
38740
|
+
* meaningless, because it has eight steps and three of them round to the
|
|
38741
|
+
* same one. A loop that tunes its own gain has to know the granularity of
|
|
38742
|
+
* the knob it is turning.
|
|
38743
|
+
*
|
|
38744
|
+
* `null` = the driver does not know, or the scale is continuous (ONVIF takes
|
|
38745
|
+
* a float). Never a made-up number.
|
|
38746
|
+
*/
|
|
38747
|
+
speedSteps: external_exports.number().int().positive().nullable(),
|
|
38748
|
+
/**
|
|
38749
|
+
* How long ONE `move` pulse runs on this driver, ms.
|
|
38750
|
+
*
|
|
38751
|
+
* `move` is a self-terminating burst everywhere, but every provider hardcoded
|
|
38752
|
+
* its own duration in private -- 200 reolink, 350 amcrest, 500 hikvision,
|
|
38753
|
+
* 1000 onvif -- so no caller could read it. It is the DENOMINATOR of "how far
|
|
38754
|
+
* did the head travel per pulse": without it a measured displacement has no
|
|
38755
|
+
* gain to be divided into.
|
|
38756
|
+
*
|
|
38757
|
+
* `null` = the driver cannot say.
|
|
38758
|
+
*/
|
|
38759
|
+
moveImpulseMs: external_exports.number().int().positive().nullable()
|
|
38760
|
+
});
|
|
38761
|
+
var PtzHomePresetSchema = external_exports.object({
|
|
38762
|
+
presetId: external_exports.string().nullable(),
|
|
38763
|
+
source: external_exports.enum([
|
|
38764
|
+
"operator",
|
|
38765
|
+
"firmware",
|
|
38766
|
+
"native",
|
|
38767
|
+
"none"
|
|
38768
|
+
])
|
|
38712
38769
|
});
|
|
38713
38770
|
var ptzCapability = {
|
|
38714
38771
|
name: "ptz",
|
|
@@ -38749,7 +38806,25 @@ var ptzCapability = {
|
|
|
38749
38806
|
auth: "admin"
|
|
38750
38807
|
}),
|
|
38751
38808
|
getOptions: method(external_exports.object({ deviceId: external_exports.number() }), PtzOptionsSchema),
|
|
38809
|
+
/**
|
|
38810
|
+
* Move to the camera's configured home preset. THROWS when
|
|
38811
|
+
* `getHomePreset()` resolves to `none` -- a head that did not move must
|
|
38812
|
+
* never look like a head that went home.
|
|
38813
|
+
*/
|
|
38752
38814
|
goHome: method(external_exports.object({ deviceId: external_exports.number() }), external_exports.void(), { kind: "mutation" }),
|
|
38815
|
+
/** Which preset `goHome` targets, and who decided it. */
|
|
38816
|
+
getHomePreset: method(external_exports.object({ deviceId: external_exports.number() }), PtzHomePresetSchema),
|
|
38817
|
+
/**
|
|
38818
|
+
* Pin the home preset for this camera. `null` clears the operator's choice
|
|
38819
|
+
* and falls back to whatever the firmware names, or to `none`.
|
|
38820
|
+
*/
|
|
38821
|
+
setHomePreset: method(external_exports.object({
|
|
38822
|
+
deviceId: external_exports.number(),
|
|
38823
|
+
presetId: external_exports.string().nullable()
|
|
38824
|
+
}), external_exports.void(), {
|
|
38825
|
+
kind: "mutation",
|
|
38826
|
+
auth: "admin"
|
|
38827
|
+
}),
|
|
38753
38828
|
/**
|
|
38754
38829
|
* Pull the current PTZ position. Redundant with the auto-injected
|
|
38755
38830
|
* `getStatus` method (see `status` below); kept for callers that
|
|
@@ -46173,6 +46248,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46173
46248
|
addonId: null,
|
|
46174
46249
|
access: "delete"
|
|
46175
46250
|
},
|
|
46251
|
+
"ptz.getHomePreset": {
|
|
46252
|
+
capName: "ptz",
|
|
46253
|
+
capScope: "device",
|
|
46254
|
+
addonId: null,
|
|
46255
|
+
access: "view"
|
|
46256
|
+
},
|
|
46176
46257
|
"ptz.getOptions": {
|
|
46177
46258
|
capName: "ptz",
|
|
46178
46259
|
capScope: "device",
|
|
@@ -46221,6 +46302,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
46221
46302
|
addonId: null,
|
|
46222
46303
|
access: "create"
|
|
46223
46304
|
},
|
|
46305
|
+
"ptz.setHomePreset": {
|
|
46306
|
+
capName: "ptz",
|
|
46307
|
+
capScope: "device",
|
|
46308
|
+
addonId: null,
|
|
46309
|
+
access: "create"
|
|
46310
|
+
},
|
|
46224
46311
|
"ptz.stop": {
|
|
46225
46312
|
capName: "ptz",
|
|
46226
46313
|
capScope: "device",
|
|
@@ -49394,6 +49481,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
49394
49481
|
form: "single",
|
|
49395
49482
|
optional: false
|
|
49396
49483
|
}],
|
|
49484
|
+
"ptz.getHomePreset": [{
|
|
49485
|
+
name: "deviceId",
|
|
49486
|
+
form: "single",
|
|
49487
|
+
optional: false
|
|
49488
|
+
}],
|
|
49397
49489
|
"ptz.getOptions": [{
|
|
49398
49490
|
name: "deviceId",
|
|
49399
49491
|
form: "single",
|
|
@@ -49434,6 +49526,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
49434
49526
|
form: "single",
|
|
49435
49527
|
optional: false
|
|
49436
49528
|
}],
|
|
49529
|
+
"ptz.setHomePreset": [{
|
|
49530
|
+
name: "deviceId",
|
|
49531
|
+
form: "single",
|
|
49532
|
+
optional: false
|
|
49533
|
+
}],
|
|
49437
49534
|
"ptz.stop": [{
|
|
49438
49535
|
name: "deviceId",
|
|
49439
49536
|
form: "single",
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runDiscover
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-AWHVFK2L.js";
|
|
5
5
|
import "./chunk-LMMQX4CK.js";
|
|
6
6
|
|
|
7
7
|
// src/cli.ts
|
|
@@ -38,7 +38,7 @@ async function runServe(args) {
|
|
|
38
38
|
...typeof values.data === "string" ? { data: values.data } : {}
|
|
39
39
|
};
|
|
40
40
|
Object.assign(process.env, buildServeEnv(opts));
|
|
41
|
-
await import("./launcher-
|
|
41
|
+
await import("./launcher-PSI434KW.js");
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
// src/commands/agent.ts
|
|
@@ -83,7 +83,7 @@ async function runAgent(args) {
|
|
|
83
83
|
...typeof values.port === "string" ? { port: values.port } : {}
|
|
84
84
|
};
|
|
85
85
|
Object.assign(process.env, buildAgentEnv(opts));
|
|
86
|
-
await import("./launcher-
|
|
86
|
+
await import("./launcher-PSI434KW.js");
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
// src/commands/setup.ts
|
|
@@ -1140,7 +1140,7 @@ function isUnknown(_value) {
|
|
|
1140
1140
|
return true;
|
|
1141
1141
|
}
|
|
1142
1142
|
async function resolveServerInteractive(presetNamespace) {
|
|
1143
|
-
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-
|
|
1143
|
+
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-BCCPZRN4.js");
|
|
1144
1144
|
if (presetNamespace) {
|
|
1145
1145
|
const spinner4 = clack.spinner();
|
|
1146
1146
|
spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
|
|
@@ -23742,9 +23742,9 @@ var require_zod = __commonJS({
|
|
|
23742
23742
|
}
|
|
23743
23743
|
});
|
|
23744
23744
|
|
|
23745
|
-
// ../system/dist/dist-
|
|
23746
|
-
var
|
|
23747
|
-
"../system/dist/dist-
|
|
23745
|
+
// ../system/dist/dist-BW7x4kAI.js
|
|
23746
|
+
var require_dist_BW7x4kAI = __commonJS({
|
|
23747
|
+
"../system/dist/dist-BW7x4kAI.js"(exports) {
|
|
23748
23748
|
"use strict";
|
|
23749
23749
|
var zod = require_zod();
|
|
23750
23750
|
var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
|
|
@@ -49358,14 +49358,36 @@ var require_dist_DluLUTzR = __commonJS({
|
|
|
49358
49358
|
* whether persisting is worth a SQLite commit. */
|
|
49359
49359
|
volatileStateFields: ["lastFetchedAt"]
|
|
49360
49360
|
};
|
|
49361
|
+
var PtzPresetFunctionSchema = zod.z.enum([
|
|
49362
|
+
"home",
|
|
49363
|
+
"day-mode",
|
|
49364
|
+
"night-mode",
|
|
49365
|
+
"day-night-auto",
|
|
49366
|
+
"set-limits",
|
|
49367
|
+
"save-limits",
|
|
49368
|
+
"reboot",
|
|
49369
|
+
"osd-menu"
|
|
49370
|
+
]);
|
|
49361
49371
|
var PtzPresetSchema = zod.z.object({
|
|
49362
49372
|
id: zod.z.string(),
|
|
49363
|
-
name: zod.z.string()
|
|
49373
|
+
name: zod.z.string(),
|
|
49374
|
+
/**
|
|
49375
|
+
* The firmware function this id performs, when the provider KNOWS the id is
|
|
49376
|
+
* reserved. `null` = an ordinary stored position, OR a reserved id this
|
|
49377
|
+
* provider does not recognise -- the two are told apart by `writable`.
|
|
49378
|
+
*/
|
|
49379
|
+
fn: PtzPresetFunctionSchema.nullable(),
|
|
49380
|
+
/**
|
|
49381
|
+
* Whether `savePreset` / `deletePreset` may target this id. A provider sets
|
|
49382
|
+
* it false only for a band it KNOWS is reserved; where the firmware is not
|
|
49383
|
+
* documented it stays true and a refusal comes from the camera, named.
|
|
49384
|
+
*/
|
|
49385
|
+
writable: zod.z.boolean()
|
|
49364
49386
|
});
|
|
49365
49387
|
var PtzPositionSchema = zod.z.object({
|
|
49366
|
-
pan: zod.z.number(),
|
|
49367
|
-
tilt: zod.z.number(),
|
|
49368
|
-
zoom: zod.z.number()
|
|
49388
|
+
pan: zod.z.number().nullable(),
|
|
49389
|
+
tilt: zod.z.number().nullable(),
|
|
49390
|
+
zoom: zod.z.number().nullable()
|
|
49369
49391
|
});
|
|
49370
49392
|
var PtzMoveCommandSchema = zod.z.object({
|
|
49371
49393
|
pan: zod.z.number().optional(),
|
|
@@ -49383,7 +49405,42 @@ var require_dist_DluLUTzR = __commonJS({
|
|
|
49383
49405
|
maxPresets: zod.z.number().optional(),
|
|
49384
49406
|
/** Whether the camera exposes a controllable autofocus toggle
|
|
49385
49407
|
* (boolean `hasX` per the getOptions availability convention). */
|
|
49386
|
-
hasAutofocus: zod.z.boolean()
|
|
49408
|
+
hasAutofocus: zod.z.boolean(),
|
|
49409
|
+
/**
|
|
49410
|
+
* How many distinct speeds this camera's NATIVE scale offers.
|
|
49411
|
+
*
|
|
49412
|
+
* The cap's `speed` is normalized 0..1 and each provider maps it down --
|
|
49413
|
+
* Baichuan 1..63, Dahua 1..8, ISAPI's percentage -100..100. The normalized
|
|
49414
|
+
* value hides how coarse that really is: asking an amcrest for `0.37` is
|
|
49415
|
+
* meaningless, because it has eight steps and three of them round to the
|
|
49416
|
+
* same one. A loop that tunes its own gain has to know the granularity of
|
|
49417
|
+
* the knob it is turning.
|
|
49418
|
+
*
|
|
49419
|
+
* `null` = the driver does not know, or the scale is continuous (ONVIF takes
|
|
49420
|
+
* a float). Never a made-up number.
|
|
49421
|
+
*/
|
|
49422
|
+
speedSteps: zod.z.number().int().positive().nullable(),
|
|
49423
|
+
/**
|
|
49424
|
+
* How long ONE `move` pulse runs on this driver, ms.
|
|
49425
|
+
*
|
|
49426
|
+
* `move` is a self-terminating burst everywhere, but every provider hardcoded
|
|
49427
|
+
* its own duration in private -- 200 reolink, 350 amcrest, 500 hikvision,
|
|
49428
|
+
* 1000 onvif -- so no caller could read it. It is the DENOMINATOR of "how far
|
|
49429
|
+
* did the head travel per pulse": without it a measured displacement has no
|
|
49430
|
+
* gain to be divided into.
|
|
49431
|
+
*
|
|
49432
|
+
* `null` = the driver cannot say.
|
|
49433
|
+
*/
|
|
49434
|
+
moveImpulseMs: zod.z.number().int().positive().nullable()
|
|
49435
|
+
});
|
|
49436
|
+
var PtzHomePresetSchema = zod.z.object({
|
|
49437
|
+
presetId: zod.z.string().nullable(),
|
|
49438
|
+
source: zod.z.enum([
|
|
49439
|
+
"operator",
|
|
49440
|
+
"firmware",
|
|
49441
|
+
"native",
|
|
49442
|
+
"none"
|
|
49443
|
+
])
|
|
49387
49444
|
});
|
|
49388
49445
|
var ptzCapability = {
|
|
49389
49446
|
name: "ptz",
|
|
@@ -49424,7 +49481,25 @@ var require_dist_DluLUTzR = __commonJS({
|
|
|
49424
49481
|
auth: "admin"
|
|
49425
49482
|
}),
|
|
49426
49483
|
getOptions: method(zod.z.object({ deviceId: zod.z.number() }), PtzOptionsSchema),
|
|
49484
|
+
/**
|
|
49485
|
+
* Move to the camera's configured home preset. THROWS when
|
|
49486
|
+
* `getHomePreset()` resolves to `none` -- a head that did not move must
|
|
49487
|
+
* never look like a head that went home.
|
|
49488
|
+
*/
|
|
49427
49489
|
goHome: method(zod.z.object({ deviceId: zod.z.number() }), zod.z.void(), { kind: "mutation" }),
|
|
49490
|
+
/** Which preset `goHome` targets, and who decided it. */
|
|
49491
|
+
getHomePreset: method(zod.z.object({ deviceId: zod.z.number() }), PtzHomePresetSchema),
|
|
49492
|
+
/**
|
|
49493
|
+
* Pin the home preset for this camera. `null` clears the operator's choice
|
|
49494
|
+
* and falls back to whatever the firmware names, or to `none`.
|
|
49495
|
+
*/
|
|
49496
|
+
setHomePreset: method(zod.z.object({
|
|
49497
|
+
deviceId: zod.z.number(),
|
|
49498
|
+
presetId: zod.z.string().nullable()
|
|
49499
|
+
}), zod.z.void(), {
|
|
49500
|
+
kind: "mutation",
|
|
49501
|
+
auth: "admin"
|
|
49502
|
+
}),
|
|
49428
49503
|
/**
|
|
49429
49504
|
* Pull the current PTZ position. Redundant with the auto-injected
|
|
49430
49505
|
* `getStatus` method (see `status` below); kept for callers that
|
|
@@ -57678,6 +57753,12 @@ var require_dist_DluLUTzR = __commonJS({
|
|
|
57678
57753
|
addonId: null,
|
|
57679
57754
|
access: "delete"
|
|
57680
57755
|
},
|
|
57756
|
+
"ptz.getHomePreset": {
|
|
57757
|
+
capName: "ptz",
|
|
57758
|
+
capScope: "device",
|
|
57759
|
+
addonId: null,
|
|
57760
|
+
access: "view"
|
|
57761
|
+
},
|
|
57681
57762
|
"ptz.getOptions": {
|
|
57682
57763
|
capName: "ptz",
|
|
57683
57764
|
capScope: "device",
|
|
@@ -57726,6 +57807,12 @@ var require_dist_DluLUTzR = __commonJS({
|
|
|
57726
57807
|
addonId: null,
|
|
57727
57808
|
access: "create"
|
|
57728
57809
|
},
|
|
57810
|
+
"ptz.setHomePreset": {
|
|
57811
|
+
capName: "ptz",
|
|
57812
|
+
capScope: "device",
|
|
57813
|
+
addonId: null,
|
|
57814
|
+
access: "create"
|
|
57815
|
+
},
|
|
57729
57816
|
"ptz.stop": {
|
|
57730
57817
|
capName: "ptz",
|
|
57731
57818
|
capScope: "device",
|
|
@@ -60899,6 +60986,11 @@ var require_dist_DluLUTzR = __commonJS({
|
|
|
60899
60986
|
form: "single",
|
|
60900
60987
|
optional: false
|
|
60901
60988
|
}],
|
|
60989
|
+
"ptz.getHomePreset": [{
|
|
60990
|
+
name: "deviceId",
|
|
60991
|
+
form: "single",
|
|
60992
|
+
optional: false
|
|
60993
|
+
}],
|
|
60902
60994
|
"ptz.getOptions": [{
|
|
60903
60995
|
name: "deviceId",
|
|
60904
60996
|
form: "single",
|
|
@@ -60939,6 +61031,11 @@ var require_dist_DluLUTzR = __commonJS({
|
|
|
60939
61031
|
form: "single",
|
|
60940
61032
|
optional: false
|
|
60941
61033
|
}],
|
|
61034
|
+
"ptz.setHomePreset": [{
|
|
61035
|
+
name: "deviceId",
|
|
61036
|
+
form: "single",
|
|
61037
|
+
optional: false
|
|
61038
|
+
}],
|
|
60942
61039
|
"ptz.stop": [{
|
|
60943
61040
|
name: "deviceId",
|
|
60944
61041
|
form: "single",
|
|
@@ -62966,7 +63063,7 @@ var require_alerts_addon = __commonJS({
|
|
|
62966
63063
|
[Symbol.toStringTag]: { value: "Module" }
|
|
62967
63064
|
});
|
|
62968
63065
|
require_chunk_Cek0wNdY();
|
|
62969
|
-
var require_dist10 =
|
|
63066
|
+
var require_dist10 = require_dist_BW7x4kAI();
|
|
62970
63067
|
function selectExpired(alerts, cutoffMs) {
|
|
62971
63068
|
return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
|
|
62972
63069
|
}
|
|
@@ -63785,7 +63882,7 @@ var require_console_logging = __commonJS({
|
|
|
63785
63882
|
[Symbol.toStringTag]: { value: "Module" }
|
|
63786
63883
|
});
|
|
63787
63884
|
require_chunk_Cek0wNdY();
|
|
63788
|
-
var require_dist10 =
|
|
63885
|
+
var require_dist10 = require_dist_BW7x4kAI();
|
|
63789
63886
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
63790
63887
|
var LEVEL_RANK = {
|
|
63791
63888
|
debug: 0,
|
|
@@ -63879,7 +63976,7 @@ var require_core_blocks_addon = __commonJS({
|
|
|
63879
63976
|
"use strict";
|
|
63880
63977
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
63881
63978
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
63882
|
-
var require_dist10 =
|
|
63979
|
+
var require_dist10 = require_dist_BW7x4kAI();
|
|
63883
63980
|
var node_crypto = __require("crypto");
|
|
63884
63981
|
var node_fs_promises = __require("fs/promises");
|
|
63885
63982
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -64776,11 +64873,11 @@ var require_core_blocks = __commonJS({
|
|
|
64776
64873
|
}
|
|
64777
64874
|
});
|
|
64778
64875
|
|
|
64779
|
-
// ../system/dist/retired-settings-keys-
|
|
64780
|
-
var
|
|
64781
|
-
"../system/dist/retired-settings-keys-
|
|
64876
|
+
// ../system/dist/retired-settings-keys-CeaYCDU4.js
|
|
64877
|
+
var require_retired_settings_keys_CeaYCDU4 = __commonJS({
|
|
64878
|
+
"../system/dist/retired-settings-keys-CeaYCDU4.js"(exports) {
|
|
64782
64879
|
"use strict";
|
|
64783
|
-
var require_dist10 =
|
|
64880
|
+
var require_dist10 = require_dist_BW7x4kAI();
|
|
64784
64881
|
function settingsStoreIsAuthoritativeHere(env) {
|
|
64785
64882
|
const raw = (env["CAMSTACK_ROLE"] ?? "").trim().toLowerCase();
|
|
64786
64883
|
return raw === "" || raw === "hub";
|
|
@@ -65060,9 +65157,9 @@ var require_retired_settings_keys_VcrnwKN0 = __commonJS({
|
|
|
65060
65157
|
}
|
|
65061
65158
|
});
|
|
65062
65159
|
|
|
65063
|
-
// ../types/dist/canonical-hash-
|
|
65064
|
-
var
|
|
65065
|
-
"../types/dist/canonical-hash-
|
|
65160
|
+
// ../types/dist/canonical-hash-CZ2JqJc3.js
|
|
65161
|
+
var require_canonical_hash_CZ2JqJc3 = __commonJS({
|
|
65162
|
+
"../types/dist/canonical-hash-CZ2JqJc3.js"(exports) {
|
|
65066
65163
|
"use strict";
|
|
65067
65164
|
var node_crypto = __require("crypto");
|
|
65068
65165
|
var AUDIO_ENCODER_BY_CODEC = {
|
|
@@ -65114,7 +65211,27 @@ var require_canonical_hash_9lydiEzx = __commonJS({
|
|
|
65114
65211
|
args.push("-i", input.url);
|
|
65115
65212
|
return args;
|
|
65116
65213
|
}
|
|
65117
|
-
function
|
|
65214
|
+
function resolveStreamMaps(selection) {
|
|
65215
|
+
const graph = selection.filterGraph;
|
|
65216
|
+
if (graph) return {
|
|
65217
|
+
video: `[${graph.videoOutLabel}]`,
|
|
65218
|
+
audio: graph.audioOutLabel ? `[${graph.audioOutLabel}]` : "0:a:0?"
|
|
65219
|
+
};
|
|
65220
|
+
if (selection.extraInputs?.length) return {
|
|
65221
|
+
video: "0:v:0",
|
|
65222
|
+
audio: "0:a:0?"
|
|
65223
|
+
};
|
|
65224
|
+
return {
|
|
65225
|
+
video: null,
|
|
65226
|
+
audio: null
|
|
65227
|
+
};
|
|
65228
|
+
}
|
|
65229
|
+
function buildVideoFilterArgs(scale, outputArgs, filterGraph) {
|
|
65230
|
+
if (filterGraph) {
|
|
65231
|
+
if (scale) throw new Error("FfmpegInvocation: video.scale cannot be combined with a filter graph \u2014 scale inside the graph instead (the -vf would feed an output the graph already feeds)");
|
|
65232
|
+
if (outputArgs.some((a) => a === "-vf")) throw new Error("FfmpegInvocation: outputArgs carries a -vf while a filter graph feeds the same output \u2014 fold the filter into the graph");
|
|
65233
|
+
return [];
|
|
65234
|
+
}
|
|
65118
65235
|
if (!scale) return [];
|
|
65119
65236
|
if (outputArgs.some((a) => a === "-vf")) return [];
|
|
65120
65237
|
if (scale.mode === "exact") return ["-vf", `scale=${scale.width}:${scale.height}`];
|
|
@@ -65136,14 +65253,17 @@ var require_canonical_hash_9lydiEzx = __commonJS({
|
|
|
65136
65253
|
`${bufsize}k`
|
|
65137
65254
|
];
|
|
65138
65255
|
}
|
|
65139
|
-
function buildVideoArgs(video, outputArgs) {
|
|
65140
|
-
if (video.kind === "copy")
|
|
65141
|
-
"
|
|
65142
|
-
|
|
65143
|
-
|
|
65144
|
-
|
|
65256
|
+
function buildVideoArgs(video, outputArgs, filterGraph) {
|
|
65257
|
+
if (video.kind === "copy") {
|
|
65258
|
+
if (filterGraph) throw new Error("FfmpegInvocation: a filter graph produces a NEW picture, so video.kind must be `encode`");
|
|
65259
|
+
return [
|
|
65260
|
+
"-c:v",
|
|
65261
|
+
"copy",
|
|
65262
|
+
...video.bitstreamFilter ? ["-bsf:v", video.bitstreamFilter] : []
|
|
65263
|
+
];
|
|
65264
|
+
}
|
|
65145
65265
|
const args = [
|
|
65146
|
-
...buildVideoFilterArgs(video.scale, outputArgs),
|
|
65266
|
+
...buildVideoFilterArgs(video.scale, outputArgs, filterGraph),
|
|
65147
65267
|
"-c:v",
|
|
65148
65268
|
video.encoder
|
|
65149
65269
|
];
|
|
@@ -65234,14 +65354,23 @@ var require_canonical_hash_9lydiEzx = __commonJS({
|
|
|
65234
65354
|
];
|
|
65235
65355
|
}
|
|
65236
65356
|
function buildFfmpegArgs(inv) {
|
|
65237
|
-
const
|
|
65357
|
+
const graph = inv.filterGraph ?? null;
|
|
65358
|
+
const head = [
|
|
65359
|
+
...logBannerArgs(inv.logLevel),
|
|
65360
|
+
...buildInputArgs(inv.input, inv.decodeHwAccel),
|
|
65361
|
+
...(inv.extraInputs ?? []).flatMap((extra) => buildInputArgs(extra, inv.decodeHwAccel)),
|
|
65362
|
+
...graph ? ["-filter_complex", graph.graph] : []
|
|
65363
|
+
];
|
|
65238
65364
|
const threadArgs = inv.threadCount > 0 ? ["-threads", String(inv.threadCount)] : [];
|
|
65365
|
+
const maps = resolveStreamMaps(inv);
|
|
65366
|
+
const videoMapArgs = maps.video ? ["-map", maps.video] : [];
|
|
65367
|
+
const audioMapArgs = maps.audio ? ["-map", maps.audio] : [];
|
|
65239
65368
|
if (inv.sink.kind === "rtp-outputs") {
|
|
65240
65369
|
const videoLeg = inv.sink.video ? [
|
|
65241
65370
|
"-an",
|
|
65242
65371
|
"-map",
|
|
65243
|
-
"0:v:0",
|
|
65244
|
-
...buildVideoArgs(inv.video, inv.outputArgs),
|
|
65372
|
+
maps.video ?? "0:v:0",
|
|
65373
|
+
...buildVideoArgs(inv.video, inv.outputArgs, graph),
|
|
65245
65374
|
...threadArgs,
|
|
65246
65375
|
...inv.outputArgs,
|
|
65247
65376
|
...buildRtpOutputArgs(inv.sink.video)
|
|
@@ -65249,7 +65378,7 @@ var require_canonical_hash_9lydiEzx = __commonJS({
|
|
|
65249
65378
|
const audioLeg = inv.sink.audio ? [
|
|
65250
65379
|
"-vn",
|
|
65251
65380
|
"-map",
|
|
65252
|
-
"0:a:0?",
|
|
65381
|
+
maps.audio ?? "0:a:0?",
|
|
65253
65382
|
...buildAudioArgs(inv.audio),
|
|
65254
65383
|
...buildRtpOutputArgs(inv.sink.audio)
|
|
65255
65384
|
] : [];
|
|
@@ -65259,15 +65388,17 @@ var require_canonical_hash_9lydiEzx = __commonJS({
|
|
|
65259
65388
|
...audioLeg
|
|
65260
65389
|
];
|
|
65261
65390
|
}
|
|
65391
|
+
const mutedAudio = isElementaryVideoSink(inv.sink) || inv.audio.kind === "none";
|
|
65262
65392
|
const audioArgs = isElementaryVideoSink(inv.sink) ? ["-an"] : buildAudioArgs(inv.audio);
|
|
65263
|
-
const sinkArgs = buildStdoutOrRtspSinkArgs(inv.sink);
|
|
65264
65393
|
return [
|
|
65265
65394
|
...head,
|
|
65266
|
-
...
|
|
65395
|
+
...videoMapArgs,
|
|
65396
|
+
...buildVideoArgs(inv.video, inv.outputArgs, graph),
|
|
65267
65397
|
...threadArgs,
|
|
65398
|
+
...mutedAudio ? [] : audioMapArgs,
|
|
65268
65399
|
...audioArgs,
|
|
65269
65400
|
...inv.outputArgs,
|
|
65270
|
-
...
|
|
65401
|
+
...buildStdoutOrRtspSinkArgs(inv.sink),
|
|
65271
65402
|
...inv.audioSidecar ? buildAudioSidecarArgs(inv.audioSidecar) : []
|
|
65272
65403
|
];
|
|
65273
65404
|
}
|
|
@@ -65618,6 +65749,12 @@ var require_canonical_hash_9lydiEzx = __commonJS({
|
|
|
65618
65749
|
return pickVideoEncoder;
|
|
65619
65750
|
}
|
|
65620
65751
|
});
|
|
65752
|
+
Object.defineProperty(exports, "resolveStreamMaps", {
|
|
65753
|
+
enumerable: true,
|
|
65754
|
+
get: function() {
|
|
65755
|
+
return resolveStreamMaps;
|
|
65756
|
+
}
|
|
65757
|
+
});
|
|
65621
65758
|
}
|
|
65622
65759
|
});
|
|
65623
65760
|
|
|
@@ -65664,7 +65801,7 @@ var require_node = __commonJS({
|
|
|
65664
65801
|
value: mod,
|
|
65665
65802
|
enumerable: true
|
|
65666
65803
|
}) : target, mod));
|
|
65667
|
-
var require_canonical_hash =
|
|
65804
|
+
var require_canonical_hash = require_canonical_hash_CZ2JqJc3();
|
|
65668
65805
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
65669
65806
|
var node_crypto = __require("crypto");
|
|
65670
65807
|
var node_fs = __require("fs");
|
|
@@ -67017,8 +67154,8 @@ var require_device_manager_addon = __commonJS({
|
|
|
67017
67154
|
[Symbol.toStringTag]: { value: "Module" }
|
|
67018
67155
|
});
|
|
67019
67156
|
require_chunk_Cek0wNdY();
|
|
67020
|
-
var require_dist10 =
|
|
67021
|
-
var require_retired_settings_keys =
|
|
67157
|
+
var require_dist10 = require_dist_BW7x4kAI();
|
|
67158
|
+
var require_retired_settings_keys = require_retired_settings_keys_CeaYCDU4();
|
|
67022
67159
|
var node_crypto = __require("crypto");
|
|
67023
67160
|
var _camstack_types_node = require_node();
|
|
67024
67161
|
var JOB_HISTORY = 20;
|
|
@@ -73026,7 +73163,7 @@ var require_hub_forwarder = __commonJS({
|
|
|
73026
73163
|
[Symbol.toStringTag]: { value: "Module" }
|
|
73027
73164
|
});
|
|
73028
73165
|
require_chunk_Cek0wNdY();
|
|
73029
|
-
var require_dist10 =
|
|
73166
|
+
var require_dist10 = require_dist_BW7x4kAI();
|
|
73030
73167
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
73031
73168
|
var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
|
|
73032
73169
|
var HubForwarderDestination = class {
|
|
@@ -73163,7 +73300,7 @@ var require_liveness_monitor_addon = __commonJS({
|
|
|
73163
73300
|
"use strict";
|
|
73164
73301
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
73165
73302
|
require_chunk_Cek0wNdY();
|
|
73166
|
-
var require_dist10 =
|
|
73303
|
+
var require_dist10 = require_dist_BW7x4kAI();
|
|
73167
73304
|
var NO_DEVICES = "liveness:no-devices";
|
|
73168
73305
|
var ALL_OFFLINE = "liveness:all-devices-offline";
|
|
73169
73306
|
var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
|
|
@@ -73359,7 +73496,7 @@ var require_local_auth_addon = __commonJS({
|
|
|
73359
73496
|
[Symbol.toStringTag]: { value: "Module" }
|
|
73360
73497
|
});
|
|
73361
73498
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
73362
|
-
var require_dist10 =
|
|
73499
|
+
var require_dist10 = require_dist_BW7x4kAI();
|
|
73363
73500
|
var node_crypto = __require("crypto");
|
|
73364
73501
|
node_crypto = require_chunk.__toESM(node_crypto);
|
|
73365
73502
|
var crypto$1 = __require("crypto");
|
|
@@ -81172,7 +81309,7 @@ var require_loki_logging = __commonJS({
|
|
|
81172
81309
|
[Symbol.toStringTag]: { value: "Module" }
|
|
81173
81310
|
});
|
|
81174
81311
|
require_chunk_Cek0wNdY();
|
|
81175
|
-
var require_dist10 =
|
|
81312
|
+
var require_dist10 = require_dist_BW7x4kAI();
|
|
81176
81313
|
function sanitizeLabelName(raw) {
|
|
81177
81314
|
const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
|
|
81178
81315
|
return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
|
|
@@ -81759,7 +81896,7 @@ var require_native_metrics_addon = __commonJS({
|
|
|
81759
81896
|
[Symbol.toStringTag]: { value: "Module" }
|
|
81760
81897
|
});
|
|
81761
81898
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
81762
|
-
var require_dist10 =
|
|
81899
|
+
var require_dist10 = require_dist_BW7x4kAI();
|
|
81763
81900
|
var node_fs_promises = __require("fs/promises");
|
|
81764
81901
|
var node_fs = __require("fs");
|
|
81765
81902
|
node_fs = require_chunk.__toESM(node_fs);
|
|
@@ -84512,7 +84649,7 @@ var require_filesystem_storage_addon = __commonJS({
|
|
|
84512
84649
|
[Symbol.toStringTag]: { value: "Module" }
|
|
84513
84650
|
});
|
|
84514
84651
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
84515
|
-
var require_dist10 =
|
|
84652
|
+
var require_dist10 = require_dist_BW7x4kAI();
|
|
84516
84653
|
var node_crypto = __require("crypto");
|
|
84517
84654
|
var node_fs_promises = __require("fs/promises");
|
|
84518
84655
|
var node_path = __require("path");
|
|
@@ -85739,8 +85876,8 @@ var require_sqlite_settings_addon = __commonJS({
|
|
|
85739
85876
|
[Symbol.toStringTag]: { value: "Module" }
|
|
85740
85877
|
});
|
|
85741
85878
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
85742
|
-
var require_dist10 =
|
|
85743
|
-
var require_retired_settings_keys =
|
|
85879
|
+
var require_dist10 = require_dist_BW7x4kAI();
|
|
85880
|
+
var require_retired_settings_keys = require_retired_settings_keys_CeaYCDU4();
|
|
85744
85881
|
var require_wal_checkpoint_policy = require_wal_checkpoint_policy_CCJZngds();
|
|
85745
85882
|
var node_crypto = __require("crypto");
|
|
85746
85883
|
var node_path = __require("path");
|
|
@@ -88527,7 +88664,7 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
88527
88664
|
[Symbol.toStringTag]: { value: "Module" }
|
|
88528
88665
|
});
|
|
88529
88666
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
88530
|
-
var require_dist10 =
|
|
88667
|
+
var require_dist10 = require_dist_BW7x4kAI();
|
|
88531
88668
|
var require_hub_cap_forward = require_hub_cap_forward_DmHNjbB0();
|
|
88532
88669
|
var zod = require_zod();
|
|
88533
88670
|
var node_crypto = __require("crypto");
|
|
@@ -92254,7 +92391,7 @@ var require_system_config_addon = __commonJS({
|
|
|
92254
92391
|
[Symbol.toStringTag]: { value: "Module" }
|
|
92255
92392
|
});
|
|
92256
92393
|
require_chunk_Cek0wNdY();
|
|
92257
|
-
var require_dist10 =
|
|
92394
|
+
var require_dist10 = require_dist_BW7x4kAI();
|
|
92258
92395
|
var SECTION_TITLES = {
|
|
92259
92396
|
server: "Server",
|
|
92260
92397
|
auth: "Authentication"
|
|
@@ -110315,7 +110452,7 @@ var require_winston_logging = __commonJS({
|
|
|
110315
110452
|
[Symbol.toStringTag]: { value: "Module" }
|
|
110316
110453
|
});
|
|
110317
110454
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
110318
|
-
var require_dist10 =
|
|
110455
|
+
var require_dist10 = require_dist_BW7x4kAI();
|
|
110319
110456
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
110320
110457
|
var node_path = __require("path");
|
|
110321
110458
|
node_path = require_chunk.__toESM(node_path);
|
|
@@ -112353,9 +112490,9 @@ var require_event_category_BVfsrBYA = __commonJS({
|
|
|
112353
112490
|
}
|
|
112354
112491
|
});
|
|
112355
112492
|
|
|
112356
|
-
// ../types/dist/sleep-
|
|
112357
|
-
var
|
|
112358
|
-
"../types/dist/sleep-
|
|
112493
|
+
// ../types/dist/sleep-BAAUFDCk.js
|
|
112494
|
+
var require_sleep_BAAUFDCk = __commonJS({
|
|
112495
|
+
"../types/dist/sleep-BAAUFDCk.js"(exports) {
|
|
112359
112496
|
"use strict";
|
|
112360
112497
|
var require_event_category = require_event_category_BVfsrBYA();
|
|
112361
112498
|
var zod = require_zod();
|
|
@@ -115258,6 +115395,8 @@ var require_sleep_DqtlfkSS = __commonJS({
|
|
|
115258
115395
|
deletePreset: (input) => dispatch("ptz", "ptz", "deletePreset", "mutation", input),
|
|
115259
115396
|
getOptions: (input) => dispatch("ptz", "ptz", "getOptions", "query", input),
|
|
115260
115397
|
goHome: (input) => dispatch("ptz", "ptz", "goHome", "mutation", input),
|
|
115398
|
+
getHomePreset: (input) => dispatch("ptz", "ptz", "getHomePreset", "query", input),
|
|
115399
|
+
setHomePreset: (input) => dispatch("ptz", "ptz", "setHomePreset", "mutation", input),
|
|
115261
115400
|
getPosition: (input) => dispatch("ptz", "ptz", "getPosition", "query", input),
|
|
115262
115401
|
setAutofocus: (input) => dispatch("ptz", "ptz", "setAutofocus", "mutation", input),
|
|
115263
115402
|
getStatus: (input) => dispatch("ptz", "ptz", "getStatus", "query", input)
|
|
@@ -116256,7 +116395,7 @@ var require_addon = __commonJS({
|
|
|
116256
116395
|
"../types/dist/addon.js"(exports) {
|
|
116257
116396
|
"use strict";
|
|
116258
116397
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
116259
|
-
var require_sleep =
|
|
116398
|
+
var require_sleep = require_sleep_BAAUFDCk();
|
|
116260
116399
|
var require_event_category = require_event_category_BVfsrBYA();
|
|
116261
116400
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
116262
116401
|
var CAP_INPUT_DEFAULTS = Object.freeze({
|
|
@@ -136582,7 +136721,7 @@ var require_dist3 = __commonJS({
|
|
|
136582
136721
|
"use strict";
|
|
136583
136722
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
136584
136723
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
136585
|
-
var require_dist10 =
|
|
136724
|
+
var require_dist10 = require_dist_BW7x4kAI();
|
|
136586
136725
|
var require_builtins_alerts_alerts_addon = require_alerts_addon();
|
|
136587
136726
|
require_alerts();
|
|
136588
136727
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
@@ -217746,9 +217885,9 @@ var require_dist4 = __commonJS({
|
|
|
217746
217885
|
"../types/dist/index.js"(exports) {
|
|
217747
217886
|
"use strict";
|
|
217748
217887
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
217749
|
-
var require_sleep =
|
|
217888
|
+
var require_sleep = require_sleep_BAAUFDCk();
|
|
217750
217889
|
var require_event_category = require_event_category_BVfsrBYA();
|
|
217751
|
-
var require_canonical_hash =
|
|
217890
|
+
var require_canonical_hash = require_canonical_hash_CZ2JqJc3();
|
|
217752
217891
|
var require_enums2 = require_enums();
|
|
217753
217892
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
217754
217893
|
var zod = require_zod();
|
|
@@ -244555,14 +244694,36 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
244555
244694
|
if (profiles.length === 0) return null;
|
|
244556
244695
|
return profiles.some((p) => p.audioEnabled);
|
|
244557
244696
|
}
|
|
244697
|
+
var PtzPresetFunctionSchema = zod.z.enum([
|
|
244698
|
+
"home",
|
|
244699
|
+
"day-mode",
|
|
244700
|
+
"night-mode",
|
|
244701
|
+
"day-night-auto",
|
|
244702
|
+
"set-limits",
|
|
244703
|
+
"save-limits",
|
|
244704
|
+
"reboot",
|
|
244705
|
+
"osd-menu"
|
|
244706
|
+
]);
|
|
244558
244707
|
var PtzPresetSchema = zod.z.object({
|
|
244559
244708
|
id: zod.z.string(),
|
|
244560
|
-
name: zod.z.string()
|
|
244709
|
+
name: zod.z.string(),
|
|
244710
|
+
/**
|
|
244711
|
+
* The firmware function this id performs, when the provider KNOWS the id is
|
|
244712
|
+
* reserved. `null` = an ordinary stored position, OR a reserved id this
|
|
244713
|
+
* provider does not recognise -- the two are told apart by `writable`.
|
|
244714
|
+
*/
|
|
244715
|
+
fn: PtzPresetFunctionSchema.nullable(),
|
|
244716
|
+
/**
|
|
244717
|
+
* Whether `savePreset` / `deletePreset` may target this id. A provider sets
|
|
244718
|
+
* it false only for a band it KNOWS is reserved; where the firmware is not
|
|
244719
|
+
* documented it stays true and a refusal comes from the camera, named.
|
|
244720
|
+
*/
|
|
244721
|
+
writable: zod.z.boolean()
|
|
244561
244722
|
});
|
|
244562
244723
|
var PtzPositionSchema = zod.z.object({
|
|
244563
|
-
pan: zod.z.number(),
|
|
244564
|
-
tilt: zod.z.number(),
|
|
244565
|
-
zoom: zod.z.number()
|
|
244724
|
+
pan: zod.z.number().nullable(),
|
|
244725
|
+
tilt: zod.z.number().nullable(),
|
|
244726
|
+
zoom: zod.z.number().nullable()
|
|
244566
244727
|
});
|
|
244567
244728
|
var PtzMoveCommandSchema = zod.z.object({
|
|
244568
244729
|
pan: zod.z.number().optional(),
|
|
@@ -244580,7 +244741,42 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
244580
244741
|
maxPresets: zod.z.number().optional(),
|
|
244581
244742
|
/** Whether the camera exposes a controllable autofocus toggle
|
|
244582
244743
|
* (boolean `hasX` per the getOptions availability convention). */
|
|
244583
|
-
hasAutofocus: zod.z.boolean()
|
|
244744
|
+
hasAutofocus: zod.z.boolean(),
|
|
244745
|
+
/**
|
|
244746
|
+
* How many distinct speeds this camera's NATIVE scale offers.
|
|
244747
|
+
*
|
|
244748
|
+
* The cap's `speed` is normalized 0..1 and each provider maps it down --
|
|
244749
|
+
* Baichuan 1..63, Dahua 1..8, ISAPI's percentage -100..100. The normalized
|
|
244750
|
+
* value hides how coarse that really is: asking an amcrest for `0.37` is
|
|
244751
|
+
* meaningless, because it has eight steps and three of them round to the
|
|
244752
|
+
* same one. A loop that tunes its own gain has to know the granularity of
|
|
244753
|
+
* the knob it is turning.
|
|
244754
|
+
*
|
|
244755
|
+
* `null` = the driver does not know, or the scale is continuous (ONVIF takes
|
|
244756
|
+
* a float). Never a made-up number.
|
|
244757
|
+
*/
|
|
244758
|
+
speedSteps: zod.z.number().int().positive().nullable(),
|
|
244759
|
+
/**
|
|
244760
|
+
* How long ONE `move` pulse runs on this driver, ms.
|
|
244761
|
+
*
|
|
244762
|
+
* `move` is a self-terminating burst everywhere, but every provider hardcoded
|
|
244763
|
+
* its own duration in private -- 200 reolink, 350 amcrest, 500 hikvision,
|
|
244764
|
+
* 1000 onvif -- so no caller could read it. It is the DENOMINATOR of "how far
|
|
244765
|
+
* did the head travel per pulse": without it a measured displacement has no
|
|
244766
|
+
* gain to be divided into.
|
|
244767
|
+
*
|
|
244768
|
+
* `null` = the driver cannot say.
|
|
244769
|
+
*/
|
|
244770
|
+
moveImpulseMs: zod.z.number().int().positive().nullable()
|
|
244771
|
+
});
|
|
244772
|
+
var PtzHomePresetSchema = zod.z.object({
|
|
244773
|
+
presetId: zod.z.string().nullable(),
|
|
244774
|
+
source: zod.z.enum([
|
|
244775
|
+
"operator",
|
|
244776
|
+
"firmware",
|
|
244777
|
+
"native",
|
|
244778
|
+
"none"
|
|
244779
|
+
])
|
|
244584
244780
|
});
|
|
244585
244781
|
var ptzCapability = {
|
|
244586
244782
|
name: "ptz",
|
|
@@ -244621,7 +244817,25 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
244621
244817
|
auth: "admin"
|
|
244622
244818
|
}),
|
|
244623
244819
|
getOptions: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), PtzOptionsSchema),
|
|
244820
|
+
/**
|
|
244821
|
+
* Move to the camera's configured home preset. THROWS when
|
|
244822
|
+
* `getHomePreset()` resolves to `none` -- a head that did not move must
|
|
244823
|
+
* never look like a head that went home.
|
|
244824
|
+
*/
|
|
244624
244825
|
goHome: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), zod.z.void(), { kind: "mutation" }),
|
|
244826
|
+
/** Which preset `goHome` targets, and who decided it. */
|
|
244827
|
+
getHomePreset: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), PtzHomePresetSchema),
|
|
244828
|
+
/**
|
|
244829
|
+
* Pin the home preset for this camera. `null` clears the operator's choice
|
|
244830
|
+
* and falls back to whatever the firmware names, or to `none`.
|
|
244831
|
+
*/
|
|
244832
|
+
setHomePreset: require_sleep.method(zod.z.object({
|
|
244833
|
+
deviceId: zod.z.number(),
|
|
244834
|
+
presetId: zod.z.string().nullable()
|
|
244835
|
+
}), zod.z.void(), {
|
|
244836
|
+
kind: "mutation",
|
|
244837
|
+
auth: "admin"
|
|
244838
|
+
}),
|
|
244625
244839
|
/**
|
|
244626
244840
|
* Pull the current PTZ position. Redundant with the auto-injected
|
|
244627
244841
|
* `getStatus` method (see `status` below); kept for callers that
|
|
@@ -256249,6 +256463,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
256249
256463
|
addonId: null,
|
|
256250
256464
|
access: "delete"
|
|
256251
256465
|
},
|
|
256466
|
+
"ptz.getHomePreset": {
|
|
256467
|
+
capName: "ptz",
|
|
256468
|
+
capScope: "device",
|
|
256469
|
+
addonId: null,
|
|
256470
|
+
access: "view"
|
|
256471
|
+
},
|
|
256252
256472
|
"ptz.getOptions": {
|
|
256253
256473
|
capName: "ptz",
|
|
256254
256474
|
capScope: "device",
|
|
@@ -256297,6 +256517,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
256297
256517
|
addonId: null,
|
|
256298
256518
|
access: "create"
|
|
256299
256519
|
},
|
|
256520
|
+
"ptz.setHomePreset": {
|
|
256521
|
+
capName: "ptz",
|
|
256522
|
+
capScope: "device",
|
|
256523
|
+
addonId: null,
|
|
256524
|
+
access: "create"
|
|
256525
|
+
},
|
|
256300
256526
|
"ptz.stop": {
|
|
256301
256527
|
capName: "ptz",
|
|
256302
256528
|
capScope: "device",
|
|
@@ -259736,6 +259962,11 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
259736
259962
|
form: "single",
|
|
259737
259963
|
optional: false
|
|
259738
259964
|
}],
|
|
259965
|
+
"ptz.getHomePreset": [{
|
|
259966
|
+
name: "deviceId",
|
|
259967
|
+
form: "single",
|
|
259968
|
+
optional: false
|
|
259969
|
+
}],
|
|
259739
259970
|
"ptz.getOptions": [{
|
|
259740
259971
|
name: "deviceId",
|
|
259741
259972
|
form: "single",
|
|
@@ -259776,6 +260007,11 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
259776
260007
|
form: "single",
|
|
259777
260008
|
optional: false
|
|
259778
260009
|
}],
|
|
260010
|
+
"ptz.setHomePreset": [{
|
|
260011
|
+
name: "deviceId",
|
|
260012
|
+
form: "single",
|
|
260013
|
+
optional: false
|
|
260014
|
+
}],
|
|
259779
260015
|
"ptz.stop": [{
|
|
259780
260016
|
name: "deviceId",
|
|
259781
260017
|
form: "single",
|
|
@@ -264925,9 +265161,11 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
264925
265161
|
exports.PtzAutotrackSettingsSchema = PtzAutotrackSettingsSchema;
|
|
264926
265162
|
exports.PtzAutotrackStatusSchema = PtzAutotrackStatusSchema;
|
|
264927
265163
|
exports.PtzAutotrackTargetOptionSchema = PtzAutotrackTargetOptionSchema;
|
|
265164
|
+
exports.PtzHomePresetSchema = PtzHomePresetSchema;
|
|
264928
265165
|
exports.PtzMoveCommandSchema = PtzMoveCommandSchema;
|
|
264929
265166
|
exports.PtzOptionsSchema = PtzOptionsSchema;
|
|
264930
265167
|
exports.PtzPositionSchema = PtzPositionSchema;
|
|
265168
|
+
exports.PtzPresetFunctionSchema = PtzPresetFunctionSchema;
|
|
264931
265169
|
exports.PtzPresetSchema = PtzPresetSchema;
|
|
264932
265170
|
exports.PtzStatusSchema = PtzStatusSchema;
|
|
264933
265171
|
exports.QueryFilterSchema = QueryFilterSchema;
|
|
@@ -265648,6 +265886,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
265648
265886
|
exports.resolvePoolMemoryPolicy = resolvePoolMemoryPolicy;
|
|
265649
265887
|
exports.resolveRecordingProfiles = resolveRecordingProfiles;
|
|
265650
265888
|
exports.resolveRunnerId = resolveRunnerId;
|
|
265889
|
+
exports.resolveStreamMaps = require_canonical_hash.resolveStreamMaps;
|
|
265651
265890
|
exports.resolveVariantModelId = resolveVariantModelId;
|
|
265652
265891
|
exports.resolveViewableDeviceIds = resolveViewableDeviceIds;
|
|
265653
265892
|
exports.roleSpec = roleSpec;
|