screenci 0.0.71 → 0.0.72

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.
Files changed (95) hide show
  1. package/README.md +12 -12
  2. package/dist/cli.d.ts +8 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +133 -10
  5. package/dist/cli.js.map +1 -1
  6. package/dist/docs/manifest.d.ts +3 -3
  7. package/dist/docs/manifest.js +1 -1
  8. package/dist/docs/manifest.js.map +1 -1
  9. package/dist/docs/video-sources/installation.screenci.js +13 -12
  10. package/dist/docs/video-sources/installation.screenci.js.map +1 -1
  11. package/dist/docs/video-sources/landing.screenci.js +16 -9
  12. package/dist/docs/video-sources/landing.screenci.js.map +1 -1
  13. package/dist/docs/video-sources/product-pitch.screenci.js +97 -32
  14. package/dist/docs/video-sources/product-pitch.screenci.js.map +1 -1
  15. package/dist/docs/video-sources/public-urls.screenci.js +16 -9
  16. package/dist/docs/video-sources/public-urls.screenci.js.map +1 -1
  17. package/dist/docs/video-sources/studio.screenci.js +42 -27
  18. package/dist/docs/video-sources/studio.screenci.js.map +1 -1
  19. package/dist/index.d.ts +7 -5
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +3 -4
  22. package/dist/index.js.map +1 -1
  23. package/dist/src/asset.d.ts +8 -23
  24. package/dist/src/asset.d.ts.map +1 -1
  25. package/dist/src/asset.js +10 -32
  26. package/dist/src/asset.js.map +1 -1
  27. package/dist/src/audio.d.ts +6 -24
  28. package/dist/src/audio.d.ts.map +1 -1
  29. package/dist/src/audio.js +10 -35
  30. package/dist/src/audio.js.map +1 -1
  31. package/dist/src/builder.d.ts +214 -0
  32. package/dist/src/builder.d.ts.map +1 -0
  33. package/dist/src/builder.js +212 -0
  34. package/dist/src/builder.js.map +1 -0
  35. package/dist/src/cue.d.ts +40 -123
  36. package/dist/src/cue.d.ts.map +1 -1
  37. package/dist/src/cue.js +190 -30
  38. package/dist/src/cue.js.map +1 -1
  39. package/dist/src/events.d.ts +80 -15
  40. package/dist/src/events.d.ts.map +1 -1
  41. package/dist/src/events.js +72 -6
  42. package/dist/src/events.js.map +1 -1
  43. package/dist/src/init.d.ts.map +1 -1
  44. package/dist/src/init.js +14 -13
  45. package/dist/src/init.js.map +1 -1
  46. package/dist/src/locales.d.ts +19 -0
  47. package/dist/src/locales.d.ts.map +1 -0
  48. package/dist/src/locales.js +60 -0
  49. package/dist/src/locales.js.map +1 -0
  50. package/dist/src/localize.d.ts +135 -0
  51. package/dist/src/localize.d.ts.map +1 -0
  52. package/dist/src/localize.js +195 -0
  53. package/dist/src/localize.js.map +1 -0
  54. package/dist/src/localizeRuntime.d.ts +53 -0
  55. package/dist/src/localizeRuntime.d.ts.map +1 -0
  56. package/dist/src/localizeRuntime.js +79 -0
  57. package/dist/src/localizeRuntime.js.map +1 -0
  58. package/dist/src/recordingData.d.ts +5 -4
  59. package/dist/src/recordingData.d.ts.map +1 -1
  60. package/dist/src/runtimeContext.d.ts +3 -4
  61. package/dist/src/runtimeContext.d.ts.map +1 -1
  62. package/dist/src/runtimeContext.js.map +1 -1
  63. package/dist/src/runtimeMode.d.ts +47 -0
  64. package/dist/src/runtimeMode.d.ts.map +1 -1
  65. package/dist/src/runtimeMode.js +124 -0
  66. package/dist/src/runtimeMode.js.map +1 -1
  67. package/dist/src/screenshot.d.ts +56 -2
  68. package/dist/src/screenshot.d.ts.map +1 -1
  69. package/dist/src/screenshot.js +47 -10
  70. package/dist/src/screenshot.js.map +1 -1
  71. package/dist/src/stillCapture.d.ts +2 -3
  72. package/dist/src/stillCapture.d.ts.map +1 -1
  73. package/dist/src/stillCapture.js.map +1 -1
  74. package/dist/src/studio.d.ts +55 -22
  75. package/dist/src/studio.d.ts.map +1 -1
  76. package/dist/src/studio.js +38 -12
  77. package/dist/src/studio.js.map +1 -1
  78. package/dist/src/types.d.ts +18 -5
  79. package/dist/src/types.d.ts.map +1 -1
  80. package/dist/src/types.js.map +1 -1
  81. package/dist/src/video.d.ts +149 -13
  82. package/dist/src/video.d.ts.map +1 -1
  83. package/dist/src/video.js +91 -24
  84. package/dist/src/video.js.map +1 -1
  85. package/dist/src/voiceConfig.d.ts +110 -0
  86. package/dist/src/voiceConfig.d.ts.map +1 -0
  87. package/dist/src/voiceConfig.js +2 -0
  88. package/dist/src/voiceConfig.js.map +1 -0
  89. package/dist/src/voices.d.ts +27 -23
  90. package/dist/src/voices.d.ts.map +1 -1
  91. package/dist/src/voices.js +7 -4
  92. package/dist/src/voices.js.map +1 -1
  93. package/dist/tsconfig.tsbuildinfo +1 -1
  94. package/package.json +1 -1
  95. package/skills/screenci/SKILL.md +39 -30
