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.
Files changed (184) hide show
  1. package/dist/cli.d.ts +58 -1
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +584 -200
  4. package/dist/cli.js.map +1 -1
  5. package/dist/docs/manifest.d.ts +253 -98
  6. package/dist/docs/manifest.d.ts.map +1 -1
  7. package/dist/docs/manifest.js +92 -32
  8. package/dist/docs/manifest.js.map +1 -1
  9. package/dist/docs/video-sources/camera-and-zooming.screenci.d.ts +2 -0
  10. package/dist/docs/video-sources/camera-and-zooming.screenci.d.ts.map +1 -0
  11. package/dist/docs/video-sources/camera-and-zooming.screenci.js +57 -0
  12. package/dist/docs/video-sources/camera-and-zooming.screenci.js.map +1 -0
  13. package/dist/docs/video-sources/installation.screenci.js +9 -6
  14. package/dist/docs/video-sources/installation.screenci.js.map +1 -1
  15. package/dist/docs/video-sources/languages.screenci.d.ts +2 -0
  16. package/dist/docs/video-sources/languages.screenci.d.ts.map +1 -0
  17. package/dist/docs/video-sources/languages.screenci.js +68 -0
  18. package/dist/docs/video-sources/languages.screenci.js.map +1 -0
  19. package/dist/docs/video-sources/locator-highlight-animated.screenci.js +1 -1
  20. package/dist/docs/video-sources/locator-highlight-animated.screenci.js.map +1 -1
  21. package/dist/docs/video-sources/narration.screenci.d.ts +2 -0
  22. package/dist/docs/video-sources/narration.screenci.d.ts.map +1 -0
  23. package/dist/docs/video-sources/narration.screenci.js +71 -0
  24. package/dist/docs/video-sources/narration.screenci.js.map +1 -0
  25. package/dist/docs/video-sources/public-urls-and-embeds.screenci.d.ts +2 -0
  26. package/dist/docs/video-sources/public-urls-and-embeds.screenci.d.ts.map +1 -0
  27. package/dist/docs/video-sources/public-urls-and-embeds.screenci.js +60 -0
  28. package/dist/docs/video-sources/public-urls-and-embeds.screenci.js.map +1 -0
  29. package/dist/docs/video-sources/speaking-style.screenci.d.ts +2 -0
  30. package/dist/docs/video-sources/speaking-style.screenci.d.ts.map +1 -0
  31. package/dist/docs/video-sources/speaking-style.screenci.js +76 -0
  32. package/dist/docs/video-sources/speaking-style.screenci.js.map +1 -0
  33. package/dist/docs/video-sources/vertical-video.screenci.d.ts +2 -0
  34. package/dist/docs/video-sources/vertical-video.screenci.d.ts.map +1 -0
  35. package/dist/docs/video-sources/vertical-video.screenci.js +58 -0
  36. package/dist/docs/video-sources/vertical-video.screenci.js.map +1 -0
  37. package/dist/docs/videos.d.ts +20 -0
  38. package/dist/docs/videos.d.ts.map +1 -1
  39. package/dist/docs/videos.js +25 -0
  40. package/dist/docs/videos.js.map +1 -1
  41. package/dist/e2e/instrument.e2e.js +8 -0
  42. package/dist/e2e/instrument.e2e.js.map +1 -1
  43. package/dist/e2e/redact.e2e.d.ts +2 -0
  44. package/dist/e2e/redact.e2e.d.ts.map +1 -0
  45. package/dist/e2e/redact.e2e.js +161 -0
  46. package/dist/e2e/redact.e2e.js.map +1 -0
  47. package/dist/index.d.ts +10 -3
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +8 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/src/asset.d.ts +154 -13
  52. package/dist/src/asset.d.ts.map +1 -1
  53. package/dist/src/asset.js +262 -32
  54. package/dist/src/asset.js.map +1 -1
  55. package/dist/src/assetHash.d.ts +27 -0
  56. package/dist/src/assetHash.d.ts.map +1 -0
  57. package/dist/src/assetHash.js +0 -0
  58. package/dist/src/assetHash.js.map +1 -0
  59. package/dist/src/audio.d.ts +8 -5
  60. package/dist/src/audio.d.ts.map +1 -1
  61. package/dist/src/audio.js +56 -31
  62. package/dist/src/audio.js.map +1 -1
  63. package/dist/src/builder.d.ts +132 -32
  64. package/dist/src/builder.d.ts.map +1 -1
  65. package/dist/src/builder.js +66 -20
  66. package/dist/src/builder.js.map +1 -1
  67. package/dist/src/changeFocus.d.ts.map +1 -1
  68. package/dist/src/changeFocus.js +103 -34
  69. package/dist/src/changeFocus.js.map +1 -1
  70. package/dist/src/cue.d.ts +29 -17
  71. package/dist/src/cue.d.ts.map +1 -1
  72. package/dist/src/cue.js +138 -61
  73. package/dist/src/cue.js.map +1 -1
  74. package/dist/src/declare.d.ts +8 -4
  75. package/dist/src/declare.d.ts.map +1 -1
  76. package/dist/src/declare.js +28 -10
  77. package/dist/src/declare.js.map +1 -1
  78. package/dist/src/defaults.d.ts +23 -0
  79. package/dist/src/defaults.d.ts.map +1 -1
  80. package/dist/src/defaults.js +23 -0
  81. package/dist/src/defaults.js.map +1 -1
  82. package/dist/src/events.d.ts +289 -25
  83. package/dist/src/events.d.ts.map +1 -1
  84. package/dist/src/events.js +145 -13
  85. package/dist/src/events.js.map +1 -1
  86. package/dist/src/htmlRasterizer.d.ts +10 -0
  87. package/dist/src/htmlRasterizer.d.ts.map +1 -1
  88. package/dist/src/htmlRasterizer.js +12 -2
  89. package/dist/src/htmlRasterizer.js.map +1 -1
  90. package/dist/src/init.d.ts +2 -0
  91. package/dist/src/init.d.ts.map +1 -1
  92. package/dist/src/init.js +60 -28
  93. package/dist/src/init.js.map +1 -1
  94. package/dist/src/instrument.d.ts.map +1 -1
  95. package/dist/src/instrument.js +25 -7
  96. package/dist/src/instrument.js.map +1 -1
  97. package/dist/src/locales.d.ts.map +1 -1
  98. package/dist/src/locales.js +1 -0
  99. package/dist/src/locales.js.map +1 -1
  100. package/dist/src/localize.d.ts +25 -17
  101. package/dist/src/localize.d.ts.map +1 -1
  102. package/dist/src/localize.js +18 -10
  103. package/dist/src/localize.js.map +1 -1
  104. package/dist/src/localizeRuntime.d.ts +18 -13
  105. package/dist/src/localizeRuntime.d.ts.map +1 -1
  106. package/dist/src/localizeRuntime.js +28 -18
  107. package/dist/src/localizeRuntime.js.map +1 -1
  108. package/dist/src/logger.d.ts +5 -0
  109. package/dist/src/logger.d.ts.map +1 -1
  110. package/dist/src/logger.js +7 -0
  111. package/dist/src/logger.js.map +1 -1
  112. package/dist/src/narrationVisibility.d.ts +19 -0
  113. package/dist/src/narrationVisibility.d.ts.map +1 -0
  114. package/dist/src/narrationVisibility.js +26 -0
  115. package/dist/src/narrationVisibility.js.map +1 -0
  116. package/dist/src/recordingData.d.ts +7 -0
  117. package/dist/src/recordingData.d.ts.map +1 -1
  118. package/dist/src/recordingSize.d.ts +32 -0
  119. package/dist/src/recordingSize.d.ts.map +1 -0
  120. package/dist/src/recordingSize.js +54 -0
  121. package/dist/src/recordingSize.js.map +1 -0
  122. package/dist/src/redact.d.ts +68 -0
  123. package/dist/src/redact.d.ts.map +1 -0
  124. package/dist/src/redact.js +138 -0
  125. package/dist/src/redact.js.map +1 -0
  126. package/dist/src/redactController.d.ts +61 -0
  127. package/dist/src/redactController.d.ts.map +1 -0
  128. package/dist/src/redactController.js +232 -0
  129. package/dist/src/redactController.js.map +1 -0
  130. package/dist/src/runtimeContext.d.ts +32 -0
  131. package/dist/src/runtimeContext.d.ts.map +1 -1
  132. package/dist/src/runtimeContext.js +21 -0
  133. package/dist/src/runtimeContext.js.map +1 -1
  134. package/dist/src/runtimeMode.d.ts +15 -7
  135. package/dist/src/runtimeMode.d.ts.map +1 -1
  136. package/dist/src/runtimeMode.js +17 -6
  137. package/dist/src/runtimeMode.js.map +1 -1
  138. package/dist/src/screenAudio.d.ts +34 -4
  139. package/dist/src/screenAudio.d.ts.map +1 -1
  140. package/dist/src/screenAudio.js +0 -0
  141. package/dist/src/screenAudio.js.map +1 -1
  142. package/dist/src/screenAudioSink.d.ts +12 -0
  143. package/dist/src/screenAudioSink.d.ts.map +1 -1
  144. package/dist/src/screenAudioSink.js +30 -0
  145. package/dist/src/screenAudioSink.js.map +1 -1
  146. package/dist/src/screenshot.d.ts +16 -14
  147. package/dist/src/screenshot.d.ts.map +1 -1
  148. package/dist/src/screenshot.js +11 -11
  149. package/dist/src/screenshot.js.map +1 -1
  150. package/dist/src/sourceTrim.d.ts +29 -0
  151. package/dist/src/sourceTrim.d.ts.map +1 -0
  152. package/dist/src/sourceTrim.js +76 -0
  153. package/dist/src/sourceTrim.js.map +1 -0
  154. package/dist/src/studio.d.ts +71 -3
  155. package/dist/src/studio.d.ts.map +1 -1
  156. package/dist/src/studio.js +19 -1
  157. package/dist/src/studio.js.map +1 -1
  158. package/dist/src/timelineOffset.d.ts +46 -0
  159. package/dist/src/timelineOffset.d.ts.map +1 -0
  160. package/dist/src/timelineOffset.js +66 -0
  161. package/dist/src/timelineOffset.js.map +1 -0
  162. package/dist/src/titleValidation.d.ts +38 -0
  163. package/dist/src/titleValidation.d.ts.map +1 -1
  164. package/dist/src/titleValidation.js +42 -0
  165. package/dist/src/titleValidation.js.map +1 -1
  166. package/dist/src/types.d.ts +85 -0
  167. package/dist/src/types.d.ts.map +1 -1
  168. package/dist/src/types.js +1 -1
  169. package/dist/src/types.js.map +1 -1
  170. package/dist/src/video.d.ts +37 -34
  171. package/dist/src/video.d.ts.map +1 -1
  172. package/dist/src/video.js +99 -48
  173. package/dist/src/video.js.map +1 -1
  174. package/dist/src/voiceSampleAudio.d.ts +34 -0
  175. package/dist/src/voiceSampleAudio.d.ts.map +1 -0
  176. package/dist/src/voiceSampleAudio.js +105 -0
  177. package/dist/src/voiceSampleAudio.js.map +1 -0
  178. package/dist/src/voices.d.ts +2 -2
  179. package/dist/src/voices.d.ts.map +1 -1
  180. package/dist/src/voices.js +8 -3
  181. package/dist/src/voices.js.map +1 -1
  182. package/dist/tsconfig.tsbuildinfo +1 -1
  183. package/package.json +3 -2
  184. package/templates/recordings/assets/logo.png +0 -0
