screenci 0.0.68 → 0.0.70
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/README.md +45 -122
- package/dist/cli.d.ts +3 -18
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +117 -158
- package/dist/cli.js.map +1 -1
- package/dist/docs/manifest.d.ts +66 -35
- package/dist/docs/manifest.d.ts.map +1 -1
- package/dist/docs/manifest.js +22 -11
- package/dist/docs/manifest.js.map +1 -1
- package/dist/docs/video-sources/cli.screenci.d.ts +2 -0
- package/dist/docs/video-sources/cli.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/{cli.video.js → cli.screenci.js} +1 -1
- package/dist/docs/video-sources/cli.screenci.js.map +1 -0
- package/dist/docs/video-sources/installation.screenci.d.ts +2 -0
- package/dist/docs/video-sources/installation.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/{installation.video.js → installation.screenci.js} +1 -1
- package/dist/docs/video-sources/installation.screenci.js.map +1 -0
- package/dist/docs/video-sources/landing.screenci.d.ts +2 -0
- package/dist/docs/video-sources/landing.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/{landing.video.js → landing.screenci.js} +1 -1
- package/dist/docs/video-sources/landing.screenci.js.map +1 -0
- package/dist/docs/video-sources/locator-highlight-animated.screenci.d.ts +2 -0
- package/dist/docs/video-sources/locator-highlight-animated.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/locator-highlight-animated.screenci.js +53 -0
- package/dist/docs/video-sources/locator-highlight-animated.screenci.js.map +1 -0
- package/dist/docs/video-sources/locator-highlight-still.screenci.d.ts +2 -0
- package/dist/docs/video-sources/locator-highlight-still.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/locator-highlight-still.screenci.js +24 -0
- package/dist/docs/video-sources/locator-highlight-still.screenci.js.map +1 -0
- package/dist/docs/video-sources/product-pitch.screenci.d.ts +2 -0
- package/dist/docs/video-sources/product-pitch.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/product-pitch.screenci.js +136 -0
- package/dist/docs/video-sources/product-pitch.screenci.js.map +1 -0
- package/dist/docs/video-sources/public-urls.screenci.d.ts +2 -0
- package/dist/docs/video-sources/public-urls.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/public-urls.screenci.js +34 -0
- package/dist/docs/video-sources/public-urls.screenci.js.map +1 -0
- package/dist/docs/video-sources/studio.screenci.d.ts +2 -0
- package/dist/docs/video-sources/studio.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/studio.screenci.js +57 -0
- package/dist/docs/video-sources/studio.screenci.js.map +1 -0
- package/dist/docs/videos.d.ts +36 -15
- package/dist/docs/videos.d.ts.map +1 -1
- package/dist/docs/videos.js +27 -2
- package/dist/docs/videos.js.map +1 -1
- package/dist/e2e/htmlRasterizer.e2e.d.ts +2 -0
- package/dist/e2e/htmlRasterizer.e2e.d.ts.map +1 -0
- package/dist/e2e/htmlRasterizer.e2e.js +107 -0
- package/dist/e2e/htmlRasterizer.e2e.js.map +1 -0
- package/dist/e2e/screenshot.e2e.d.ts +2 -0
- package/dist/e2e/screenshot.e2e.d.ts.map +1 -0
- package/dist/e2e/screenshot.e2e.js +73 -0
- package/dist/e2e/screenshot.e2e.js.map +1 -0
- package/dist/index.d.ts +10 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/src/asset.d.ts +245 -53
- package/dist/src/asset.d.ts.map +1 -1
- package/dist/src/asset.js +718 -77
- package/dist/src/asset.js.map +1 -1
- package/dist/src/audio.d.ts +127 -0
- package/dist/src/audio.d.ts.map +1 -0
- package/dist/src/audio.js +207 -0
- package/dist/src/audio.js.map +1 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +9 -3
- package/dist/src/config.js.map +1 -1
- package/dist/src/contextOptions.d.ts +48 -0
- package/dist/src/contextOptions.d.ts.map +1 -0
- package/dist/src/contextOptions.js +71 -0
- package/dist/src/contextOptions.js.map +1 -0
- package/dist/src/crop.d.ts +93 -0
- package/dist/src/crop.d.ts.map +1 -0
- package/dist/src/crop.js +133 -0
- package/dist/src/crop.js.map +1 -0
- package/dist/src/cue.d.ts +17 -4
- package/dist/src/cue.d.ts.map +1 -1
- package/dist/src/cue.js +31 -3
- package/dist/src/cue.js.map +1 -1
- package/dist/src/defaults.d.ts +13 -1
- package/dist/src/defaults.d.ts.map +1 -1
- package/dist/src/defaults.js +13 -0
- package/dist/src/defaults.js.map +1 -1
- package/dist/src/dimensions.d.ts +6 -0
- package/dist/src/dimensions.d.ts.map +1 -1
- package/dist/src/dimensions.js +15 -0
- package/dist/src/dimensions.js.map +1 -1
- package/dist/src/events.d.ts +283 -13
- package/dist/src/events.d.ts.map +1 -1
- package/dist/src/events.js +134 -5
- package/dist/src/events.js.map +1 -1
- package/dist/src/htmlRasterizer.d.ts +153 -0
- package/dist/src/htmlRasterizer.d.ts.map +1 -0
- package/dist/src/htmlRasterizer.js +386 -0
- package/dist/src/htmlRasterizer.js.map +1 -0
- package/dist/src/init.d.ts +17 -0
- package/dist/src/init.d.ts.map +1 -1
- package/dist/src/init.js +131 -11
- package/dist/src/init.js.map +1 -1
- package/dist/src/linkSession.d.ts +36 -0
- package/dist/src/linkSession.d.ts.map +1 -0
- package/dist/src/linkSession.js +122 -0
- package/dist/src/linkSession.js.map +1 -0
- package/dist/src/overlayFlush.d.ts +18 -0
- package/dist/src/overlayFlush.d.ts.map +1 -0
- package/dist/src/overlayFlush.js +56 -0
- package/dist/src/overlayFlush.js.map +1 -0
- package/dist/src/overlayRect.d.ts +69 -0
- package/dist/src/overlayRect.d.ts.map +1 -0
- package/dist/src/overlayRect.js +55 -0
- package/dist/src/overlayRect.js.map +1 -0
- package/dist/src/performance.d.ts +1 -3
- package/dist/src/performance.d.ts.map +1 -1
- package/dist/src/performance.js +0 -12
- package/dist/src/performance.js.map +1 -1
- package/dist/src/recording.d.ts +3 -2
- package/dist/src/recording.d.ts.map +1 -1
- package/dist/src/recordingData.d.ts +22 -2
- package/dist/src/recordingData.d.ts.map +1 -1
- package/dist/src/runtimeContext.d.ts +57 -1
- package/dist/src/runtimeContext.d.ts.map +1 -1
- package/dist/src/runtimeContext.js +40 -0
- package/dist/src/runtimeContext.js.map +1 -1
- package/dist/src/screenshot.d.ts +105 -0
- package/dist/src/screenshot.d.ts.map +1 -0
- package/dist/src/screenshot.js +188 -0
- package/dist/src/screenshot.js.map +1 -0
- package/dist/src/stillCapture.d.ts +68 -0
- package/dist/src/stillCapture.d.ts.map +1 -0
- package/dist/src/stillCapture.js +119 -0
- package/dist/src/stillCapture.js.map +1 -0
- package/dist/src/studio.d.ts +8 -11
- package/dist/src/studio.d.ts.map +1 -1
- package/dist/src/studio.js +2 -25
- package/dist/src/studio.js.map +1 -1
- package/dist/src/types.d.ts +125 -15
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/video.d.ts +54 -1
- package/dist/src/video.d.ts.map +1 -1
- package/dist/src/video.js +190 -42
- package/dist/src/video.js.map +1 -1
- package/dist/src/voices.d.ts +22 -9
- package/dist/src/voices.d.ts.map +1 -1
- package/dist/src/voices.js +6 -24
- package/dist/src/voices.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -2
- package/skills/screenci/SKILL.md +37 -15
- package/skills/screenci/references/init.md +3 -1
- package/skills/screenci/references/record.md +8 -3
- package/dist/docs/video-sources/cli.video.d.ts +0 -2
- package/dist/docs/video-sources/cli.video.d.ts.map +0 -1
- package/dist/docs/video-sources/cli.video.js.map +0 -1
- package/dist/docs/video-sources/installation.video.d.ts +0 -2
- package/dist/docs/video-sources/installation.video.d.ts.map +0 -1
- package/dist/docs/video-sources/installation.video.js.map +0 -1
- package/dist/docs/video-sources/landing.video.d.ts +0 -2
- package/dist/docs/video-sources/landing.video.d.ts.map +0 -1
- package/dist/docs/video-sources/landing.video.js.map +0 -1
package/dist/src/asset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset.js","sourceRoot":"","sources":["../../src/asset.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"asset.js","sourceRoot":"","sources":["../../src/asset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { IEventRecorder } from './events.js';
|
|
2
|
+
/**
|
|
3
|
+
* Display/playback options for a background audio track.
|
|
4
|
+
*
|
|
5
|
+
* Background audio is mixed *under* the recording (and any narration). Unlike
|
|
6
|
+
* overlays it has no visual and never freezes a frame: it simply plays from the
|
|
7
|
+
* point it is started until it is ended (or until the end of the video).
|
|
8
|
+
*/
|
|
9
|
+
export type AudioConfig = {
|
|
10
|
+
/** File path: `.mp3`, `.wav`, `.m4a`, `.aac`, or an audio-only `.mp4`. */
|
|
11
|
+
path: string;
|
|
12
|
+
/**
|
|
13
|
+
* Linear gain. `1` (the default) plays the source at its natural level, `0`
|
|
14
|
+
* mutes it, and values above `1` boost it (e.g. `2` is twice as loud). Capped
|
|
15
|
+
* at {@link MAX_AUDIO_LEVEL}.
|
|
16
|
+
*/
|
|
17
|
+
volume?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Loop the source to fill the playback span. With `repeat: true` a short
|
|
20
|
+
* track repeats until the track is ended (or the video ends). Defaults to
|
|
21
|
+
* `false` (the source plays once and then falls silent).
|
|
22
|
+
*/
|
|
23
|
+
repeat?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Playback-rate multiplier. `2` plays the track twice as fast, `0.5` at half
|
|
26
|
+
* speed; `1` (the default) is the natural rate. Works like {@link speed} for
|
|
27
|
+
* a recording. The track keeps its output span (it never freezes a frame or
|
|
28
|
+
* shifts the recording); only the source is consumed faster or slower.
|
|
29
|
+
* Mutually exclusive with {@link time}.
|
|
30
|
+
*/
|
|
31
|
+
speed?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Target playback duration (ms), an alternative to {@link speed}: the source
|
|
34
|
+
* is sped up or slowed down so it plays over exactly this long. Works like
|
|
35
|
+
* {@link time} for a recording. Mutually exclusive with {@link speed}.
|
|
36
|
+
*/
|
|
37
|
+
time?: number;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* A value accepted by {@link createAudio} for each key: a file path string or an
|
|
41
|
+
* {@link AudioConfig} object.
|
|
42
|
+
*/
|
|
43
|
+
export type AudioInput = string | AudioConfig;
|
|
44
|
+
/**
|
|
45
|
+
* A background audio controller.
|
|
46
|
+
*
|
|
47
|
+
* Calling it (`await music.theme()`) starts the track at the current point and
|
|
48
|
+
* lets it play for the rest of the video. Use `start()`/`end()` to bound the
|
|
49
|
+
* track to a specific span. Tracks are non-exclusive: starting one never stops
|
|
50
|
+
* another, so music and a sound effect can overlap.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* // Background music for the whole video:
|
|
55
|
+
* await music.theme()
|
|
56
|
+
*
|
|
57
|
+
* // Bounded span:
|
|
58
|
+
* await music.sting.start()
|
|
59
|
+
* await page.click('#celebrate')
|
|
60
|
+
* await music.sting.end()
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export type AudioController = {
|
|
64
|
+
(): Promise<void>;
|
|
65
|
+
start(): Promise<void>;
|
|
66
|
+
end(): Promise<void>;
|
|
67
|
+
};
|
|
68
|
+
/** Typed audio controllers keyed by the names passed to {@link createAudio}. */
|
|
69
|
+
export type AudioTracks<T extends Record<string, AudioInput>> = {
|
|
70
|
+
[K in keyof T]: AudioController;
|
|
71
|
+
};
|
|
72
|
+
export declare function setActiveAudioRecorder(recorder: IEventRecorder | null): void;
|
|
73
|
+
export declare function resetAudioChain(): void;
|
|
74
|
+
/**
|
|
75
|
+
* Creates a set of typed background audio controllers, one per key in the map.
|
|
76
|
+
* Each value is a file path string or an {@link AudioConfig} object.
|
|
77
|
+
*
|
|
78
|
+
* Background audio is mixed under the recording (and narration). Calling a
|
|
79
|
+
* controller starts the track at the current point and plays it for the rest of
|
|
80
|
+
* the video; `start()`/`end()` bound it to a span. Set `repeat: true` to loop a
|
|
81
|
+
* short track and `volume` to balance it against the recording.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```ts
|
|
85
|
+
* const music = createAudio({
|
|
86
|
+
* theme: { path: 'bg.mp3', volume: 0.3, repeat: true },
|
|
87
|
+
* sting: 'celebrate.wav',
|
|
88
|
+
* })
|
|
89
|
+
*
|
|
90
|
+
* video('Product demo', async ({ page }) => {
|
|
91
|
+
* await music.theme() // plays under the whole video, looping
|
|
92
|
+
* await page.goto('/dashboard')
|
|
93
|
+
* await music.sting.start()
|
|
94
|
+
* await page.click('#celebrate')
|
|
95
|
+
* await music.sting.end()
|
|
96
|
+
* })
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export declare function createAudio<const T extends Record<string, AudioInput>>(tracks: T): AudioTracks<T>;
|
|
100
|
+
/**
|
|
101
|
+
* Creates typed background audio controllers whose files, volume, and repeat are
|
|
102
|
+
* configured on the ScreenCI Studio page instead of in code. Business tier only.
|
|
103
|
+
*
|
|
104
|
+
* Each key becomes a callable controller with the same timeline behavior as
|
|
105
|
+
* {@link createAudio} controllers, including `start()`/`end()`. The audio file,
|
|
106
|
+
* volume, and repeat all come from Studio (mirrors {@link createStudioOverlays}
|
|
107
|
+
* for overlays).
|
|
108
|
+
*
|
|
109
|
+
* On the first upload of a studio-mode video, rendering is held until the video
|
|
110
|
+
* is configured in Studio (the CLI prints a direct link). Later uploads reuse
|
|
111
|
+
* the saved Studio configuration automatically.
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```ts
|
|
115
|
+
* const music = createStudioAudio('theme', 'sting')
|
|
116
|
+
*
|
|
117
|
+
* video('Product demo', async ({ page }) => {
|
|
118
|
+
* await music.theme() // plays under the whole video
|
|
119
|
+
* await page.goto('/dashboard')
|
|
120
|
+
* await music.sting.start()
|
|
121
|
+
* await page.click('#celebrate')
|
|
122
|
+
* await music.sting.end()
|
|
123
|
+
* })
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export declare function createStudioAudio<const K extends readonly [string, ...string[]]>(...keys: K): Record<K[number], AudioController>;
|
|
127
|
+
//# sourceMappingURL=audio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../src/audio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,aAAa,CAAA;AAcpE;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,WAAW,CAAA;AAE7C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,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,gFAAgF;AAChF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI;KAC7D,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe;CAChC,CAAA;AAID,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAG5E;AAED,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AA+DD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACpE,MAAM,EAAE,CAAC,GACR,WAAW,CAAC,CAAC,CAAC,CAMhB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,EAC9C,GAAG,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,CAgBhD"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { readFile } from 'fs/promises';
|
|
2
|
+
import { createHash } from 'crypto';
|
|
3
|
+
import { dirname, resolve } from 'path';
|
|
4
|
+
import { isInsideHide } from './hide.js';
|
|
5
|
+
import { MAX_AUDIO_LEVEL, validateSpeedTime } from './asset.js';
|
|
6
|
+
import { getScreenCIRuntimeContext, getRuntimeAudioRecorder, setRuntimeAudioRecorder, resetAudioRuntimeState, } from './runtimeContext.js';
|
|
7
|
+
const AUDIO_EXTENSIONS = ['.mp3', '.wav', '.m4a', '.aac', '.mp4'];
|
|
8
|
+
export function setActiveAudioRecorder(recorder) {
|
|
9
|
+
setRuntimeAudioRecorder(recorder);
|
|
10
|
+
resetAudioRuntimeState();
|
|
11
|
+
}
|
|
12
|
+
export function resetAudioChain() {
|
|
13
|
+
resetAudioRuntimeState();
|
|
14
|
+
}
|
|
15
|
+
function hasAudioExtension(path) {
|
|
16
|
+
const dotIndex = path.lastIndexOf('.');
|
|
17
|
+
if (dotIndex === -1)
|
|
18
|
+
return false;
|
|
19
|
+
const extension = path.slice(dotIndex).toLowerCase();
|
|
20
|
+
return AUDIO_EXTENSIONS.includes(extension);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Resolves an audio file path (as-is or relative to the test file) and returns
|
|
24
|
+
* its absolute path plus a SHA-256 hash for upload/caching. Throws when the file
|
|
25
|
+
* does not exist.
|
|
26
|
+
*/
|
|
27
|
+
async function resolveAudioFile(name, path, testFilePath) {
|
|
28
|
+
const candidates = [path];
|
|
29
|
+
if (testFilePath !== null) {
|
|
30
|
+
candidates.push(resolve(dirname(testFilePath), path));
|
|
31
|
+
}
|
|
32
|
+
for (const candidate of candidates) {
|
|
33
|
+
try {
|
|
34
|
+
const fileBuffer = await readFile(candidate);
|
|
35
|
+
return {
|
|
36
|
+
path,
|
|
37
|
+
fileHash: createHash('sha256').update(fileBuffer).digest('hex'),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// try next candidate
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
throw new Error(`[screenci] Audio file not found for "${name}": ${path}`);
|
|
45
|
+
}
|
|
46
|
+
function normalizeAudioConfig(name, input) {
|
|
47
|
+
const config = typeof input === 'string' ? { path: input } : input;
|
|
48
|
+
if (!hasAudioExtension(config.path)) {
|
|
49
|
+
throw new Error(`[screenci] Audio "${name}" must use one of: ${AUDIO_EXTENSIONS.join(', ')}. Received: ${config.path}`);
|
|
50
|
+
}
|
|
51
|
+
if (config.volume !== undefined &&
|
|
52
|
+
(!Number.isFinite(config.volume) ||
|
|
53
|
+
config.volume < 0 ||
|
|
54
|
+
config.volume > MAX_AUDIO_LEVEL)) {
|
|
55
|
+
throw new Error(`[screenci] Audio "${name}" (${config.path}) must provide a finite volume between 0 and ${MAX_AUDIO_LEVEL}. 1 is the natural level, 0 is silent, and values above 1 boost it.`);
|
|
56
|
+
}
|
|
57
|
+
validateSpeedTime(`Audio "${name}" (${config.path})`, config.speed, config.time);
|
|
58
|
+
return config;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Creates a set of typed background audio controllers, one per key in the map.
|
|
62
|
+
* Each value is a file path string or an {@link AudioConfig} object.
|
|
63
|
+
*
|
|
64
|
+
* Background audio is mixed under the recording (and narration). Calling a
|
|
65
|
+
* controller starts the track at the current point and plays it for the rest of
|
|
66
|
+
* the video; `start()`/`end()` bound it to a span. Set `repeat: true` to loop a
|
|
67
|
+
* short track and `volume` to balance it against the recording.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* const music = createAudio({
|
|
72
|
+
* theme: { path: 'bg.mp3', volume: 0.3, repeat: true },
|
|
73
|
+
* sting: 'celebrate.wav',
|
|
74
|
+
* })
|
|
75
|
+
*
|
|
76
|
+
* video('Product demo', async ({ page }) => {
|
|
77
|
+
* await music.theme() // plays under the whole video, looping
|
|
78
|
+
* await page.goto('/dashboard')
|
|
79
|
+
* await music.sting.start()
|
|
80
|
+
* await page.click('#celebrate')
|
|
81
|
+
* await music.sting.end()
|
|
82
|
+
* })
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export function createAudio(tracks) {
|
|
86
|
+
const result = {};
|
|
87
|
+
for (const name in tracks) {
|
|
88
|
+
result[name] = buildAudioController(name, tracks[name]);
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Creates typed background audio controllers whose files, volume, and repeat are
|
|
94
|
+
* configured on the ScreenCI Studio page instead of in code. Business tier only.
|
|
95
|
+
*
|
|
96
|
+
* Each key becomes a callable controller with the same timeline behavior as
|
|
97
|
+
* {@link createAudio} controllers, including `start()`/`end()`. The audio file,
|
|
98
|
+
* volume, and repeat all come from Studio (mirrors {@link createStudioOverlays}
|
|
99
|
+
* for overlays).
|
|
100
|
+
*
|
|
101
|
+
* On the first upload of a studio-mode video, rendering is held until the video
|
|
102
|
+
* is configured in Studio (the CLI prints a direct link). Later uploads reuse
|
|
103
|
+
* the saved Studio configuration automatically.
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```ts
|
|
107
|
+
* const music = createStudioAudio('theme', 'sting')
|
|
108
|
+
*
|
|
109
|
+
* video('Product demo', async ({ page }) => {
|
|
110
|
+
* await music.theme() // plays under the whole video
|
|
111
|
+
* await page.goto('/dashboard')
|
|
112
|
+
* await music.sting.start()
|
|
113
|
+
* await page.click('#celebrate')
|
|
114
|
+
* await music.sting.end()
|
|
115
|
+
* })
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
export function createStudioAudio(...keys) {
|
|
119
|
+
const seen = new Set();
|
|
120
|
+
for (const key of keys) {
|
|
121
|
+
if (seen.has(key)) {
|
|
122
|
+
throw new Error(`Duplicate audio key "${key}" passed to createStudioAudio. Audio keys must be unique.`);
|
|
123
|
+
}
|
|
124
|
+
seen.add(key);
|
|
125
|
+
}
|
|
126
|
+
const result = {};
|
|
127
|
+
for (const key of keys) {
|
|
128
|
+
result[key] = buildStudioAudioController(key);
|
|
129
|
+
}
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Builds the callable/`start()`/`end()` audio controller shared by code-defined
|
|
134
|
+
* ({@link createAudio}) and Studio ({@link createStudioAudio}) tracks. The only
|
|
135
|
+
* difference is how `emitStart` records the start event.
|
|
136
|
+
*/
|
|
137
|
+
function createAudioControllerCore(name, emitStart) {
|
|
138
|
+
// start()/end() register a live run so end() can pair to its start and a
|
|
139
|
+
// double start() is rejected.
|
|
140
|
+
const start = async () => {
|
|
141
|
+
if (isInsideHide()) {
|
|
142
|
+
throw new Error('[screenci] Cannot start audio inside hide()');
|
|
143
|
+
}
|
|
144
|
+
const context = getScreenCIRuntimeContext();
|
|
145
|
+
if (context.audio.activeRuns.has(name)) {
|
|
146
|
+
throw new Error(`[screenci] Audio "${name}" is already started. Call end() for it before starting it again.`);
|
|
147
|
+
}
|
|
148
|
+
let resolveFinished;
|
|
149
|
+
const finished = new Promise((res) => {
|
|
150
|
+
resolveFinished = res;
|
|
151
|
+
});
|
|
152
|
+
const run = { finished, resolveFinished };
|
|
153
|
+
context.audio.activeRuns.set(name, run);
|
|
154
|
+
await emitStart(getRuntimeAudioRecorder());
|
|
155
|
+
};
|
|
156
|
+
const end = async () => {
|
|
157
|
+
if (isInsideHide()) {
|
|
158
|
+
throw new Error('[screenci] Cannot call end() for audio inside hide()');
|
|
159
|
+
}
|
|
160
|
+
const context = getScreenCIRuntimeContext();
|
|
161
|
+
const run = context.audio.activeRuns.get(name);
|
|
162
|
+
if (run === undefined) {
|
|
163
|
+
throw new Error(`Cannot call end() for audio "${name}" because it is not a started track`);
|
|
164
|
+
}
|
|
165
|
+
getRuntimeAudioRecorder().addAudioEnd(name, 'wait');
|
|
166
|
+
context.audio.activeRuns.delete(name);
|
|
167
|
+
run.resolveFinished();
|
|
168
|
+
await run.finished;
|
|
169
|
+
};
|
|
170
|
+
// Bare call: play from here to the end of the video (no end recorded). It is
|
|
171
|
+
// fire-and-forget, so it never registers a live run.
|
|
172
|
+
const controller = (async () => {
|
|
173
|
+
if (isInsideHide()) {
|
|
174
|
+
throw new Error('[screenci] Cannot start audio inside hide()');
|
|
175
|
+
}
|
|
176
|
+
await emitStart(getRuntimeAudioRecorder());
|
|
177
|
+
});
|
|
178
|
+
controller.start = start;
|
|
179
|
+
controller.end = end;
|
|
180
|
+
return controller;
|
|
181
|
+
}
|
|
182
|
+
function buildAudioController(name, input) {
|
|
183
|
+
const config = normalizeAudioConfig(name, input);
|
|
184
|
+
const buildPayload = async () => {
|
|
185
|
+
const testFilePath = getScreenCIRuntimeContext().testFilePath;
|
|
186
|
+
const resolved = await resolveAudioFile(name, config.path, testFilePath);
|
|
187
|
+
return {
|
|
188
|
+
path: resolved.path,
|
|
189
|
+
fileHash: resolved.fileHash,
|
|
190
|
+
volume: config.volume ?? 1,
|
|
191
|
+
repeat: config.repeat ?? false,
|
|
192
|
+
...(config.speed !== undefined && { speed: config.speed }),
|
|
193
|
+
...(config.time !== undefined && { time: config.time }),
|
|
194
|
+
};
|
|
195
|
+
};
|
|
196
|
+
return createAudioControllerCore(name, async (recorder) => {
|
|
197
|
+
const payload = await buildPayload();
|
|
198
|
+
recorder.addAudioStart(name, payload);
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
function buildStudioAudioController(name) {
|
|
202
|
+
return createAudioControllerCore(name, (recorder) => {
|
|
203
|
+
recorder.addStudioAudioStart(name);
|
|
204
|
+
return Promise.resolve();
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=audio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/audio.ts"],"names":[],"mappings":"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"}
|
package/dist/src/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AASxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,sBAAsB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AASxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,sBAAsB,CA8H3E"}
|
package/dist/src/config.js
CHANGED
|
@@ -76,13 +76,13 @@ export function defineConfig(config) {
|
|
|
76
76
|
if (Object.prototype.hasOwnProperty.call(config, 'testDir') &&
|
|
77
77
|
config.testDir !== undefined) {
|
|
78
78
|
throw new Error('screenci does not support "testDir" option. ' +
|
|
79
|
-
'Use "videoDir" instead to specify the directory containing your *.
|
|
79
|
+
'Use "videoDir" instead to specify the directory containing your *.screenci.* files. ' +
|
|
80
80
|
'Defaults to "./videos".');
|
|
81
81
|
}
|
|
82
82
|
// Runtime check for testMatch
|
|
83
83
|
if ('testMatch' in config) {
|
|
84
84
|
throw new Error('screenci does not support "testMatch" option. ' +
|
|
85
|
-
'screenci automatically configures tests to only run *.
|
|
85
|
+
'screenci automatically configures tests to only run *.screenci.* files.');
|
|
86
86
|
}
|
|
87
87
|
// Runtime check for retries
|
|
88
88
|
if ('retries' in config) {
|
|
@@ -112,7 +112,13 @@ export function defineConfig(config) {
|
|
|
112
112
|
// Map videoDir to testDir and keep screenci-managed defaults in place.
|
|
113
113
|
return {
|
|
114
114
|
testDir: videoDir ?? DEFAULT_VIDEO_DIR,
|
|
115
|
-
testMatch:
|
|
115
|
+
testMatch: [
|
|
116
|
+
'**/*.screenci.?(c|m)[jt]s?(x)',
|
|
117
|
+
// Deprecated alias kept only for backward compatibility: legacy
|
|
118
|
+
// `.video.ts` files are still discovered. Not documented anywhere; all
|
|
119
|
+
// new files use `.screenci.ts`. Do not surface this in docs or output.
|
|
120
|
+
'**/*.video.?(c|m)[jt]s?(x)',
|
|
121
|
+
],
|
|
116
122
|
...rest,
|
|
117
123
|
record: {
|
|
118
124
|
upload: record?.upload ?? DEFAULT_RECORD_UPLOAD_POLICY,
|
package/dist/src/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,eAAe,EACf,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,eAAe,CAAA;AAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,UAAU,YAAY,CAAC,MAAsB;IACjD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM,CAAA;IAC7D,MAAM,iBAAiB,GAAG,CACxB,QAAiD,EACR,EAAE;QAC3C,IAAI,CAAC,WAAW;YAAE,OAAO,QAAQ,CAAA;QAEjC,0EAA0E;QAC1E,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;QACtC,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC5B,IACE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;oBACpB,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM;oBACnB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,EACxD,CAAC;oBACD,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;gBACzD,CAAC;gBAED,OAAO,KAAK,CAAA;YACd,CAAC,CAA4C,CAAA;QAC/C,CAAC;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC,CAAA;IAED,oGAAoG;IACpG,IAAI,MAAM,CAAC,GAAG,IAAI,UAAU,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,+CAA+C;YAC7C,2EAA2E;YAC3E,4DAA4D,CAC/D,CAAA;IACH,CAAC;IAED,yCAAyC;IACzC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,OAAO,CAAC,GAAG,IAAI,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CACb,2DAA2D,OAAO,CAAC,IAAI,KAAK;oBAC1E,2EAA2E;oBAC3E,4DAA4D,CAC/D,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC;QACtD,MAAkC,CAAC,OAAO,KAAK,SAAS,EACzD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,8CAA8C;YAC5C,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Browser } from '@playwright/test';
|
|
2
|
+
import type { RecordOptions } from './types.js';
|
|
3
|
+
/** The exact options object accepted by `browser.newContext()`. */
|
|
4
|
+
export type NewContextOptions = NonNullable<Parameters<Browser['newContext']>[0]>;
|
|
5
|
+
/**
|
|
6
|
+
* Playwright `use` context options that screenci forwards verbatim into the
|
|
7
|
+
* browser context it creates for itself.
|
|
8
|
+
*
|
|
9
|
+
* screenci builds its own context (rather than using Playwright's auto-created
|
|
10
|
+
* one) so it can pin the viewport to `recordOptions`. Historically that meant
|
|
11
|
+
* every other `use` option (most notably `colorScheme: 'dark'`) was silently
|
|
12
|
+
* dropped. These keys are passed straight through so they take effect again.
|
|
13
|
+
*
|
|
14
|
+
* `viewport` is intentionally excluded (screenci owns it) and `deviceScaleFactor`
|
|
15
|
+
* is handled separately so it can be applied to screenshots but not to the video
|
|
16
|
+
* screencast, whose encoder expects frames at the viewport size.
|
|
17
|
+
*/
|
|
18
|
+
export declare const FORWARDED_CONTEXT_OPTION_KEYS: readonly ["colorScheme", "locale", "timezoneId", "userAgent", "geolocation", "permissions", "extraHTTPHeaders", "httpCredentials", "ignoreHTTPSErrors", "offline", "storageState", "baseURL", "bypassCSP", "acceptDownloads", "javaScriptEnabled", "hasTouch", "isMobile"];
|
|
19
|
+
export type ForwardedContextOptions = {
|
|
20
|
+
[K in (typeof FORWARDED_CONTEXT_OPTION_KEYS)[number]]?: NewContextOptions[K] | undefined;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Resolve the device scale factor (DPR) for capture. `recordOptions` wins so the
|
|
24
|
+
* dedicated `recordOptions.deviceScaleFactor` knob is the easy way to ask for a
|
|
25
|
+
* higher-DPI still; a Playwright `use: { deviceScaleFactor }` is honored as a
|
|
26
|
+
* fallback. `defaultDsf` is the fallback when neither is set (screenshots pass
|
|
27
|
+
* `2` for crisp stills; the general default is `1`).
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveDeviceScaleFactor(recordOptions: RecordOptions, forwarded: number | undefined, defaultDsf?: number): number;
|
|
30
|
+
/**
|
|
31
|
+
* Build the options for the browser context screenci creates, merging the
|
|
32
|
+
* forwarded `use` options with screenci-managed values.
|
|
33
|
+
*
|
|
34
|
+
* - `viewport` is always set from `recordOptions` dimensions (never forwarded).
|
|
35
|
+
* - `deviceScaleFactor` is set only when provided (screenshots); video leaves it
|
|
36
|
+
* at Playwright's default so the screencast stays at viewport resolution.
|
|
37
|
+
* - `locale` defaults to `'en-US'` while recording unless the user set one.
|
|
38
|
+
*/
|
|
39
|
+
export declare function buildScreenCIContextOptions(params: {
|
|
40
|
+
dimensions: {
|
|
41
|
+
width: number;
|
|
42
|
+
height: number;
|
|
43
|
+
};
|
|
44
|
+
forwarded: ForwardedContextOptions;
|
|
45
|
+
applyLocaleDefault: boolean;
|
|
46
|
+
deviceScaleFactor?: number;
|
|
47
|
+
}): NewContextOptions;
|
|
48
|
+
//# sourceMappingURL=contextOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextOptions.d.ts","sourceRoot":"","sources":["../../src/contextOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,mEAAmE;AACnE,MAAM,MAAM,iBAAiB,GAAG,WAAW,CACzC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CACrC,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,6BAA6B,4QAkBhC,CAAA;AAEV,MAAM,MAAM,uBAAuB,GAAG;KACnC,CAAC,IAAI,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAClD,iBAAiB,CAAC,CAAC,CAAC,GACpB,SAAS;CACd,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,SAAI,GACb,MAAM,CAER;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE;IAClD,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,SAAS,EAAE,uBAAuB,CAAA;IAClC,kBAAkB,EAAE,OAAO,CAAA;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,GAAG,iBAAiB,CAqBpB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Playwright `use` context options that screenci forwards verbatim into the
|
|
3
|
+
* browser context it creates for itself.
|
|
4
|
+
*
|
|
5
|
+
* screenci builds its own context (rather than using Playwright's auto-created
|
|
6
|
+
* one) so it can pin the viewport to `recordOptions`. Historically that meant
|
|
7
|
+
* every other `use` option (most notably `colorScheme: 'dark'`) was silently
|
|
8
|
+
* dropped. These keys are passed straight through so they take effect again.
|
|
9
|
+
*
|
|
10
|
+
* `viewport` is intentionally excluded (screenci owns it) and `deviceScaleFactor`
|
|
11
|
+
* is handled separately so it can be applied to screenshots but not to the video
|
|
12
|
+
* screencast, whose encoder expects frames at the viewport size.
|
|
13
|
+
*/
|
|
14
|
+
export const FORWARDED_CONTEXT_OPTION_KEYS = [
|
|
15
|
+
'colorScheme',
|
|
16
|
+
'locale',
|
|
17
|
+
'timezoneId',
|
|
18
|
+
'userAgent',
|
|
19
|
+
'geolocation',
|
|
20
|
+
'permissions',
|
|
21
|
+
'extraHTTPHeaders',
|
|
22
|
+
'httpCredentials',
|
|
23
|
+
'ignoreHTTPSErrors',
|
|
24
|
+
'offline',
|
|
25
|
+
'storageState',
|
|
26
|
+
'baseURL',
|
|
27
|
+
'bypassCSP',
|
|
28
|
+
'acceptDownloads',
|
|
29
|
+
'javaScriptEnabled',
|
|
30
|
+
'hasTouch',
|
|
31
|
+
'isMobile',
|
|
32
|
+
];
|
|
33
|
+
/**
|
|
34
|
+
* Resolve the device scale factor (DPR) for capture. `recordOptions` wins so the
|
|
35
|
+
* dedicated `recordOptions.deviceScaleFactor` knob is the easy way to ask for a
|
|
36
|
+
* higher-DPI still; a Playwright `use: { deviceScaleFactor }` is honored as a
|
|
37
|
+
* fallback. `defaultDsf` is the fallback when neither is set (screenshots pass
|
|
38
|
+
* `2` for crisp stills; the general default is `1`).
|
|
39
|
+
*/
|
|
40
|
+
export function resolveDeviceScaleFactor(recordOptions, forwarded, defaultDsf = 1) {
|
|
41
|
+
return recordOptions.deviceScaleFactor ?? forwarded ?? defaultDsf;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Build the options for the browser context screenci creates, merging the
|
|
45
|
+
* forwarded `use` options with screenci-managed values.
|
|
46
|
+
*
|
|
47
|
+
* - `viewport` is always set from `recordOptions` dimensions (never forwarded).
|
|
48
|
+
* - `deviceScaleFactor` is set only when provided (screenshots); video leaves it
|
|
49
|
+
* at Playwright's default so the screencast stays at viewport resolution.
|
|
50
|
+
* - `locale` defaults to `'en-US'` while recording unless the user set one.
|
|
51
|
+
*/
|
|
52
|
+
export function buildScreenCIContextOptions(params) {
|
|
53
|
+
const { dimensions, forwarded, applyLocaleDefault, deviceScaleFactor } = params;
|
|
54
|
+
const options = {};
|
|
55
|
+
for (const key of FORWARDED_CONTEXT_OPTION_KEYS) {
|
|
56
|
+
const value = forwarded[key];
|
|
57
|
+
if (value !== undefined) {
|
|
58
|
+
;
|
|
59
|
+
options[key] = value;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
options.viewport = dimensions;
|
|
63
|
+
if (deviceScaleFactor !== undefined) {
|
|
64
|
+
options.deviceScaleFactor = deviceScaleFactor;
|
|
65
|
+
}
|
|
66
|
+
if (options.locale === undefined && applyLocaleDefault) {
|
|
67
|
+
options.locale = 'en-US';
|
|
68
|
+
}
|
|
69
|
+
return options;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=contextOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextOptions.js","sourceRoot":"","sources":["../../src/contextOptions.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,aAAa;IACb,QAAQ;IACR,YAAY;IACZ,WAAW;IACX,aAAa;IACb,aAAa;IACb,kBAAkB;IAClB,iBAAiB;IACjB,mBAAmB;IACnB,SAAS;IACT,cAAc;IACd,SAAS;IACT,WAAW;IACX,iBAAiB;IACjB,mBAAmB;IACnB,UAAU;IACV,UAAU;CACF,CAAA;AAQV;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,aAA4B,EAC5B,SAA6B,EAC7B,UAAU,GAAG,CAAC;IAEd,OAAO,aAAa,CAAC,iBAAiB,IAAI,SAAS,IAAI,UAAU,CAAA;AACnE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAK3C;IACC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GACpE,MAAM,CAAA;IAER,MAAM,OAAO,GAAsB,EAAE,CAAA;IACrC,KAAK,MAAM,GAAG,IAAI,6BAA6B,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,CAAC;YAAC,OAAmC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACpD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,QAAQ,GAAG,UAAU,CAAA;IAC7B,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;IAC/C,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,kBAAkB,EAAE,CAAC;QACvD,OAAO,CAAC,MAAM,GAAG,OAAO,CAAA;IAC1B,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
|