@camstack/addon-remote-storage 1.2.29 → 1.2.30
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-bMDvPUOr.mjs → shared-C7DW_fGa.mjs} +77 -2
- package/dist/{shared-DNv3D9pu.js → shared-CjXJLI0c.js} +77 -2
- 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-CjXJLI0c.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-C7DW_fGa.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-CjXJLI0c.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-C7DW_fGa.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
|
|
@@ -15465,7 +15465,23 @@ var NcHistoryEntrySchema = object({
|
|
|
15465
15465
|
updatedAt: number(),
|
|
15466
15466
|
/** Failure detail — present on a `dead` row. */
|
|
15467
15467
|
error: string().optional(),
|
|
15468
|
-
subject: NcHistorySubjectSchema
|
|
15468
|
+
subject: NcHistorySubjectSchema,
|
|
15469
|
+
/**
|
|
15470
|
+
* Ids of the artefacts (still, then gif, then clip) this row's successful
|
|
15471
|
+
* delivery indexed in the artefact library — a REFERENCE, never the bytes
|
|
15472
|
+
* (an artefact is often megabytes; this row is durable JSON rewritten on
|
|
15473
|
+
* every delivery attempt). Absent on a row still pending/dead, a row
|
|
15474
|
+
* delivered before this field shipped, or a wiring with no artefact index.
|
|
15475
|
+
*
|
|
15476
|
+
* Resolve one to a fetchable URL with `resolveArtifactUrl` — an id
|
|
15477
|
+
* outlives any one URL's TTL, so a caller mints a fresh link on demand
|
|
15478
|
+
* rather than trusting one frozen at delivery time. `resolveArtifactUrl`
|
|
15479
|
+
* also answers `null` for an id whose artefact has since expired past the
|
|
15480
|
+
* retained shelf's own age bound — the degrade a caller (the Home
|
|
15481
|
+
* Assistant export) must render as "no image right now", never as a
|
|
15482
|
+
* broken link.
|
|
15483
|
+
*/
|
|
15484
|
+
artifactIds: array(string().min(1)).optional()
|
|
15469
15485
|
});
|
|
15470
15486
|
/**
|
|
15471
15487
|
* Query filter for `getHistory` (spec §4.2). Every field is a narrowing
|
|
@@ -15692,7 +15708,7 @@ method(object({}), object({ rules: array(NcRuleSchema) }), { auth: "admin" }), m
|
|
|
15692
15708
|
}), method(object({}), object({
|
|
15693
15709
|
catalog: array(NcConditionDescriptorSchema),
|
|
15694
15710
|
taxonomy: NcTaxonomySchema.optional()
|
|
15695
|
-
})), method(object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), object({ entries: array(NcHistoryEntrySchema) }), { auth: "admin" }), method(object({}), object({ snoozes: array(NcSnoozeSchema) }), { caller: "required" }), method(object({ snooze: NcSnoozeInputSchema }), object({ snooze: NcSnoozeSchema }), {
|
|
15711
|
+
})), method(object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), object({ entries: array(NcHistoryEntrySchema) }), { auth: "admin" }), method(object({ artifactId: string().min(1) }), object({ url: string().nullable() }), { auth: "admin" }), method(object({}), object({ snoozes: array(NcSnoozeSchema) }), { caller: "required" }), method(object({ snooze: NcSnoozeInputSchema }), object({ snooze: NcSnoozeSchema }), {
|
|
15696
15712
|
kind: "mutation",
|
|
15697
15713
|
caller: "required"
|
|
15698
15714
|
}), method(object({ snoozeId: string() }), object({ success: literal(true) }), {
|
|
@@ -25044,6 +25060,39 @@ var ReadGopBytesResultSchema = object({
|
|
|
25044
25060
|
/** Media ms the returned fragment covers. */
|
|
25045
25061
|
gopDurMs: number()
|
|
25046
25062
|
});
|
|
25063
|
+
/**
|
|
25064
|
+
* A time WINDOW of one finalized segment, cut by byte range — the multi-GOP
|
|
25065
|
+
* twin of {@link ReadGopBytesResultSchema}'s single instant. Built for the
|
|
25066
|
+
* replay clip's `recording` source (`docs/design/plans/2026-08-26-replay-clip-su-pipeline.md`):
|
|
25067
|
+
* a replay needs several seconds of native pixels, not one frame.
|
|
25068
|
+
*
|
|
25069
|
+
* `ok.data` is standalone-demuxable, same as a GOP read. `ok.reachesRequestedEnd`
|
|
25070
|
+
* is `false` when the returned bytes were cut short by the read's own safety
|
|
25071
|
+
* byte cap before covering `[fromMs, toMs)` — a truncation, reported, not a
|
|
25072
|
+
* silently shorter answer. `spans-multiple-segments` is a REFUSAL, not a
|
|
25073
|
+
* degradation: a window whose end falls past the covering segment would need
|
|
25074
|
+
* bytes stitched from a second segment file (its own `ftyp`+`moov`), which is
|
|
25075
|
+
* not one standalone-demuxable stream — the caller's answer is to request a
|
|
25076
|
+
* shorter window or one aligned to a single segment, not to receive spliced
|
|
25077
|
+
* bytes nothing has proven decodable.
|
|
25078
|
+
*/
|
|
25079
|
+
var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
|
|
25080
|
+
kind: literal("ok"),
|
|
25081
|
+
data: _instanceof(Uint8Array),
|
|
25082
|
+
/** Absolute epoch ms of the returned bytes' first sample — at or before
|
|
25083
|
+
* the requested `fromMs` (anchored on the nearest keyframe). */
|
|
25084
|
+
gopStartMs: number(),
|
|
25085
|
+
/** Media ms the returned bytes cover, from `gopStartMs`. */
|
|
25086
|
+
gopDurMs: number(),
|
|
25087
|
+
/** `false` ⇒ the safety byte cap cut the read short before it reached
|
|
25088
|
+
* the requested `toMs`; the caller got fewer frames than asked for. */
|
|
25089
|
+
reachesRequestedEnd: boolean()
|
|
25090
|
+
}), object({
|
|
25091
|
+
kind: literal("spans-multiple-segments"),
|
|
25092
|
+
/** Where the covering segment's own footage runs out — informational,
|
|
25093
|
+
* not a retry hint (retrying the same window would refuse again). */
|
|
25094
|
+
segmentEndMs: number()
|
|
25095
|
+
})]);
|
|
25047
25096
|
method(object({
|
|
25048
25097
|
deviceId: number(),
|
|
25049
25098
|
fromMs: number(),
|
|
@@ -25094,6 +25143,15 @@ method(object({
|
|
|
25094
25143
|
}), ReadGopBytesResultSchema, {
|
|
25095
25144
|
kind: "query",
|
|
25096
25145
|
auth: "admin"
|
|
25146
|
+
}), method(object({
|
|
25147
|
+
deviceId: number(),
|
|
25148
|
+
profile: string(),
|
|
25149
|
+
startMs: number(),
|
|
25150
|
+
fromMs: number(),
|
|
25151
|
+
toMs: number()
|
|
25152
|
+
}), ReadWindowBytesResultSchema, {
|
|
25153
|
+
kind: "query",
|
|
25154
|
+
auth: "admin"
|
|
25097
25155
|
}), method(object({
|
|
25098
25156
|
deviceId: number(),
|
|
25099
25157
|
config: RecordingConfigSchema
|
|
@@ -29512,6 +29570,12 @@ Object.freeze({
|
|
|
29512
29570
|
addonId: null,
|
|
29513
29571
|
access: "view"
|
|
29514
29572
|
},
|
|
29573
|
+
"notificationRules.resolveArtifactUrl": {
|
|
29574
|
+
capName: "notification-rules",
|
|
29575
|
+
capScope: "system",
|
|
29576
|
+
addonId: null,
|
|
29577
|
+
access: "view"
|
|
29578
|
+
},
|
|
29515
29579
|
"notificationRules.setAlarmConfig": {
|
|
29516
29580
|
capName: "notification-rules",
|
|
29517
29581
|
capScope: "system",
|
|
@@ -30916,6 +30980,12 @@ Object.freeze({
|
|
|
30916
30980
|
addonId: null,
|
|
30917
30981
|
access: "view"
|
|
30918
30982
|
},
|
|
30983
|
+
"recording.readWindowBytes": {
|
|
30984
|
+
capName: "recording",
|
|
30985
|
+
capScope: "system",
|
|
30986
|
+
addonId: null,
|
|
30987
|
+
access: "view"
|
|
30988
|
+
},
|
|
30919
30989
|
"recording.refreshStorageLocationsForMigration": {
|
|
30920
30990
|
capName: "recording",
|
|
30921
30991
|
capScope: "system",
|
|
@@ -33746,6 +33816,11 @@ Object.freeze({
|
|
|
33746
33816
|
form: "single",
|
|
33747
33817
|
optional: false
|
|
33748
33818
|
}],
|
|
33819
|
+
"recording.readWindowBytes": [{
|
|
33820
|
+
name: "deviceId",
|
|
33821
|
+
form: "single",
|
|
33822
|
+
optional: false
|
|
33823
|
+
}],
|
|
33749
33824
|
"recording.relocateFootage": [{
|
|
33750
33825
|
name: "deviceId",
|
|
33751
33826
|
form: "single",
|
|
@@ -15488,7 +15488,23 @@ var NcHistoryEntrySchema = object({
|
|
|
15488
15488
|
updatedAt: number(),
|
|
15489
15489
|
/** Failure detail — present on a `dead` row. */
|
|
15490
15490
|
error: string().optional(),
|
|
15491
|
-
subject: NcHistorySubjectSchema
|
|
15491
|
+
subject: NcHistorySubjectSchema,
|
|
15492
|
+
/**
|
|
15493
|
+
* Ids of the artefacts (still, then gif, then clip) this row's successful
|
|
15494
|
+
* delivery indexed in the artefact library — a REFERENCE, never the bytes
|
|
15495
|
+
* (an artefact is often megabytes; this row is durable JSON rewritten on
|
|
15496
|
+
* every delivery attempt). Absent on a row still pending/dead, a row
|
|
15497
|
+
* delivered before this field shipped, or a wiring with no artefact index.
|
|
15498
|
+
*
|
|
15499
|
+
* Resolve one to a fetchable URL with `resolveArtifactUrl` — an id
|
|
15500
|
+
* outlives any one URL's TTL, so a caller mints a fresh link on demand
|
|
15501
|
+
* rather than trusting one frozen at delivery time. `resolveArtifactUrl`
|
|
15502
|
+
* also answers `null` for an id whose artefact has since expired past the
|
|
15503
|
+
* retained shelf's own age bound — the degrade a caller (the Home
|
|
15504
|
+
* Assistant export) must render as "no image right now", never as a
|
|
15505
|
+
* broken link.
|
|
15506
|
+
*/
|
|
15507
|
+
artifactIds: array(string().min(1)).optional()
|
|
15492
15508
|
});
|
|
15493
15509
|
/**
|
|
15494
15510
|
* Query filter for `getHistory` (spec §4.2). Every field is a narrowing
|
|
@@ -15715,7 +15731,7 @@ method(object({}), object({ rules: array(NcRuleSchema) }), { auth: "admin" }), m
|
|
|
15715
15731
|
}), method(object({}), object({
|
|
15716
15732
|
catalog: array(NcConditionDescriptorSchema),
|
|
15717
15733
|
taxonomy: NcTaxonomySchema.optional()
|
|
15718
|
-
})), method(object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), object({ entries: array(NcHistoryEntrySchema) }), { auth: "admin" }), method(object({}), object({ snoozes: array(NcSnoozeSchema) }), { caller: "required" }), method(object({ snooze: NcSnoozeInputSchema }), object({ snooze: NcSnoozeSchema }), {
|
|
15734
|
+
})), method(object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), object({ entries: array(NcHistoryEntrySchema) }), { auth: "admin" }), method(object({ artifactId: string().min(1) }), object({ url: string().nullable() }), { auth: "admin" }), method(object({}), object({ snoozes: array(NcSnoozeSchema) }), { caller: "required" }), method(object({ snooze: NcSnoozeInputSchema }), object({ snooze: NcSnoozeSchema }), {
|
|
15719
15735
|
kind: "mutation",
|
|
15720
15736
|
caller: "required"
|
|
15721
15737
|
}), method(object({ snoozeId: string() }), object({ success: literal(true) }), {
|
|
@@ -25067,6 +25083,39 @@ var ReadGopBytesResultSchema = object({
|
|
|
25067
25083
|
/** Media ms the returned fragment covers. */
|
|
25068
25084
|
gopDurMs: number()
|
|
25069
25085
|
});
|
|
25086
|
+
/**
|
|
25087
|
+
* A time WINDOW of one finalized segment, cut by byte range — the multi-GOP
|
|
25088
|
+
* twin of {@link ReadGopBytesResultSchema}'s single instant. Built for the
|
|
25089
|
+
* replay clip's `recording` source (`docs/design/plans/2026-08-26-replay-clip-su-pipeline.md`):
|
|
25090
|
+
* a replay needs several seconds of native pixels, not one frame.
|
|
25091
|
+
*
|
|
25092
|
+
* `ok.data` is standalone-demuxable, same as a GOP read. `ok.reachesRequestedEnd`
|
|
25093
|
+
* is `false` when the returned bytes were cut short by the read's own safety
|
|
25094
|
+
* byte cap before covering `[fromMs, toMs)` — a truncation, reported, not a
|
|
25095
|
+
* silently shorter answer. `spans-multiple-segments` is a REFUSAL, not a
|
|
25096
|
+
* degradation: a window whose end falls past the covering segment would need
|
|
25097
|
+
* bytes stitched from a second segment file (its own `ftyp`+`moov`), which is
|
|
25098
|
+
* not one standalone-demuxable stream — the caller's answer is to request a
|
|
25099
|
+
* shorter window or one aligned to a single segment, not to receive spliced
|
|
25100
|
+
* bytes nothing has proven decodable.
|
|
25101
|
+
*/
|
|
25102
|
+
var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
|
|
25103
|
+
kind: literal("ok"),
|
|
25104
|
+
data: _instanceof(Uint8Array),
|
|
25105
|
+
/** Absolute epoch ms of the returned bytes' first sample — at or before
|
|
25106
|
+
* the requested `fromMs` (anchored on the nearest keyframe). */
|
|
25107
|
+
gopStartMs: number(),
|
|
25108
|
+
/** Media ms the returned bytes cover, from `gopStartMs`. */
|
|
25109
|
+
gopDurMs: number(),
|
|
25110
|
+
/** `false` ⇒ the safety byte cap cut the read short before it reached
|
|
25111
|
+
* the requested `toMs`; the caller got fewer frames than asked for. */
|
|
25112
|
+
reachesRequestedEnd: boolean()
|
|
25113
|
+
}), object({
|
|
25114
|
+
kind: literal("spans-multiple-segments"),
|
|
25115
|
+
/** Where the covering segment's own footage runs out — informational,
|
|
25116
|
+
* not a retry hint (retrying the same window would refuse again). */
|
|
25117
|
+
segmentEndMs: number()
|
|
25118
|
+
})]);
|
|
25070
25119
|
method(object({
|
|
25071
25120
|
deviceId: number(),
|
|
25072
25121
|
fromMs: number(),
|
|
@@ -25117,6 +25166,15 @@ method(object({
|
|
|
25117
25166
|
}), ReadGopBytesResultSchema, {
|
|
25118
25167
|
kind: "query",
|
|
25119
25168
|
auth: "admin"
|
|
25169
|
+
}), method(object({
|
|
25170
|
+
deviceId: number(),
|
|
25171
|
+
profile: string(),
|
|
25172
|
+
startMs: number(),
|
|
25173
|
+
fromMs: number(),
|
|
25174
|
+
toMs: number()
|
|
25175
|
+
}), ReadWindowBytesResultSchema, {
|
|
25176
|
+
kind: "query",
|
|
25177
|
+
auth: "admin"
|
|
25120
25178
|
}), method(object({
|
|
25121
25179
|
deviceId: number(),
|
|
25122
25180
|
config: RecordingConfigSchema
|
|
@@ -29535,6 +29593,12 @@ Object.freeze({
|
|
|
29535
29593
|
addonId: null,
|
|
29536
29594
|
access: "view"
|
|
29537
29595
|
},
|
|
29596
|
+
"notificationRules.resolveArtifactUrl": {
|
|
29597
|
+
capName: "notification-rules",
|
|
29598
|
+
capScope: "system",
|
|
29599
|
+
addonId: null,
|
|
29600
|
+
access: "view"
|
|
29601
|
+
},
|
|
29538
29602
|
"notificationRules.setAlarmConfig": {
|
|
29539
29603
|
capName: "notification-rules",
|
|
29540
29604
|
capScope: "system",
|
|
@@ -30939,6 +31003,12 @@ Object.freeze({
|
|
|
30939
31003
|
addonId: null,
|
|
30940
31004
|
access: "view"
|
|
30941
31005
|
},
|
|
31006
|
+
"recording.readWindowBytes": {
|
|
31007
|
+
capName: "recording",
|
|
31008
|
+
capScope: "system",
|
|
31009
|
+
addonId: null,
|
|
31010
|
+
access: "view"
|
|
31011
|
+
},
|
|
30942
31012
|
"recording.refreshStorageLocationsForMigration": {
|
|
30943
31013
|
capName: "recording",
|
|
30944
31014
|
capScope: "system",
|
|
@@ -33769,6 +33839,11 @@ Object.freeze({
|
|
|
33769
33839
|
form: "single",
|
|
33770
33840
|
optional: false
|
|
33771
33841
|
}],
|
|
33842
|
+
"recording.readWindowBytes": [{
|
|
33843
|
+
name: "deviceId",
|
|
33844
|
+
form: "single",
|
|
33845
|
+
optional: false
|
|
33846
|
+
}],
|
|
33772
33847
|
"recording.relocateFootage": [{
|
|
33773
33848
|
name: "deviceId",
|
|
33774
33849
|
form: "single",
|
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-CjXJLI0c.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-C7DW_fGa.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