@camstack/addon-decoder-ffmpeg 1.2.47 → 1.2.48
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/index.js +72 -0
- package/dist/index.mjs +72 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -18884,6 +18884,50 @@ var EventStoreFootprintSchema = object({
|
|
|
18884
18884
|
totalBytes: number().int(),
|
|
18885
18885
|
devices: array(EventStoreDeviceFootprintSchema).readonly()
|
|
18886
18886
|
});
|
|
18887
|
+
/** Event-media footprint for one {@link MediaFileKind}. */
|
|
18888
|
+
var EventMediaKindFootprintSchema = object({
|
|
18889
|
+
kind: MediaFileKindEnum,
|
|
18890
|
+
/** Media rows of this kind. */
|
|
18891
|
+
rows: number().int(),
|
|
18892
|
+
/** Bytes on disk held by those rows. */
|
|
18893
|
+
bytes: number().int()
|
|
18894
|
+
});
|
|
18895
|
+
/**
|
|
18896
|
+
* The media footprint broken down by KIND — the axis a deletion decision
|
|
18897
|
+
* actually turns on.
|
|
18898
|
+
*
|
|
18899
|
+
* A byte total says how much there is; it cannot say what is safe to remove.
|
|
18900
|
+
* The deletable set (the periodic `snapshot` filmstrip, the surplus per-edge
|
|
18901
|
+
* motion stills) and the keep set (`firstFrame`, rolling `lastFrame`,
|
|
18902
|
+
* `thumbnail`/`thumbnailSmall`, `keyFrame`/`keyFrameSmall`, the face/plate
|
|
18903
|
+
* buffers, gallery media, the CLIP `crop`) are distinguished by `kind` and by
|
|
18904
|
+
* nothing else, so sizing a deletion means summing per kind.
|
|
18905
|
+
*
|
|
18906
|
+
* ## Why `unaccounted*` exists
|
|
18907
|
+
*
|
|
18908
|
+
* `kinds` is enumerated from {@link MediaFileKindEnum} — the closed set the
|
|
18909
|
+
* writers use — and summed one kind at a time. `totalRows` / `totalBytes` come
|
|
18910
|
+
* from a SEPARATE unfiltered aggregate over the same rows, never from adding
|
|
18911
|
+
* `kinds` up. A row whose stored `kind` is not in the enum (written by a
|
|
18912
|
+
* retired code path, or by a version that knew a kind this one does not) would
|
|
18913
|
+
* otherwise vanish from the total silently, and an operator would delete
|
|
18914
|
+
* against a denominator smaller than the disk.
|
|
18915
|
+
*
|
|
18916
|
+
* `unaccountedRows` / `unaccountedBytes` are the difference. They are normally
|
|
18917
|
+
* zero; a non-zero value is a real finding and must be shown, not rounded away.
|
|
18918
|
+
*/
|
|
18919
|
+
var EventMediaKindBreakdownSchema = object({
|
|
18920
|
+
/** Every media row in scope, from one unfiltered aggregate. */
|
|
18921
|
+
totalRows: number().int(),
|
|
18922
|
+
/** Every media byte in scope, from that same aggregate. */
|
|
18923
|
+
totalBytes: number().int(),
|
|
18924
|
+
/** Per-kind footprint, ordered by bytes descending. */
|
|
18925
|
+
kinds: array(EventMediaKindFootprintSchema).readonly(),
|
|
18926
|
+
/** `totalRows` minus the summed `kinds` rows — see the schema note. */
|
|
18927
|
+
unaccountedRows: number().int(),
|
|
18928
|
+
/** `totalBytes` minus the summed `kinds` bytes — see the schema note. */
|
|
18929
|
+
unaccountedBytes: number().int()
|
|
18930
|
+
});
|
|
18887
18931
|
/** Per-kind counts returned by the event-prune / device-delete mutations. */
|
|
18888
18932
|
var EventPruneCountsSchema = object({
|
|
18889
18933
|
motion: number().int(),
|
|
@@ -19087,6 +19131,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19087
19131
|
}), TrackFlagsSchema, { kind: "mutation" }), method(object({}), EventStoreFootprintSchema, {
|
|
19088
19132
|
kind: "query",
|
|
19089
19133
|
auth: "admin"
|
|
19134
|
+
}), method(object({ deviceId: number().int().optional() }), EventMediaKindBreakdownSchema, {
|
|
19135
|
+
kind: "query",
|
|
19136
|
+
auth: "admin"
|
|
19090
19137
|
}), method(object({
|
|
19091
19138
|
olderThanMs: number(),
|
|
19092
19139
|
reason: OpsLogReasonSchema.optional()
|
|
@@ -21038,6 +21085,20 @@ method(object({
|
|
|
21038
21085
|
error: string().optional()
|
|
21039
21086
|
}), { auth: "admin" }), method(_void(), array(ProviderListEntrySchema).readonly()), method(object({
|
|
21040
21087
|
providerId: string(),
|
|
21088
|
+
/**
|
|
21089
|
+
* The location this config is an UNSAVED edit of, when there is one.
|
|
21090
|
+
*
|
|
21091
|
+
* `listLocations` replaces every declared secret with the redaction
|
|
21092
|
+
* sentinel, so the edit modal's form state holds the sentinel for any
|
|
21093
|
+
* credential the operator did not retype — and posting that here
|
|
21094
|
+
* without a way to resolve it makes the provider try to authenticate
|
|
21095
|
+
* as `__camstack_redacted__` and report the operator's own working
|
|
21096
|
+
* password as wrong. Given this id, the orchestrator restores each
|
|
21097
|
+
* sentinel from the stored config (same rule as `upsertLocation`)
|
|
21098
|
+
* before dispatching. Omitted by the "Add location" wizard, where
|
|
21099
|
+
* every value was typed just now and nothing is stored yet.
|
|
21100
|
+
*/
|
|
21101
|
+
locationId: string().optional(),
|
|
21041
21102
|
config: record(string(), unknown())
|
|
21042
21103
|
}), object({
|
|
21043
21104
|
ok: boolean(),
|
|
@@ -31692,6 +31753,12 @@ Object.freeze({
|
|
|
31692
31753
|
addonId: null,
|
|
31693
31754
|
access: "view"
|
|
31694
31755
|
},
|
|
31756
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": {
|
|
31757
|
+
capName: "pipeline-analytics",
|
|
31758
|
+
capScope: "device",
|
|
31759
|
+
addonId: null,
|
|
31760
|
+
access: "view"
|
|
31761
|
+
},
|
|
31695
31762
|
"pipelineAnalytics.getEventStoreFootprint": {
|
|
31696
31763
|
capName: "pipeline-analytics",
|
|
31697
31764
|
capScope: "device",
|
|
@@ -35357,6 +35424,11 @@ Object.freeze({
|
|
|
35357
35424
|
form: "single",
|
|
35358
35425
|
optional: false
|
|
35359
35426
|
}],
|
|
35427
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": [{
|
|
35428
|
+
name: "deviceId",
|
|
35429
|
+
form: "single",
|
|
35430
|
+
optional: true
|
|
35431
|
+
}],
|
|
35360
35432
|
"pipelineAnalytics.getGroup": [{
|
|
35361
35433
|
name: "deviceId",
|
|
35362
35434
|
form: "single",
|
package/dist/index.mjs
CHANGED
|
@@ -18880,6 +18880,50 @@ var EventStoreFootprintSchema = object({
|
|
|
18880
18880
|
totalBytes: number().int(),
|
|
18881
18881
|
devices: array(EventStoreDeviceFootprintSchema).readonly()
|
|
18882
18882
|
});
|
|
18883
|
+
/** Event-media footprint for one {@link MediaFileKind}. */
|
|
18884
|
+
var EventMediaKindFootprintSchema = object({
|
|
18885
|
+
kind: MediaFileKindEnum,
|
|
18886
|
+
/** Media rows of this kind. */
|
|
18887
|
+
rows: number().int(),
|
|
18888
|
+
/** Bytes on disk held by those rows. */
|
|
18889
|
+
bytes: number().int()
|
|
18890
|
+
});
|
|
18891
|
+
/**
|
|
18892
|
+
* The media footprint broken down by KIND — the axis a deletion decision
|
|
18893
|
+
* actually turns on.
|
|
18894
|
+
*
|
|
18895
|
+
* A byte total says how much there is; it cannot say what is safe to remove.
|
|
18896
|
+
* The deletable set (the periodic `snapshot` filmstrip, the surplus per-edge
|
|
18897
|
+
* motion stills) and the keep set (`firstFrame`, rolling `lastFrame`,
|
|
18898
|
+
* `thumbnail`/`thumbnailSmall`, `keyFrame`/`keyFrameSmall`, the face/plate
|
|
18899
|
+
* buffers, gallery media, the CLIP `crop`) are distinguished by `kind` and by
|
|
18900
|
+
* nothing else, so sizing a deletion means summing per kind.
|
|
18901
|
+
*
|
|
18902
|
+
* ## Why `unaccounted*` exists
|
|
18903
|
+
*
|
|
18904
|
+
* `kinds` is enumerated from {@link MediaFileKindEnum} — the closed set the
|
|
18905
|
+
* writers use — and summed one kind at a time. `totalRows` / `totalBytes` come
|
|
18906
|
+
* from a SEPARATE unfiltered aggregate over the same rows, never from adding
|
|
18907
|
+
* `kinds` up. A row whose stored `kind` is not in the enum (written by a
|
|
18908
|
+
* retired code path, or by a version that knew a kind this one does not) would
|
|
18909
|
+
* otherwise vanish from the total silently, and an operator would delete
|
|
18910
|
+
* against a denominator smaller than the disk.
|
|
18911
|
+
*
|
|
18912
|
+
* `unaccountedRows` / `unaccountedBytes` are the difference. They are normally
|
|
18913
|
+
* zero; a non-zero value is a real finding and must be shown, not rounded away.
|
|
18914
|
+
*/
|
|
18915
|
+
var EventMediaKindBreakdownSchema = object({
|
|
18916
|
+
/** Every media row in scope, from one unfiltered aggregate. */
|
|
18917
|
+
totalRows: number().int(),
|
|
18918
|
+
/** Every media byte in scope, from that same aggregate. */
|
|
18919
|
+
totalBytes: number().int(),
|
|
18920
|
+
/** Per-kind footprint, ordered by bytes descending. */
|
|
18921
|
+
kinds: array(EventMediaKindFootprintSchema).readonly(),
|
|
18922
|
+
/** `totalRows` minus the summed `kinds` rows — see the schema note. */
|
|
18923
|
+
unaccountedRows: number().int(),
|
|
18924
|
+
/** `totalBytes` minus the summed `kinds` bytes — see the schema note. */
|
|
18925
|
+
unaccountedBytes: number().int()
|
|
18926
|
+
});
|
|
18883
18927
|
/** Per-kind counts returned by the event-prune / device-delete mutations. */
|
|
18884
18928
|
var EventPruneCountsSchema = object({
|
|
18885
18929
|
motion: number().int(),
|
|
@@ -19083,6 +19127,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19083
19127
|
}), TrackFlagsSchema, { kind: "mutation" }), method(object({}), EventStoreFootprintSchema, {
|
|
19084
19128
|
kind: "query",
|
|
19085
19129
|
auth: "admin"
|
|
19130
|
+
}), method(object({ deviceId: number().int().optional() }), EventMediaKindBreakdownSchema, {
|
|
19131
|
+
kind: "query",
|
|
19132
|
+
auth: "admin"
|
|
19086
19133
|
}), method(object({
|
|
19087
19134
|
olderThanMs: number(),
|
|
19088
19135
|
reason: OpsLogReasonSchema.optional()
|
|
@@ -21034,6 +21081,20 @@ method(object({
|
|
|
21034
21081
|
error: string().optional()
|
|
21035
21082
|
}), { auth: "admin" }), method(_void(), array(ProviderListEntrySchema).readonly()), method(object({
|
|
21036
21083
|
providerId: string(),
|
|
21084
|
+
/**
|
|
21085
|
+
* The location this config is an UNSAVED edit of, when there is one.
|
|
21086
|
+
*
|
|
21087
|
+
* `listLocations` replaces every declared secret with the redaction
|
|
21088
|
+
* sentinel, so the edit modal's form state holds the sentinel for any
|
|
21089
|
+
* credential the operator did not retype — and posting that here
|
|
21090
|
+
* without a way to resolve it makes the provider try to authenticate
|
|
21091
|
+
* as `__camstack_redacted__` and report the operator's own working
|
|
21092
|
+
* password as wrong. Given this id, the orchestrator restores each
|
|
21093
|
+
* sentinel from the stored config (same rule as `upsertLocation`)
|
|
21094
|
+
* before dispatching. Omitted by the "Add location" wizard, where
|
|
21095
|
+
* every value was typed just now and nothing is stored yet.
|
|
21096
|
+
*/
|
|
21097
|
+
locationId: string().optional(),
|
|
21037
21098
|
config: record(string(), unknown())
|
|
21038
21099
|
}), object({
|
|
21039
21100
|
ok: boolean(),
|
|
@@ -31688,6 +31749,12 @@ Object.freeze({
|
|
|
31688
31749
|
addonId: null,
|
|
31689
31750
|
access: "view"
|
|
31690
31751
|
},
|
|
31752
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": {
|
|
31753
|
+
capName: "pipeline-analytics",
|
|
31754
|
+
capScope: "device",
|
|
31755
|
+
addonId: null,
|
|
31756
|
+
access: "view"
|
|
31757
|
+
},
|
|
31691
31758
|
"pipelineAnalytics.getEventStoreFootprint": {
|
|
31692
31759
|
capName: "pipeline-analytics",
|
|
31693
31760
|
capScope: "device",
|
|
@@ -35353,6 +35420,11 @@ Object.freeze({
|
|
|
35353
35420
|
form: "single",
|
|
35354
35421
|
optional: false
|
|
35355
35422
|
}],
|
|
35423
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": [{
|
|
35424
|
+
name: "deviceId",
|
|
35425
|
+
form: "single",
|
|
35426
|
+
optional: true
|
|
35427
|
+
}],
|
|
35356
35428
|
"pipelineAnalytics.getGroup": [{
|
|
35357
35429
|
name: "deviceId",
|
|
35358
35430
|
form: "single",
|