@camstack/addon-decoder-ffmpeg 1.2.42 → 1.2.43
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 +121 -13
- package/dist/index.mjs +121 -13
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -8040,18 +8040,61 @@ var RelocateFootageInputSchema = object({
|
|
|
8040
8040
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
8041
8041
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
8042
8042
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
8043
|
+
/**
|
|
8044
|
+
* What a `relocateMedia` pass DOES. One engine, three passes — never a second
|
|
8045
|
+
* mover (the engine already walks both collections with a timestamp cursor and
|
|
8046
|
+
* already has a stamp-without-copy path).
|
|
8047
|
+
*
|
|
8048
|
+
* - `move` — the default and the historical behaviour: event-media and
|
|
8049
|
+
* retrain blobs move to `toLocationId` and their rows are
|
|
8050
|
+
* stamped. The enrolled gallery is skipped (D197).
|
|
8051
|
+
* - `seal` — ROWS ONLY, no bytes. Every row whose `locationId` is NULL is
|
|
8052
|
+
* stamped with `toLocationId`. `toLocationId` here is the id the
|
|
8053
|
+
* bytes ALREADY sit on — today's `eventMedia` default — because
|
|
8054
|
+
* a NULL row means "wherever `eventMedia` points *now*", and the
|
|
8055
|
+
* instant a repoint moves that pointer the row reads from the
|
|
8056
|
+
* new disk while its bytes are on the old one.
|
|
8057
|
+
* - `gallery` — the inverse selection of `move`: ONLY the retention-exempt
|
|
8058
|
+
* (enrolled-gallery) rows, which `move` deliberately skips.
|
|
8059
|
+
* `galleryMedia` is `cardinality: 'single'`, so this pass can
|
|
8060
|
+
* never run beside a live second location: it is stop-the-world
|
|
8061
|
+
* by construction, which is acceptable only because the gallery
|
|
8062
|
+
* is a few KB per enrolled sample.
|
|
8063
|
+
*/
|
|
8064
|
+
var MediaRelocateModeSchema = _enum([
|
|
8065
|
+
"move",
|
|
8066
|
+
"seal",
|
|
8067
|
+
"gallery"
|
|
8068
|
+
]);
|
|
8043
8069
|
var RelocateMediaInputSchema = object({
|
|
8044
8070
|
toLocationId: string(),
|
|
8045
|
-
throttleMbps: number().min(1).max(1e3).optional()
|
|
8071
|
+
throttleMbps: number().min(1).max(1e3).optional(),
|
|
8072
|
+
/** Omitted = `move`, the pre-existing behaviour. */
|
|
8073
|
+
mode: MediaRelocateModeSchema.optional()
|
|
8074
|
+
});
|
|
8075
|
+
/** How many rows still carry NO `locationId` — the population a repoint would
|
|
8076
|
+
* silently re-aim at a disk that does not hold their bytes. Zero is the only
|
|
8077
|
+
* value that permits a non-blocking `eventMedia` cutover. */
|
|
8078
|
+
var UnstampedEventMediaCountSchema = object({
|
|
8079
|
+
media: number().int().nonnegative(),
|
|
8080
|
+
retrainFrames: number().int().nonnegative(),
|
|
8081
|
+
total: number().int().nonnegative()
|
|
8046
8082
|
});
|
|
8047
8083
|
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
8048
|
-
/** The independently selectable logical storage classes
|
|
8049
|
-
*
|
|
8050
|
-
*
|
|
8084
|
+
/** The independently selectable logical storage classes — every class
|
|
8085
|
+
* `storage.listLocationDeclarations` reports, so an operator never meets a
|
|
8086
|
+
* Zod enum error where they should meet an explanation.
|
|
8087
|
+
*
|
|
8088
|
+
* `recordings` encompasses the high and mid segment profiles; `recordingsLow`
|
|
8089
|
+
* is low segments; `eventMedia` is post-analysis blobs; `galleryMedia` is the
|
|
8090
|
+
* enrolled gallery; `backups` is the system backup archive. The last two have
|
|
8091
|
+
* their own rules — see {@link StorageMigrationFindingCodeSchema}. */
|
|
8051
8092
|
var StorageMigrationClassSchema = _enum([
|
|
8052
8093
|
"recordings",
|
|
8053
8094
|
"recordingsLow",
|
|
8054
|
-
"eventMedia"
|
|
8095
|
+
"eventMedia",
|
|
8096
|
+
"backups",
|
|
8097
|
+
"galleryMedia"
|
|
8055
8098
|
]);
|
|
8056
8099
|
/** A destination is always an existing, fully-qualified location id. The
|
|
8057
8100
|
* migration API intentionally never changes a source location's `basePath`:
|
|
@@ -8059,20 +8102,56 @@ var StorageMigrationClassSchema = _enum([
|
|
|
8059
8102
|
var StorageMigrationDestinationsSchema = object({
|
|
8060
8103
|
recordings: string().min(1).optional(),
|
|
8061
8104
|
recordingsLow: string().min(1).optional(),
|
|
8062
|
-
eventMedia: string().min(1).optional()
|
|
8105
|
+
eventMedia: string().min(1).optional(),
|
|
8106
|
+
backups: string().min(1).optional(),
|
|
8107
|
+
galleryMedia: string().min(1).optional()
|
|
8063
8108
|
}).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
|
|
8109
|
+
/**
|
|
8110
|
+
* How a migration sequences the cutover against the byte move.
|
|
8111
|
+
*
|
|
8112
|
+
* - `blocking` — the historical order: pause, move every byte, repoint,
|
|
8113
|
+
* resume. Recording is stopped for the whole move. Right
|
|
8114
|
+
* for a small or a cold class, and the only legal mode for
|
|
8115
|
+
* a `cardinality: 'single'` class.
|
|
8116
|
+
* - `nonBlocking` — repoint FIRST, drain behind: seal, pause, repoint,
|
|
8117
|
+
* refresh, resume, then move the past with everything
|
|
8118
|
+
* running. The pause is three bounded instants (a detach +
|
|
8119
|
+
* attach round, a write-gate drain, a lease) instead of one
|
|
8120
|
+
* bounded by bytes. 1.09 TB at 7–14 MB/s is thirty hours of
|
|
8121
|
+
* stopped recording under `blocking`; the same move is
|
|
8122
|
+
* seconds of stopped recording under `nonBlocking`.
|
|
8123
|
+
*
|
|
8124
|
+
* The mode is on the JOB, not only on the input, because `status` is where an
|
|
8125
|
+
* operator finds out which one is running.
|
|
8126
|
+
*/
|
|
8127
|
+
var StorageMigrationModeSchema = _enum(["blocking", "nonBlocking"]);
|
|
8064
8128
|
/** Shared input for planning and starting an orchestrated storage migration. */
|
|
8065
8129
|
var StorageMigrationInputSchema = object({
|
|
8066
8130
|
destinations: StorageMigrationDestinationsSchema,
|
|
8067
|
-
throttleMbps: number().min(1).max(1e3).optional()
|
|
8131
|
+
throttleMbps: number().min(1).max(1e3).optional(),
|
|
8132
|
+
/** Omitted = `blocking`, which stays the default. */
|
|
8133
|
+
mode: StorageMigrationModeSchema.optional()
|
|
8068
8134
|
});
|
|
8069
|
-
/**
|
|
8070
|
-
*
|
|
8071
|
-
*
|
|
8135
|
+
/**
|
|
8136
|
+
* The durable coordinator state machine.
|
|
8137
|
+
*
|
|
8138
|
+
* `blocking`:
|
|
8139
|
+
* planning → pausing → moving → verifying → repointing → refreshing → resuming → done
|
|
8140
|
+
*
|
|
8141
|
+
* `nonBlocking`:
|
|
8142
|
+
* planning → sealing → pausing → repointing → refreshing → resuming → draining → verifying → done
|
|
8143
|
+
*
|
|
8144
|
+
* Same phases, different order plus two new ones — not a second mover.
|
|
8145
|
+
* `sealing` closes the `eventMedia` NULL-row hole BEFORE anything is paused;
|
|
8146
|
+
* `draining` runs the same movers UNLEASED, after every writer is back up.
|
|
8147
|
+
* `repointing` is still the only phase that changes a default location.
|
|
8148
|
+
*/
|
|
8072
8149
|
var StorageMigrationPhaseSchema = _enum([
|
|
8073
8150
|
"planning",
|
|
8151
|
+
"sealing",
|
|
8074
8152
|
"pausing",
|
|
8075
8153
|
"moving",
|
|
8154
|
+
"draining",
|
|
8076
8155
|
"verifying",
|
|
8077
8156
|
"repointing",
|
|
8078
8157
|
"refreshing",
|
|
@@ -8097,6 +8176,9 @@ var StorageMigrationMoveSchema = object({
|
|
|
8097
8176
|
var StorageMigrationJobSchema = object({
|
|
8098
8177
|
jobId: string(),
|
|
8099
8178
|
phase: StorageMigrationPhaseSchema,
|
|
8179
|
+
/** Which order this job is running. `status` is the only place an operator
|
|
8180
|
+
* can tell a seconds-long cutover from a thirty-hour one. */
|
|
8181
|
+
mode: StorageMigrationModeSchema,
|
|
8100
8182
|
destinations: StorageMigrationDestinationsSchema,
|
|
8101
8183
|
throttleMbps: number(),
|
|
8102
8184
|
moves: array(StorageMigrationMoveSchema),
|
|
@@ -8109,13 +8191,30 @@ var StorageMigrationJobSchema = object({
|
|
|
8109
8191
|
finishedAt: number().nullable(),
|
|
8110
8192
|
error: string().nullable()
|
|
8111
8193
|
});
|
|
8194
|
+
var StorageMigrationFindingSchema = object({
|
|
8195
|
+
code: _enum([
|
|
8196
|
+
"sharesDeviceWithSource",
|
|
8197
|
+
"deviceIdentityUnknown",
|
|
8198
|
+
"unstampedEventMediaRows",
|
|
8199
|
+
"blockingOnly",
|
|
8200
|
+
"noMover"
|
|
8201
|
+
]),
|
|
8202
|
+
storageClass: StorageMigrationClassSchema,
|
|
8203
|
+
/** Human-readable, already carrying the ids and counts. */
|
|
8204
|
+
message: string()
|
|
8205
|
+
});
|
|
8112
8206
|
var StorageMigrationPlanSchema = object({
|
|
8113
8207
|
destinations: StorageMigrationDestinationsSchema,
|
|
8208
|
+
/** The mode this plan was built for. A plan is only valid for its mode: the
|
|
8209
|
+
* `eventMedia` seal gate and the single-cardinality refusal both depend on
|
|
8210
|
+
* it. */
|
|
8211
|
+
mode: StorageMigrationModeSchema,
|
|
8114
8212
|
moves: array(object({
|
|
8115
8213
|
storageClass: StorageMigrationClassSchema,
|
|
8116
8214
|
fromLocationId: string(),
|
|
8117
8215
|
toLocationId: string()
|
|
8118
|
-
}))
|
|
8216
|
+
})),
|
|
8217
|
+
findings: array(StorageMigrationFindingSchema)
|
|
8119
8218
|
});
|
|
8120
8219
|
/**
|
|
8121
8220
|
* `StorageLocationType` — an addon-declared id that identifies the *kind* of
|
|
@@ -18756,7 +18855,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
18756
18855
|
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
18757
18856
|
kind: "mutation",
|
|
18758
18857
|
auth: "admin"
|
|
18759
|
-
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
18858
|
+
}), method(object({}), UnstampedEventMediaCountSchema, { auth: "admin" }), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
18760
18859
|
kind: "query",
|
|
18761
18860
|
auth: "admin"
|
|
18762
18861
|
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
@@ -20663,7 +20762,10 @@ method(object({
|
|
|
20663
20762
|
}), StorageLocationSchema, {
|
|
20664
20763
|
kind: "mutation",
|
|
20665
20764
|
auth: "admin"
|
|
20666
|
-
}), method(object({
|
|
20765
|
+
}), method(object({
|
|
20766
|
+
id: string(),
|
|
20767
|
+
force: boolean().optional()
|
|
20768
|
+
}), _void(), {
|
|
20667
20769
|
kind: "mutation",
|
|
20668
20770
|
auth: "admin"
|
|
20669
20771
|
}), method(object({ id: string() }), object({
|
|
@@ -31136,6 +31238,12 @@ Object.freeze({
|
|
|
31136
31238
|
addonId: null,
|
|
31137
31239
|
access: "create"
|
|
31138
31240
|
},
|
|
31241
|
+
"pipelineAnalytics.countUnstampedEventMedia": {
|
|
31242
|
+
capName: "pipeline-analytics",
|
|
31243
|
+
capScope: "device",
|
|
31244
|
+
addonId: null,
|
|
31245
|
+
access: "view"
|
|
31246
|
+
},
|
|
31139
31247
|
"pipelineAnalytics.deleteDeviceEvents": {
|
|
31140
31248
|
capName: "pipeline-analytics",
|
|
31141
31249
|
capScope: "device",
|
package/dist/index.mjs
CHANGED
|
@@ -8036,18 +8036,61 @@ var RelocateFootageInputSchema = object({
|
|
|
8036
8036
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
8037
8037
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
8038
8038
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
8039
|
+
/**
|
|
8040
|
+
* What a `relocateMedia` pass DOES. One engine, three passes — never a second
|
|
8041
|
+
* mover (the engine already walks both collections with a timestamp cursor and
|
|
8042
|
+
* already has a stamp-without-copy path).
|
|
8043
|
+
*
|
|
8044
|
+
* - `move` — the default and the historical behaviour: event-media and
|
|
8045
|
+
* retrain blobs move to `toLocationId` and their rows are
|
|
8046
|
+
* stamped. The enrolled gallery is skipped (D197).
|
|
8047
|
+
* - `seal` — ROWS ONLY, no bytes. Every row whose `locationId` is NULL is
|
|
8048
|
+
* stamped with `toLocationId`. `toLocationId` here is the id the
|
|
8049
|
+
* bytes ALREADY sit on — today's `eventMedia` default — because
|
|
8050
|
+
* a NULL row means "wherever `eventMedia` points *now*", and the
|
|
8051
|
+
* instant a repoint moves that pointer the row reads from the
|
|
8052
|
+
* new disk while its bytes are on the old one.
|
|
8053
|
+
* - `gallery` — the inverse selection of `move`: ONLY the retention-exempt
|
|
8054
|
+
* (enrolled-gallery) rows, which `move` deliberately skips.
|
|
8055
|
+
* `galleryMedia` is `cardinality: 'single'`, so this pass can
|
|
8056
|
+
* never run beside a live second location: it is stop-the-world
|
|
8057
|
+
* by construction, which is acceptable only because the gallery
|
|
8058
|
+
* is a few KB per enrolled sample.
|
|
8059
|
+
*/
|
|
8060
|
+
var MediaRelocateModeSchema = _enum([
|
|
8061
|
+
"move",
|
|
8062
|
+
"seal",
|
|
8063
|
+
"gallery"
|
|
8064
|
+
]);
|
|
8039
8065
|
var RelocateMediaInputSchema = object({
|
|
8040
8066
|
toLocationId: string(),
|
|
8041
|
-
throttleMbps: number().min(1).max(1e3).optional()
|
|
8067
|
+
throttleMbps: number().min(1).max(1e3).optional(),
|
|
8068
|
+
/** Omitted = `move`, the pre-existing behaviour. */
|
|
8069
|
+
mode: MediaRelocateModeSchema.optional()
|
|
8070
|
+
});
|
|
8071
|
+
/** How many rows still carry NO `locationId` — the population a repoint would
|
|
8072
|
+
* silently re-aim at a disk that does not hold their bytes. Zero is the only
|
|
8073
|
+
* value that permits a non-blocking `eventMedia` cutover. */
|
|
8074
|
+
var UnstampedEventMediaCountSchema = object({
|
|
8075
|
+
media: number().int().nonnegative(),
|
|
8076
|
+
retrainFrames: number().int().nonnegative(),
|
|
8077
|
+
total: number().int().nonnegative()
|
|
8042
8078
|
});
|
|
8043
8079
|
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
8044
|
-
/** The independently selectable logical storage classes
|
|
8045
|
-
*
|
|
8046
|
-
*
|
|
8080
|
+
/** The independently selectable logical storage classes — every class
|
|
8081
|
+
* `storage.listLocationDeclarations` reports, so an operator never meets a
|
|
8082
|
+
* Zod enum error where they should meet an explanation.
|
|
8083
|
+
*
|
|
8084
|
+
* `recordings` encompasses the high and mid segment profiles; `recordingsLow`
|
|
8085
|
+
* is low segments; `eventMedia` is post-analysis blobs; `galleryMedia` is the
|
|
8086
|
+
* enrolled gallery; `backups` is the system backup archive. The last two have
|
|
8087
|
+
* their own rules — see {@link StorageMigrationFindingCodeSchema}. */
|
|
8047
8088
|
var StorageMigrationClassSchema = _enum([
|
|
8048
8089
|
"recordings",
|
|
8049
8090
|
"recordingsLow",
|
|
8050
|
-
"eventMedia"
|
|
8091
|
+
"eventMedia",
|
|
8092
|
+
"backups",
|
|
8093
|
+
"galleryMedia"
|
|
8051
8094
|
]);
|
|
8052
8095
|
/** A destination is always an existing, fully-qualified location id. The
|
|
8053
8096
|
* migration API intentionally never changes a source location's `basePath`:
|
|
@@ -8055,20 +8098,56 @@ var StorageMigrationClassSchema = _enum([
|
|
|
8055
8098
|
var StorageMigrationDestinationsSchema = object({
|
|
8056
8099
|
recordings: string().min(1).optional(),
|
|
8057
8100
|
recordingsLow: string().min(1).optional(),
|
|
8058
|
-
eventMedia: string().min(1).optional()
|
|
8101
|
+
eventMedia: string().min(1).optional(),
|
|
8102
|
+
backups: string().min(1).optional(),
|
|
8103
|
+
galleryMedia: string().min(1).optional()
|
|
8059
8104
|
}).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
|
|
8105
|
+
/**
|
|
8106
|
+
* How a migration sequences the cutover against the byte move.
|
|
8107
|
+
*
|
|
8108
|
+
* - `blocking` — the historical order: pause, move every byte, repoint,
|
|
8109
|
+
* resume. Recording is stopped for the whole move. Right
|
|
8110
|
+
* for a small or a cold class, and the only legal mode for
|
|
8111
|
+
* a `cardinality: 'single'` class.
|
|
8112
|
+
* - `nonBlocking` — repoint FIRST, drain behind: seal, pause, repoint,
|
|
8113
|
+
* refresh, resume, then move the past with everything
|
|
8114
|
+
* running. The pause is three bounded instants (a detach +
|
|
8115
|
+
* attach round, a write-gate drain, a lease) instead of one
|
|
8116
|
+
* bounded by bytes. 1.09 TB at 7–14 MB/s is thirty hours of
|
|
8117
|
+
* stopped recording under `blocking`; the same move is
|
|
8118
|
+
* seconds of stopped recording under `nonBlocking`.
|
|
8119
|
+
*
|
|
8120
|
+
* The mode is on the JOB, not only on the input, because `status` is where an
|
|
8121
|
+
* operator finds out which one is running.
|
|
8122
|
+
*/
|
|
8123
|
+
var StorageMigrationModeSchema = _enum(["blocking", "nonBlocking"]);
|
|
8060
8124
|
/** Shared input for planning and starting an orchestrated storage migration. */
|
|
8061
8125
|
var StorageMigrationInputSchema = object({
|
|
8062
8126
|
destinations: StorageMigrationDestinationsSchema,
|
|
8063
|
-
throttleMbps: number().min(1).max(1e3).optional()
|
|
8127
|
+
throttleMbps: number().min(1).max(1e3).optional(),
|
|
8128
|
+
/** Omitted = `blocking`, which stays the default. */
|
|
8129
|
+
mode: StorageMigrationModeSchema.optional()
|
|
8064
8130
|
});
|
|
8065
|
-
/**
|
|
8066
|
-
*
|
|
8067
|
-
*
|
|
8131
|
+
/**
|
|
8132
|
+
* The durable coordinator state machine.
|
|
8133
|
+
*
|
|
8134
|
+
* `blocking`:
|
|
8135
|
+
* planning → pausing → moving → verifying → repointing → refreshing → resuming → done
|
|
8136
|
+
*
|
|
8137
|
+
* `nonBlocking`:
|
|
8138
|
+
* planning → sealing → pausing → repointing → refreshing → resuming → draining → verifying → done
|
|
8139
|
+
*
|
|
8140
|
+
* Same phases, different order plus two new ones — not a second mover.
|
|
8141
|
+
* `sealing` closes the `eventMedia` NULL-row hole BEFORE anything is paused;
|
|
8142
|
+
* `draining` runs the same movers UNLEASED, after every writer is back up.
|
|
8143
|
+
* `repointing` is still the only phase that changes a default location.
|
|
8144
|
+
*/
|
|
8068
8145
|
var StorageMigrationPhaseSchema = _enum([
|
|
8069
8146
|
"planning",
|
|
8147
|
+
"sealing",
|
|
8070
8148
|
"pausing",
|
|
8071
8149
|
"moving",
|
|
8150
|
+
"draining",
|
|
8072
8151
|
"verifying",
|
|
8073
8152
|
"repointing",
|
|
8074
8153
|
"refreshing",
|
|
@@ -8093,6 +8172,9 @@ var StorageMigrationMoveSchema = object({
|
|
|
8093
8172
|
var StorageMigrationJobSchema = object({
|
|
8094
8173
|
jobId: string(),
|
|
8095
8174
|
phase: StorageMigrationPhaseSchema,
|
|
8175
|
+
/** Which order this job is running. `status` is the only place an operator
|
|
8176
|
+
* can tell a seconds-long cutover from a thirty-hour one. */
|
|
8177
|
+
mode: StorageMigrationModeSchema,
|
|
8096
8178
|
destinations: StorageMigrationDestinationsSchema,
|
|
8097
8179
|
throttleMbps: number(),
|
|
8098
8180
|
moves: array(StorageMigrationMoveSchema),
|
|
@@ -8105,13 +8187,30 @@ var StorageMigrationJobSchema = object({
|
|
|
8105
8187
|
finishedAt: number().nullable(),
|
|
8106
8188
|
error: string().nullable()
|
|
8107
8189
|
});
|
|
8190
|
+
var StorageMigrationFindingSchema = object({
|
|
8191
|
+
code: _enum([
|
|
8192
|
+
"sharesDeviceWithSource",
|
|
8193
|
+
"deviceIdentityUnknown",
|
|
8194
|
+
"unstampedEventMediaRows",
|
|
8195
|
+
"blockingOnly",
|
|
8196
|
+
"noMover"
|
|
8197
|
+
]),
|
|
8198
|
+
storageClass: StorageMigrationClassSchema,
|
|
8199
|
+
/** Human-readable, already carrying the ids and counts. */
|
|
8200
|
+
message: string()
|
|
8201
|
+
});
|
|
8108
8202
|
var StorageMigrationPlanSchema = object({
|
|
8109
8203
|
destinations: StorageMigrationDestinationsSchema,
|
|
8204
|
+
/** The mode this plan was built for. A plan is only valid for its mode: the
|
|
8205
|
+
* `eventMedia` seal gate and the single-cardinality refusal both depend on
|
|
8206
|
+
* it. */
|
|
8207
|
+
mode: StorageMigrationModeSchema,
|
|
8110
8208
|
moves: array(object({
|
|
8111
8209
|
storageClass: StorageMigrationClassSchema,
|
|
8112
8210
|
fromLocationId: string(),
|
|
8113
8211
|
toLocationId: string()
|
|
8114
|
-
}))
|
|
8212
|
+
})),
|
|
8213
|
+
findings: array(StorageMigrationFindingSchema)
|
|
8115
8214
|
});
|
|
8116
8215
|
/**
|
|
8117
8216
|
* `StorageLocationType` — an addon-declared id that identifies the *kind* of
|
|
@@ -18752,7 +18851,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
18752
18851
|
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
18753
18852
|
kind: "mutation",
|
|
18754
18853
|
auth: "admin"
|
|
18755
|
-
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
18854
|
+
}), method(object({}), UnstampedEventMediaCountSchema, { auth: "admin" }), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
18756
18855
|
kind: "query",
|
|
18757
18856
|
auth: "admin"
|
|
18758
18857
|
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
@@ -20659,7 +20758,10 @@ method(object({
|
|
|
20659
20758
|
}), StorageLocationSchema, {
|
|
20660
20759
|
kind: "mutation",
|
|
20661
20760
|
auth: "admin"
|
|
20662
|
-
}), method(object({
|
|
20761
|
+
}), method(object({
|
|
20762
|
+
id: string(),
|
|
20763
|
+
force: boolean().optional()
|
|
20764
|
+
}), _void(), {
|
|
20663
20765
|
kind: "mutation",
|
|
20664
20766
|
auth: "admin"
|
|
20665
20767
|
}), method(object({ id: string() }), object({
|
|
@@ -31132,6 +31234,12 @@ Object.freeze({
|
|
|
31132
31234
|
addonId: null,
|
|
31133
31235
|
access: "create"
|
|
31134
31236
|
},
|
|
31237
|
+
"pipelineAnalytics.countUnstampedEventMedia": {
|
|
31238
|
+
capName: "pipeline-analytics",
|
|
31239
|
+
capScope: "device",
|
|
31240
|
+
addonId: null,
|
|
31241
|
+
access: "view"
|
|
31242
|
+
},
|
|
31135
31243
|
"pipelineAnalytics.deleteDeviceEvents": {
|
|
31136
31244
|
capName: "pipeline-analytics",
|
|
31137
31245
|
capScope: "device",
|