@argo-video/cli 0.4.3 → 0.6.0
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 +33 -11
- package/dist/camera.d.ts +29 -0
- package/dist/camera.d.ts.map +1 -0
- package/dist/camera.js +237 -0
- package/dist/camera.js.map +1 -0
- package/dist/chapters.d.ts +7 -0
- package/dist/chapters.d.ts.map +1 -0
- package/dist/chapters.js +22 -0
- package/dist/chapters.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +38 -4
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/export.d.ts +2 -0
- package/dist/export.d.ts.map +1 -1
- package/dist/export.js +16 -5
- package/dist/export.js.map +1 -1
- package/dist/fixtures.d.ts +5 -1
- package/dist/fixtures.d.ts.map +1 -1
- package/dist/fixtures.js +5 -2
- package/dist/fixtures.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +48 -13
- package/dist/init.js.map +1 -1
- package/dist/overlays/index.d.ts.map +1 -1
- package/dist/overlays/index.js +9 -2
- package/dist/overlays/index.js.map +1 -1
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +39 -6
- package/dist/pipeline.js.map +1 -1
- package/dist/record.d.ts +1 -0
- package/dist/record.d.ts.map +1 -1
- package/dist/record.js +1 -0
- package/dist/record.js.map +1 -1
- package/dist/report.d.ts +16 -0
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +33 -0
- package/dist/report.js.map +1 -0
- package/dist/subtitles.d.ts +4 -0
- package/dist/subtitles.d.ts.map +1 -0
- package/dist/subtitles.js +34 -0
- package/dist/subtitles.js.map +1 -0
- package/dist/tts/generate.d.ts.map +1 -1
- package/dist/tts/generate.js +20 -16
- package/dist/tts/generate.js.map +1 -1
- package/dist/tts/kokoro.d.ts +1 -0
- package/dist/tts/kokoro.d.ts.map +1 -1
- package/dist/tts/kokoro.js +21 -13
- package/dist/tts/kokoro.js.map +1 -1
- package/dist/validate.d.ts +10 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +103 -0
- package/dist/validate.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -116,17 +116,27 @@ Each `scene` in the manifest maps to a `narration.mark()` call in the script. Ar
|
|
|
116
116
|
|
|
117
117
|
## Configuration
|
|
118
118
|
|
|
119
|
-
### `argo.config.
|
|
119
|
+
### `argo.config.mjs`
|
|
120
120
|
|
|
121
121
|
```js
|
|
122
|
-
|
|
122
|
+
import { defineConfig } from '@argo-video/cli';
|
|
123
|
+
|
|
124
|
+
export default defineConfig({
|
|
123
125
|
baseURL: 'http://localhost:3000',
|
|
124
|
-
demosDir: 'demos
|
|
125
|
-
outputDir: 'videos
|
|
126
|
+
demosDir: 'demos',
|
|
127
|
+
outputDir: 'videos',
|
|
126
128
|
tts: { defaultVoice: 'af_heart', defaultSpeed: 1.0 },
|
|
127
|
-
video: {
|
|
128
|
-
|
|
129
|
-
|
|
129
|
+
video: {
|
|
130
|
+
width: 1920, height: 1080, fps: 30,
|
|
131
|
+
browser: 'webkit', // webkit > firefox > chromium on macOS
|
|
132
|
+
// deviceScaleFactor: 2, // enable after webkit 2x fix
|
|
133
|
+
},
|
|
134
|
+
export: { preset: 'slow', crf: 16 },
|
|
135
|
+
overlays: {
|
|
136
|
+
autoBackground: true,
|
|
137
|
+
// defaultPlacement: 'top-right',
|
|
138
|
+
},
|
|
139
|
+
});
|
|
130
140
|
```
|
|
131
141
|
|
|
132
142
|
> **Tip:** Use `browser: 'webkit'` for sharper video on macOS. Chromium has a [known video capture quality issue](https://github.com/microsoft/playwright/issues/31424). Set `deviceScaleFactor: 2` for retina-quality recordings (captured at 2x, downscaled with lanczos in export).
|
|
@@ -137,7 +147,7 @@ Argo scaffolds this for you via `argo init`. The key settings:
|
|
|
137
147
|
|
|
138
148
|
```ts
|
|
139
149
|
import { defineConfig } from '@playwright/test';
|
|
140
|
-
import config from './argo.config.
|
|
150
|
+
import config from './argo.config.mjs';
|
|
141
151
|
|
|
142
152
|
const scale = Math.max(1, Math.round(config.video?.deviceScaleFactor ?? 1));
|
|
143
153
|
const width = config.video?.width ?? 1920;
|
|
@@ -168,10 +178,12 @@ argo record <demo> Record browser session
|
|
|
168
178
|
argo tts generate <manifest> Generate TTS clips from manifest
|
|
169
179
|
argo export <demo> Merge video + audio to MP4
|
|
170
180
|
argo pipeline <demo> Run all steps end-to-end
|
|
181
|
+
argo validate <demo> Check scene name consistency (no TTS/recording)
|
|
171
182
|
argo --config <path> <command> Use a custom config file
|
|
172
183
|
|
|
173
184
|
Options:
|
|
174
185
|
--browser <engine> chromium | webkit | firefox (overrides config)
|
|
186
|
+
--base-url <url> Override baseURL from config
|
|
175
187
|
```
|
|
176
188
|
|
|
177
189
|
## API
|
|
@@ -190,7 +202,7 @@ import { defineConfig, demosProject } from '@argo-video/cli';
|
|
|
190
202
|
|--------|-------------|
|
|
191
203
|
| `test` | Playwright `test` with `narration` fixture injected |
|
|
192
204
|
| `expect` | Re-exported from Playwright |
|
|
193
|
-
| `demoType(page,
|
|
205
|
+
| `demoType(page, selectorOrLocator, text, delay?)` | Type character-by-character — accepts CSS selector or Playwright Locator |
|
|
194
206
|
| `showOverlay(page, scene, cue, durationMs)` | Show a templated overlay (lower-third, headline-card, callout, image-card) |
|
|
195
207
|
| `withOverlay(page, scene, cue, action)` | Show overlay during an async action |
|
|
196
208
|
| `hideOverlay(page, zone?)` | Remove overlay from a zone |
|
|
@@ -218,13 +230,23 @@ choco install ffmpeg # Windows
|
|
|
218
230
|
|
|
219
231
|
## How the pipeline works
|
|
220
232
|
|
|
221
|
-
1. **TTS** — Kokoro (via `kokoro-js`) generates WAV clips from the voiceover manifest. Clips are cached by content hash in `.argo/<demo>/clips/` so regeneration is instant if text hasn't changed.
|
|
233
|
+
1. **TTS** — Kokoro (via `kokoro-js`) generates WAV clips from the voiceover manifest. Clips are cached by content hash in `.argo/<demo>/clips/` so regeneration is instant if text hasn't changed. Uncached clips generate in parallel.
|
|
222
234
|
|
|
223
235
|
2. **Record** — Playwright runs the demo script in a real browser. The `narration` fixture records timestamps for each `mark()` call. Video is captured at native resolution.
|
|
224
236
|
|
|
225
237
|
3. **Align** — Each TTS clip is placed at its scene's recorded timestamp. Overlapping clips are pushed forward with a 100ms gap. All clips are mixed into a single `narration-aligned.wav`.
|
|
226
238
|
|
|
227
|
-
4. **Export** — ffmpeg combines the screen recording (WebM) with the aligned narration (WAV) into an H.264 MP4.
|
|
239
|
+
4. **Export** — ffmpeg combines the screen recording (WebM) with the aligned narration (WAV) into an H.264 MP4 with chapter markers. Subtitle files (`.srt` + `.vtt`) and a scene report are generated alongside the video.
|
|
240
|
+
|
|
241
|
+
## Example
|
|
242
|
+
|
|
243
|
+
A self-contained example is in [`example/`](example/) — it records a demo of Argo's own showcase page:
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
cd example && npm install && npx playwright install webkit
|
|
247
|
+
npm run serve # in one terminal
|
|
248
|
+
npm run demo # in another
|
|
249
|
+
```
|
|
228
250
|
|
|
229
251
|
## LLM Skill
|
|
230
252
|
|
package/dist/camera.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Page } from '@playwright/test';
|
|
2
|
+
interface CameraOptions {
|
|
3
|
+
duration?: number;
|
|
4
|
+
fadeIn?: number;
|
|
5
|
+
fadeOut?: number;
|
|
6
|
+
wait?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface SpotlightOptions extends CameraOptions {
|
|
9
|
+
opacity?: number;
|
|
10
|
+
padding?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface FocusRingOptions extends CameraOptions {
|
|
13
|
+
color?: string;
|
|
14
|
+
width?: number;
|
|
15
|
+
pulse?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface DimAroundOptions extends CameraOptions {
|
|
18
|
+
dimOpacity?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface ZoomToOptions extends CameraOptions {
|
|
21
|
+
scale?: number;
|
|
22
|
+
}
|
|
23
|
+
export declare function spotlight(page: Page, selector: string, opts?: SpotlightOptions): Promise<void>;
|
|
24
|
+
export declare function focusRing(page: Page, selector: string, opts?: FocusRingOptions): Promise<void>;
|
|
25
|
+
export declare function dimAround(page: Page, selector: string, opts?: DimAroundOptions): Promise<void>;
|
|
26
|
+
export declare function zoomTo(page: Page, selector: string, opts?: ZoomToOptions): Promise<void>;
|
|
27
|
+
export declare function resetCamera(page: Page): Promise<void>;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=camera.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../src/camera.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAI7C,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAsBD,wBAAsB,SAAS,CAC7B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,IAAI,CAAC,CAqCf;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,IAAI,CAAC,CAkDf;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,IAAI,CAAC,CAyDf;AAED,wBAAsB,MAAM,CAC1B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,aAAa,GACnB,OAAO,CAAC,IAAI,CAAC,CA8Df;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB3D"}
|
package/dist/camera.js
ADDED
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
const CAMERA_ATTR = 'data-argo-camera';
|
|
2
|
+
async function runCameraEffect(page, fn, args, totalMs, wait) {
|
|
3
|
+
try {
|
|
4
|
+
await page.evaluate(fn, args);
|
|
5
|
+
if (wait) {
|
|
6
|
+
await page.waitForTimeout(totalMs);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
catch (err) {
|
|
10
|
+
const msg = err?.message ?? '';
|
|
11
|
+
if (!msg.includes('Target closed') && !msg.includes('destroyed') && !msg.includes('closed') && !msg.includes('disposed')) {
|
|
12
|
+
console.warn(`Warning: camera effect failed: ${msg}`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export async function spotlight(page, selector, opts) {
|
|
17
|
+
const duration = opts?.duration ?? 3000;
|
|
18
|
+
const fadeIn = opts?.fadeIn ?? 400;
|
|
19
|
+
const fadeOut = opts?.fadeOut ?? 400;
|
|
20
|
+
const opacity = opts?.opacity ?? 0.7;
|
|
21
|
+
const padding = opts?.padding ?? 12;
|
|
22
|
+
const wait = opts?.wait ?? false;
|
|
23
|
+
await runCameraEffect(page, ({ selector, duration, fadeIn, fadeOut, opacity, padding, attr }) => {
|
|
24
|
+
const target = document.querySelector(selector);
|
|
25
|
+
if (!target)
|
|
26
|
+
return;
|
|
27
|
+
const rect = target.getBoundingClientRect();
|
|
28
|
+
const overlay = document.createElement('div');
|
|
29
|
+
overlay.setAttribute(attr, 'spotlight');
|
|
30
|
+
overlay.style.cssText = `
|
|
31
|
+
position: fixed; inset: 0; z-index: 99990; pointer-events: none;
|
|
32
|
+
background: rgba(0,0,0,${opacity});
|
|
33
|
+
clip-path: polygon(
|
|
34
|
+
0% 0%, 0% 100%, 100% 100%, 100% 0%, 0% 0%,
|
|
35
|
+
${rect.left - padding}px ${rect.top - padding}px,
|
|
36
|
+
${rect.left - padding}px ${rect.bottom + padding}px,
|
|
37
|
+
${rect.right + padding}px ${rect.bottom + padding}px,
|
|
38
|
+
${rect.right + padding}px ${rect.top - padding}px,
|
|
39
|
+
${rect.left - padding}px ${rect.top - padding}px
|
|
40
|
+
);
|
|
41
|
+
opacity: 0; transition: opacity ${fadeIn}ms ease-out;
|
|
42
|
+
`;
|
|
43
|
+
document.body.appendChild(overlay);
|
|
44
|
+
requestAnimationFrame(() => { overlay.style.opacity = '1'; });
|
|
45
|
+
setTimeout(() => {
|
|
46
|
+
overlay.style.transition = `opacity ${fadeOut}ms ease-out`;
|
|
47
|
+
overlay.style.opacity = '0';
|
|
48
|
+
setTimeout(() => overlay.remove(), fadeOut);
|
|
49
|
+
}, duration);
|
|
50
|
+
}, { selector, duration, fadeIn, fadeOut, opacity, padding, attr: CAMERA_ATTR }, duration + fadeOut, wait);
|
|
51
|
+
}
|
|
52
|
+
export async function focusRing(page, selector, opts) {
|
|
53
|
+
const duration = opts?.duration ?? 3000;
|
|
54
|
+
const fadeIn = opts?.fadeIn ?? 400;
|
|
55
|
+
const fadeOut = opts?.fadeOut ?? 400;
|
|
56
|
+
const color = opts?.color ?? '#3b82f6';
|
|
57
|
+
const ringWidth = opts?.width ?? 3;
|
|
58
|
+
const pulse = opts?.pulse ?? true;
|
|
59
|
+
const wait = opts?.wait ?? false;
|
|
60
|
+
await runCameraEffect(page, ({ selector, duration, fadeIn, fadeOut, color, ringWidth, pulse, attr }) => {
|
|
61
|
+
const target = document.querySelector(selector);
|
|
62
|
+
if (!target)
|
|
63
|
+
return;
|
|
64
|
+
const rect = target.getBoundingClientRect();
|
|
65
|
+
// Inject pulse animation if needed
|
|
66
|
+
if (pulse) {
|
|
67
|
+
const style = document.createElement('style');
|
|
68
|
+
style.setAttribute(attr, 'focus-ring-style');
|
|
69
|
+
style.textContent = `
|
|
70
|
+
@keyframes argo-focus-pulse {
|
|
71
|
+
0%, 100% { box-shadow: 0 0 0 ${ringWidth}px ${color}66, 0 0 0 ${ringWidth * 2}px ${color}26; }
|
|
72
|
+
50% { box-shadow: 0 0 0 ${ringWidth + 1}px ${color}99, 0 0 0 ${ringWidth * 2 + 2}px ${color}40, 0 0 20px ${color}4d; }
|
|
73
|
+
}
|
|
74
|
+
`;
|
|
75
|
+
document.head.appendChild(style);
|
|
76
|
+
}
|
|
77
|
+
const ring = document.createElement('div');
|
|
78
|
+
ring.setAttribute(attr, 'focus-ring');
|
|
79
|
+
ring.style.cssText = `
|
|
80
|
+
position: fixed; z-index: 99990; pointer-events: none;
|
|
81
|
+
left: ${rect.left - ringWidth}px; top: ${rect.top - ringWidth}px;
|
|
82
|
+
width: ${rect.width + ringWidth * 2}px; height: ${rect.height + ringWidth * 2}px;
|
|
83
|
+
border-radius: ${Math.min(8, parseInt(getComputedStyle(target).borderRadius) || 0) + ringWidth}px;
|
|
84
|
+
box-shadow: 0 0 0 ${ringWidth}px ${color}66, 0 0 0 ${ringWidth * 2}px ${color}26;
|
|
85
|
+
${pulse ? 'animation: argo-focus-pulse 1.5s ease-in-out infinite;' : ''}
|
|
86
|
+
opacity: 0; transition: opacity ${fadeIn}ms ease-out;
|
|
87
|
+
`;
|
|
88
|
+
document.body.appendChild(ring);
|
|
89
|
+
requestAnimationFrame(() => { ring.style.opacity = '1'; });
|
|
90
|
+
setTimeout(() => {
|
|
91
|
+
ring.style.transition = `opacity ${fadeOut}ms ease-out`;
|
|
92
|
+
ring.style.opacity = '0';
|
|
93
|
+
setTimeout(() => {
|
|
94
|
+
ring.remove();
|
|
95
|
+
document.querySelectorAll(`[${attr}="focus-ring-style"]`).forEach(el => el.remove());
|
|
96
|
+
}, fadeOut);
|
|
97
|
+
}, duration);
|
|
98
|
+
}, { selector, duration, fadeIn, fadeOut, color, ringWidth, pulse, attr: CAMERA_ATTR }, duration + fadeOut, wait);
|
|
99
|
+
}
|
|
100
|
+
export async function dimAround(page, selector, opts) {
|
|
101
|
+
const duration = opts?.duration ?? 3000;
|
|
102
|
+
const fadeIn = opts?.fadeIn ?? 400;
|
|
103
|
+
const fadeOut = opts?.fadeOut ?? 400;
|
|
104
|
+
const dimOpacity = opts?.dimOpacity ?? 0.3;
|
|
105
|
+
const wait = opts?.wait ?? false;
|
|
106
|
+
await runCameraEffect(page, ({ selector, duration, fadeIn, fadeOut, dimOpacity, attr }) => {
|
|
107
|
+
const target = document.querySelector(selector);
|
|
108
|
+
if (!target)
|
|
109
|
+
return;
|
|
110
|
+
// Find siblings to dim — walk up to a reasonable container
|
|
111
|
+
const parent = target.parentElement;
|
|
112
|
+
if (!parent)
|
|
113
|
+
return;
|
|
114
|
+
const siblings = Array.from(parent.children).filter(child => child !== target);
|
|
115
|
+
const originals = siblings.map(s => ({
|
|
116
|
+
el: s,
|
|
117
|
+
opacity: s.style.opacity,
|
|
118
|
+
transition: s.style.transition,
|
|
119
|
+
}));
|
|
120
|
+
// Mark for cleanup
|
|
121
|
+
const marker = document.createElement('div');
|
|
122
|
+
marker.setAttribute(attr, 'dim-around');
|
|
123
|
+
marker.style.display = 'none';
|
|
124
|
+
marker.__dimRestore = () => {
|
|
125
|
+
originals.forEach(({ el, opacity, transition }) => {
|
|
126
|
+
el.style.opacity = opacity;
|
|
127
|
+
el.style.transition = transition;
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
document.body.appendChild(marker);
|
|
131
|
+
// Apply dim
|
|
132
|
+
siblings.forEach(s => {
|
|
133
|
+
s.style.transition = `opacity ${fadeIn}ms ease-out`;
|
|
134
|
+
s.style.opacity = String(dimOpacity);
|
|
135
|
+
});
|
|
136
|
+
setTimeout(() => {
|
|
137
|
+
siblings.forEach(s => {
|
|
138
|
+
s.style.transition = `opacity ${fadeOut}ms ease-out`;
|
|
139
|
+
});
|
|
140
|
+
originals.forEach(({ el, opacity }) => {
|
|
141
|
+
el.style.opacity = opacity || '';
|
|
142
|
+
});
|
|
143
|
+
// Fully restore original styles after fade-out completes
|
|
144
|
+
setTimeout(() => {
|
|
145
|
+
originals.forEach(({ el, opacity, transition }) => {
|
|
146
|
+
el.style.opacity = opacity;
|
|
147
|
+
el.style.transition = transition;
|
|
148
|
+
});
|
|
149
|
+
marker.remove();
|
|
150
|
+
}, fadeOut);
|
|
151
|
+
}, duration);
|
|
152
|
+
}, { selector, duration, fadeIn, fadeOut, dimOpacity, attr: CAMERA_ATTR }, duration + fadeOut, wait);
|
|
153
|
+
}
|
|
154
|
+
export async function zoomTo(page, selector, opts) {
|
|
155
|
+
const duration = opts?.duration ?? 3000;
|
|
156
|
+
const fadeIn = opts?.fadeIn ?? 400;
|
|
157
|
+
const fadeOut = opts?.fadeOut ?? 400;
|
|
158
|
+
const scale = opts?.scale ?? 1.5;
|
|
159
|
+
const wait = opts?.wait ?? false;
|
|
160
|
+
await runCameraEffect(page, ({ selector, duration, fadeIn, fadeOut, scale, attr }) => {
|
|
161
|
+
const target = document.querySelector(selector);
|
|
162
|
+
if (!target)
|
|
163
|
+
return;
|
|
164
|
+
const rect = target.getBoundingClientRect();
|
|
165
|
+
// Wrap page content in a zoom container so Argo overlays (which are
|
|
166
|
+
// direct children of body with position:fixed) are NOT affected.
|
|
167
|
+
const WRAPPER_ID = 'argo-zoom-wrapper';
|
|
168
|
+
let wrapper = document.getElementById(WRAPPER_ID);
|
|
169
|
+
if (!wrapper) {
|
|
170
|
+
wrapper = document.createElement('div');
|
|
171
|
+
wrapper.id = WRAPPER_ID;
|
|
172
|
+
wrapper.style.cssText = 'transform-origin: 0 0; will-change: transform;';
|
|
173
|
+
// Move all body children except Argo elements into the wrapper
|
|
174
|
+
const children = Array.from(document.body.children).filter(c => !c.hasAttribute(attr) && !c.id?.startsWith('argo-zone-') && c.id !== WRAPPER_ID);
|
|
175
|
+
children.forEach(c => wrapper.appendChild(c));
|
|
176
|
+
document.body.insertBefore(wrapper, document.body.firstChild);
|
|
177
|
+
}
|
|
178
|
+
const centerX = rect.left + rect.width / 2;
|
|
179
|
+
const centerY = rect.top + rect.height / 2;
|
|
180
|
+
const viewCenterX = window.innerWidth / 2;
|
|
181
|
+
const viewCenterY = window.innerHeight / 2;
|
|
182
|
+
const translateX = viewCenterX - centerX;
|
|
183
|
+
const translateY = viewCenterY - centerY;
|
|
184
|
+
// Mark for cleanup
|
|
185
|
+
const marker = document.createElement('div');
|
|
186
|
+
marker.setAttribute(attr, 'zoom-to');
|
|
187
|
+
marker.style.display = 'none';
|
|
188
|
+
marker.__zoomRestore = { wrapperId: WRAPPER_ID };
|
|
189
|
+
document.body.appendChild(marker);
|
|
190
|
+
wrapper.style.transformOrigin = `${centerX}px ${centerY}px`;
|
|
191
|
+
wrapper.style.transition = `transform ${fadeIn}ms ease-out`;
|
|
192
|
+
wrapper.style.transform = `scale(${scale}) translate(${translateX / scale}px, ${translateY / scale}px)`;
|
|
193
|
+
setTimeout(() => {
|
|
194
|
+
if (!wrapper)
|
|
195
|
+
return;
|
|
196
|
+
wrapper.style.transition = `transform ${fadeOut}ms ease-out`;
|
|
197
|
+
wrapper.style.transform = '';
|
|
198
|
+
setTimeout(() => {
|
|
199
|
+
// Unwrap: move children back to body and remove wrapper
|
|
200
|
+
const w = document.getElementById(WRAPPER_ID);
|
|
201
|
+
if (w) {
|
|
202
|
+
const kids = Array.from(w.children);
|
|
203
|
+
kids.forEach(c => document.body.insertBefore(c, w));
|
|
204
|
+
w.remove();
|
|
205
|
+
}
|
|
206
|
+
marker.remove();
|
|
207
|
+
}, fadeOut);
|
|
208
|
+
}, duration);
|
|
209
|
+
}, { selector, duration, fadeIn, fadeOut, scale, attr: CAMERA_ATTR }, duration + fadeOut, wait);
|
|
210
|
+
}
|
|
211
|
+
export async function resetCamera(page) {
|
|
212
|
+
try {
|
|
213
|
+
await page.evaluate((attr) => {
|
|
214
|
+
// Clean up all camera elements
|
|
215
|
+
document.querySelectorAll(`[${attr}]`).forEach(el => {
|
|
216
|
+
// Restore dim-around originals
|
|
217
|
+
if (el.__dimRestore)
|
|
218
|
+
el.__dimRestore();
|
|
219
|
+
// Restore zoom-to transform
|
|
220
|
+
if (el.__zoomRestore) {
|
|
221
|
+
const r = el.__zoomRestore;
|
|
222
|
+
const w = document.getElementById(r.wrapperId);
|
|
223
|
+
if (w) {
|
|
224
|
+
const kids = Array.from(w.children);
|
|
225
|
+
kids.forEach(c => document.body.insertBefore(c, w));
|
|
226
|
+
w.remove();
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
el.remove();
|
|
230
|
+
});
|
|
231
|
+
}, CAMERA_ATTR);
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
// Page may be closed
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=camera.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camera.js","sourceRoot":"","sources":["../src/camera.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Placement } from './tts/align.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generate ffmpeg metadata format for chapter markers.
|
|
4
|
+
* Each scene placement becomes a chapter in the MP4.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateChapterMetadata(placements: Placement[], totalDurationMs: number): string;
|
|
7
|
+
//# sourceMappingURL=chapters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chapters.d.ts","sourceRoot":"","sources":["../src/chapters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,SAAS,EAAE,EACvB,eAAe,EAAE,MAAM,GACtB,MAAM,CAmBR"}
|
package/dist/chapters.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate ffmpeg metadata format for chapter markers.
|
|
3
|
+
* Each scene placement becomes a chapter in the MP4.
|
|
4
|
+
*/
|
|
5
|
+
export function generateChapterMetadata(placements, totalDurationMs) {
|
|
6
|
+
const lines = [';FFMETADATA1'];
|
|
7
|
+
for (let i = 0; i < placements.length; i++) {
|
|
8
|
+
const p = placements[i];
|
|
9
|
+
const endMs = i < placements.length - 1
|
|
10
|
+
? placements[i + 1].startMs
|
|
11
|
+
: totalDurationMs;
|
|
12
|
+
// ffmpeg chapter times are in milliseconds
|
|
13
|
+
lines.push('');
|
|
14
|
+
lines.push('[CHAPTER]');
|
|
15
|
+
lines.push('TIMEBASE=1/1000');
|
|
16
|
+
lines.push(`START=${Math.round(p.startMs)}`);
|
|
17
|
+
lines.push(`END=${Math.round(endMs)}`);
|
|
18
|
+
lines.push(`title=${p.scene}`);
|
|
19
|
+
}
|
|
20
|
+
return lines.join('\n') + '\n';
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=chapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chapters.js","sourceRoot":"","sources":["../src/chapters.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAuB,EACvB,eAAuB;IAEvB,MAAM,KAAK,GAAa,CAAC,cAAc,CAAC,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;YACrC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO;YAC3B,CAAC,CAAC,eAAe,CAAC;QAEpB,2CAA2C;QAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AA2B5C,wBAAgB,aAAa,IAAI,OAAO,CA6HvC"}
|
package/dist/cli.js
CHANGED
|
@@ -6,6 +6,7 @@ import { generateClips } from './tts/generate.js';
|
|
|
6
6
|
import { exportVideo } from './export.js';
|
|
7
7
|
import { runPipeline } from './pipeline.js';
|
|
8
8
|
import { init } from './init.js';
|
|
9
|
+
import { validateDemo } from './validate.js';
|
|
9
10
|
function validateDemoName(name) {
|
|
10
11
|
if (!/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/.test(name)) {
|
|
11
12
|
throw new Error(`Invalid demo name "${name}": only letters, numbers, hyphens, and underscores are allowed.`);
|
|
@@ -29,20 +30,24 @@ export function createProgram() {
|
|
|
29
30
|
.command('record <demo>')
|
|
30
31
|
.description('Record a demo using Playwright')
|
|
31
32
|
.addOption(new Option('--browser <engine>', 'browser engine').choices(['chromium', 'webkit', 'firefox']))
|
|
33
|
+
.option('--base-url <url>', 'override baseURL from config')
|
|
32
34
|
.action(async (demo, cmdOpts) => {
|
|
33
35
|
validateDemoName(demo);
|
|
34
36
|
const configPath = program.opts().config;
|
|
35
37
|
const config = await loadConfig(process.cwd(), configPath);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
const baseURL = cmdOpts.baseUrl ?? config.baseURL;
|
|
39
|
+
if (!baseURL) {
|
|
40
|
+
throw new Error('baseURL is required but not set. Set it in argo.config.js, pass --config, or use --base-url.');
|
|
38
41
|
}
|
|
39
42
|
const browser = cmdOpts.browser ?? config.video.browser;
|
|
40
43
|
await record(demo, {
|
|
41
44
|
demosDir: config.demosDir,
|
|
42
|
-
baseURL
|
|
45
|
+
baseURL,
|
|
43
46
|
video: { width: config.video.width, height: config.video.height },
|
|
44
47
|
browser,
|
|
45
48
|
deviceScaleFactor: config.video.deviceScaleFactor,
|
|
49
|
+
autoBackground: config.overlays?.autoBackground,
|
|
50
|
+
defaultPlacement: config.overlays?.defaultPlacement,
|
|
46
51
|
});
|
|
47
52
|
});
|
|
48
53
|
const tts = program
|
|
@@ -86,15 +91,44 @@ export function createProgram() {
|
|
|
86
91
|
.command('pipeline <demo>')
|
|
87
92
|
.description('Run the full pipeline: TTS → record → export')
|
|
88
93
|
.addOption(new Option('--browser <engine>', 'browser engine').choices(['chromium', 'webkit', 'firefox']))
|
|
94
|
+
.option('--base-url <url>', 'override baseURL from config')
|
|
89
95
|
.action(async (demo, cmdOpts) => {
|
|
90
96
|
validateDemoName(demo);
|
|
91
97
|
const configPath = program.opts().config;
|
|
92
98
|
const loaded = await ensureTTSEngine(await loadConfig(process.cwd(), configPath));
|
|
93
|
-
|
|
99
|
+
let config = cmdOpts.browser
|
|
94
100
|
? { ...loaded, video: { ...loaded.video, browser: cmdOpts.browser } }
|
|
95
101
|
: loaded;
|
|
102
|
+
if (cmdOpts.baseUrl) {
|
|
103
|
+
config = { ...config, baseURL: cmdOpts.baseUrl };
|
|
104
|
+
}
|
|
96
105
|
await runPipeline(demo, config);
|
|
97
106
|
});
|
|
107
|
+
program
|
|
108
|
+
.command('validate <demo>')
|
|
109
|
+
.description('Validate demo script and manifests without running the pipeline')
|
|
110
|
+
.action(async (demo) => {
|
|
111
|
+
validateDemoName(demo);
|
|
112
|
+
const configPath = program.opts().config;
|
|
113
|
+
const config = await loadConfig(process.cwd(), configPath);
|
|
114
|
+
const result = validateDemo({ demoName: demo, demosDir: config.demosDir });
|
|
115
|
+
for (const err of result.errors) {
|
|
116
|
+
console.error(` ERROR: ${err}`);
|
|
117
|
+
}
|
|
118
|
+
for (const warn of result.warnings) {
|
|
119
|
+
console.warn(` WARN: ${warn}`);
|
|
120
|
+
}
|
|
121
|
+
if (result.errors.length === 0 && result.warnings.length === 0) {
|
|
122
|
+
console.log(` ${demo}: all checks passed`);
|
|
123
|
+
}
|
|
124
|
+
else if (result.errors.length === 0) {
|
|
125
|
+
console.log(`\n ${demo}: passed with ${result.warnings.length} warning(s)`);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
console.error(`\n ${demo}: ${result.errors.length} error(s), ${result.warnings.length} warning(s)`);
|
|
129
|
+
process.exitCode = 1;
|
|
130
|
+
}
|
|
131
|
+
});
|
|
98
132
|
program
|
|
99
133
|
.command('init')
|
|
100
134
|
.description('Initialize a new Argo project')
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAuC,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export interface ExportConfig {
|
|
|
20
20
|
}
|
|
21
21
|
export interface OverlayConfig {
|
|
22
22
|
autoBackground: boolean;
|
|
23
|
+
defaultPlacement?: 'bottom-center' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'center';
|
|
23
24
|
}
|
|
24
25
|
export interface ArgoConfig {
|
|
25
26
|
baseURL?: string;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EAAE,SAAS,EAAE,CAAC;AAI1B,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,aAAa,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EAAE,SAAS,EAAE,CAAC;AAI1B,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,aAAa,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,eAAe,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,GAAG,QAAQ,CAAC;CAC3G;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,CAC9B,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC,GAAG;IAC1D,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CAClC,CACF,CAAC;AAeF,wBAAgB,0BAA0B,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAe/D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;;;;;;;;;;;;;;;;;;;;EAmBA;AAkBD,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,UAAU,CAAC,CAiCrB"}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/export.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ export interface ExportOptions {
|
|
|
14
14
|
deviceScaleFactor?: number;
|
|
15
15
|
/** Optional path to a PNG image to embed as the MP4 thumbnail (cover art). */
|
|
16
16
|
thumbnailPath?: string;
|
|
17
|
+
/** Optional path to ffmpeg chapter metadata file for MP4 chapter markers. */
|
|
18
|
+
chapterMetadataPath?: string;
|
|
17
19
|
}
|
|
18
20
|
/**
|
|
19
21
|
* Check whether ffmpeg is available on the system PATH.
|
package/dist/export.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sFAAsF;IACtF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sFAAsF;IACtF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAMD;;;GAGG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAYrC;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAmHzE"}
|