camstack 1.2.96 → 1.2.98
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-BQJlnUOJ.mjs
|
|
14526
14526
|
var WELL_KNOWN_TABS = [
|
|
14527
14527
|
{
|
|
14528
14528
|
id: "overview",
|
|
@@ -15537,7 +15537,8 @@ var CameraSwitchAuthoritySchema = external_exports.discriminatedUnion("kind", [
|
|
|
15537
15537
|
var CameraSwitchUnavailableReasonSchema = external_exports.enum([
|
|
15538
15538
|
"no-provider",
|
|
15539
15539
|
"source-unreachable",
|
|
15540
|
-
"not-configured"
|
|
15540
|
+
"not-configured",
|
|
15541
|
+
"device-disabled"
|
|
15541
15542
|
]);
|
|
15542
15543
|
var CameraSwitchSchema = external_exports.object({
|
|
15543
15544
|
id: CameraSwitchIdSchema,
|
|
@@ -31971,12 +31972,20 @@ var BatteryStatusSchema = external_exports.object({
|
|
|
31971
31972
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
31972
31973
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
31973
31974
|
* common on other battery cams). `'none'` means running on battery
|
|
31974
|
-
* alone.
|
|
31975
|
+
* alone — a NEGATIVE the firmware actually reported.
|
|
31976
|
+
*
|
|
31977
|
+
* `'unknown'` is the absence of an answer: the provider has not read the
|
|
31978
|
+
* power fields yet, or the firmware reported neither. Before it existed,
|
|
31979
|
+
* two unreadable fields produced `'none'`, and a camera nobody had reached
|
|
31980
|
+
* was drawn "on battery alone" — the same D315 defect `percentage` closed
|
|
31981
|
+
* by going nullable. Consumers SKIP it (no charger state published, no
|
|
31982
|
+
* glyph, no HomeKit ChargingState) rather than coerce it either way.
|
|
31975
31983
|
*/
|
|
31976
31984
|
charging: external_exports.enum([
|
|
31977
31985
|
"dc",
|
|
31978
31986
|
"solar",
|
|
31979
|
-
"none"
|
|
31987
|
+
"none",
|
|
31988
|
+
"unknown"
|
|
31980
31989
|
]),
|
|
31981
31990
|
/**
|
|
31982
31991
|
* True when the camera firmware has gone into low-power mode. Battery
|
|
@@ -32068,7 +32077,7 @@ var batteryCapability = {
|
|
|
32068
32077
|
kind: "push",
|
|
32069
32078
|
empty: {
|
|
32070
32079
|
percentage: 0,
|
|
32071
|
-
charging: "
|
|
32080
|
+
charging: "unknown",
|
|
32072
32081
|
sleeping: false,
|
|
32073
32082
|
lastUpdated: 0
|
|
32074
32083
|
}
|
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-GW5K6RH3.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-VHGRUBGI.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-VHGRUBGI.js");
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
// src/commands/setup.ts
|
|
@@ -1130,7 +1130,7 @@ function isUnknown(_value) {
|
|
|
1130
1130
|
return true;
|
|
1131
1131
|
}
|
|
1132
1132
|
async function resolveServerInteractive(presetNamespace) {
|
|
1133
|
-
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-
|
|
1133
|
+
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-EV3TAGEL.js");
|
|
1134
1134
|
if (presetNamespace) {
|
|
1135
1135
|
const spinner4 = clack.spinner();
|
|
1136
1136
|
spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
|
|
@@ -23633,9 +23633,9 @@ var require_zod = __commonJS({
|
|
|
23633
23633
|
}
|
|
23634
23634
|
});
|
|
23635
23635
|
|
|
23636
|
-
// ../system/dist/dist-
|
|
23637
|
-
var
|
|
23638
|
-
"../system/dist/dist-
|
|
23636
|
+
// ../system/dist/dist-DlL8iWQo.js
|
|
23637
|
+
var require_dist_DlL8iWQo = __commonJS({
|
|
23638
|
+
"../system/dist/dist-DlL8iWQo.js"(exports) {
|
|
23639
23639
|
"use strict";
|
|
23640
23640
|
var zod = require_zod();
|
|
23641
23641
|
var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
|
|
@@ -25984,7 +25984,8 @@ var require_dist_DNwhsXWi = __commonJS({
|
|
|
25984
25984
|
var CameraSwitchUnavailableReasonSchema = zod.z.enum([
|
|
25985
25985
|
"no-provider",
|
|
25986
25986
|
"source-unreachable",
|
|
25987
|
-
"not-configured"
|
|
25987
|
+
"not-configured",
|
|
25988
|
+
"device-disabled"
|
|
25988
25989
|
]);
|
|
25989
25990
|
var CameraSwitchSchema = zod.z.object({
|
|
25990
25991
|
id: CameraSwitchIdSchema,
|
|
@@ -42531,12 +42532,20 @@ var require_dist_DNwhsXWi = __commonJS({
|
|
|
42531
42532
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
42532
42533
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
42533
42534
|
* common on other battery cams). `'none'` means running on battery
|
|
42534
|
-
* alone.
|
|
42535
|
+
* alone — a NEGATIVE the firmware actually reported.
|
|
42536
|
+
*
|
|
42537
|
+
* `'unknown'` is the absence of an answer: the provider has not read the
|
|
42538
|
+
* power fields yet, or the firmware reported neither. Before it existed,
|
|
42539
|
+
* two unreadable fields produced `'none'`, and a camera nobody had reached
|
|
42540
|
+
* was drawn "on battery alone" — the same D315 defect `percentage` closed
|
|
42541
|
+
* by going nullable. Consumers SKIP it (no charger state published, no
|
|
42542
|
+
* glyph, no HomeKit ChargingState) rather than coerce it either way.
|
|
42535
42543
|
*/
|
|
42536
42544
|
charging: zod.z.enum([
|
|
42537
42545
|
"dc",
|
|
42538
42546
|
"solar",
|
|
42539
|
-
"none"
|
|
42547
|
+
"none",
|
|
42548
|
+
"unknown"
|
|
42540
42549
|
]),
|
|
42541
42550
|
/**
|
|
42542
42551
|
* True when the camera firmware has gone into low-power mode. Battery
|
|
@@ -42628,7 +42637,7 @@ var require_dist_DNwhsXWi = __commonJS({
|
|
|
42628
42637
|
kind: "push",
|
|
42629
42638
|
empty: {
|
|
42630
42639
|
percentage: 0,
|
|
42631
|
-
charging: "
|
|
42640
|
+
charging: "unknown",
|
|
42632
42641
|
sleeping: false,
|
|
42633
42642
|
lastUpdated: 0
|
|
42634
42643
|
}
|
|
@@ -60109,7 +60118,7 @@ var require_alerts_addon = __commonJS({
|
|
|
60109
60118
|
[Symbol.toStringTag]: { value: "Module" }
|
|
60110
60119
|
});
|
|
60111
60120
|
require_chunk_Cek0wNdY();
|
|
60112
|
-
var require_dist10 =
|
|
60121
|
+
var require_dist10 = require_dist_DlL8iWQo();
|
|
60113
60122
|
function selectExpired(alerts, cutoffMs) {
|
|
60114
60123
|
return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
|
|
60115
60124
|
}
|
|
@@ -60928,7 +60937,7 @@ var require_console_logging = __commonJS({
|
|
|
60928
60937
|
[Symbol.toStringTag]: { value: "Module" }
|
|
60929
60938
|
});
|
|
60930
60939
|
require_chunk_Cek0wNdY();
|
|
60931
|
-
var require_dist10 =
|
|
60940
|
+
var require_dist10 = require_dist_DlL8iWQo();
|
|
60932
60941
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
60933
60942
|
var LEVEL_RANK = {
|
|
60934
60943
|
debug: 0,
|
|
@@ -61022,7 +61031,7 @@ var require_core_blocks_addon = __commonJS({
|
|
|
61022
61031
|
"use strict";
|
|
61023
61032
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
61024
61033
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
61025
|
-
var require_dist10 =
|
|
61034
|
+
var require_dist10 = require_dist_DlL8iWQo();
|
|
61026
61035
|
var node_crypto = __require("crypto");
|
|
61027
61036
|
var node_fs_promises = __require("fs/promises");
|
|
61028
61037
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -61919,11 +61928,11 @@ var require_core_blocks = __commonJS({
|
|
|
61919
61928
|
}
|
|
61920
61929
|
});
|
|
61921
61930
|
|
|
61922
|
-
// ../system/dist/retired-settings-keys-
|
|
61923
|
-
var
|
|
61924
|
-
"../system/dist/retired-settings-keys-
|
|
61931
|
+
// ../system/dist/retired-settings-keys-B5wVSU65.js
|
|
61932
|
+
var require_retired_settings_keys_B5wVSU65 = __commonJS({
|
|
61933
|
+
"../system/dist/retired-settings-keys-B5wVSU65.js"(exports) {
|
|
61925
61934
|
"use strict";
|
|
61926
|
-
var require_dist10 =
|
|
61935
|
+
var require_dist10 = require_dist_DlL8iWQo();
|
|
61927
61936
|
function settingsStoreIsAuthoritativeHere(env) {
|
|
61928
61937
|
const raw = (env["CAMSTACK_ROLE"] ?? "").trim().toLowerCase();
|
|
61929
61938
|
return raw === "" || raw === "hub";
|
|
@@ -64137,8 +64146,8 @@ var require_device_manager_addon = __commonJS({
|
|
|
64137
64146
|
[Symbol.toStringTag]: { value: "Module" }
|
|
64138
64147
|
});
|
|
64139
64148
|
require_chunk_Cek0wNdY();
|
|
64140
|
-
var require_dist10 =
|
|
64141
|
-
var require_retired_settings_keys =
|
|
64149
|
+
var require_dist10 = require_dist_DlL8iWQo();
|
|
64150
|
+
var require_retired_settings_keys = require_retired_settings_keys_B5wVSU65();
|
|
64142
64151
|
var node_crypto = __require("crypto");
|
|
64143
64152
|
var _camstack_types_node = require_node();
|
|
64144
64153
|
var JOB_HISTORY = 20;
|
|
@@ -69653,7 +69662,7 @@ var require_hub_forwarder = __commonJS({
|
|
|
69653
69662
|
[Symbol.toStringTag]: { value: "Module" }
|
|
69654
69663
|
});
|
|
69655
69664
|
require_chunk_Cek0wNdY();
|
|
69656
|
-
var require_dist10 =
|
|
69665
|
+
var require_dist10 = require_dist_DlL8iWQo();
|
|
69657
69666
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
69658
69667
|
var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
|
|
69659
69668
|
var HubForwarderDestination = class {
|
|
@@ -69790,7 +69799,7 @@ var require_liveness_monitor_addon = __commonJS({
|
|
|
69790
69799
|
"use strict";
|
|
69791
69800
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
69792
69801
|
require_chunk_Cek0wNdY();
|
|
69793
|
-
var require_dist10 =
|
|
69802
|
+
var require_dist10 = require_dist_DlL8iWQo();
|
|
69794
69803
|
var NO_DEVICES = "liveness:no-devices";
|
|
69795
69804
|
var ALL_OFFLINE = "liveness:all-devices-offline";
|
|
69796
69805
|
var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
|
|
@@ -69980,7 +69989,7 @@ var require_local_auth_addon = __commonJS({
|
|
|
69980
69989
|
[Symbol.toStringTag]: { value: "Module" }
|
|
69981
69990
|
});
|
|
69982
69991
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
69983
|
-
var require_dist10 =
|
|
69992
|
+
var require_dist10 = require_dist_DlL8iWQo();
|
|
69984
69993
|
var node_crypto = __require("crypto");
|
|
69985
69994
|
node_crypto = require_chunk.__toESM(node_crypto);
|
|
69986
69995
|
var crypto$1 = __require("crypto");
|
|
@@ -77793,7 +77802,7 @@ var require_loki_logging = __commonJS({
|
|
|
77793
77802
|
[Symbol.toStringTag]: { value: "Module" }
|
|
77794
77803
|
});
|
|
77795
77804
|
require_chunk_Cek0wNdY();
|
|
77796
|
-
var require_dist10 =
|
|
77805
|
+
var require_dist10 = require_dist_DlL8iWQo();
|
|
77797
77806
|
function sanitizeLabelName(raw) {
|
|
77798
77807
|
const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
|
|
77799
77808
|
return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
|
|
@@ -78358,7 +78367,7 @@ var require_native_metrics_addon = __commonJS({
|
|
|
78358
78367
|
[Symbol.toStringTag]: { value: "Module" }
|
|
78359
78368
|
});
|
|
78360
78369
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
78361
|
-
var require_dist10 =
|
|
78370
|
+
var require_dist10 = require_dist_DlL8iWQo();
|
|
78362
78371
|
var node_fs_promises = __require("fs/promises");
|
|
78363
78372
|
var node_child_process = __require("child_process");
|
|
78364
78373
|
var node_util = __require("util");
|
|
@@ -80942,7 +80951,7 @@ var require_filesystem_storage_addon = __commonJS({
|
|
|
80942
80951
|
[Symbol.toStringTag]: { value: "Module" }
|
|
80943
80952
|
});
|
|
80944
80953
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
80945
|
-
var require_dist10 =
|
|
80954
|
+
var require_dist10 = require_dist_DlL8iWQo();
|
|
80946
80955
|
var node_crypto = __require("crypto");
|
|
80947
80956
|
var node_fs_promises = __require("fs/promises");
|
|
80948
80957
|
var node_path = __require("path");
|
|
@@ -82058,8 +82067,8 @@ var require_sqlite_settings_addon = __commonJS({
|
|
|
82058
82067
|
[Symbol.toStringTag]: { value: "Module" }
|
|
82059
82068
|
});
|
|
82060
82069
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
82061
|
-
var require_dist10 =
|
|
82062
|
-
var require_retired_settings_keys =
|
|
82070
|
+
var require_dist10 = require_dist_DlL8iWQo();
|
|
82071
|
+
var require_retired_settings_keys = require_retired_settings_keys_B5wVSU65();
|
|
82063
82072
|
var node_crypto = __require("crypto");
|
|
82064
82073
|
var node_fs = __require("fs");
|
|
82065
82074
|
var node_module = __require("module");
|
|
@@ -84549,7 +84558,7 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
84549
84558
|
[Symbol.toStringTag]: { value: "Module" }
|
|
84550
84559
|
});
|
|
84551
84560
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
84552
|
-
var require_dist10 =
|
|
84561
|
+
var require_dist10 = require_dist_DlL8iWQo();
|
|
84553
84562
|
var require_hub_cap_forward = require_hub_cap_forward_DmHNjbB0();
|
|
84554
84563
|
var zod = require_zod();
|
|
84555
84564
|
var node_crypto = __require("crypto");
|
|
@@ -87500,7 +87509,7 @@ var require_system_config_addon = __commonJS({
|
|
|
87500
87509
|
[Symbol.toStringTag]: { value: "Module" }
|
|
87501
87510
|
});
|
|
87502
87511
|
require_chunk_Cek0wNdY();
|
|
87503
|
-
var require_dist10 =
|
|
87512
|
+
var require_dist10 = require_dist_DlL8iWQo();
|
|
87504
87513
|
var SECTION_TITLES = {
|
|
87505
87514
|
server: "Server",
|
|
87506
87515
|
auth: "Authentication"
|
|
@@ -105561,7 +105570,7 @@ var require_winston_logging = __commonJS({
|
|
|
105561
105570
|
[Symbol.toStringTag]: { value: "Module" }
|
|
105562
105571
|
});
|
|
105563
105572
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
105564
|
-
var require_dist10 =
|
|
105573
|
+
var require_dist10 = require_dist_DlL8iWQo();
|
|
105565
105574
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
105566
105575
|
var node_path = __require("path");
|
|
105567
105576
|
node_path = require_chunk.__toESM(node_path);
|
|
@@ -107504,9 +107513,9 @@ var require_event_category_BaEgqJNv = __commonJS({
|
|
|
107504
107513
|
}
|
|
107505
107514
|
});
|
|
107506
107515
|
|
|
107507
|
-
// ../types/dist/sleep-
|
|
107508
|
-
var
|
|
107509
|
-
"../types/dist/sleep-
|
|
107516
|
+
// ../types/dist/sleep-BCUreN6s.js
|
|
107517
|
+
var require_sleep_BCUreN6s = __commonJS({
|
|
107518
|
+
"../types/dist/sleep-BCUreN6s.js"(exports) {
|
|
107510
107519
|
"use strict";
|
|
107511
107520
|
var require_event_category = require_event_category_BaEgqJNv();
|
|
107512
107521
|
var zod = require_zod();
|
|
@@ -108498,6 +108507,7 @@ var require_sleep_BtIF8lWc = __commonJS({
|
|
|
108498
108507
|
}
|
|
108499
108508
|
};
|
|
108500
108509
|
var DATAPLANE_SECRET_HEADER = "x-camstack-dataplane-secret";
|
|
108510
|
+
var SHARE_VIEW_KINDS = ["grid-view", "events-view"];
|
|
108501
108511
|
var CamProfileSchema = zod.z.enum([
|
|
108502
108512
|
"high",
|
|
108503
108513
|
"mid",
|
|
@@ -110866,6 +110876,12 @@ var require_sleep_BtIF8lWc = __commonJS({
|
|
|
110866
110876
|
return ReadinessTimeoutError;
|
|
110867
110877
|
}
|
|
110868
110878
|
});
|
|
110879
|
+
Object.defineProperty(exports, "SHARE_VIEW_KINDS", {
|
|
110880
|
+
enumerable: true,
|
|
110881
|
+
get: function() {
|
|
110882
|
+
return SHARE_VIEW_KINDS;
|
|
110883
|
+
}
|
|
110884
|
+
});
|
|
110869
110885
|
Object.defineProperty(exports, "StreamSourceEntrySchema", {
|
|
110870
110886
|
enumerable: true,
|
|
110871
110887
|
get: function() {
|
|
@@ -111187,7 +111203,7 @@ var require_addon = __commonJS({
|
|
|
111187
111203
|
"use strict";
|
|
111188
111204
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
111189
111205
|
var require_event_category = require_event_category_BaEgqJNv();
|
|
111190
|
-
var require_sleep =
|
|
111206
|
+
var require_sleep = require_sleep_BCUreN6s();
|
|
111191
111207
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
111192
111208
|
var CAP_INPUT_DEFAULTS = Object.freeze({
|
|
111193
111209
|
"addons": { "getLogs": { "limit": 100 } },
|
|
@@ -118071,9 +118087,9 @@ var require_dist2 = __commonJS({
|
|
|
118071
118087
|
}
|
|
118072
118088
|
});
|
|
118073
118089
|
|
|
118074
|
-
// ../system/dist/manifest-system-deps-
|
|
118075
|
-
var
|
|
118076
|
-
"../system/dist/manifest-system-deps-
|
|
118090
|
+
// ../system/dist/manifest-system-deps-DvY1bY_n.js
|
|
118091
|
+
var require_manifest_system_deps_DvY1bY_n = __commonJS({
|
|
118092
|
+
"../system/dist/manifest-system-deps-DvY1bY_n.js"(exports) {
|
|
118077
118093
|
"use strict";
|
|
118078
118094
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
118079
118095
|
require_hub_cap_forward_DmHNjbB0();
|
|
@@ -118721,7 +118737,8 @@ var require_manifest_system_deps_KBuTXH_y = __commonJS({
|
|
|
118721
118737
|
prefix,
|
|
118722
118738
|
access: entry.access,
|
|
118723
118739
|
baseUrl,
|
|
118724
|
-
secret
|
|
118740
|
+
secret,
|
|
118741
|
+
...entry.share !== void 0 ? { share: entry.share } : {}
|
|
118725
118742
|
}));
|
|
118726
118743
|
args.sink?.set(args.addonId, endpoints);
|
|
118727
118744
|
};
|
|
@@ -118731,7 +118748,8 @@ var require_manifest_system_deps_KBuTXH_y = __commonJS({
|
|
|
118731
118748
|
await ensureServer();
|
|
118732
118749
|
served.set(prefix, {
|
|
118733
118750
|
access: options.access,
|
|
118734
|
-
handler: options.handler
|
|
118751
|
+
handler: options.handler,
|
|
118752
|
+
...options.share !== void 0 ? { share: options.share } : {}
|
|
118735
118753
|
});
|
|
118736
118754
|
publish();
|
|
118737
118755
|
args.logger.info("data-plane endpoint served", { meta: {
|
|
@@ -123925,9 +123943,11 @@ var require_manifest_system_deps_KBuTXH_y = __commonJS({
|
|
|
123925
123943
|
}
|
|
123926
123944
|
throw new Error(`no provider registered for cap "${input.capName}" (resolver miss after boot-window retry; forked-addon provider not yet registered \u2014 ${input.method})`);
|
|
123927
123945
|
}
|
|
123928
|
-
deps.logger?.
|
|
123946
|
+
deps.logger?.debug?.("routing child unowned cap call via the hub-core `$core-caps` bridge", {
|
|
123929
123947
|
capName: input.capName,
|
|
123930
|
-
method: input.method
|
|
123948
|
+
method: input.method,
|
|
123949
|
+
callerAddonId: input.callerAddonId,
|
|
123950
|
+
route: "$core-caps"
|
|
123931
123951
|
});
|
|
123932
123952
|
return await brokerCallForCap(deps.broker, input.capName, input.method, input.args);
|
|
123933
123953
|
} catch (cause) {
|
|
@@ -130142,7 +130162,7 @@ var require_dist3 = __commonJS({
|
|
|
130142
130162
|
"use strict";
|
|
130143
130163
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
130144
130164
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
130145
|
-
var require_dist10 =
|
|
130165
|
+
var require_dist10 = require_dist_DlL8iWQo();
|
|
130146
130166
|
var require_builtins_alerts_alerts_addon = require_alerts_addon();
|
|
130147
130167
|
require_alerts();
|
|
130148
130168
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
@@ -130169,7 +130189,7 @@ var require_dist3 = __commonJS({
|
|
|
130169
130189
|
var require_builtins_winston_logging_index = require_winston_logging();
|
|
130170
130190
|
var require_file_data_plane = require_file_data_plane_DO8KbxCe();
|
|
130171
130191
|
var require_tls$1 = require_tls_BxQlomxd();
|
|
130172
|
-
var require_manifest_system_deps =
|
|
130192
|
+
var require_manifest_system_deps = require_manifest_system_deps_DvY1bY_n();
|
|
130173
130193
|
var require_resource_monitor = require_resource_monitor_CdnzxBLP();
|
|
130174
130194
|
var require_custom_action_registry = require_custom_action_registry_jY0NOZK8();
|
|
130175
130195
|
var zod = require_zod();
|
|
@@ -211259,7 +211279,7 @@ var require_dist4 = __commonJS({
|
|
|
211259
211279
|
"use strict";
|
|
211260
211280
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
211261
211281
|
var require_event_category = require_event_category_BaEgqJNv();
|
|
211262
|
-
var require_sleep =
|
|
211282
|
+
var require_sleep = require_sleep_BCUreN6s();
|
|
211263
211283
|
var require_canonical_hash = require_canonical_hash_DNV8S5ET();
|
|
211264
211284
|
var require_enums2 = require_enums();
|
|
211265
211285
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
@@ -211733,7 +211753,8 @@ var require_dist4 = __commonJS({
|
|
|
211733
211753
|
var CameraSwitchUnavailableReasonSchema = zod.z.enum([
|
|
211734
211754
|
"no-provider",
|
|
211735
211755
|
"source-unreachable",
|
|
211736
|
-
"not-configured"
|
|
211756
|
+
"not-configured",
|
|
211757
|
+
"device-disabled"
|
|
211737
211758
|
]);
|
|
211738
211759
|
var CameraSwitchSchema = zod.z.object({
|
|
211739
211760
|
id: CameraSwitchIdSchema,
|
|
@@ -211878,7 +211899,7 @@ var require_dist4 = __commonJS({
|
|
|
211878
211899
|
if (audio === null) return {
|
|
211879
211900
|
available: false,
|
|
211880
211901
|
enabled: true,
|
|
211881
|
-
unavailableReason: "source-unreachable"
|
|
211902
|
+
unavailableReason: input.deviceDisabled ? "device-disabled" : "source-unreachable"
|
|
211882
211903
|
};
|
|
211883
211904
|
if (!audio.supported) return {
|
|
211884
211905
|
available: false,
|
|
@@ -211900,7 +211921,7 @@ var require_dist4 = __commonJS({
|
|
|
211900
211921
|
if (mask === null) return {
|
|
211901
211922
|
available: false,
|
|
211902
211923
|
enabled: false,
|
|
211903
|
-
unavailableReason: "source-unreachable"
|
|
211924
|
+
unavailableReason: input.deviceDisabled ? "device-disabled" : "source-unreachable"
|
|
211904
211925
|
};
|
|
211905
211926
|
if (!mask.supported) return {
|
|
211906
211927
|
available: false,
|
|
@@ -231002,12 +231023,20 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
231002
231023
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
231003
231024
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
231004
231025
|
* common on other battery cams). `'none'` means running on battery
|
|
231005
|
-
* alone.
|
|
231026
|
+
* alone — a NEGATIVE the firmware actually reported.
|
|
231027
|
+
*
|
|
231028
|
+
* `'unknown'` is the absence of an answer: the provider has not read the
|
|
231029
|
+
* power fields yet, or the firmware reported neither. Before it existed,
|
|
231030
|
+
* two unreadable fields produced `'none'`, and a camera nobody had reached
|
|
231031
|
+
* was drawn "on battery alone" — the same D315 defect `percentage` closed
|
|
231032
|
+
* by going nullable. Consumers SKIP it (no charger state published, no
|
|
231033
|
+
* glyph, no HomeKit ChargingState) rather than coerce it either way.
|
|
231006
231034
|
*/
|
|
231007
231035
|
charging: zod.z.enum([
|
|
231008
231036
|
"dc",
|
|
231009
231037
|
"solar",
|
|
231010
|
-
"none"
|
|
231038
|
+
"none",
|
|
231039
|
+
"unknown"
|
|
231011
231040
|
]),
|
|
231012
231041
|
/**
|
|
231013
231042
|
* True when the camera firmware has gone into low-power mode. Battery
|
|
@@ -231099,7 +231128,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
231099
231128
|
kind: "push",
|
|
231100
231129
|
empty: {
|
|
231101
231130
|
percentage: 0,
|
|
231102
|
-
charging: "
|
|
231131
|
+
charging: "unknown",
|
|
231103
231132
|
sleeping: false,
|
|
231104
231133
|
lastUpdated: 0
|
|
231105
231134
|
}
|
|
@@ -240179,13 +240208,30 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
240179
240208
|
async onRestoreDevices(savedDevices) {
|
|
240180
240209
|
const restored = /* @__PURE__ */ new Set();
|
|
240181
240210
|
const failures = [];
|
|
240211
|
+
const liveStableIds = new Set((await this.ctx.kernel.devices.getAll()).map((device2) => device2.stableId));
|
|
240182
240212
|
const attemptRestore = async (saved) => {
|
|
240183
240213
|
if (restored.has(saved.id)) return;
|
|
240214
|
+
if (liveStableIds.has(saved.stableId)) {
|
|
240215
|
+
this.ctx.logger.debug("Restore row already live \u2014 not dialled again", { tags: {
|
|
240216
|
+
deviceId: saved.id,
|
|
240217
|
+
stableId: saved.stableId
|
|
240218
|
+
} });
|
|
240219
|
+
restored.add(saved.id);
|
|
240220
|
+
return;
|
|
240221
|
+
}
|
|
240184
240222
|
const Class = this.deviceClasses[saved.type];
|
|
240185
240223
|
if (!Class) throw new Error(`no device class registered for type "${saved.type}"`);
|
|
240186
240224
|
if (saved.parentDeviceId !== null && !restored.has(saved.parentDeviceId)) throw new Error(`parent device ${saved.parentDeviceId} not restored`);
|
|
240187
240225
|
await this.healSavedConfig(saved, savedDevices);
|
|
240188
|
-
|
|
240226
|
+
try {
|
|
240227
|
+
await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
|
|
240228
|
+
} catch (err) {
|
|
240229
|
+
if (!(await this.ctx.kernel.devices.getAll()).some((device2) => device2.stableId === saved.stableId)) throw err;
|
|
240230
|
+
this.ctx.logger.debug("Restore row came to life during its own dial \u2014 kept", { tags: {
|
|
240231
|
+
deviceId: saved.id,
|
|
240232
|
+
stableId: saved.stableId
|
|
240233
|
+
} });
|
|
240234
|
+
}
|
|
240189
240235
|
restored.add(saved.id);
|
|
240190
240236
|
};
|
|
240191
240237
|
const topLevel = savedDevices.filter((saved) => saved.parentDeviceId === null);
|
|
@@ -255360,6 +255406,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
255360
255406
|
exports.SCOPE_PRESETS = SCOPE_PRESETS;
|
|
255361
255407
|
exports.SENSOR_FEATURES = SENSOR_FEATURES;
|
|
255362
255408
|
exports.SENSOR_MAP = SENSOR_MAP;
|
|
255409
|
+
exports.SHARE_VIEW_KINDS = require_sleep.SHARE_VIEW_KINDS;
|
|
255363
255410
|
exports.SOURCE_CAPS = SOURCE_CAPS;
|
|
255364
255411
|
exports.SOURCE_CAP_ACTIVE_FIELD = SOURCE_CAP_ACTIVE_FIELD;
|
|
255365
255412
|
exports.SOURCE_CAP_CHANGED_AT_FIELD = SOURCE_CAP_CHANGED_AT_FIELD;
|
|
@@ -415398,6 +415445,29 @@ var require_cap_providers = __commonJS({
|
|
|
415398
415445
|
}
|
|
415399
415446
|
});
|
|
415400
415447
|
|
|
415448
|
+
// ../../server/backend/dist/api/trpc/server-provided-caps.js
|
|
415449
|
+
var require_server_provided_caps = __commonJS({
|
|
415450
|
+
"../../server/backend/dist/api/trpc/server-provided-caps.js"(exports) {
|
|
415451
|
+
"use strict";
|
|
415452
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
415453
|
+
exports.ADDON_BACKED_SERVER_CAP_NAMES = exports.HUB_SERVICE_CAP_NAMES = void 0;
|
|
415454
|
+
exports.capNameToNamespace = capNameToNamespace;
|
|
415455
|
+
exports.HUB_SERVICE_CAP_NAMES = [
|
|
415456
|
+
"network-quality",
|
|
415457
|
+
"system",
|
|
415458
|
+
"toast",
|
|
415459
|
+
"integrations",
|
|
415460
|
+
"nodes",
|
|
415461
|
+
"server-management",
|
|
415462
|
+
"addons"
|
|
415463
|
+
];
|
|
415464
|
+
exports.ADDON_BACKED_SERVER_CAP_NAMES = ["webrtc-session"];
|
|
415465
|
+
function capNameToNamespace(capName) {
|
|
415466
|
+
return capName.replace(/-([a-z])/g, (_m, c) => c.toUpperCase());
|
|
415467
|
+
}
|
|
415468
|
+
}
|
|
415469
|
+
});
|
|
415470
|
+
|
|
415401
415471
|
// ../../server/backend/dist/core/auth/share-token.service.js
|
|
415402
415472
|
var require_share_token_service = __commonJS({
|
|
415403
415473
|
"../../server/backend/dist/core/auth/share-token.service.js"(exports) {
|
|
@@ -415441,6 +415511,7 @@ var require_share_token_service = __commonJS({
|
|
|
415441
415511
|
})();
|
|
415442
415512
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
415443
415513
|
exports.ShareTokenService = exports.ShareTokenRecordSchema = exports.ShareTokenScopeSchema = exports.SHARE_TOKEN_MAX_DEVICES = exports.SHARE_TOKEN_TTL_DEFAULT_SEC = exports.SHARE_TOKEN_TTL_MAX_SEC = exports.SHARE_TOKEN_TTL_MIN_SEC = exports.SHARE_TOKEN_PREFIX = void 0;
|
|
415514
|
+
var types_1 = require_dist4();
|
|
415444
415515
|
var crypto2 = __importStar(__require("crypto"));
|
|
415445
415516
|
var zod_1 = require_zod();
|
|
415446
415517
|
var SHARE_TOKENS_COLLECTION = "share_view_tokens";
|
|
@@ -415454,7 +415525,7 @@ var require_share_token_service = __commonJS({
|
|
|
415454
415525
|
exports.SHARE_TOKEN_TTL_DEFAULT_SEC = 7 * 24 * 60 * 60;
|
|
415455
415526
|
exports.SHARE_TOKEN_MAX_DEVICES = 64;
|
|
415456
415527
|
exports.ShareTokenScopeSchema = zod_1.z.object({
|
|
415457
|
-
kind: zod_1.z.enum(
|
|
415528
|
+
kind: zod_1.z.enum(types_1.SHARE_VIEW_KINDS),
|
|
415458
415529
|
deviceIds: zod_1.z.array(zod_1.z.number().int().nonnegative()).min(1).max(exports.SHARE_TOKEN_MAX_DEVICES)
|
|
415459
415530
|
});
|
|
415460
415531
|
exports.ShareTokenRecordSchema = zod_1.z.object({
|
|
@@ -417418,15 +417489,12 @@ var require_core_cap_bridge = __commonJS({
|
|
|
417418
417489
|
exports.buildCoreCapService = buildCoreCapService;
|
|
417419
417490
|
var system_1 = require_dist3();
|
|
417420
417491
|
var http_request_census_singleton_js_1 = require_http_request_census_singleton();
|
|
417492
|
+
var server_provided_caps_js_1 = require_server_provided_caps();
|
|
417421
417493
|
var trpc_context_js_1 = require_trpc_context();
|
|
417422
417494
|
var trpc_middleware_js_1 = require_trpc_middleware();
|
|
417423
417495
|
var CORE_NAMESPACES = /* @__PURE__ */ new Set([
|
|
417424
|
-
// Service-backed cap routers (no addon provider).
|
|
417425
|
-
|
|
417426
|
-
"toast",
|
|
417427
|
-
"integrations",
|
|
417428
|
-
"nodes",
|
|
417429
|
-
"addons",
|
|
417496
|
+
// Service-backed cap routers (no addon provider) — derived, never copied.
|
|
417497
|
+
...server_provided_caps_js_1.HUB_SERVICE_CAP_NAMES.map(server_provided_caps_js_1.capNameToNamespace),
|
|
417430
417498
|
// Hand-written single-impl core routers.
|
|
417431
417499
|
"capabilities",
|
|
417432
417500
|
"notifications",
|
|
@@ -420153,6 +420221,44 @@ var require_addon_route_jwt_gate = __commonJS({
|
|
|
420153
420221
|
}
|
|
420154
420222
|
});
|
|
420155
420223
|
|
|
420224
|
+
// ../../server/backend/dist/auth/addon-route-share-gate.js
|
|
420225
|
+
var require_addon_route_share_gate = __commonJS({
|
|
420226
|
+
"../../server/backend/dist/auth/addon-route-share-gate.js"(exports) {
|
|
420227
|
+
"use strict";
|
|
420228
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
420229
|
+
exports.SHARE_DEVICES_HEADER = exports.SHARE_KIND_HEADER = void 0;
|
|
420230
|
+
exports.gateAddonShareToken = gateAddonShareToken;
|
|
420231
|
+
exports.stripShareHeaders = stripShareHeaders;
|
|
420232
|
+
exports.SHARE_KIND_HEADER = "x-camstack-share-kind";
|
|
420233
|
+
exports.SHARE_DEVICES_HEADER = "x-camstack-share-devices";
|
|
420234
|
+
function gateAddonShareToken(input) {
|
|
420235
|
+
if (input.record === null)
|
|
420236
|
+
return { ok: false, status: 401, error: "Invalid token" };
|
|
420237
|
+
const kind = input.record.scope.kind;
|
|
420238
|
+
if (!(input.endpoint.share ?? []).includes(kind)) {
|
|
420239
|
+
return { ok: false, status: 403, error: "Share token not accepted here" };
|
|
420240
|
+
}
|
|
420241
|
+
return {
|
|
420242
|
+
ok: true,
|
|
420243
|
+
headers: {
|
|
420244
|
+
[exports.SHARE_KIND_HEADER]: kind,
|
|
420245
|
+
[exports.SHARE_DEVICES_HEADER]: input.record.scope.deviceIds.join(",")
|
|
420246
|
+
}
|
|
420247
|
+
};
|
|
420248
|
+
}
|
|
420249
|
+
function stripShareHeaders(headers) {
|
|
420250
|
+
const out = {};
|
|
420251
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
420252
|
+
const lower = key.toLowerCase();
|
|
420253
|
+
if (lower === exports.SHARE_KIND_HEADER || lower === exports.SHARE_DEVICES_HEADER)
|
|
420254
|
+
continue;
|
|
420255
|
+
out[key] = value;
|
|
420256
|
+
}
|
|
420257
|
+
return out;
|
|
420258
|
+
}
|
|
420259
|
+
}
|
|
420260
|
+
});
|
|
420261
|
+
|
|
420156
420262
|
// ../../server/backend/dist/core/config/config.schema.js
|
|
420157
420263
|
var require_config_schema = __commonJS({
|
|
420158
420264
|
"../../server/backend/dist/core/config/config.schema.js"(exports) {
|
|
@@ -421190,6 +421296,7 @@ var require_addon_registry_service = __commonJS({
|
|
|
421190
421296
|
exports.AddonRegistryService = void 0;
|
|
421191
421297
|
exports.shouldEvictMissingOnDisk = shouldEvictMissingOnDisk;
|
|
421192
421298
|
exports.addonUpdatePayload = addonUpdatePayload;
|
|
421299
|
+
exports.parseDataPlaneEndpoints = parseDataPlaneEndpoints;
|
|
421193
421300
|
exports.shouldEmitProviderRegisteredReady = shouldEmitProviderRegisteredReady;
|
|
421194
421301
|
var node_crypto_1 = __require("crypto");
|
|
421195
421302
|
var fs = __importStar(__require("fs"));
|
|
@@ -421308,9 +421415,30 @@ var require_addon_registry_service = __commonJS({
|
|
|
421308
421415
|
if (typeof prefix !== "string" || typeof baseUrl !== "string" || typeof secret !== "string") {
|
|
421309
421416
|
throw new Error("data-planes: endpoint descriptor missing prefix/baseUrl/secret");
|
|
421310
421417
|
}
|
|
421311
|
-
|
|
421418
|
+
const share = parseDataPlaneShare(Reflect.get(entry, "share"));
|
|
421419
|
+
return {
|
|
421420
|
+
prefix,
|
|
421421
|
+
access: asRouteAccess(Reflect.get(entry, "access")),
|
|
421422
|
+
baseUrl,
|
|
421423
|
+
secret,
|
|
421424
|
+
...share !== void 0 ? { share } : {}
|
|
421425
|
+
};
|
|
421312
421426
|
});
|
|
421313
421427
|
}
|
|
421428
|
+
function parseDataPlaneShare(value) {
|
|
421429
|
+
if (value === void 0)
|
|
421430
|
+
return void 0;
|
|
421431
|
+
if (!Array.isArray(value))
|
|
421432
|
+
throw new Error("data-planes: `share` is not an array");
|
|
421433
|
+
return value.map((kind) => {
|
|
421434
|
+
if (!isShareViewKind(kind))
|
|
421435
|
+
throw new Error(`data-planes: unknown share kind ${String(kind)}`);
|
|
421436
|
+
return kind;
|
|
421437
|
+
});
|
|
421438
|
+
}
|
|
421439
|
+
function isShareViewKind(value) {
|
|
421440
|
+
return typeof value === "string" && types_1.SHARE_VIEW_KINDS.includes(value);
|
|
421441
|
+
}
|
|
421314
421442
|
function shouldEmitProviderRegisteredReady(capability) {
|
|
421315
421443
|
return capability !== "platform-probe";
|
|
421316
421444
|
}
|
|
@@ -425893,6 +426021,7 @@ var require_moleculer_service = __commonJS({
|
|
|
425893
426021
|
// multi-node addon cap is covered with no change here.
|
|
425894
426022
|
isCoreServiceCap: (capName) => (0, core_cap_bridge_js_1.isCoreServiceCapName)(capName),
|
|
425895
426023
|
logger: {
|
|
426024
|
+
debug: (msg, meta) => logger.debug(msg, meta !== null && meta !== void 0 ? { meta } : void 0),
|
|
425896
426025
|
warn: (msg, meta) => logger.warn(msg, meta !== null && meta !== void 0 ? { meta } : void 0)
|
|
425897
426026
|
}
|
|
425898
426027
|
});
|
|
@@ -428169,6 +428298,7 @@ var require_main4 = __commonJS({
|
|
|
428169
428298
|
var trpc_error_device_tags_1 = require_trpc_error_device_tags();
|
|
428170
428299
|
var ws_request_census_1 = require_ws_request_census();
|
|
428171
428300
|
var addon_route_jwt_gate_js_1 = require_addon_route_jwt_gate();
|
|
428301
|
+
var addon_route_share_gate_js_1 = require_addon_route_share_gate();
|
|
428172
428302
|
var session_cookie_js_1 = require_session_cookie();
|
|
428173
428303
|
var boot_config_1 = require_boot_config();
|
|
428174
428304
|
var integration_id_backfill_1 = require_integration_id_backfill();
|
|
@@ -428720,6 +428850,7 @@ var require_main4 = __commonJS({
|
|
|
428720
428850
|
const dpMatch = dataPlaneRegistry.match(addonId, subPath);
|
|
428721
428851
|
if (dpMatch) {
|
|
428722
428852
|
const access = dpMatch.endpoint.access;
|
|
428853
|
+
let shareHeaders = null;
|
|
428723
428854
|
if (access !== "public") {
|
|
428724
428855
|
const authHeader = request.headers.authorization;
|
|
428725
428856
|
const cookieToken = request.cookies?.[session_cookie_js_1.SESSION_COOKIE];
|
|
@@ -428727,7 +428858,13 @@ var require_main4 = __commonJS({
|
|
|
428727
428858
|
return reply.status(401).send({ error: "Unauthorized" });
|
|
428728
428859
|
}
|
|
428729
428860
|
const token2 = authHeader ? authHeader.replace("Bearer ", "") : cookieToken;
|
|
428730
|
-
if (token2.startsWith("
|
|
428861
|
+
if (token2.startsWith("csv_")) {
|
|
428862
|
+
const record = await shareTokenService.validate(token2);
|
|
428863
|
+
const gate = (0, addon_route_share_gate_js_1.gateAddonShareToken)({ record, endpoint: dpMatch.endpoint });
|
|
428864
|
+
if (!gate.ok)
|
|
428865
|
+
return reply.status(gate.status).send({ error: gate.error });
|
|
428866
|
+
shareHeaders = gate.headers;
|
|
428867
|
+
} else if (token2.startsWith("cst_")) {
|
|
428731
428868
|
const userMgmt = capabilityRegistry?.getSingleton("user-management");
|
|
428732
428869
|
if (!userMgmt)
|
|
428733
428870
|
return reply.status(503).send({ error: "User management not available" });
|
|
@@ -428752,6 +428889,12 @@ var require_main4 = __commonJS({
|
|
|
428752
428889
|
const qIdx = request.url.indexOf("?");
|
|
428753
428890
|
const queryString = qIdx >= 0 ? request.url.slice(qIdx) : "";
|
|
428754
428891
|
const upstreamPath = `/${subPath}${queryString}`;
|
|
428892
|
+
for (const name of Object.keys(request.raw.headers)) {
|
|
428893
|
+
if (name.toLowerCase() === addon_route_share_gate_js_1.SHARE_KIND_HEADER || name.toLowerCase() === addon_route_share_gate_js_1.SHARE_DEVICES_HEADER)
|
|
428894
|
+
delete request.raw.headers[name];
|
|
428895
|
+
}
|
|
428896
|
+
if (shareHeaders !== null)
|
|
428897
|
+
Object.assign(request.raw.headers, shareHeaders);
|
|
428755
428898
|
reply.hijack();
|
|
428756
428899
|
const replayBody = request.body === void 0 ? void 0 : Buffer.isBuffer(request.body) ? request.body : Buffer.from(typeof request.body === "string" ? request.body : JSON.stringify(request.body));
|
|
428757
428900
|
(0, system_1.proxyToUpstream)({
|