@trokky/trokky 3.0.0 → 3.2.0
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/adapters/cloudflare-d1/cloudflare-d1-adapter.d.ts +132 -0
- package/dist/adapters/cloudflare-d1/cloudflare-d1-adapter.d.ts.map +1 -0
- package/dist/adapters/cloudflare-d1/cloudflare-d1-adapter.js +811 -0
- package/dist/adapters/cloudflare-d1/cloudflare-d1-adapter.js.map +1 -0
- package/dist/adapters/cloudflare-d1/index.d.ts +5 -0
- package/dist/adapters/cloudflare-d1/index.d.ts.map +1 -0
- package/dist/adapters/cloudflare-d1/index.js +12 -0
- package/dist/adapters/cloudflare-d1/index.js.map +1 -0
- package/dist/adapters/cloudflare-d1/rate-limit-store.d.ts +46 -0
- package/dist/adapters/cloudflare-d1/rate-limit-store.d.ts.map +1 -0
- package/dist/adapters/cloudflare-d1/rate-limit-store.js +96 -0
- package/dist/adapters/cloudflare-d1/rate-limit-store.js.map +1 -0
- package/dist/adapters/cloudflare-d1/types.d.ts +69 -0
- package/dist/adapters/cloudflare-d1/types.d.ts.map +1 -0
- package/dist/adapters/cloudflare-d1/types.js +2 -0
- package/dist/adapters/cloudflare-d1/types.js.map +1 -0
- package/dist/adapters/cloudflare-r2/cloudflare-r2-adapter.d.ts +86 -0
- package/dist/adapters/cloudflare-r2/cloudflare-r2-adapter.d.ts.map +1 -0
- package/dist/adapters/cloudflare-r2/cloudflare-r2-adapter.js +493 -0
- package/dist/adapters/cloudflare-r2/cloudflare-r2-adapter.js.map +1 -0
- package/dist/adapters/cloudflare-r2/index.d.ts +3 -0
- package/dist/adapters/cloudflare-r2/index.d.ts.map +1 -0
- package/dist/adapters/cloudflare-r2/index.js +11 -0
- package/dist/adapters/cloudflare-r2/index.js.map +1 -0
- package/dist/adapters/cloudflare-r2/types.d.ts +43 -0
- package/dist/adapters/cloudflare-r2/types.d.ts.map +1 -0
- package/dist/adapters/cloudflare-r2/types.js +2 -0
- package/dist/adapters/cloudflare-r2/types.js.map +1 -0
- package/dist/core/media/image-processor.d.ts.map +1 -1
- package/dist/core/media/image-processor.js +5 -13
- package/dist/core/media/image-processor.js.map +1 -1
- package/dist/core/media/processors/sharp.d.ts.map +1 -1
- package/dist/core/media/processors/sharp.js +13 -2
- package/dist/core/media/processors/sharp.js.map +1 -1
- package/dist/core/media/processors/types.d.ts +1 -1
- package/dist/core/media/processors/types.d.ts.map +1 -1
- package/dist/core/security/rate-limit-store.d.ts +56 -0
- package/dist/core/security/rate-limit-store.d.ts.map +1 -0
- package/dist/core/security/rate-limit-store.js +55 -0
- package/dist/core/security/rate-limit-store.js.map +1 -0
- package/dist/core/security/rate-limiter.d.ts +30 -2
- package/dist/core/security/rate-limiter.d.ts.map +1 -1
- package/dist/core/security/rate-limiter.js +50 -19
- package/dist/core/security/rate-limiter.js.map +1 -1
- package/dist/core/services/media-service.d.ts +34 -0
- package/dist/core/services/media-service.d.ts.map +1 -1
- package/dist/core/services/media-service.js +172 -120
- package/dist/core/services/media-service.js.map +1 -1
- package/dist/core/utils/retry.d.ts +45 -0
- package/dist/core/utils/retry.d.ts.map +1 -0
- package/dist/core/utils/retry.js +47 -0
- package/dist/core/utils/retry.js.map +1 -0
- package/dist/integrations/express/config.d.ts +31 -14
- package/dist/integrations/express/config.d.ts.map +1 -1
- package/dist/integrations/express/config.js +25 -8
- package/dist/integrations/express/config.js.map +1 -1
- package/dist/integrations/express/integration.d.ts.map +1 -1
- package/dist/integrations/express/integration.js +13 -6
- package/dist/integrations/express/integration.js.map +1 -1
- package/dist/integrations/express/server.d.ts.map +1 -1
- package/dist/integrations/express/server.js +5 -2
- package/dist/integrations/express/server.js.map +1 -1
- package/dist/integrations/express/types.d.ts +0 -5
- package/dist/integrations/express/types.d.ts.map +1 -1
- package/dist/integrations/workers/adapter.d.ts +28 -0
- package/dist/integrations/workers/adapter.d.ts.map +1 -0
- package/dist/integrations/workers/adapter.js +111 -0
- package/dist/integrations/workers/adapter.js.map +1 -0
- package/dist/integrations/workers/index.d.ts +22 -0
- package/dist/integrations/workers/index.d.ts.map +1 -0
- package/dist/integrations/workers/index.js +60 -0
- package/dist/integrations/workers/index.js.map +1 -0
- package/dist/routes/auth/auth-flow-store.d.ts +17 -0
- package/dist/routes/auth/auth-flow-store.d.ts.map +1 -1
- package/dist/routes/auth/auth-flow-store.js +27 -0
- package/dist/routes/auth/auth-flow-store.js.map +1 -1
- package/dist/routes/auth/oauth.d.ts.map +1 -1
- package/dist/routes/auth/oauth.js +5 -12
- package/dist/routes/auth/oauth.js.map +1 -1
- package/dist/routes/auth/passkey.d.ts.map +1 -1
- package/dist/routes/auth/passkey.js +5 -8
- package/dist/routes/auth/passkey.js.map +1 -1
- package/dist/structure/validation/schemas.d.ts +69 -69
- package/package.json +20 -1
- package/dist/core/media/processors/cloudflare-images.d.ts +0 -83
- package/dist/core/media/processors/cloudflare-images.d.ts.map +0 -1
- package/dist/core/media/processors/cloudflare-images.js +0 -241
- package/dist/core/media/processors/cloudflare-images.js.map +0 -1
- package/dist/core/media/processors/cloudflare-transform-store.d.ts +0 -127
- package/dist/core/media/processors/cloudflare-transform-store.d.ts.map +0 -1
- package/dist/core/media/processors/cloudflare-transform-store.js +0 -237
- package/dist/core/media/processors/cloudflare-transform-store.js.map +0 -1
- package/dist/core/media/processors/cloudflare-transformations.d.ts +0 -81
- package/dist/core/media/processors/cloudflare-transformations.d.ts.map +0 -1
- package/dist/core/media/processors/cloudflare-transformations.js +0 -144
- package/dist/core/media/processors/cloudflare-transformations.js.map +0 -1
- package/dist/core/media/processors/workers-images.d.ts +0 -112
- package/dist/core/media/processors/workers-images.d.ts.map +0 -1
- package/dist/core/media/processors/workers-images.js +0 -257
- package/dist/core/media/processors/workers-images.js.map +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SecurityValidator } from '../security/validation.js';
|
|
2
|
+
import { withRetry } from '../utils/retry.js';
|
|
2
3
|
import { mediaUploaded, mediaDeleted } from '../events/index.js';
|
|
3
4
|
import { DocumentNotFoundError, InvalidInputError } from '../errors/index.js';
|
|
4
5
|
/**
|
|
@@ -29,90 +30,52 @@ export class MediaService {
|
|
|
29
30
|
const mediaFile = await this.deps.mediaStorage.uploadFile(file, metadata);
|
|
30
31
|
// Process image if it's an image file
|
|
31
32
|
if (file.type.startsWith('image/')) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
height: variantData.height,
|
|
50
|
-
format: variantData.format,
|
|
51
|
-
size: variantData.size
|
|
52
|
-
};
|
|
53
|
-
this.deps.logger.info('Variant file saved directly', {
|
|
54
|
-
parentId: metadata.id,
|
|
55
|
-
variantName,
|
|
56
|
-
path: variantPath
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
// Fallback: just store metadata without physical files for now
|
|
61
|
-
savedVariants[variantName] = {
|
|
62
|
-
url: variantData.url,
|
|
63
|
-
width: variantData.width,
|
|
64
|
-
height: variantData.height,
|
|
65
|
-
format: variantData.format,
|
|
66
|
-
size: variantData.size
|
|
67
|
-
};
|
|
68
|
-
this.deps.logger.warn('Storage adapter does not support variant files - storing metadata only', {
|
|
69
|
-
parentId: metadata.id,
|
|
70
|
-
variantName
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
catch (variantError) {
|
|
75
|
-
this.deps.logger.warn('Failed to save variant file', {
|
|
76
|
-
parentId: metadata.id,
|
|
77
|
-
variantName,
|
|
78
|
-
error: variantError instanceof Error ? variantError.message : 'Unknown error'
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
// Store processed image metadata in the media file
|
|
84
|
-
mediaFile.metadata = {
|
|
85
|
-
...mediaFile.metadata,
|
|
86
|
-
imageVariants: savedVariants,
|
|
87
|
-
originalDimensions: {
|
|
88
|
-
width: processedImage.original.width,
|
|
89
|
-
height: processedImage.original.height
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
// Save the updated metadata back to storage
|
|
33
|
+
const outcome = await this.generateVariants(metadata.id, file, {
|
|
34
|
+
id: metadata.id,
|
|
35
|
+
filename: metadata.filename,
|
|
36
|
+
// Use filename as fallback since we don't have the full path here
|
|
37
|
+
path: metadata.filename
|
|
38
|
+
});
|
|
39
|
+
mediaFile.metadata = {
|
|
40
|
+
...mediaFile.metadata,
|
|
41
|
+
imageVariants: outcome.variants,
|
|
42
|
+
...(outcome.originalDimensions ? { originalDimensions: outcome.originalDimensions } : {}),
|
|
43
|
+
...(outcome.report ? { imageProcessing: outcome.report } : {})
|
|
44
|
+
};
|
|
45
|
+
// Persist the variant metadata. Without this the variant files exist in storage and
|
|
46
|
+
// nothing references them, which is invisible until someone notices missing thumbnails —
|
|
47
|
+
// so it retries, and a final failure is reported rather than logged and forgotten.
|
|
48
|
+
if (this.deps.mediaStorage.updateFile) {
|
|
49
|
+
const update = this.deps.mediaStorage.updateFile.bind(this.deps.mediaStorage);
|
|
93
50
|
try {
|
|
94
|
-
|
|
95
|
-
await this.deps.mediaStorage.updateFile(mediaFile.id, mediaFile.metadata);
|
|
96
|
-
}
|
|
51
|
+
await withRetry(() => update(mediaFile.id, mediaFile.metadata), this.retryOptions('persist image variant metadata', { fileId: metadata.id }));
|
|
97
52
|
this.deps.logger.info('Image variants metadata saved', {
|
|
98
53
|
fileId: metadata.id,
|
|
99
|
-
variantCount: Object.keys(
|
|
54
|
+
variantCount: Object.keys(outcome.variants).length
|
|
100
55
|
});
|
|
101
56
|
}
|
|
102
57
|
catch (updateError) {
|
|
103
|
-
|
|
58
|
+
const message = updateError instanceof Error ? updateError.message : 'Unknown error';
|
|
59
|
+
// The upload itself succeeded and the original is stored, so throwing here would tell
|
|
60
|
+
// the caller to re-upload a file that is already safe. Report it on the record the
|
|
61
|
+
// caller receives instead, and at error level rather than as a warning.
|
|
62
|
+
this.deps.logger.error('Image variants metadata could not be saved', {
|
|
104
63
|
fileId: metadata.id,
|
|
105
|
-
error:
|
|
64
|
+
error: message
|
|
106
65
|
});
|
|
66
|
+
mediaFile.metadata = {
|
|
67
|
+
...mediaFile.metadata,
|
|
68
|
+
imageProcessing: {
|
|
69
|
+
status: 'failed',
|
|
70
|
+
failures: [
|
|
71
|
+
...(outcome.report?.failures ?? []),
|
|
72
|
+
{ stage: 'persist-metadata', error: message }
|
|
73
|
+
],
|
|
74
|
+
failedAt: new Date().toISOString()
|
|
75
|
+
}
|
|
76
|
+
};
|
|
107
77
|
}
|
|
108
78
|
}
|
|
109
|
-
catch (error) {
|
|
110
|
-
// Log error but don't fail the upload - image processing is optional
|
|
111
|
-
this.deps.logger.warn('Image processing failed', {
|
|
112
|
-
fileId: metadata.id,
|
|
113
|
-
error: error instanceof Error ? error.message : 'Unknown error'
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
79
|
}
|
|
117
80
|
// Emit media uploaded event
|
|
118
81
|
if (this.deps.eventsEnabled) {
|
|
@@ -128,6 +91,113 @@ export class MediaService {
|
|
|
128
91
|
}
|
|
129
92
|
return mediaFile;
|
|
130
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Retry policy for the remote-backed steps of media processing.
|
|
96
|
+
*
|
|
97
|
+
* Cloudflare's Images service fails a small share of calls transiently — measured at roughly
|
|
98
|
+
* one in fifteen for a 6MB JPEG — and every one of those used to cost a thumbnail silently.
|
|
99
|
+
* Input the service will never accept is not retried: that is a permanent failure and should
|
|
100
|
+
* surface immediately rather than after three waits.
|
|
101
|
+
*/
|
|
102
|
+
retryOptions(operation, context) {
|
|
103
|
+
return {
|
|
104
|
+
attempts: 3,
|
|
105
|
+
isRetryable: (error) => {
|
|
106
|
+
const message = error instanceof Error ? error.message.toLowerCase() : String(error).toLowerCase();
|
|
107
|
+
const permanent = [
|
|
108
|
+
'unsupported', 'invalid', 'too large', 'not an image', 'unsupported format', 'malformed'
|
|
109
|
+
];
|
|
110
|
+
return !permanent.some(marker => message.includes(marker));
|
|
111
|
+
},
|
|
112
|
+
onRetry: ({ error, attempt, delayMs }) => {
|
|
113
|
+
this.deps.logger.warn(`Retrying: ${operation}`, {
|
|
114
|
+
...context,
|
|
115
|
+
attempt,
|
|
116
|
+
delayMs,
|
|
117
|
+
error: error instanceof Error ? error.message : 'Unknown error'
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Generate every variant for an image and write them to storage.
|
|
124
|
+
*
|
|
125
|
+
* Shared by upload and regeneration so both get the same retries and the same reporting. A
|
|
126
|
+
* failure never throws: the original file is already stored and is what the caller actually
|
|
127
|
+
* uploaded. But a failure is never swallowed either — it comes back in `report`, which the
|
|
128
|
+
* caller attaches to the media record, so an image with missing variants says so instead of
|
|
129
|
+
* looking complete.
|
|
130
|
+
*/
|
|
131
|
+
async generateVariants(id, file, metadata) {
|
|
132
|
+
const failures = [];
|
|
133
|
+
let processedImage;
|
|
134
|
+
try {
|
|
135
|
+
processedImage = await withRetry(() => this.deps.getImageProcessor().processImage(file, metadata), this.retryOptions('process image', { fileId: id }));
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
139
|
+
this.deps.logger.error('Image processing failed after retries', { fileId: id, error: message });
|
|
140
|
+
return {
|
|
141
|
+
variants: {},
|
|
142
|
+
report: {
|
|
143
|
+
status: 'failed',
|
|
144
|
+
failures: [{ stage: 'process', error: message }],
|
|
145
|
+
failedAt: new Date().toISOString()
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
const variants = {};
|
|
150
|
+
const saveVariantFile = this.deps.mediaStorage.saveVariantFile?.bind(this.deps.mediaStorage);
|
|
151
|
+
for (const [variantName, variantData] of Object.entries(processedImage.variants)) {
|
|
152
|
+
if (!variantData.buffer)
|
|
153
|
+
continue;
|
|
154
|
+
if (!saveVariantFile) {
|
|
155
|
+
// No variant storage: keep the processor's own URL, which is all there is to keep.
|
|
156
|
+
variants[variantName] = {
|
|
157
|
+
url: variantData.url,
|
|
158
|
+
width: variantData.width,
|
|
159
|
+
height: variantData.height,
|
|
160
|
+
format: variantData.format,
|
|
161
|
+
size: variantData.size
|
|
162
|
+
};
|
|
163
|
+
this.deps.logger.warn('Storage adapter does not support variant files - storing metadata only', {
|
|
164
|
+
parentId: id,
|
|
165
|
+
variantName
|
|
166
|
+
});
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
try {
|
|
170
|
+
const variantPath = await withRetry(() => saveVariantFile(id, variantName, variantData.buffer, variantData.format), this.retryOptions('save variant file', { parentId: id, variantName }));
|
|
171
|
+
// Store variant info without URL - let frontend handle URL construction
|
|
172
|
+
variants[variantName] = {
|
|
173
|
+
width: variantData.width,
|
|
174
|
+
height: variantData.height,
|
|
175
|
+
format: variantData.format,
|
|
176
|
+
size: variantData.size
|
|
177
|
+
};
|
|
178
|
+
this.deps.logger.info('Variant file saved', { parentId: id, variantName, path: variantPath });
|
|
179
|
+
}
|
|
180
|
+
catch (variantError) {
|
|
181
|
+
const message = variantError instanceof Error ? variantError.message : 'Unknown error';
|
|
182
|
+
this.deps.logger.error('Variant file could not be saved after retries', {
|
|
183
|
+
parentId: id,
|
|
184
|
+
variantName,
|
|
185
|
+
error: message
|
|
186
|
+
});
|
|
187
|
+
failures.push({ stage: 'save-variant', variant: variantName, error: message });
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
variants,
|
|
192
|
+
originalDimensions: {
|
|
193
|
+
width: processedImage.original.width,
|
|
194
|
+
height: processedImage.original.height
|
|
195
|
+
},
|
|
196
|
+
report: failures.length === 0
|
|
197
|
+
? undefined
|
|
198
|
+
: { status: 'partial', failures, failedAt: new Date().toISOString() }
|
|
199
|
+
};
|
|
200
|
+
}
|
|
131
201
|
async getMedia(id) {
|
|
132
202
|
if (this.deps.rateLimiter) {
|
|
133
203
|
await this.deps.rateLimiter.checkRateLimit('getMedia');
|
|
@@ -235,69 +305,51 @@ export class MediaService {
|
|
|
235
305
|
const file = new File([new Uint8Array(fileContent)], mediaFile.filename, {
|
|
236
306
|
type: mediaFile.contentType
|
|
237
307
|
});
|
|
238
|
-
//
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
path: mediaFile.metadata?.path || mediaFile.filename
|
|
243
|
-
});
|
|
244
|
-
// Delete existing variants first
|
|
308
|
+
// Delete existing variants first. A failure here is not fatal — the names are about to be
|
|
309
|
+
// overwritten anyway — but it is reported rather than dropped, because leftovers of a
|
|
310
|
+
// format no longer generated would linger in storage.
|
|
311
|
+
const staleVariantFailures = [];
|
|
245
312
|
if (this.deps.mediaStorage.deleteVariantFiles) {
|
|
313
|
+
const deleteVariantFiles = this.deps.mediaStorage.deleteVariantFiles.bind(this.deps.mediaStorage);
|
|
246
314
|
try {
|
|
247
|
-
await this.
|
|
315
|
+
await withRetry(() => deleteVariantFiles(id), this.retryOptions('delete existing variants', { id }));
|
|
248
316
|
this.deps.logger.info('Existing variants deleted', { id });
|
|
249
317
|
}
|
|
250
318
|
catch (deleteError) {
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
// Save new variant files
|
|
255
|
-
const savedVariants = {};
|
|
256
|
-
for (const [variantName, variantData] of Object.entries(processedImage.variants)) {
|
|
257
|
-
if (variantData.buffer) {
|
|
258
|
-
try {
|
|
259
|
-
if (this.deps.mediaStorage.saveVariantFile) {
|
|
260
|
-
const variantPath = await this.deps.mediaStorage.saveVariantFile(id, variantName, variantData.buffer, variantData.format);
|
|
261
|
-
// Store variant info without URL - let frontend handle URL construction
|
|
262
|
-
savedVariants[variantName] = {
|
|
263
|
-
width: variantData.width,
|
|
264
|
-
height: variantData.height,
|
|
265
|
-
format: variantData.format,
|
|
266
|
-
size: variantData.size
|
|
267
|
-
};
|
|
268
|
-
this.deps.logger.info('New variant saved', {
|
|
269
|
-
parentId: id,
|
|
270
|
-
variantName,
|
|
271
|
-
path: variantPath
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
catch (variantError) {
|
|
276
|
-
this.deps.logger.warn('Failed to save new variant', {
|
|
277
|
-
parentId: id,
|
|
278
|
-
variantName,
|
|
279
|
-
error: variantError instanceof Error ? variantError.message : 'Unknown error'
|
|
280
|
-
});
|
|
281
|
-
}
|
|
319
|
+
const message = deleteError instanceof Error ? deleteError.message : 'Unknown error';
|
|
320
|
+
this.deps.logger.error('Existing variants could not be deleted after retries', { id, error: message });
|
|
321
|
+
staleVariantFailures.push({ stage: 'save-variant', error: `stale variants left in place: ${message}` });
|
|
282
322
|
}
|
|
283
323
|
}
|
|
324
|
+
// The same generation path as upload, so retries and reporting cannot drift apart.
|
|
325
|
+
const outcome = await this.generateVariants(id, file, {
|
|
326
|
+
id: mediaFile.id,
|
|
327
|
+
filename: mediaFile.filename,
|
|
328
|
+
path: mediaFile.metadata?.path || mediaFile.filename
|
|
329
|
+
});
|
|
330
|
+
const failures = [...staleVariantFailures, ...(outcome.report?.failures ?? [])];
|
|
284
331
|
// Update metadata with new variants
|
|
285
332
|
const updatedMetadata = {
|
|
286
333
|
...mediaFile.metadata,
|
|
287
|
-
imageVariants:
|
|
288
|
-
originalDimensions: {
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
334
|
+
imageVariants: outcome.variants,
|
|
335
|
+
...(outcome.originalDimensions ? { originalDimensions: outcome.originalDimensions } : {}),
|
|
336
|
+
imageProcessing: failures.length === 0
|
|
337
|
+
? undefined
|
|
338
|
+
: {
|
|
339
|
+
status: outcome.report?.status ?? 'partial',
|
|
340
|
+
failures,
|
|
341
|
+
failedAt: new Date().toISOString()
|
|
342
|
+
}
|
|
292
343
|
};
|
|
293
344
|
// Save updated metadata
|
|
294
345
|
const updatedMediaFile = await this.deps.mediaStorage.updateFile?.(id, updatedMetadata);
|
|
295
346
|
if (!updatedMediaFile) {
|
|
296
347
|
throw new Error('Failed to update media file metadata');
|
|
297
348
|
}
|
|
298
|
-
this.deps.logger.info('Variants regenerated
|
|
349
|
+
this.deps.logger.info('Variants regenerated', {
|
|
299
350
|
id,
|
|
300
|
-
variantCount: Object.keys(
|
|
351
|
+
variantCount: Object.keys(outcome.variants).length,
|
|
352
|
+
failureCount: failures.length
|
|
301
353
|
});
|
|
302
354
|
return updatedMediaFile;
|
|
303
355
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-service.js","sourceRoot":"","sources":["../../../src/core/services/media-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"media-service.js","sourceRoot":"","sources":["../../../src/core/services/media-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAG7D,OAAO,EAAE,SAAS,EAAqB,MAAM,mBAAmB,CAAA;AAIhE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AA6C7E;;GAEG;AACH,MAAM,OAAO,YAAY;IACM;IAA7B,YAA6B,IAA8B;QAA9B,SAAI,GAAJ,IAAI,CAA0B;IAAG,CAAC;IAE/D,mBAAmB;IACZ,KAAK,CAAC,WAAW,CAAC,IAAU;QACjC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAA;QAC3D,CAAC;QAED,IAAI,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAA;QACjC,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC9B,iBAAiB,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAA;QAC7D,CAAC;QAED,MAAM,QAAQ,GAAkB;YAC9B,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YACvD,QAAQ,EAAE,iBAAiB;YAC3B,WAAW,EAAE,IAAI,CAAC,IAAI;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;SACpD,CAAA;QAED,0BAA0B;QAC1B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAEzE,sCAAsC;QACtC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE;gBAC7D,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,kEAAkE;gBAClE,IAAI,EAAE,QAAQ,CAAC,QAAQ;aACxB,CAAC,CAAA;YAEF,SAAS,CAAC,QAAQ,GAAG;gBACnB,GAAG,SAAS,CAAC,QAAQ;gBACrB,aAAa,EAAE,OAAO,CAAC,QAAQ;gBAC/B,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzF,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D,CAAA;YAED,oFAAoF;YACpF,yFAAyF;YACzF,mFAAmF;YACnF,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;gBACtC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;gBAC7E,IAAI,CAAC;oBACH,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,QAAS,CAAC,EAAE,IAAI,CAAC,YAAY,CAChF,gCAAgC,EAChC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,CACxB,CAAC,CAAA;oBACF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;wBACrD,MAAM,EAAE,QAAQ,CAAC,EAAE;wBACnB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM;qBACnD,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,WAAW,EAAE,CAAC;oBACrB,MAAM,OAAO,GAAG,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;oBACpF,sFAAsF;oBACtF,mFAAmF;oBACnF,wEAAwE;oBACxE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE;wBACnE,MAAM,EAAE,QAAQ,CAAC,EAAE;wBACnB,KAAK,EAAE,OAAO;qBACf,CAAC,CAAA;oBACF,SAAS,CAAC,QAAQ,GAAG;wBACnB,GAAG,SAAS,CAAC,QAAQ;wBACrB,eAAe,EAAE;4BACf,MAAM,EAAE,QAAiB;4BACzB,QAAQ,EAAE;gCACR,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC;gCACnC,EAAE,KAAK,EAAE,kBAA2B,EAAE,KAAK,EAAE,OAAO,EAAE;6BACvD;4BACD,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;yBACnC;qBACF,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;YAC9D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE;oBAC3D,KAAK;oBACL,MAAM,EAAE,SAAS,CAAC,EAAE;iBACrB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAGD;;;;;;;OAOG;IACK,YAAY,CAAC,SAAiB,EAAE,OAAgC;QACtE,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,WAAW,EAAE,CAAC,KAAc,EAAE,EAAE;gBAC9B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;gBAClG,MAAM,SAAS,GAAG;oBAChB,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,WAAW;iBACzF,CAAA;gBACD,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;YAC5D,CAAC;YACD,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;gBACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,SAAS,EAAE,EAAE;oBAC9C,GAAG,OAAO;oBACV,OAAO;oBACP,OAAO;oBACP,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAChE,CAAC,CAAA;YACJ,CAAC;SACF,CAAA;IACH,CAAC;IAED;;;;;;;;OAQG;IACK,KAAK,CAAC,gBAAgB,CAC5B,EAAU,EACV,IAAU,EACV,QAAwD;QAExD,MAAM,QAAQ,GAAqB,EAAE,CAAA;QAErC,IAAI,cAAc,CAAA;QAClB,IAAI,CAAC;YACH,cAAc,GAAG,MAAM,SAAS,CAC9B,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,EAChE,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CACnD,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;YACxE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;YAC/F,OAAO;gBACL,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE;oBACN,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;oBAChD,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACnC;aACF,CAAA;QACH,CAAC;QAED,MAAM,QAAQ,GAA4B,EAAE,CAAA;QAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAE5F,KAAK,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAsC,EAAE,CAAC;YACtH,IAAI,CAAC,WAAW,CAAC,MAAM;gBAAE,SAAQ;YAEjC,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,mFAAmF;gBACnF,QAAQ,CAAC,WAAW,CAAC,GAAG;oBACtB,GAAG,EAAE,WAAW,CAAC,GAAG;oBACpB,KAAK,EAAE,WAAW,CAAC,KAAK;oBACxB,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,IAAI,EAAE,WAAW,CAAC,IAAI;iBACvB,CAAA;gBACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wEAAwE,EAAE;oBAC9F,QAAQ,EAAE,EAAE;oBACZ,WAAW;iBACZ,CAAC,CAAA;gBACF,SAAQ;YACV,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,SAAS,CACjC,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,MAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAC/E,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CACtE,CAAA;gBAED,wEAAwE;gBACxE,QAAQ,CAAC,WAAW,CAAC,GAAG;oBACtB,KAAK,EAAE,WAAW,CAAC,KAAK;oBACxB,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,IAAI,EAAE,WAAW,CAAC,IAAI;iBACvB,CAAA;gBAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;YAC/F,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACtB,MAAM,OAAO,GAAG,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;gBACtF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,EAAE;oBACtE,QAAQ,EAAE,EAAE;oBACZ,WAAW;oBACX,KAAK,EAAE,OAAO;iBACf,CAAC,CAAA;gBACF,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;YAChF,CAAC;QACH,CAAC;QAED,OAAO;YACL,QAAQ;YACR,kBAAkB,EAAE;gBAClB,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK;gBACpC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM;aACvC;YACD,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAC3B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;SACxE,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,EAAU;QAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC9B,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;QAC1C,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACjD,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,QAA6B;QAChE,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAA;QAC3D,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC9B,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;QAC1C,CAAC;QAED,8BAA8B;QAC9B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC9D,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,qBAAqB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QAC9C,CAAC;QAED,2DAA2D;QAC3D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAClE,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;IAC9D,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,EAAU;QACrC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAA;QAC/D,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC9B,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;QAC1C,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;IACxD,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,OAA6C;QAClE,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QACzD,CAAC;QAED,0DAA0D;QAC1D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;QACnE,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;IAC9D,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,EAAU;QACjC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAA;QAC3D,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC9B,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;QAC1C,CAAC;QAED,wBAAwB;QACxB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC9D,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,qBAAqB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QAC9C,CAAC;QAED,yCAAyC;QACzC,IAAI,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;YACrD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,uEAAuE;gBACvE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;oBACrD,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAChE,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QAE3C,2BAA2B;QAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAA;YACrE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE;oBAC1D,KAAK;oBACL,MAAM,EAAE,EAAE;iBACX,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,uBAAuB,CAAC,EAAU;QAC7C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,yBAAyB,CAAC,CAAA;YAEtE,8BAA8B;YAC9B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAA;YACvD,CAAC;YAED,8BAA8B;YAC9B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,iBAAiB,CAAC,wDAAwD,EAAE,aAAa,CAAC,CAAA;YACtG,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;YAE5F,gCAAgC;YAChC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;YACnE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;YACzD,CAAC;YAED,0DAA0D;YAC1D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQ,EAAE;gBACvE,IAAI,EAAE,SAAS,CAAC,WAAW;aAC5B,CAAC,CAAA;YAEF,0FAA0F;YAC1F,sFAAsF;YACtF,sDAAsD;YACtD,MAAM,oBAAoB,GAAqB,EAAE,CAAA;YACjD,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;gBAC9C,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;gBACjG,IAAI,CAAC;oBACH,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,0BAA0B,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;oBACpG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC5D,CAAC;gBAAC,OAAO,WAAW,EAAE,CAAC;oBACrB,MAAM,OAAO,GAAG,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;oBACpF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;oBACtG,oBAAoB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,iCAAiC,OAAO,EAAE,EAAE,CAAC,CAAA;gBACzG,CAAC;YACH,CAAC;YAED,mFAAmF;YACnF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE;gBACpD,EAAE,EAAE,SAAS,CAAC,EAAE;gBAChB,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,IAAI,EAAG,SAAS,CAAC,QAAgB,EAAE,IAAI,IAAI,SAAS,CAAC,QAAQ;aAC9D,CAAC,CAAA;YAEF,MAAM,QAAQ,GAAG,CAAC,GAAG,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAA;YAE/E,oCAAoC;YACpC,MAAM,eAAe,GAAG;gBACtB,GAAG,SAAS,CAAC,QAAQ;gBACrB,aAAa,EAAE,OAAO,CAAC,QAAQ;gBAC/B,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzF,eAAe,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC;oBACpC,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC;wBACE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,SAAS;wBAC3C,QAAQ;wBACR,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBACnC;aACN,CAAA;YAED,wBAAwB;YACxB,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,CAAA;YACvF,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;YACzD,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBAC5C,EAAE;gBACF,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM;gBAClD,YAAY,EAAE,QAAQ,CAAC,MAAM;aAC9B,CAAC,CAAA;YAEF,OAAO,gBAAgB,CAAA;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE;gBACtD,EAAE;gBACF,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,CAAC,CAAA;YACF,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED,8BAA8B;IACvB,WAAW,CAAC,OAAe,EAAE,WAAoB;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IACxE,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAA;IACtC,CAAC;IAED,kBAAkB;IACX,4BAA4B,CAAC,IAAU;QAC5C,6CAA6C;QAC7C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAA;QAC1D,MAAM,OAAO,GAAG,eAAe,EAAE,WAAW,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAA,CAAC,gBAAgB;QACpF,MAAM,YAAY,GAAG,eAAe,EAAE,YAAY,IAAI;YACpD,SAAS;YACT,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe;YACrE,QAAQ;YACR,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW;YACnD,4DAA4D;YAC5D,YAAY,EAAQ,0BAA0B;YAC9C,WAAW,EAAS,8BAA8B;YAClD,WAAW,EAAS,MAAM;YAC1B,YAAY,EAAQ,8BAA8B;YAClD,WAAW,EAAS,MAAM;YAC1B,WAAW,EAAS,MAAM;YAC1B,WAAW,EAAS,kBAAkB;YACtC,aAAa,EAAO,8BAA8B;YAClD,YAAY,EAAQ,OAAO;YAC3B,YAAY,EAAQ,aAAa;YACjC,YAAY;YACZ,iBAAiB;YACjB,oBAAoB;YACpB,yEAAyE;YACzE,OAAO;YACP,YAAY,EAAE,UAAU;YACxB,kBAAkB;SACnB,CAAA;QAED,IAAI,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,iBAAiB,CAAC,uBAAuB,OAAO,GAAG,IAAI,GAAG,IAAI,KAAK,EAAE,MAAM,CAAC,CAAA;QACxF,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,iBAAiB,CAAC,0BAA0B,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAA;QAC5E,CAAC;QAED,4CAA4C;QAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtD,IAAI,aAAa,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE;gBAC3C,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,SAAS,EAAE,aAAa;aACzB,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,aAAa,CAAA;IACtB,CAAC;IAEM,gBAAgB,CAAC,QAAgB;QACtC,0BAA0B;QAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACzC,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;QACpE,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAEhE,yBAAyB;QACzB,IAAI,SAAS,GAAG,IAAI;YAClB,qDAAqD;aACpD,SAAS,CAAC,KAAK,CAAC;aAChB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAChC,qDAAqD;aACpD,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;YACjC,sCAAsC;aACrC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;YACpB,kCAAkC;aACjC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;YACxB,wBAAwB;eACrB,MAAM,CAAA;QAEX,wDAAwD;QACxD,MAAM,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;QAElE,0DAA0D;QAC1D,MAAM,aAAa,GAAG,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAA;QACrD,IAAI,SAAS,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YACrC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;QACnD,CAAC;QAED,OAAO,SAAS,GAAG,kBAAkB,CAAA;IACvC,CAAC;IAEM,gBAAgB,CAAC,QAAgB;QACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACjC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7C,CAAC;CACF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retry with exponential backoff and jitter.
|
|
3
|
+
*
|
|
4
|
+
* This exists because remote media processing is not reliable enough to call once. Measured
|
|
5
|
+
* against Cloudflare's real Images service, roughly one call in fifteen of a 6MB JPEG fails
|
|
6
|
+
* with a transient error ("Network connection lost", "internal error; reference = ..."), and a
|
|
7
|
+
* single failure there used to mean an image silently ended up with no thumbnail.
|
|
8
|
+
*
|
|
9
|
+
* Jitter is not decoration. Variants are generated in a loop, so a batch that fails together
|
|
10
|
+
* would otherwise retry together, in step, and hit the same overloaded backend at the same
|
|
11
|
+
* moment. Each delay is therefore spread across half its window.
|
|
12
|
+
*/
|
|
13
|
+
/** Options for {@link withRetry}. All have defaults chosen for a remote image transform. */
|
|
14
|
+
export interface RetryOptions {
|
|
15
|
+
/** Total attempts, first one included. One means no retry at all. @default 3 */
|
|
16
|
+
attempts?: number;
|
|
17
|
+
/** Delay before the first retry, doubling from there. @default 200 */
|
|
18
|
+
baseDelayMs?: number;
|
|
19
|
+
/** Ceiling on any single delay, so backoff cannot run away. @default 5000 */
|
|
20
|
+
maxDelayMs?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Whether an error is worth retrying. Return false for anything a second attempt cannot fix —
|
|
23
|
+
* an unsupported format, a rejected size — so a permanent failure fails fast.
|
|
24
|
+
* @default everything is retryable
|
|
25
|
+
*/
|
|
26
|
+
isRetryable?: (error: unknown) => boolean;
|
|
27
|
+
/** Called before sleeping, so a caller can log that it is about to retry. */
|
|
28
|
+
onRetry?: (details: {
|
|
29
|
+
error: unknown;
|
|
30
|
+
attempt: number;
|
|
31
|
+
delayMs: number;
|
|
32
|
+
}) => void;
|
|
33
|
+
/** Injectable for tests, so a suite never actually waits. */
|
|
34
|
+
sleep?: (ms: number) => Promise<void>;
|
|
35
|
+
/** Injectable for tests, so jitter can be made deterministic. @default Math.random */
|
|
36
|
+
random?: () => number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Run `operation`, retrying transient failures with exponential backoff.
|
|
40
|
+
*
|
|
41
|
+
* Rethrows the last error once the attempts are spent, so a caller still sees a real failure —
|
|
42
|
+
* retrying is meant to absorb flakiness, never to hide it.
|
|
43
|
+
*/
|
|
44
|
+
export declare function withRetry<T>(operation: () => Promise<T>, options?: RetryOptions): Promise<T>;
|
|
45
|
+
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../src/core/utils/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,4FAA4F;AAC5F,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAA;IACzC,6EAA6E;IAC7E,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACjF,6DAA6D;IAC7D,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,MAAM,CAAA;CACtB;AAID;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,CAAC,CAAC,CA6BZ"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retry with exponential backoff and jitter.
|
|
3
|
+
*
|
|
4
|
+
* This exists because remote media processing is not reliable enough to call once. Measured
|
|
5
|
+
* against Cloudflare's real Images service, roughly one call in fifteen of a 6MB JPEG fails
|
|
6
|
+
* with a transient error ("Network connection lost", "internal error; reference = ..."), and a
|
|
7
|
+
* single failure there used to mean an image silently ended up with no thumbnail.
|
|
8
|
+
*
|
|
9
|
+
* Jitter is not decoration. Variants are generated in a loop, so a batch that fails together
|
|
10
|
+
* would otherwise retry together, in step, and hit the same overloaded backend at the same
|
|
11
|
+
* moment. Each delay is therefore spread across half its window.
|
|
12
|
+
*/
|
|
13
|
+
const defaultSleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
14
|
+
/**
|
|
15
|
+
* Run `operation`, retrying transient failures with exponential backoff.
|
|
16
|
+
*
|
|
17
|
+
* Rethrows the last error once the attempts are spent, so a caller still sees a real failure —
|
|
18
|
+
* retrying is meant to absorb flakiness, never to hide it.
|
|
19
|
+
*/
|
|
20
|
+
export async function withRetry(operation, options = {}) {
|
|
21
|
+
const attempts = Math.max(1, options.attempts ?? 3);
|
|
22
|
+
const baseDelayMs = options.baseDelayMs ?? 200;
|
|
23
|
+
const maxDelayMs = options.maxDelayMs ?? 5000;
|
|
24
|
+
const isRetryable = options.isRetryable ?? (() => true);
|
|
25
|
+
const sleep = options.sleep ?? defaultSleep;
|
|
26
|
+
const random = options.random ?? Math.random;
|
|
27
|
+
let lastError;
|
|
28
|
+
for (let attempt = 1; attempt <= attempts; attempt++) {
|
|
29
|
+
try {
|
|
30
|
+
return await operation();
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
lastError = error;
|
|
34
|
+
// The last attempt and an error nothing will fix both mean: stop now, surface it.
|
|
35
|
+
if (attempt === attempts || !isRetryable(error))
|
|
36
|
+
break;
|
|
37
|
+
const window = Math.min(maxDelayMs, baseDelayMs * 2 ** (attempt - 1));
|
|
38
|
+
// Equal jitter: half the window guaranteed, half spread, so concurrent callers separate
|
|
39
|
+
// without any of them retrying immediately.
|
|
40
|
+
const delayMs = Math.round(window / 2 + random() * (window / 2));
|
|
41
|
+
options.onRetry?.({ error, attempt, delayMs });
|
|
42
|
+
await sleep(delayMs);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
throw lastError;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/core/utils/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAwBH,MAAM,YAAY,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAEnG;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAA2B,EAC3B,UAAwB,EAAE;IAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAA;IACnD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,GAAG,CAAA;IAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAA;IAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IACvD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAAA;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAA;IAE5C,IAAI,SAAkB,CAAA;IACtB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;QACrD,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAA;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,CAAA;YAEjB,kFAAkF;YAClF,IAAI,OAAO,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAAE,MAAK;YAEtD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAA;YACrE,wFAAwF;YACxF,4CAA4C;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;YAEhE,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;YAC9C,MAAM,KAAK,CAAC,OAAO,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAA;AACjB,CAAC"}
|
|
@@ -261,6 +261,14 @@ export interface ServerConfig {
|
|
|
261
261
|
* and lives at the top level of the config as `structure`.
|
|
262
262
|
*/
|
|
263
263
|
export interface StudioConfig {
|
|
264
|
+
/**
|
|
265
|
+
* Public URL the Studio is reachable at, e.g. `https://cms.example.com/studio`.
|
|
266
|
+
* This is the one thing the server needs to know about where the site mounted
|
|
267
|
+
* the Studio: it derives the device-flow approval page (`<url>/auth/device`)
|
|
268
|
+
* and the base of links in system emails from it. Defaults to the
|
|
269
|
+
* `STUDIO_URL` environment variable.
|
|
270
|
+
*/
|
|
271
|
+
url?: string;
|
|
264
272
|
/** Studio branding (also merged with the branding stored in settings) */
|
|
265
273
|
branding?: {
|
|
266
274
|
title?: string;
|
|
@@ -271,17 +279,7 @@ export interface StudioConfig {
|
|
|
271
279
|
accent?: string;
|
|
272
280
|
};
|
|
273
281
|
};
|
|
274
|
-
/**
|
|
275
|
-
fields?: any[];
|
|
276
|
-
/** Studio behavior settings */
|
|
277
|
-
settings?: {
|
|
278
|
-
pageSize?: number;
|
|
279
|
-
enableDrafts?: boolean;
|
|
280
|
-
enableVersioning?: boolean;
|
|
281
|
-
autoSave?: boolean;
|
|
282
|
-
autosaveInterval?: number;
|
|
283
|
-
};
|
|
284
|
-
/** Session management */
|
|
282
|
+
/** Session management, served to the Studio over the API */
|
|
285
283
|
session?: {
|
|
286
284
|
refreshBuffer?: number;
|
|
287
285
|
warningBuffer?: number;
|
|
@@ -289,6 +287,23 @@ export interface StudioConfig {
|
|
|
289
287
|
inactivityTimeout?: number;
|
|
290
288
|
};
|
|
291
289
|
}
|
|
290
|
+
/**
|
|
291
|
+
* Keys under `studio` that no longer do anything. They are accepted and reported
|
|
292
|
+
* at boot rather than refused: nothing depended on them, so a site carrying
|
|
293
|
+
* them keeps starting while its owner cleans them up.
|
|
294
|
+
*/
|
|
295
|
+
export declare const IGNORED_STUDIO_KEYS: Record<string, string>;
|
|
296
|
+
/** Names the `studio` keys that are accepted but do nothing. */
|
|
297
|
+
export declare function ignoredStudioKeys(studio: unknown): string[];
|
|
298
|
+
/**
|
|
299
|
+
* The Studio's public URL, from the config or the STUDIO_URL environment
|
|
300
|
+
* variable, without a trailing slash. Undefined when neither is set.
|
|
301
|
+
*/
|
|
302
|
+
export declare function resolveStudioUrl(config: {
|
|
303
|
+
studio?: {
|
|
304
|
+
url?: string;
|
|
305
|
+
};
|
|
306
|
+
} | undefined): string | undefined;
|
|
292
307
|
/**
|
|
293
308
|
* Keys that used to live under `studio` and are refused since 3.0, with the
|
|
294
309
|
* message the server prints so the migration is obvious.
|
|
@@ -533,8 +548,8 @@ export interface TrokkyConfig {
|
|
|
533
548
|
issuer?: string;
|
|
534
549
|
/**
|
|
535
550
|
* Where the device-code flow sends a person to approve a sign-in (RFC 8628
|
|
536
|
-
* `verification_uri`).
|
|
537
|
-
*
|
|
551
|
+
* `verification_uri`). Rarely needed: it is derived from `studio.url` as
|
|
552
|
+
* `<studio.url>/auth/device`, falling back to `${issuer}/studio/auth/device`.
|
|
538
553
|
*/
|
|
539
554
|
verificationUri?: string;
|
|
540
555
|
accessTokenTtl?: number;
|
|
@@ -599,7 +614,9 @@ export interface TrokkyConfigWithDefaults extends TrokkyConfig {
|
|
|
599
614
|
trustProxy?: boolean | number | string;
|
|
600
615
|
};
|
|
601
616
|
structure?: any;
|
|
602
|
-
studio: Required<StudioConfig
|
|
617
|
+
studio: Required<Omit<StudioConfig, 'url'>> & {
|
|
618
|
+
url?: string;
|
|
619
|
+
};
|
|
603
620
|
/** i18n configuration with defaults applied */
|
|
604
621
|
i18n: Required<I18nConfig>;
|
|
605
622
|
mail?: MailConfig;
|