@@ -0,0 +1,212 @@
1
+ import { fileURLToPath } from 'node:url';
2
+ import { resolveLocaleForLanguage } from './locales.js';
3
+ import { parseRequestedLanguages } from './runtimeMode.js';
4
+ import { logger } from './logger.js';
5
+ import { normalizeLocalizeSpec, } from './localize.js';
6
+ import { validateStudioDeclaration } from './studio.js';
7
+ function variantVideoName(baseTitle, variant) {
8
+ return variant === null ? baseTitle : `${baseTitle} ${variant.key}`;
9
+ }
10
+ /**
11
+ * Expand the localize / each fan-out specs into the concrete list of Playwright
12
+ * tests to register. Pure and exported for testing.
13
+ *
14
+ * - With no `localize`, each variant yields a single language-agnostic test.
15
+ * - In `'shared'` mode, each variant yields one test that carries every language
16
+ * (narration is overdubbed at render); the `--languages` filter does not split
17
+ * a shared recording.
18
+ * - In `'per-language'` mode, each variant yields one test per language,
19
+ * intersected with the `--languages` filter when present. A variant whose
20
+ * languages are entirely filtered out yields nothing. The browser locale is set
21
+ * per language unless `browserLocale` is `false`.
22
+ */
23
+ export function expandRegistrations(params) {
24
+ const { baseTitle, localize, studio, eachVariants, requestedLanguages } = params;
25
+ const variants = eachVariants ?? [null];
26
+ const registrations = [];
27
+ for (const variant of variants) {
28
+ const videoName = variantVideoName(baseTitle, variant);
29
+ const recordOptions = variant?.recordOptions ?? null;
30
+ const use = variant?.use ?? null;
31
+ const variantLabel = variant === null ? '' : `${variant.key} `;
32
+ if (localize === null) {
33
+ registrations.push({
34
+ describeTitle: variant?.key ?? baseTitle,
35
+ leafTitle: videoName,
36
+ videoName,
37
+ language: null,
38
+ locale: null,
39
+ recordOptions,
40
+ use,
41
+ localize: null,
42
+ studio,
43
+ });
44
+ continue;
45
+ }
46
+ if (localize.mode === 'shared') {
47
+ registrations.push({
48
+ describeTitle: `${variantLabel}shared`.trim(),
49
+ leafTitle: videoName,
50
+ videoName,
51
+ language: null,
52
+ locale: null,
53
+ recordOptions,
54
+ use,
55
+ localize,
56
+ studio,
57
+ });
58
+ continue;
59
+ }
60
+ const languages = requestedLanguages === null
61
+ ? localize.languages
62
+ : localize.languages.filter((lang) => requestedLanguages.includes(lang));
63
+ for (const lang of languages) {
64
+ registrations.push({
65
+ describeTitle: `${variantLabel}${lang}`,
66
+ leafTitle: `${videoName} [${lang}]`,
67
+ videoName,
68
+ language: lang,
69
+ locale: localize.browserLocale
70
+ ? resolveLocaleForLanguage(lang, localize.locales)
71
+ : null,
72
+ recordOptions,
73
+ use,
74
+ localize,
75
+ studio,
76
+ });
77
+ }
78
+ }
79
+ return registrations;
80
+ }
81
+ /** Internal option keys the page/context fixtures read off a registered test. */
82
+ const SCREENCI_LANGUAGE_OPTION = '_screenciLanguage';
83
+ const SCREENCI_VIDEO_NAME_OPTION = '_screenciVideoName';
84
+ const SCREENCI_LOCALIZE_OPTION = '_screenciLocalize';
85
+ const SCREENCI_STUDIO_OPTION = '_screenciStudio';
86
+ const SCREENCI_SOURCE_FILE_OPTION = '_screenciSourceFile';
87
+ /** Absolute path of this module, used to skip our own frames when capturing. */
88
+ const BUILDER_MODULE_PATH = fileURLToPath(import.meta.url);
89
+ /** Normalize a V8 call-site filename (which may be a `file://` URL) to a path. */
90
+ function callSiteFile(frame) {
91
+ const fileName = frame.getFileName();
92
+ if (!fileName)
93
+ return null;
94
+ return fileName.startsWith('file://') ? fileURLToPath(fileName) : fileName;
95
+ }
96
+ /**
97
+ * Capture the source file of the user's `.screenci` script that called the
98
+ * builder. Playwright attributes `testInfo.file` to this module (the test is
99
+ * registered here, not in the user's file), so asset paths authored relative to
100
+ * the script would otherwise resolve against this package. We walk the call
101
+ * stack and return the first frame outside this module, which is the script.
102
+ * Returns `null` if no such frame is found (fixtures then fall back to
103
+ * `testInfo.file`).
104
+ */
105
+ function captureSourceFile() {
106
+ const originalPrepare = Error.prepareStackTrace;
107
+ const originalLimit = Error.stackTraceLimit;
108
+ try {
109
+ Error.stackTraceLimit = 50;
110
+ Error.prepareStackTrace = (_error, stack) => stack;
111
+ const stack = new Error().stack;
112
+ if (!Array.isArray(stack))
113
+ return null;
114
+ for (const frame of stack) {
115
+ const file = callSiteFile(frame);
116
+ if (file !== null && file !== BUILDER_MODULE_PATH) {
117
+ return file;
118
+ }
119
+ }
120
+ return null;
121
+ }
122
+ finally {
123
+ Error.prepareStackTrace = originalPrepare;
124
+ Error.stackTraceLimit = originalLimit;
125
+ }
126
+ }
127
+ function registerOne(test, reg, details, body, modifier, sourceFile) {
128
+ const useOptions = {
129
+ ...(reg.use ?? {}),
130
+ ...(reg.recordOptions !== null ? { recordOptions: reg.recordOptions } : {}),
131
+ ...(reg.locale !== null ? { locale: reg.locale } : {}),
132
+ [SCREENCI_LANGUAGE_OPTION]: reg.language ?? undefined,
133
+ [SCREENCI_VIDEO_NAME_OPTION]: reg.videoName,
134
+ [SCREENCI_LOCALIZE_OPTION]: reg.localize ?? undefined,
135
+ [SCREENCI_STUDIO_OPTION]: reg.studio ?? undefined,
136
+ [SCREENCI_SOURCE_FILE_OPTION]: sourceFile ?? undefined,
137
+ };
138
+ const register = modifier ? test[modifier] : test;
139
+ test.describe(reg.describeTitle, () => {
140
+ test.use(useOptions);
141
+ if (details !== undefined) {
142
+ register(reg.leafTitle, details, body);
143
+ }
144
+ else {
145
+ register(reg.leafTitle, body);
146
+ }
147
+ });
148
+ }
149
+ function normalizeVariants(variants) {
150
+ if (variants.length === 0) {
151
+ throw new Error('video.each() requires at least one variant, e.g. .each([{ key: "mobile" }]).');
152
+ }
153
+ const seen = new Set();
154
+ for (const variant of variants) {
155
+ if (seen.has(variant.key)) {
156
+ throw new Error(`Duplicate video.each() variant key "${variant.key}". Variant keys must be unique.`);
157
+ }
158
+ seen.add(variant.key);
159
+ }
160
+ return variants;
161
+ }
162
+ /**
163
+ * Create a fan-out builder bound to a registrar test instance. `video.localize`
164
+ * and `video.each` are the `localize`/`each` methods of a root builder created
165
+ * with this factory. `Args` is the medium's fixture arg type (video/screenshot).
166
+ */
167
+ export function createVideoBuilder(test, state = { localize: null, studio: null, eachVariants: null }) {
168
+ const runTerminal = (modifier, title, detailsOrBody, maybeBody) => {
169
+ const hasDetails = typeof detailsOrBody !== 'function';
170
+ const details = hasDetails ? detailsOrBody : undefined;
171
+ const body = (hasDetails ? maybeBody : detailsOrBody);
172
+ // Captured here, at the user's call site, so the script's path survives
173
+ // even though Playwright records the test as declared in this module.
174
+ const sourceFile = captureSourceFile();
175
+ // Studio-managed names must be unique and disjoint from the seeded localize
176
+ // names. Validate once, here, where both the localize spec and the studio
177
+ // declaration are known (they can be chained in either order).
178
+ validateStudioDeclaration(state.studio, state.localize?.narration?.seededNames ?? [], state.localize?.text?.seededNames ?? []);
179
+ const registrations = expandRegistrations({
180
+ baseTitle: title,
181
+ localize: state.localize,
182
+ studio: state.studio,
183
+ eachVariants: state.eachVariants,
184
+ requestedLanguages: parseRequestedLanguages(),
185
+ });
186
+ if (registrations.length === 0) {
187
+ logger.warn(`[screenci] "${title}" was skipped: none of its declared languages match the --languages filter.`);
188
+ return;
189
+ }
190
+ for (const reg of registrations) {
191
+ registerOne(test, reg, details, body, modifier, sourceFile);
192
+ }
193
+ };
194
+ const callable = ((title, detailsOrBody, maybeBody) => runTerminal(undefined, title, detailsOrBody, maybeBody));
195
+ for (const modifier of ['only', 'skip', 'fixme', 'fail']) {
196
+ callable[modifier] = ((title, detailsOrBody, maybeBody) => runTerminal(modifier, title, detailsOrBody, maybeBody));
197
+ }
198
+ callable.localize = ((spec) => createVideoBuilder(test, {
199
+ ...state,
200
+ localize: normalizeLocalizeSpec(spec),
201
+ }));
202
+ callable.studio = ((declaration) => createVideoBuilder(test, {
203
+ ...state,
204
+ studio: declaration,
205
+ }));
206
+ callable.each = (variants) => createVideoBuilder(test, {
207
+ ...state,
208
+ eachVariants: normalizeVariants(variants),
209
+ });
210
+ return callable;
211
+ }
212
+ //# sourceMappingURL=builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/builder.ts"],"names":[],"mappings":"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"}
package/dist/src/cue.d.ts CHANGED
@@ -1,5 +1,8 @@
1
- import type { IEventRecorder } from './events.js';
2
- import { type ModelVoiceKey, type ElevenLabsVoiceKey, type Lang, type CustomVoiceRef, type ModelType } from './voices.js';
1
+ import type { IEventRecorder, VoiceLanguageMeta } from './events.js';
2
+ import { type VoiceKey, type Lang, type CustomVoiceRef } from './voices.js';
3
+ import type { TopLevelVoiceConfig, LangNarrationOverride } from './voiceConfig.js';
4
+ export type { TopLevelVoiceConfig, LangNarrationOverride };
5
+ import type { NormalizedNarration } from './localize.js';
3
6
  export declare const ONE_FRAME_MS: number;
