screenci 0.0.76 → 0.0.79
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/cli.d.ts +58 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +584 -200
- package/dist/cli.js.map +1 -1
- package/dist/docs/manifest.d.ts +253 -98
- package/dist/docs/manifest.d.ts.map +1 -1
- package/dist/docs/manifest.js +92 -32
- package/dist/docs/manifest.js.map +1 -1
- package/dist/docs/video-sources/camera-and-zooming.screenci.d.ts +2 -0
- package/dist/docs/video-sources/camera-and-zooming.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/camera-and-zooming.screenci.js +57 -0
- package/dist/docs/video-sources/camera-and-zooming.screenci.js.map +1 -0
- package/dist/docs/video-sources/installation.screenci.js +9 -6
- package/dist/docs/video-sources/installation.screenci.js.map +1 -1
- package/dist/docs/video-sources/languages.screenci.d.ts +2 -0
- package/dist/docs/video-sources/languages.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/languages.screenci.js +68 -0
- package/dist/docs/video-sources/languages.screenci.js.map +1 -0
- package/dist/docs/video-sources/locator-highlight-animated.screenci.js +1 -1
- package/dist/docs/video-sources/locator-highlight-animated.screenci.js.map +1 -1
- package/dist/docs/video-sources/narration.screenci.d.ts +2 -0
- package/dist/docs/video-sources/narration.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/narration.screenci.js +71 -0
- package/dist/docs/video-sources/narration.screenci.js.map +1 -0
- package/dist/docs/video-sources/public-urls-and-embeds.screenci.d.ts +2 -0
- package/dist/docs/video-sources/public-urls-and-embeds.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/public-urls-and-embeds.screenci.js +60 -0
- package/dist/docs/video-sources/public-urls-and-embeds.screenci.js.map +1 -0
- package/dist/docs/video-sources/speaking-style.screenci.d.ts +2 -0
- package/dist/docs/video-sources/speaking-style.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/speaking-style.screenci.js +76 -0
- package/dist/docs/video-sources/speaking-style.screenci.js.map +1 -0
- package/dist/docs/video-sources/vertical-video.screenci.d.ts +2 -0
- package/dist/docs/video-sources/vertical-video.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/vertical-video.screenci.js +58 -0
- package/dist/docs/video-sources/vertical-video.screenci.js.map +1 -0
- package/dist/docs/videos.d.ts +20 -0
- package/dist/docs/videos.d.ts.map +1 -1
- package/dist/docs/videos.js +25 -0
- package/dist/docs/videos.js.map +1 -1
- package/dist/e2e/instrument.e2e.js +8 -0
- package/dist/e2e/instrument.e2e.js.map +1 -1
- package/dist/e2e/redact.e2e.d.ts +2 -0
- package/dist/e2e/redact.e2e.d.ts.map +1 -0
- package/dist/e2e/redact.e2e.js +161 -0
- package/dist/e2e/redact.e2e.js.map +1 -0
- package/dist/index.d.ts +10 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/src/asset.d.ts +154 -13
- package/dist/src/asset.d.ts.map +1 -1
- package/dist/src/asset.js +262 -32
- package/dist/src/asset.js.map +1 -1
- package/dist/src/assetHash.d.ts +27 -0
- package/dist/src/assetHash.d.ts.map +1 -0
- package/dist/src/assetHash.js +0 -0
- package/dist/src/assetHash.js.map +1 -0
- package/dist/src/audio.d.ts +8 -5
- package/dist/src/audio.d.ts.map +1 -1
- package/dist/src/audio.js +56 -31
- package/dist/src/audio.js.map +1 -1
- package/dist/src/builder.d.ts +132 -32
- package/dist/src/builder.d.ts.map +1 -1
- package/dist/src/builder.js +66 -20
- package/dist/src/builder.js.map +1 -1
- package/dist/src/changeFocus.d.ts.map +1 -1
- package/dist/src/changeFocus.js +103 -34
- package/dist/src/changeFocus.js.map +1 -1
- package/dist/src/cue.d.ts +29 -17
- package/dist/src/cue.d.ts.map +1 -1
- package/dist/src/cue.js +138 -61
- package/dist/src/cue.js.map +1 -1
- package/dist/src/declare.d.ts +8 -4
- package/dist/src/declare.d.ts.map +1 -1
- package/dist/src/declare.js +28 -10
- package/dist/src/declare.js.map +1 -1
- package/dist/src/defaults.d.ts +23 -0
- package/dist/src/defaults.d.ts.map +1 -1
- package/dist/src/defaults.js +23 -0
- package/dist/src/defaults.js.map +1 -1
- package/dist/src/events.d.ts +289 -25
- package/dist/src/events.d.ts.map +1 -1
- package/dist/src/events.js +145 -13
- package/dist/src/events.js.map +1 -1
- package/dist/src/htmlRasterizer.d.ts +10 -0
- package/dist/src/htmlRasterizer.d.ts.map +1 -1
- package/dist/src/htmlRasterizer.js +12 -2
- package/dist/src/htmlRasterizer.js.map +1 -1
- package/dist/src/init.d.ts +2 -0
- package/dist/src/init.d.ts.map +1 -1
- package/dist/src/init.js +60 -28
- package/dist/src/init.js.map +1 -1
- package/dist/src/instrument.d.ts.map +1 -1
- package/dist/src/instrument.js +25 -7
- package/dist/src/instrument.js.map +1 -1
- package/dist/src/locales.d.ts.map +1 -1
- package/dist/src/locales.js +1 -0
- package/dist/src/locales.js.map +1 -1
- package/dist/src/localize.d.ts +25 -17
- package/dist/src/localize.d.ts.map +1 -1
- package/dist/src/localize.js +18 -10
- package/dist/src/localize.js.map +1 -1
- package/dist/src/localizeRuntime.d.ts +18 -13
- package/dist/src/localizeRuntime.d.ts.map +1 -1
- package/dist/src/localizeRuntime.js +28 -18
- package/dist/src/localizeRuntime.js.map +1 -1
- package/dist/src/logger.d.ts +5 -0
- package/dist/src/logger.d.ts.map +1 -1
- package/dist/src/logger.js +7 -0
- package/dist/src/logger.js.map +1 -1
- package/dist/src/narrationVisibility.d.ts +19 -0
- package/dist/src/narrationVisibility.d.ts.map +1 -0
- package/dist/src/narrationVisibility.js +26 -0
- package/dist/src/narrationVisibility.js.map +1 -0
- package/dist/src/recordingData.d.ts +7 -0
- package/dist/src/recordingData.d.ts.map +1 -1
- package/dist/src/recordingSize.d.ts +32 -0
- package/dist/src/recordingSize.d.ts.map +1 -0
- package/dist/src/recordingSize.js +54 -0
- package/dist/src/recordingSize.js.map +1 -0
- package/dist/src/redact.d.ts +68 -0
- package/dist/src/redact.d.ts.map +1 -0
- package/dist/src/redact.js +138 -0
- package/dist/src/redact.js.map +1 -0
- package/dist/src/redactController.d.ts +61 -0
- package/dist/src/redactController.d.ts.map +1 -0
- package/dist/src/redactController.js +232 -0
- package/dist/src/redactController.js.map +1 -0
- package/dist/src/runtimeContext.d.ts +32 -0
- package/dist/src/runtimeContext.d.ts.map +1 -1
- package/dist/src/runtimeContext.js +21 -0
- package/dist/src/runtimeContext.js.map +1 -1
- package/dist/src/runtimeMode.d.ts +15 -7
- package/dist/src/runtimeMode.d.ts.map +1 -1
- package/dist/src/runtimeMode.js +17 -6
- package/dist/src/runtimeMode.js.map +1 -1
- package/dist/src/screenAudio.d.ts +34 -4
- package/dist/src/screenAudio.d.ts.map +1 -1
- package/dist/src/screenAudio.js +0 -0
- package/dist/src/screenAudio.js.map +1 -1
- package/dist/src/screenAudioSink.d.ts +12 -0
- package/dist/src/screenAudioSink.d.ts.map +1 -1
- package/dist/src/screenAudioSink.js +30 -0
- package/dist/src/screenAudioSink.js.map +1 -1
- package/dist/src/screenshot.d.ts +16 -14
- package/dist/src/screenshot.d.ts.map +1 -1
- package/dist/src/screenshot.js +11 -11
- package/dist/src/screenshot.js.map +1 -1
- package/dist/src/sourceTrim.d.ts +29 -0
- package/dist/src/sourceTrim.d.ts.map +1 -0
- package/dist/src/sourceTrim.js +76 -0
- package/dist/src/sourceTrim.js.map +1 -0
- package/dist/src/studio.d.ts +71 -3
- package/dist/src/studio.d.ts.map +1 -1
- package/dist/src/studio.js +19 -1
- package/dist/src/studio.js.map +1 -1
- package/dist/src/timelineOffset.d.ts +46 -0
- package/dist/src/timelineOffset.d.ts.map +1 -0
- package/dist/src/timelineOffset.js +66 -0
- package/dist/src/timelineOffset.js.map +1 -0
- package/dist/src/titleValidation.d.ts +38 -0
- package/dist/src/titleValidation.d.ts.map +1 -1
- package/dist/src/titleValidation.js +42 -0
- package/dist/src/titleValidation.js.map +1 -1
- package/dist/src/types.d.ts +85 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/video.d.ts +37 -34
- package/dist/src/video.d.ts.map +1 -1
- package/dist/src/video.js +99 -48
- package/dist/src/video.js.map +1 -1
- package/dist/src/voiceSampleAudio.d.ts +34 -0
- package/dist/src/voiceSampleAudio.d.ts.map +1 -0
- package/dist/src/voiceSampleAudio.js +105 -0
- package/dist/src/voiceSampleAudio.js.map +1 -0
- package/dist/src/voices.d.ts +2 -2
- package/dist/src/voices.d.ts.map +1 -1
- package/dist/src/voices.js +8 -3
- package/dist/src/voices.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -2
- package/templates/recordings/assets/logo.png +0 -0
package/dist/src/video.js
CHANGED
|
@@ -2,12 +2,14 @@ import { test as base } from '@playwright/test';
|
|
|
2
2
|
import { mkdir, rm } from 'fs/promises';
|
|
3
3
|
import { join, relative } from 'path';
|
|
4
4
|
import { attachRecorder } from 'playwright-recorder-plus';
|
|
5
|
+
import { ScreenciError } from './errors.js';
|
|
6
|
+
import { isStudioMarker } from './studio.js';
|
|
5
7
|
export { getDimensions } from './dimensions.js';
|
|
6
8
|
import { getDimensions, getViewportCenter } from './dimensions.js';
|
|
7
9
|
import { resetCueChain } from './cue.js';
|
|
8
10
|
import { setActiveCueRecorder } from './cue.js';
|
|
9
11
|
import { createVideoBuilder, } from './builder.js';
|
|
10
|
-
import { buildNarrationMarkers,
|
|
12
|
+
import { buildNarrationMarkers, buildValuesDeclaration, buildValues, narrationVoiceConfigFromRenderOptions, } from './localizeRuntime.js';
|
|
11
13
|
import { setActiveHideRecorder } from './hide.js';
|
|
12
14
|
import { setActiveAutoZoomRecorder, setActiveZoomPage } from './autoZoom.js';
|
|
13
15
|
import { setActiveAssetRecorder, buildOverlays, validateRegisteredAssetPaths, } from './asset.js';
|
|
@@ -20,18 +22,27 @@ import { logger } from './logger.js';
|
|
|
20
22
|
import { setMousePosition } from './mouse.js';
|
|
21
23
|
import { captureRequestedButNotEnabled, getChromiumLaunchOptions, isCaptureAudioEnabled, } from './browserLaunchOptions.js';
|
|
22
24
|
import { createScreenCIRuntimeContext, runWithScreenCIRuntimeContext, setActiveScreenCIRuntimeContext, setRuntimeAssetRecorder, setRuntimeAudioRecorder, setRuntimeAutoZoomRecorder, setRuntimeClickRecorder, setRuntimeCueRecorder, setRuntimeHideRecorder, setRuntimePage, } from './runtimeContext.js';
|
|
25
|
+
import { installRedactController } from './redact.js';
|
|
23
26
|
import { escapeFileSystemPathSegment } from './fileSystemName.js';
|
|
24
|
-
import { resolveRecordingTimingDuration,
|
|
27
|
+
import { resolveRecordingTimingDuration, parseValuesOverrides, parseRecordOptions, mergeStudioRecordOptions, } from './runtimeMode.js';
|
|
25
28
|
import { buildScreenCIContextOptions } from './contextOptions.js';
|
|
26
29
|
import { bindStillCaptureToPage } from './stillCapture.js';
|
|
27
30
|
import { startScreenAudioCapture, isScreenAudioSupported, screenAudioUnsupportedMessage, setActiveCaptureDevice, SCREEN_AUDIO_DOCS_URL, } from './screenAudio.js';
|
|
28
|
-
import { createNullSink, unloadNullSink, workerSinkName, } from './screenAudioSink.js';
|
|
31
|
+
import { assertScreenAudioCaptureReady, createNullSink, unloadNullSink, workerSinkName, } from './screenAudioSink.js';
|
|
29
32
|
export const POST_VIDEO_PAUSE = 500;
|
|
33
|
+
/** The old `'studio'` string sentinel is retired: use `studio()` / `studio({...})`. */
|
|
34
|
+
function assertNotLegacyStudioString(value, option) {
|
|
35
|
+
if (value === 'studio') {
|
|
36
|
+
throw new ScreenciError(`use({ ${option}: 'studio' }) is no longer supported. Use ${option}: studio() ` +
|
|
37
|
+
`to hand the options to the web app, or studio({ ... }) to seed them, ` +
|
|
38
|
+
`imported from 'screenci'.`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
30
41
|
/**
|
|
31
42
|
* The record options actually used for the capture: when record options are
|
|
32
|
-
* deferred to Studio (`use({ recordOptions:
|
|
33
|
-
* before recording (keyed by video name) override the
|
|
34
|
-
* ratio, quality, and fps. Otherwise the code values are used as-is.
|
|
43
|
+
* deferred to Studio (`use({ recordOptions: studio() })`), the values fetched
|
|
44
|
+
* before recording (keyed by video name) override the base (seeded or default)
|
|
45
|
+
* aspect ratio, quality, and fps. Otherwise the code values are used as-is.
|
|
35
46
|
*/
|
|
36
47
|
export function resolveEffectiveRecordOptions(recordOptions, studioRecordOptions, videoName) {
|
|
37
48
|
if (!studioRecordOptions)
|
|
@@ -39,23 +50,39 @@ export function resolveEffectiveRecordOptions(recordOptions, studioRecordOptions
|
|
|
39
50
|
return mergeStudioRecordOptions(recordOptions, parseRecordOptions()?.[videoName]);
|
|
40
51
|
}
|
|
41
52
|
/**
|
|
42
|
-
* Resolve the `recordOptions` option, which may be
|
|
43
|
-
* (`use({ recordOptions:
|
|
44
|
-
* app. Returns the base options to record with (
|
|
45
|
-
* whether the bag is Studio-managed.
|
|
53
|
+
* Resolve the `recordOptions` option, which may be `studio()` / `studio({...})`
|
|
54
|
+
* (`use({ recordOptions: studio() })`) deferring the capture options to the web
|
|
55
|
+
* app. Returns the base options to record with (the seed merged over defaults
|
|
56
|
+
* when seeded, plain defaults when blank) and whether the bag is Studio-managed.
|
|
46
57
|
*/
|
|
47
58
|
export function resolveStudioRecordOptions(recordOptions) {
|
|
48
|
-
|
|
49
|
-
|
|
59
|
+
assertNotLegacyStudioString(recordOptions, 'recordOptions');
|
|
60
|
+
if (isStudioMarker(recordOptions)) {
|
|
61
|
+
const seed = recordOptions.seed;
|
|
62
|
+
return {
|
|
63
|
+
base: seed
|
|
64
|
+
? { ...DEFAULT_VIDEO_OPTIONS, ...seed }
|
|
65
|
+
: DEFAULT_VIDEO_OPTIONS,
|
|
66
|
+
studio: true,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return { base: recordOptions, studio: false };
|
|
50
70
|
}
|
|
51
71
|
/**
|
|
52
|
-
* Resolve the `renderOptions` option, which may be
|
|
53
|
-
* deferring the render options to the web app. Returns the
|
|
54
|
-
* (`undefined` when
|
|
72
|
+
* Resolve the `renderOptions` option, which may be `studio()` / `studio({...})`
|
|
73
|
+
* deferring the render options to the web app. Returns the render options to use
|
|
74
|
+
* as the starting point (the seed when seeded, `undefined` when blank) and
|
|
75
|
+
* whether they are Studio-managed.
|
|
55
76
|
*/
|
|
56
77
|
export function resolveStudioRenderOptions(renderOptions) {
|
|
57
|
-
|
|
58
|
-
|
|
78
|
+
assertNotLegacyStudioString(renderOptions, 'renderOptions');
|
|
79
|
+
if (isStudioMarker(renderOptions)) {
|
|
80
|
+
return {
|
|
81
|
+
obj: renderOptions.seed,
|
|
82
|
+
studio: true,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return { obj: renderOptions, studio: false };
|
|
59
86
|
}
|
|
60
87
|
export async function finalizeDeferredRecordingStops(entries) {
|
|
61
88
|
await Promise.all(entries.map(async ({ recorder }) => {
|
|
@@ -240,7 +267,7 @@ export function autoEndOpenOverlays(runtimeContext, recorder) {
|
|
|
240
267
|
runtimeContext.asset.activeRuns.clear();
|
|
241
268
|
}
|
|
242
269
|
export async function withActiveRecordingContext(params) {
|
|
243
|
-
const { runtimeContext, page, recorder, fn, unendedOverlays = 'throw',
|
|
270
|
+
const { runtimeContext, page, recorder, fn, unendedOverlays = 'throw', valuesDeclaration, } = params;
|
|
244
271
|
setActiveScreenCIRuntimeContext(runtimeContext);
|
|
245
272
|
try {
|
|
246
273
|
return await runWithScreenCIRuntimeContext(runtimeContext, async () => {
|
|
@@ -268,8 +295,8 @@ export async function withActiveRecordingContext(params) {
|
|
|
268
295
|
await validateRegisteredAssetPaths(runtimeContext.testFilePath);
|
|
269
296
|
await validateRegisteredAudioPaths(runtimeContext.testFilePath);
|
|
270
297
|
}
|
|
271
|
-
if (
|
|
272
|
-
recorder.
|
|
298
|
+
if (valuesDeclaration) {
|
|
299
|
+
recorder.addValuesDeclare(valuesDeclaration.fields, valuesDeclaration.studioFields, valuesDeclaration.seed);
|
|
273
300
|
}
|
|
274
301
|
const result = await fn();
|
|
275
302
|
if (unendedOverlays === 'autoEnd') {
|
|
@@ -297,7 +324,7 @@ const _videoBase = base.extend({
|
|
|
297
324
|
_screenciLanguage: [undefined, { option: true }],
|
|
298
325
|
_screenciVideoName: [undefined, { option: true }],
|
|
299
326
|
_screenciNarration: [undefined, { option: true }],
|
|
300
|
-
|
|
327
|
+
_screenciValues: [undefined, { option: true }],
|
|
301
328
|
_screenciOverlays: [undefined, { option: true }],
|
|
302
329
|
_screenciAudio: [undefined, { option: true }],
|
|
303
330
|
_screenciRecordingLocalize: [undefined, { option: true }],
|
|
@@ -305,18 +332,23 @@ const _videoBase = base.extend({
|
|
|
305
332
|
language: async ({ _screenciLanguage }, use) => {
|
|
306
333
|
await use(_screenciLanguage);
|
|
307
334
|
},
|
|
308
|
-
narration: async ({ _screenciNarration, _screenciRecordingLocalize, renderOptions }, use) => {
|
|
335
|
+
narration: async ({ _screenciNarration, _screenciRecordingLocalize, renderOptions, _screenciSourceFile, }, use, testInfo) => {
|
|
309
336
|
const { obj: renderOptionsObj, studio: studioRender } = resolveStudioRenderOptions(renderOptions);
|
|
310
|
-
await use(buildNarrationMarkers(_screenciNarration, _screenciRecordingLocalize?.languages ?? [], narrationVoiceConfigFromRenderOptions(renderOptionsObj, studioRender)
|
|
337
|
+
await use(buildNarrationMarkers(_screenciNarration, _screenciRecordingLocalize?.languages ?? [], narrationVoiceConfigFromRenderOptions(renderOptionsObj, studioRender), undefined,
|
|
338
|
+
// Pre-warm media-cue hashes before recording so a video cue's start()
|
|
339
|
+
// does not pay the file read on the timeline.
|
|
340
|
+
_screenciSourceFile ?? testInfo.file));
|
|
311
341
|
},
|
|
312
|
-
|
|
313
|
-
await use(
|
|
342
|
+
values: async ({ _screenciValues, _screenciLanguage }, use) => {
|
|
343
|
+
await use(buildValues(_screenciValues, _screenciLanguage, parseValuesOverrides()));
|
|
314
344
|
},
|
|
315
345
|
overlays: async ({ _screenciOverlays, _screenciLanguage }, use) => {
|
|
316
346
|
await use(buildOverlays(_screenciOverlays, _screenciLanguage));
|
|
317
347
|
},
|
|
318
|
-
audio: async ({ _screenciAudio, _screenciLanguage }, use) => {
|
|
319
|
-
|
|
348
|
+
audio: async ({ _screenciAudio, _screenciLanguage, _screenciSourceFile }, use, testInfo) => {
|
|
349
|
+
// Pre-warm audio-track hashes before recording so a track's start() does not
|
|
350
|
+
// pay the file read on the timeline.
|
|
351
|
+
await use(buildAudio(_screenciAudio, _screenciLanguage, _screenciSourceFile ?? testInfo.file));
|
|
320
352
|
},
|
|
321
353
|
recordingFinalizationQueue: [
|
|
322
354
|
async ({}, use) => {
|
|
@@ -331,24 +363,34 @@ const _videoBase = base.extend({
|
|
|
331
363
|
],
|
|
332
364
|
browser: async ({ playwright }, use) => {
|
|
333
365
|
const shouldRecord = process.env.SCREENCI_RECORDING === 'true';
|
|
334
|
-
//
|
|
335
|
-
//
|
|
336
|
-
|
|
366
|
+
// captureAudio requires isolated capture (a per-worker null sink). It must
|
|
367
|
+
// succeed or the run fails, so a recording never silently ships without the
|
|
368
|
+
// isolated audio it promises.
|
|
369
|
+
const captureAudioRequested = shouldRecord && isCaptureAudioEnabled();
|
|
370
|
+
// Isolated capture is Linux-only (macOS/Windows cannot isolate the browser's
|
|
371
|
+
// audio from the rest of the machine). Requested on an unsupported platform:
|
|
372
|
+
// fail fast rather than recording silently.
|
|
373
|
+
if (captureAudioRequested && !isScreenAudioSupported()) {
|
|
374
|
+
throw new Error(screenAudioUnsupportedMessage() ??
|
|
375
|
+
'[screenci] captureAudio is not supported on this platform.');
|
|
376
|
+
}
|
|
377
|
+
const audioActive = captureAudioRequested && isScreenAudioSupported();
|
|
337
378
|
// Give this worker a dedicated null sink so capture is silent on the host,
|
|
338
379
|
// isolated from other apps, and safe under parallel workers. The browser is
|
|
339
380
|
// routed into it via PULSE_SINK and the recorder captures its monitor.
|
|
340
381
|
let sink = null;
|
|
341
382
|
if (audioActive) {
|
|
383
|
+
// Requires `pactl` and a reachable pulse server (PulseAudio or PipeWire);
|
|
384
|
+
// the pulseaudio daemon binary itself is not needed. Throws if unavailable.
|
|
385
|
+
await assertScreenAudioCaptureReady();
|
|
342
386
|
sink = await createNullSink(workerSinkName());
|
|
343
|
-
if (sink) {
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
logger.warn(`captureAudio: could not create a dedicated audio sink (is pactl ` +
|
|
348
|
-
`available?). Falling back to the default device, so recording ` +
|
|
349
|
-
`audio will play out loud and may include other apps' sound. ` +
|
|
387
|
+
if (!sink) {
|
|
388
|
+
throw new Error(`[screenci] captureAudio: could not create an isolated audio sink ` +
|
|
389
|
+
`(\`pactl load-module module-null-sink\` failed). Isolated ` +
|
|
390
|
+
`recording is required, so the run is stopped. ` +
|
|
350
391
|
`See ${SCREEN_AUDIO_DOCS_URL}`);
|
|
351
392
|
}
|
|
393
|
+
setActiveCaptureDevice(sink.monitorSource);
|
|
352
394
|
}
|
|
353
395
|
const launchOptions = getChromiumLaunchOptions(shouldRecord, audioActive);
|
|
354
396
|
const browser = await playwright.chromium.launch(sink
|
|
@@ -366,11 +408,6 @@ const _videoBase = base.extend({
|
|
|
366
408
|
await unloadNullSink(sink);
|
|
367
409
|
setActiveCaptureDevice(null);
|
|
368
410
|
}
|
|
369
|
-
// End-of-run reminder on platforms where capture was skipped.
|
|
370
|
-
const unsupported = screenAudioUnsupportedMessage();
|
|
371
|
-
if (shouldRecord && isCaptureAudioEnabled() && unsupported !== null) {
|
|
372
|
-
logger.warn(unsupported);
|
|
373
|
-
}
|
|
374
411
|
},
|
|
375
412
|
context: async ({ browser, recordOptions, _screenciVideoName, colorScheme, locale, timezoneId, userAgent, geolocation, permissions, extraHTTPHeaders, httpCredentials, ignoreHTTPSErrors, offline, storageState, baseURL, bypassCSP, acceptDownloads, javaScriptEnabled, hasTouch, isMobile, }, use, testInfo) => {
|
|
376
413
|
// Configure browser context. The viewport is derived from recordOptions
|
|
@@ -416,7 +453,7 @@ const _videoBase = base.extend({
|
|
|
416
453
|
await context.close();
|
|
417
454
|
}
|
|
418
455
|
},
|
|
419
|
-
page: async ({ context, recordOptions: codeRecordOptions, renderOptions, recordingFinalizationQueue, _screenciLanguage,
|
|
456
|
+
page: async ({ context, recordOptions: codeRecordOptions, renderOptions, recordingFinalizationQueue, _screenciLanguage, _screenciValues, _screenciVideoName, _screenciSourceFile, _screenciRecordingLocalize, }, use, testInfo) => {
|
|
420
457
|
// Only record when explicitly enabled (record command)
|
|
421
458
|
const shouldRecord = process.env.SCREENCI_RECORDING === 'true';
|
|
422
459
|
// Apply Studio record-option overrides (when deferred) so the capture,
|
|
@@ -427,10 +464,13 @@ const _videoBase = base.extend({
|
|
|
427
464
|
const recorder = new EventRecorder(renderOptionsObj, recordOptions, {
|
|
428
465
|
renderOptions: studioRender,
|
|
429
466
|
recordOptions: studioRecord,
|
|
467
|
+
// Web-owned language set: stamped into metadata.studio.languages so the app
|
|
468
|
+
// knows this video may have languages added/rendered from Studio.
|
|
469
|
+
languages: _screenciRecordingLocalize?.studioOwned ?? false,
|
|
430
470
|
});
|
|
431
|
-
// Declared `
|
|
471
|
+
// Declared `values` fields (and the active language's seeds) emitted once at
|
|
432
472
|
// recording start so the backend/Studio learn them.
|
|
433
|
-
const
|
|
473
|
+
const valuesDeclaration = buildValuesDeclaration(_screenciValues, _screenciLanguage);
|
|
434
474
|
// Asset paths are authored relative to the user's script. Playwright reports
|
|
435
475
|
// `testInfo.file` as the builder module that registered the test, so prefer
|
|
436
476
|
// the script path captured at the call site.
|
|
@@ -439,6 +479,15 @@ const _videoBase = base.extend({
|
|
|
439
479
|
// translations and stamps metadata so the upload becomes a single language
|
|
440
480
|
// version. `null` (shared / single-language) keeps every language.
|
|
441
481
|
recorder.setActiveLanguage(_screenciLanguage ?? null);
|
|
482
|
+
// Stamp the full declared language set (regardless of the `--languages`
|
|
483
|
+
// render filter), but only when a set was explicitly declared. A plain video
|
|
484
|
+
// with the implicit `['en']` default records no availableLanguages, so the
|
|
485
|
+
// app does not treat it as a managed language set. The app unions this across
|
|
486
|
+
// a video's recordings to know every code-defined language even when only a
|
|
487
|
+
// subset was rendered this run.
|
|
488
|
+
if (_screenciRecordingLocalize?.explicit === true) {
|
|
489
|
+
recorder.setAvailableLanguages(_screenciRecordingLocalize.availableLanguages ?? []);
|
|
490
|
+
}
|
|
442
491
|
// Per-language passes use a unique test title (so each gets its own
|
|
443
492
|
// recording directory) but share one `videoName` so they group as language
|
|
444
493
|
// versions of one video. Plain videos fall back to the test title.
|
|
@@ -454,12 +503,13 @@ const _videoBase = base.extend({
|
|
|
454
503
|
});
|
|
455
504
|
bindStillCaptureToPage(page);
|
|
456
505
|
await setupMouseTracking(page, recorder);
|
|
506
|
+
await installRedactController(page, runtimeContext.redact, recordOptions.redact);
|
|
457
507
|
recorder.start();
|
|
458
508
|
await withActiveRecordingContext({
|
|
459
509
|
runtimeContext,
|
|
460
510
|
page,
|
|
461
511
|
recorder,
|
|
462
|
-
|
|
512
|
+
valuesDeclaration,
|
|
463
513
|
fn: async () => {
|
|
464
514
|
await use(page);
|
|
465
515
|
},
|
|
@@ -498,6 +548,7 @@ const _videoBase = base.extend({
|
|
|
498
548
|
renderOptions: renderOptionsObj,
|
|
499
549
|
});
|
|
500
550
|
await setupMouseTracking(page, recorder);
|
|
551
|
+
await installRedactController(page, runtimeContext.redact, recordOptions.redact);
|
|
501
552
|
// Navigate to blank page to ensure window is ready and rendered
|
|
502
553
|
await page.goto('about:blank');
|
|
503
554
|
// Wait for browser window to be fully rendered before starting recording
|
|
@@ -541,7 +592,7 @@ const _videoBase = base.extend({
|
|
|
541
592
|
runtimeContext,
|
|
542
593
|
page,
|
|
543
594
|
recorder,
|
|
544
|
-
|
|
595
|
+
valuesDeclaration,
|
|
545
596
|
fn: async () => {
|
|
546
597
|
await use(page);
|
|
547
598
|
// Do not end video abruptly.
|
|
@@ -611,7 +662,7 @@ export const video = _videoBase;
|
|
|
611
662
|
// instance, so per-language / per-variant passes inherit every video fixture.
|
|
612
663
|
const _rootBuilder = createVideoBuilder(_videoBase);
|
|
613
664
|
video.narration = _rootBuilder.narration;
|
|
614
|
-
video.
|
|
665
|
+
video.values = _rootBuilder.values;
|
|
615
666
|
video.overlays = _rootBuilder.overlays;
|
|
616
667
|
video.audio = _rootBuilder.audio;
|
|
617
668
|
video.languages = _rootBuilder.languages;
|
package/dist/src/video.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/video.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/video.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upper bound on the bytes we send as a voice-clone sample. ElevenLabs rejects
|
|
3
|
+
* larger uploads ("a maximum of 11MB"); we shrink or reject before upload so a
|
|
4
|
+
* failure surfaces here, at record time, rather than mid-render. Mirrors the
|
|
5
|
+
* backend's MAX_CUSTOM_VOICE_SIZE_BYTES.
|
|
6
|
+
*/
|
|
7
|
+
export declare const MAX_VOICE_SAMPLE_BYTES = 11000000;
|
|
8
|
+
export type ExtractedVoiceSample = {
|
|
9
|
+
buffer: Buffer;
|
|
10
|
+
/** MIME type of the produced bytes. */
|
|
11
|
+
contentType: string;
|
|
12
|
+
/** Extension (with leading dot) describing the produced bytes. */
|
|
13
|
+
extension: string;
|
|
14
|
+
};
|
|
15
|
+
/** Injectable side effects, so the extraction flow can be unit tested without a
|
|
16
|
+
* real ffmpeg binary or filesystem. */
|
|
17
|
+
export type VoiceSampleAudioDeps = {
|
|
18
|
+
runFfmpeg: (args: string[]) => Promise<void>;
|
|
19
|
+
makeTempDir: (prefix: string) => Promise<string>;
|
|
20
|
+
readOutput: (path: string) => Promise<Buffer>;
|
|
21
|
+
removeDir: (path: string) => Promise<void>;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Returns an extracted/transcoded audio sample when the source is a video
|
|
25
|
+
* container or exceeds {@link MAX_VOICE_SAMPLE_BYTES}, or `null` when the source
|
|
26
|
+
* is already an audio file within the limit (upload it unchanged).
|
|
27
|
+
*
|
|
28
|
+
* Extraction strips any video track and transcodes to MP3 at 192 kbps, the
|
|
29
|
+
* format ElevenLabs recommends for cloning. A 20 MB screen recording becomes a
|
|
30
|
+
* few hundred KB of audio. If the result is still over the limit (e.g. a very
|
|
31
|
+
* long sample), this throws so the CLI can fail fast with a clear message.
|
|
32
|
+
*/
|
|
33
|
+
export declare function maybeExtractVoiceSampleAudio(sourcePath: string, sourceByteLength: number, deps?: Partial<VoiceSampleAudioDeps>): Promise<ExtractedVoiceSample | null>;
|
|
34
|
+
//# sourceMappingURL=voiceSampleAudio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voiceSampleAudio.d.ts","sourceRoot":"","sources":["../../src/voiceSampleAudio.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,WAAa,CAAA;AAMhD,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAA;IACnB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;wCACwC;AACxC,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5C,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAChD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7C,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C,CAAA;AAyCD;;;;;;;;;GASG;AACH,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,IAAI,GAAE,OAAO,CAAC,oBAAoB,CAAM,GACvC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAkDtC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { mkdtemp, readFile, rm } from 'node:fs/promises';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { extname, join } from 'node:path';
|
|
5
|
+
import ffmpegStatic from 'ffmpeg-static';
|
|
6
|
+
const ffmpegPath = ffmpegStatic;
|
|
7
|
+
/**
|
|
8
|
+
* Upper bound on the bytes we send as a voice-clone sample. ElevenLabs rejects
|
|
9
|
+
* larger uploads ("a maximum of 11MB"); we shrink or reject before upload so a
|
|
10
|
+
* failure surfaces here, at record time, rather than mid-render. Mirrors the
|
|
11
|
+
* backend's MAX_CUSTOM_VOICE_SIZE_BYTES.
|
|
12
|
+
*/
|
|
13
|
+
export const MAX_VOICE_SAMPLE_BYTES = 11_000_000;
|
|
14
|
+
// Containers that carry a video track. A voice clone only needs the audio, so
|
|
15
|
+
// for these we always strip to a small audio file before upload.
|
|
16
|
+
const VIDEO_EXTENSIONS = new Set(['.mp4', '.mov', '.webm', '.mkv', '.avi']);
|
|
17
|
+
function defaultRunFfmpeg(args) {
|
|
18
|
+
return new Promise((resolve, reject) => {
|
|
19
|
+
if (ffmpegPath === null) {
|
|
20
|
+
reject(new Error('[screenci] ffmpeg binary not found; cannot extract audio from the voice sample.'));
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const child = spawn(ffmpegPath, args, {
|
|
24
|
+
stdio: ['ignore', 'ignore', 'pipe'],
|
|
25
|
+
});
|
|
26
|
+
let stderr = '';
|
|
27
|
+
child.stderr?.on('data', (chunk) => {
|
|
28
|
+
stderr += chunk.toString();
|
|
29
|
+
});
|
|
30
|
+
child.on('error', reject);
|
|
31
|
+
child.on('close', (code) => {
|
|
32
|
+
if (code === 0) {
|
|
33
|
+
resolve();
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
reject(new Error(`[screenci] ffmpeg exited with code ${String(code)} while extracting voice-sample audio.\n${stderr.slice(-2000)}`));
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const defaultDeps = {
|
|
41
|
+
runFfmpeg: defaultRunFfmpeg,
|
|
42
|
+
makeTempDir: (prefix) => mkdtemp(prefix),
|
|
43
|
+
readOutput: (path) => readFile(path),
|
|
44
|
+
removeDir: (path) => rm(path, { recursive: true, force: true }),
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Returns an extracted/transcoded audio sample when the source is a video
|
|
48
|
+
* container or exceeds {@link MAX_VOICE_SAMPLE_BYTES}, or `null` when the source
|
|
49
|
+
* is already an audio file within the limit (upload it unchanged).
|
|
50
|
+
*
|
|
51
|
+
* Extraction strips any video track and transcodes to MP3 at 192 kbps, the
|
|
52
|
+
* format ElevenLabs recommends for cloning. A 20 MB screen recording becomes a
|
|
53
|
+
* few hundred KB of audio. If the result is still over the limit (e.g. a very
|
|
54
|
+
* long sample), this throws so the CLI can fail fast with a clear message.
|
|
55
|
+
*/
|
|
56
|
+
export async function maybeExtractVoiceSampleAudio(sourcePath, sourceByteLength, deps = {}) {
|
|
57
|
+
const ext = extname(sourcePath).toLowerCase();
|
|
58
|
+
const isVideo = VIDEO_EXTENSIONS.has(ext);
|
|
59
|
+
const tooLarge = sourceByteLength > MAX_VOICE_SAMPLE_BYTES;
|
|
60
|
+
if (!isVideo && !tooLarge)
|
|
61
|
+
return null;
|
|
62
|
+
const { runFfmpeg, makeTempDir, readOutput, removeDir } = {
|
|
63
|
+
...defaultDeps,
|
|
64
|
+
...deps,
|
|
65
|
+
};
|
|
66
|
+
const dir = await makeTempDir(join(tmpdir(), 'screenci-voice-'));
|
|
67
|
+
const outputPath = join(dir, 'voice-sample.mp3');
|
|
68
|
+
try {
|
|
69
|
+
// The clone cache is keyed by the SHA-256 of these uploaded bytes, so the
|
|
70
|
+
// output must be byte-reproducible: the same source must always yield the
|
|
71
|
+
// same MP3, otherwise the voice gets re-cloned on every run and the clone
|
|
72
|
+
// service accumulates duplicates. `-bitexact` stops ffmpeg embedding its
|
|
73
|
+
// version string, `-map_metadata -1` drops copied source tags (timestamps,
|
|
74
|
+
// device info), and `-map 0:a:0` at a fixed CBR bitrate makes the encode
|
|
75
|
+
// deterministic. The hash then only moves if the bundled encoder itself
|
|
76
|
+
// changes its output (e.g. an ffmpeg-static bump), which re-clones once.
|
|
77
|
+
await runFfmpeg([
|
|
78
|
+
'-y',
|
|
79
|
+
'-bitexact',
|
|
80
|
+
'-i',
|
|
81
|
+
sourcePath,
|
|
82
|
+
'-vn',
|
|
83
|
+
'-map',
|
|
84
|
+
'0:a:0',
|
|
85
|
+
'-map_metadata',
|
|
86
|
+
'-1',
|
|
87
|
+
'-acodec',
|
|
88
|
+
'libmp3lame',
|
|
89
|
+
'-b:a',
|
|
90
|
+
'192k',
|
|
91
|
+
'-bitexact',
|
|
92
|
+
outputPath,
|
|
93
|
+
]);
|
|
94
|
+
const buffer = await readOutput(outputPath);
|
|
95
|
+
if (buffer.byteLength > MAX_VOICE_SAMPLE_BYTES) {
|
|
96
|
+
const limitMb = Math.floor(MAX_VOICE_SAMPLE_BYTES / (1000 * 1000));
|
|
97
|
+
throw new Error(`[screenci] Voice sample audio is still too large after extraction (${buffer.byteLength} bytes; the limit is ${limitMb} MB). Use a shorter sample (about 1-2 minutes of clean speech is ideal).`);
|
|
98
|
+
}
|
|
99
|
+
return { buffer, contentType: 'audio/mpeg', extension: '.mp3' };
|
|
100
|
+
}
|
|
101
|
+
finally {
|
|
102
|
+
await removeDir(dir).catch(() => { });
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=voiceSampleAudio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voiceSampleAudio.js","sourceRoot":"","sources":["../../src/voiceSampleAudio.ts"],"names":[],"mappings":"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"}
|
package/dist/src/voices.d.ts
CHANGED
|
@@ -121,9 +121,9 @@ export type ModelVoiceKey = keyof Omit<typeof voices, 'elevenlabs'>;
|
|
|
121
121
|
export type ElevenLabsVoiceKey = `elevenlabs:${string}`;
|
|
122
122
|
/** Union of all valid voice keys, e.g. `'Aria' | 'elevenlabs:abc123'`. */
|
|
123
123
|
export type VoiceKey = ModelVoiceKey | ElevenLabsVoiceKey;
|
|
124
|
-
declare const supportedBaseLanguageCodes: readonly ["ar", "bn", "nl", "en", "fr", "de", "hi", "id", "it", "ja", "ko", "mr", "pl", "pt", "ro", "ru", "es", "ta", "te", "th", "tr", "uk", "vi", "af", "sq", "am", "hy", "az", "eu", "be", "bg", "my", "ca", "ceb", "cmn", "hr", "cs", "da", "et", "fil", "fi", "gl", "ka", "el", "gu", "ht", "he", "hu", "is", "jv", "kn", "kok", "lo", "la", "lv", "lt", "lb", "mk", "mai", "mg", "ms", "ml", "mn", "ne", "nb", "nn", "or", "ps", "fa", "pa", "sr", "sd", "si", "sk", "sl", "sw", "sv", "ur"];
|
|
124
|
+
declare const supportedBaseLanguageCodes: readonly ["ar", "bn", "nl", "en", "fr", "de", "hi", "id", "it", "ja", "ko", "mr", "pl", "pt", "ro", "ru", "es", "ta", "te", "th", "tr", "uk", "vi", "af", "sq", "am", "hy", "az", "eu", "be", "bg", "my", "ca", "ceb", "cmn", "yue", "hr", "cs", "da", "et", "fil", "fi", "gl", "ka", "el", "gu", "ht", "he", "hu", "is", "jv", "kn", "kok", "lo", "la", "lv", "lt", "lb", "mk", "mai", "mg", "ms", "ml", "mn", "ne", "nb", "nn", "or", "ps", "fa", "pa", "sr", "sd", "si", "sk", "sl", "sw", "sv", "ur"];
|
|
125
125
|
type SupportedBaseLanguageCode = (typeof supportedBaseLanguageCodes)[number];
|
|
126
|
-
export declare const supportedLanguages: readonly ["ar", "bn", "nl", "en", "fr", "de", "hi", "id", "it", "ja", "ko", "mr", "pl", "pt", "ro", "ru", "es", "ta", "te", "th", "tr", "uk", "vi", "af", "sq", "am", "hy", "az", "eu", "be", "bg", "my", "ca", "ceb", "cmn", "hr", "cs", "da", "et", "fil", "fi", "gl", "ka", "el", "gu", "ht", "he", "hu", "is", "jv", "kn", "kok", "lo", "la", "lv", "lt", "lb", "mk", "mai", "mg", "ms", "ml", "mn", "ne", "nb", "nn", "or", "ps", "fa", "pa", "sr", "sd", "si", "sk", "sl", "sw", "sv", "ur"];
|
|
126
|
+
export declare const supportedLanguages: readonly ["ar", "bn", "nl", "en", "fr", "de", "hi", "id", "it", "ja", "ko", "mr", "pl", "pt", "ro", "ru", "es", "ta", "te", "th", "tr", "uk", "vi", "af", "sq", "am", "hy", "az", "eu", "be", "bg", "my", "ca", "ceb", "cmn", "yue", "hr", "cs", "da", "et", "fil", "fi", "gl", "ka", "el", "gu", "ht", "he", "hu", "is", "jv", "kn", "kok", "lo", "la", "lv", "lt", "lb", "mk", "mai", "mg", "ms", "ml", "mn", "ne", "nb", "nn", "or", "ps", "fa", "pa", "sr", "sd", "si", "sk", "sl", "sw", "sv", "ur"];
|
|
127
127
|
/** Union of supported language codes, e.g. `'en' | 'fi' | 'cmn'`. */
|
|
128
128
|
export type Lang = SupportedBaseLanguageCode;
|
|
129
129
|
/**
|
package/dist/src/voices.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voices.d.ts","sourceRoot":"","sources":["../../src/voices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,UAAU;;;CAGb,CAAA;AAEV,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAA;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,iBAAS,eAAe,CAAC,GAAG,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,CAAA;AACtE,iBAAS,eAAe,CAAC,GAAG,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAAA;AAY/D,eAAO,MAAM,MAAM;IACjB,oFAAoF;;IAGpF,2FAA2F;;IAG3F,+EAA+E;;IAG/E,+EAA+E;;IAG/E,4FAA4F;;IAG5F,+FAA+F;;IAG/F,yFAAyF;;IAGzF,gGAAgG;;IAGhG,+EAA+E;;IAG/E,qFAAqF;;IAGrF,0FAA0F;;IAG1F,iFAAiF;;IAGjF,+EAA+E;;IAG/E,sFAAsF;;IAGtF,uEAAuE;;IAGvE,4FAA4F;;IAG5F,4FAA4F;;IAG5F,sFAAsF;;IAGtF,qFAAqF;;IAGrF,yFAAyF;;IAGzF,4EAA4E;;IAG5E,+EAA+E;;IAG/E,wEAAwE;;IAGxE,6FAA6F;;IAG7F,gFAAgF;;IAGhF,oFAAoF;;IAGpF,6EAA6E;;IAG7E,iFAAiF;;IAGjF,sFAAsF;;IAGtF,oFAAoF;;;CAI5E,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,MAAM,EAAE,YAAY,CAAC,CAAA;AACnE,MAAM,MAAM,kBAAkB,GAAG,cAAc,MAAM,EAAE,CAAA;AAEvD,0EAA0E;AAC1E,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"voices.d.ts","sourceRoot":"","sources":["../../src/voices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,UAAU;;;CAGb,CAAA;AAEV,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAA;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,iBAAS,eAAe,CAAC,GAAG,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,CAAA;AACtE,iBAAS,eAAe,CAAC,GAAG,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAAA;AAY/D,eAAO,MAAM,MAAM;IACjB,oFAAoF;;IAGpF,2FAA2F;;IAG3F,+EAA+E;;IAG/E,+EAA+E;;IAG/E,4FAA4F;;IAG5F,+FAA+F;;IAG/F,yFAAyF;;IAGzF,gGAAgG;;IAGhG,+EAA+E;;IAG/E,qFAAqF;;IAGrF,0FAA0F;;IAG1F,iFAAiF;;IAGjF,+EAA+E;;IAG/E,sFAAsF;;IAGtF,uEAAuE;;IAGvE,4FAA4F;;IAG5F,4FAA4F;;IAG5F,sFAAsF;;IAGtF,qFAAqF;;IAGrF,yFAAyF;;IAGzF,4EAA4E;;IAG5E,+EAA+E;;IAG/E,wEAAwE;;IAGxE,6FAA6F;;IAG7F,gFAAgF;;IAGhF,oFAAoF;;IAGpF,6EAA6E;;IAG7E,iFAAiF;;IAGjF,sFAAsF;;IAGtF,oFAAoF;;;CAI5E,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,MAAM,EAAE,YAAY,CAAC,CAAA;AACnE,MAAM,MAAM,kBAAkB,GAAG,cAAc,MAAM,EAAE,CAAA;AAEvD,0EAA0E;AAC1E,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,kBAAkB,CAAA;AASzD,QAAA,MAAM,0BAA0B,2eAgFtB,CAAA;AAEV,KAAK,yBAAyB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAA;AAE5E,eAAO,MAAM,kBAAkB,2eAA6B,CAAA;AAE5D,qEAAqE;AACrE,MAAM,MAAM,IAAI,GAAG,yBAAyB,CAAA;AAE5C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA"}
|
package/dist/src/voices.js
CHANGED
|
@@ -25,7 +25,7 @@ function elevenlabsVoice(ref) {
|
|
|
25
25
|
: `elevenlabs:${ref.voiceId}`;
|
|
26
26
|
}
|
|
27
27
|
// DOCS_SYNC:
|
|
28
|
-
// Keep the "Available voices" section in docs/narration
|
|
28
|
+
// Keep the "Available voices" section in docs/narration.md
|
|
29
29
|
// in sync with this list and the voice character blurbs below.
|
|
30
30
|
export const voices = {
|
|
31
31
|
/** Male — Clear — Direct and structured, ideal for straightforward explanations. */
|
|
@@ -91,8 +91,12 @@ export const voices = {
|
|
|
91
91
|
elevenlabs: elevenlabsVoice,
|
|
92
92
|
};
|
|
93
93
|
// DOCS_SYNC:
|
|
94
|
-
// Keep the "Available languages" section in docs/
|
|
95
|
-
//
|
|
94
|
+
// Keep the "Available languages" section in docs/languages.md in sync with this
|
|
95
|
+
// source of truth. This is the full set the `Lang` type accepts; narration
|
|
96
|
+
// coverage is split by model (the consistent model covers a subset, the
|
|
97
|
+
// expressive model covers all of these). The per-model split lives in the
|
|
98
|
+
// backend (apps/backend/src/cues/languageCodes.ts) and is mirrored into the
|
|
99
|
+
// two tables in docs/languages.md.
|
|
96
100
|
const supportedBaseLanguageCodes = [
|
|
97
101
|
'ar',
|
|
98
102
|
'bn',
|
|
@@ -129,6 +133,7 @@ const supportedBaseLanguageCodes = [
|
|
|
129
133
|
'ca',
|
|
130
134
|
'ceb',
|
|
131
135
|
'cmn',
|
|
136
|
+
'yue',
|
|
132
137
|
'hr',
|
|
133
138
|
'cs',
|
|
134
139
|
'da',
|
package/dist/src/voices.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voices.js","sourceRoot":"","sources":["../../src/voices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;CAChB,CAAA;AAoCV,SAAS,eAAe,CACtB,GAA2C;IAE3C,OAAO,MAAM,IAAI,GAAG;QAClB,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;QACpB,CAAC,CAAE,cAAc,GAAG,CAAC,OAAO,EAAyB,CAAA;AACzD,CAAC;AAED,aAAa;AACb,
|
|
1
|
+
{"version":3,"file":"voices.js","sourceRoot":"","sources":["../../src/voices.ts"],"names":[],"mappings":"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"}
|