@camstack/addon-remote-storage 1.2.74 → 1.2.75
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-DorYC8t5.js → shared-BFq0ZzN8.js} +47 -34
- package/dist/{shared-DkdzfmAe.mjs → shared-CTsaqcNM.mjs} +47 -34
- package/dist/smb.addon.js +1 -1
- package/dist/smb.addon.mjs +1 -1
- 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-BFq0ZzN8.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-CTsaqcNM.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-BFq0ZzN8.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-CTsaqcNM.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
|
|
@@ -7857,17 +7857,29 @@ var HHMM = /^([01]\d|2[0-3]):[0-5]\d$/;
|
|
|
7857
7857
|
/**
|
|
7858
7858
|
* DERIVED per-camera storage summary — the single field cheap consumers read
|
|
7859
7859
|
* (the viewer's status dot, the camera list) instead of walking `bands`:
|
|
7860
|
-
* - `off`
|
|
7861
|
-
* - `events`
|
|
7862
|
-
* - `continuous`
|
|
7863
|
-
*
|
|
7864
|
-
*
|
|
7865
|
-
*
|
|
7860
|
+
* - `off` — no band covers the camera (or it is disabled).
|
|
7861
|
+
* - `events` — every band records around triggers only.
|
|
7862
|
+
* - `continuous` — at least one band records continuously.
|
|
7863
|
+
* - `on-device-decision`— the DEVICE decides: recording runs for as long as the
|
|
7864
|
+
* camera raises its own `recording-signal` level (a robot that cleans). There
|
|
7865
|
+
* is no schedule to author, because there is no hour to program — see
|
|
7866
|
+
* {@link RecordingConfigSchema}`.deviceDecision`.
|
|
7867
|
+
*
|
|
7868
|
+
* NEVER authored: the recorder stamps it from the authoritative intent
|
|
7869
|
+
* (`bands` + `deviceDecision`) on every save (`activeModeForConfig`). Writing it
|
|
7870
|
+
* has no effect.
|
|
7871
|
+
*
|
|
7872
|
+
* `on-device-decision` is named for WHO decides, not for how the recording is
|
|
7873
|
+
* requested. `on-demand` was rejected: in this repo's vocabulary a "demand" is
|
|
7874
|
+
* something the operator makes (the live gate is the recorder's own "demand
|
|
7875
|
+
* window"), and a knob whose name suggests the operator starts it while the
|
|
7876
|
+
* device actually does is the D62 shape — a control nobody can predict.
|
|
7866
7877
|
*/
|
|
7867
7878
|
var RecordingStorageModeSchema = _enum([
|
|
7868
7879
|
"off",
|
|
7869
7880
|
"events",
|
|
7870
|
-
"continuous"
|
|
7881
|
+
"continuous",
|
|
7882
|
+
"on-device-decision"
|
|
7871
7883
|
]);
|
|
7872
7884
|
/**
|
|
7873
7885
|
* Le macro classi che possono aprire una finestra di registrazione — le stesse
|
|
@@ -7917,22 +7929,7 @@ var RecordingTriggersSchema = object({
|
|
|
7917
7929
|
* il livello: un contatto trovato già aperto al riavvio del runner non fa
|
|
7918
7930
|
* registrare.
|
|
7919
7931
|
*/
|
|
7920
|
-
sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
|
|
7921
|
-
/**
|
|
7922
|
-
* La camera registra per tutta la durata del SEGNALE che lei stessa
|
|
7923
|
-
* pubblica — la cap `recording-signal` (`active: true` mentre il device è in
|
|
7924
|
-
* funzione: un robot che pulisce). È un LIVELLO, non un fronte: la finestra
|
|
7925
|
-
* resta aperta finché il segnale è alto e si chiude `postBufferSec` dopo la
|
|
7926
|
-
* caduta, così una pulizia di quaranta minuti è UNA clip.
|
|
7927
|
-
*
|
|
7928
|
-
* Non nomina un device: il segnale è della camera stessa, tenuto fresco dal
|
|
7929
|
-
* suo provider (D224); il recorder lo ascolta su `DeviceStateChanged` e lo
|
|
7930
|
-
* riconcilia leggendo la slice via RPC, con un tetto oltre il quale un
|
|
7931
|
-
* segnale mai abbassato (un evento perso) non può tenere aperta una
|
|
7932
|
-
* registrazione (D11). Vedi `recorder/addon/band-decision.ts`
|
|
7933
|
-
* (`holdTrigger` / `releaseTrigger`).
|
|
7934
|
-
*/
|
|
7935
|
-
deviceSignal: boolean().optional()
|
|
7932
|
+
sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
|
|
7936
7933
|
});
|
|
7937
7934
|
/**
|
|
7938
7935
|
* Mode of a single recording band — the recorder per-band vocabulary.
|
|
@@ -8016,8 +8013,29 @@ var RecordingConfigSchema = object({
|
|
|
8016
8013
|
* "off" is the absence of a covering band, never a band value.
|
|
8017
8014
|
*/
|
|
8018
8015
|
bands: array(RecordingBandSchema).default([]),
|
|
8016
|
+
/**
|
|
8017
|
+
* THE device-decided intent: record for as long as the camera itself raises
|
|
8018
|
+
* `recording-signal` (`active: true` while the device is in function — a
|
|
8019
|
+
* robot that cleans). AUTHORED, unlike `mode`, and the only authored
|
|
8020
|
+
* recording intent that is not a band.
|
|
8021
|
+
*
|
|
8022
|
+
* It carries NO schedule on purpose. A band is an HOUR, and this feature has
|
|
8023
|
+
* no hour to program: the device decides. What it costs the operator is one
|
|
8024
|
+
* flag — "this camera can record on its own" — and what it buys is the same
|
|
8025
|
+
* hold/release the recorder already implements (D371, `holdTrigger` /
|
|
8026
|
+
* `releaseTrigger`): the window opens on the rise, stays open for the whole
|
|
8027
|
+
* job however long it is, and closes one pad after the fall.
|
|
8028
|
+
*
|
|
8029
|
+
* EXCLUSIVE with `bands` (below): two authorities deciding when the same
|
|
8030
|
+
* camera records is the D62 failure. `off` remains `enabled: false`, so an
|
|
8031
|
+
* operator switching this camera off is REPORTED off, never as broken.
|
|
8032
|
+
*/
|
|
8033
|
+
deviceDecision: boolean().optional(),
|
|
8019
8034
|
retention: RecordingRetentionSchema.optional()
|
|
8020
|
-
}).strict()
|
|
8035
|
+
}).strict().refine((config) => config.deviceDecision !== true || config.bands.length === 0, {
|
|
8036
|
+
message: "deviceDecision is a whole-config mode and carries no schedule: it cannot be combined with bands",
|
|
8037
|
+
path: ["bands"]
|
|
8038
|
+
});
|
|
8021
8039
|
/**
|
|
8022
8040
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
8023
8041
|
*
|
|
@@ -20665,11 +20683,7 @@ var CameraAudioStatusSchema = object({
|
|
|
20665
20683
|
});
|
|
20666
20684
|
/** Recording block — null when no recording cap is active for this device. */
|
|
20667
20685
|
var CameraRecordingStatusSchema = object({
|
|
20668
|
-
mode:
|
|
20669
|
-
"off",
|
|
20670
|
-
"continuous",
|
|
20671
|
-
"events"
|
|
20672
|
-
]),
|
|
20686
|
+
mode: RecordingStorageModeSchema,
|
|
20673
20687
|
active: boolean(),
|
|
20674
20688
|
storageBytes: number()
|
|
20675
20689
|
});
|
|
@@ -27135,11 +27149,10 @@ DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, method(object({ deviceI
|
|
|
27135
27149
|
var RecordingStatusSchema = object({
|
|
27136
27150
|
deviceId: number(),
|
|
27137
27151
|
enabled: boolean(),
|
|
27138
|
-
|
|
27139
|
-
|
|
27140
|
-
|
|
27141
|
-
|
|
27142
|
-
]),
|
|
27152
|
+
/** THE derived storage mode, from the one definition
|
|
27153
|
+
* (`deriveRecordingMode`) — never a second enum. A duplicated list is how
|
|
27154
|
+
* `on-device-decision` could have reached the recorder and not the status. */
|
|
27155
|
+
activeMode: RecordingStorageModeSchema,
|
|
27143
27156
|
nodeId: string(),
|
|
27144
27157
|
storageBytes: number()
|
|
27145
27158
|
});
|
|
@@ -7834,17 +7834,29 @@ var HHMM = /^([01]\d|2[0-3]):[0-5]\d$/;
|
|
|
7834
7834
|
/**
|
|
7835
7835
|
* DERIVED per-camera storage summary — the single field cheap consumers read
|
|
7836
7836
|
* (the viewer's status dot, the camera list) instead of walking `bands`:
|
|
7837
|
-
* - `off`
|
|
7838
|
-
* - `events`
|
|
7839
|
-
* - `continuous`
|
|
7840
|
-
*
|
|
7841
|
-
*
|
|
7842
|
-
*
|
|
7837
|
+
* - `off` — no band covers the camera (or it is disabled).
|
|
7838
|
+
* - `events` — every band records around triggers only.
|
|
7839
|
+
* - `continuous` — at least one band records continuously.
|
|
7840
|
+
* - `on-device-decision`— the DEVICE decides: recording runs for as long as the
|
|
7841
|
+
* camera raises its own `recording-signal` level (a robot that cleans). There
|
|
7842
|
+
* is no schedule to author, because there is no hour to program — see
|
|
7843
|
+
* {@link RecordingConfigSchema}`.deviceDecision`.
|
|
7844
|
+
*
|
|
7845
|
+
* NEVER authored: the recorder stamps it from the authoritative intent
|
|
7846
|
+
* (`bands` + `deviceDecision`) on every save (`activeModeForConfig`). Writing it
|
|
7847
|
+
* has no effect.
|
|
7848
|
+
*
|
|
7849
|
+
* `on-device-decision` is named for WHO decides, not for how the recording is
|
|
7850
|
+
* requested. `on-demand` was rejected: in this repo's vocabulary a "demand" is
|
|
7851
|
+
* something the operator makes (the live gate is the recorder's own "demand
|
|
7852
|
+
* window"), and a knob whose name suggests the operator starts it while the
|
|
7853
|
+
* device actually does is the D62 shape — a control nobody can predict.
|
|
7843
7854
|
*/
|
|
7844
7855
|
var RecordingStorageModeSchema = _enum([
|
|
7845
7856
|
"off",
|
|
7846
7857
|
"events",
|
|
7847
|
-
"continuous"
|
|
7858
|
+
"continuous",
|
|
7859
|
+
"on-device-decision"
|
|
7848
7860
|
]);
|
|
7849
7861
|
/**
|
|
7850
7862
|
* Le macro classi che possono aprire una finestra di registrazione — le stesse
|
|
@@ -7894,22 +7906,7 @@ var RecordingTriggersSchema = object({
|
|
|
7894
7906
|
* il livello: un contatto trovato già aperto al riavvio del runner non fa
|
|
7895
7907
|
* registrare.
|
|
7896
7908
|
*/
|
|
7897
|
-
sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
|
|
7898
|
-
/**
|
|
7899
|
-
* La camera registra per tutta la durata del SEGNALE che lei stessa
|
|
7900
|
-
* pubblica — la cap `recording-signal` (`active: true` mentre il device è in
|
|
7901
|
-
* funzione: un robot che pulisce). È un LIVELLO, non un fronte: la finestra
|
|
7902
|
-
* resta aperta finché il segnale è alto e si chiude `postBufferSec` dopo la
|
|
7903
|
-
* caduta, così una pulizia di quaranta minuti è UNA clip.
|
|
7904
|
-
*
|
|
7905
|
-
* Non nomina un device: il segnale è della camera stessa, tenuto fresco dal
|
|
7906
|
-
* suo provider (D224); il recorder lo ascolta su `DeviceStateChanged` e lo
|
|
7907
|
-
* riconcilia leggendo la slice via RPC, con un tetto oltre il quale un
|
|
7908
|
-
* segnale mai abbassato (un evento perso) non può tenere aperta una
|
|
7909
|
-
* registrazione (D11). Vedi `recorder/addon/band-decision.ts`
|
|
7910
|
-
* (`holdTrigger` / `releaseTrigger`).
|
|
7911
|
-
*/
|
|
7912
|
-
deviceSignal: boolean().optional()
|
|
7909
|
+
sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
|
|
7913
7910
|
});
|
|
7914
7911
|
/**
|
|
7915
7912
|
* Mode of a single recording band — the recorder per-band vocabulary.
|
|
@@ -7993,8 +7990,29 @@ var RecordingConfigSchema = object({
|
|
|
7993
7990
|
* "off" is the absence of a covering band, never a band value.
|
|
7994
7991
|
*/
|
|
7995
7992
|
bands: array(RecordingBandSchema).default([]),
|
|
7993
|
+
/**
|
|
7994
|
+
* THE device-decided intent: record for as long as the camera itself raises
|
|
7995
|
+
* `recording-signal` (`active: true` while the device is in function — a
|
|
7996
|
+
* robot that cleans). AUTHORED, unlike `mode`, and the only authored
|
|
7997
|
+
* recording intent that is not a band.
|
|
7998
|
+
*
|
|
7999
|
+
* It carries NO schedule on purpose. A band is an HOUR, and this feature has
|
|
8000
|
+
* no hour to program: the device decides. What it costs the operator is one
|
|
8001
|
+
* flag — "this camera can record on its own" — and what it buys is the same
|
|
8002
|
+
* hold/release the recorder already implements (D371, `holdTrigger` /
|
|
8003
|
+
* `releaseTrigger`): the window opens on the rise, stays open for the whole
|
|
8004
|
+
* job however long it is, and closes one pad after the fall.
|
|
8005
|
+
*
|
|
8006
|
+
* EXCLUSIVE with `bands` (below): two authorities deciding when the same
|
|
8007
|
+
* camera records is the D62 failure. `off` remains `enabled: false`, so an
|
|
8008
|
+
* operator switching this camera off is REPORTED off, never as broken.
|
|
8009
|
+
*/
|
|
8010
|
+
deviceDecision: boolean().optional(),
|
|
7996
8011
|
retention: RecordingRetentionSchema.optional()
|
|
7997
|
-
}).strict()
|
|
8012
|
+
}).strict().refine((config) => config.deviceDecision !== true || config.bands.length === 0, {
|
|
8013
|
+
message: "deviceDecision is a whole-config mode and carries no schedule: it cannot be combined with bands",
|
|
8014
|
+
path: ["bands"]
|
|
8015
|
+
});
|
|
7998
8016
|
/**
|
|
7999
8017
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
8000
8018
|
*
|
|
@@ -20642,11 +20660,7 @@ var CameraAudioStatusSchema = object({
|
|
|
20642
20660
|
});
|
|
20643
20661
|
/** Recording block — null when no recording cap is active for this device. */
|
|
20644
20662
|
var CameraRecordingStatusSchema = object({
|
|
20645
|
-
mode:
|
|
20646
|
-
"off",
|
|
20647
|
-
"continuous",
|
|
20648
|
-
"events"
|
|
20649
|
-
]),
|
|
20663
|
+
mode: RecordingStorageModeSchema,
|
|
20650
20664
|
active: boolean(),
|
|
20651
20665
|
storageBytes: number()
|
|
20652
20666
|
});
|
|
@@ -27112,11 +27126,10 @@ DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, method(object({ deviceI
|
|
|
27112
27126
|
var RecordingStatusSchema = object({
|
|
27113
27127
|
deviceId: number(),
|
|
27114
27128
|
enabled: boolean(),
|
|
27115
|
-
|
|
27116
|
-
|
|
27117
|
-
|
|
27118
|
-
|
|
27119
|
-
]),
|
|
27129
|
+
/** THE derived storage mode, from the one definition
|
|
27130
|
+
* (`deriveRecordingMode`) — never a second enum. A duplicated list is how
|
|
27131
|
+
* `on-device-decision` could have reached the recorder and not the status. */
|
|
27132
|
+
activeMode: RecordingStorageModeSchema,
|
|
27120
27133
|
nodeId: string(),
|
|
27121
27134
|
storageBytes: number()
|
|
27122
27135
|
});
|
package/dist/smb.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-BFq0ZzN8.js");
|
|
6
6
|
let node_crypto = require("node:crypto");
|
|
7
7
|
let node_path = require("node:path");
|
|
8
8
|
node_path = require_shared.__toESM(node_path);
|
package/dist/smb.addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, s as storageProviderCapability } from "./shared-
|
|
1
|
+
import { c as BaseAddon, i as rearmIdleAbort, o as scheduleIdleAbort, s as storageProviderCapability } from "./shared-CTsaqcNM.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import * as path from "node:path";
|
|
4
4
|
import * as fsp from "node:fs/promises";
|
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-BFq0ZzN8.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-CTsaqcNM.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