4
7
  export declare function setSleepFn(fn: (ms: number) => void): void;
5
8
  export declare function setActiveCueRecorder(recorder: IEventRecorder | null): void;
@@ -50,107 +53,6 @@ export type CueMapValue = string | NarrationCueObject;
50
53
  export type Cues<T extends Record<string, CueMapValue>> = {
51
54
  [K in keyof T]: NarrationCue;
52
55
  };
53
- /**
54
- * Top-level voice configuration shared across all languages.
55
- * `seed` is not allowed here — use per-language `voice` overrides instead.
56
- *
57
- * Built-in model voices support expressive/consistent model controls.
58
- * ElevenLabs voices support only the numeric settings documented below.
59
- */
60
- type ElevenLabsVoiceSettings = {
61
- /** Voice stability for ElevenLabs `eleven_multilingual_v2`. Valid range: 0 to 1. */
62
- stability?: number;
63
- /** Similarity enhancement for ElevenLabs `eleven_multilingual_v2`. Valid range: 0 to 1. */
64
- similarityBoost?: number;
65
- /** Style exaggeration for ElevenLabs `eleven_multilingual_v2`. Valid range: 0 to 1. */
66
- style?: number;
67
- /** Playback speed for ElevenLabs `eleven_multilingual_v2`. Valid range: 0.7 to 1.2. */
68
- speed?: number;
69
- /** Enables ElevenLabs speaker boost. Defaults to `true`. */
70
- useSpeakerBoost?: boolean;
71
- };
72
- type ElevenLabsVoiceConfig = ElevenLabsVoiceSettings & {
73
- name: ElevenLabsVoiceKey | CustomVoiceRef;
74
- modelType?: never;
75
- accent?: never;
76
- pacing?: never;
77
- };
78
- export type TopLevelVoiceConfig = ElevenLabsVoiceConfig | {
79
- name: ModelVoiceKey;
80
- /** Speaking style prompt for expressive synthesis. Business tier only. Implies `expressive` model type. */
81
- style: string;
82
- /** Can be omitted when `style` is set — `expressive` is implied. Business tier only. */
83
- modelType?: 'expressive';
84
- /**
85
- * Accent description for expressive synthesis.
86
- * The more specific, the better — e.g. `'Southern American English'` or `'Received Pronunciation British'`.
87
- * Omitted from the prompt when not set — the voice uses its natural default.
88
- */
89
- accent?: string;
90
- /**
91
- * Pacing description for expressive synthesis.
92
- * Describes the overall speed and tempo — e.g. `'Measured and deliberate'` or `'Brisk and energetic'`.
93
- */
94
- pacing?: string;
95
- } | {
96
- name: ModelVoiceKey;
97
- style?: never;
98
- accent?: never;
99
- /** Speaking rate for consistent synthesis. Valid range: 0.25 to 2. */
100
- pacing?: number;
101
- /** TTS model type — `modelTypes.expressive` or `modelTypes.consistent`. Defaults to `consistent`. */
102
- modelType?: Exclude<ModelType, 'expressive'> | undefined;
103
- };
104
- /**
105
- * Per-language narration override. Can override the top-level voice name and
106
- * optionally set a `seed` for TTS generation.
107
- *
108
- * The voice name discriminates provider-specific settings: built-in model
109
- * voices use expressive/consistent controls, while ElevenLabs voices use the
110
- * numeric `eleven_multilingual_v2` controls.
111
- */
112
- export type LangNarrationOverride = (ElevenLabsVoiceConfig & {
113
- /**
114
- * Integer seed included in the audio cache key and forwarded to ElevenLabs.
115
- * A different seed always forces regeneration.
116
- */
117
- seed?: number;
118
- }) | {
119
- name: ModelVoiceKey;
120
- /**
121
- * Integer seed included in the audio cache key. A different seed always forces
122
- * regeneration. Consistent output is not guaranteed across all voice types.
123
- */
124
- seed?: number;
125
- /** Speaking style prompt for expressive synthesis. Business tier only. Implies `expressive` model type. */
126
- style: string;
127
- /** Can be omitted when `style` is set — `expressive` is implied. Business tier only. */
128
- modelType?: 'expressive';
129
- /**
130
- * Accent description for expressive synthesis.
131
- * The more specific, the better — e.g. `'Southern American English'` or `'Received Pronunciation British'`.
132
- * Omitted from the prompt when not set — the voice uses its natural default.
133
- */
134
- accent?: string;
135
- /**
136
- * Pacing description for expressive synthesis.
137
- * Describes the overall speed and tempo — e.g. `'Measured and deliberate'` or `'Brisk and energetic'`.
138
- */
139
- pacing?: string;
140
- } | {
141
- name: ModelVoiceKey;
142
- /**
143
- * Integer seed included in the audio cache key. A different seed always forces
144
- * regeneration. Consistent output is not guaranteed across all voice types.
145
- */
146
- seed?: number;
147
- style?: never;
148
- accent?: never;
149
- /** Speaking rate for consistent synthesis. Valid range: 0.25 to 2. */
150
- pacing?: number;
151
- /** TTS model type — `modelTypes.expressive` or `modelTypes.consistent`. Defaults to `consistent`. */
152
- modelType?: Exclude<ModelType, 'expressive'> | undefined;
153
- };
154
56
  /** Converts a union type to an intersection: `A | B` → `A & B` */
