screenci 0.0.76 → 0.0.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.d.ts +58 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +584 -200
- package/dist/cli.js.map +1 -1
- package/dist/docs/manifest.d.ts +253 -98
- package/dist/docs/manifest.d.ts.map +1 -1
- package/dist/docs/manifest.js +92 -32
- package/dist/docs/manifest.js.map +1 -1
- package/dist/docs/video-sources/camera-and-zooming.screenci.d.ts +2 -0
- package/dist/docs/video-sources/camera-and-zooming.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/camera-and-zooming.screenci.js +57 -0
- package/dist/docs/video-sources/camera-and-zooming.screenci.js.map +1 -0
- package/dist/docs/video-sources/installation.screenci.js +9 -6
- package/dist/docs/video-sources/installation.screenci.js.map +1 -1
- package/dist/docs/video-sources/languages.screenci.d.ts +2 -0
- package/dist/docs/video-sources/languages.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/languages.screenci.js +68 -0
- package/dist/docs/video-sources/languages.screenci.js.map +1 -0
- package/dist/docs/video-sources/locator-highlight-animated.screenci.js +1 -1
- package/dist/docs/video-sources/locator-highlight-animated.screenci.js.map +1 -1
- package/dist/docs/video-sources/narration.screenci.d.ts +2 -0
- package/dist/docs/video-sources/narration.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/narration.screenci.js +71 -0
- package/dist/docs/video-sources/narration.screenci.js.map +1 -0
- package/dist/docs/video-sources/public-urls-and-embeds.screenci.d.ts +2 -0
- package/dist/docs/video-sources/public-urls-and-embeds.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/public-urls-and-embeds.screenci.js +60 -0
- package/dist/docs/video-sources/public-urls-and-embeds.screenci.js.map +1 -0
- package/dist/docs/video-sources/speaking-style.screenci.d.ts +2 -0
- package/dist/docs/video-sources/speaking-style.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/speaking-style.screenci.js +76 -0
- package/dist/docs/video-sources/speaking-style.screenci.js.map +1 -0
- package/dist/docs/video-sources/vertical-video.screenci.d.ts +2 -0
- package/dist/docs/video-sources/vertical-video.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/vertical-video.screenci.js +58 -0
- package/dist/docs/video-sources/vertical-video.screenci.js.map +1 -0
- package/dist/docs/videos.d.ts +20 -0
- package/dist/docs/videos.d.ts.map +1 -1
- package/dist/docs/videos.js +25 -0
- package/dist/docs/videos.js.map +1 -1
- package/dist/e2e/instrument.e2e.js +8 -0
- package/dist/e2e/instrument.e2e.js.map +1 -1
- package/dist/e2e/redact.e2e.d.ts +2 -0
- package/dist/e2e/redact.e2e.d.ts.map +1 -0
- package/dist/e2e/redact.e2e.js +161 -0
- package/dist/e2e/redact.e2e.js.map +1 -0
- package/dist/index.d.ts +10 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/src/asset.d.ts +154 -13
- package/dist/src/asset.d.ts.map +1 -1
- package/dist/src/asset.js +262 -32
- package/dist/src/asset.js.map +1 -1
- package/dist/src/assetHash.d.ts +27 -0
- package/dist/src/assetHash.d.ts.map +1 -0
- package/dist/src/assetHash.js +0 -0
- package/dist/src/assetHash.js.map +1 -0
- package/dist/src/audio.d.ts +8 -5
- package/dist/src/audio.d.ts.map +1 -1
- package/dist/src/audio.js +56 -31
- package/dist/src/audio.js.map +1 -1
- package/dist/src/builder.d.ts +132 -32
- package/dist/src/builder.d.ts.map +1 -1
- package/dist/src/builder.js +66 -20
- package/dist/src/builder.js.map +1 -1
- package/dist/src/changeFocus.d.ts.map +1 -1
- package/dist/src/changeFocus.js +103 -34
- package/dist/src/changeFocus.js.map +1 -1
- package/dist/src/cue.d.ts +29 -17
- package/dist/src/cue.d.ts.map +1 -1
- package/dist/src/cue.js +138 -61
- package/dist/src/cue.js.map +1 -1
- package/dist/src/declare.d.ts +8 -4
- package/dist/src/declare.d.ts.map +1 -1
- package/dist/src/declare.js +28 -10
- package/dist/src/declare.js.map +1 -1
- package/dist/src/defaults.d.ts +23 -0
- package/dist/src/defaults.d.ts.map +1 -1
- package/dist/src/defaults.js +23 -0
- package/dist/src/defaults.js.map +1 -1
- package/dist/src/events.d.ts +289 -25
- package/dist/src/events.d.ts.map +1 -1
- package/dist/src/events.js +145 -13
- package/dist/src/events.js.map +1 -1
- package/dist/src/htmlRasterizer.d.ts +10 -0
- package/dist/src/htmlRasterizer.d.ts.map +1 -1
- package/dist/src/htmlRasterizer.js +12 -2
- package/dist/src/htmlRasterizer.js.map +1 -1
- package/dist/src/init.d.ts +2 -0
- package/dist/src/init.d.ts.map +1 -1
- package/dist/src/init.js +60 -28
- package/dist/src/init.js.map +1 -1
- package/dist/src/instrument.d.ts.map +1 -1
- package/dist/src/instrument.js +25 -7
- package/dist/src/instrument.js.map +1 -1
- package/dist/src/locales.d.ts.map +1 -1
- package/dist/src/locales.js +1 -0
- package/dist/src/locales.js.map +1 -1
- package/dist/src/localize.d.ts +25 -17
- package/dist/src/localize.d.ts.map +1 -1
- package/dist/src/localize.js +18 -10
- package/dist/src/localize.js.map +1 -1
- package/dist/src/localizeRuntime.d.ts +18 -13
- package/dist/src/localizeRuntime.d.ts.map +1 -1
- package/dist/src/localizeRuntime.js +28 -18
- package/dist/src/localizeRuntime.js.map +1 -1
- package/dist/src/logger.d.ts +5 -0
- package/dist/src/logger.d.ts.map +1 -1
- package/dist/src/logger.js +7 -0
- package/dist/src/logger.js.map +1 -1
- package/dist/src/narrationVisibility.d.ts +19 -0
- package/dist/src/narrationVisibility.d.ts.map +1 -0
- package/dist/src/narrationVisibility.js +26 -0
- package/dist/src/narrationVisibility.js.map +1 -0
- package/dist/src/recordingData.d.ts +7 -0
- package/dist/src/recordingData.d.ts.map +1 -1
- package/dist/src/recordingSize.d.ts +32 -0
- package/dist/src/recordingSize.d.ts.map +1 -0
- package/dist/src/recordingSize.js +54 -0
- package/dist/src/recordingSize.js.map +1 -0
- package/dist/src/redact.d.ts +68 -0
- package/dist/src/redact.d.ts.map +1 -0
- package/dist/src/redact.js +138 -0
- package/dist/src/redact.js.map +1 -0
- package/dist/src/redactController.d.ts +61 -0
- package/dist/src/redactController.d.ts.map +1 -0
- package/dist/src/redactController.js +232 -0
- package/dist/src/redactController.js.map +1 -0
- package/dist/src/runtimeContext.d.ts +32 -0
- package/dist/src/runtimeContext.d.ts.map +1 -1
- package/dist/src/runtimeContext.js +21 -0
- package/dist/src/runtimeContext.js.map +1 -1
- package/dist/src/runtimeMode.d.ts +15 -7
- package/dist/src/runtimeMode.d.ts.map +1 -1
- package/dist/src/runtimeMode.js +17 -6
- package/dist/src/runtimeMode.js.map +1 -1
- package/dist/src/screenAudio.d.ts +34 -4
- package/dist/src/screenAudio.d.ts.map +1 -1
- package/dist/src/screenAudio.js +0 -0
- package/dist/src/screenAudio.js.map +1 -1
- package/dist/src/screenAudioSink.d.ts +12 -0
- package/dist/src/screenAudioSink.d.ts.map +1 -1
- package/dist/src/screenAudioSink.js +30 -0
- package/dist/src/screenAudioSink.js.map +1 -1
- package/dist/src/screenshot.d.ts +16 -14
- package/dist/src/screenshot.d.ts.map +1 -1
- package/dist/src/screenshot.js +11 -11
- package/dist/src/screenshot.js.map +1 -1
- package/dist/src/sourceTrim.d.ts +29 -0
- package/dist/src/sourceTrim.d.ts.map +1 -0
- package/dist/src/sourceTrim.js +76 -0
- package/dist/src/sourceTrim.js.map +1 -0
- package/dist/src/studio.d.ts +71 -3
- package/dist/src/studio.d.ts.map +1 -1
- package/dist/src/studio.js +19 -1
- package/dist/src/studio.js.map +1 -1
- package/dist/src/timelineOffset.d.ts +46 -0
- package/dist/src/timelineOffset.d.ts.map +1 -0
- package/dist/src/timelineOffset.js +66 -0
- package/dist/src/timelineOffset.js.map +1 -0
- package/dist/src/titleValidation.d.ts +38 -0
- package/dist/src/titleValidation.d.ts.map +1 -1
- package/dist/src/titleValidation.js +42 -0
- package/dist/src/titleValidation.js.map +1 -1
- package/dist/src/types.d.ts +85 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/video.d.ts +37 -34
- package/dist/src/video.d.ts.map +1 -1
- package/dist/src/video.js +99 -48
- package/dist/src/video.js.map +1 -1
- package/dist/src/voiceSampleAudio.d.ts +34 -0
- package/dist/src/voiceSampleAudio.d.ts.map +1 -0
- package/dist/src/voiceSampleAudio.js +105 -0
- package/dist/src/voiceSampleAudio.js.map +1 -0
- package/dist/src/voices.d.ts +2 -2
- package/dist/src/voices.d.ts.map +1 -1
- package/dist/src/voices.js +8 -3
- package/dist/src/voices.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -2
- package/templates/recordings/assets/logo.png +0 -0
|
@@ -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":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;
|
|
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":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,OAAO,EACL,mBAAmB,GAGpB,MAAM,aAAa,CAAA;
|
|
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
|
|
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
|
|
28
|
-
export type
|
|
35
|
+
/** Per-language values-field overrides: `{ [language]: { [field]: value } }`. */
|
|
36
|
+
export type ValuesOverrides = Record<string, Record<string, string>>;
|
|
29
37
|
/**
|
|
30
|
-
* Parse Studio
|
|
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
|
-
* `
|
|
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 `
|
|
42
|
+
* or malformed, so the `values` fixture falls back to the code-declared seed.
|
|
35
43
|
*/
|
|
36
|
-
export declare function
|
|
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,
|
|
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"}
|
package/dist/src/runtimeMode.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
-
* `
|
|
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 `
|
|
73
|
+
* or malformed, so the `values` fixture falls back to the code-declared seed.
|
|
63
74
|
*/
|
|
64
|
-
export function
|
|
65
|
-
const raw = 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":"AAEA,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAA;AAC1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAA;AAC9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAA;AAC1D,MAAM,CAAC,MAAM,
|
|
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.
|
|
9
|
-
*
|
|
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
|
-
*
|
|
14
|
-
*
|
|
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,
|
|
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"}
|
package/dist/src/screenAudio.js
CHANGED
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenAudio.js","sourceRoot":"","sources":["../../src/screenAudio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"screenAudio.js","sourceRoot":"","sources":["../../src/screenAudio.ts"],"names":[],"mappings":"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"}
|