@camstack/addon-remote-storage 1.2.15 → 1.2.16
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-Hjb2o6ip.mjs → shared-DSSvJCiv.mjs} +76 -8
- package/dist/{shared-yG0yCeMJ.js → shared-SC5SVzlS.js} +76 -8
- 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-SC5SVzlS.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-DSSvJCiv.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-SC5SVzlS.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-DSSvJCiv.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
|
|
@@ -12922,11 +12922,33 @@ var NotificationFormatSchema = _enum([
|
|
|
12922
12922
|
* Named by INTENT, never by glyph. "check" would tie the vocabulary to one
|
|
12923
12923
|
* renderer's icon set; "acknowledge" survives an adapter that draws it
|
|
12924
12924
|
* differently.
|
|
12925
|
+
*
|
|
12926
|
+
* ── A TOKEN IS NOT A WIRE VALUE ─────────────────────────────────────
|
|
12927
|
+
*
|
|
12928
|
+
* These names are for US. **No adapter may forward one verbatim.** Each maps
|
|
12929
|
+
* the whole set onto its own renderer's vocabulary through a
|
|
12930
|
+
* `Record<NotificationActionIcon, string>` — a Record, never a lookup with a
|
|
12931
|
+
* fallback, so adding a member here fails every adapter's build until someone
|
|
12932
|
+
* decides its glyph, which is the only place that decision can be made
|
|
12933
|
+
* honestly.
|
|
12934
|
+
*
|
|
12935
|
+
* This paragraph is the bug. Zentik declared `actionIcons: true` and passed
|
|
12936
|
+
* `disarm` straight through; iOS feeds that string to
|
|
12937
|
+
* `UNNotificationActionIcon(systemImageName:)`, `disarm` is not an SF Symbol,
|
|
12938
|
+
* and every snooze and alarm button arrived BLANK. A pass-through is not a
|
|
12939
|
+
* mapping, and "the field is documented" is not "the value renders".
|
|
12940
|
+
*
|
|
12941
|
+
* Adding a member is TRAIN-BOUND. The enum lives in the published
|
|
12942
|
+
* `@camstack/server` closure and the cap seam validates against the HUB's copy,
|
|
12943
|
+
* so an addon that emits a token the running hub does not know does not lose an
|
|
12944
|
+
* icon — its whole `send` fails Zod validation and the notification never
|
|
12945
|
+
* arrives. Never emit a new token from an addon before the train carrying it.
|
|
12925
12946
|
*/
|
|
12926
12947
|
var NotificationActionIconSchema = _enum([
|
|
12927
12948
|
"acknowledge",
|
|
12928
12949
|
"dismiss",
|
|
12929
12950
|
"silence",
|
|
12951
|
+
"snooze",
|
|
12930
12952
|
"view",
|
|
12931
12953
|
"play",
|
|
12932
12954
|
"open",
|
|
@@ -12934,9 +12956,13 @@ var NotificationActionIconSchema = _enum([
|
|
|
12934
12956
|
"lock",
|
|
12935
12957
|
"unlock",
|
|
12936
12958
|
"arm",
|
|
12959
|
+
"arm-home",
|
|
12960
|
+
"arm-away",
|
|
12961
|
+
"arm-night",
|
|
12937
12962
|
"disarm",
|
|
12938
12963
|
"light",
|
|
12939
|
-
"alert"
|
|
12964
|
+
"alert",
|
|
12965
|
+
"camera"
|
|
12940
12966
|
]);
|
|
12941
12967
|
/** A single tap-through action button. */
|
|
12942
12968
|
var NotificationActionSchema = object({
|
|
@@ -13136,6 +13162,24 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
13136
13162
|
targetId: string(),
|
|
13137
13163
|
enabled: boolean()
|
|
13138
13164
|
}), _void(), { kind: "mutation" });
|
|
13165
|
+
new Set([
|
|
13166
|
+
{
|
|
13167
|
+
id: "person",
|
|
13168
|
+
name: "Person"
|
|
13169
|
+
},
|
|
13170
|
+
{
|
|
13171
|
+
id: "vehicle",
|
|
13172
|
+
name: "Vehicle"
|
|
13173
|
+
},
|
|
13174
|
+
{
|
|
13175
|
+
id: "animal",
|
|
13176
|
+
name: "Animal"
|
|
13177
|
+
},
|
|
13178
|
+
{
|
|
13179
|
+
id: "package",
|
|
13180
|
+
name: "Package"
|
|
13181
|
+
}
|
|
13182
|
+
].map((l) => l.id));
|
|
13139
13183
|
var COCO_TO_MACRO = {
|
|
13140
13184
|
mapping: {
|
|
13141
13185
|
person: "person",
|
|
@@ -13933,6 +13977,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
13933
13977
|
"alarm-triggered",
|
|
13934
13978
|
"alarm-armed",
|
|
13935
13979
|
"alarm-disarmed",
|
|
13980
|
+
"alarm-arming",
|
|
13981
|
+
"alarm-arm-refused",
|
|
13936
13982
|
"camera-online",
|
|
13937
13983
|
"camera-offline",
|
|
13938
13984
|
"camera-disabled",
|
|
@@ -17165,6 +17211,22 @@ var detectionFpsField = {
|
|
|
17165
17211
|
default: 10,
|
|
17166
17212
|
step: 1
|
|
17167
17213
|
};
|
|
17214
|
+
/**
|
|
17215
|
+
* The occupancy re-check interval. DEFAULT 300 s (2026-08-13 — was 30 s).
|
|
17216
|
+
*
|
|
17217
|
+
* The recheck is now on by default (a parked car is invisible to occupancy
|
|
17218
|
+
* rules until the stationary registry has been rebuilt by motion, which after a
|
|
17219
|
+
* restart may be never on a quiet camera). Each cycle re-subscribes a detection
|
|
17220
|
+
* session — an RTSP re-dial — so the switch is only affordable at a WIDE
|
|
17221
|
+
* interval: 300 s is ~12 re-dials an hour per camera, against 120 at the old
|
|
17222
|
+
* 30 s. A parked car is therefore counted within 5 minutes of a restart.
|
|
17223
|
+
*
|
|
17224
|
+
* Why not wider: `max` is 300 and raising it is TRAIN-BOUND, not addon-bound —
|
|
17225
|
+
* the host validates `attachCamera` against ITS copy of this schema, so a
|
|
17226
|
+
* runner asked for 600 would be rejected by the hub until a `@camstack/server`
|
|
17227
|
+
* carrying the wider bound is installed everywhere. 300 is the widest value
|
|
17228
|
+
* that ships with an addon deploy.
|
|
17229
|
+
*/
|
|
17168
17230
|
var occupancyRecheckSecField = {
|
|
17169
17231
|
min: 0,
|
|
17170
17232
|
max: 300,
|
|
@@ -17366,15 +17428,21 @@ var RunnerCameraConfigSchema = object({
|
|
|
17366
17428
|
*/
|
|
17367
17429
|
onboardMotionDrivesAnalyzer: boolean().default(true),
|
|
17368
17430
|
/**
|
|
17369
|
-
* Master toggle for the occupancy re-check. When `false`
|
|
17370
|
-
*
|
|
17371
|
-
* this is off by default because the recheck re-subscribes a detection session
|
|
17372
|
-
* every N seconds while `watching`, a major source of pull-decoder re-dial
|
|
17373
|
-
* churn (each cycle creates+tears a session → RTSP re-dial → latency). The
|
|
17431
|
+
* Master toggle for the occupancy re-check. When `false` the runner never arms
|
|
17432
|
+
* the periodic recheck timer, regardless of `occupancyRecheckSec`; the
|
|
17374
17433
|
* `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
|
|
17375
17434
|
* (and only render) when this is enabled.
|
|
17376
|
-
|
|
17377
|
-
|
|
17435
|
+
*
|
|
17436
|
+
* DEFAULT `true` since 2026-08-13 (was `false`). It was off because the
|
|
17437
|
+
* recheck re-subscribes a detection session every N seconds while `watching`
|
|
17438
|
+
* — each cycle creates+tears a session ⇒ an RTSP re-dial ⇒ latency, a major
|
|
17439
|
+
* pull-decoder churn source. What that bought was a blind spot: a STATIONARY
|
|
17440
|
+
* object is counted only while the stationary registry holds it, and the
|
|
17441
|
+
* registry rebuilds from motion, so after a restart a parked car was invisible
|
|
17442
|
+
* to every occupancy rule until something moved in front of it. The churn is
|
|
17443
|
+
* now paid on the interval instead — see `occupancyRecheckSecField`.
|
|
17444
|
+
*/
|
|
17445
|
+
occupancyRecheckEnabled: boolean().default(true),
|
|
17378
17446
|
occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
|
|
17379
17447
|
occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
|
|
17380
17448
|
/**
|
|
@@ -12945,11 +12945,33 @@ var NotificationFormatSchema = _enum([
|
|
|
12945
12945
|
* Named by INTENT, never by glyph. "check" would tie the vocabulary to one
|
|
12946
12946
|
* renderer's icon set; "acknowledge" survives an adapter that draws it
|
|
12947
12947
|
* differently.
|
|
12948
|
+
*
|
|
12949
|
+
* ── A TOKEN IS NOT A WIRE VALUE ─────────────────────────────────────
|
|
12950
|
+
*
|
|
12951
|
+
* These names are for US. **No adapter may forward one verbatim.** Each maps
|
|
12952
|
+
* the whole set onto its own renderer's vocabulary through a
|
|
12953
|
+
* `Record<NotificationActionIcon, string>` — a Record, never a lookup with a
|
|
12954
|
+
* fallback, so adding a member here fails every adapter's build until someone
|
|
12955
|
+
* decides its glyph, which is the only place that decision can be made
|
|
12956
|
+
* honestly.
|
|
12957
|
+
*
|
|
12958
|
+
* This paragraph is the bug. Zentik declared `actionIcons: true` and passed
|
|
12959
|
+
* `disarm` straight through; iOS feeds that string to
|
|
12960
|
+
* `UNNotificationActionIcon(systemImageName:)`, `disarm` is not an SF Symbol,
|
|
12961
|
+
* and every snooze and alarm button arrived BLANK. A pass-through is not a
|
|
12962
|
+
* mapping, and "the field is documented" is not "the value renders".
|
|
12963
|
+
*
|
|
12964
|
+
* Adding a member is TRAIN-BOUND. The enum lives in the published
|
|
12965
|
+
* `@camstack/server` closure and the cap seam validates against the HUB's copy,
|
|
12966
|
+
* so an addon that emits a token the running hub does not know does not lose an
|
|
12967
|
+
* icon — its whole `send` fails Zod validation and the notification never
|
|
12968
|
+
* arrives. Never emit a new token from an addon before the train carrying it.
|
|
12948
12969
|
*/
|
|
12949
12970
|
var NotificationActionIconSchema = _enum([
|
|
12950
12971
|
"acknowledge",
|
|
12951
12972
|
"dismiss",
|
|
12952
12973
|
"silence",
|
|
12974
|
+
"snooze",
|
|
12953
12975
|
"view",
|
|
12954
12976
|
"play",
|
|
12955
12977
|
"open",
|
|
@@ -12957,9 +12979,13 @@ var NotificationActionIconSchema = _enum([
|
|
|
12957
12979
|
"lock",
|
|
12958
12980
|
"unlock",
|
|
12959
12981
|
"arm",
|
|
12982
|
+
"arm-home",
|
|
12983
|
+
"arm-away",
|
|
12984
|
+
"arm-night",
|
|
12960
12985
|
"disarm",
|
|
12961
12986
|
"light",
|
|
12962
|
-
"alert"
|
|
12987
|
+
"alert",
|
|
12988
|
+
"camera"
|
|
12963
12989
|
]);
|
|
12964
12990
|
/** A single tap-through action button. */
|
|
12965
12991
|
var NotificationActionSchema = object({
|
|
@@ -13159,6 +13185,24 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
13159
13185
|
targetId: string(),
|
|
13160
13186
|
enabled: boolean()
|
|
13161
13187
|
}), _void(), { kind: "mutation" });
|
|
13188
|
+
new Set([
|
|
13189
|
+
{
|
|
13190
|
+
id: "person",
|
|
13191
|
+
name: "Person"
|
|
13192
|
+
},
|
|
13193
|
+
{
|
|
13194
|
+
id: "vehicle",
|
|
13195
|
+
name: "Vehicle"
|
|
13196
|
+
},
|
|
13197
|
+
{
|
|
13198
|
+
id: "animal",
|
|
13199
|
+
name: "Animal"
|
|
13200
|
+
},
|
|
13201
|
+
{
|
|
13202
|
+
id: "package",
|
|
13203
|
+
name: "Package"
|
|
13204
|
+
}
|
|
13205
|
+
].map((l) => l.id));
|
|
13162
13206
|
var COCO_TO_MACRO = {
|
|
13163
13207
|
mapping: {
|
|
13164
13208
|
person: "person",
|
|
@@ -13956,6 +14000,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
13956
14000
|
"alarm-triggered",
|
|
13957
14001
|
"alarm-armed",
|
|
13958
14002
|
"alarm-disarmed",
|
|
14003
|
+
"alarm-arming",
|
|
14004
|
+
"alarm-arm-refused",
|
|
13959
14005
|
"camera-online",
|
|
13960
14006
|
"camera-offline",
|
|
13961
14007
|
"camera-disabled",
|
|
@@ -17188,6 +17234,22 @@ var detectionFpsField = {
|
|
|
17188
17234
|
default: 10,
|
|
17189
17235
|
step: 1
|
|
17190
17236
|
};
|
|
17237
|
+
/**
|
|
17238
|
+
* The occupancy re-check interval. DEFAULT 300 s (2026-08-13 — was 30 s).
|
|
17239
|
+
*
|
|
17240
|
+
* The recheck is now on by default (a parked car is invisible to occupancy
|
|
17241
|
+
* rules until the stationary registry has been rebuilt by motion, which after a
|
|
17242
|
+
* restart may be never on a quiet camera). Each cycle re-subscribes a detection
|
|
17243
|
+
* session — an RTSP re-dial — so the switch is only affordable at a WIDE
|
|
17244
|
+
* interval: 300 s is ~12 re-dials an hour per camera, against 120 at the old
|
|
17245
|
+
* 30 s. A parked car is therefore counted within 5 minutes of a restart.
|
|
17246
|
+
*
|
|
17247
|
+
* Why not wider: `max` is 300 and raising it is TRAIN-BOUND, not addon-bound —
|
|
17248
|
+
* the host validates `attachCamera` against ITS copy of this schema, so a
|
|
17249
|
+
* runner asked for 600 would be rejected by the hub until a `@camstack/server`
|
|
17250
|
+
* carrying the wider bound is installed everywhere. 300 is the widest value
|
|
17251
|
+
* that ships with an addon deploy.
|
|
17252
|
+
*/
|
|
17191
17253
|
var occupancyRecheckSecField = {
|
|
17192
17254
|
min: 0,
|
|
17193
17255
|
max: 300,
|
|
@@ -17389,15 +17451,21 @@ var RunnerCameraConfigSchema = object({
|
|
|
17389
17451
|
*/
|
|
17390
17452
|
onboardMotionDrivesAnalyzer: boolean().default(true),
|
|
17391
17453
|
/**
|
|
17392
|
-
* Master toggle for the occupancy re-check. When `false`
|
|
17393
|
-
*
|
|
17394
|
-
* this is off by default because the recheck re-subscribes a detection session
|
|
17395
|
-
* every N seconds while `watching`, a major source of pull-decoder re-dial
|
|
17396
|
-
* churn (each cycle creates+tears a session → RTSP re-dial → latency). The
|
|
17454
|
+
* Master toggle for the occupancy re-check. When `false` the runner never arms
|
|
17455
|
+
* the periodic recheck timer, regardless of `occupancyRecheckSec`; the
|
|
17397
17456
|
* `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
|
|
17398
17457
|
* (and only render) when this is enabled.
|
|
17399
|
-
|
|
17400
|
-
|
|
17458
|
+
*
|
|
17459
|
+
* DEFAULT `true` since 2026-08-13 (was `false`). It was off because the
|
|
17460
|
+
* recheck re-subscribes a detection session every N seconds while `watching`
|
|
17461
|
+
* — each cycle creates+tears a session ⇒ an RTSP re-dial ⇒ latency, a major
|
|
17462
|
+
* pull-decoder churn source. What that bought was a blind spot: a STATIONARY
|
|
17463
|
+
* object is counted only while the stationary registry holds it, and the
|
|
17464
|
+
* registry rebuilds from motion, so after a restart a parked car was invisible
|
|
17465
|
+
* to every occupancy rule until something moved in front of it. The churn is
|
|
17466
|
+
* now paid on the interval instead — see `occupancyRecheckSecField`.
|
|
17467
|
+
*/
|
|
17468
|
+
occupancyRecheckEnabled: boolean().default(true),
|
|
17401
17469
|
occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
|
|
17402
17470
|
occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
|
|
17403
17471
|
/**
|
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-SC5SVzlS.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-DSSvJCiv.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