@camstack/addon-remote-storage 1.2.46 → 1.2.47
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-DAxSJcnX.js → shared-BvqywmnV.js} +72 -0
- package/dist/{shared-hUiD7Ohg.mjs → shared-Cysa81KY.mjs} +72 -0
- 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-BvqywmnV.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-Cysa81KY.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-BvqywmnV.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-Cysa81KY.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
|
|
@@ -18761,6 +18761,50 @@ var EventStoreFootprintSchema = object({
|
|
|
18761
18761
|
totalBytes: number().int(),
|
|
18762
18762
|
devices: array(EventStoreDeviceFootprintSchema).readonly()
|
|
18763
18763
|
});
|
|
18764
|
+
/** Event-media footprint for one {@link MediaFileKind}. */
|
|
18765
|
+
var EventMediaKindFootprintSchema = object({
|
|
18766
|
+
kind: MediaFileKindEnum,
|
|
18767
|
+
/** Media rows of this kind. */
|
|
18768
|
+
rows: number().int(),
|
|
18769
|
+
/** Bytes on disk held by those rows. */
|
|
18770
|
+
bytes: number().int()
|
|
18771
|
+
});
|
|
18772
|
+
/**
|
|
18773
|
+
* The media footprint broken down by KIND — the axis a deletion decision
|
|
18774
|
+
* actually turns on.
|
|
18775
|
+
*
|
|
18776
|
+
* A byte total says how much there is; it cannot say what is safe to remove.
|
|
18777
|
+
* The deletable set (the periodic `snapshot` filmstrip, the surplus per-edge
|
|
18778
|
+
* motion stills) and the keep set (`firstFrame`, rolling `lastFrame`,
|
|
18779
|
+
* `thumbnail`/`thumbnailSmall`, `keyFrame`/`keyFrameSmall`, the face/plate
|
|
18780
|
+
* buffers, gallery media, the CLIP `crop`) are distinguished by `kind` and by
|
|
18781
|
+
* nothing else, so sizing a deletion means summing per kind.
|
|
18782
|
+
*
|
|
18783
|
+
* ## Why `unaccounted*` exists
|
|
18784
|
+
*
|
|
18785
|
+
* `kinds` is enumerated from {@link MediaFileKindEnum} — the closed set the
|
|
18786
|
+
* writers use — and summed one kind at a time. `totalRows` / `totalBytes` come
|
|
18787
|
+
* from a SEPARATE unfiltered aggregate over the same rows, never from adding
|
|
18788
|
+
* `kinds` up. A row whose stored `kind` is not in the enum (written by a
|
|
18789
|
+
* retired code path, or by a version that knew a kind this one does not) would
|
|
18790
|
+
* otherwise vanish from the total silently, and an operator would delete
|
|
18791
|
+
* against a denominator smaller than the disk.
|
|
18792
|
+
*
|
|
18793
|
+
* `unaccountedRows` / `unaccountedBytes` are the difference. They are normally
|
|
18794
|
+
* zero; a non-zero value is a real finding and must be shown, not rounded away.
|
|
18795
|
+
*/
|
|
18796
|
+
var EventMediaKindBreakdownSchema = object({
|
|
18797
|
+
/** Every media row in scope, from one unfiltered aggregate. */
|
|
18798
|
+
totalRows: number().int(),
|
|
18799
|
+
/** Every media byte in scope, from that same aggregate. */
|
|
18800
|
+
totalBytes: number().int(),
|
|
18801
|
+
/** Per-kind footprint, ordered by bytes descending. */
|
|
18802
|
+
kinds: array(EventMediaKindFootprintSchema).readonly(),
|
|
18803
|
+
/** `totalRows` minus the summed `kinds` rows — see the schema note. */
|
|
18804
|
+
unaccountedRows: number().int(),
|
|
18805
|
+
/** `totalBytes` minus the summed `kinds` bytes — see the schema note. */
|
|
18806
|
+
unaccountedBytes: number().int()
|
|
18807
|
+
});
|
|
18764
18808
|
/** Per-kind counts returned by the event-prune / device-delete mutations. */
|
|
18765
18809
|
var EventPruneCountsSchema = object({
|
|
18766
18810
|
motion: number().int(),
|
|
@@ -18964,6 +19008,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
18964
19008
|
}), TrackFlagsSchema, { kind: "mutation" }), method(object({}), EventStoreFootprintSchema, {
|
|
18965
19009
|
kind: "query",
|
|
18966
19010
|
auth: "admin"
|
|
19011
|
+
}), method(object({ deviceId: number().int().optional() }), EventMediaKindBreakdownSchema, {
|
|
19012
|
+
kind: "query",
|
|
19013
|
+
auth: "admin"
|
|
18967
19014
|
}), method(object({
|
|
18968
19015
|
olderThanMs: number(),
|
|
18969
19016
|
reason: OpsLogReasonSchema.optional()
|
|
@@ -20915,6 +20962,20 @@ method(object({
|
|
|
20915
20962
|
error: string().optional()
|
|
20916
20963
|
}), { auth: "admin" }), method(_void(), array(ProviderListEntrySchema).readonly()), method(object({
|
|
20917
20964
|
providerId: string(),
|
|
20965
|
+
/**
|
|
20966
|
+
* The location this config is an UNSAVED edit of, when there is one.
|
|
20967
|
+
*
|
|
20968
|
+
* `listLocations` replaces every declared secret with the redaction
|
|
20969
|
+
* sentinel, so the edit modal's form state holds the sentinel for any
|
|
20970
|
+
* credential the operator did not retype — and posting that here
|
|
20971
|
+
* without a way to resolve it makes the provider try to authenticate
|
|
20972
|
+
* as `__camstack_redacted__` and report the operator's own working
|
|
20973
|
+
* password as wrong. Given this id, the orchestrator restores each
|
|
20974
|
+
* sentinel from the stored config (same rule as `upsertLocation`)
|
|
20975
|
+
* before dispatching. Omitted by the "Add location" wizard, where
|
|
20976
|
+
* every value was typed just now and nothing is stored yet.
|
|
20977
|
+
*/
|
|
20978
|
+
locationId: string().optional(),
|
|
20918
20979
|
config: record(string(), unknown())
|
|
20919
20980
|
}), object({
|
|
20920
20981
|
ok: boolean(),
|
|
@@ -31629,6 +31690,12 @@ Object.freeze({
|
|
|
31629
31690
|
addonId: null,
|
|
31630
31691
|
access: "view"
|
|
31631
31692
|
},
|
|
31693
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": {
|
|
31694
|
+
capName: "pipeline-analytics",
|
|
31695
|
+
capScope: "device",
|
|
31696
|
+
addonId: null,
|
|
31697
|
+
access: "view"
|
|
31698
|
+
},
|
|
31632
31699
|
"pipelineAnalytics.getEventStoreFootprint": {
|
|
31633
31700
|
capName: "pipeline-analytics",
|
|
31634
31701
|
capScope: "device",
|
|
@@ -35294,6 +35361,11 @@ Object.freeze({
|
|
|
35294
35361
|
form: "single",
|
|
35295
35362
|
optional: false
|
|
35296
35363
|
}],
|
|
35364
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": [{
|
|
35365
|
+
name: "deviceId",
|
|
35366
|
+
form: "single",
|
|
35367
|
+
optional: true
|
|
35368
|
+
}],
|
|
35297
35369
|
"pipelineAnalytics.getGroup": [{
|
|
35298
35370
|
name: "deviceId",
|
|
35299
35371
|
form: "single",
|
|
@@ -18738,6 +18738,50 @@ var EventStoreFootprintSchema = object({
|
|
|
18738
18738
|
totalBytes: number().int(),
|
|
18739
18739
|
devices: array(EventStoreDeviceFootprintSchema).readonly()
|
|
18740
18740
|
});
|
|
18741
|
+
/** Event-media footprint for one {@link MediaFileKind}. */
|
|
18742
|
+
var EventMediaKindFootprintSchema = object({
|
|
18743
|
+
kind: MediaFileKindEnum,
|
|
18744
|
+
/** Media rows of this kind. */
|
|
18745
|
+
rows: number().int(),
|
|
18746
|
+
/** Bytes on disk held by those rows. */
|
|
18747
|
+
bytes: number().int()
|
|
18748
|
+
});
|
|
18749
|
+
/**
|
|
18750
|
+
* The media footprint broken down by KIND — the axis a deletion decision
|
|
18751
|
+
* actually turns on.
|
|
18752
|
+
*
|
|
18753
|
+
* A byte total says how much there is; it cannot say what is safe to remove.
|
|
18754
|
+
* The deletable set (the periodic `snapshot` filmstrip, the surplus per-edge
|
|
18755
|
+
* motion stills) and the keep set (`firstFrame`, rolling `lastFrame`,
|
|
18756
|
+
* `thumbnail`/`thumbnailSmall`, `keyFrame`/`keyFrameSmall`, the face/plate
|
|
18757
|
+
* buffers, gallery media, the CLIP `crop`) are distinguished by `kind` and by
|
|
18758
|
+
* nothing else, so sizing a deletion means summing per kind.
|
|
18759
|
+
*
|
|
18760
|
+
* ## Why `unaccounted*` exists
|
|
18761
|
+
*
|
|
18762
|
+
* `kinds` is enumerated from {@link MediaFileKindEnum} — the closed set the
|
|
18763
|
+
* writers use — and summed one kind at a time. `totalRows` / `totalBytes` come
|
|
18764
|
+
* from a SEPARATE unfiltered aggregate over the same rows, never from adding
|
|
18765
|
+
* `kinds` up. A row whose stored `kind` is not in the enum (written by a
|
|
18766
|
+
* retired code path, or by a version that knew a kind this one does not) would
|
|
18767
|
+
* otherwise vanish from the total silently, and an operator would delete
|
|
18768
|
+
* against a denominator smaller than the disk.
|
|
18769
|
+
*
|
|
18770
|
+
* `unaccountedRows` / `unaccountedBytes` are the difference. They are normally
|
|
18771
|
+
* zero; a non-zero value is a real finding and must be shown, not rounded away.
|
|
18772
|
+
*/
|
|
18773
|
+
var EventMediaKindBreakdownSchema = object({
|
|
18774
|
+
/** Every media row in scope, from one unfiltered aggregate. */
|
|
18775
|
+
totalRows: number().int(),
|
|
18776
|
+
/** Every media byte in scope, from that same aggregate. */
|
|
18777
|
+
totalBytes: number().int(),
|
|
18778
|
+
/** Per-kind footprint, ordered by bytes descending. */
|
|
18779
|
+
kinds: array(EventMediaKindFootprintSchema).readonly(),
|
|
18780
|
+
/** `totalRows` minus the summed `kinds` rows — see the schema note. */
|
|
18781
|
+
unaccountedRows: number().int(),
|
|
18782
|
+
/** `totalBytes` minus the summed `kinds` bytes — see the schema note. */
|
|
18783
|
+
unaccountedBytes: number().int()
|
|
18784
|
+
});
|
|
18741
18785
|
/** Per-kind counts returned by the event-prune / device-delete mutations. */
|
|
18742
18786
|
var EventPruneCountsSchema = object({
|
|
18743
18787
|
motion: number().int(),
|
|
@@ -18941,6 +18985,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
18941
18985
|
}), TrackFlagsSchema, { kind: "mutation" }), method(object({}), EventStoreFootprintSchema, {
|
|
18942
18986
|
kind: "query",
|
|
18943
18987
|
auth: "admin"
|
|
18988
|
+
}), method(object({ deviceId: number().int().optional() }), EventMediaKindBreakdownSchema, {
|
|
18989
|
+
kind: "query",
|
|
18990
|
+
auth: "admin"
|
|
18944
18991
|
}), method(object({
|
|
18945
18992
|
olderThanMs: number(),
|
|
18946
18993
|
reason: OpsLogReasonSchema.optional()
|
|
@@ -20892,6 +20939,20 @@ method(object({
|
|
|
20892
20939
|
error: string().optional()
|
|
20893
20940
|
}), { auth: "admin" }), method(_void(), array(ProviderListEntrySchema).readonly()), method(object({
|
|
20894
20941
|
providerId: string(),
|
|
20942
|
+
/**
|
|
20943
|
+
* The location this config is an UNSAVED edit of, when there is one.
|
|
20944
|
+
*
|
|
20945
|
+
* `listLocations` replaces every declared secret with the redaction
|
|
20946
|
+
* sentinel, so the edit modal's form state holds the sentinel for any
|
|
20947
|
+
* credential the operator did not retype — and posting that here
|
|
20948
|
+
* without a way to resolve it makes the provider try to authenticate
|
|
20949
|
+
* as `__camstack_redacted__` and report the operator's own working
|
|
20950
|
+
* password as wrong. Given this id, the orchestrator restores each
|
|
20951
|
+
* sentinel from the stored config (same rule as `upsertLocation`)
|
|
20952
|
+
* before dispatching. Omitted by the "Add location" wizard, where
|
|
20953
|
+
* every value was typed just now and nothing is stored yet.
|
|
20954
|
+
*/
|
|
20955
|
+
locationId: string().optional(),
|
|
20895
20956
|
config: record(string(), unknown())
|
|
20896
20957
|
}), object({
|
|
20897
20958
|
ok: boolean(),
|
|
@@ -31606,6 +31667,12 @@ Object.freeze({
|
|
|
31606
31667
|
addonId: null,
|
|
31607
31668
|
access: "view"
|
|
31608
31669
|
},
|
|
31670
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": {
|
|
31671
|
+
capName: "pipeline-analytics",
|
|
31672
|
+
capScope: "device",
|
|
31673
|
+
addonId: null,
|
|
31674
|
+
access: "view"
|
|
31675
|
+
},
|
|
31609
31676
|
"pipelineAnalytics.getEventStoreFootprint": {
|
|
31610
31677
|
capName: "pipeline-analytics",
|
|
31611
31678
|
capScope: "device",
|
|
@@ -35271,6 +35338,11 @@ Object.freeze({
|
|
|
35271
35338
|
form: "single",
|
|
35272
35339
|
optional: false
|
|
35273
35340
|
}],
|
|
35341
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": [{
|
|
35342
|
+
name: "deviceId",
|
|
35343
|
+
form: "single",
|
|
35344
|
+
optional: true
|
|
35345
|
+
}],
|
|
35274
35346
|
"pipelineAnalytics.getGroup": [{
|
|
35275
35347
|
name: "deviceId",
|
|
35276
35348
|
form: "single",
|
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-BvqywmnV.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-Cysa81KY.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-BvqywmnV.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-Cysa81KY.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