@@ -0,0 +1,232 @@
1
+ /**
2
+ * In-page redaction controller.
3
+ *
4
+ * screenci records the live browser page, so the only way to keep a secret out
5
+ * of `recording.mp4` (and therefore out of the upload) is to mask it in the DOM
6
+ * before Chrome captures the frame. This module is the browser-side half: a
7
+ * self-contained controller installed via `addInitScript` that covers target
8
+ * elements with an opaque panel (by default tinted to match the surface beneath
9
+ * them), tracking their position every animation frame so the mask follows
10
+ * scroll, layout, and animation.
11
+ *
12
+ * The functions here are serialized and shipped to the page by Playwright, so
13
+ * they must not reference anything outside their own bodies.
14
+ */
15
+ /** Attribute stamped on elements masked by a runtime `redact` call. */
16
+ export const REDACT_ID_ATTRIBUTE = 'data-screenci-redact-id';
17
+ /** Id of the fixed-position container that holds every tint div. */
18
+ export const REDACT_ROOT_ID = '__screenci_redact_root';
19
+ /** Name of the window global the controller installs. */
20
+ export const REDACT_WINDOW_KEY = '__screenci_redact';
21
+ /**
22
+ * The controller bootstrap. Runs in the page (via `addInitScript`) on every
23
+ * document. Idempotent: a second run is a no-op, so it is safe to inject more
24
+ * than once.
25
+ */
26
+ export function redactControllerBootstrap() {
27
+ const KEY = '__screenci_redact';
28
+ const ROOT_ID = '__screenci_redact_root';
29
+ const win = window;
30
+ if (win[KEY])
31
+ return;
32
+ const entries = new Map();
33
+ let root = null;
34
+ let rafId = null;
35
+ function ensureRoot() {
36
+ if (root && root.isConnected)
37
+ return root;
38
+ // At document-start (init script) the parent may not exist yet; the rAF
39
+ // loop retries next frame rather than throwing and dying.
40
+ const parent = document.body ?? document.documentElement;
41
+ if (!parent)
42
+ return null;
43
+ const existing = document.getElementById(ROOT_ID);
44
+ if (existing) {
45
+ root = existing;
46
+ return root;
47
+ }
48
+ const el = document.createElement('div');
49
+ el.id = ROOT_ID;
50
+ el.setAttribute('aria-hidden', 'true');
51
+ el.style.cssText =
52
+ 'position:fixed;top:0;left:0;width:0;height:0;margin:0;padding:0;' +
53
+ 'border:0;pointer-events:none;z-index:2147483647;';
54
+ // Append to documentElement so it survives <body> swaps in SPAs.
55
+ document.documentElement.appendChild(el);
56
+ root = el;
57
+ return el;
58
+ }
59
+ function isTransparentColor(c) {
60
+ return (!c ||
61
+ c === 'transparent' ||
62
+ /rgba?\(\s*0\s*,\s*0\s*,\s*0\s*,\s*0\s*\)/.test(c));
63
+ }
64
+ // Pick an opaque fill color from the surface under the element: its own
65
+ // background, or the nearest ancestor (or the body) that paints one. This
66
+ // gives a clean, uniform panel that blends with the surrounding UI.
67
+ function sampleRegionColor(el) {
68
+ let node = el;
69
+ while (node) {
70
+ const bg = getComputedStyle(node).backgroundColor;
71
+ if (!isTransparentColor(bg))
72
+ return bg;
73
+ node = node.parentElement;
74
+ }
75
+ const bodyBg = document.body
76
+ ? getComputedStyle(document.body).backgroundColor
77
+ : '';
78
+ return isTransparentColor(bodyBg) ? '#e5e5e5' : bodyBg;
79
+ }
80
+ function styleMask(div, style, autoColor) {
81
+ // Opaque panel: a fixed color, or one sampled to match what is underneath.
82
+ div.style.background = style.color ?? autoColor ?? '#e5e5e5';
83
+ div.style.borderRadius = `${style.radiusPx}px`;
84
+ div.style.boxShadow = style.shadow ?? 'none';
85
+ // Custom styling, applied last so it can override the defaults.
86
+ if (style.css)
87
+ div.style.cssText += ';' + style.css;
88
+ // Keep the panel non-interactive and absolutely positioned regardless of
89
+ // any custom CSS.
90
+ div.style.position = 'absolute';
91
+ div.style.pointerEvents = 'none';
92
+ }
93
+ function resolveElements(entry) {
94
+ if (entry.selector !== null) {
95
+ return Array.from(document.querySelectorAll(entry.selector));
96
+ }
97
+ return (entry.elements ?? []).filter((el) => el.isConnected);
98
+ }
99
+ function positionFrame() {
100
+ const container = ensureRoot();
101
+ if (!container) {
102
+ // DOM not ready yet; try again next frame while masks are pending.
103
+ rafId = entries.size > 0 ? requestAnimationFrame(positionFrame) : null;
104
+ return;
105
+ }
106
+ for (const entry of entries.values()) {
107
+ const seen = new Set();
108
+ for (const el of resolveElements(entry)) {
109
+ const rect = el.getBoundingClientRect();
110
+ if (rect.width <= 0 || rect.height <= 0)
111
+ continue;
112
+ seen.add(el);
113
+ let div = entry.masks.get(el);
114
+ if (!div) {
115
+ div = document.createElement('div');
116
+ div.style.cssText =
117
+ 'position:absolute;top:0;left:0;pointer-events:none;will-change:transform;';
118
+ const autoColor = entry.style.color === null ? sampleRegionColor(el) : null;
119
+ styleMask(div, entry.style, autoColor);
120
+ container.appendChild(div);
121
+ entry.masks.set(el, div);
122
+ }
123
+ // Inflate just enough that the rounded corners never expose the
124
+ // element's square corners underneath. A rounded rect of radius r covers
125
+ // an inner corner once it extends about 0.29*r beyond it, so this stays
126
+ // tight to the element rather than looking oversized.
127
+ const pad = Math.ceil(entry.style.radiusPx * 0.3);
128
+ div.style.transform = `translate(${rect.left - pad}px, ${rect.top - pad}px)`;
129
+ div.style.width = `${rect.width + pad * 2}px`;
130
+ div.style.height = `${rect.height + pad * 2}px`;
131
+ div.style.display = 'block';
132
+ }
133
+ // Tear down masks for elements that vanished this frame.
134
+ for (const [el, div] of entry.masks) {
135
+ if (seen.has(el))
136
+ continue;
137
+ div.remove();
138
+ entry.masks.delete(el);
139
+ }
140
+ }
141
+ rafId = entries.size > 0 ? requestAnimationFrame(positionFrame) : null;
142
+ }
143
+ function startLoop() {
144
+ if (rafId !== null)
145
+ return;
146
+ // Run one synchronous frame so a freshly added mask covers its element
147
+ // before this call returns (no unmasked frame escapes to the recording),
148
+ // then keep tracking on rAF.
149
+ positionFrame();
150
+ }
151
+ function teardownEntry(entry) {
152
+ for (const [el, div] of entry.masks) {
153
+ div.remove();
154
+ entry.masks.delete(el);
155
+ }
156
+ }
157
+ const api = {
158
+ addElements(id, elements, style) {
159
+ const entry = {
160
+ style: style,
161
+ selector: null,
162
+ elements,
163
+ masks: new Map(),
164
+ };
165
+ const prev = entries.get(id);
166
+ if (prev)
167
+ teardownEntry(prev);
168
+ entries.set(id, entry);
169
+ startLoop();
170
+ },
171
+ addSelector(id, selector, style) {
172
+ const entry = {
173
+ style: style,
174
+ selector,
175
+ elements: null,
176
+ masks: new Map(),
177
+ };
178
+ const prev = entries.get(id);
179
+ if (prev)
180
+ teardownEntry(prev);
181
+ entries.set(id, entry);
182
+ startLoop();
183
+ },
184
+ remove(id) {
185
+ const entry = entries.get(id);
186
+ if (!entry)
187
+ return;
188
+ teardownEntry(entry);
189
+ entries.delete(id);
190
+ },
191
+ clear() {
192
+ for (const entry of entries.values())
193
+ teardownEntry(entry);
194
+ entries.clear();
195
+ },
196
+ };
197
+ win[KEY] = api;
198
+ }
199
+ /**
200
+ * Init script that masks the configured first-paint selectors. Registered after
201
+ * the bootstrap so `window.__screenci_redact` already exists. A CSS rule hides
202
+ * matches the instant they paint (race free, no JS timing), and the controller
203
+ * lays the opaque panel over them a frame later.
204
+ */
205
+ export function redactApplyConfigSelectors(config) {
206
+ const KEY = '__screenci_redact';
207
+ const api = window[KEY];
208
+ if (!api || config.selectors.length === 0)
209
+ return;
210
+ // Hide matches the instant they paint, before the JS panel can position
211
+ // itself, so the secret never flashes on the first frame. `visibility:hidden`
212
+ // keeps the layout box so the panel is sized correctly, and it fails closed if
213
+ // the controller never runs.
214
+ const css = config.selectors
215
+ .map((sel) => `${sel}{visibility:hidden !important;}`)
216
+ .join('');
217
+ const style = document.createElement('style');
218
+ style.setAttribute('data-screenci-redact', 'config');
219
+ style.textContent = css;
220
+ const attach = () => {
221
+ ;
222
+ (document.head ?? document.documentElement).appendChild(style);
223
+ };
224
+ if (document.head)
225
+ attach();
226
+ else
227
+ document.addEventListener('DOMContentLoaded', attach, { once: true });
228
+ config.selectors.forEach((selector, index) => {
229
+ api.addSelector(`__screenci_config_${index}`, selector, config.style);
230
+ });
231
+ }
232
+ //# sourceMappingURL=redactController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactController.js","sourceRoot":"","sources":["../../src/redactController.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { Page } from '@playwright/test';
2
2
  import { type IEventRecorder, type ElementRect } from './events.js';