155
57
  type UnionToIntersection<U> = (U extends unknown ? (x: U) => void : never) extends (x: infer I) => void ? I : never;
156
58
  /**
@@ -220,27 +122,42 @@ type NarrationInput<M extends Partial<Record<Lang, NarrationLanguageInput>>> = {
220
122
  */
221
123
  export declare function createNarration<M extends Partial<Record<Lang, NarrationLanguageInput>>>(input: NarrationInput<M>): Cues<AllCues<M>>;
222
124
  /**
223
- * Creates typed narration controllers whose text and voice are configured on
224
- * the ScreenCI Studio page instead of in code. Business tier only.
225
- *
226
- * Each key becomes a cue with the same behavior as {@link createNarration}
227
- * cues — callable, with explicit `start()` and `end()` methods. Languages,
228
- * narration text, and voice settings all come from Studio.
229
- *
230
- * On the first upload of a studio-mode video, rendering is held until the
231
- * video is configured in Studio (the CLI prints a direct link). Later uploads
232
- * reuse the saved Studio configuration automatically.
125
+ * Asserts that a narration input's language keys match a video's declared
126
+ * languages exactly. Used by the `narration` fixture so the languages declared
127
+ * via `video.languages([...])` stay the single source of truth: a missing or
128
+ * unexpected language fails loudly instead of silently drifting.
129
+ */
130
+ export declare function assertNarrationLanguagesMatch(input: Record<string, unknown>, declared: readonly string[]): void;
131
+ /**
132
+ * Builds narration controllers for Studio-managed cues declared via
133
+ * `video.studio({ narration: [...] })`. Their text and voice are configured on
134
+ * the ScreenCI Studio page instead of in code. Each name becomes a cue with the
135
+ * same behavior as a seeded narration cue (callable, with `start()`/`end()`);
136
+ * languages, narration text, and voice all come from Studio.
233
137
  *
234
- * @example
235
- * ```ts
236
- * const narration = createStudioNarration('intro', 'checkout', 'outro')
138
+ * Internal: the `narration` fixture merges these with the seeded localize cues.
139
+ */
140
+ export declare function buildStudioNarrationCues(names: readonly string[]): Record<string, NarrationCue>;
141
+ /**
142
+ * Resolve a single voice config into its recorded name and language metadata.
143
+ * Unlike {@link buildCuesFromInput}, the config here is already fully resolved by
144
+ * the localize voice cascade, so there is no top-level/override merge: every
145
+ * provider setting comes from this one config.
146
+ */
147
+ export declare function resolveVoiceMeta(config: TopLevelVoiceConfig | LangNarrationOverride): {
148
+ name: VoiceKey | CustomVoiceRef;
149
+ meta: VoiceLanguageMeta;
150
+ };
151
+ /**
152
+ * Build the narration cue controllers for a localized recording, directly from
153
+ * the normalized localize spec. Per-cue voice can override the per-language
154
+ * (`voiceByLang`) and config/global (`defaultVoice`) voices, so the cascade is
155
+ * resolved per `(cue, language)` here rather than routed through
156
+ * {@link buildCuesFromInput} (which is per-language only).
237
157
  *
238
- * await narration.intro()
239
- * await page.goto('/checkout')
240
- * await narration.checkout.start()
241
- * await narration.checkout.end()
242
- * ```
158
+ * Seeded cues emit translations carrying the resolved voice + spoken text (the
159
+ * recorder filters to the active language). Studio-managed cues emit studio cue
160
+ * starts whose content is owned by Studio.
243
161
  */
