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