3
3
  import type { AutoZoomOptions, RecordOptions, RenderOptions } from './types.js';
4
4
  import type { ScreenshotCropRecord } from './crop.js';
5
+ import type { ResolvedRedactStyle } from './redactController.js';
5
6
  export type CurrentZoomViewport = {
6
7
  focusPoint: {
7
8
  x: number;
@@ -32,6 +33,13 @@ export type AutoZoomState = {
32
33
  mode: 'idle' | 'auto' | 'manual';
33
34
  options: AutoZoomOptions;
34
35
  currentZoomViewport: CurrentZoomViewport | null;
36
+ /**
37
+ * Vertical framing bias (0–1) applied when a plain interaction scrolls its
38
+ * target into view without zooming. Populated once at record init from
39
+ * `recordOptions.scrollCentering` (default `DEFAULT_SCROLL_CENTERING`). An
40
+ * explicit per-call `centering` still overrides this.
41
+ */
42
+ scrollCentering: number;
35
43
  };
36
44
  export type ActiveCueRun = {
37
45
  finished: Promise<void>;
@@ -113,6 +121,26 @@ export type ScreenCIRuntimeContext = {
113
121
  activeRuns: Map<string, ActiveAudioRun>;
114
122
  };
115
123
  autoZoom: AutoZoomState;
124
+ /**
125
+ * Tracks the recording's current display size (0-1 fraction of the frame; 1 =
126
+ * full screen) as toggled by `resizeRecording()`/`resetRecordingSize()`. Used
127
+ * to no-op a reset that is already at full screen and to detect redundant
128
+ * resizes. Resets to 1 with each fresh recording context.
129
+ */
130
+ recordingSize: {
131
+ current: number;
132
+ };
133
+ /**
134
+ * Client-side redaction state. `controllerInstalled` guards the one-time
135
+ * `addInitScript` install of the in-page mask controller; `activeMasks` maps
136
+ * each live mask id to its resolved style so masks can be cleaned up at the
137
+ * end of a recording. Redaction is purely client side, so nothing here is
138
+ * serialized to `data.json`.
139
+ */
140
+ redact: {
141
+ controllerInstalled: boolean;
142
+ activeMasks: Map<string, ResolvedRedactStyle>;
143
+ };
116
144
  };
117
145
  export declare function createScreenCIRuntimeContext(overrides?: {
118
146
  recorder?: IEventRecorder | null;
@@ -154,6 +182,8 @@ export declare function getRuntimeCrop(): ScreenshotCropRecord | undefined;
154
182
  export declare function resetCueRuntimeState(): void;
155
183
  export declare function resetAssetRuntimeState(): void;
156
184
  export declare function resetAudioRuntimeState(): void;
185
+ export declare function getRuntimeRedactState(): ScreenCIRuntimeContext['redact'];
186
+ export declare function resetRedactRuntimeState(): void;
157
187
  export declare function pushRuntimeTimelineBlock(block: TimelineBlockState): void;
158
188
  export declare function popRuntimeTimelineBlock(expectedType: TimelineBlockType): TimelineBlockState;
159
189
  export declare function hasRuntimeTimelineBlock(type: TimelineBlockType): boolean;
@@ -161,4 +191,6 @@ export declare function getRuntimeTimelineBlocks(): TimelineBlockState[];
161
191
  export declare function isRuntimeInsideHide(): boolean;
162
192
  export declare function getRuntimeAutoZoomState(): AutoZoomState;
163
193
  export declare function setRuntimeAutoZoomState(state: AutoZoomState): void;
194
+ export declare function getRuntimeRecordingSize(): number;
195
+ export declare function setRuntimeRecordingSize(size: number): void;
164
196
  //# sourceMappingURL=runtimeContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeContext.d.ts","sourceRoot":"","sources":["../../src/runtimeContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtimeContext.d.ts","sourceRoot":"","sources":["../../src/runtimeContext.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { AsyncLocalStorage } from 'async_hooks';
2
2
  import { NOOP_EVENT_RECORDER, } from './events.js';
3
+ import { DEFAULT_SCROLL_CENTERING } from './defaults.js';
3
4
  const runtimeContextStorage = new AsyncLocalStorage();
4
5
  const fallbackRuntimeContext = createScreenCIRuntimeContext();
5
6
  let activeRuntimeContext = null;
@@ -36,6 +37,12 @@ export function createScreenCIRuntimeContext(overrides = {}) {
36
37
  mode: 'idle',
37
38
  options: {},
38
39
  currentZoomViewport: null,
40
+ scrollCentering: overrides.recordOptions?.scrollCentering ?? DEFAULT_SCROLL_CENTERING,
41
+ },
42
+ recordingSize: { current: 1 },
43
+ redact: {
44
+ controllerInstalled: false,
45
+ activeMasks: new Map(),
39
46
  },
40
47
  };
41
48
  }
@@ -131,6 +138,14 @@ export function resetAudioRuntimeState() {
131
138
  const context = getScreenCIRuntimeContext();
132
139
  context.audio.activeRuns.clear();
133
140
  }
141
+ export function getRuntimeRedactState() {
142
+ return getScreenCIRuntimeContext().redact;
143
+ }
144
+ export function resetRedactRuntimeState() {
145
+ const context = getScreenCIRuntimeContext();
146
+ context.redact.controllerInstalled = false;
147
+ context.redact.activeMasks.clear();
148
+ }
134
149
  export function pushRuntimeTimelineBlock(block) {
135
150
  getScreenCIRuntimeContext().timelineBlocks.push(block);
136
151
  }
@@ -160,4 +175,10 @@ export function getRuntimeAutoZoomState() {
160
175
  export function setRuntimeAutoZoomState(state) {
161
176
  getScreenCIRuntimeContext().autoZoom = state;
162
177
  }
178
+ export function getRuntimeRecordingSize() {
179
+ return getScreenCIRuntimeContext().recordingSize.current;
180
+ }
181
+ export function setRuntimeRecordingSize(size) {
182
+ getScreenCIRuntimeContext().recordingSize.current = size;
183
+ }
163
184
  //# sourceMappingURL=runtimeContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeContext.js","sourceRoot":"","sources":["../../src/runtimeContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtimeContext.js","sourceRoot":"","sources":["../../src/runtimeContext.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,18 @@ import type { AspectRatio, FPS, Quality } from './types.js';
2
2
  export declare const SCREENCI_RECORDING_ENV = "SCREENCI_RECORDING";
3
3
  export declare const SCREENCI_MOCK_RECORD_ENV = "SCREENCI_MOCK_RECORD";
4
4
  export declare const SCREENCI_LANGUAGES_ENV = "SCREENCI_LANGUAGES";
5
- export declare const SCREENCI_TEXT_OVERRIDES_ENV = "SCREENCI_TEXT_OVERRIDES";
5
+ export declare const SCREENCI_VALUES_OVERRIDES_ENV = "SCREENCI_VALUES_OVERRIDES";
6
6
  export declare const SCREENCI_RECORD_OPTIONS_ENV = "SCREENCI_RECORD_OPTIONS";
7
7
  export declare const SCREENCI_DISABLE_RECORDING_TIMINGS_ENV = "SCREENCI_DISABLE_RECORDING_TIMINGS";
8
8
  export declare const SCREENCI_DEBUG_TIMING_ENV = "SCREENCI_DEBUG_TIMING";
9
+ export declare const SCREENCI_UPLOAD_EXISTING_ENV = "UPLOAD_EXISTING";
10
+ /**
11
+ * When set, `screenci record` skips the Playwright recording run entirely and
12
+ * re-uploads whatever is already on disk under `.screenci`. Useful for resending
13
+ * the most recent local recordings when only the upload failed, without paying
14
+ * to re-record. Internal/debug-only: not surfaced as a documented flag.
15
+ */
16
+ export declare function isUploadExistingEnabled(env?: NodeJS.ProcessEnv): boolean;
9
17
  /**
10
18
  * When set, screenci logs a per-phase timing breakdown for each interaction so
11
19
  * a slow recording can be traced to the phase responsible (snapshot, cursor
@@ -24,16 +32,16 @@ export declare function resolveRecordingTimingDuration(durationMs: number, env?:
24
32
  * languages so a run never records or renders more than was asked for.
25
33
  */
26
34
  export declare function parseRequestedLanguages(env?: NodeJS.ProcessEnv): string[] | null;
27
- /** Per-language text field overrides: `{ [language]: { [field]: value } }`. */
28
- export type TextOverrides = Record<string, Record<string, string>>;
35
+ /** Per-language values-field overrides: `{ [language]: { [field]: value } }`. */
36
+ export type ValuesOverrides = Record<string, Record<string, string>>;
29
37
  /**
30
- * Parse Studio text-field overrides injected for a re-record. Because the
38
+ * Parse Studio values-field overrides injected for a re-record. Because the
31
39
  * recording process never reaches the backend, Studio edits are passed in via
32
- * `SCREENCI_TEXT_OVERRIDES` (a JSON map of language -> field -> value), set by
40
+ * `SCREENCI_VALUES_OVERRIDES` (a JSON map of language -> field -> value), set by
33
41
  * the CLI from the backend before the recording runs. Returns `null` when unset
34
- * or malformed, so the `text` fixture falls back to the code-declared seed.
42
+ * or malformed, so the `values` fixture falls back to the code-declared seed.
35
43
  */
36
- export declare function parseTextOverrides(env?: NodeJS.ProcessEnv): TextOverrides | null;
44
+ export declare function parseValuesOverrides(env?: NodeJS.ProcessEnv): ValuesOverrides | null;
37
45
  /** Studio record-option overrides per video name: `{ [videoName]: {...} }`. */
38
46
  export type RecordOptionsOverrides = Record<string, {
39
47
  aspectRatio?: AspectRatio;
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeMode.d.ts","sourceRoot":"","sources":["../../src/runtimeMode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3D,eAAO,MAAM,sBAAsB,uBAAuB,CAAA;AAC1D,eAAO,MAAM,wBAAwB,yBAAyB,CAAA;AAC9D,eAAO,MAAM,sBAAsB,uBAAuB,CAAA;AAC1D,eAAO,MAAM,2BAA2B,4BAA4B,CAAA;AACpE,eAAO,MAAM,2BAA2B,4BAA4B,CAAA;AACpE,eAAO,MAAM,sCAAsC,uCACb,CAAA;AACtC,eAAO,MAAM,yBAAyB,0BAA0B,CAAA;AAEhE;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAKT;AAED,wBAAgB,0BAA0B,CACxC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAET;AAED,wBAAgB,2BAA2B,CACzC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAET;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAUT;AAED,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,EAAE,GAAG,IAAI,CAcjB;AAED,+EAA+E;AAC/E,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAElE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,aAAa,GAAG,IAAI,CAqBtB;AAED,+EAA+E;AAC/E,MAAM,MAAM,sBAAsB,GAAG,MAAM,CACzC,MAAM,EACN;IAAE,WAAW,CAAC,EAAE,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAA;CAAE,CAC5D,CAAA;AAcD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,sBAAsB,GAAG,IAAI,CA4B/B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,CAAC,SAAS;IAAE,WAAW,CAAC,EAAE,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAA;CAAE,EACrE,iBAAiB,EAAE,CAAC,EAAE,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,CAAC,CAU7E"}
1
+ {"version":3,"file":"runtimeMode.d.ts","sourceRoot":"","sources":["../../src/runtimeMode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3D,eAAO,MAAM,sBAAsB,uBAAuB,CAAA;AAC1D,eAAO,MAAM,wBAAwB,yBAAyB,CAAA;AAC9D,eAAO,MAAM,sBAAsB,uBAAuB,CAAA;AAC1D,eAAO,MAAM,6BAA6B,8BAA8B,CAAA;AACxE,eAAO,MAAM,2BAA2B,4BAA4B,CAAA;AACpE,eAAO,MAAM,sCAAsC,uCACb,CAAA;AACtC,eAAO,MAAM,yBAAyB,0BAA0B,CAAA;AAChE,eAAO,MAAM,4BAA4B,oBAAoB,CAAA;AAE7D;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAKT;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAKT;AAED,wBAAgB,0BAA0B,CACxC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAET;AAED,wBAAgB,2BAA2B,CACzC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAET;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAUT;AAED,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,EAAE,GAAG,IAAI,CAcjB;AAED,iFAAiF;AACjF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAEpE;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,eAAe,GAAG,IAAI,CAqBxB;AAED,+EAA+E;AAC/E,MAAM,MAAM,sBAAsB,GAAG,MAAM,CACzC,MAAM,EACN;IAAE,WAAW,CAAC,EAAE,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAA;CAAE,CAC5D,CAAA;AAcD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,sBAAsB,GAAG,IAAI,CA4B/B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,CAAC,SAAS;IAAE,WAAW,CAAC,EAAE,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAA;CAAE,EACrE,iBAAiB,EAAE,CAAC,EAAE,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,CAAC,CAU7E"}
@@ -1,10 +1,21 @@
1
1
  export const SCREENCI_RECORDING_ENV = 'SCREENCI_RECORDING';
2
2
  export const SCREENCI_MOCK_RECORD_ENV = 'SCREENCI_MOCK_RECORD';
3
3
  export const SCREENCI_LANGUAGES_ENV = 'SCREENCI_LANGUAGES';
4
- export const SCREENCI_TEXT_OVERRIDES_ENV = 'SCREENCI_TEXT_OVERRIDES';
4
+ export const SCREENCI_VALUES_OVERRIDES_ENV = 'SCREENCI_VALUES_OVERRIDES';
5
5
  export const SCREENCI_RECORD_OPTIONS_ENV = 'SCREENCI_RECORD_OPTIONS';
6
6
  export const SCREENCI_DISABLE_RECORDING_TIMINGS_ENV = 'SCREENCI_DISABLE_RECORDING_TIMINGS';
7
7
  export const SCREENCI_DEBUG_TIMING_ENV = 'SCREENCI_DEBUG_TIMING';
8
+ export const SCREENCI_UPLOAD_EXISTING_ENV = 'UPLOAD_EXISTING';
9
+ /**
10
+ * When set, `screenci record` skips the Playwright recording run entirely and
11
+ * re-uploads whatever is already on disk under `.screenci`. Useful for resending
12
+ * the most recent local recordings when only the upload failed, without paying
13
+ * to re-record. Internal/debug-only: not surfaced as a documented flag.
14
+ */
15
+ export function isUploadExistingEnabled(env = process.env) {
16
+ return (env[SCREENCI_UPLOAD_EXISTING_ENV] === 'true' ||
17
+ env[SCREENCI_UPLOAD_EXISTING_ENV] === '1');
18
+ }
8
19
  /**
9
20
  * When set, screenci logs a per-phase timing breakdown for each interaction so
10
21
  * a slow recording can be traced to the phase responsible (snapshot, cursor
@@ -55,14 +66,14 @@ export function parseRequestedLanguages(env = process.env) {
55
66
  return languages.length > 0 ? languages : null;
56
67
  }
57
68
  /**
58
- * Parse Studio text-field overrides injected for a re-record. Because the
69
+ * Parse Studio values-field overrides injected for a re-record. Because the
59
70
  * recording process never reaches the backend, Studio edits are passed in via
60
- * `SCREENCI_TEXT_OVERRIDES` (a JSON map of language -> field -> value), set by
71
+ * `SCREENCI_VALUES_OVERRIDES` (a JSON map of language -> field -> value), set by
61
72
  * the CLI from the backend before the recording runs. Returns `null` when unset
62
- * or malformed, so the `text` fixture falls back to the code-declared seed.
73
+ * or malformed, so the `values` fixture falls back to the code-declared seed.
63
74
  */
64
- export function parseTextOverrides(env = process.env) {
65
- const raw = env[SCREENCI_TEXT_OVERRIDES_ENV];
75
+ export function parseValuesOverrides(env = process.env) {
76
+ const raw = env[SCREENCI_VALUES_OVERRIDES_ENV];
66
77
  if (raw === undefined || raw.trim().length === 0)
67
78
  return null;
68
79
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeMode.js","sourceRoot":"","sources":["../../src/runtimeMode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtimeMode.js","sourceRoot":"","sources":["../../src/runtimeMode.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,46 @@
1
1
  import { spawn as nodeSpawn } from 'child_process';
2
2
  import { readFile as nodeReadFile } from 'fs/promises';
3
+ /** Probes whether an ffmpeg binary exposes a given input demuxer by name. */
4
+ export type FfmpegDemuxerProbe = (ffmpegPath: string, demuxer: string) => boolean;
5
+ /**
6
+ * Probes `ffmpeg -formats` for an input (demuxing) format by name. Results are
7
+ * memoised per binary+demuxer so resolving the capture binary once per video
8
+ * does not re-spawn ffmpeg. Returns `false` if the binary cannot be run.
9
+ */
10
+ export declare const defaultProbeDemuxerSupport: FfmpegDemuxerProbe;
11
+ /** @internal - injected in tests */
12
+ export type ResolveCaptureFfmpegDeps = {
13
+ env?: NodeJS.ProcessEnv;
14
+ platform?: NodeJS.Platform;
15
+ probeDemuxerSupport?: FfmpegDemuxerProbe;
16
+ };
17
+ /**
18
+ * Resolves the ffmpeg binary used for audio capture.
19
+ *
20
+ * `SCREENCI_FFMPEG_PATH` always wins. Otherwise the bundled `ffmpeg-static` is
21
+ * used, except on Linux when it lacks the `pulse` input demuxer: the static
22
+ * johnvansickle builds omit libpulse (it would be a runtime dependency), so
23
+ * capturing the per-worker PulseAudio/PipeWire monitor would fail with
24
+ * "Unknown input format: 'pulse'". In that case screenci falls back to a system
25
+ * `ffmpeg` on PATH when it provides the demuxer. The bundled binary cannot be
26
+ * bridged through its own `alsa` either: loading the host's ALSA pulse plugin
27
+ * into its bundled libasound crashes on an ABI mismatch.
28
+ */
29
+ export declare function resolveCaptureFfmpegPath(deps?: ResolveCaptureFfmpegDeps): string;
3
30
  export declare const SCREEN_AUDIO_DOCS_URL = "https://screenci.com/docs/guides/screen-audio";
4
31
  /**
5
32
  * Screen audio capture is supported on Linux only. macOS and Windows have no
6
33
  * way to route just the recording browser into an isolated capture device
7
34
  * without third-party tooling, so capturing there would either pick up every
8
- * app's sound or require muting the whole machine. On those platforms screenci
9
- * skips capture and warns instead of writing a misleading track.
35
+ * app's sound or require muting the whole machine. Because captureAudio promises
36
+ * isolated audio, screenci fails fast on those platforms instead of writing a
37
+ * misleading (or silent) track.
10
38
  */
11
39
  export declare function isScreenAudioSupported(platform?: NodeJS.Platform): boolean;
12
40
  /**
13
- * Warning shown (at run start and end) when audio capture is requested on a
14
- * platform where it is not supported. Returns `null` on supported platforms.
41
+ * Message used when audio capture is requested on a platform where it is not
42
+ * supported: an early heads-up warning at config load, and the error the
43
+ * recording fixture throws. Returns `null` on supported platforms.
15
44
  */
16
45
  export declare function screenAudioUnsupportedMessage(platform?: NodeJS.Platform): string | null;
17
46
  /** Sets (or clears with `null`) the capture device for this worker. */
@@ -45,6 +74,7 @@ export type ScreenAudioCapture = {
45
74
  export type ScreenAudioDeps = {
46
75
  spawn: typeof nodeSpawn;
47
76
  readFile: typeof nodeReadFile;
77
+ ffmpegPath?: string;
48
78
  };
49
79
  /**
50
80
  * Starts a background ffmpeg process that captures audio from the system's
@@ -1 +1 @@
1
- {"version":3,"file":"screenAudio.d.ts","sourceRoot":"","sources":["../../src/screenAudio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,eAAe,CAAA;AAElD,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,aAAa,CAAA;AAEtD,eAAO,MAAM,qBAAqB,kDACe,CAAA;AAEjD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,GAAG,IAAI,CASf;AAWD,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAElE;AAED,gBAAgB;AAChB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,4DAA4D;IAC5D,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,MAAM,GAAE,MAAM,GAAG,IAA0B,GAC1C,iBAAiB,CAuBnB;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAAA;CAC1C,CAAA;AAED,oCAAoC;AACpC,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,OAAO,SAAS,CAAA;IACvB,QAAQ,EAAE,OAAO,YAAY,CAAA;CAC9B,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,eAA8D,GACnE,kBAAkB,CA+EpB"}
1
+ {"version":3,"file":"screenAudio.d.ts","sourceRoot":"","sources":["../../src/screenAudio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAA8B,MAAM,eAAe,CAAA;AAE9E,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,aAAa,CAAA;AAKtD,6EAA6E;AAC7E,MAAM,MAAM,kBAAkB,GAAG,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAA;AAIZ;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,kBAgCxC,CAAA;AAED,oCAAoC;AACpC,MAAM,MAAM,wBAAwB,GAAG;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;IAC1B,mBAAmB,CAAC,EAAE,kBAAkB,CAAA;CACzC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,GAAE,wBAA6B,GAClC,MAAM,CAmBR;AAED,eAAO,MAAM,qBAAqB,kDACe,CAAA;AAEjD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,OAAO,CAET;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,GAAG,IAAI,CASf;AAWD,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAElE;AAED,gBAAgB;AAChB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,4DAA4D;IAC5D,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,MAAM,GAAE,MAAM,GAAG,IAA0B,GAC1C,iBAAiB,CAuBnB;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAAA;CAC1C,CAAA;AAED,oCAAoC;AACpC,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,OAAO,SAAS,CAAA;IACvB,QAAQ,EAAE,OAAO,YAAY,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,eAA8D,GACnE,kBAAkB,CA+FpB"}
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"screenAudio.js","sourceRoot":"","sources":["../../src/screenAudio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screenAudio.js","sourceRoot":"","sources":["../../src/screenAudio.ts"],"names":[],"mappings":"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"}