244
- export declare function createStudioNarration<const K extends readonly [string, ...string[]]>(...keys: K): Cues<Record<K[number], CueMapValue>>;
245
- export {};
162
+ export declare function buildLocalizedNarrationCues(narration: NormalizedNarration, voiceByLang: Partial<Record<string, LangNarrationOverride>>, defaultVoice: TopLevelVoiceConfig | LangNarrationOverride | undefined): Record<string, NarrationCue>;
246
163
  //# sourceMappingURL=cue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cue.d.ts","sourceRoot":"","sources":["../../src/cue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cue.d.ts","sourceRoot":"","sources":["../../src/cue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAKd,iBAAiB,EAClB,MAAM,aAAa,CAAA;AACpB,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,cAAc,EACpB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,CAAA;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAiBxD,eAAO,MAAM,YAAY,QAAY,CAAA;AAqBrC,wBAAgB,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAEzD;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAG1E;AAED,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED,wBAAgB,8BAA8B,IAAI,IAAI,CAGrD;AAED,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAIf;AA0HD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACrB,CAAA;AAED;;;;;;;;;GASG;AACH,KAAK,eAAe,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1C,KAAK,kBAAkB,GACnB,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,eAAe,CAAC,GACpC,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,eAAe,CAAC,GACxD,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,eAAe,CAAC,CAAA;AAE3D,4DAA4D;AAC5D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,kBAAkB,CAAA;AAErD,4EAA4E;AAC5E,MAAM,MAAM,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI;KACvD,CAAC,IAAI,MAAM,CAAC,GAAG,YAAY;CAC7B,CAAA;AAMD,kEAAkE;AAClE,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAC5B,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAC3C,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GAC1B,CAAC,GACD,KAAK,CAAA;AAET;;;;GAIG;AACH,KAAK,iBAAiB,GAAG;IACvB,KAAK,CAAC,EAAE,qBAAqB,CAAA;CAC9B,CAAA;AAED,KAAK,mBAAmB,GAAG,MAAM,iBAAiB,CAAA;AAElD,KAAK,sBAAsB,GAAG,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAKzE,KAAK,oBAAoB,CAAC,CAAC,SAAS,sBAAsB,IAAI,IAAI,CAChE,CAAC,EACD,mBAAmB,CACpB,CAAA;AAED,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE3E,KAAK,gBAAgB,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;AAEjD,KAAK,OAAO,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC,IAClE,eAAe,CACb,mBAAmB,CACjB;KACG,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CACvC,CAAC,CAAC,CAAC,CAAC,CACL,SAAS,sBAAsB,GAC5B,MAAM,CACJ,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EACtD,WAAW,CACZ,GACD,KAAK;CACV,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CACvB,CACF,CAAA;AAEH,KAAK,YAAY,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC,IACvE,CAAC,GAAG;KACD,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QAC5B,KAAK,CAAC,EAAE,qBAAqB,CAAA;KAC9B,GAAG;SACD,CAAC,IAAI,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW;KAClE,GAAG,OAAO,CAAC,CAAC,CAAC;CACf,CAAA;AAEH,KAAK,cAAc,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC,IAAI;IAC7E,KAAK,CAAC,EAAE,mBAAmB,CAAA;CAC5B,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;AAEnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,eAAe,CAC7B,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC,EACvD,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAa5C;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,IAAI,CAoBN;AAmDD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAS9B;AAkWD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,mBAAmB,GAAG,qBAAqB,GAClD;IAAE,IAAI,EAAE,QAAQ,GAAG,cAAc,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAkC9D;AAsBD;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,mBAAmB,EAC9B,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,EAC3D,YAAY,EAAE,mBAAmB,GAAG,qBAAqB,GAAG,SAAS,GACpE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAyH9B"}